欢迎光临散文网 会员登陆 & 注册

HDLBits (65) — 2至1位宽为4的多路复用器

2022-03-05 15:10 作者:僚机Wingplane  | 我要投稿

本题链接:

https://hdlbits.01xz.net/wiki/Mux256to1v

创建一个位宽为4的256到1个多路复用器。256 4位输入全部打包到一个1024位输入向量中。当 sel = 0时,选择 in[3:0]当 sel = 1时,选择 in[7:4]选择 in[3:0]当 sel = 2时,选择 in[11:8]以此类推。

预期解决方案长度:大约1-5行。

题目

提示:

  • 对于这么多选项,case 语句可能会未必有用。

  • 向量指针可以是可变的,只要给仿真器计算所选位的宽度是常量。它并不总是能够完美的完成这个操作。其中有一个报错... is not a constant" 意味着它无法证明选择宽度是常量。特别是,使用向量指针选择向量的位将非常有用。in[ sel*4+3 : sel*4 ]就行不通。

  • Bit slicing (“自Verilog-2001以来的向量指针选择”)有更紧凑的语法。

答案

Verilog 中提供了大约 9 种操作符,分别是算术、关系、等价、逻辑、按位、归约、移位、拼接、条件操作符。

大部分操作符与 C 语言中类似。同类型操作符之间,除条件操作符从右往左关联,其余操作符都是自左向右关联。圆括号内表达式优先执行。例如下面每组的 2 种写法都是等价的。

拼接操作符用大括号 {,} 来表示,用于将多个操作数(向量)拼接成新的操作数(向量),信号间用逗号隔开。

拼接符操作数必须指定位宽,常数的话也需要指定位宽。

参考内容:

2.4 Verilog 表达式 | 菜鸟教程:

https://www.runoob.com/w3cnote/verilog-expression.html


HDLBits (65) — 2至1位宽为4的多路复用器的评论 (共 条)

分享到微博请遵守国家法律