Ну я бы делал примерно так:
flck - некий клок системы, в домене которого находятся все сигналы модуля. Например 14 мгц.Код:process (flck) begin if (fclk'event and fclk = '1') begin if (clr_flag = '1') then rd_sig <= '0'; elsif (ram_rd = '1') then rd_sig <= '1'; end if; end end process;
При этом, дабы избежать метастабов, если сигналы clr_flag и ram_rd в другом клоковом домене, их бы нефигово пересинхрить на клок flck.
В общем проблему надо разделить на две:
1. (главная!) НИКОГДА не использовать выход комбинаторики как клок, а только как клок енабле, да и то желательно пересинхренный.
2. Пересинхривать любые сигналы другого клокового домена на текущий.
---------- Post added at 01:43 ---------- Previous post was at 01:41 ----------
Сорри, в вхдл могут быть ошибки, я в нем никогда не писал, езык для мну иностраннише.
---------- Post added at 01:44 ---------- Previous post was at 01:43 ----------
На уютном верилоге так:
Код:always @(posedge fclk) if (clr_flag) rd_sig <= 1'b0; else if (ram_rd) rd_sig <= 1'b1;




Ответить с цитированием