MATERI PELATIHAN
VHDL UNTUK SINTESIS
LABORATORIUM ELEKTRONIKA DASAR JURUSAN TEKNIK ELEKTRO INSTITUT TEKNOLOGI SEPULUH NOPEMBER (ITS) SURABAYA
Kuliah Singkat VHDL untuk Sintesis
Materi Pelatihan VHDL 1. Review Sistem Digital 2. HDL Design Flow 3. Proses Perancangan 4. Entity dan architecture 5. Macam-macam deskripsi architecture 6. Process Statement 7. Library 8. Package 9. Hirarki 10. Studi Kasus A. PENDAHULUAN VHDL : VHSIC Hardware Description Language dimana VHSIC: Very High Speed Integrated Circuit. VHDL adalah salah satu jenis bahasa HDL tingkat tinggi yang digunakan untuk: 1. Design Entry (synthesis) untuk FPD dan ASIC. Menjelaskan (menerangkan) struktur dan perilaku (behaviour) dari rancangan elektronika digital yang dibuat. Rancangan yang dibuat ini nantinya dapat diimplementasikan pada sistem digital baik berupa FPD (Field Programmable Devices) atau ASIC (Application Specific Integrated Circuit). 2. Melakukan simulasi (analisis) 3. Test (uji coba) fungsionalitas dari rancangan. Contoh HDL yang lain: Verilog, Abel, IHDL (Intel HDL), dan UDL/I VHDL pada awalnya dikembangkan oleh departemen pertahanan Amerika (DoD) pada tahun 1981. Pada tahun 1987 pengelolaanya diserahkan ke IEEE supaya bisa dipakai secar luas oleh pihak industri dan akademisi. IEEE yang melakukan standardisasi pada VHDL (1987, 1992, 1999). B. VHDL Design Flow Langkah-langkah proses desain pada sistem digital secara konvensioal 1. Deskripsi sistem secara informal (blok I/O dengan penjelasannya) 2. Persamaal Bool (termasuk setelah minimisasi misalnya dengan K-map) 3. Rangkaian Skematika (termasuk setelah minimisasi gate misalnya dengan De Morgan) 4. Implementasi dengan IC digital ( Pada proses desain konvensional ini: - Perancang harus memahami komponen dasar rangkaian (gate dan flip-flop). - Ada banyak problem untuk sistem besar (persamaan matematika dan skematika yang rumit) - Susah melakukan modifikasi rancangan.
Laboratorium Elektronika Dasar, Teknik Elektro FTI ITS
1
Kuliah Singkat VHDL untuk Sintesis
Langkah-langkah proses desain sistem digital dengan menggunakan VHDL 1. Deskripsi informal sistem (blok I/O dengan penjelasannya). 2. Deskripsi dengan VHDL. 3. Sintesa. 4. Implementasi. Pada proses desain dengan VHDL ini - Deskripsi dengan VHDL dapat merupakan deskripsi tingkat tinggi (high/behavioral level), gate level, atau yang lain karena VHDL merupakan bahasa yang human and machine readable. - Proses sintesa dan implementasi dilakukan secara otomatis oleh sebuah tools. Demikian juga editor untuk mendeskripsikan VHDL. - Hasil implementasi (pada hardware) tidak bisa dibaca, sehingga memiliki kerahasiaan yang tinggi. - Biasanya hardware untuk implementasi memiliki kecepatan yang tinggi dibandingkan dengan mikroporosesor/mikrokontroler. Catatan: Mikroprosesor/mikrokontroler biasanya disebut juga software programmable device, sedangkan PLD atau FPGA disebut hardware programmable device C. Proses Perancangan dengan VHDL Contoh: Akan dirancang sebuah detektor bilangan prima 3-bit. Sistem dapat digambarkan dengan blok diagram dan tabel kebenaran sebagai berikut:
Blok Diagram
Tabel Kebenaran Dengan K-map (minimisasi) diperoleh persamaan logika sebagai berikut:
K-map Persamaan logika:
Laboratorium Elektronika Dasar, Teknik Elektro FTI ITS
2
Kuliah Singkat VHDL untuk Sintesis
Persamaan logika tersebut salah satu cara untuk membuat deskripsi VHDL. Pada contoh kali ini akan dipakai Warp dari Cypress untuk mengedit deskripsi VHDL, simulasi, serta sintesisnya. Pada Warp terdapat 2 macam tools, yaitu Galaxy untuk mengedit rancangan dan melakukan sintesis serta Nova untuk melakukan simulasi. Deskripsi bahasa VHDL
Beberapa hal dasar untuk deskripsi VHDL diatas: - Pada prinsipnya, deklarasi dengan menggunkan VHDL terdiri atas dua bagian: - Deklarasi entity Untuk menjelaskan interface rancangan dengan dunia luar (pin input dan output). - Deklarasi Arsitektur Untuk menjelaskan fungsionalitas dari rancangan. Deklarasi arsitektur diawali dengan begin dan diakhiri dengan end. Ada banyak cara untuk menjelaskan fungsionalitas, misalnya dengan persamaan logika seperti diatas. - Bahasa VHDL tidak case sensitive, misalnya huruf a (lower-case) dianggap sama dengan huruf A (upper-case). - Setiap statemen diakhiri dengan semikolon (;) - Tanda <= adalah merupakan signal assignment. - Referensi yang digunakan adalah dari ieee berupa operasi logika dan standar yang dipakai adalah standar ieee no 1164 (tahun 1993). - Komentar atau Comment diawali dengan garis tenah ganda (--). Komentar tidak akan dieksekusi oleh compiler VHDL.
Laboratorium Elektronika Dasar, Teknik Elektro FTI ITS
3
Kuliah Singkat VHDL untuk Sintesis
Desain yang dinyatakan dalam VHDL tersebut kemudian di compile untuk dilakukan verifikasi sintaksis dan setelah tidak ada kesalahan (error) berikutnya akan dihasilkan file untuk simulasi (verifikasi fungsional) maupun sintesis (baik untuk FPD baupun ASIC). Contoh simulasi untuk sistem diatas digambarkan pada gambar berikut:
D. Entity dan Architecture a. Format entity Format entity adalah sebagai berikut: Entity nama_entity is Port (nama nama port : jenis_port jenis_data; End nama_entity; Macam-macam jenis port: - In : digunakan untuk data masuk. - out : digunakan untuk data keluar. - buffer : digunakan untuk proses baca. - inout : digunakan untuk data masuk dan keluar. Jenis data (misalnya): - satu bit : std_logic - bus: std_logic_vector (a to b) atau std_logic_vector (b downto a) b. Format Architecture body Format arsitektur adalah sebagai berikut: architecture nama_arsitektur of nama_entity is begin ...... deskripsi rancangan ....... End nama_architecture;
Laboratorium Elektronika Dasar, Teknik Elektro FTI ITS
4
Kuliah Singkat VHDL untuk Sintesis
E. Macam-macam deskripsi architecture (style) Berikut ini adalah contoh sistem digital yang berfungsi sebagi komparator 4 bit 0 jika A ≠ B hasil 1 jika A = B A, B : 4 bit input hasil : 1 bit output A dan B masing masing adalah data yang panjangnya 4 bit. Keluaran hasil akan berlogika ‘1’ apabila A dan B sama serta berlogika ‘0’ apabila tidak sama. Beberapa cara implementasi komparator 4 bit: a. Struktural/netlist Komparator 4 bit diatas bisa mempunyai persamaan logika: hasil = ((A(0) xor B(0)) nor (A(1) xor B(1))) nor ((A(1) xor B(1)) nor (A(2) xor B(2))) implementasi rangkaian logika (skematika) dari ditunjukkan oleh gambar berikut:
Implementasi VHDL secara struktural dilakukan mengekspresikan rangkaian skematika diatas pada kode VHDL. Rangkaian diatas memerlukan dua macam gerbang dasar: XOR 2 input dan NOR 2 input. Beberapa gerbang dari dua macam gate tersebut dihubungkan untuk membentuk komparator 4 bit. Kode VHDL untuk NOR, XOR, maupun program utama bisa diletakkan pada file yang berbeda. Kode VHDL secara struktural ditunjukkan oleh listing berikut:
Laboratorium Elektronika Dasar, Teknik Elektro FTI ITS
5
Kuliah Singkat VHDL untuk Sintesis
Laboratorium Elektronika Dasar, Teknik Elektro FTI ITS
6
Kuliah Singkat VHDL untuk Sintesis
b. Boolean Deskrisi boolean menggambarkan cara kerja sistem melalui persamaan logika suatu sistem yang dirancang. Berikut ini implementasi boolean dari komparator yang diambil dari persamaan logika komparator diatas.
c. Dataflow (concurrent) Deskripsi data flow menggambarkan cara kerja sistem melalui bagaimana data dialirkan dari sinyal satu ke sinyal yang lain atau dari input ke output. Berikut ini contoh deskripsi dataflow untuk komparator 4 bit.
d. Behavioral (sequential statement) Deskripsi behavioral atau seringkali disebut diskripsi tingkat tinggi (high level), adalah deskripsi perilaku (cara kerja) dari sistem yang dirancang. Deskripsi ini seringkali merupakan algoritma bekerjanya sistem. Biasanya deskripsi ini menggunakan statement sekuensial seperti: if .. then ..else ..., while ...., case ..., dll.
Laboratorium Elektronika Dasar, Teknik Elektro FTI ITS
7
Kuliah Singkat VHDL untuk Sintesis
F. Process Statement nama_process : process (sensitivity list) begin ...... Sequencial statement ...... end process nama process; nama_process adalah opsional. sensitivity list : sinyal yang menyebabkan process dieksekusi contoh sequensial statement: - if ... then ... else - while - case - dll. G. Library, Package, dan Component a. Library Library adalah tempat dimana unit rancangan di”compile”. Library yang pertama digunakan adalah ieee, dimana unit rancangan standard IEEE diletakkan. Library ini bisa dipanggil untuk bisa diakses melalui perintah: Library ieee; Library yang lain dapat juga didefinisan terlebih dahulu kemudian dipanggil jika diperlukan. b. Package Package adalah suatu unit rancangan pada suatu library. Format mengakses package adalah sebagai berikut: use nama_library.nama_package.item; Sebagai contoh: use ieee.std_logic_1164.all c. Component Component adalah entitas desain yang digunakan pada entitas rancangan yang lain. H. Tipe Obyek (object) Ada tiga jenis objek pada VHDL yaitu: constant, signal, dan variable. - Constan (konstanta) Sebuah konstanta memiliki nilai tetap dan tidak data dirubah oleh proses yang terjadi pada kode (program), dibawah ini adalah contoh konstanta :
Laboratorium Elektronika Dasar, Teknik Elektro FTI ITS
8
Kuliah Singkat VHDL untuk Sintesis
constant LEBAR : integer := 8; constant X : std_logic_vector(2 downto 0) := "010"; Sebuah konstanta dapat dideklarasikan pada deklarasi process, architecture, entity ataupun package. -
Signal (sinyal) Sebuah sinyal dapat dianggap sebagai sebuah jalur kabel yang menghubungkan berbagai bagian pada modul ataupun antar modul dalam entity, dibawah ini adalah contoh sinyal : signal signal signal signal
STATE DBuff Cmdn Code
: : : :
STATE_TYPE; std_logic_vector(7 downto 0); std_logic; integer range –10 to 5;
Sebuah nilai awal dapat diisikan pada deklarasi sinyal, seperti : signal DBuff : std_logic_vector(3 downto 0) := "1101"; Namun, kondisi diatas hanya berguna bagi simulasi dan tidak akan berguna bagi sintesa karena saat suatu device diprogram maka kondisi (state) dari flip-flop pada device itu bisa berada dalam kondisi reset (0), set (1) ataupun tidak menentu, jadi tidak dapat dipastikan bahwa sinyal DBuff pada contoh diatas pasti berisi "11010110" pada saat device dipower up. Sinyal dapat dideklarasikan baik pada deklarasi entity ataupun architecture, hanya saja apabila pada deklarasi entitas maka sinyal akan secara eksplisit memiliki mode (in, out, buffer atau inout), namun apabila pada deklarasi arsitektur maka sinyal akan secara langsung memiliki mode inout. -
variable. Suatu variabel hanya dapat dideklarasikan pada bagian process dari suatu arsitektur. Variabel digunakan untuk menampung angka sementara dalam perhitungan dan tidak mencerminkan sebuah kabel. Dibawah ini adalah contoh deklarasi dan pemakaian sebuah variabel : architecture use_of_variable of my_and is begin process(in_bus) variable tmp : std_logic; begin tmp := '1'; for i in 3 downto 0 loop tmp := in_bus(i) and tmp; end loop; qout <= tmp; end process; end use_of_variable; Laboratorium Elektronika Dasar, Teknik Elektro FTI ITS
9
Kuliah Singkat VHDL untuk Sintesis
Pada contoh diatas akan dilakukan proses sebagai berikut : qout <= in_bus(0) AND in_bus(1) AND in_bus(2) AND in_bus(3); I. Tipe Data Terdapat banyak tipe data dalam VHDL, yang akan dibahas disini adalah tipe-tipe sederhana yang sering dipakai dalam pemrograman. Dibawah ini diberikan contoh deklarasi sinyal menggunakan tipe-tipe data sederhana (didefinisikan pada IEEE 1164) : signal signal signal signal signal
Input Flag Position Level Status
: : : : :
bit; std_logic; integer range –10 to 5; integer range 0 to 10; bool;
Selain itu dapat didefinisikan pula suatu tipe yang disebut dengan enumerasi (enumeration) seperti berikut : type STATE_TYPE is (IDLE, READ, WRITE, ERROR); signal PState : STATE_TYPE; signal NState : STATE_TYPE; Pendefinisian suatu enumerasi akan sangat berguna pada pembuatan finie state machine. Pada contoh-contoh diatas juga terlihat suatu tipe yang disebut array, misalnya : signal Buffer : std_logic_vector(7 downto 0); Sebenarnya std_logic_vector didefinisikan IEEE 1164 sebagai : type std_logic_vector(natural range <>) of std_logic; Dengan demikian, dapat dibuat suatu tipe array user-defined sebagai berikut : type table4x2 is array(0 to 3, 0 to 2) of bit; constant x_or : table4x2 := ("00_0", "01_1", "10_1", "11_0"); Pada contoh diatas, isi dari tabel x_or ditulis secara vertical agar mudah dibaca, tetapi tentunya tidak harus seperti itu. Terlihat simbol “_” pada potongan kode diatas, kebanyakan program sintesa VHDL dapat menerima simbol “_” yang ditambahkan pada sembarang dua digit yang berjajar. Dimasukkannya simbol “-“ pada contoh diatas adalah agar tabel menjadi lebih mudah dibaca. Namun, perlu diketahui bahwa tidak semua program sintesa VHDL dapat menerima “_”. Laboratorium Elektronika Dasar, Teknik Elektro FTI ITS
10
Kuliah Singkat VHDL untuk Sintesis
J. Beberapa contoh kasus 1. Detektor Bilangan Prima 3 bit
F berlogika ”1” jika input adalah bilangan prima dan berlogika ”0” jika input bukan prima. Bila dilakukan penurunan, diperoleh persamaan logika:
Kode VHDL nya adalah:
2. Dekoder 2 ke 4
Laboratorium Elektronika Dasar, Teknik Elektro FTI ITS
11
Kuliah Singkat VHDL untuk Sintesis
3. Dekoder BCD ke 7-segment
Laboratorium Elektronika Dasar, Teknik Elektro FTI ITS
12
Kuliah Singkat VHDL untuk Sintesis
4. Counter dengan generic
5. kontroler tandon air
Blok Diagram kontroler
Laboratorium Elektronika Dasar, Teknik Elektro FTI ITS
13
Kuliah Singkat VHDL untuk Sintesis
a. Dengan Mesin Moore
Laboratorium Elektronika Dasar, Teknik Elektro FTI ITS
14
Kuliah Singkat VHDL untuk Sintesis
b. Dengan Mesin Mealy
Laboratorium Elektronika Dasar, Teknik Elektro FTI ITS
15
Kuliah Singkat VHDL untuk Sintesis
Hasil Simulasi
Kondisi :
Kosong
isi
penuh
pakai
Laboratorium Elektronika Dasar, Teknik Elektro FTI ITS
kosong
isi
penuh
16