首页 > 解决方案 > 如果你有一个长签名数组,你能用电线把它分解吗?

问题描述

为简单起见,想象一下我的模块中有一个 50 位输入。这个 50 位输入被分成 10 个 5 位有符号字。这是您如何使输入的每个部分签名的方式吗?

module(in, out)
input signed [49:0] in;
wire signed [4:0] in_temp [0:9];
genvar i;

for(i = 0; i < 128; i = i+1)
assign in_temp[i] = in[5*(i+1)-1 -: 5];
....

标签: verilog

解决方案


是否使结果签名或未签名都没有关系。一旦你分裂了一根电线,它就失去了意义。

例如:如果您将带符号的 8'b00011111 分成两个相等的部分,您将得到 4'b0001 和 4'b1111。这 4 位数字中的每一个的“价值”是什么?只有当您稍后以正确的顺序再次连接它们时,您才能获得原始编号。

回答您的问题:
这并不重要,但我会将所有单独的部分设为无符号作为除一个之外的所有最高位,不再是符号位,因此类型可能会令人困惑。你可能很迂腐,制作一个有符号向量和九个无符号向量。
更有用的是使用类似这样的名称in_split来表示这是已拆分的向量的一部分。


推荐阅读