Verilog - Plūdės (16 bitų), kad faktinis konversijos

V

vjabagch

Guest
Aš Sine Cosine ROM modulį, kurį generuoja iš Matlab naudojant pusė tikslumo funkcija prieinama nuo Matlab svetainėje.Jis susideda iš 10 bitų adresų erdvę ir 16 bitų magistralės.Aš gaunu labai didelis (ir neteisingai) numeriai nuo imitavimui.Aš įklijavote pavyzdys modeliavimo rezultatus.

# 0,00 radianais -> nuodėmė = 131072.0000 cos = 1,0000
# 0,01 radianais -> nuodėmė = 131072.0000 cos = 1,0000
# 0,01 radianais -> nuodėmė = 16777216.0000 cos = 1,0000
# 0,01 radianais -> nuodėmė = 16777216.0000 cos = 1,0000

...

# 6,27 radianais -> nuodėmė = 4261412864.0000 cos = 1,0000
# 6,27 radianais -> nuodėmė = 4278190080.0000 cos = 1,0000
# 6,28 radianais -> nuodėmė = 4278190080.0000 cos = 1,0000
# 6,28 radianais -> nuodėmė = 4294836224.0000 cos = 1,0000

Į testbench yra pagrindinė problema viduje stebėti pareiškimą.

$ stebėti ( "% 1.2f radianais -> nuodėmė =% 1.4f cos =% 1.4f", (adresas * 2 * pi / 1023),
((-1) ** (Be) [15]) * (1'b1 (sine [9:0]> 10)) * (2 ** (be [14:10] - 5'd15)) ,
((-1) ** (Cosinus [15])) * (1'b1 (cosinus [9:0]> 10)) * (2 ** (kosinusas [14:10] - 5'd15)) );

Mano klausimai yra tokie:

Ar mano monitorius pareiškimą sukonfigūruotas konvertuoti iš 16 bitų slankiojo kablelio nekilnojamojo (x.xxxx formatas).

Kas yra maksimalus skaičius skaitmenų po kablelio, kad pusė tikslumo (16 bitų slankiojo kablelio) būtų į dešinę nuo kablelio?Kadangi aš su nuodėmės ir cosinus nuo 0 iki 2pi (su spinduliu 1) man reikia tik 1 skaitmenį į kairę.

Aš įkelti modulio ir bandymų stendo į kitą adresą.

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

Atskirus failus, yra laikomi:

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

Bet kuri pagalba yra labai vertinama.

Ačiū,
Vahas

 

Welcome to EDABoard.com

Sponsor

Back
Top