Anda di sini

Pemrograman

[TUTORIAL - Verilog] Tipe Data

Kusuma Wardana - 14 November 2019 19:17:19 0

Nilai Data

Pada Verilog, setiap sinyal, variabel dan dan fungsi harus memiliki tipe data tertentu. Beberapa tipe data ini dapat disintesis oleh bahasa pemrograman menjadi bentuk hardware-nya, dan beberapa tipe data lainnya hanya digunakan untuk memodelkan sifat (behavior) dari model yang akan kita buat.
Terdapat empat nilai dasar yang umumnya dipakai dalam bahasa Verilog, yaitu:

NilaiKeterangan
0Logika NOL, atau FALSE
1Logika SATU, atau TRUE
z atau ZKondisi impedansi tinggi, tri state, atau floating
x atau XTidak diketahui atau tidak diinisialisasi

Nilai 1 dan 0 sudah sangat kita kenal. Nilai z biasanya terkait dengan output dari tri-state buffer. Nilai x umumnya digunakan dalam modelling.

Grup Tipe Data

Secara umum, terdapat dua grup tipe data, yaitu net dan variable.

Tipe Data Net

Setiap sinyal pada Verilog harus memiliki tipe data tertentu. Tipe data net memodelkan interkoneksi (kawat, sambungan) antar komponen, dan tipe data ini dapat membawa nilai 0, 1, X, atau Z. Nilai dalam sinyal tergantung dari pemicunya (driver-nya). Jika nilai dari driver berubah, maka nilai dari net juga akan berubah. Dengan demikian, tipe data net tidak digunakan untuk menyimpan nilai, tetapi lebih kepada menghantarkan/meneruskan nilai.
Salah satu tipe data yang paling umum dari net adalah wire. Tipe data wire dapat disintesis oleh software, dan tipe data inilah yang paling banyak digunakan dalam bahasa pemrograman Verilog. Sebuah tipe data wire merepresentasikan sinyal 1-bit. Contoh penggunaannya adalah sebagai berikut:

wire p; // 1-bit sinyal dengan nama p
wire q, r; //dua buah sinyal 1-bit dengan nama q dan r

Selain tipe data wire, terdapat juga tipe data yang lain, diantaranya wor (wired-OR), wand (wired-AND), supply0 (untuk memodelkan Vss, GND, dan power supply), dan lain-lain. Namun demikian, kita tidak akan membahas secara detail tipe-tipe data tersebut saat ini.

Tipe Data Variable

Tipe data variabel ini digunakan untuk memodelkan media penyimpanan (storage). Tipe ini juga dapat menyimpan Nilai 0, 1, X, dan Z. Tipe data ini dapat mempertahankan nilainya (hold) sampai sintak selanjutnya yang mengharuskan varibel tersebut berganti nilai. Salah satu tipe variabel yang paling banyak digunakan adalah reg, dan kita akan banyak menggunakan reg pada tutorial-tutorial selanjutnya. Berikut tipe variabel selengkapnya:

TipeKeterangan
regVariabel untuk memodelkan penyimpanan nilai logika. Dapat meng-handle nilai 0, 1, X atau Z.
integerTipe data integer. Memiliki panjang 32-bit
realMerepresentasikan nilai riil. Memiliki panjang 64-bit
timeMemiliki panjang 64-bit unsigned integer.
realtimesama dengan time, namun dalam bilangan riil

Vektor

Adakalanya kita harus memodelkan suatu data dalam bentuk vektor. Misalnya, jika kita ingin memodelkan suatu bus (beberapa penghantar) dan juga beberapa media penyimpanan (register), maka kita akan menggunakan vektor. Untuk membentuk vektor dalam Verilog, kita dapat menggunakan aturan berikut:

<tipe> [<Indeks MSB> : <Indeks LSB>] nama_vector

Pada aturan di atas, kita tentukan dahulu tipe data apa yang dipakai. Kemudian, kita bungkus indeks dengan tanda kurung siku. Di dalam kurung siku tersebut, indeks MSB (Most Significant Bit) berada paling kiri, dan indeks LSB (Least Significant Bit) berada paling kanan. Terakhir, beri nama vektor yang diinginkan.
Contoh menggunakan vektor adalah sebagai berikut:

wire [7:0] Jumlah;          //menyatakan 8-bit vektor dengan tipe data wire. MSB memiliki indeks 7 sedangkan LSB berindeks 0
reg [15:0] Q;               //menyatakan 16-bit vektor bertipe data reg dengan nama Q
reg [3:0] dataIn, dataOut;  //mendeklarasikan dua buah variabel berbeda (dataIn dan dataOut), dengan panjang yang sama, yaitu 4-bit


Demikian tutorial pada sesi ini. Kita akan lanjutkan pada tutorial selanjutnya. Terima kasih

217
Image

Kusuma Wardana

I Nyoman Kusuma Wardana, yang akrab dipanggil Kusuma, lahir dan besar di Bali. Ia tinggal di Desa Wisata Ubud, dan lebih banyak melaksanakan aktivitasnya di Denpasar. Profesinya adalah sebagai staf pengajar di Jurusan Teknik Elektro, Politeknik Negeri Bali. Saat ini Ia menjadi salah satu penulis di tutorkeren.com.

Artikel Menarik Lainnya
Mari Gabung

Halo Emo 51 , Ada yang ingin disampaikan? Jangan sungkan untuk gabung diskusi ini. Silahkan Login dulu atau Daftar baru.