这两个模块都是编写的一个4位4通道的三态总线驱动器,编译后RTL图是一样的
第二个模块
仿真是没有问题的,输出都是正常的
但,第一个模块从仿真上看,当en 为“00”时输出是正常的,en其余状态时,输出dout均为高阻态
不知道第一个模块的程序有什么问题,小白求指教
//=========================================
module TriBUS4_01(in0, in1, in2, in3, en, dout);
input [3:0] in0, in1, in2, in3;
input [1:0] en;
output [3:0] dout;
//---------------------------
reg [3:0] dout;
//---------------------------
always @(en, in0)
begin
if(en == 2'b00) dout = in0;
else dout = 4'HZ;
end
//----------------------------
always @(en, in1)
begin
if(en == 2'b01) dout = in1;
else dout = 4'HZ;
end
//----------------------------
always @(en, in2)
begin
if(en == 2'b10) dout = in2;
else dout = 4'HZ;
end
//----------------------------
always @(en, in3)
begin
if(en == 2'b11) dout = in3;
else dout = 4'HZ;
end
endmodule
//========================================
//========================================
module TriBUS4_02(in0, in1, in2, in3, en, dout);
input [3:0] in0, in1, in2, in3;
input [1:0] en;
output [3:0] dout;
//---------------------------
assign dout = (en == 2'b00) ? in0 : 4'hz;
assign dout = (en == 2'b01) ? in1 : 4'hz;
assign dout = (en == 2'b10) ? in2 : 4'hz;
assign dout = (en == 2'b11) ? in3 : 4'hz;
endmodule
一周热门 更多>