Verilog gore-dolje counter.

E

EUverNE

Guest
Hi all,
Ja sam novi u učenju digitalnog dizajna za FPGA koristeći Verilog HDL i naići na poteškoće pokušavaju eksperimentirati projektiranje jednostavan up_down counter.Dok sastavljanju dizajn, qu (at) rtus v.9 web izdanje izvješća previše upozorenja o "combinatinal petlje ..."i "latches zaključen za reg. [out ]...", i simulator zaustavlja, izvješćivanje" nula-vrijeme oscilacija na čvor ... "

Kod je:

modul up_down_counter (gore, dolje, reset, izlaz);
ulaz gore, dolje, vratiti;
izlaz out;
žice gore, dolje, vratiti;
reg [3:0] out;

Uvijek @ (negedge gore, dolje negedge, negedge reset) počinju
if (! reset)
out <= 0;
else if (! gore)
out <= izvan 1'b1;
else if (! dolje)
out <= out - 1'b1;
drugi
out <= out;
kraj

endmoduleJa ne mogu vidjeti gdje je problem, a zašto ja je dobio one greške i upozorenja.Udžbenike ne čini dovoljno da pomogne, tako da bilo koji pomoć greatly appreciated.

Thanks in advance

 
Bok,

Možete dobiti sve ove poruke, jer vi ne koristite pravi sat signal i svoju uvijek osjetljivost popis ne bi trebalo biti rubu odnose pri korištenju odvojene zarezom signale.Alati mogu ništa sa ove liste osjetljivosti.

Dodaj pravi signal sat modul i promjena uvijek osjetljivost na popis @ (posedge CLK ili negedge reset)

Deve

 
"... Dodaj pravi signal sat modul i promjena uvijek osjetljivost na popis @ (posedge CLK ili negedge reset)."

Hi Deve,

Hvala za tvoj odgovor.Ja ću ispraviti sa zarezom "ili" ključna riječ, ali sam već pokušao dodajući pravi sat, a ja kraj gore sa dizajnom koji broji "gore" ili "dolje" sat impulse dok odgovarajući gumb na pritisak je bila pritisnuta.
Ne želim to učiniti.

Ono što sam mislio da je ne mijenjati vrijednost šalter za jednu jedinicu pritiskom i ispuštanje gumb.U ovom slučaju "gore" za povećanje protuvrijednost ili "dolje" da biste ga smanjili.Svibanj vi mislite o tome kao glasnoće gore-dolje kontrolu.

Imam uspješno kodirani odvojena modula s povećanje ili smanjenje sposobnosti i samo su radili u redu, ali ne miješati oba u jednom modulu.

npr.

--- Kod za Up Counter ---

modul upcounter (gore, iz, reset);
ulaz žice gore, vratiti;
izlaz reg [3:0] out;

Uvijek @ (negedge gore ili negedge reset)
if (~ reset)
out <= 4'b0000;
drugi
out <= izvan 1' b1;

endmodule

Bilo koji ideja?Jako sam stucked ....

 
modul up_down_counter (gore, dolje, reset, izlaz);
ulaz gore, dolje, vratiti;
izlaz out;
žice gore, dolje, vratiti;
reg [3:0] out;

žica up_down;
dodijeliti up_down =! up | |! dolje;
Uvijek @ (posedge up_down ili negedge reset) počinju
if (! reset)
out <= 0;
else if (! gore)
out <= izvan 1'b1;
else if (! dolje)
out <= out - 1'b1;
drugi
out <= out;
kraj

endmodule

Provjerite kod gore, to bi mogao biti onaj koji ur looking for.Neki od alata neće žaliti oko tri rubova u osjetljivosti popisu.

Ja sam stvorio signala naziva up_down koja je visoka kad gore ili dolje = 0 = 0.tako da ovaj signal će biti aktivan samo kada se u ištanje to prirast ili smanjenja.

pustiti mene znati ako to nije ono što u ištanje.

Pozdravi,
dcreddy

 
IT WORKS!!
You hit nokat na glavu!

Imao sam pokušao varijante osnovnih kod to nijedan pomoći.JA dont 'ravan sjećati se koliko dana su doneseni čitanja i kodiranja opet i opet.
Osjećam olakšanje u aukciji!

Thank you very much dcreddy1980.

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" />
PS
Samo za vašu informaciju.Kompajler prijaviti sljedeće upozorenje, ali ja ću to provjeriti kasnije vidjeti što to znači.

Warning (10227): Verilog HDL Port deklaracija upozorenje na up_down_counter.v (47): data type deklaracije za "out" izjavljuje upakiran dimenzije, ali pristaje deklaracija deklaracija ne

 
O 'boy, ovdje dolazi opet bol.

<img src="http://www.edaboard.com/images/smiles/icon_cry.gif" alt="Crying or Very sad" border="0" />Pravedan preuzimanje datoteka kod u FPGA odbora i ništa radio onako kako bi trebao.Internet izrađen prekid u simulatoru, ali nije ni blizu u stvarnom svijetu.Oba push-tipke (PB) smanjuje brojač za 2 jedinice.
Izvođenje simulacije vremena analiza je pokazala istinu.(vidi prilog)

Signale od vrha do dna su:
UP
DOWN
OUT
RESET

Zašto se to dogodilo?To je savršeno sastaviti bez kritične upozorenja.Upozorenje poruka koje sam spomenuo ranije otišao nakon ispravljanje proglašenja "out" portu.

Anyone?
Žao nam je, ali morate prijaviti kako biste vidjeli ovaj privitak

 
gleda na valni oblik, ako se pažljivo promatrati:

OUT signala se mijenja 0 -> 14 -> 12 -> 10 -> 8 -> 6 -> 4 -> 2 -> 0

14 -> 1110
12 -> 1100
10 -> 1010
8 -> 1000
6 -> 0.110
4 -> 0.100
2 -> 0.010

Vidim LSB je uvijek nula?

Može u dvostruko provjerite, da li OUT [0] je ispravno spojen ili neke stvari se dogodilo tijekom sinteze za ovaj zalogaj.Ovo bi trebao biti dobro polazište.Nadam se da ste je dobio što sam trebao?

Možete li povući up_down signal u oblik vala, i provjeriti da li možete vidjeti da je signal ponašanje?Pozdravi,
dcreddy

 
Hi dcreddy,

Gledajući generirani shematski dijagram izgleda da OUT [0] ispravno priključen gdje ga treba i identičan je kao i ostale OUT komadići staze.

Sam obavijest da je u rezultatima valnog oblika prozora (vidi prilog) između OUT signal promjena (npr. 12 -> 10) nalazi se tamno područje koje čini simulator je pokazivač kako bi se zaustavio na nekoliko frakcija vremena prije naprednih do sljedećeg stanja.Je li to pokazatelj oscilacija ili nešto?Može li se ovaj rezultat u kvaru?

Ispod je valnog rezultate.Od vrha prema dnu vidimo:

UP
DOWN
[3:0] OUT
RESET
UP_DOWN

Tijekom sinteza ne postoje izvješća za kritične upozorenja ni greške.Ali vrijeme analizator izvješća poruku navedene u nastavku:

Upozorenje: Pronađeno 1 čvor (i) u sat staza koje svibanj biti djeluju kao mreškanje i / ili usmjernika ura - čvor (s) analizi kao međuspremnik (a) je rezultiralo sat izvrtati

Info: Detected usmjernika sat "up_down" kao tampon

Je li to presudan?
Žao nam je, ali morate prijaviti kako biste vidjeli ovaj privitak

 
Vidim da smo za kašnjenje signala up_down

Up_down signal je sat i istodobno, to izgleda na promjene u gore i dolje signale, što može dovesti do postava i držite povreda.Jednom up_down signal je stvorio, dodati par odbojnika, tako da u može uhvatiti stabilno gore / dolje signale.

Pazite da ne mijenjate gore / dolje signala vrlo fastly tj. manje nego tampon odugovlačenja koja će biti u dodavanju.probati ovaj pristup, to bi trebalo raditi

 
lijep primjer koji vjerojatno nikada neće vidjeti u praksi
ali otkriva neke usmjeravanje i vrijeme značajke FPGA;
kako bi se na 'svijetle strane "za vrijeme [a ne da bude ovisan
o stavljanju i usmjeravanja kašnjenja] trebali napisati kod
na ovaj način:Šifra:modul up_down_cnt (gore, dolje, reset, izlaz);

ulaz gore, dolje, vratiti;

izlaz [3:0] out;žice gore, dolje, vratiti;

reg [3:0] out;reg. count_up, count_down;Uvijek @ (negedge gore ili dolje negedge)

if (! dolje) count_up <= 1'b0;

else count_up <= 1'b1;Uvijek @ (negedge gore ili dolje negedge)

if (! gore) count_down <= 1'b0;

else count_down <= 1'b1;žica count_pulse = gore i dolje;Uvijek @ (posedge count_pulse ili negedge reset)

započeti

if (! reset) out <= 4'h0;else if (count_up) out <= izvan 1'b1;

else if (count_down) out <= out - 1'b1;

else out <= out;

krajendmodule
 
Hi dcreddy,

I see your point.Imamo jedan signal sa dvostrukom ulogom u isto vrijeme i da zbunjuje sinteza alat i trebamo na vrijeme odvojiti dvije funkcije.Ipak, u mojim udžbenicima ja sjećati se tvrdeći da je loše tehnike programiranja za korištenje odbojnika za stvaranje kašnjenja zbog nastale kod prodavatelja je ovisna i prema tome nije prenosiv (i greška sklon).To je također loše tehnike programiranja koristiti "# 0" kašnjenje kod (ne mogu se sjetiti zašto).Hi j_andr,

Hvala za tvoj odgovor.Iako je sinteza izvijestio je nekoliko upozorenja o "izvrtati" pitanja "count_pulse", "gore" i "dolje" signale, vaš kod radi kako treba, kako u simulatoru i hardware!

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" />U prethodnom pokušaju minski imam uspješno je dizajn varijacija trenutni dizajn pomoću jedne tipke i kliznim prekidačem (podesiti smjer brojati).JA ištanje da biste dobili osloboditi od kliznim prekidačem te ga zamijeniti s drugom taster za dane!.Znaš što je sljedeće ...Iako sam kupio tri udžbenika (najnoviji je Morris Mano's Digital Design) ja bih čuti neke prijedloge za nove praktičnije i manje bla bla da spomenuti NE i NE u vezi FPGA design tehnikama.Hvala svima za vaše vrijeme i ulaza.Ti pomogao mi je otići korak dalje u učenju FPGA digitalni dizajn.

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" />Pozdravi

 
Ja ne želim da stavite buffers ručno, htjela sam vam ograničava dizajn ispravno vrijeme i mjesto rutu i roditi sat tj. up_down signala u tom slučaju ispravno, tako da se ne vidi ovaj koban ponašanje.

Ako ste pravi ograničavajući za ovaj up_down signala, Bit će bez problema u ur vrata razini simulacije

 
U to vrijeme se bojim da ja ne znam što je "nagnati dizajn ispravno" i kako to učiniti.

<img src="http://www.edaboard.com/images/smiles/icon_confused.gif" alt="Confused" border="0" />Da li znači da moram podesiti neke opcije sinteze alat za automatsko umetanje kraće kašnjenje u putu preselected signala?(up_down u našem slučaju)
Trenutno sam u mogućnosti koristiti samo osnovne funkcije qu (at) rtus.

<img src="http://www.edaboard.com/images/smiles/icon_neutral.gif" alt="Neutralan" border="0" />(Njegov priručnik proširila preko 2500 stranica!)

 
dizajn vam je vremena logika.treba sat koji trebate brojati.

 

Welcome to EDABoard.com

Sponsor

Back
Top