数字电路3-8译码器

Posted Ice丨shine

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数字电路3-8译码器相关的知识,希望对你有一定的参考价值。

本程序实现3-8译码器的功能并级联成4-16译码器
每个3-8译码器有三个使能端

module sanba(
 input [2:0]A,
 input G1,
 input _G2A,
 input _G2B,
 output reg [7:0]_Y
 );
always @(*)
begin
if(G1,_G2A,_G2B==3'b100)//G1、_G2A、_G2B 输入 100 时译码器才工作
begin
case(A)
3'b000:_Y=8'b1111_1110;
3'b001:_Y=8'b1111_1101;
3'b010:_Y=8'b1111_1010;
3'b011:_Y=8'b1111_0110;
3'b100:_Y=8'b1110_1110;
3'b101:_Y=8'b1101_1110;
3'b110:_Y=8'b1011_1110;
3'b111:_Y=8'b0111_1110;
endcase
end
else _Y=8'b1111_1111;
end

接下来进行级联的操作

module si(
 input [3:0]A,
 input _EN,
 output [15:0]_Y
 );
sanba u1(
.A(A),
.G1(A[3]),
._G2A(_EN),
._G2B(_EN),
._Y(_Y[15:8])
);
sanba u2(
.A(A),
.G1(1),
._G2A(_EN),
._G2B(A[3]),
._Y(_Y[7:0])
);
endmodule

测试文件:

module SITEST;
// Inputs
reg [3:0] A;
reg _EN;
// Outputs
wire [15:0] _Y;
// Instantiate the Unit Under Test (UUT)
si uut (
.A(A),
._EN(_EN),
._Y(_Y)
);
initial begin
// Initialize Inputs
A = 0;
_EN = 0;
// Wait 100 ns for global reset to finish
repeat(256)
#10 A,_EN=A,_EN+1;
// Add stimulus here
end

endmodule

波形图

电路图

以上是关于数字电路3-8译码器的主要内容,如果未能解决你的问题,请参考以下文章

FPGA学习-6:简单的组合电路

AS5047P磁编码器应用设计大全解:硬件电路设计SPI通信时序逻辑波形分析注意事项

如何用双2-4线译码器转换为3-8线译码器?电路图怎么设计?求图及解释。。。

如何用双2-4线译码器转换为3-8线译码器?电路图怎么设计?

FPGAVerilog:组合电路 | 3—8译码器 | 编码器 | 74LS148

用3-8线译码器74LS138D触发器74LS74设计汽车尾灯控制电路