mikrocontroller.net

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


Autor: Hardware-Beschreiber (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jan M. (mueschel)
Datum:

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

Autor: Hardware-Beschreiber (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

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

Autor: Hardware-Beschreiber (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Hardware-Beschreiber:

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

Autor: Ottmar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Definier dein signal array mit
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.