P
patrick.melet
Hi all,
I would like lo load a signal on only an asynchronous RESET.
I wrote that :
process(LOAD)
begin
if LOAD='1' then
sig_2 <= sig_1;
end if;
end process;
But on RTL viewer I see a DFF with LOAD on the CLOCK pin, I don't want
that
Second I wrote :
process (LOAD,CLK)
begin
if LOAD='1' then
sig_2 <= sig_1;
elsif rising_edge (CLK) then
sig_3 <= (others=>'0');
end if;
end process;
Now the LOAD signal is on the ENABLE of the DFF and it inffers a LATCH
!
And I don't want to write that :
process (RST,CLK)
begin
if RST ='1' then
sig_2 <= (others=>'0');
elsif rising_edge (CLK) then
if LOAD ='1' then
sig_2 <= sig_1;
end if;
end if,
end process;
Because on timing analysis, my sig_2 signal is on the path under the
CLK signal and I don't want that
I tried to say to Quartus that sig_1 => sig_2 is a multicyle timing but
I have warning because sig_2 go to a filter
with one multiplier and one adder (combinational)
So I write that
process (RST,LOAD)
begin
if RST='1' then
sig_2 <= (others=>'0');
elsif rising_edge(LOAD) then
sig_2 <= sig_1;
end if;
end process;
And defined LOAD like a slowly clock... and I don't have warning but I
don't find that very clean..
Do you have suggestions ?
thanks
I would like lo load a signal on only an asynchronous RESET.
I wrote that :
process(LOAD)
begin
if LOAD='1' then
sig_2 <= sig_1;
end if;
end process;
But on RTL viewer I see a DFF with LOAD on the CLOCK pin, I don't want
that
Second I wrote :
process (LOAD,CLK)
begin
if LOAD='1' then
sig_2 <= sig_1;
elsif rising_edge (CLK) then
sig_3 <= (others=>'0');
end if;
end process;
Now the LOAD signal is on the ENABLE of the DFF and it inffers a LATCH
!
And I don't want to write that :
process (RST,CLK)
begin
if RST ='1' then
sig_2 <= (others=>'0');
elsif rising_edge (CLK) then
if LOAD ='1' then
sig_2 <= sig_1;
end if;
end if,
end process;
Because on timing analysis, my sig_2 signal is on the path under the
CLK signal and I don't want that
I tried to say to Quartus that sig_1 => sig_2 is a multicyle timing but
I have warning because sig_2 go to a filter
with one multiplier and one adder (combinational)
So I write that
process (RST,LOAD)
begin
if RST='1' then
sig_2 <= (others=>'0');
elsif rising_edge(LOAD) then
sig_2 <= sig_1;
end if;
end process;
And defined LOAD like a slowly clock... and I don't have warning but I
don't find that very clean..
Do you have suggestions ?
thanks