Forum: FPGA, VHDL & Co. Signale mit generate erzeugbar?


von Hardware-Beschreiber (Gast)


Lesenswert?

Hallo!

In VHDL gibt es ja die Möglichkeit, mittels einer generate-Anweisung 
eine zunächst dynamische Anzahl von Entitäten zu instantiieren. Das 
funktioniert soweit ganz gut. Aber:

Ist es auch möglich eine beliebige Anzahl n von Signalen auf ähnliche 
Weise zu generieren? Danach habe ich schon mehrmals vergeblich gesucht.
Z.B. würde ich gerne wenn n ein generischer Parameter ist, damit dann n 
Signale vom Typ std_logic_vector(BitWidths(n)-1 downto 0) erzeugen.

Wenn ich keinen Weg dafür finde, muß ich alle n Signale hintereinander 
in ein Signal stecken, aber das ich natürlich sehr unpraktisch. 
Besonders, um ein einzelnes Signal beim simulieren zu betrachten.

Ich würde mich sehr freuen, wenn mir hierbei jemand weiterhelfen kann 
und bedanke mich im voraus,

viele Grüße


Hardware-Beschreiber

von Jan M. (mueschel)


Lesenswert?

Du kannst einen array-Typ definieren und die Größe des arrays mit n 
festlegen.

von Hardware-Beschreiber (Gast)


Lesenswert?

Hallo Jan!

Ja, so ist es ja bis jetzt. Aber ich will mit der neuen Lösung den 
Vektoren unterschieliche Bitbreiten zuweisen, die z.B. aus einer Datei 
ausgelesen werden. Dazu müßte ich Signale ähnlich wie Entitäten 
generieren können, weiß aber nicht ob und wie das geht.

Gruß


Hardware-Beschreiber

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Ich meine das geht nicht, du kannst aber glaube ich mit 'alias' einzelne 
Teile eines Vektor neu "benennen".

von Hardware-Beschreiber (Gast)


Lesenswert?

Das habe ich befürchtet. Oder kennt doch noch jemand einen Weg?

alias kann man wahrscheinlich auch nur manuell verwenden, also nicht 
generisch N Signale mit sig1 ... sigN ausweisen?

Gruß


Hardware-Beschreiber

von Duke Scarring (Gast)


Lesenswert?

@Hardware-Beschreiber:

Vielleicht möchtest Du records verwenden? Die lassen sich zwar auch 
nicht generisch erzeugen, aber wenn in der entity nur noch clk, rst, 
module_in, module_out auftauchen, wird es (zumindest an dieser Stelle) 
übersichtilich.

Modelsim kennt dann im waveform auch die einzelnen record-Elemente ohne 
das man sie explizit angeben müsste.

Duke

von Duke Scarring (Gast)


Lesenswert?

@Hardware-Beschreiber:

P.S.: Es bleibt Dir auch immer noch freigestellt mit einer 
Programmier/Skriptsprache Deiner Wahl einen Codegenerator zu erstellen.

von Ottmar (Gast)


Lesenswert?

Definier dein signal array mit
1
std_logic_vector(MaxBitWidths-1 downto 0)

Bei der instantierung kannst du dann folgendes verwenden:
   port => sig_array(n)(BitWidths(n)-1 downto 0)

Gruß,
Ottmar

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.