Forum: FPGA, VHDL & Co. Dual Port RAM mit unterschiedlicher Wortbreite


von Michael (Gast)


Lesenswert?

Der XST-Userguide enthält diverse Beispiele, wie man ein Block-RAM mit 
VHDL beschreiben soll. Ich bräuchte nun ein RAM, wo die Daten z.B. 8 Bit 
breit geschrieben werden, und dann als z.B. als 32 Bit oder noch 
breitere Blöcke ausgelesen werden. Sozusagen ein 
seriell-zu-parallel-RAM.

Mit dem Core-Generator kann man sowas problemlos bauen, doch wie 
beschreibt man das (am besten) in VHDL?

von Michael (Gast)


Lesenswert?

Oder vielleicht noch anders gefragt: Wie implementiert XST ein solches 
RAM?

von Rudolph (Gast)


Lesenswert?

Michael schrieb:
> Mit dem Core-Generator kann man sowas problemlos bauen, doch wie
> beschreibt man das (am besten) in VHDL?

Im XST User Guide für Spartan-6 ist ein "Asymmetric Port RAM VHDL Coding 
Example" das genau Deinen Wünschen entspricht. Das ist WIMRE auch in den 
Templates in ISE enthalten.

Michael schrieb:
> Oder vielleicht noch anders gefragt: Wie implementiert XST ein solches
> RAM?

Im Synthesereport wird unter "Advanced HDL Synthesis" ausgegeben was XST 
aus Deiner Beschreibung erkannt und synthetisiert hat. Im User Guide 
sind entsprechende Beispiele zu sehen.

von ast (Gast)


Lesenswert?

Michael schrieb:
> Wie implementiert XST ein solches
>
> RAM?

da geht es doch nur darum, wie die decoder und encoder vor den RAM 
Zellen komfiguriert/zusammengeschaltet werden müssen. die ram zellen 
tangiert das gar nicht

von Peter M. (Gast)


Lesenswert?

Hallo zusammen,

ich klinke mich mal in den Thread mit ein, da ich ein ähnliches Problem 
habe. Ich möchte ebenfalls ein asymetrisches RAM in VHDL Beschreiben 
(Write Port doppelt so groß, wie Read Port), jedoch für einen Lattice 
Baustein.
Das "Asymmetric Port RAM VHDL Coding Example" von Lattice habe ich mal 
ausprobiert, jedoch wurde es vom Lattice Diamond nicht als Blockram 
synthetisiert.

Hat jemand von Euch noch einen Tip, wie ich ein Asymetrisches Ram so 
beschreibe, dass es auch vom Lattice Diamond als Blockram erkannt wird?

Viele Grüße,
Peter

von franke (Gast)


Lesenswert?

Nimm IPExpress und generier Dir den Core, dann bist du sicher.


Gruß

von Peter M. (Gast)


Lesenswert?

Hallo Franke,

Das habe ich schon getan, funktioniert auch einwandfrei, hinsichtlich 
der portierbarkeit ziehe ich jedoch, falls möglich, eine VHDL 
Beschreibung vor.

Wer weiß schon, ob mein aktuell generierter Core noch mit der Diamond 
Version in 3 Jahren kompatibel ist. Außerdem tut man sich beim Portieren 
auf andere Bausteine ggf leichter, wenn man eine VHDL Beschreibung hat.

von franke (Gast)


Lesenswert?

Hm... ich würden den Core immer bevorzugen, aber das sind Philosphien.

Denke das wird nur gehen wenn du ein Symetrische RAM (größere 
Breite)nimmst und die "asymetrie" einfach über die Adressierung machst.
Nichts anders wird der Core-Generator machen.

Gruß

von Lowtzow .. (lowtzow)


Lesenswert?

Rudolph schrieb:
> Im XST User Guide für Spartan-6 ist ein "Asymmetric Port RAM VHDL Coding
> Example" das genau Deinen Wünschen entspricht. Das ist WIMRE auch in den
> Templates in ISE enthalten.

möchte benfalls ein "asymmetric port ram" verwenden.
kann ich das vhdl coding example für den virtex6 auf für den virtex5 
verwenden? oder hat es einen grund, wieso das asymmetric port ram im 
"User Guid for Vitrex5" nicht beschrieben wird?!

mfg
alex

von Duke Scarring (Gast)


Lesenswert?

Lowtzow .... schrieb:
> möchte benfalls ein "asymmetric port ram" verwenden.
> kann ich das vhdl coding example für den virtex6 auf für den virtex5
> verwenden? oder hat es einen grund, wieso das asymmetric port ram im
> "User Guid for Vitrex5" nicht beschrieben wird?!
Du kannst das Beispiel zumindest ausprobieren. Prüfe aber im 
Synthesereport, was er draus macht.

Duke

von J. S. (engineer) Benutzerseite


Lesenswert?

Ich würde einfach mit CoreGen arbeiten und für den 6er konstruieren. Im 
Allgemeinen Fall setzt man vor/nach das BRAM einen einfachen 
Multiplexer/Decoder, der die Adressen generiert und nimmt n parallele 
RAMs. Ob das Tool das immer erkennt, ist eine andere Sache. Xilinx ist 
da in der Regel erfolgreich.

von Lowtzow .. (lowtzow)


Lesenswert?

Duke Scarring schrieb:
> Du kannst das Beispiel zumindest ausprobieren. Prüfe aber im
> Synthesereport, was er draus macht.

ok, für die Nachwelt, das VHDL Coding Example läuft nicht mit dem 
Virtex-5. (Sicherheitshalber selbes File für Virtex 6 synt. => ok )

von Duke Scarring (Gast)


Lesenswert?

Lowtzow .... schrieb:
> ok, für die Nachwelt, das VHDL Coding Example läuft nicht mit dem
> Virtex-5. (Sicherheitshalber selbes File für Virtex 6 synt. => ok )
Jepp. Sowas hatte ich auch mal mit einem byte-wise-enable RAM. Auf einem 
Virtex5(?) ging es auf dem Spartan3 nicht.

Duke

von Jonas B. (jibi)


Lesenswert?

>byte-wise-enable RAM
das unterstützt der spartan3 auch nicht, wird zwar im core-generator 
dialog angezeigt funzt aber nicht.

gruß jonas

von J. S. (engineer) Benutzerseite


Lesenswert?

Jonas Biensack schrieb:
> das unterstützt der spartan3 auch nicht, wird zwar im core-generator
> dialog angezeigt funzt aber nicht.

interessant! Ausprobiert?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.