题解 | #四选一多路器#

四选一多路器

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

`timescale 1ns/1ns
module mux4_1(
input [1:0]d1,d2,d3,d0,
input [1:0]sel,
output[1:0]mux_out
);
//*************code***********//
wire  [1:0]d1,d2,d3,d0;
wire [1:0]sel;
wire [1:0]mux_out;

assign mux_out = (sel == 2'b00)? d3:
                 (sel == 2'b01)? d2:
                 (sel == 2'b10)? d1:d0;

//*************code***********//
endmodule

先上代码。

题目拆分:
1、四选一输出;
2、输出为wire;

思路:
1、由于是四选一输出,所以其功能为通过sel信号选择四路输入信号之一输出到输出信号端口。
2、接着看到输出为wire类型,首先考虑使用组合逻辑的办法,即直接使用assign语句赋值,再考虑到波形图中的sel信号和其他信号的对应关系,使用=?:结构进行判断与选择。
assign mux_out = (sel == 2'b00)? d3:
                 (sel == 2'b01)? d2:
                 (sel == 2'b10)? d1:d0;
3、也可以使用always块的组合逻辑方式,但是由于输出需要wire类型,所以需要一个中间变量寄存器mux_out_mid,也可以实现功能。
reg [1:0]mux_out_mid;
always@(*)
    begin
        case (sel)
            2'b00: mux_out_mid = d3;
            2'b01: mux_out_mid = d2;
            2'b10: mux_out_mid = d1;
            2'b11: mux_out_mid = d0;
        endcase
    end        
assign mux_out = mux_out_mid;

#数字IC实习生#
全部评论

相关推荐

S_Holmes:一想到我苦苦追求的迪子私下里却是985的马子,我的心就在滴血😭😭😭
点赞 评论 收藏
分享
投递牧原集团等公司7个岗位
点赞 评论 收藏
分享
07-10 13:59
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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