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


von Thomas H. (thomashuber)


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?
1
signal Teil2         :std_logic_vector (499 downto 0);
2
signal Adresszeiger  :integer;
3
4
test: process (Strobeclock,variable)
5
begin
6
7
if (variable='0') then
8
Adresszeiger <= 0;
9
elsif (Strobeclock'event and Strobeclock = '1' ) then
10
Adresszeiger<= Adresszeiger +1;
11
end if;
12
13
TXD <= Teil2(Adresszeiger); 
14
15
end process;

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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?
1
signal Teil2         :std_logic_vector (499 downto 0);
2
signal sr            :std_logic_vector (499 downto 0);
3
4
test: process (Strobeclock,variable)
5
begin
6
7
if (losgehts='1') then
8
   sr <= Teil2;
9
elsif (Strobeclock'event and Strobeclock = '1' ) then
10
   sr <= '0' & sr[499 downto 1];
11
end if;
12
13
TXD <= sr[0]; 
14
15
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.

von Thomas H. (thomashuber)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.