Forum: FPGA, VHDL & Co. Core Generator für RAM benutzen


von Leon L. (leonelf)


Lesenswert?

Hallo!
Ich habe vor, auf den BlockRAM meines Spartan 6 zuzugreifen und habe 
rausgefunden, dass das mti den Cores geht. Ich habe mit dem ISE Webpack 
jetzt auch erfolgreich einen Core generiert, habe aber keine Ahnung, wie 
man jetzt drauf zugreift. Wenn ich die Core-Datei markiere, kann ich die 
Wrapper-Datei anzeigen, aber wie greife ich auf die in VHDL zu? Muss ich 
sie kopieren und als vhdl datei ins Projekt einfügen? Kann ich auf den 
BlockRAM auch anders zugreifen?


MFG Leon

von Achim S. (Gast)


Lesenswert?

Leon Loeser schrieb:
> Wenn ich die Core-Datei markiere, kann ich die
> Wrapper-Datei anzeigen

Du meinst das Instantiierungs-Template (*.vho), oder? Das ist in der Tat 
dazu gedacht, dass du die Deklaration und die Instantiierung in eine 
VHDL-Datei deines Projekts kopierst und dort so viele Instanzen des 
BlockRAM erzeugst, wie du benötigst.

Leon Loeser schrieb:
> Kann ich auf den
> BlockRAM auch anders zugreifen?

Wahrscheinlich schon. Du kannst es z.B. auch ganz ohne IP-Generator "von 
Hand" beschreiben. Aber was stört dich an der vorgesehenen Methode?

von Leon L. (leonelf)


Lesenswert?

ok, das core hat scheinbar ein "HDL functional model" und ein "HDL 
instantiation template" und die sind beide in verilog. wie kann ich die 
denn in vhdl instanzieren?

EDIT: ok, wenn man die preffered language auf vhdl stellt, macht er auch 
VHDL dateien^^

Aber wie "use" ich diese teile in meiner haupt vhdl datei?

: Bearbeitet durch User
von Z0idberg (Gast)


Lesenswert?

Einfach die Component aus dem generierten instanciation template (*.vho 
datei) in die vorgesehene *.vhd kopieren und port map machen ist das 
einfachste...

von Achim S. (Gast)


Lesenswert?

Leon Loeser schrieb:
> Aber wie "use" ich diese teile in meiner haupt vhdl datei?

So wie du auch jede andere component benutzt: du setzt die 
Komponentendeklaration in den Header, und du erzeugst im body die 
benötigten Instanzen und verbindest sie mit Signalen.

Hast du den Reichardt/Schwarz? -> Kapitel 7.2: Struktureller Entwurf mit 
Komponenten und Blöcken. In jedem anderen VHDL-Buch sollte es auch 
beschrieben sein.

von Leon L. (leonelf)


Lesenswert?

ich bin relativ neu in vhdl und dem ganzen fpga kram, deshalb hatte ich 
keine ahnung von components, sorry^^

Soviel ich jetzt verstanden habe, kopiere ich die "COMPONENT" bis "END 
COMPONENT" stelle in meiinen architecture header und lege nach dem 
"begin" das instantiation template hin. in dem ändere ich den "your 
component name" in was brauchbares und setze die passenden signale 
hinter die zuweisungspfeile (=>)?

von Achim S. (Gast)


Lesenswert?

richtig.

Und morgen gehst du in die Bücherei und holst dir ein brauchbares 
VHDL-Buch ;-)

von drama (Gast)


Lesenswert?

Welchen Vorteil soll es haben, für RAM explizit die 
herstellerspezifischen Primitiven zu verwenden? Das macht den Code nur 
unportabel. Probleme mit der Inferenz hat man bei sinnvoller allgemeiner 
Beschreibung von RAM nicht.

von Achim S. (Gast)


Lesenswert?

drama schrieb:
> Welchen Vorteil soll es haben, für RAM explizit die
> herstellerspezifischen Primitiven zu verwenden?

Für einen Anfänger, der sich noch mit der Instanziierung einer 
Komponente schwertut, ist die Nutzung des IP-Generators imho schlicht 
einfacher umzusetzen.

Die mangelnde Portierbarkeit stellt bei diesen Randbedingungen aus 
meiner Sicht auch keinen relevanten Nachteil dar - er ist wahrscheinlich 
einfach froh, wenn es auf seinem vorhandenen System läuft.

von berndl (Gast)


Lesenswert?

Achim S. schrieb:
> drama schrieb:
>> Welchen Vorteil soll es haben, für RAM explizit die
>> herstellerspezifischen Primitiven zu verwenden?
>
> Für einen Anfänger, der sich noch mit der Instanziierung einer
> Komponente schwertut, ist die Nutzung des IP-Generators imho schlicht
> einfacher umzusetzen.
>
> Die mangelnde Portierbarkeit stellt bei diesen Randbedingungen aus
> meiner Sicht auch keinen relevanten Nachteil dar - er ist wahrscheinlich
> einfach froh, wenn es auf seinem vorhandenen System läuft.

'drama' schrieb von Inferieren, nicht Instanziieren... Ein Blick in das 
Synthese-Guide des jeweiligen Tools/Herstellers zeigt, wie man das in 
purem VHDL oder Verilog machen kann. Das ist nur ein bisschen 
Copy&Paste...

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.