Hvordan lage en sinusbølge med Verilog?

1. Bruk Matlab til gen. en fix-punkt synd PCM kode. 2. i Verilog sim testbenk. bruke $ readmemh å sette PCM kode til en buss. 3. Bruk bølgeform seer å vise Buss data som "Analog".
 
nand_gates: Hvorfor er dette Verilog cordic-aktig algoritme stabil overlate sinus = sine_r + {cos_r [7], cos_r [7], cos_r [7], cos_r [7:3]}; tildeler cos = cos_r - {sinus [7 ], sinus [7], sinus [7], sinus [07:03]}, og ikke den mer tradisjonelle algoritmen der den andre linjen skulle lese tildeler cos = cos_r - {sine_r [7], sine_r [7], sine_r [ 7], sine_r [07:03]};? Denne siste linje som forårsaker amplitude å divergere. Takk, mobedwell
 
Fra Cordic litteratur, er det åpenbart at "mer tradisjonelle" symmetrisk skjemaet du spør etter ville faktisk krever en ekstra faktor å oppnå konvergens. Se f.eks: [url = http://en.wikipedia.org/wiki/Cordic] CORDIC - Wikipedia, den frie encyklopedi [/url] Det er ikke så opplagt etter min mening, hvorfor endringen i den nåværende algoritmen oppnår den nødvendige korreksjon . Men jeg antar at likeverdigheten kan vises. En annen ikke opplagt tilhører det faste punktet gjennomføring er, at det er tilsynelatende stabil (med en liten overlagret grense syklus) for ulike divider forholdstall, ikke bare 8.
 
Jeg endelig funnet en forklaring på korreksjon i algoritmen for å generere sinus bølge. Dette er en modifisert cordic algoritme kalt "Goertzel Algoritme". For en god forklaring, se punkt 5 i den medfølgende lenken. [Url = http://www.dattalo.com/technical/theory/sinewave.html] Sine Waves [/url] Mer informasjon om denne algoritmen kan bli funnet på Wikipedia på [url = http://en.wikipedia.org / wiki / Goertzel_algorithm] Goertzel algoritme - Wikipedia, den frie encyklopedi [/url]
 
Bruk en numerisk styrte oscillator. Den nevnte CORDIC også brukes, men bruk NCO. NCO brukes mange steder. Jeg har bare VHDL kode, ingen Verilog, så ikke poste det her.
 
ninju, Vennligst gå foran og poste VHDL kode. Jeg er sikker på at jeg kan finne ut av det. Takk.
 
nand_gates, Kan du gi en referanse for algoritmen din? Det virker veldig stabilt, men jeg ønsker litt matematisk verifaction å føle meg komfortabel med å bruke det. Takk, Mike
 
Her er koden ur etter jeg legger det ut her en gang til! Håper dette hjelper!
Code:
 modul sine_cos (clk, reset, no, sinus, cos), inngang clk, reset, no; utgang [07:00] sinus, cos, reg [07:00] sine_r, cos_r; Tilordne sinus = sine_r + { cos_r [7], cos_r [7], cos_r [7], cos_r [07:03]}; tildeler cos = cos_r - {sinus [7], sinus [7], sinus [7], sinus [07:03] }; alltid @ (posedge clk eller negedge reset) begynne hvis begynne sine_r (reset!)
 

Welcome to EDABoard.com

Sponsor

Back
Top