FPGA自学——三八译码器
一、三八译码器的介绍
二、项目创建
1.项目命名
2.选择芯片
3.添加.v文件,参考https://blog.csdn.net/qq_73050400/article/details/149489361中创建HDL文件
- 快捷键:alt+A
三、代码实现
module decoder_3_8(
IN0,
IN1,
IN2,
OUT0,
OUT1,
OUT2,
OUT3,
OUT4,
OUT5,
OUT6,
OUT7
);
input IN0 ;
input IN1 ;
input IN2 ;
//由于out0-out7在always的过程赋值语句中实现,所以要修改为reg类型
output reg OUT0;
output reg OUT1;
output reg OUT2;
output reg OUT3;
output reg OUT4;
output reg OUT5;
output reg OUT6;
output reg OUT7;
//过程赋值语句
//简单语法介绍:
//3'd1:三位宽的十进制数1
//8'b0000_0010:八位宽的二进制数,换算为十进制为2
always@(*)
case({IN2,IN1,IN0})//位拼接时要注意:左边高位,右边低位
3'd0: {OUT7,OUT6,OUT5,OUT4,OUT3,OUT2,OUT1,OUT0} = 8'b0000_0001;
3'd1: {OUT7,OUT6,OUT5,OUT4,OUT3,OUT2,OUT1,OUT0} = 8'b0000_0010;
3'd2: {OUT7,OUT6,OUT5,OUT4,OUT3,OUT2,OUT1,OUT0} = 8'b0000_0100;
3'd3: {OUT7,OUT6,OUT5,OUT4,OUT3,OUT2,OUT1,OUT0} = 8'b0000_1000;
3'd4: {OUT7,OUT6,OUT5,OUT4,OUT3,OUT2,OUT1,OUT0} = 8'b0001_0000;
3'd5: {OUT7,OUT6,OUT5,OUT4,OUT3,OUT2,OUT1,OUT0} = 8'b0010_0000;
3'd6: {OUT7,OUT6,OUT5,OUT4,OUT3,OUT2,OUT1,OUT0} = 8'b0100_0000;
3'd7: {OUT7,OUT6,OUT5,OUT4,OUT3,OUT2,OUT1,OUT0} = 8'b1000_0000;
default: {OUT0,OUT1,OUT2,OUT3,OUT4,OUT5,OUT6,OUT7} = 8'b0000_0000;
endcase
endmodule
四、查看RTL
五、仿真验证
1.添加仿真文件,参考https://blog.csdn.net/qq_73050400/article/details/149489361中测试文件编写
- 快捷键:alt+A
2.测试代码实现
`timescale 1ns/1ns
module decoder_3_8_tb();
reg IN0 ;
reg IN1 ;
reg IN2 ;
wire OUT0;
wire OUT1;
wire OUT2;
wire OUT3;
wire OUT4;
wire OUT5;
wire OUT6;
wire OUT7;
decoder_3_8 decoder_3_8_inst0(
. IN0 (IN0 ),
. IN1 (IN1 ),
. IN2 (IN2 ),
. OUT0 (OUT0),
. OUT1 (OUT1),
. OUT2 (OUT2),
. OUT3 (OUT3),
. OUT4 (OUT4),
. OUT5 (OUT5),
. OUT6 (OUT6),
. OUT7 (OUT7)
);
initial begin
IN2 = 0 ; IN1 = 0 ; IN0 = 0;//0000_0001
#20
IN2 = 0 ; IN1 = 0 ; IN0 = 1;//0000_0010
#20
IN2 = 0 ; IN1 = 1 ; IN0 = 0;//0000_0100
#20
IN2 = 0 ; IN1 = 1 ; IN0 = 1;//0000_1000
#20
IN2 = 1 ; IN1 = 0 ; IN0 = 0;//0001_0000
#20
IN2 = 1 ; IN1 = 0 ; IN0 = 1;//0010_0000
#20
IN2 = 1 ; IN1 = 1 ; IN0 = 0;//0100_0000
#20
IN2 = 1 ; IN1 = 1 ; IN0 = 1;//1000_0000
#20
$stop;
end
endmodule
3.仿真波形图
选中的顺序是IN2,IN1,IN0,按顺序选中
IN数值多少,对应的out电平为1
六、板级验证
1.查看对应引脚
记得ctrl+s保存
2.生成bitscream文件
参考https://blog.csdn.net/qq_73050400/article/details/149489361中板级验证部分
3.调试结果
三八译码器