假如有下面的语句
input [7:0] a;
input [8:1] b;
output reg [16:1] out;
integer i;
always@ (a or b)
begin
out=0;
for (i=0;i<=7;i=i+1)
out=out+a[i];
for (i=1;i<=8;i=i+1)
out=out+a[i];
for (i=0;i<=7;i=i+1)
out=out+b[i];
for (i=1;i<=8;i=i+1)
out=out+a[i];
end
什么四个for循环使用有没有问题?如果i从1开始那a[0]和b[0]不就不能赋值了?
还有always@ (a or b)是什么意思,然后a,b都不是0xff那下面的语句还能执行吗?
嗯,那reg [8:1] a 有没有a [0]这个元素?always @ (a or b)是不是只要a,b都不是0就可以执行下面的语句?刚刚开始学Verilog,所以有好多不懂的
追答没有 a[0].
并不是a 和 b 都不是 0 执行,是 a 或者 b 发生变化,则往下执行。甚至可以简略写为
always @ (*) 。你如果初学,建议不要这么写。
建议你从时序逻辑着手吧,先写一个点灯的程序,慢慢体会。
那个FPGA的板子我还没有,老师说先把语法学一学然后提供板子
对了,可以帮助学习一下FPGA吗,老师要我开始为SIC竞赛准备了,但是我还什么都不知道,模电数电什么的全部是刚刚开始学,感觉好难