1组合逻辑电路--编码器和译码器

本文详细介绍了编码器和译码器的设计方法,包括4输入2输出编码器及优先编码器的Verilog代码实现,并提供了RTL级视图与仿真波形。同时,还展示了如何利用case语句实现译码器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.3.1 编码器

4输入2输出编码器代码如下

ContractedBlock.gifExpandedBlockStart.gifView Code
 1 module encoder
2 (
3 input [3:0] iA,
4 output reg [1:0] oQ
5 );
6
7 always @(*)
8 begin
9 oQ=2'b00;
10 case(iA)
11 4'b0001:oQ=2'b00;
12 4'b0010:oQ=2'b01;
13 4'b0100:oQ=2'b10;
14 4'b1000:oQ=2'b11;
15 default :;
16 endcase
17 end
18
19 endmodule

RTL级视图如下

testbench代码如下

ContractedBlock.gifExpandedBlockStart.gifView Code
 1 `timescale 1ns/1ns
2 module encoder_tb;
3
4 reg [3:0] ia;
5 wire [1:0] oq;
6
7 initial
8 begin
9 ia=4'b0000;
10 #20 ia=4'b0001;
11 #20 ia=4'b0010;
12 #20 ia=4'b0100;
13 #20 ia=4'b1000;
14 #20 $stop;
15 end
16
17 encoder encoder_inst
18 (
19 .iA(ia),
20 .oQ(oq)
21 );
22
23 endmodule

RTL级仿真波形如下

1.3.2 优先编码器

真值表如下,参考艾米电子

代码如下

ContractedBlock.gifExpandedBlockStart.gifView Code
 1 module encoder
2 (
3 input [3:0] iA,
4 output reg [1:0] oQ
5 );
6
7 always @(*)
8 begin
9 oQ=2'b00;
10 if(iA[3])oQ=2'b11;
11 else if(iA[2])oQ=2'b10;
12 else if(iA[1])oQ=2'b01;
13 else oQ=2'b00;
14 end
15
16 endmodule

RTL级视图

RTL级仿真波形

1.3.3 译码器

通过case语句很容易实现如数码管等译码电路。

转载于:https://www.cnblogs.com/yuesheng/archive/2011/08/01/2123987.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值