【FPGA】Verilog:解码器 | 实现 2-4 解码器
实践内容:解释 2 至 4 解码器的结果和仿真过程 (包括真值表创建和 k 映射、AND 门)。
0x00 解码器(Decoder)
解码器是一种根据输入信号从多个输出 bit 中只选择一个的设备。
例如,如果有一个解码器接收一个 2 位二进制数值作为输入,它可以接收 00、01、10、11 四个数值作为输入,并通过为每个输入只选择四个位中的一个来输出 1000、0100、0010 和 0001 四个数值。只选择一个输出位为 1 的解码器称为主动高电平解码器,只选择一个输出位为 0 的解码器称为主动低电平解码器。当输入存储在特定存储器中的字地址时,主要用于解码操作数/地址,如发出信号选择相应的字(地址解码器)。
解码器分为两种类型:
- 主动高电平解码器:在输出中只有一个位是高电平(1),其他位都是低电平(0)。
- 主动低电平解码器:在输出中只有一个位是低电平(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门实现)
`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:
`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 输出被设置为A
和B
的取反的与操作。当A
和B
都为0时,D0 被激活,即输出为1。D1 = B & (~A);?
D1 输出被设置为B
和A
的取反的与操作。当A
为0且B
为1时,D1 被激活,即输出为1。D2 = A & (~B);?
D2 输出被设置为A
和B
的取反的与操作。当A
为1且B
为0时,D2 被激活,即输出为1。D3 = A & B;?
D3 输出被设置为A
和B
的与操作。当A
和B
都为1时,D3 被激活,即输出为1。
根据输入的不同组合,解码器的四个输出信号中的一个会被激活。
📌 [ 笔者 ]? ????
📃 [ 更新 ]? ?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/. |
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!