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

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.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.