mikrocontroller.net

Forum: FPGA, VHDL & Co. integer to bcd


Autor: Cyrex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Liebe Kollegen!

Ich habe ein Modul geschrieben, dass einen Integer Wert in ein array 
schreibt. Leider funktioniert die if-Abfrage für das negative Vorzeichen 
nicht. Kann mir bitte jemand sagen was ich übersehe?
when rdy =>
...
if count = 31 then
   count <= 0;
   rd   <= '1';
   if vz = '1' then
      a(1) <= "1111";
   else
      a(1) <= s_shift(63 downto 60);
   end if;
   a(2) <= s_shift(59 downto 56);
   a(3) <= s_shift(55 downto 52);
   a(4) <= s_shift(51 downto 48);
   a(5) <= s_shift(47 downto 44);
   a(6) <= s_shift(43 downto 40);
   a(7) <= s_shift(39 downto 36);
   a(8) <= s_shift(35 downto 32);
   s_state <= idle;
else
   count <= count + 1;
   s_state <= shift;
end if; 
end case;
...

package myarray is
  type stdarray is array (1 to 8) of std_logic_vector (3 downto 0);

end package myarray;


das nächste Modul sendet das array and die RS232. Deshalb verwende ich 
für ein Minus "1111" weil das RS232 Modul alles in ASCII umwandelt.

DANKE

Autor: Cyrex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, vergessen
entity i2bcd is
Port    ( clk      : in  std_logic;
          reset    : in  std_logic;
          enable   : in  std_logic;
          i        : in  integer;
          rd       : out std_logic;
          --vz       : out std_logic;
          --st       : in  integer;
          a        : out stdarray
         ); --(1 to st+1));
end i2bcd;



architecture Behavioral of i2bcd is 
 
type    t_state is (idle, shift, add, rdy);
signal  s_state : t_state;
          
signal count   : integer;
signal s_shift : std_logic_vector (63 downto 0);
signal vz     : std_logic;

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Leider funktioniert die if-Abfrage für das negative Vorzeichen nicht.
Wie kommst du darauf? Simulation/Hardware?
Woher kommt vz? Hast du evtl. ein Problem mit Latency?

Autor: Cyrex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vz wird gesetzt wenn der integer negativ ist.

Bei der Simulation wird a1 nicht gesetzt wenn vz '1' ist.

Autor: Cyrex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich glaube ich habs, ich hab mich in der Testbench verschrieben. Jetzt 
nimmt er das falsche File.

DANKE

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.