Verilog HDL 中for语句for(i=0;i<=7;i=i+1) if(A[i]) Y=Y+1这段语句主要实现的功能分析

module co8 (A,Y);
input [7:0]A;
output[3:0]Y;
reg[3:0]Y;
integer i;
always @(*)
begin
y=0
for(i=0;i<=7;i=i+1)
if(A[i]) Y=Y+1;
end
endmodule程序用于统计8位二进制数含1的数量,但是主题部份我不理解,请大神详细分析一下。。。谢谢!!!

第1个回答  2016-05-05
前边是定义,A定义为8位,所以循环八次。主题是for循环语句。
for(i=0;i<=7,i++)
{
循环体语句;
}
这样的循环体会执行8次(分别是i=0,i=1,····i=7的情况)
它的执行流程是这样的:
首先给变量i赋初值0,然后判断,若满足条件i<=7(是),就执行循环体的语句,如果A[0]=1则Y=Y+1.完成后再i++,即i = i + 1; i 变成1,然后再次判断是否满足条件i<=7(仍是),就再执行循环体的语句,判断A[1]=1则Y=Y+1,完成后再i++,即i 成为2, 再次判断是否满足条件i<=7。直到i=8不再满足,于是就退出循环。
这样就把A的每一位都判断是否等于1,Y统计的是A中含1的数量本回答被提问者和网友采纳
相似回答