我在使用verilog来实现这个问题上是个彻头彻尾的灾难,但是这个问题已经困扰了我一个小时,我无法解决它!
这是我的密码
genvar i;
assign eq=1;
assign gr=0;
generate for(i=7 ; i>=0 ; i=i-1)
initial begin
if(eq&&~gr)
if (a[i]&~b[i])
initial begin
assign gr=1;
assign eq=0;
end
else if (~a[i]|b[i])
initial begin
assign gr=0;
assign eq=0;
end
end
endgenerate这个想法是创建一些if语句,这样我就可以比较ai和bi,如果gr是0,eq是1。算法是不能改变的,因为它是一个赋值,我必须这样做,但我真的很想知道问题在哪里(verilog的错误描述根本没有帮助)
发布于 2015-03-11 21:53:58
generate块用于在编译/精化时复制硬件。initial块在0时只运行一个。对a和b的更改不会产生任何影响。嵌套initial块是非法的。assign语句不应在initial块中使用(这是合法的,但非常不鼓励,并考虑折旧)。通常,对一个网络的非三状态assign应该只执行一次.always块最好的猜测,这就是你想要的功能:
integer i;
reg eq,gr;
always @* begin
for (i=7 ; i>=0 ; i=i-1) begin
if (eq&&~gr) begin
if (a[i]&~b[i]) begin
gr=1;
eq=0;
end
else if (~a[i]|b[i]) begin
gr=0;
end
end
eq=0;
end
endhttps://stackoverflow.com/questions/28997067
复制相似问题