【发布时间】:2017-11-02 22:30:28
【问题描述】:
我刚开始使用 Verilog,我想知道是否有办法执行以下操作:
如果我有三个两位线,其中 testmux 在其索引一位中连接到 muxt,而 muxt 在其索引一位中连接到 muxt2,有没有办法通过仅基于分配来访问 muxt2 中的“1”位测试多路复用器?我天真地尝试使用下面代码的 sn-p 中的最后一行,但它似乎不起作用,即使使用括号也是如此。任何指导将不胜感激,在此先感谢您。
output test;
wire [1:0] testmux = {muxt,1'b0};
wire [1:0] muxt = {muxt2,1'b0};
wire [1:0] muxt2 = {1'b1,1'b0};
assign test = testmux[1][1][1];
【问题讨论】:
-
表达式
testmux[1][1][1]将访问 3D 数组中的索引 (1,1,1)。testmux不是 3D 数组,它是 1D(压缩)数组。我不清楚你想要达到什么目的。 (例如,表达式{muxt,1'b0}是 3 位宽 -| muxt[1] | muxt[0] | 1'b0 |。)也许您可以画一个图表或添加一些 ASCII 艺术? -
我添加了一个快速图表,看看是否能更好地表达我的目标。我现在看到你提到的表达式确实有 3 位,所以我的设置对于我想要实现的目标来说一定是不正确的。我试图用最后一行中的表达式实现的是基本上让 (testmux[1]) 等同于 muxt。然后我会有 muxt[1][1],我希望它等同于 muxt2[1],评估为“1”。我现在明白我的做法是完全错误的,所以谢谢你。
-
图表上的这些框不能是(2 个输入)多路复用器:多路复用器有一个选择输入来控制其他两个输入中的哪一个应该驱动输出。您的图表或代码中没有选择输入。
-
对不起,我画错了。我的想法是让表达式 testmux[1][1][1] 中的 [1][1][1] 成为每个将成为多路复用器的框的选择。考虑到这一点,绘图实际上应该在每个框的顶部有 1,在底部有 0。在我看来,表达式 testmux[1] 相当于有一个“1”位作为 testmux 的选择,它将控制连接到 muxt 的输出。
标签: verilog