Senin, 25 Oktober 2010

VHDL

Tulisan  " Pemrograman Devais FPGA "


A.FIQA DZULFIQAR
22108346
VHDL (Very highspeed integrated circuit Hardware Description Language)
SEJARAH VHDL :
VHDL adalah singkatan yang dipersingkat karena aslinya adalah VHSIC HDL. Program VHIC (Very Highspeed Integrated Circuit) dikembangkan akhir tahun 1970-an sampai awal 1980-an, berdasarkan sumber dari Universitas Waterloo :
  • Rupanya pada waktu itu program VHSIC dikembangkan oleh Departemen Pertahanan Amerika
  • Alat yang sudah ada (pada waktu itu tahun 1980, yaitu Ada programming language) sudah tidak sanggup untuk membuat desain hardware yang lebih kompleks sehingga akhirnya dibuatlah penggantinya dengan nama VHDL.
Inilah evolusi berdasarkan sumber dari Universitas Waterloo :
  • 1981, VHDL diusulkan sebagai bahasa deskripsi hardware
  • 1986, VHDL diusulkan sebagai standar IEEE
  • 1987, Standar pertama VHDL (IEEE-1076-1987)
  • 1993, Standar VHDL direvisi (IEEE-1076-1993)
  • 2002, Standar VHDL sekarang (IEEE-1076-2002), dan
  • Sekarang digunakan dengan luas oleh kalangan industri dan akademi, dengan penambahan IEEE-1164-1993 untuk mengenalkan nilai sistem logika
IEEE adalah singkatan dari Institut of Electrical and Electronics Engeneers, Institut inilah yang melakukan standarisasi VHDL.
 Salah satu contoh program vhdl dari sebuah D flip-flop edge triggered positif dengan asynchronous Reset adalah sebagai berikut:

library ieee;
use ieee.std_logic_1164.all;
entity DFF_RST is
     port (CLK, RESET, D : in std_logic;
           Q : out std_logic);
end DFF_RST;


architecture BEHAV_DFF of DFF_RST is
begin
DFF_PROCESS: process (CLK, RESET)
     begin
           if (RESET = ‘1’) then
                Q <= ‘0’;
           elsif (CLK’event and CLK = ‘1’) then
                Q <= D;
           end if;
     end process;
end BEHAV_DFF;

LIBRARY


Tulisan  " Pemrograman Devais FPGA "

A.Fiqa Dzulfiqar
22108346 


                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

tulisan " Pemrograman Devais FPGA "
A.FIQA DZULFIQAR
22108346
multiplexer merupakan suatu rangkaian yang memiliki banyak input namun hanya memiliki satu output. adapaun rangkaian dari multiplexer itu sendiri :

pada rangkaian di atas terdapat 4 input, 2 selektor, dan 1 output. dalam tulisan ini rangkaian Multiplexer di atas akan diimplementasikan ke dalam kode program VHDL.

1. pertama-tama kita beri nama entity dari multiplexer yaitu " multipax "

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

2. lalu definisikan architecture " max_multy " dari entity "multipax"

architecture max_multy of multipax 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 max_multy;


3. Arsitektur berfungsi untuk mendefinisikan bagaimana entity "multipax" bekerja. Namun kode diatas belumlah sempurna, sehingga tidak bisa dijalankan untuk simulasi maupun di sintesis karena belum didefinisikan bit input pada masing-masing portnya. Untuk itu diperlukan penambahan entity "signal" dan arsitektur "signal_arc" yang berfungsi untuk memberikan input pada entity "multipax".
entity signal is
port(
pa,pb,pc,pd,ps1,ps2:out bit);
end signal;

architecture signal_arc of signall is
begin
pro: process is
begin
pa <= '0';
pb <= '1';
pc <='1';
pd <= '0';
ps1 <= '1';
ps2 <= '0';
end process pro;
end signal_arc;

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

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

architecture max_multy of multipax 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 max_multy;

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

architecture signal_arc of signal is
begin
pro: process is
begin
pa <= '0';
pb <= '1';
pc <='1';
pd <= '0';
ps1 <= '1';
ps2 <= '0';
end process pro;
end signal_arc;

-- 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 signal port map(in1,in2,in3,in4,select1,select2);
w2: entity multipax port map(in1,in2,in3,in4,select1,select2,output);
end eksekusi_arch;