Alter Schwede, ist ja wirklich Zeit mal wieder ins Forum zu posten.
1. Es ist kein Schwachsinn direkt FF in VHDL aufzunhemen, es gibt
etliche Fälle in der das Synthese nicht die gewünschte Hardware einbaut.
Zum Beispiel DDR-FF oder FF in die IO-PADzellen.
2. man kann die Ergebnisse nach XST, map oder par in VHDL oder in eine
lesbare EDIFF Netzliste zurückumwandeln, nennt sich Backannotion. Das
ist aber zur Analyse und Simulation gedacht aber nicht um diesen VHDL
wieder zur FPGA-Synthese,-implemetierung zur verwenden. Wenns
interessiert der soll mal das Tool netgen von Xilinx ausprobieren, oder
mgd2vhdl sowie ngdanno.
3. Was du suchst ist die direkte Instanziierung von FF, im Librarayguide
stehen alle die es gibt und Beispiele wie man diese in VHDL einbindet.
sieht dann etwa so aus
vor der entity (Bibliothek)
1 | LIBRARY unisim;
|
2 | USE unisim.ALL;
|
3 | USE unisim.VCOMPONENTS.OFDDRRSE;
|
in der architecture vor begin (dekleration)
1 | COMPONENT OFDDRRSE
|
2 | PORT(
|
3 | Q : OUT std_ulogic;
|
4 | C0 : IN std_ulogic;
|
5 | C1 : IN std_ulogic;
|
6 | CE : IN std_ulogic;
|
7 | D0 : IN std_ulogic;
|
8 | D1 : IN std_ulogic;
|
9 | R : IN std_ulogic;
|
10 | S : IN std_ulogic);
|
11 | END COMPONENT;
|
12 | ATTRIBUTE box_type OF OFDDRRSE: COMPONENT IS "PRIMITIVE";
|
13 |
|
14 |
|
15 | --synopsys translate_off
|
16 | FOR ALL : OFDDRRSE USE ENTITY unisim.OFDDRRSE;
|
17 | --synopsys translate_on
|
nach architecture (instanziierung)
1 | OFDDRRSE_inst : OFDDRRSE
|
2 | PORT MAP (
|
3 | Q => resetgate_DDRFF, -- Data output (connect directly to top-level port)
|
4 | C0 => clk_i, -- 0 degree clock input
|
5 | C1 => inv_clk, -- 180 degree clock input
|
6 | CE => '1', -- Clock enable input
|
7 | D0 => all_readout_signals(E_RG_POS), -- Posedge data input
|
8 | D1 => all_readout_signals(E_RG_NEG), -- Negedge data input
|
9 | R => '0', -- Synchronous reset input
|
10 | S => '0' -- Synchronous preset input
|
11 | );
|