[HDLBits做题]Combinational Logic --- Multiplexers

1.2 Multiplexers 多路复用器

1.2.1 2-to-1 multiplexer [Mux2to1]
问题描述

创建一个1bit位宽的2对1多路复用器,当sel=0,选通a;当sel=1,选通b;
预期答案长度在一行左右。

    assign out = sel ? b : a ;

注意双目运算符前真后假就行。

1.2.2 2-to-1 bus multiplexer [Mux2to1v]
问题描述

创建一个100bit位宽的2对1多路复用器,当sel=0,选通a;当sel=1,选通b;
预期答案长度在一行左右。

    assign out = sel ? b : a ;

同上。

1.2.3 9-to-1 multiplexer
问题描述

创建一个16bit位宽,9对1多路复用器,当sel=0时选通a,当sel=1时选通b,以此类推。对于不使用的情况(sel=9到15),设置所有输出位均为1。
预期答案长度在15行左右。

    always@(*) begin
        case(sel)
            4'b0000 : out = a;
            4'b0001 : out = b;
            4'b0010 : out = c;            
            4'b0011 : out = d;
            4'b0100 : out = e;
            4'b0101 : out = f;
            4'b0110 : out = g;
            4'b0111 : out = h;
            4'b1000 : out = i;
            default: out = 16'hffff;           
        endcase
    end

简单的case选择,注意default别忘了。

1.2.4 256-to-1 multiplexer [Mux256to1]
问题描述

创建一个1bit位宽,256对1的多路复用器,256个输入都被一个256位输入向量打包,当sel=0时选通in[0],当sel=1时选通in[1],以此类推。
预期答案长度在1行左右。

    assign out = in[sel];

题目限制一行代码,就抱着试一试的想法把sel当做索引用,没想到成了,学到了学到了。

1.2.5 256-to-1 4-bit multiplexer [Mux256to1v]
问题描述

创建一个4bit位宽,256对1的多路复用器,256个4bit输入打包在一个1024位输入向量。当sel=0时选通in[3:0],当sel=1时选通in[7:4],sel=2时选通in[11:8],以此类推。
预期答案长度在1-5行。

    assign out = in[4*sel+3 -: 4];

结合上题,涉及到 +:与 -:的用法。
可以理解为[a+:b]表示为[a:a+b]以及[a-:b]表示为[a:a-b]。


这个系列主要是记录一下自己的学习过程和简单思考过程,也参考了许多其他人的思路,题目均为HDLBits上的原题,借助翻译器和自己的理解简单组织了一下语言,如有问题欢迎批评指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值