HDLBits练习汇总-03-电路–组合逻辑
multiplexers
Mux256to1v
创建一个4位宽的256:1多路复用器。256个4位输入全部打包为单个1024位输入向量。sel = 0应该选择[3:0]中的位,sel = 1选择[7:4]中的位,sel = 2选择[11:8]中的位,依此类推。
Tips:
一、有这么多选项,case语句不是那么有用。
二、矢量索引可以是可变的,只要合成器可以确定所选位的宽度是恒定的即可。这并不总是很擅长。错误消息“ …不是常数”表示无法证明选择宽度是常数。特别是in [sel * 4 + 3:sel * 4]不起作用。
三、位切片(自Verilog-2001起为“索引矢量部分选择”)具有更紧凑的语法。
这题是根据上一题扩展而来,不再只有一位对应,out是四位,in也扩展到了四位,sel是选择in中的内部的数据段。难度提升,在不知道具体用法时,很可能找不到具体思路。
具体代码如下:
通过对sel相乘,拉宽位置,将本只有256位表示的数据变为1024位,选择其中数据段。out也就可以通过这种方法选择数据段。