www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Vektoren variabler Breite?


Autor: Ben (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich hab mal ein nettes Problem für euch:

ich habe mehrere Inputs vom Typ std_logic_vector und möchte die weiter 
verarbeiten. Das Problem dabei ist, dass die Vektoren variable Breiten 
haben sollen, also kann ich nicht irgendwie eine feste Begrenzung im 
Stile von "(7 downto 0)" machen.
Leider möchten sowohl Quartus als auch Modelsim eine Festlegung der 
Grenzen und geben ohne diese eine entsprechende Fehlermeldung ("...is 
not constrained...") beim Compilieren aus, eine Deklarierung ohne Angabe 
der Breite ist also anscheinend nicht möglich...

Hier ein Beipiel:
einmal soll der Vektor "000101" als Input_A akzeptiert werden, ein 
anderes Mal soll z.B. der Vektor "101" als Input_A akzeptiert werden, 
wie muss in diesem Fall der Input_A in der Entity deklariert sein?

Evtl. mit generic, aber auch hier wäre für mich die Frage, wie das da 
gehen soll?

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit Generics schauts folgendermaßen aus
entity var is
    
    generic (
        WIDTH : integer := 3);          -- Breite

    port (
        ...
        vec : in std_logic_vector(WIDTH - 1 downto 0)
        ... );

end entity var;

und die Instanzierung

signal MyVector : std_logic_vector[7 downto 0];


Instanz_1: var
    generic map (
        WIDTH => MyVector'length)
    port map (
        ...
        vec => MyVector);

Die Breiten der übergebenen Vektoren müssen bei der Synthese bekannt 
sein, weil daraus dann entsprechen viele Register, Latches usw. erzeugt 
werden müssen.

Klaus

Autor: Ben (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank! Scheint gut zu funktionieren!

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.