Ich meine: non-blocking verhält sichs in etwa wie eine VHDL variable:
1 | reg [7:0] q3, q2, q1;
|
2 | always @(posedge clk) q1=d; // non blocking
|
Und blocking verhält sichs in etwa wie ein VHDL Signal:
1 | reg [7:0] q3, q2, q1;
|
2 | always @(posedge clk) q1<=d; // blocking
|
Mal sehen was ISE 14.7 so dazu sagt:
Version 1 nonblocking
1 | always @(posedge clk)
|
2 | begin
|
3 | q1=d;
|
4 | q2=q1;
|
5 | q3=q2;
|
6 | end
|
Wird im ISE-RTL-schematic eine Stufe (Bild pipeb3_version1)
Und aus diesem macht ISE drei FF-Stufen: (pipeb3_version2)
1 | always @(posedge clk) q1=d;
|
2 | always @(posedge clk) q2=q1;
|
3 | always @(posedge clk) q3=q2;
|
Und so werden es auch drei Stufen:
1 | always @(posedge clk)
|
2 | begin
|
3 | q1<=d;
|
4 | q2<=q1;
|
5 | q3<=q2;
|
6 | end
|