оператор не является синтезируемым, поскольку он не содержит своего значения в условии NOT (clock-edge) - PullRequest
0 голосов
/ 07 января 2019

оператор не является синтезируемым, так как он не содержит своего значения в условии NOT (clock-edge)

Попробуйте сбросить => 0 сигнал u_txreq на краю u_txack и установить => 1 его на краю CLK

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 голосов
/ 08 января 2019

Посмотрите на синхронизацию сигналов my async u_txack с синхронизацией CLK:

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;
0 голосов
/ 07 января 2019

Для того, чтобы код HDL мог быть синтезирован, в целевой библиотеке должно быть какое-то оборудование, которое реализует запрошенную функцию.

На данный момент не существует оборудования, которое одновременно поддерживает:
1 / Сбросить синхронно при активном низком сигнале. (if (u_reset_n='0'))
2 / Триггеры по переднему фронту (elsif rising_edge(CLK))
3 / Запуск по второму независимому переднему фронту. (* 1 010 *). * * +1011

Вы должны переписать свой код, чтобы использовать только ОДИН восходящий или падающий фронт такта.

...