Vivado中定义寄存器宽度允许不从0开始

89 阅读1分钟

在利用xc7a35tfgg484-2进行实验时,希望得到一个1s的计数器,因此设置计数上限parameter CNT_MAX = 26'd5000_0000;

理论上讲5000_0000给到26位就足够了但是一直观察不到现象,通过ila检查初步判定是因为出现了溢出,将计数器上限改为2500_0000之后观察到了现象,在给到27位同时上限改为5000_0000后得到了预期的实验结果。

经过排查后找到了错误原因,在定义寄存器的时候,写成了reg [25:1] cnt_1s;再改为reg [25:0] cnt_1s;后整个程序正常工作,由此可以得出在定义寄存器宽度的时候是允许不从0开始的,Vivado不会对此进行报错,这一点需要注意。