Hallo,
versuche mich in VHDL fleißig weiter und möchte ein FIFO in mein vhdl
code einbauen. Ich habe für den Anfang als Eingang ein SWITCH (4 bit)
und am AUSGANG 4 LED die dann entsprechen leuchten sollen.
So,ich habe mir mittels FIFO GENERATOR (XILINX) 4 bit breit und 4 bit
lang erstellt. Ich habe dann den erstellten vhdl code in ein neues VHDL
MODUL kopiert.
Dann habe ich es in mein Hauptmodul mittels COMPONENT definiert und in
der ARCHITECTURE,-- PORT MAP die jeweiligen ein und ausgänge definiert
Meine Problem ist, was nun?
Ich möchte für den anfang daten einlesen und sie weiter geben. Muss ich
das jetzt noch selber definier und wurde dies in Core generator schon
erstellt und ich muss lediglich die Daten zuweisen.
Oder muss ich doch sagen mit steigender flanke und wenn read_en =1
dann....
Kann mir da jemand helfen?
Gruss
Der Coregen generiert ein File fifo_generator_ug175.pdf mit, das sollte
man sich mal durchlesen, da steht wirklich alles drinnen was man wissen
muss zu dem Teil...
Mit steigender flanke und wenn EN = 1 dann übernimmt er das signal in
dinx welches das din vom ist und mit fallender flanke und EN = 1 liest
er es in den Ausgang ??
Grundsätzlich musst du nur wissen :
wenn read_enable am FIFO anliegt und eine positive Taktflanke im FIFO
erkannt wird, dann werden die Daten 1 mal übernommen.
Der Rückweg sieht genauso aus :
Mit write_enable und Taktflanke liegen 1 Takt später bis zum nächsten
Abruf die Daten am Ausgang an.
Insofern hast du erstmal alles richtig gemacht, full, empty usw brauchst
du für erste Tests nicht zwingend beachten.
Zu spät...
in keinem Fall steigende und fallende Flanke benutzen, ansonsten sollte
das funktionieren.
Wenn du sicher gehen willst das die ausgelasen Daten stimmen, dann bau
dir einen "valid" port ein und übernimm die gelesenen Daten immer genau
dann, wenn valid='1'
Ich hab verwende ja für das ENABLE Signal ein Takt von 1 Hz, über einen
counter und für die clk 20 MHZ, und wollte für read und write das selbe
enable verwenden, geht das?
Und irgendwie gehts nicht so, kommt ne fehlermeldung....:(
Und mein code da oben, ich hab zwar den selben takt für rd_en und wr_en
aber eben 2 signale erzeugt....
Ich krieg so ein fehler
:NgdBuild:455 - logical net 'AUSGANG_3_OBUF' has multiple driver(s):
pin G on block XST_GND with type GND,
pin DOADO<3> on block
FIFO/BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.
cstr/
ramloop[0].ram.r/s6_noinit.ram/SDP.SIMPLE_PRIM9.ram with type
RAMB8BWER,
pin DOADO<2> on block
FIFO/BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.
cstr/
ramloop[0].ram.r/s6_noinit.ram/SDP.SIMPLE_PRIM9.ram with type
RAMB8BWER,