目录
开发平台:Quartus Prime 18.1Standard Edition EP4CE10F17C8(征途PRO系列)
文章后附工程代码链接
一、译码简介:
译码是编码的逆过程,在编码时,每一种二进制代码都赋予了特定的含义,即都表示了一个确定的信号或者对象把代码状态的特定含义翻译出来的过程叫做译码,实现译码操作的电路称为译码器。或者说,译码器是可以将输入二进制代码的状态翻译成输出信号,以表示其原来含义的电路。译码器(decoder)是一类多输入多输出组合逻辑电路器件,其可以分为:变量译码和显示译码两类。
二、实战演练
1、实验目标
设计并仿真验证3-8译码器。3-8译码器顾名思义就是3个输入,一共2^3个输出,通过控制输入的不同得到不同的输出
注:3-8译码器的上板验证需要用到8个led灯或者数码管,因为板卡led灯数目不够且数码管部分还未作讲解,因此3-8译码器只进行仿真验证,不再上板测试。
2、模块框图
输入输出信号描述
3、模块波形图
4、实验代码
module decoder (
input [2:0] a,
output reg [7:0] b
);
always @(*) begin
case(a)
3'b000:b= 8'b0111_1111;
3'b001:b= 8'b1011_1111;
3'b010:b= 8'b1101_1111;
3'b011:b= 8'b1110_1111;
3'b100:b= 8'b1111_0111;
3'b101:b= 8'b1111_1011;
3'b110:b= 8'b1111_1101;
3'b111:b= 8'b1111_1110;
default:b=8'b0000_0000;
endcase
end
endmodule
`timescale 1ns/1ns
module decoder_tb ();
reg [2:0] a;
wire [7:0] b;
initial begin
a[0] <=1'b0;
a[1] <=1'b0;
a[2] <=1'b0;
end
always #10 a[0] <= {$random} % 2;
always #10 a[1] <= {$random} % 2;
always #10 a[2] <= {$random} % 2;
decoder decoder_inst(
.a(a),
.b(b)
);
endmodule
5、仿真波形图
三、工程代码
链接:https://pan.baidu.com/s/1g_1ytZWcl9TD0urjWYjEDQ?pwd=yykl
提取码:yykl
四、总结
通过本次实验我简单的组合逻辑---3_8译码器,项目并不是很难,但需要我们足够细心。