Moin,
da möchte man es richtig machen... und die Synthese (Spartan-6, ISE
12.3) haut mir die doppelten FF wech. :-(
Fall 1: So wird "q_LC_sync0" von der Synthese eliminiert:
1 | process(FC_Clk0_in)
|
2 | begin
|
3 | if( FC_Clk0_in'event and FC_Clk0_in = '1' ) then
|
4 | q_LC_sync0 <= LC_in_i;
|
5 | LC_sync0 <= q_LC_sync0;
|
6 | end if;
|
7 | end process;
|
Fall 2: So nicht:
1 | process(FC_Clk0_in)
|
2 | begin
|
3 | if( FC_Clk0_in'event and FC_Clk0_in = '1' ) then
|
4 | if( FC_Reset_in = '1' ) then
|
5 | q_LC_sync0 <= '1';
|
6 | LC_sync0 <= '1';
|
7 | else
|
8 | q_LC_sync0 <= LC_in_i;
|
9 | LC_sync0 <= q_LC_sync90;
|
10 | end if;
|
11 | end if;
|
12 | end process;
|
Warum das denn bitte?
Fall 2 geht aus anderen Design-Gründen nicht, ich will auf diesen
Signalen keinerlei Reset, aber unbedingt das doppelte syncen.
Das RTL-Synthese Schematic zeigt in Fall 1 noch q_LC_sync, das
"Technology-Schematic" nicht mehr.
Wie bekomme ich Fall 1 (also ohne Reset) synthetisiert, ohne dass er mir
q_LC_sync wegoptimiert?
Danke,
X