组合逻辑电路设计之译码器

一. 译码器简介

译码是编码的逆过程,同时去掉比特流在传播过程中混入的噪声。利用译码表把文字译成一组组数码
或用译码表将代表某一项信息的一系列信号译成文字的过程称之为译码

译码器是电子技术中的一种多输入多输出的组合逻辑电路,负责将二进制代码翻译为特定的对象(如
逻辑电平等),功能与编码器相反。译码器一般分为通用译码器和数字显示译码器两大类。
数字电路中,译码器(如 N 线-2N 线 BCD 译码器)可以担任多输入多输出逻辑门的角色,能将已编码的输入转换成已编码的输出,这里输入和输出的编码是不同的。输入使能信号必须接在译码器上使其正常工作,否则输出将会是一个无效的码字。译码在多路复用、 七段数码管和内存地址译码等应用中是必要的。
38 译码器也就是三线八线译码器, 它是指三位二进制数字,其会组成 000 到 111 共八个不同的数字,
因此一共会有 8 种状态,所以称为 38 译码器。

二. 硬件设计

因为 3-8 译码器的上板验证需要用到 8 个 led 灯, 而领航者的底板 PL 端的 led 灯数目不够, 所以 3-8 译码器我们只进行仿真验证, 而不再进行上板测试。

在了解我们的实验任务后,按照我们的开发流程首先是进行模块的绘制。 3-8 译码器是通过输入 3 个信号组成二进制的 8 种情况来控制对应输出 8bit 的 8 种不同状态。根据上面的分析设计出的框图所示

模块端口与功能描述如下表所示:

三. FPGA实现

1. 绘制波形图

框图结构设计完毕后我们就可以通过波形图的方式来描述输入和输出之间具体的关系。 首先输入为 3
个 1bit 信号,其任意二进制组合有 8 种情况,每种组合与 out 输出 8bit 的 8 种状态一一对应,实现由 3 种输入控制对应的 8 种输出的译码效果。根据上面的分析我们可以先列出真值表,然后再根据真值表的输入与输出的对应关系画波形图。


根据 38 译码器的真值表,我们可以绘制出 38 译码器模块的波形图如下图所示:

2. 编写rtl

module decoder_3_8(
    input a,
    input b,
    input c,

    output reg[7:0] out
);

wire [2:0] value;

assign value = {a,b,c};

always @(*) begin
    case(value)
        3'b000 : out = 8'b0000_0000;
        3'b001 : out = 8'b0000_0010;
        3'b010 : out = 8'b0000_0100;
        3'b011 : out = 8'b0000_1000;
        3'b100 : out = 8'b0001_0000;
        3'b101 : out = 8'b0010_0000;
        3'b110 : out = 8'b0100_0000;
        3'b111 : out = 8'b1000_0000;
        default:;
    endcase
    
end

endmodule

1~7行定义了3个input,分别为a,b,c,定义了一个out为out,8bit宽

第9行定义了一个模块内部线网类型,把input a,b,c ,3个bit拼接起来

13~26行然后用always case来判断

3. 仿真

`timescale 1ns / 1ns

module tb_decoder_3_8();

reg a;
reg b;
reg c;

wire [7:0] out;

initial begin
    a = 0; b = 0; c= 0;
    #100
    a = 0; b = 0; c= 1;
    #100
    a = 0; b = 1; c= 0;
    #100
    a = 0; b = 1; c= 1;
    #100
    a = 1; b = 0; c= 0;
    #100
    a = 1; b = 0; c= 1;
    #100
    a = 1; b = 1; c= 0;
    #100
    a = 1; b = 1; c= 1;
end

decoder_3_8 u_decoder_3_8(
    .a(a),
    .b(b),
    .c(c),

    .out(out)
);

endmodule

可以看到仿真值符合我们的预期

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wireless_Link

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值