四选一多路器( 牛客 Verilog VL1 )

四选一多路器

下面是自己的一些理解,现在自己是一个刚进入的verilog的小白,有什么不对多写大佬提点。

题目很简单:就是四选一。
有两种解法:

  1. 第一种是最直接,最明显的方法,直接根据selcet选择器,所选择的对应的路,就行输出即可。
    在这里插入图片描述
`timescale 1ns/1ns
	module mux4_1(
		input [1:0] d1,d2,d3,d0,
		input [1:0] sel,
		output [1:0] mux_out
	);

    reg [1:0] mux_out_reg;
    always@ (*) begin
        case(sel)
            2'b00 : mux_out_reg <= d3;
            2'b01 : mux_out_reg <= d2;
            2'b10 : mux_out_reg <= d1;
            2'b11 : mux_out_reg <= d0;
            default : ;
        endcase
    end
   assign mux_out = mux_out_reg;
   
endmodule

2.利用二选一多路器分解四选一多路器。

在这里插入图片描述

//低到高
`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[1] ? (sel[0] ? d0:d1) : (sel[0] ? d2:d3);
    
endmodule

//高到低
`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

总结:
方法一:代码清晰明了,重复的代码量多,适用于路过多的,可以时钟去遍历。
方法二:代码简洁,不易理解,路少的建议使用。

上面是我的理解,自己根据自己喜欢的方式去写吧。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值