Hallo,
ich hab mir ein Adresszaehler mit 4 to 12 Demultiplexer mit VHDL
beschrieben. Der Adresszaehler zaehlt bis zum Overflow und gibt dann
einen Übertrag an den 4 to 12 Demultiplexer. Der 4 to 12 Demulitplexer
aktiviert die internen Blockrams über die Enableleitung.
Ich wollte gerne alle Data Outputs der einzelnen Blockrams miteinander
verbinden, weil nur jeweils ein Blockram zur Zeit aktiv ist. Ich
bekomme eine Errormeldung bei der Synthese. Muss ich wirklich noch ein
16 to 8 Demultiplexer fuer die Daten Pins an die Ouputs anklemmen oder
eine Tri State Buffer Stufe?
Soweit ich mich erinnern kann, liegt an den Datenausgängen der BRAMs
immer ein Signal an, auch wenn die enable Leitung auf '0' liegt
(einfach mal in der AppNote nachschauen, zB.
http://www.xilinx.com/bvdocs/appnotes/xapp130.pdf). Du müsstest also
den gemeinsamen Schreibzugriff verhindern, ein MUX leistet hier denke
ich mal gute Dienste. Mit Tristates muss man nicht erst anfangen, da
diese sowieso in Logik umgewandelt werden, da auf dem FPGA nur an den
I/O Pins echte Tristatetreiber zur Verfügung stehen.
Is ja ganz fix gemacht:
ja, das enable hat in dem Fall nur die Funktion, dass keine aktuellen
Daten an den Ausgang gelegt werden, sondern die alten Daten bleiben und
natürlich kein Schreibzugriff möglich ist. Ist aber kein wirkliches chip
enable...
T.M.
=============================
http://editthis.info/freefpga
=============================
Das enable dürfte sich auf den Write-Zugriff beziehen. Dort kann man
sich dann den MUX für die Daten spareb. Am Ausgang braucht man ein
output-enable mit Tristatefunktion. Das kommt aber auf dasselbe raus,
wie ein MUX.