mikrocontroller.net

Forum: FPGA, VHDL & Co. VHDL: Array mit verschiedenen Datentypen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Alexander (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ich habe folgendes Problem:

ich möchte eine Tabelle schreiben die die Ausgangssignale eines 
Automaten speichert. Da die Ausgangssignale verschiedene Datentypen 
haben(Teilweise Aufzählungstypen, teilweise std_logic oder 
std_logic_vector) fällt mir das etwas schwierig, habe schon rumgegoogelt 
und probiert, mit records rumprobiert aber bekomme es grade nicht hin. 
Vielleicht könnt ihr mir ja weiterhelfen. Eigentlich sollte es aber 
nicht so schwierig sein.

Frage 1:
Zunächst mal, wie erstelle ich denn einen Datentyp der verschiedene 
andere Datentypen enthält? Also quasi ein 1-dimensionales Array mit 
verschiedenen Datentypen a la:

Typen die ich davor definiert habe:
type auzaehlungstyp1 is (a,b,c)
type auzaehlungstyp2 is (x,y,z)

neuer_Datentyp soll so aufgebaut sein:
(aufzählungstyp1, auzaehlungstyp2, std_logic, std_logic_vector(…))

sodass man sowas hier machen kann:
variable out1,out2,out3: neuer_Datentyp;

out1  :=(a,x,'1', "10101")
out2 :=(a,z,'1', "10101")
out3 :=(c,x,'1', "10101")

Das würde mir schon viel helfen.

Frage 2:
Dann möchte ich ne 2D-Tabelle/Array machen die sich aus Zuständen 
(state_type) und neuer_Datentyp zusammensetzt.

type state_type(state1, state2, state3)

Einträge der Tabelle würden also z.Bsp.so aussehen:
state1 out1
state2 out2
state3 out3

bzw:
state1 (a,x,'1', "10101")
state2 (a,z,'1', "10101")
state3 (c,x,'1', "10101")

Gibt's da ne Möglichkeit das übersichtlich hinzubekommen?
Zur Not bekomme ich das was ich machen muss auch ohne Tabelle hin, von 
dem her Tipps wie ich das ohne Tabelle/Array machen kann brauche ich 
dann keine, will nur wissen ob das geht.

Autor: Lothar M. (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alexander schrieb:
> Also quasi ein 1-dimensionales Array mit verschiedenen Datentypen a la:
Such mal nach "record"...
http://vhdl.renerta.com/mobile/source/vhd00055.htm

> sodass man sowas hier machen kann:
> variable out1,out2,out3: neuer_Datentyp;
Ein Tipp: vergiss und meide Variablen am Anfang deiner VHDL-Karriere. 
Sie sind nicht das, was du von C her kennst. Und auch der Rest tut nicht 
das, was du von C her kennst...

Autor: Vancouver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alexander schrieb:
> Gibt's da ne Möglichkeit das übersichtlich hinzubekommen?

Kommt drauf an, was du unter übersichtlich verstehst. Es gibt in VHDL 
keine Tabellen wie in Python. Du kannst einen neuen Record-typ 
definieren, der jeweils ein Field für state_type und neuer_Datentyp 
enthält und davon dann viele in ein Array packen.

Und ich hoffe mal ganz stark, dass wir hier von einer Testbench oder 
einem reinen Simulationsmodell reden und nicht von einem 
Hardwaredesign...

Autor: Markus F. (mfro)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Du suchst nicht zufällig nach dem hier: 
https://www.gaisler.com/doc/vhdl2proc.pdf ?

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.

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