Simulation 16bit FIFO

OP #1476138
Lesenswert?

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!!!
Angehängte Dateien:
Gast #1476231
Lesenswert?

># ** Warning: (vsim-3473) Component instance "fifo : fifo_16" is not bound.
>Könnte eine Warnung im Modelsim Schuld daran sein?


Ja definitiv! Du solltest herausfinden, wieso die Komponente nicht 
gefunden wird. Hast du die richtige Bibliothek eingebunden ?


SuperWilly
OP #1476278
Lesenswert?

Hallo,
1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
use IEEE.STD_LOGIC_ARITH.ALL;
4
use IEEE.STD_LOGIC_UNSIGNED.ALL;
5

6
---- Uncomment the following library declaration if instantiating
7
---- any Xilinx primitives in this code.
8
library UNISIM;
9
use UNISIM.VComponents.all;

So sieht es momentan aus, sollte meiner Meinung nach nichts fehlen, 
sonst würde er doch auch schon bei der Synthese meckern, oder?

Wie wäre denn der korrekte Weg, den IPCore des Fifos einzubinden bzw. 
aufzurufen? Denn bisher habe ich es ja nur per Hand gelöst... gibt es da 
eine "sicherere" Methode ähnlich dem "View HDL Instantiation
Template", denn diese Option ist ja hier leider nicht verfügbar.

Vielen Dank!
Gast #1476296
Lesenswert?

> ... gibt es da eine "sicherere" Methode ähnlich dem "View HDL Instantiation
> Template", denn diese Option ist ja hier leider nicht verfügbar.

Benutzt du ein altes ISE?

Zumindest bei ISE 11 gibt es nämlich das Instantiation Template auch für 
FIFOs.
AFAIR wurde das .vho file bei früheren Versionen zwar im 
Projektverzeichniss angelegt, aber nur nicht im ISE verlinkt.

Gruß
Gast #1476553
Lesenswert?

Hallo zusammen!

Hatte das Problem auch letztens :-) Hast du den externem Coregen 
benutzt? Dann ist der korrekte Weg (zumindest unter ISE 11.x) in deinem 
Projekt "add copy of source" zu wählen und dann das .xco file. Der Rest 
wird dann automatisch kopiert.
Hoffe das hilft weiter.

Gruß
Cpt

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren