enkle verilog spørsmålet

S

Sobakava

Guest
Jeg gjennomførte et mønster generator bruker Verilog og XC9500 CPLD.

Mønster generert med en klokke inngang.

Det er en motsigelse, det regner og det er en sak / / endcase blokk som prosessen counter verdi og genererer pulser ...
Når telleren kommer til 21048, jeg satt den til 0 og neste ramme starter ...

Mens du kjører mitt mønster generator fritt, det er ikke noe problem ...

Men nå har jeg behov for å kontrollere generator med en ekstern utløser ...
Hvis en negativ eller positiv kanten oppdaget fra start pin, det
generator bør kjøre for en gangs skyld ...Bare en tur bør gjøres,
så når det kommer til 21.048, bør stoppe før neste START utløse ...

skriving main_clock;
reg counter [14:0];
reg can_read = 0;

alltid @ (posedge main_clock)
begynne

if (teller == 21048)
begynne
counter = 0;
can_read = 0;
slutt

if (can_read)
begynne / / begynne kan lese den
teller = teller 1;

case (Counter)
1: begynne ...slutt
2: begynne ...slutt
endcase
slutt
sluttJeg la til en reg kalt som CAN_READ til design ...

skriving readit;
alltid @ (posedge readit)
begynne
can_read = 1;
sluttSom jeg nevnte, da en positiv kanten oppdages på pin READIT, can_read biten satt og main_clk vil generere mønsteret til can_read fortsatt stille.Når telleren kommer til 21048, can_read vil bli resetted og mønster generator vil stoppe ...

Xilinx Ise kan implementere denne designen og jeg legger det til chip, men det virker det ikke fungerer ...Generator alltid kjører og jeg kan ikke stoppe den ved hjelp READIT pin ....

Er det ikke mulig å sette / tilbakestille register (can_read) i to ulike alltid @ (posedge. ...) blokker?

Noen mening?

 
Er det neccesarry, at telleren teller opp eller er det mulig
å la ham telle ned?

 
at jeg kan gjøre det omvendt, men jeg må endre tilfellet - endcase tilfelle bordet ...
hvorfor?Jeg får denne feilmeldingen:
FEIL: NgdBuild: 755 - Linje 15 i counter.ucf ': Kunne ikke finne net (r)
'readit "i designen.Å utslette denne feilen har oppgitt riktig nett
navn eller fjerne begrensningen.The 'Ignorer jeg \ O begrensninger på Ugyldig objekt
Navn 'eiendom kan også angis (-aul bytte for kommandolinje-brukere).
FEIL: parsere: 11 - Det oppstod en ukjent begrensningen under analyse.
FEIL: NgdBuild: 19 - Feil funnet under analyse begrensningen fil "counter.ucf".alltid @ (posedge readit)
begynne
can_read = 1;
slutt

Men hvis jeg en tilleggskonto output pin og slå den i @ posedge READIT det ikke gir denne feilen:

alltid @ (posedge readit)
begynne
can_read = 1;
tilleggskonto = ~ tilleggskonto;
sluttHVORFOR?

Jeg antar Ise fjerner alltid @ (posedge readit) ....blokk
når jeg går bare can_read = 1; uttalelse ...
can_read reg brukes i alltid @ (posedge main_clock) blokkerer også.
Er det forbudt?Hvordan løse dette?

 
det er ikke forbudt.tenke over det, når u hjelp
alltid @ (posedge readit)
can_read = 1;
det
er bare en mulig verdier for can_read det åpenbart bør optimalisert til en konstant, og det
er hva Ise gjorde til ur-koden.
Du synes nye HDL modellering, u'd bedre lese mer bøker / eksempler.

 
etter syntese, se advarsel og ser opp RTL skjematisk å finne ut hvorfor synthesizer fjerne design.

 
Vil jeg prøve å hva jeg prøver å gjøre med å redusere problemet:

Innganger til min chip:
Klokke
Lese

Utganger:
Ramme

Jeg kaller hver teller / reset syklus som ramme ...Et møte går med klokken, når klokken kommer til toppen, den tilbakestilles og et enkelt puls ramme signal vises i utdataene.Jeg trenger å gjøre noen andre oppgaver under telleren er telling.

Når en positiv kanten LEST puls oppdaget (a risign kanten og eventuelle lengde puls), en AKTIVE bit må settes i neste ramme, hvis dette bit er satt, jeg gjør mine oppgaver i @ (posedge klokke) blokkere ....

I begynnelsen av neste ramme, hvis det ikke er nye LEST puls, dette AKTIVE bit må klareres ...

Problemet mitt er at jeg ikke kan gjennomføre READ /
Active mekanisme ...Jeg er ikke ekspert på Verilog Jeg er selv elev

<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Kyss" border="0" />
,1. Alltid @ (posedge LESE)
,2. Begynne
,3.activate_it = 1
,4. Slutten
,5.
,6. Alltid @ (posedge klokke)
,7. Begynne
,8.count = count
1,9.if (count == 0)
10.begynne
11.if (activate_it)
12.begynne
13.activate_it = 0;
14.AKTIVE = 1
15.slutt
16.ellers
17.AKTIVE = 0
18.slutt
19.endXilinx ise godtar ikke linje 3 ...

alltid @ (posedge LESE)
begynne
activate_it = ~ activate_it;
slutt
Hvis jeg gjør det jeg kan gjennomføre design uten feil, men:alltid @ (posedge LESE)
begynne
activate_it = 1;
slutt
hvis jeg gjør det, "ADVARSEL: Xst: 647 - Input <READ> er aldri brukt.
melding ...
FEIL: NgdBuild: 755 - Linje 16 i 'counter.ucf': Kunne ikke finne netto (s) "lest" i
FEIL: parsere: 11 - Det oppstod en ukjent begrensningen under analyse.
FEIL: NgdBuild: 19 - Feil funnet under analyse begrensningen fil "counter.ucf".Jeg det er på grunn av optimalisering syntese verktøyet fjerner det ...Jeg tror det er en grunnleggende og enkelt spørsmål, men jeg trenger virkelig hjelp karer ...

Vedlegg bilde timing diagram av hva jeg prøver å gjøre ...
Beklager, men du må logge inn for å vise dette vedlegget

 
Når telleren er reachs til din foretrukne tilstand kan du gi HIV ham forskjellige tall.Og en ekstern triger må tilbakestilles din counter til 0.og thise er startpunkt for nye rammen ut.

 
Jeg kan ikke tilbakestille telleren med ekstern utløser.Det bør telle opp til ønsket fast verdi Evert tid ...

 
ADVARSEL: Xst: 528 - Multi-kilde i Unit <counter> på signal <activate_it> ikke erstattes av logikk
Signalet er stuck på GND
FEIL: Xst: 415 - Synthesis mislykteshva betyr det?

 
<img src="http://www.edaboard.com/images/smiles/icon_rolleyes.gif" alt="Rullende Øyne" border="0" /> Jeg tror det yeewang si høyre! Waht mer, kan du ikke angi verdien til den samme signalet i to always.did du gjøre pre-simulering? Er det sant?

 
Jeg forstår det,
Men jeg kan sette en bit i en "alltid" og tilbakestille den andre alltid ...

syntese verktøyet ikke kan syntetisere dette, men,

"Hva kan jeg gjøre?"

se bildet,
vil du forstå hva jeg trenger ...

 

Welcome to EDABoard.com

Sponsor

Back
Top