完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
这两个模块都是编写的一个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 |
|
相关推荐
2个回答
|
|
你第一个模块的输出dout在多个always语句里面赋值了,这是非法的,编译器应该至少会报告警吧,正常应该报错误的。编译器估计就选择了第一个always执行,后面的就忽略了。这种一般组合逻辑加case比较合理。
最佳答案
|
|
|
|
reg型变量不能够在多个always中赋值,这个问题ISE确实可能不会报错,但会出问题
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1851 浏览 1 评论
1590 浏览 0 评论
矩阵4x4个按键,如何把识别结果按编号01-16(十进制)显示在两个七段数码管上?
1810 浏览 0 评论
968 浏览 0 评论
2586 浏览 0 评论
1589 浏览 40 评论
5817 浏览 113 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 13:11 , Processed in 0.436148 second(s), Total 42, Slave 36 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号