译码器的基本概念:
译码器的逻辑功能是将每个输入的二进制代码译成对应的输出高、低电平信号或另外一个代码。一般有二进制译码器、二-十进制译码器和显示译码器。
二进制译码器:
二进制译码器的输入是一组二进制代码,输出是一组与输入代码一一对应的高、低电平信号。
Verilog代码1:
每一个输入代码译成对应输出端的低电平信号,LED1~LED8,输出对应的LED灯为亮
/*3-8译码器*/
module decode38(
input [2:0] sw, //3位输入
output reg [7:0] led //8位输出
);
always @ (sw)begin
case(sw)
3'b000: led = 8'b1111_1110;
3'b001: led = 8'b1111_1101;
3'b010: led = 8'b1111_1011;
3'b011: led = 8'b1111_0111;
3'b100: led = 8'b1110_1111;
3'b101: led = 8'b1101_1111;
3'b110: led = 8'b1011_1111;
3'b111: led = 8'b0111_1111;
default;
endcase
end
endmodule
Verilog相关语法:
- 信号类型:
wire线信号,一般用于assign语句中
reg寄存器类型,一般用于always块中
在always过程块中只能对reg型变量赋值
- 数字表达式:
<位宽><进制><数字>如8‘b1111_1110,其中"_"下划线无实际意义
- 进制:
二进制b/B;十进制d/D;十六进制h/H
- 块语句:
常用begin表示开始,end表示结束
- case语句
- case(表达式)<case分支项>endcase
- casez(表达式)<case分支项>endcase
- casex(表达式)<case分支项>endcase
case语句,一定要跟default语句
- always语句
括号中的sw为敏感变量,当sw变化一次执行一次always中所有语句,否则保持不变
对应的真值表:
输入 | 输出 | |||||||||
A2 | A1 | A0 | Y7 | Y6 | Y5 | Y4 | Y3 | Y2 | Y1 | Y0 |
0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 |
0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |
0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 |
1 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 |
1 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
Verilog代码2:
每一个输入代码译成对应输出端的高电平信号,LED1~LED8,输出对应的LED灯熄灭
module decode38(
input [2:0] sw, //3位输入
output reg [7:0] led //8位输出
);
always @ (sw)begin
case(sw)
3'b000: led = 8'b0000_0001;
3'b001: led = 8'b0000_0010;
3'b010: led = 8'b0000_0100;
3'b011: led = 8'b0000_1000;
3'b100: led = 8'b0001_0000;
3'b101: led = 8'b0010_0000;
3'b110: led = 8'b0100_0000;
3'b111: led = 8'b1000_0000;
default;
endcase
end
endmodule
对应的真值表:
输入 | 输出 | |||||||||
A2 | A1 | A0 | Y7 | Y6 | Y5 | Y4 | Y3 | Y2 | Y1 | Y0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |