verilog jednostavno pitanje

S

Sobakava

Guest
I implementiran pattern generator koristeći Verilog i XC9500 CPLD.

Pattern generiran sa satom ulaz.

Tu je brojač, broji i postoji Case / / endcase blok koji proces protuvrijednost i generira impulse ...
Kada brojač dosegne do 21.048, sam je postavljena na 0, i sljedeći okvir počinje ...

Dok trčanje moj pattern generator slobodno, nema problema ...

Ali sada mi je potrebno za kontrolu generator s vanjske pokretati ...
Ako je negativan ili pozitivan rub od otkriti START igla, to
generator bi trebao trčanje za jednom ...Samo jedan okret treba biti učinjeno,
onda kad se dođe do 21.048, to bi trebalo zaustaviti sve do sljedećeg START okidač ...

ulaz main_clock;
reg pult [14:0];
reg can_read = 0;

Uvijek @ (posedge main_clock)
započeti

if (brojac == 21048)
započeti
counter = 0;
can_read = 0;
kraj

if (can_read)
begin / / begin mogu ga čitati
brojac = brojac 1;

slučaj (brojač)
1: begin ...kraj
2: begin ...kraj
endcase
kraj
krajDodao sam reg. zove kao CAN_READ za dizajn ...

ulaz readit;
Uvijek @ (posedge readit)
započeti
can_read = 1;
krajKao što sam spomenuo, kada je otkriven pozitivni na rubu pin READIT, can_read bit će postavljen i main_clk će generirati uzorkom dok ostaje set can_read.Kada brojač dosegne do 21.048, can_read će biti resetted i uzorak generator će se prestati ...

Xilinx ISE može implementirati ovaj dizajn, a ja ga opterećenje na čipu, ali se čini da to ne funkcionira ...Generator uvijek radi i ne mogu ga prestati koristiti READIT igla ....

Zar nije moguće postaviti / vratiti registar (can_read) u dvije različite uvijek @ (posedge. ...) blokovi?

Any opinion?

 
Je li neccesarry, da je vaš brojač broji gore, ili je to moguće
da nek odbrojavanje dolje?

 
siguran sam mogu učiniti obrnuto, ali ću morati promijeniti slučaj - slučaj endcase tablice ...
zašto?Ja sam uzimajući ovaj greška:
ERROR: NgdBuild: 755 - Linija 15 u 'counter.ucf': Ne mogu pronaći neto (s)
'readit' u dizajnu.Potisnuti tu pogrešku navesti točan neto
Ime ili maknuti ograničenje.'I Ignoriraj \ O ograničenja na Neispravna Objekt
Imena 'imovine također se može podesiti (-AUL komandna linija šiba za korisnike).
ERROR: parsera: 11 - Dogodila se ograničenje neprepoznat tijekom obrade.
ERROR: NgdBuild: 19 - pogreške tijekom obrade rezultata ograničenje datoteku "counter.ucf".Uvijek @ (posedge readit)
započeti
can_read = 1;
kraj

Ali ako dodam formalni izlaz klin i prekidač u @ posedge READIT to ne daje ovaj greška:

Uvijek @ (posedge readit)
započeti
can_read = 1;
dummy = ~ duda;
krajZAŠTO?

Mislim da ISE uvijek uklanja @ (posedge readit) ....blok
kad sam samo ostaviti can_read = 1; izjava ...
can_read reg. uvijek se koristi u @ (posedge main_clock) blok previše.
Je li to zabranjeno?Kako riješiti ovo?

 
to nije zabranjeno.Razmislit, kada se koristi u
Uvijek @ (posedge readit)
can_read = 1;
postoji samo jedna moguća vrijednost za can_read, to očito mora biti optimiziran za stalno neki i to je ono što ISE učinio ur kod.
Vi, čini se novi HDL modeliranje, u'd bolje pročitajte više knjiga / primjera.

 
nakon što je sinteza, provjerite upozorenje i gledati gore RTL shematski kako bi saznali zašto sintisajzer ukloniti svoj dizajn.

 
Pokušat ću ono što sam pokušava učiniti s problemom smanjenja:

Ulazi u moj čip:
Sat
Čitati

Izlazi:
Okvir

Pozivam sve count / reset ciklus kao okvir ...Counter pokreće sa sat, kada je sat doseže do vrha, to presloži i jedan impuls okvira signala pojavljuje se na izlaz.Moram obaviti neke druge poslove tijekom brojač broji.

Kada pozitivno rubu PROČITATI pulsa otkrivena (risign ruba i bilo koje duljine pulsa), AKTIVNI malo mora biti postavljen u sljedeći okvir, ako je postavljena ova malo, ja moje poslove u @ (posedge sat) blok ....

Na početku sljedećeg okvira, ako nema novih PROČITATI puls, ovaj aktivni malo mora biti izbrisani ...

Moj problem je ja ne mogu implementirati PROČITATI / AKTIVNO mehanizam ...Ja sam ne stručnjak u Verilog, ja sam sebi studenta

<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Wink" border="0" />
.1. Oduvijek @ (posedge READ)
,2. Begin
,3.activate_it = 1
,4. Kraju
,5.
.6. Oduvijek @ (posedge sat)
.7. Begin
.8.count = count 1
,9.if (count == 0)
10.započeti
11.if (activate_it)
12.započeti
13.activate_it = 0;
14.AKTIVNI = 1
15.kraj
16.drugi
17.AKTIVNI = 0
18.kraj
19.endXilinx ISE ne prihvaća linija 3 ...

Uvijek @ (posedge READ)
započeti
activate_it = ~ activate_it;
kraj
Ako mi ne da, Ja mogu implementirati dizajn bez greške, ali:Uvijek @ (posedge READ)
započeti
activate_it = 1;
kraj
ako mi je činiti da, "UPOZORENJE: Xst: 647 - Input <READ> nikad nije korišten.
pojavljuje se poruka ...
ERROR: NgdBuild: 755 - Linija 16 u 'counter.ucf': Ne mogu pronaći neto (s) 'čita' u
ERROR: parsera: 11 - Dogodila se ograničenje neprepoznat tijekom obrade.
ERROR: NgdBuild: 19 - pogreške tijekom obrade rezultata ograničenje datoteku "counter.ucf".Smatrao sam je zbog optimizacija, sinteza alat uklanja ga ...Mislim da je osnovno i jednostavno pitanje, ali ja stvarno potreba pomoć momački ...

Prilog slika vremenskog dijagrama ono što sam pokušava učiniti ...

 
Kada brojač je doći do Vaše željene države možete dati HIV mu različitim brojem.I vanjski triger se resetira vaš brojač na 0..i thise je polazna točka za novi okvir out.

 
Ja ne mogu resetirati brojač s vanjske pokretati.To bi trebao brojati do željenog fiksne vrijednosti vremena izvrnuti ...

 
UPOZORENJE: Xst: 528 - Multi-source in Unit <counter> o signala <activate_it> ne zamjenjuje logika
Signal se zaglavi na GND
ERROR: Xst: 415 - Synthesis nije uspjelaŠto to znači?

 
<img src="http://www.edaboard.com/images/smiles/icon_rolleyes.gif" alt="Rolling Eyes" border="0" /> Mislim da yeewang reći što je pravo! Waht je više, ne možete dodijeliti vrijednost na isti signal u dva always.did te obaviti unaprijed simulacije? Je to pravo?

 
Ja razumijem da,
ali ja mogu 'postaviti malo u jednom "uvijek" i uvijek nanovo naoštriti iu drugim ...

sinteza alat ne može synthesise, ali,

"Što mogu učiniti?"

pogledajte sliku, da ćete shvatiti ono što mi treba ...

 

Welcome to EDABoard.com

Sponsor

Back
Top