【发布时间】:2017-11-01 16:07:52
【问题描述】:
我正在尝试在硬件中(使用 Verilog)实现此伪代码所描述的功能:
if A then
output [63:0] = b[63:56], c[X-1:0], b[Y-1:0]
else output [63:0] = c[X-1:0], b[Y-1:0]
A 是一个布尔值,而输出 b 和 c 是 64 位长。 X 和 Y 在运行时发生变化,因此它们不能是 Verilog 变量。 X的值随着A的变化而变化:
if A then
X = 56 - Y
else X = 63 - Y
而 Y 是从 6 位寄存器中读取的,因此它可以是 0 到 63 之间的任何数字。
所以对于 A 的两种情况,所有 64 位输出都将被分配。 我知道需要使用 A 进行位掩码和多路复用器选择,但它有点复杂,我不太清楚如何在 Verilog 中实现这一点。
【问题讨论】:
-
为什么不使用连接运算符 { } 呢?
标签: verilog selection bit masking