www.mikrocontroller.net

Forum: FPGA, VHDL & Co. std_vector to string Probleme


Autor: ope (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich dachte, mich schockt nichts mehr an VHDL, aber es kam anders:
library ieee;
use ieee.std_logic_1164.all;
use std.textio.all;

entity slv2str is
end entity slv2str;

architecture behavior of slv2str is

   function slv_to_str(vec : std_logic_vector) return string is
      variable temp : string(vec'left+1 downto 1) := (others =>
'X');
   begin
      for i in vec'reverse_range loop
         if (vec(i) = '1') then
            temp(i+1) := '1';
         elsif (vec(i) = '0') then
            temp(i+1) := '0';
         end if;
      end loop;
      return temp;
   end function;

   signal v : std_logic_vector(7 downto 0) := b"01001100";
   
begin

   test : process is
      variable l : line;
   begin      
      write(l, slv_to_str(v(7 downto 6)) & slv_to_str(v(5 downto 0)));
      writeline(output, l);
      wait;
   end process test;

end architecture behavior;

$ vcom.exe -93 slv2str.vhd
Model Technology ModelSim XE III vcom 6.0a Compiler 2004.11 Nov 10
2004
-- Loading package standard
-- Loading package std_logic_1164
-- Loading package textio
-- Compiling entity slv2str
-- Compiling architecture behavior of slv2str

$ vsim -c work.slv2str
Reading C:/Programme/mxe/tcl/vsim/pref.tcl

# 6.0a

# vsim -c work.slv2str
# Loading c:\programme\mxe\win32xoem/../std.standard
# Loading c:\programme\mxe\win32xoem/../ieee.std_logic_1164(body)
# Loading c:\programme\mxe\win32xoem/../std.textio(body)
# Loading ./work.slv2str(behavior)
VSIM 1> run 10 ns
# 01XXXXXX001100

Was zur Hölle soll das??? Der Standard kann doch nicht allen Ernstes
erlauben, dass die ursprüngliche vectorgröße hier einen Einfluss hat?
Bekommt die Funktion nicht eine verkürzte Kopie des orig. Vectors? Wie
kriege ich hier die Kuh vom Eis?

Viele Grüße
Olaf

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.