V
vjabagch
Guest
Ik heb een Sine Cosine rom module die ik gegenereerd vanuit Matlab via een half-precisie functie beschikbaar bij het Matlab site.Het bestaat uit een 10-bits adresruimte en een 16-bit data bus.Ik krijg erg groot (en onjuiste) nummers van de simulatie.Ik heb geplakt een voorbeeld simulatie uitgang.
# 0,00 radialen -> sin = 131072.0000 cos = 1,0000
# 0,01 radialen -> sin = 131072.0000 cos = 1,0000
# 0,01 radialen -> sin = 16777216.0000 cos = 1,0000
# 0,01 radialen -> sin = 16777216.0000 cos = 1,0000
...
# 6,27 radialen -> sin = 4261412864.0000 cos = 1,0000
# 6,27 radialen -> sin = 4278190080.0000 cos = 1,0000
# 6,28 radialen -> sin = 4278190080.0000 cos = 1,0000
# 6,28 radialen -> sin = 4294836224.0000 cos = 1,0000
De testbench bevat het belangrijkste probleem in de monitor opgenomen.
$ monitor ( "% 1.2f radialen -> sin =% 1.4f cos =% 1.4f", (adres * 2 * pi / 1023),
((-1) ** (Sine [15])) * (1'b1 (sine [9:0]>> 10)) * (2 ** (sine [14:10] - 5'd15)) ,
((-1) ** (Cosinus [15])) * (1'b1 (cosinus [9:0]>> 10)) * (2 ** (cosinus [14:10] - 5'd15)) );
Mijn vragen zijn als volgt:
Is mijn monitor verklaring juist ingesteld om te zetten van 16-bit floating point naar echte (x.xxxx formaat).
Wat is het
max. aantal decimalen dat de helft precisie (16 bit floating point) zou aan de rechterkant van de komma?Aangezien ik omgaan met zonde en cosinus van 0 tot 2pi (met een straal van 1) Ik moet 1 cijfer aan de linkerkant.
Ik heb mijn geüploade module en test-bench naar het volgende adres.
http://vahejabagchourian.comyr.com/Verilog/
De afzonderlijke bestanden worden opgeslagen op:
http://vahejabagchourian.comyr.com/Verilog/sync_rom.v
http://vahejabagchourian.comyr.com/Verilog/sync_rom_tb.v
Alle hulp wordt zeer gewaardeerd.
Bedankt,
Vahe
# 0,00 radialen -> sin = 131072.0000 cos = 1,0000
# 0,01 radialen -> sin = 131072.0000 cos = 1,0000
# 0,01 radialen -> sin = 16777216.0000 cos = 1,0000
# 0,01 radialen -> sin = 16777216.0000 cos = 1,0000
...
# 6,27 radialen -> sin = 4261412864.0000 cos = 1,0000
# 6,27 radialen -> sin = 4278190080.0000 cos = 1,0000
# 6,28 radialen -> sin = 4278190080.0000 cos = 1,0000
# 6,28 radialen -> sin = 4294836224.0000 cos = 1,0000
De testbench bevat het belangrijkste probleem in de monitor opgenomen.
$ monitor ( "% 1.2f radialen -> sin =% 1.4f cos =% 1.4f", (adres * 2 * pi / 1023),
((-1) ** (Sine [15])) * (1'b1 (sine [9:0]>> 10)) * (2 ** (sine [14:10] - 5'd15)) ,
((-1) ** (Cosinus [15])) * (1'b1 (cosinus [9:0]>> 10)) * (2 ** (cosinus [14:10] - 5'd15)) );
Mijn vragen zijn als volgt:
Is mijn monitor verklaring juist ingesteld om te zetten van 16-bit floating point naar echte (x.xxxx formaat).
Wat is het
max. aantal decimalen dat de helft precisie (16 bit floating point) zou aan de rechterkant van de komma?Aangezien ik omgaan met zonde en cosinus van 0 tot 2pi (met een straal van 1) Ik moet 1 cijfer aan de linkerkant.
Ik heb mijn geüploade module en test-bench naar het volgende adres.
http://vahejabagchourian.comyr.com/Verilog/
De afzonderlijke bestanden worden opgeslagen op:
http://vahejabagchourian.comyr.com/Verilog/sync_rom.v
http://vahejabagchourian.comyr.com/Verilog/sync_rom_tb.v
Alle hulp wordt zeer gewaardeerd.
Bedankt,
Vahe