在利用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不会对此进行报错,这一点需要注意。