mikrocontroller.net

Forum: FPGA, VHDL & Co. Untschied Bit_vector und Syntax?


Autor: Lam_tr (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lam_tr (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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’?

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.