如何使用流运算符从数组中获取位片

How to use streaming operator to get bit slice from an array

我有以下代码

logic [99:0] a[10]; // in this only the LSB 10 bits are relevant 
logic [49:0] b;

我想把a有用的位分给b

我试过流媒体运营商,但无法正常工作

b = { << 10 {a[0:5]}}; // EDIT: Correcting typo

这可以吗?我浏览了 SV LRM 和流媒体运营商,但无法完全掌握它。

谢谢

您不能使用流运算符或 bit-stream 转换来对 non-contiguous 位集进行操作。您可以使用 foreach 循环。

foreach (a[ii]) b[ii*5+:5] = a[ii][5:0];

您将不得不 fiddle 这样做,因为您的文本描述与您尝试编写的伪代码不匹配。