A
ALuPin
Guest
Hi Mr Hulshoff,ALuPin wrote:
Is the change from s_wait to s_state1 performed
without any problems ? IMO SETUP and HOLD violations can erase
which under circumstances can lead to an unscheduled change.
Mr Hulshoff wrote:
No, it is not performed without problems. The signal l_enable_generate_ack
needs to be synchronized to the 30 MHz domain before using it. Otherwise
you can get very unexpected behaviour in your eventual chip.
ALuPin wrote
What possiblities do I have to avoid that ?
Any synchronization method should consume little amount of time.
Mr Hulshoff wrote
Clock the signal twice on the 30 MHz signal, and use that signal instead.
You can also opt for clocking three times, and use the 2nd and 3rd FF to do
edge detection.
thank you for your answer.
What do you mean by edge detection ? Do mean that I could sample the Clk_30
with Clk_90 to find out the falling edge time area of Clk_30?
process(Clk_90)
begin
if rising_edge(Clk_90) then
l_sample1 <= Clk_30;
l_sample2 <= l_sample1;
l_sample3 <= l_sample2;
end if;
end process;
process(l_sample2, l_sample3)
begin
l_center30 <= '0';
if ((l_sample2='0') and (l_sample3='1')) then
l_center30 <= '1';
end if;
-- l_center30 could be used to assign a flag in the 90MHz domain.
-- This flag can then be used in the 30MHz domain ?
end process;
Rgds
André