我正在研究必须在 clk 的每个上升沿添加 4 的程序计数器:
代码:
if_CounterSum <= MemAddr + 4;
process (Clk, Reset)
begin
if Reset = '1' then
MemAddr <= (OTHERS => '0');
elsif rising_edge(Clk) then
MemAddr <= if_CounterSum;
end if;
end process;
在 ISIM 中进行仿真时,
After Reset is set to 0:
Initial state:
MemAddr = 0 (0000)
if_CounterSum = 4 (0100)
First CLK rising_edge:
MemAddr = X (0X00)
if_CounterSum = X (XXXX)
我已经在这个“简单”的事情上工作了几个小时,我尝试过:
- 将 +4 线也更改为同步(进入流程),但问题仍然存在。
- 其他一些没用的东西。
我怎样才能修复那个X?我已经测试了其他数字而不是 4,并且我猜想 if_CounterSim 中的所有 '1' 在分配后都转换为 'X'。