verilog 中关于For 循环的使用
时间:10-02
整理:3721RD
点击:
最近看外国的一段代码(已经silicon prove)不是很明白,希望哪位前辈解释下:
reg a;
reg[2:0] b;
reg[3:0] c;
always @(*) begin :xx_name
integer i;
a = 1'b1;
for (i =0; i < 4; i = i + 1) begin
if(b <= i && !c[i])
a = 1'b0;
end
end
多谢
reg a;
reg[2:0] b;
reg[3:0] c;
always @(*) begin :xx_name
integer i;
a = 1'b1;
for (i =0; i < 4; i = i + 1) begin
if(b <= i && !c[i])
a = 1'b0;
end
end
多谢
这里的always没有敏感变量,所以是一直执行的。
用的是阻塞赋值“=”,所以顺序执行,先把a赋1,然后依次判断c的各个位,如果此时c的第i位为0,并且b的值比i小的话,将a赋0.
就是个组合逻辑啊
能将这段代码分解成组合逻辑吗?
多谢
