HDLBits答案8-Multiplexers

本文详细介绍了不同规模的多路复用器的设计,包括1位宽的2-to-1、100位宽的2-to-1、16位宽的9-to-1、1位宽的256-to-1以及4位宽的256-to-1多路复用器。通过Verilog代码展示了如何根据选择信号sel来切换不同的输入信号,并在未使用的情况下设置默认输出。
摘要由CSDN通过智能技术生成

1. 2-to-1 multiplexer

创建一个 1 位宽的 2 对 1 多路复用器。当sel=0时,选择a。当 sel=1 时,选择 b。

module top_module( 
    input a, b, sel,
    output out ); 
	assign out = sel? b:a;
endmodule

2. 2-to-1 bus multiplexer

创建一个100位宽,2对1多路复用器。当sel=0时,选择a,当sel=1时,选择b。

module top_module( 
    input [99:0] a, b,
    input sel,
    output [99:0] out );
endmodule

3. 9-to-1 multiplexer

创建一个16位宽,9比1多路复用器。Sel =0选择a, Sel =1选择b,等等。对于未使用的情况(sel=9到15),将所有输出位设置为’1’。

module top_module( 
    input [15:0] a, b, c, d, e, f, g, h, i,
    input [3:0] sel,
    output [15:0] out );
    always@(*)begin
        case(sel)
            4'd0:out=a;
            4'd1:out=b;
            4'd2:out=c;
            4'd3:out=d;
            4'd4:out=e;
            4'd5:out=f;
            4'd6:out=g;
            4'd7:out=h;
            4'd8:out=i;
            default:out = 16'hffff;
        endcase
    end
endmodule

4. 256-to-1 multiplexer

创建一个1位宽,256对1的多路复用器。256个输入全部打包到一个256位输入向量中。Sel =0在[0]中选择,Sel =1在[1]中选择位,Sel =2在[2]中选择位,等等。

module top_module( 
    input [255:0] in,
    input [7:0] sel,
    output out );
    assign out = in[sel];
endmodule

5. 256-to-1 4-bit multiplexer

创建一个4位宽,256对1的多路复用器。256个4位输入全部打包到一个1024位输入向量中。Sel =0应该选择[3:0]中的位,Sel =1选择[7:4]中的位,Sel =2选择[11:8]中的位,等等。

module top_module( 
    input [1023:0] in,
    input [7:0] sel,
    output [3:0] out );
    assign out = in[sel*4 +: 4];
endmodule
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值