Untschied Bit_vector und Syntax?

Gast #1494607
Lesenswert?

hallo zusammen,

entityfktab is
port(x4,x3,x2,x1 : in bit;
y : out bit);
end;
architecture demo of fktab is
begin
with bit_vector'(x4,x3,x2,x1) select
y <='1' when"0001",
'1' when"0010",
'1' when"0100",
'1' when"0111",
'1' when"1000",
'1' when"1011",
'1' when"1101",
'1' when"1110",
'0' when others;
end demo;

was hat das apostroph nach dem bibtvector zu sagen, oder ist das einfach 
fest?

und dann Unterschied zwischen bit_vector und std_logic_vector?
Moderator (Firma: Titel) Persönliche Seite #1494743
Lesenswert?

> apostroph
Kennzeichnet ein Attribut.
z.B. 'event, 'left , 'right, 'range
Such mal vhdlqrc.pdf

> und dann Unterschied zwischen bit_vector und std_logic_vector?
Ein bit kann 0 oder 1 werden.
std_logic dagegen ist 9-wertig,
da gibt es zu 0 und 1 auch Z, U, X, H, L, W, -

Ein bit_vector ist ein Vektor aus Bits,
ein std_logic_vector ist ein Vektor aus std_logic.

In der Synthese für ein FPGA ist der Zustand Z manchmal recht brauchbar, 
insbesondere, wenn ein bidirektionaler IO-Port beschreiben werden soll.
Gast #1495763
Lesenswert?

vielen dank für die schnelle und gute antwort!

kennst du eventuell einen guten anleitung bzw. buch für VHDL?

können sie mir dann kurz den quellcode erläutern?

signalinput_sig, output_sig, clk, reset: bit;
.... --D-FF ohne zusätzliche Eingänge
process(clk)
begin
if(clk’event and clk=’1’) then
output_sig<= input_sig;
end if;
end process;
--D-FF mit synchronem Reset
process(clk)
begin
if(clk’eventand clk= ’1’) then
ifreset= ’1’then
output_sig<= ’0’;
else
output_sig<= input_sig;
end if;
end if;
end process;

ich weiss zwar bei der abfrage nmit clk dass es nach positvien 
taktflanke abfrägt, aber wie kann ich den ganzen ausdruck verstehen

clk’event and clk=’1’?
Moderator (Firma: Titel) Persönliche Seite #1495777
Lesenswert?

> kennst du eventuell einen guten anleitung bzw. buch für VHDL?
Ja: Reichardt/Schwarz VHDL-Synthese

> wie kann ich den ganzen ausdruck verstehen
> clk’event and clk=’1’?
Das Attrigut 'event bedeutet irgendeine Änderung eines Signals (hier 
clk). Zusammen mit clk='1' wird damit eine steigende Flanke definiert:
Wenn eine Änderung am clk passiert und danach clk = '1' ist, dann ist 
das eine steigende Flanke. Damit ist allerdings auch eine Flanke von 'X' 
nach '1' oder eine Flanke von 'H' nach '1' eine steigende Flanke.
Besser ist es daher, die Funktion rising_edge() zu verwenden.

> können sie mir dann kurz den quellcode erläutern?
Im Beitrag "Re: Hardware mit VHDL "richtig" beschreiben." finden sich einige 
Beschreibungen und die Syntheseergebnisse dazu.

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