verilog simulering spørgsmål

F

floatgrass

Guest
hvis jeg bruger posedge ur triger altid erklæring, men A Sigal er posedge forandring, simulator synes, det så lavt niveau, men det er for syntese ok?

hvis Pix_Mux_s1 [7] skifte fra 0 til 1, på samme tid memtemp_v1 ændre frome en værdi til en anden værdi, så hvordan du tildeler?Det er efter eller før ændringen?
tak!
altid @ (Mem_Pointer_s1 eller pixel_s1 eller Pix_Mux_s1)
begynd
if (Pix_Mux_s1 [7])
begynd
sag (Mem_Pointer_s1)
3'b001: begynde
pixelcol_v1 [23:16] = pixel_s1;
pixelcol_v1 [15:8] = memtemp_v1 [15:8];
pixelcol_v1 [7:0] = memtemp_v1 [7:0];
ende

3'b010: begynde
pixelcol_v1 [23:16] = memtemp_v1 [23:16];
pixelcol_v1 [15:8] = pixel_s1;
pixelcol_v1 [7:0] = memtemp_v1 [7:0];
ende

3'b100: begynde
pixelcol_v1 [23:16] = memtemp_v1 [23:16];
pixelcol_v1 [15:8] = memtemp_v1 [15:8];
pixelcol_v1 [7:0] = pixel_s1;
ende

default: pixelcol_v1 = memtemp_v1; / / ikke noget nyt er skrevet
endcase
ende
ende

 
Hej,

Jeg tror, at grunden er, at du "altid" tilstand.

"altid @ (Mem_Pointer_s1 eller pixel_s1 eller Pix_Mux_s1)"
De har tre bundt, skal du beskrive dem nærmere her.

syntese værktøj desn't pleje dem, men simuleringsværktøj pleje dem.

bare prøve det.

BR
z81203

 
z81203, hvad taler du om?Dette er verilog, ikke VHDL.floatgrass 's eksempel ikke behøver nogen yderligere forklaring.

Nu her er problemerne med floatgrass's eksempel:
1.It's gonna udlede en lås, fordi hvis erklæringen ikke er komplet.(Du har if (Pix_Mux_s1 [7]), men ikke et "andet".

2.følsomhed memtemp_v1 mangler.

OK, nu er dit spørgsmål er, hvis Pix_Mux_s1 [7] forandringer på samme tid som memtemp_v1, hvad vil der ske.

Du skal huske en ting, der 'ikke sådan noget som "på samme tid" i en simulator.Der er altid en ordre.Selv om simulatoren "skemaer" det på samme tid, er der altid en ordre.Rækkefølgen NORMALT er rækkefølgen af din kode, men ikke nødvendigvis, det afhænger af simulator.

Lad os betragte 2 sager, og varetager din simulator tidsplan begivenhed i henhold til rækkefølgen af din kode.
Og påtage sig et "B" ændringer nøjagtig samme tid som Pix_Mux_s1.

case 1:
altid @ (B)
memtemp_v1 = B;
altid @ (Mem_Pointer_s1 eller pixel_s1 eller Pix_Mux_s1)
.... dette er din store altid blokere

case 2:
altid @ (Mem_Pointer_s1 eller pixel_s1 eller Pix_Mux_s1)
.... dette er din store altid blokere
altid @ (B)
memtemp_v1 = B;Lad os tage et kig på dit spørgsmål:
i tilfælde 1: pixelcol_v1 vil få "NY" memtemp_v1 værdi siden memtemp_v1 var beregne tidligere end din altid blok.

i tilfælde 2: pixelcol_v1 vil få "gamle" memtemp_v1 værdi.*** Det største problem er, at du gik glip af memtemp_v1 i følsomhed listen.

Antag, at du tilføjer memtemp_v1 til din følsomhed listen, i begge tilfælde 1 & 2
pixelcol_v1 vil få "NY" memtemp_v1 værdi

HVORFOR?
Tag et kig på case 2:
på tidspunkt T, simulator tidsplanen:
1.evaluere pixelcol_v1 fordi Pix_Mux_s1 ændringer
2.evaluere memtemp_v1 fordi B ændringer
3.evaluere pixelcol_v1 igen, fordi memtemp_v1 ændringer som følge af B ændringer

Hvis du ikke har memtemp_v1 i din følsomhed listen, dybest set simulatoren vil springe "3", det er derfor, det vil skrue op.

Nyde.

 
tak for dit omhyggelige svar.
jeg føje det til sensitylist, finde ud af resultatet er intant værdi, men før resultatet er før ændring

 
Om dit første spørgsmål:
du kan forsøge at løse delta-cyklus afhængighed problem (der eksisterer kun for funktionelle simulering og ikke eksisterer i post-syntese Netlist med forsinkelser) i followig måde:
sætte mindre del af taktcyklus (lad os sige 10%) som en forsinkelse i sekventielle processer (next_state -> current_state, og hvis reset er synkrone, i reset_state-> current_state), ikke sætter nogen forsinkelse i multikombinerbare processer
denne forsinkelser vil blive ignoreret af syntese værktøjer (vil producere nogle Advarsel messeges, men det er uden betydning), men det vil løse delta-cyklus afhængigheder problem
andre (men mere kompliceret possibillity) er at skabe balance mellem antallet af processer i hvert ur sti - det er svært at opnå, og du skal eksperimentere med at være sikker på resultater

 

Welcome to EDABoard.com

Sponsor

Back
Top