Verilog - поплавковата (16-битова) до реалното превръщане

V

vjabagch

Guest
Трябва задължително Cosine ROM модул, който генерира от Matlab помощта на полу-прецизни функция, достъпна от Matlab сайт.Той се състои от 10 битов адрес пространство и 16-битови данни автобус.Аз съм се изключително голям (и неправилно) номера от симулацията.Имам поставили пример симулация продукция.

# 0,00 радиани -> грях = 131072.0000 защото = 1,0000
# 0,01 радиани -> грях = 131072.0000 защото = 1,0000
# 0,01 радиани -> грях = 16777216.0000 защото = 1,0000
# 0,01 радиани -> грях = 16777216.0000 защото = 1,0000

...

# 6,27 радиани -> грях = 4261412864.0000 защото = 1,0000
# 6,27 радиани -> грях = 4278190080.0000 защото = 1,0000
# 6,28 радиани -> грях = 4278190080.0000 защото = 1,0000
# 6,28 радиани -> грях = 4294836224.0000 защото = 1,0000

В testbench съдържа основните проблеми във вътрешността на монитора изявление.

$ монитор ( "% 1.2f радиани -> грях =% 1.4f защото =% 1.4f", (адрес * 2 * пи / 1023),
((-1) ** (Задължително [15])) * (1'b1 (задължително [9:0]>> 10)) * (2 ** (задължително [14:10] - 5'd15)) ,
((-1) ** (Косинус [15])) * (1'b1 (косинус [9:0]>> 10)) * (2 ** (косинус [14:10] - 5'd15)) );

Моите въпроси са както следва:

Дали ми следи информацията, създадена, за да конвертирате от 16-битов плаваща точка за недвижими (x.xxxx формат).

Каква е максималната брой десетични цифри, че половината точност (16 битов плаваща точка) ще произвеждат по отношение на правото на десетичната точка?Тъй като аз съм се занимават с греха и косинус от 0 до 2pi (с радиус 1) Аз само трябва 1 цифра на ляво.

Имам качените ми модул и тест-пейка на следния адрес.

http://vahejabagchourian.comyr.com/Verilog/

В отделните файлове се съхраняват на адрес:

http://vahejabagchourian.comyr.com/Verilog/sync_rom.v
http://vahejabagchourian.comyr.com/Verilog/sync_rom_tb.v

Всяка помощ е много оценявам.

Благодаря,
Vahe
Съжаляваме, но трябва да имате за вход, за да видите тази закрепване

 
<img src="http://gallery.dpcdn.pl/imgc/News/60406/g_-_550x412_-_s_60406x20150116180939_0.jpg" alt="image" />Polscy internauci zdążyli się już chyba przyzwyczaić do copyright
trollingu, czyli działań kancelarii adwokackich, wysyłających na
masową
skalę wezwania do zapłaty za pobieranie filmów z sieci
BitTorrent. Gdy aktywność mec. Anny Łuczak zaczęła maleć,
pałeczkę śmiało przejął mec. Artur Glass-Brudziński, o dziwo działający pod tym samym adresem, co jego koleżanka. Nie wiadomo, ile osób udało…<img src="//feeds.feedburner.com/~r/dobreprogramy/Aktualnosci/~4/h3aBZH51CMA" height="1" width="1" alt=""/>

Read more...
 
?

Което доведе ли очаквате за хня [9:0]>> 10?Той
е идентичен на нула за всички стойности на задължително, мисля.don't give negative results due to default Verilog data types.

Също така задължително [14:10] - 5'd15
не даде отрицателни резултати поради подразбиране Verilog типове данни.

 
Благодаря ви за помощта.

Бях в състояние да решат проблема.

Моят testbench поставили приложен по-долу.Мониторът изявлението и се добавя цяло декларации са важни промените, които направих.Благодаря ви още веднъж.Надявам се, че това ще помогне на някой друг изправени пред сходни въпрос.

Vahe# 0,00 радиани -> грях = 0,0000 защото = 1,0000
# 0,01 радиани -> грях = 0,0000 защото = 1,0000
# 0,01 радиани -> грях = 0,0061 защото = 1,0000
# 0,01 радиани -> грях = 0,0061 защото = 1,0000
# 0,01 радиани -> грях = 0,0123 защото = 1,0000
# 0,02 радиани -> грях = 0,0123 защото = 1,0000
# 0,02 радиани -> грях = 0,0184 защото = 1,0000
# 0,02 радиани -> грях = 0,0184 защото = 1,0000
# 0,02 радиани -> грях = 0,0246 защото = 0,9995
# 0,03 радиани -> грях = 0,0246 защото = 0,9995
# 0,03 радиани -> грях = 0,0307 защото = 0,9995
# 0,04 радиани -> грях = 0,0307 защото = 0,9995
# 0,04 радиани -> грях = 0,0368 защото = 0,9995
# 0,04 радиани -> грях = 0,0368 защото = 0,9995
# 0,04 радиани -> грях = 0,0430 защото = 0,9990
# 0,05 радиани -> грях = 0,0430 защото = 0,9990
# 0,05 радиани -> грях = 0,0491 защото = 0,9990

...# 6,24 радиани -> грях = -0,0430 защото = 0,9990
# 6,24 радиани -> грях = -0,0368 защото = 0,9995
# 6,25 радиани -> грях = -0,0368 защото = 0,9995
# 6,25 радиани -> грях = -0,0307 защото = 0,9995
# 6,26 радиани -> грях = -0,0307 защото = 0,9995
# 6,26 радиани -> грях = -0,0246 защото = 0,9995
# 6,26 радиани -> грях = -0,0246 защото = 0,9995
# 6,26 радиани -> грях = -0,0184 защото = 1,0000
# 6,27 радиани -> грях = -0,0184 защото = 1,0000
# 6,27 радиани -> грях = -0,0123 защото = 1,0000
# 6,27 радиани -> грях = -0,0123 защото = 1,0000
# 6,27 радиани -> грях = -0,0061 защото = 1,0000
# 6,28 радиани -> грях = -0,0061 защото = 1,0000
# 6,28 радиани -> грях = -0,0000 защото = 1,0000
"времева 1ns / 1ps

Модулът sync_rom_tb_v;

/ / Входове
рег. часовник;
рег. [9:0] адрес;

/ / Изходи
телени [15:0] задължително;
телени [15:0] косинус;

Real пи = 3,14;/ / Примери за единица под Test (UUT)
sync_rom uut (
. часовник (часовник),
. адрес (адрес),
. синус (задължително),
. косинус (косинус)
);cosine_significand цяло число;
sine_significand цяло число;

sine_sign цяло число;
cosine_sign цяло число;

sine_exponent цяло число;
cosine_exponent цяло число;

Винаги @ (синус, косинус)
започвам

sine_significand = задължително [9:0];
cosine_significand = косинус [9:0];

sine_sign = задължително [15];
cosine_sign = косинус [15];

sine_exponent = задължително [14:10];
cosine_exponent = косинус [14:10];

$ монитор ( "% 1.2f радиани -> грях =% 1.4f защото =% 1.4f", (адрес * 2 * пи / 1023),
((-1) ** (Sine_sign)) * (1 ($ itor (sine_significand) / 1024)) * ((sine_exponent <15)? (1,0000 / 2 ** (-1 * (sine_exponent - 15))) : (2 ** (sine_exponent - 15))),
((-1) ** (Cosine_sign)) * (1 ($ itor (cosine_significand) / 1024)) * ((cosine_exponent <15)? (1,0000 / 2 ** (-1 * (cosine_exponent - 15))) : (2 ** (cosine_exponent - 15))));

приключвампървоначален
започвам
/ / Инициализиране входове
Часовник = 0;
Адрес = 0;
приключвам

винаги
започвам
# 50 часа = ~ часовник;
приключвам

Аз цяло;

винаги
започвам

за (I = 0; I <1024; I = I 1)
започвам
# 100 адреса = I;
приключвам/ / Изчакайте 100 NS за глобално нулиране да довърша
# 100 $ довърша;

/ / Добави стимул тук

приключвам

endmodule

 

Welcome to EDABoard.com

Sponsor

Back
Top