Hva er forskjellen mellom # 1 a <= b og a <= # 1 b

Det er tommelfinger regelen u bør ikke bruke et = # 5 b;
u kan bruke # 5 a = b;
fordi det blokkerer uttalelse.
1.it blokker b-verdien på 5 sekunder og gi den til en
2.a = b verdi skje etter 5 sekunder.

simillary for non-blocking uttalelse sin omvendt
u må følge en <= # 5b
fordi den wont blokk tilsvarende påstander

 
A. # 5 a = b, etter 5 tidsenhet, simulator utføre tilordne verdien av B til A.
B. a = # 5 b, når simulatoren effektuere dette utsagnet,
beholde den gjeldende verdien av b, og deretter tildele denne keeped verdi til en etter 5 tidsenhet.
Det er likt med "<=".Vennlig hilsen
Jarod

 
Dette er de måter en modell transport forsinkelse og treghet forsinkelser i Verilog simulator.
Hvis ur er kjent med VHDL du får det!
Jeg antar tidsskala som 1ns
# 1 a <= b / This modeller transport forsinkelsen b vises på 'a' after 1 ns
a <= # 1 b / / Dette modeller treghet forsinkelsen 'a' følger 'b' etter 1 ns forsinkelse i additin til dette
noen puls <1ns får filtrere ut på 'a'

PLAESE se linken nedenfor for VHDL!
http://www.gmvhdl.com/delay.htm

 
når # 1a <= b for b (t) er tildelt en på tiden t 1, på den andre siden når en <= # 1b blir brukt b (t 1) er tilordnet en ved tid t 1

 
forskjellen er at i det første tilfellet evalueringen av RHS skjer umiddelbart, men assigment etter 1 ns.I det andre tilfellet evalueringen seg ferdig etter 1 ns

 
1)

# 1 a <= b

Evaluering av oppdraget er forsinket med timingen kontroll.
RHS uttrykk evaluert.
Oppdraget er planlagt dvs. en <--- b (t 1)

2) a <= # 1 b

RHS uttrykk evaluert.
Oppdraget er forsinket med timingen kontroll og er planlagt i slutten av køen.
Flyten fortsetter.
a <- b ved simulering tiden t 1

 
1 # N a <= b
Legge til forsinkelser på venstre side (LHS) i nonblocking oppdrag å modellere combinational logikken er feil.
Code:modul adder_t2 (co, sum, a, b, ci);

output co;

output [3:0] sum;

input [3:0] a, b;

input ci;reg co;

reg [3:0] sum;alltid @ (a eller b eller ci)

# 12 (co, summen) <= a b ci;

endmodule

 
Gjøre disse blokkering og nonblocking tildeling gjenspeiler den faktiske krets?

Kan noen kode et eksempel?

 
at det gjør ...Her er et eksempel:

hvis du skriver i prosessen din:

a = 1;
b = a;
c = b;
Disse blokkerer oppgave a = b = c = 1 og det genererte krets vil være en 3 buffere knyttet til hverandres

1 --- [buffer ]---> a --- [buffer ]---> b --- [buffer ]---> c

mens hvis du skriver den ved hjelp av non-blocking

a <= 1;
b <= a;
c <= b;

dette er Nonblocking oppdrag som innebærer:
a = 1
b = gammel verdi av en
c = gammel verdi av b

og den faktiske krets vil være F / F i stedet for buffere

1 --- [F / F ]---> a --- [F / F ]---> b --- [F / F ]---> c

 
Quote:

Gjøre disse blokkering og nonblocking tildeling gjenspeiler den faktiske krets?Kan noen kode et eksempel?
 
Vonn har gitt fine eksempel!kan jeg bruke det for å utforme skift register? /

 
AlexWan er riktig, er at en dårlig koding stil når det brukes i combinational logikk modellering.Takk for Alex!
se nedenfor:

/ *
dårlig koding stil eksempel
* /
modul adder_t2 (co, sum, a, b, ci);
output co;
output [3:0] sum;
input [3:0] a, b;
input ci;

reg co;
reg [3:0] sum;

alltid @ (a eller b eller ci)
# 12 (co, summen) <= a b CI; / dårlig non-blokk oppgave forsinkelse koding stil
endmodule
module TB;
reg [3:0] a, b;
reg ci;
wire [3:0] sum;
wire co;
adder_t2 dut (. co (co). sum (sum). a (a),. b (b). ci (CI));
innledende
begynne
# 0 (a, b, ci) = (4'h1, 4'h1, 1'h0);
# 50;
# 11 (a, b, ci) = 4'h2, (4'h5, 1'h1);
# 5 (a, b, ci) = (4'he, 4'h0, 1'h1);
# 9 (a, b, ci) = (4'h5, 4'h1, 1'h0);
# 50;
$ display ( "god natt");
$ stopp;

slutt
endmodule
/////////////////////////////////////////
uventet oppførsel vil bli sett.

etter a / b / ci endres, (co, summen) <= a b ci; er planlagt på 12 tidsenhet senere, før den tid kommer, noen endring av a / b / CI vil påvirke ( co, sum), slik at forsinkelsen er ikke # 12.

 

Welcome to EDABoard.com

Sponsor

Back
Top