www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Rechenfehler mit unsignd und integer constante


Autor: 123 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

der folgende Code gibt mit modelsim eine Rechenfehler. Wenn row 1 ist, 
dann ist row_offset 759, wie es sein sollte. test ist aber 247, warum?


port (
row          : in std_logic_vector(8 downto 0);
 );

test: process(n_reset, clk )


        variable test       : unsigned(18 downto 0);
        variable row_offset       : unsigned(18 downto 0);

    begin
        if (n_reset = '0') then

        elsif(rising_edge(clk))then

                row_offset  :=(to_unsigned((758+1),10)*unsigned(row));
                test        :="0"&((758+1)*unsigned(row));

        end if;
    end process;

Ich hoffe einer hat eine Erklährung

Autor: Jan M. (mueschel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>dann ist row_offset 759, wie es sein sollte. test ist aber 247

247 + 512 = 759
Das ist ein ganz einfacher Ueberlauf, genau wie in c oder jeder anderen 
Programmiersprache.
Auch in VHDL gilt: Erst die Operanden auf die Breite des Ergebnisses 
bringen, dann die Operation ausfuehren.

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.