语句不可合成,因为它在NOT(clock-edge)条件下不保存其值

时间:2019-01-07 14:33:37

标签: vhdl clock sequential synthesis

语句不能合成,因为它在NOT(时钟沿)条件下不保持其值

尝试在u_txack边缘复位=> 0信号u_txreq并在CLK边缘设置=> 1信号

process (CLK, u_reset_n, u_txack)
begin
  if (u_reset_n='0')then
    u_txreq<='0';
  elsif rising_edge(CLK) then 
    u_txreq<='1';
  elsif rising_edge(u_txack) then
    u_txreq<='0';   
  end if;
end process;

enter image description here

2 个答案:

答案 0 :(得分:2)

要使HDL代码顶部可合成,目标库中必须存在一些硬件,以实现所请求的功能。

目前不存在同时支持的硬件:
1 /在低电平有效信号下同步重置a。 (if (u_reset_n='0')
2 /在上升沿(elsif rising_edge(CLK))触发
3 /在第二独立上升沿触发。 (elsif rising_edge(u_txack)

您必须重新编写代码以仅使用一个时钟上升沿或下降沿。

答案 1 :(得分:0)

通过同步CLK查看我的信号同步异步u_txack:

if rising_edge(CLK) then 
            count<=count+B"00000001";                               
            n1_txack <= u_txack;
            if( n1_txack='0' AND u_txack='1')
                then
                u_txreq<='0';               
                count<=B"00000000";
            end if;             
            if (count=B"00000010") then
                u_txreq<='1'; 
            end if;                 
    end if;