我正在创建一个具有 4 个空的 4 位寄存器的寄存器文件,并且在每个时钟周期,一个寄存器获取一个推送到它的值,然后使用 7 段解码器显示该值。如果寄存器为空,则不应该有显示,但是一旦将值加载到寄存器中,则应该有显示。我尝试为 7 段解码器编写 verilog 代码,如果 En = 1,则只有输出。我的问题是,7 段解码器不会显示任何内容,而是显示零,直到将值添加到寄存器中,在在这种情况下,解码器将显示加载的值。这是verilog代码。
module seven_seg_decoder(S, Z, Y, X, W,En);
input Z,Y,X,W,En;
output [6:0] S;
reg [6:0] S;
always @(En)
begin
case({Z,Y,X,W,En})
5'b00001: S = 'b0000001;
5'b00011: S = 'b1001111;
5'b00101: S = 'b0010010;
5'b00111: S = 'b0000110;
5'b01001: S = 'b1001100;
5'b01011: S = 'b0100100;
5'b01101: S = 'b0100000;
5'b01111: S = 'b0001111;
5'b10001: S = 'b0000000;
5'b10011: S = 'b0000100;
5'b10101: S = 'b0001000;
5'b10111: S = 'b1100000;
5'b11001: S = 'b0110001;
5'b11011: S = 'b1000010;
5'b11101: S = 'b0110000;
5'b11111: S = 'b0111000;
endcase
end
endmodule
当寄存器加载一个值时,我有一个来自寄存器的输出,表明它已加载,并用作此解码器上启用的输入