Forum: FPGA, VHDL & Co. Parallel/Seriel Wandler, mit Convertierung von BIT_VERTOR zu STD_LOGIC


von idas (Gast)


Lesenswert?

Ich habe einen Bit-Vector sig_datareg_in(15 downto 0), in dem Daten 
abgelegt sind, diese möchte ich seriell (Leitung ser_io) raus schieben 
mit MSB-Firs.
ser_io ist folgendermaßen in der Entity definiert:

ser_io : inout STD_LOGIC;
1
if rising_edge(CLK) then  
2
3
when state_readdata =>
4
5
ser_io <= sig_datareg_in(15);    
6
sig_datareg_in(15 downto 1) <= sig_datareg_in(14 downto 0);      
7
sig_bit_cnt_int   <= sig_bit_cnt_int + '1';
8
        
9
if sig_bit_cnt_int  >= 15 then          
10
  sig_bit_cnt_int <= (others => '0');   -- reset counter
11
end if;
12
13
end if;

Leider bekomme ich folgende Fehlermeldung:
Cannot resolve indexed name (type std.STANDARD.BIT) as type 
ieee.std_logic_1164.STD_LOGIC.

Wie konvertiere ich richtig einen BIT_VECTOR zu STD_LOGIC um?

Vielen Dank

von Duke Scarring (Gast)


Lesenswert?

idas schrieb:
> sig_bit_cnt_int   <= sig_bit_cnt_int + '1';
Wie ist denn sig_bit_cnt_int definiert?
Und welche Bibliotheken werden im eingebunden?

Duke

von idas (Gast)


Lesenswert?

sig_bit_cnt_int  : inout  STD_LOGIC_VECTOR(7 downto 0)

Damit ist aber alles in Ordnung. Der Counter macht mir keine Probleme.

Eingebunden habe ich folgende Bibliotheken:
1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
use IEEE.STD_LOGIC_ARITH.ALL;
4
use IEEE.NUMERIC_STD.ALL;
5
use IEEE.STD_LOGIC_UNSIGNED.ALL;

von hiall (Gast)


Lesenswert?

bin zwar kein vhdl experte aber gleich werden dir alle sagen nicht alle 
einbinden zwecks mehrfachdefinitionen oder sowas in der art

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


Lesenswert?

idas schrieb:
> Eingebunden habe ich folgende Bibliotheken: ...
Ja, warum bindest du nicht noch viel mehr ein?
Einfach alles, was du finden kannst?

War aber zum Glück alles schon mal da. Und schon ein paar mal die 
Fehlerursache...
Beitrag "Fehlermeldung mit unsigned"
Beitrag "Zweierkomplement zu unsigned vector Problem"
Beitrag "VHDL Syntaxproblem: type incompatible"
Beitrag "Re: Ganze Zahl in Ziffern zerlegen"
Usw. usf...

Siehe auch den Beitrag "IEEE.STD_LOGIC_ARITH.ALL obsolete"

> sig_bit_cnt_int  : inout  STD_LOGIC_VECTOR(7 downto 0)
Warum ist ein (vermutlich) interner Counter als inout Port definiert?
Schreibfaulheit?

idas schrieb:
>> Wie konvertiere ich richtig einen BIT_VECTOR zu STD_LOGIC um?
Gib doch einfach mal bei Google
Convertierung von BIT_VERTOR zu STD_LOGIC
(gern auch inklusive deiner beiden Schreibfehler im Thread-Titel) ein:
https://www.google.de/search?q=Convertierung+von+BIT_VERTOR+zu+STD_LOGIC
Und dann sieh die ersten paar Links an:
http://www.pldworld.com/_hdl/2/_ref/acc-eda/language_overview/using_standard_logic/standard_logic_type_conversions.htm

von idas (Gast)


Lesenswert?

Ok, Danke für die Anregungen. Sorry, ich bin halt kein VHDL Geek. Habe 
vor langer Zeit was gemacht, seit dem gar nichts mehr. Ich habe es ein 
wenig anders gelöst, sig_datareg_in als STD_LOGIC_VECTOR deklariert, hat 
die Konvertierung überflüssig gemacht.


sig_bit_cnt_int soll eigentlich ein internes Signal sein, ich habe es 
aus der Entity aus Zweckszwecken herausgeführt als inout. Buffer würde 
da natürlich auch reichen. Aber darum ging es mir nicht.

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


Lesenswert?

buffer wäre genauso falsch/unschön. Richtig schön wäre ein internes 
Signal, das einem Port zugewiesen wird. Aber wie angemerkt: darum gehts 
nicht...

von Seppl (Gast)


Lesenswert?

kein numeric und arith gleichzeitig verwenden!!

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.