Hallo zusammen,
ich bin bei meinem Projekt auf einen merkwürdigen Fehler gestoßen.
Ich habe in meinem Design ein FIFO eingebunden, welches über den Ausgang
eines Schieberegisters gefüttert wird. Immer wenn das Schieberegsister 8
Schiebeoprationen durchgeführt hat, wird ein Ausgang namens "FULL"
geschaltet der signalisiert, jetzt sind 8 neue bits vorhanden und zum
Auslesen bereit. Das geschieht zwei Mal parallel und die Ausgänge der
beiden SRs ergeben dann den 16bit Eingang des FIFOs.
Der Eingang des FIFOs (write) wird dann mit eben diesem FULL Signal
getaktet, dass quasi immer 16bit neue Daten ins FIFO geschoben werden.
Der Ausgang des FIFOs wird extern getaktet und unterscheidet sich vom
Eingangstakt. Das FIFO dient also mehr oder weniger nur der
Synchronisation der Eingangs- und Ausgangsseite.
Nun habe ich versuchsweise den RD_EN und WR_EN dauerhaft mittels zweier
Konstanten auf '1' gelegt, weil am Ausgangs des FIFOs nix anliegt.
1 | constant FIFO_RD_EN : std_logic := '1';
|
2 | constant FIFO_WR_EN : std_logic := '1';
|
Aber selbst mit dieser Maßnahme werden beide Signale in der Simulation
unter Modelsim XE auf 0 gelegt.
Wie kann das sein, wenn ich beide Signale doch auf hart '1' gelegt habe?
Könnte eine Warnung im Modelsim Schuld daran sein?
1 | # ** Warning: (vsim-3473) Component instance "fifo : fifo_16" is not bound.
|
Den Testbench habe ich im ISE erstellen lassen und meine Eingangssignale
eingestellt.
Den FIFO habe ich via CoreGen erstellt, das daraus resultierende .xco
File habe ich von Hand (weil hier die Option "View HDL Instantiation
Template" nicht verfügbar ist, wie zum Beispiel bei einem DCM)
eingebunden.
1 | COMPONENT FIFO_16
|
2 | port (
|
3 | din: IN std_logic_VECTOR(15 downto 0);
|
4 | rd_clk: IN std_logic;
|
5 | rd_en: IN std_logic;
|
6 | rst: IN std_logic;
|
7 | wr_clk: IN std_logic;
|
8 | wr_en: IN std_logic;
|
9 | dout: OUT std_logic_VECTOR(15 downto 0);
|
10 | empty: OUT std_logic;
|
11 | full: OUT std_logic
|
12 | );
|
13 | END COMPONENT;
|
14 |
|
15 | Fifo : FIFO_16 PORT MAP (
|
16 | din => DATA_IN_FIFO,
|
17 | dout => DATA_OUT_FIFO,
|
18 | rd_clk => PCLK,
|
19 | rd_en => FIFO_rd_en,
|
20 | wr_clk => FULL,
|
21 | wr_en => FIFO_wr_en,
|
22 | rst => RESET,
|
23 | empty => FIFO_empty,
|
24 | full => FIFO_full
|
25 | );
|
VIELEN DANK!!!