【发布时间】:2013-12-30 12:12:44
【问题描述】:
首先 - 我有三维 reg,仅在初始开始时分配。
reg [4:0] PS[0:9];
PS[0] = 24; PS[1] = 10; PS[2] = 8; PS[3] = 8; PS[4] = 17;
PS[5] = 16; PS[6] = 4; PS[7] = 4; PS[8] = 16; PS[9] = 16;
起初我试图访问这样的位(pc是我的程序计数器):
if(PS[pc][4] == 0) Z1 <= 0;
else Z1 <= 1;
但优化一直在修剪我的信号。后来我发现我需要新的注册来保留整个注册,然后我可以访问位。所以我做了这个:
reg [4:0] tempPS;
[...]
tempPS = PS[pc];
Z1 <= tempPS[4];
我的信号停止修剪,但现在优化想要修剪 tempPS,因为:
信号已分配但从未使用。这个未连接的信号将在优化过程中被修剪。
嗯 - 由于 pc 正在改变,使用 tempPS,我不知道这个错误究竟意味着什么,我该如何解决它。任何帮助表示赞赏。
【问题讨论】:
-
你确定它是3维的吗?
reg [4:0] PS[0:9];PS 是 5 位宽和 10 个位置深。不确定您的寻址方式是否正确,但PS[pc][4]正在访问一位,这是您想要的吗? -
您说:“嗯 - 随着 pc 的变化,使用 tempPS”。将值写入 tempPS 不是“使用”该变量。为防止此信号被修剪,必须在模块中的其他位置对其进行写入和读取。
标签: verilog fpga xilinx spartan