繁体   English   中英

在 Verilog 中连接无界信号,(可合成)

[英]Concatenating unbounded signals in Verilog, (Synthesizable)

我想知道您是否知道以下操作的其他逻辑:

给定 7 个信号:

logic [7:0] in0, in1, in2;

logic [2:0] len0, len1, len2;

logic [31:0] out

在信号中执行 3 的串联,使得

out = {0...0, in2[len2:0], in1[len1:0], in0[len0:0]}

0...0 是零填充。 我只能想到out = 31'd0 | in2<<(len1+len0) | in1<<(len0) | in0 out = 31'd0 | in2<<(len1+len0) | in1<<(len0) | in0 out = 31'd0 | in2<<(len1+len0) | in1<<(len0) | in0但我想知道是否有另一种方法来进行这种连接。 我对多周期方法没问题。 我只是想看看是否有更快/更小的区域作为此操作的实现。

目前唯一可以合成的语法是掩码/移位/或,或一组for循环。

out = (in2 & (1<<len2)-1) << len0+len1 |
      (in1 & (1<<len1)-1) << len0 |
      (in0 & (1<<len0)-1);

不管你怎么做,都会导致很多多路复用器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM