【FPGA】Verilog:解码器 | 实现 2-4 解码器

**实践内容:**解释 2 至 4 解码器的结果和仿真过程 (包括真值表创建和 k 映射、AND 门)。


0x00 解码器(Decoder)

解码器是一种根据输入信号从多个输出 bit 中只选择一个的设备。

例如,如果有一个解码器接收一个 2 位二进制数值作为输入,它可以接收 00、01、10、11 四个数值作为输入,并通过为每个输入只选择四个位中的一个来输出 1000、0100、0010 和 0001 四个数值。只选择一个输出位为 1 的解码器称为主动高电平解码器,只选择一个输出位为 0 的解码器称为主动低电平解码器。当输入存储在特定存储器中的字地址时,主要用于解码操作数/地址,如发出信号选择相应的字(地址解码器)。

解码器分为两种类型:

  1. 主动高电平解码器:在输出中只有一个位是高电平(1),其他位都是低电平(0)。
  2. 主动低电平解码器:在输出中只有一个位是低电平(0),其他位都是高电平(1)。

|---------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------|
| Active High Decoder ||
| | |
| Active High Decoder ||
| | |

0x01 2-4 解码器的实现

解释 2 至 4 解码器的结果和仿真过程 (包括真值表创建和 k 映射、AND 门)。

📃 真值表如下:

|---|---|----|----|----|----|
| 输入 || 输出 ||||
| A | B | D0 | D1 | D2 | D3 |
| 0 | 0 | 1 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 0 | 0 |
| 1 | 0 | 0 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 | 0 | 1 |

📜 K-map:

|---------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------|
| D0 | D1 |
| | |
| D2 | D3 |
| | |

💬 Design source:(使用AND门实现)

cpp 复制代码
`timescale 1ns / 1ps

module h_dec(
    input A,
    input B,
    output D0,
    output D1,
    output D2,
    output D3
    );

assign D0 = (~A) & (~B);
assign D1 = B & (~A);
assign D2 = A & (~B);
assign D3 = A & B;

endmodule

💬 Testbench:

cpp 复制代码
`timescale 1ns / 1ps

module h_dec_tb;
reg A,B;
wire D0,D1,D2,D3;

h_dec u_h_dec (
    .A(A ),
    .B(B ),
    .D0(D0 ),
    .D1(D1 ),
    .D2(D2 ),
    .D3(D3 )
);

initial begin
    A = 1'b0;
    B = 1'b0;
end

always@(A or B) begin
    A <= #10 ~A;
    B <= #20 ~B;
end

initial begin
    #40
    $finish;
end

endmodule

🚩 运行结果如下:

💭 Schematic:

输入 N 位的情况下返回 2^N 位的输出,其中只有一位为 1,其余为 0(高电平有效),或者只有一位为 0,其余为 1(低电平有效)。将 A、B 作为单个 2 位输入,并将 A 视为 MSB,因此如果 A、B 的值为 00,则 D0、D1、D2、D3 的输出为 1000,01 为 0100,10 为 0010,11 为 1111。

  • D0 = (~A) & (~B); D0 输出被设置为 AB 的取反的与操作。当 AB 都为0时,D0 被激活,即输出为1。
  • D1 = B & (~A); D1 输出被设置为 BA 的取反的与操作。当 A 为0且 B 为1时,D1 被激活,即输出为1。
  • D2 = A & (~B); D2 输出被设置为 AB 的取反的与操作。当 A 为1且 B 为0时,D2 被激活,即输出为1。
  • D3 = A & B; D3 输出被设置为 AB 的与操作。当 AB 都为1时,D3 被激活,即输出为1。

根据输入的不同组合,解码器的四个输出信号中的一个会被激活。

cpp 复制代码
📌 [ 笔者 ]   최역우
📃 [ 更新 ]   2023.12.14
❌ [ 勘误 ]   /* 暂无 */
📜 [ 声明 ]   由于作者水平有限,本文有错误和不准确之处在所难免,
              本人也很想知道这些错误,恳望读者批评指正!

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 📜 参考资料 Introduction to Logic and Computer Design, Alan Marcovitz, McGrawHill, 2008 Microsoft. MSDN(Microsoft Developer Network)EB/OL. \[\]. . 百度百科EB/OL. \[\]. https://baike.baidu.com/. |

相关推荐
坏孩子的诺亚方舟1 天前
FPGA系统架构设计实践15_高云Arora V系列时钟体系
fpga开发·系统架构
FPGA小徐2 天前
入门 CNN 结构全解析|从流程图理论到 FPGA Verilog 硬件实现(含习题带讲解)
fpga开发
FPGA小徐2 天前
FPGA 数字信号处理:并行 FIR 与串行滤波器设计原理、对比与完整 Verilog 实现
fpga开发
Saniffer_SH2 天前
【高清视频】Gen6 服务器还没到,Gen6 SSD 怎么测?Emily 现场演示三种测试环境
人工智能·驱动开发·测试工具·缓存·fpga开发·计算机外设·压力测试
zlinear数据采集卡3 天前
双核架构深度解析:ARM+FPGA如何让数据采集卡实现500Ksps高性能?
arm开发·fpga开发·架构
9527华安3 天前
FPGA实现GTH Transceivers Wizard传输2路视频,基于aurora 8b10b编解码架构,提供4套工程源码和技术支持
fpga开发·gth·aurora 8b10b·transceivers
FPGA小徐3 天前
FPGA 数字信号处理(二):并行 FIR 滤波器的 Verilog 全流程设计与实现
fpga开发
国科安芯4 天前
基于AS32S601ZIT2型抗辐照MCU的商业航天卫星姿态确定与控制系统研究
单片机·嵌入式硬件·安全·fpga开发·架构·risc-v
ALINX技术博客4 天前
【黑金云课堂】FPGA技术教程FPGA基础:I2C 总线通信技术
fpga开发·i2c
Hello-FPGA4 天前
Xilinx KU040 FPGA Camera Link 图像采集
c++·fpga开发