Vhdl 致命错误:达到迭代限制10000
两周多来我遇到了一个问题,我正在编程artix 7 FPGA。过程很简单:Vhdl 致命错误:达到迭代限制10000,vhdl,fpga,fatal-error,xilinx,vivado,Vhdl,Fpga,Fatal Error,Xilinx,Vivado,两周多来我遇到了一个问题,我正在编程artix 7 FPGA。过程很简单: 串行模块接收2个比特流(2字节) 解复用模块根据这2个字节启用阵列pufen中的2位 当我将解复用模块添加到whoe设计中时,在模拟过程中,我收到以下错误: 致命错误:达到迭代限制10000 demux的代码如下: PUF_STATE_PROCESS:process(clk,uart_read,PUF_signal,UART_READ_FLAG) begin if (rising_edge(clk))
- 串行模块接收2个比特流(2字节)
- 解复用模块根据这2个字节启用阵列pufen中的2位
PUF_STATE_PROCESS:process(clk,uart_read,PUF_signal,UART_READ_FLAG)
begin
if (rising_edge(clk)) then
if (uart_read="11111111") then-- this means reset
stop_s<='0';
puf_signal<=initial;
reset_s<='1';
LED_S<="1111";
else
case puf_signal is
When initial=>
reset_s<='1';
puf_en_s<=(others=>'0');
LED_S<="0001";
--if UART_READ_FLAG='1' then
if uart_read/="11111110" then
else
stop_s<='0';
puf_signal<=ch_i;
end if;
-- end if;
When ch_i =>
if UART_READ="11111110" or UART_READ="11111111" then
else
ch_i_s<=(uart_read);
puf_signal<=ch_j;
LED_S<="0010";
end if;
when ch_j=>
if UART_READ="11111110" or UART_READ="11111111" or uart_read=ch_i_s then
else
ch_j_s<=(uart_read);
mux_en_s_j<=uart_read;
puf_signal<=start;
timer_s<=(others=>'0');
LED_S<="0011";
end if;
when start=>
reset_s<='0';
if timer_start<10000 then
mux_en_s_i<=ch_i_s;
mux_en_s_j<=ch_j_s;
timer_start<=timer_start+1;
for i in 0 to (RO_Number) loop
if i=ch_i_s then
puf_en_s(i)<='1';
elsif i=ch_j_s then
puf_en_s(i)<='1';
else
puf_en_s(i)<='0';
end if;
end loop;
LED_S<="0100";
else
puf_signal<=finish;
timer_start<=0;
LED_S<="0101";
end if;
when finish=>
if timer_s<timer_max_value then
timer_s<=timer_s+'1';
puf_en_s<=(others=>'0');
LED_S<="0100";
else
stop_s<='1';
timer_s<=(others=>'0');
LED_S<="0111";
puf_signal<=initial;
end if;
end case;
end if;
end if;
end process;
PUF_状态_进程:进程(clk、uart_读取、PUF_信号、uart_读取标志)
开始
如果(上升沿(clk)),则
如果(uart_read=“11111111”),那么——这意味着重置
stop_s主要问题不在该代码中。它实际上与环形振荡器相关。在环形振荡器中存在零延迟的组合环路,它导致了该问题主要问题不在该代码中。它实际上与环形振荡器相关。在环形振荡器中存在零延迟的组合环路延迟并导致此问题什么是R0_编号
?这是一个等于63I的常量值,我也有关于串行模块环路的警告,但当我停用demux模块时,它立即工作,没有出现任何令人震惊的错误。只需在灵敏度列表中不需要clk。如果您想提供一个最小的实体/体系结构对和一个展示问题的测试台,有人可能会看一看。可能这甚至不是问题的根源(例如,通过任何更改,您没有忘记clk中时钟生成的“not”,没有用于demux的端口(所有声明),知道它的输出在哪里使用以及如何使用,问题似乎不在这个过程中。只有一个循环语句,它有一个for迭代方案。没有不在时钟边缘的赋值(没有组合循环)。请提供一个。这可能是由于环形振荡器中的零延迟赋值造成的(组合反馈)。毫不迟疑,您会遇到增量周期限制。puf_en_s在哪里使用?什么是R0_编号
?它是一个常量值,等于63I。我还警告串行模块的环路,但当我停用解复用模块时,它立即工作,看起来没有任何令人担忧的错误。只是,除了clk之外,您不需要其他灵敏度列表。如果您想提供一个最小的实体/架构对和一个显示问题的测试台,有人可能会看一看。这可能不是您问题的根源(例如,通过任何更改,您没有忘记clk中时钟生成的“not”,没有用于解复用的端口(所有声明),知道它的输出在哪里使用以及如何使用,问题似乎不在这个过程中。只有一个循环语句,它有一个for迭代方案。没有不在时钟边缘的赋值(没有组合循环)。请提供一个。这可能是由于环形振荡器中的零延迟赋值造成的(组合反馈)。你会毫不迟疑地进入delta循环极限。puf_en_在哪里使用?