简介:
用门级描述的方法写一个2-4线译码器。逻辑电路图如下:

Verilog代码如下:
/*------------------------------------
Filename: decoder_2to4.v
Function: 2-4线译码器(输出低电平有效)
Author: Zhang Kaizhou
Date: 2019-9-6 16:17:58
-------------------------------------*/
module decoder_2to4(Y, A0, A1, E);
//端口定义
input A0, A1, E;
output [3 : 0] Y;
wire nA0, nA1, nE; //内部连线
//门级描述
not n1(nE, E), n2(nA0, A0), n3(nA1, A1);
nand nd1(Y[0], nE, nA0, nA1), nd2(Y[1], nE, A0, nA1),
nd3(Y[2], nE, nA0, A1), nd4(Y[3], nE, A0, A1);
endmodule
/*---------------------------
Filename: decoder_2to4_tb.v
Function: 测试代码
Author: Zhang Kaizhou
Date: 2019-9-7 11:45:57
---------------------------*/
`timescale 1ns/1ns
module decoder_2to4_tb(Y);
output [3 : 0] Y;
wire [3 : 0] Y;
reg E, A0, A1;
initial
begin
E = 1'b1; A1 = 1'b0; A0 = 1'b0;
#500 E = 0;
#100 A1 = 1'b0; A0 = 1'b1;
#100 A1 = 1'b1; A0 = 1'b0;
#100 A1 = 1'b1; A0 = 1'b1;
#500 E = 1;
#500 $stop;
end
decoder_2to4 m0(.Y(Y), .E(E), .A0(A0), .A1(A1));
endmodule
仿真结果如下:

总结:
由以上仿真结果知,上述代码描述的2-4线译码器的逻辑功能实现 正常。
附注:
以上逻辑亦可通过数据流描述的方法实现,具体代码如下:
/*------------------------------------
Filename: decoder_2to4.v
Function: 2-4线译码器(输出低电平有效)
Author: Zhang Kaizhou
Date: 2019-9-7 11:56:09
-------------------------------------*/
module decoder_2to4(Y, E, A0, A1);
//端口定义
output [3 : 0] Y;
input E, A0, A1;
//数据流描述
assign Y[0] = ~(~A0 & ~A1 & ~E); //连续赋值语句assign
assign Y[1] = ~(A0 & ~A1 & ~E);
assign Y[2] = ~(~A0 & A1 & ~E);
assign Y[3] = ~(A0 & A1 & ~E);
endmodule
以上代码的仿真结果与上面的门级描述实现的逻辑功能是一样的。
本文介绍了如何使用门级描述方法编写Verilog代码实现2-4线译码器,通过逻辑电路图和仿真结果验证了其正常工作。此外,还提及了数据流描述作为另一种实现方式。
1万+

被折叠的 条评论
为什么被折叠?



