verilog koden forvirring

Y

yann_sun

Guest
Hej, alt Mit spørgsmål er, hvorfor neg_A og neg_B er ulige. For at være specifik, neg_A stammer fra den sidste negative kant A imidlertid neg_B er den foreliggende negative kant af B. Stimulus A og B er de samme. Her er koden altid @ (A) påbegyndes, hvis (A) pos_A = $ realtime; ellers neg_A = $ realtime; ende altid @ (negedge B) begynder neg_B = $ realtime; $ display ("% f", neg_A); $ display ("% f", neg_B); ende
 
Jeg tror, ​​at Reson er, at den altid blokerer udførelse sekvens ikke er defineret af IEEE standart, så kan simulator evaluere første altid @ (A) blokken og efter altid @ (negedge B) [/ I ] eller vice-versa. Hvis altid @ (negedge B) vil blive evalueret du først vil se den nye værdi for neg_B , og den gamle (fra den forrige neg A-begivenhed) for neg_A ... Læs mere om begivenheden shedule under simuleringen processen [url = "http://www.sunburst-design.com/papers/CummingsSNUG2000SJ_NBA_rev1_2.pdf"] her [/URL].
 
Tak Alosevskoy, hvad mener du med hvis? Er det vurderet tilfældigt? Er det afhænger af forskellige simulator? [Color = "Silver"] [size = 1] ---------- Indlæg tilføjes 02:50 ---------- Forrige post var på 02 : 49 ---------- [/size] [/color] Tak Alosevskoy, hvad mener du med hvis? Er det vurderet tilfældigt? Er det afhænger af forskellige simulator?
 
Ja, som jeg forstår forskellige simulator kan oprette forskellige event-sekvenser, som altid blokke evalueres, så resultaterne er forskellige) Hvad simulator bruger du? Jeg forsøgte at modellere følgende kode og neg_A og neg_B var det samme (simulator ISim fra Xilinx ISE) ...
Code:
 modul tb (); realtime pos_A, neg_A, neg_B, reg tgl_Ev = 0; altid # (10) tgl_Ev = ~ tgl_Ev; altid @ (tgl_Ev) påbegyndes, hvis (tgl_Ev) pos_A = $ realtime; ellers neg_A = $ realtime ; ende altid @ (negedge tgl_Ev) begynder neg_B = $ realtime; $ display ("----------------------") $ display ("% f" , neg_A), $ display ("% f", neg_B); ende indledende # (100) $ finish; endmodule
 
Jeg har lige forsøgt at modellere denne kode med gratis Icarus Verilog (iverilog) simulator, og det gav mig et andet resultat:
---------------------- 0.000000 20.000000 ---------------------- 20.000000 40.000000 ---------------------- 40.000000 60.000000 ---------------------- 60.000000 80.000000
Resultaterne fra ISim og ModelSim er det samme:
--------- ------------- 20.000000 20.000000 ---------------------- 40.000000 40.000000 ----------- ----------- 60.000000 60.000000 ---------------------- 80.000000 80.000000
 
Jeg bruger VCS. VCS fik samme resultat som iverilog ved at simulere din tb kode.
 

Welcome to EDABoard.com

Sponsor

Back
Top