生成代码设计一个7段数码管译码电路模块,利用always和case语句实现译码数字逻辑,输入信号为取值在0~15范围内的4位编码,通过译码功能将0~9的输入编码显示为0~9的阿拉伯数字,将10~14的编码显示为A~E,输入为15的编码将清空显示。编写testbench
时间: 2023-05-25 13:03:53 浏览: 76
实验1 工程搭建与IO口的输入输出 实验2 组合逻辑电路与时序逻辑电路设计 实验3 7段数码管译码器动态显示 实验4 数字频率计
以下是Verilog代码和测试台代码:
```
module seven_segment_decoder(
input [3:0] code_in,
output [6:0] seg_out
);
always @* begin
case(code_in)
4'b0000: seg_out = 7'b0111111; // 0
4'b0001: seg_out = 7'b0000110; // 1
4'b0010: seg_out = 7'b1011011; // 2
4'b0011: seg_out = 7'b1001111; // 3
4'b0100: seg_out = 7'b1100110; // 4
4'b0101: seg_out = 7'b1101101; // 5
4'b0110: seg_out = 7'b1111101; // 6
4'b0111: seg_out = 7'b0000111; // 7
4'b1000: seg_out = 7'b1111111; // 8
4'b1001: seg_out = 7'b1101111; // 9
4'b1010: seg_out = 7'b1110111; // A
4'b1011: seg_out = 7'b1111100; // B
4'b1100: seg_out = 7'b0111001; // C
4'b1101: seg_out = 7'b1011110; // D
4'b1110: seg_out = 7'b1111001; // E
4'b1111: seg_out = 7'b0000000; // Clear display
endcase
end
endmodule
module testbench();
reg [3:0] code_in;
wire [6:0] seg_out;
seven_segment_decoder SSD(
.code_in(code_in),
.seg_out(seg_out)
);
initial begin
$monitor("Code in: %b, Seg out: %b", code_in, seg_out);
#10 code_in = 4'b0000; // 0
#10 code_in = 4'b0001; // 1
#10 code_in = 4'b0010; // 2
#10 code_in = 4'b0011; // 3
#10 code_in = 4'b0100; // 4
#10 code_in = 4'b0101; // 5
#10 code_in = 4'b0110; // 6
#10 code_in = 4'b0111; // 7
#10 code_in = 4'b1000; // 8
#10 code_in = 4'b1001; // 9
#10 code_in = 4'b1010; // A
#10 code_in = 4'b1011; // B
#10 code_in = 4'b1100; // C
#10 code_in = 4'b1101; // D
#10 code_in = 4'b1110; // E
#10 code_in = 4'b1111; // Clear display
end
endmodule
```
阅读全文