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上的原题,借助翻译器和自己的理解简单组织了一下语言,如有问题欢迎批评指正。