mikrocontroller.net

Forum: FPGA, VHDL & Co. Probleme bei einer Vektorausgabe


Autor: Thomas Huber (thomashuber)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich versuche einen einfachen Vektor getanktet Zeile für Zeile 
auszugeben.
Aber egal wie ich es mache, der Kompiler beschwert sich ständig über :
Multiple non-tristate drivers for net Teil2()
Unresolved tristate drivers for net Teil2(499)
bzw. manchmal die gleiche Fehlermeldung für die Variable Adresszeiger
Was mach ich falsch?
signal Teil2         :std_logic_vector (499 downto 0);
signal Adresszeiger  :integer;

test: process (Strobeclock,variable)
begin

if (variable='0') then
Adresszeiger <= 0;
elsif (Strobeclock'event and Strobeclock = '1' ) then
Adresszeiger<= Adresszeiger +1;
end if;

TXD <= Teil2(Adresszeiger); 

end process;


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

Bewertung
0 lesenswert
nicht lesenswert
>  Vektor getanktet Zeile für Zeile auszugeben.
Muß das heißen: Bit für Bit?
Welchen Typ hat TXD?
variable ist ein Schlüsselwort.
Einen Mux mit 500 Eingangselementen zu bauen ist schon etwas gewagt... 
:-/

Mir scheint, du machst Etwas etwas umständlich.
Man hantiert üblicherweise nicht mit 500 Bit breiten Vektoren...

BTW:
Warum nimmst du nicht (wie der Rest der Welt) ein Schieberegister?
signal Teil2         :std_logic_vector (499 downto 0);
signal sr            :std_logic_vector (499 downto 0);

test: process (Strobeclock,variable)
begin

if (losgehts='1') then
   sr <= Teil2;
elsif (Strobeclock'event and Strobeclock = '1' ) then
   sr <= '0' & sr[499 downto 1];
end if;

TXD <= sr[0]; 

end process;

Strobeclock ist ein bedeutungsvoller Name. Wieviele Takte hast du in 
deinem Desing? Wenn du mit FPGAs zu tun hast, ist der Idealfall: 1 Takt. 
Und nur als Experte und/oder in Extremfällen solltest du davon abrücken.

Autor: Thomas Huber (thomashuber)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke erstmal für die schnelle Antwort.
Ja, ich will die Daten Bit für Bit ausgeben.

Es handelt sich um ein bestehendes funktionierendes Programm das mehrere 
mit mehreren Takten geschrieben ist und das ich jetzt erweitern will.
Ich hab einen knapp 3000 Bit langen Bitstream, den ich einlesen, 
speichern und anschließend wieder ausgeben will.
Die Strobeclock gibt die Bittaktung.
TxD ist ein std_logic Ausgang.
Eine Art Schieberegister ist es ja was ich bauen will. Hab nur übersehen 
das es sowas ja bereits fertig gibt. Ich probier mein Glück mal.
Danke nochmal

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.