VHDL, Panduan untuk orang baru/Contoh

Daripada Wikibooks
Pergi ke pandu arah Pergi ke carian

Penambah separuh[sunting]

Kita ambil contoh mudah, iaitu sebuah penambah separuh (bahasa Inggeris:half adder). Berikut adalah gambarajah sebuah penambah separuh:

Half-adder.svg

Berdasarkan rajah, kita boleh membuat jadual kebenaran seperti berikut:

Masukan Keluaran
A B S C
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1

Daripada jadual kebenaran, dapat dilihat terdapat dua komponen (XATAU dan DAN), dua masukan (A dan B) dan dua keluaran (S dan C). Berikut adalah kod VHDL untuk penambah separuh:

 LIBRARY IEEE;
 USE IEEE.std_logic_1164.all;


 ENTITY penambah_separuh IS
 PORT (A, B :IN std_logic;
 S, C: OUT std_logic);
 END penambah_separuh;
 ARCHITECTURE cara_kerja OF penambah_separuh IS
 BEGIN
 S <= A XOR B;
 C <= A AND B;
 END cara_kerja;

MUX4kpd1[sunting]

Pemultipleks (disingkatkan MUX) 4 kepada 1, MUX4kpd1 menerima empat baris masukan dan satu baris keluaran. MUX4kpd1 memlilih salah satu daripada masukan yang diterimanya untuk menjadi keluaran.

Gambarajah MUX4kpd1

MUX4kpd1 mempunyai dua masukan tambahan iaitu S1 dan S2 yang berfungsi sebagai pemilih. Keluaran MUX4kpd1 adalah berdasarkan dua masukan tambahan ini.

Jadual kebenaran bagi MUX4kpd1 adalah seperti berikut:

S1 S2 Keluaran
0 0
0 1
1 0
1 1

Ciptakan kod VHDL untuk MUX4kpd1[sunting]

Daripada jadual kebenaran, didapati terdapat enam masukan termasuk S1 dan S2, manakala keluaran ada satu iaitu Ambil X sebagai mewakili empat masukan yang akan dipilih untuk menjadi keluaran dan S mewakili masukan pemilih dan f sebagai keluaran. Berikut adalah kod VHDL bagi MUX4kpd1 dengan menggunakan pembolehubah-pembolehubah yang dinyatakan:

 LIBRARY IEEE
 USE IEEE.STD_LOGIC_1164.all

 ENTITY MUX4kpd1 IS
 PORT (
       X : IN STD_LOGIC_VECTOR (3 DOWNTO 0);
       S : IN STD_LOGIC_VECTOR (1 DOWNTO 0);
       f : OUT STD_LOGIC;
      );
 END MUX4kpd1;

 ARCHITECTURE kelakuan OF MUX4kpd1 IS
 BEGIN
 with S select
 f <= (not X(0)) when "00",
      (not X(1)) when "00",
      (not X(2)) when "10",
      (not X(3)) when others;
 END kelakuan;
<<Sintaks - Kembali ke isi kandungan>>