module Gmain(A0,A1,A2,A3,A4,A5,A6,Y); input A0,A1,A2,A3,A4,A5,A6; output reg Y; reg prev_Y; always@(A0,A1,A2,A3,A4,A5,A6,Y) begin if(A0==1'b0&&A1==1'b0&&A2==1'b0&&A3==1'b0&&A4==1'b0&&A5==1'b0&&A6==1'b0) begin Y <= 1'b1; end else if(A0==1'b0&&A1==1'b1&&A2==1'b0&&A3==1'b1&&A4==1'b1&&A5==1'b0&&A6==1'b1) begin Y <= 1'b0; end else if(A0==1'b0&&A1==1'b1&&A2==1'b0&&A3==1'b1&&A4==1'b1&&A5==1'b1&&A6==1'b0) begin Y <= 1'b1; end else if(A0==1'b0&&A1==1'b1&&A2==1'b0&&A3==1'b1&&A4==1'b1&&A5==1'b1&&A6==1'b1) begin Y <= 1'b0; end else if(A0==1'b0&&A1==1'b1&&A2==1'b1&&A3==1'b0&&A4==1'b0&&A5==1'b0&&A6==1'b0) begin Y <= 1'b1; end else if(A0==1'b0&&A1==1'b1&&A2==1'b1&&A3==1'b0&&A4==1'b0&&A5==1'b0&&A6==1'b1) begin Y <= 1'b0; end else begin Y <= prev_Y; end prev_Y <= Y; end endmodule 为什么这串代码会使得输出一直为1
时间: 2023-08-20 17:05:20 浏览: 57
gmain-juice:果汁公司的样本站点
这段代码中,当输入信号 A0-A6 的值均为 0 时,会将 Y 赋值为 1。而在其他情况下,都会将 Y 赋值为 prev_Y,也就是上一个时刻的 Y 值。因此,只要 A0-A6 的值都不为 0,Y 的值就会一直保持不变,即保持为上一个时刻的 Y 值。而由于一开始 prev_Y 被初始化为 0,因此初始时刻 Y 的值也会被赋为 0。但随后,由于输入信号不为 0,Y 的值就会一直保持为上一个时刻的 Y 值,也就是 0,因此输出一直为 0,而不是 1。如果想让输出一直为 1,应该将第一个 if 语句中的 Y 赋值改为 1。
阅读全文