题解 | #四选一多路器#

四选一多路器

http://www.nowcoder.com/practice/cba4617e1ef64e9ea52cbb400a0725a3

  • 线网类型只能使用连续赋值语句进行赋值;
  • 使用三元运算符 ?: 来实现四个信号的选择;
  • 实现思路为:首先判断sel[0]的数值,再判断sel[1]的数值,即可判断出应当选择哪一个信号;
  • 此外应当看清时序电路图中sel的数值和四个信号之间的对应关系,下表为该题目中对应关系:
sel 信号
00 d3
01 d2
10 d1
11 d0

- 代码实现:

`timescale 1ns/1ns
module mux4_1(
input [1:0]d1,d2,d3,d0,
input [1:0]sel,
output[1:0]mux_out
);
    assign mux_out = sel[0]?(sel[1]?d0:d2):(sel[1]?d1:d3);
    
endmodule
全部评论
超时是因为点了自测运行,自测运行是需要自己写testbench的,如果没写就会超时,如果写了testbench还超时,那可能是你的tb里没有在最后加$finish;
9 回复 分享
发布于 2022-06-12 10:45
`timescale 1ns/1ns module mux4_1( input [1 : 0] d0,d1,d2,d3, input [1 : 0] sel, output [1 : 0] mux_out ); ////////////////////////////////////////////////////// assign mux_out = (sel > 0) ? ((sel > 1) ? ((sel > 2) ? d0 : d1) : d2) : d3; ///////////////////////////////////////////////////// endmodule
点赞 回复 分享
发布于 2025-10-25 10:27 四川
没太看懂这个sel[0],sel[1]表示什么意思。 感觉这样更直接,更容易理解一些,或者直接用case语句。 assign mux_out = (sel == 2'b00) ? d3 : ((sel == 2'b01) ? d2 : ((sel == 2'b10) ? d1 : d0));
点赞 回复 分享
发布于 2024-10-25 14:27 北京
有点没看懂,大佬能解释一下吗
点赞 回复 分享
发布于 2023-07-08 15:23 广东
sel[0],和sel[1]分别代表什么,不好意思没有看懂
点赞 回复 分享
发布于 2023-03-06 17:26 广东
感觉这个是最好最简单的解法了。
点赞 回复 分享
发布于 2022-08-09 10:42
如果没有用reg定义,这个默认是线网类型?
点赞 回复 分享
发布于 2022-07-09 10:22
我的也运行超时呀,求大神解答
点赞 回复 分享
发布于 2022-04-21 10:11
是的 我也超时了 不知道为啥
点赞 回复 分享
发布于 2022-04-16 16:25
运行好像超时了
点赞 回复 分享
发布于 2022-04-03 13:28
可以
点赞 回复 分享
发布于 2022-03-19 14:43

相关推荐

03-29 18:59
运城学院 Java
程序员小白条:咱们要对自己的简历和学历有清晰的认知,不要动不动就大厂了....都26届了,没实习还想着大厂,唉
点赞 评论 收藏
分享
评论
122
9
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务