Senin, 25 Oktober 2010

Library VHDL

Dalam bahasa pemrograman vhdl dikenal beberapa paket library yang berfungsi untuk memudahkan prorammer untuk menyelesaikan pekerjaannya karena dalam library tersebut terdapat fungsi-fungsi dan tipe data yang sudah didefinisikan sebelumnya yang dapat digunakan berulang-ulang. Dalam vhdl terdiri beberapa library, diantaranya ieee, std, work dan lain-lain. Di dalam library tersebut terdapat sub-tree yang disebut sebagai paket, seperti :

LIBRARY IEEE :
- math_real
- numeric_bit
- numeric_std
- std_logic_1164
- std_logic_arith
- std_logic_signed
- std_logic_unsigned
- vital_timing

LIBRARY STD :
- standard
- textio

LIBRARY WORK :
semua source code user akan dicompile dan dimasukkan ke dalam library ini

MULTIPLEXER VHDL template


Multiplekser atau disingkat MUX adalah alat atau komponen elektronika yang bisa memilih input (masukan) yang akan diteruskan ke bagianoutput (keluaran). Pemilihan input mana yang dipilih akan ditentukan oleh signal yang ada di bagian kontrol (kendali) Select.


Pertama-tama definisikan entitas multiplexer dengan nama "theend" :
entity theend is -- mendefinisikan entity "theend"
port(
a,b,c,d,s1,s2: in bit; -- terdapat 4 port input, 2 selector, dan 1 output
y:out bit);
end theend;

Lalu definisikan arsitektur "mux_arch" dari entity "theend" :
architecture mux_arch of theend is
begin
proc: process is
begin
if (s1='0' and s2='0') then y <= a;
else if (s1='0' and s2='1') then y <= b;
else if (s1='1' and s2='0') then y <= c;
else if (s1='1' and s2='1') then y <= d;
end if;
end process proc;
end mux_arch;

Arsitektur berfungsi untuk menerangkan bagaimana entity "theend" bekerja. Namun kode diatas hanyalah berupa template, sehingga tidak bisa dijalankan untuk simulasi maupun di sintesis karena belum didefinisikan bit input pada masing-masing portnya. Untuk itu kita tambahkan entity "sinyal" dan arsitektur "sinyal_arch" yang berfungsi untuk memberikan input pada entity "theend".
entity sinyal is
port(
pa,pb,pc,pd,ps1,ps2:out bit);
end sinyal;

architecture sinyal_arch of sinyal is
begin
pros: process is
begin
pa <= '0';
pb <= '1';
pc <='1';
pd <= '0';
ps1 <= '1';
ps2 <= '0';
end process pros;
end sinyal_arch;

Semua kode vhdl diatas digabung menjadi satu menjadi :
library ieee;
use ieee.std_logic_1164.all;

entity theend is -- mendefinisikan entity "theend"
port(
a,b,c,d,s1,s2: in bit; -- terdapat 4 port input, 2 selector, dan 1 output
y:out bit);
end theend;

architecture mux_arch of theend is
begin
proc: process is
begin
if (s1='0' and s2='0') then y <= a;
else if (s1='0' and s2='1') then y <= b;
else if (s1='1' and s2='0') then y <= c;
else if (s1='1' and s2='1') then y <= d;
end if;
end process proc;
end mux_arch;

entity sinyal is
port(
pa,pb,pc,pd,ps1,ps2:out bit);
end sinyal;

architecture sinyal_arch of sinyal is
begin
pros: process is
begin
pa <= '0';
pb <= '1';
pc <='1';
pd <= '0';
ps1 <= '1';
ps2 <= '0';
end process pros;
end sinyal_arch;

-- kode dibawah ini merupakan kode yang berfungsi menjalankan --
-- entity yang telah didefinisikan diatas --

library work;
use work.all;

entity eksekusi is
end eksekusi;

architecture eksekusi_arch of eksekusi is
signal in1,in2,in3,in4,select1,select2,output: bit;
begin
w1: entity sinyal port map(in1,in2,in3,in4,select1,select2);
w2: entity theend port map(in1,in2,in3,in4,select1,select2,output);
end eksekusi_arch;