Forum: FPGA, VHDL & Co. (others => '0') und 'range


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.
von Duke Nukem (Gast)


Bewertung
0 lesenswert
nicht lesenswert
In einer Berechnung muss ich einen LogicVector mit einer
parametrierbaren festen Länge erzeugen.

Jetzt etwa so:

reg := a * b - (c & "00000000");

Ein:

reg := a * b - (c & (others => '0'));

mag der Synthesizer nicht.
Mit dem range Attribut geht es auch nicht.

Wie dann?

von user (Gast)


Bewertung
0 lesenswert
nicht lesenswert
verwende doch die range als definierte länge
a * b - (c & (3 downto 0 => '0')
oder
a * b - (c & (a'high -1 downto 0 => '0');

von Duke Nukem (Gast)


Bewertung
0 lesenswert
nicht lesenswert
x := a * b - (c & (x'length -3 downto 0 => '0'));

ist es geworden.

TNX!

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.