Forum: FPGA, VHDL & Co. VHDL/ mehrere *.vhd in einem Projekt


von Toni M. (Firma: Private) (toggle2)


Lesenswert?

Hallo,

ich möchte mehrere *.vhd Dateien in einem Projekt haben. Dabei möglichst 
auch innerhalb der einzelnen Dateien lokale Variablen und Globale 
Variablen(die mit den Anderen Dateien ausgetauscht werden sollen) 
ermöglichen.

Ist das mit VHDL überhaupt möglich und wenn wie? Ich kenne das bisher 
nur von C...

von Klaus F. (kfalser)


Lesenswert?

Toni Müller schrieb:
> Ist das mit VHDL überhaupt möglich und wenn wie? Ich kenne das bisher
> nur von C...

Möglich ist es im Prinzip schon, aber soviel ich weiss in der Synthese 
nicht unterstützt und absolut nicht notwendig.

VHDL funktioniert komplett anders als C, die Schnittstellen sind immer 
die Port-Signale der Entities.

von Toni M. (Firma: Private) (toggle2)


Lesenswert?

Naja, ich möchte halt Zähler in eine andere Datei auslagern, damit der 
Quelltext etwas übersichtlicher wird. Habe mitlerweile ca. 1000 Zeilen 
und da wird man schon mal was durcheinander, wenn man die ständig hoch 
und runterscrollen muss, um was zu finden.

Besteht da denn wirklich keine Möglichkeit?

von Andreas B. (Firma: www.collion.de) (bergy) Benutzerseite


Lesenswert?

Hallo Toni,

dann bau Dir eine Komponente (component).
Die bekommt dann die notwendigen Inputs (clk,reset,clr oder was auch 
immer) und den Zaehlervector als Ausgang.

Die hohe Kunst wirds dann, wenn Du dir diese Komponente dann so 
schreibst dass Sie parametrisierbar wird... (Bitbreite etc.).
Damit baust Du Dir dann einen Baukasten zusammen, auf den Du immer 
wieder zurückgreifen kannst...

Gruß

Andreas

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Naja, ich möchte halt Zähler in eine andere Datei auslagern
Du lagerst in VHDL einzelne funktionelle Komponenten in andere Dateien 
aus. Allerdings ist es nicht sinnvoll, schon einen Zähler als 
eigenständige Komponente anzusehen.

> Habe mitlerweile ca. 1000 Zeilen
Was wird in den Zeilen beschrieben?
Wie könntest du das in sinnvolle Module umpacken (mit einer 
übersichtlichen Anzahl Signalen am Port)?

Du hast offenbar noch einen recht ausschweifenden Beschreibungsstil. 
Hast du das schon mal genauer angeschaut: 
Beitrag "Quelltext verkürzen VHDL"

Oder du machst die Datenübergabe mit Records: 
Beitrag "Re: Datei-struktur und Benamung bei der VHDL Entwicklung".
Aber das ist schon nicht mehr so trivial...

von Klaus F. (kfalser)


Lesenswert?

Toni Müller schrieb:
> Besteht da denn wirklich keine Möglichkeit?

Dir ist wirklich zu empfehlen, ein Buch über VHDL zu lesen.
Die Strukturierung bei einem VHDL Projekt ist komplett unterschiedlich 
zu C und sogar bei C ist die Verwendung von globalen Veriablen am Besten 
auf ein Minimum zu reduzieren.

Nimm das Ganze als Chance Dein Projekt zz strukturieren. Jede Entity 
bekommt von außen genau die Signale, die sie zum Arbeiten braucht und 
gibt entsprechende Signale zurück.
Jedes Signal wird somit nur an genau einer Stelle erzeugt, und an 
verschiedenen Stellen verwendet.
Ein "Schreiben" auf ein globales Signal an mehreren Punkten des Projekts 
ist sowieso ein Designfehler (außer für Testbenches).

von Toni M. (Firma: Private) (toggle2)


Lesenswert?

Lothar Miller schrieb:
> Du hast offenbar noch einen recht ausschweifenden Beschreibungsstil.
> Hast du das schon mal genauer angeschaut:
> Beitrag "Quelltext verkürzen VHDL"

ich werd das jetzt mal mit component versuchen. Hab da auch was in einem 
Buch zu gefunden.
Ich habe mir deine Tipps schon angeschaut und alles umgesetzt, außer das 
mit dem array, da bin ich noch nicht ganz hintergestiegen...

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Toni Müller schrieb:
> außer das mit dem array, da bin ich noch nicht ganz hintergestiegen...
Lass dir dafür mal noch Zeit. Mit dem Link meinte ich auch eher die 
Aufteilung in einzelne Komponenten...

> Hab da auch was in einem Buch zu gefunden.
Dazu empfehle ich den Beitrag "VHDL-Buch f. Einsteiger"

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.