Signal mit Verctor verknüpfen und links schieben.

Gast #2916613
Lesenswert?
• ▲
▼
Ich habe Problem ein Eingangssignal in ein Verctor reinzuschieben.
Versucht habe ich Folgendes:

sig_dataframe <= sig_dataframe_op(0) & mdata;

ModelSim spuckt dabei folgende Fehlermeldung raus:
No feasible entries for infix operator "&".


mdata is ein serielles Datensignal deklariert in der Entity 
folgendermaßen:
mdata  : inout  STD_LOGIC;

sig_dataframe is ein Signal in der architecture:
signal sig_dataframe : BIT_VECTOR(4 downto 0);


Die zweite Geschichte ist ein Vector Vergleich auf die Gleichheit, das 
kriege ich auch nicht hin:

if sig_address = if_address then
-- code
end if;

Fehler:
Type error resolving infix expression "=" as type std.STANDARD.BOOLEAN.


if_address ist in der entity als vector deklariert und sig_adress in der 
architecture mit einer gleichen Breite.


Sorry für Dumme Fragen, habe VHDL seit Jahren nicht angefasst. Die 
Ergebnisse die mir google rausgespuckt hat, brachten auch keinen Erfolg.
Gast #2916741
Lesenswert?
• ▲
▼
Wie sieht's aus mit:
1
sig_dataframe <= To_bitvector(sig_dataframe_op(0)) & mdata;

1. Du kannst nur zwei Signale einander zuweisen oder sie verknüpfen, 
wenn diese den gleichen Datentyp haben. std_logic[_vector] hat viel mehr 
mögliche Werte (U, Z, X...) als ein bit[_vector], der hat nur 0 und 1.

Siehe auch 
http://vhdlguru.blogspot.de/2010/03/what-is-difference-between-stdlogic-and.html

2. Außerdem müssen die Bitbreiten stimmig sein. Deine Zuweisung von 
sig_dataframe wird nur funktionieren, wenn links und rechts vom 
Zuweisungsoperator die Bitfolgen gleich lang sind. Dein sig_dataframe 
ist offensichtlich 5 Bit breit, und mdata mit sig_dataframe_op(0) 
zusammen ergeben einen zwei Bit breiten Vektor. Das passt also nicht.

Dein zweiter Schnipsel ist mir zu kurz, um da einen Tipp geben zu 
können.
Gast #2917313
Lesenswert?
• ▲
▼
@Chris2k: Danke das war es. Mdata ist als inout STD_LOGIC definiert, das 
hat dem Compiler nicht gefallen, dass ich std_logic mit bit_vector 
verknüpfen wollte. Die Konvertierung to_bit(mdata) hat geholfen.

Vielen Dank an Alle.
Moderator (Firma: Titel) Persönliche Seite #2919214
Lesenswert?
• ▲
▼
Knufi schrieb:
> Wird das nicht richtig in die Hardware umgesetzt?
Doch, klar.
> Wie meinst du das?
Es wird in der Praxis nicht verwendet. Denn mit einem bit kannst du 
keinen bidirektionalen Bus beschreiben oder irgendwas hochohimg werden 
lassen...

Lothar Miller schrieb:
> Das verwendet in der freien Wildbahn keiner.
> Nur im akademischen Bereich tauchen die Beiden auf...
... weil sich das Gerücht hält, Simulationen wären damit schneller. Nur 
deshalb werden dort bit und bit_vector verwendet. Und das selbe gilt 
für nich aufgelöste std_logic, die std_ulogic.
Gast #2919324
Lesenswert?
• ▲
▼
Na ja, die Bit-Vectoren verwende ich als eine Art Variable um Daten 
einzuspeisen und zu prüfen, ob diese einem erwarteten Muster 
entsprechen. Die müssen in dem Fall nur '1' oder '0' 
speichern/darstellen können.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren