如何使用流运算符从数组中获取位片
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 这样做,因为您的文本描述与您尝试编写的伪代码不匹配。
我有以下代码
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 这样做,因为您的文本描述与您尝试编写的伪代码不匹配。