verilog一个文件实现通过拨码控制数码管显示,模仿83优先译码器
时间: 2023-06-15 11:04:01 浏览: 132
以下是一个基于 Verilog 的代码实现,通过拨码开关控制数码管的显示,模仿 TI-83 计算器的优先级译码器:
```verilog
module ti83_decoder(
input [7:0] switches, // 拨码开关输入
output reg [6:0] display // 数码管输出
);
reg [7:0] encoded;
// 译码器优先级
always @(*)
begin
if (switches[0])
encoded = 8'b11111110;
else if (switches[1])
encoded = 8'b11111101;
else if (switches[2])
encoded = 8'b01101101;
else if (switches[3])
encoded = 8'b10111100;
else if (switches[4])
encoded = 8'b01111001;
else if (switches[5])
encoded = 8'b00110001;
else if (switches[6])
encoded = 8'b11111100;
else if (switches[7])
encoded = 8'b11111111;
else
encoded = 8'b00000000;
end
// 数码管显示
always @(*)
begin
case(encoded)
8'b00000001: display = 7'b1000000;
8'b00000010: display = 7'b1111001;
8'b00000100: display = 7'b0100100;
8'b00001000: display = 7'b0110000;
8'b00010000: display = 7'b0011001;
8'b00100000: display = 7'b0010010;
8'b01000000: display = 7'b0000010;
8'b10000000: display = 7'b1111000;
default: display = 7'b1111111;
endcase
end
endmodule
```
在此模块中,`switches` 输入是一个 8 位二进制数,代表着 8 个拨码开关的状态。根据拨码开关的状态,优先级译码器会将其译码成一个 8 位二进制数 `encoded`。然后根据 `encoded` 的值,将对应的数码管显示值输出到 `display` 输出端口上。如果 `encoded` 的值不在 1~8 的范围内,则将数码管输出设为 `1111111`,即不显示任何数码。