Sahabat Robonesia, pada artikel kali ini akan disajikan penjelasan terkait angka (number) dalam pemrograman Verilog. Pembahasan akan meliputi definisi angka, jenis angka, basis/radix angka, ukuran/lebar-bit angka, dan format representasi angka yang direkomendasikan maupun yang tidak direkomendasikan dalam pemrograman Verilog.
Table of Contents
Toggle6.1 Angka (Number) dalam Pemrograman Verilog
Angka (Number) dalam Pemrograman Verilog adalah konsep fundamental yang digunakan untuk mewakili nilai numerik dalam desain sistem digital. Angka perlu ditentukan dalam deskripsi hardware desain sistem digital, yaitu sebagai status logika jalur sinyal, bus, nilai tunda (delay), dan angka yang akan dimuat ke dalam suatu register.
6.2 Jenis Angka dalam Pemrograman Verilog
Pemrograman Verilog mengenal dua jenis angka, yaitu:
- Integer (int): merupakan angka bulat yang tidak memiliki bagian desimal.
- Contoh: 1, 7, 10, -17.
- Real: merupakan angka yang memiliki bagian desimal (Angka di belakang tanda koma).
- Contoh: 3.17, -0.7, 2.75.
6.3 Basis (Radix) Angka dalam Pemrograman Verilog
Verilog menggunakan beberapa basis angka atau bilangan (Disebut juga dengan “Radix”) untuk mewakili nilai numerik dalam desain sitem digital, antara lain:
- Angka Berbasis 2 – Biner (Binary):
Angka biner adalah angka berbasis 2 yang pada penulisannya dalam sistem digital diawali dengan karakter huruf ‘b’ atau ‘B’. Angka biner terdiri atas dua angka, yaitu 1 dan 0.
Contoh: b1010, B1101
- Angka Berbasis 8 – Oktal (Octal):
Angka oktal adalah angka berbasis 8 yang pada penulisannya dalam sistem digital diawali dengan karakter huruf ‘o’ atau ‘O’. Angka oktal terdiri atas 8 angka, yaitu 0, 1, 2, 3, 4, 5, 6, dan 7.
Contoh: o10, O25, o377
- Angka Berbasis 10 – Desimal (Decimal):
Angka desimal adalah angka berbasis 10 yang pada penulisannya dalam sistem digital tidak diawali dengan suatu karakter huruf tertentu seperti pada bilangan biner, oktal, atau heksadesimal. Angka desimal terdiri atas 10 angka, yaitu 0, 1, 2, 3, 4, 5, 6, 7, 8, dan 9.
Contoh: 8, 28, 128
- Angka Berbasis 16 – Heksadesimal (Hexadecimal):
Angka heksadesimal adalah angka berbasis 16 yang pada penulisannya dalam sistem digital diawali dengan karakter huruf ‘h’ atau ‘H’. Angka heksadesimal terdiri atas 16 angka, yaitu 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, dan F.
Contoh: h10, H25, hFF
6.4 Ukuran/Lebar Bit Angka dalam Pemrograman Verilog
Dalam pemodelan perangkat keras sistem digital, kadang diperlukan untuk merepresentasikan angka dengan lebar bit (Size) yang berbeda. Sehingga muncul pertanyaan, “Mengapa dalam desain sistem digital penting untuk memperhatikan seberapa lebar-bit yang digunakan untuk menampung nilai dan ukuran suatu angka? “
Jawabannya adalah:
Karena seorang IC design enginer harus selalu ingat bahwa area hardware (Wafer semiconductor) untuk desain sistem digital yang dibangnnya adalah terbatas, sehingga desain sistem digitalnya harus efisien secara ukuran (Size) dan memiliki prinsip bahwa semakin kecil ukuran desain sistem digital, maka akan semakin banyak jumlah IC yang dihasilkan dalam satu keping wafer semiconductor. Sehingga mempertimbangkan penggunaan ukuran atau lebar-bit angka dalam desain sistem digital adalah hal yang sangat penting untuk menjadi pertimbangan.
Dalam proses simulasi, jumlah atau lebar bit atau ukuran angka (Size) adalah penting untuk beberapa operasi. Tetapi untuk proses sintesis desain sistem digital, ukuran angka (Size) menjadi lebih penting. Hal yang merupakan pemborosan penggunaan area hardware jika sebenarnya suatu desain sistem digital hanya membutuhkan 8-bit area hardware, namun hasil sistesis malah menggunakan 32-bit area hardware, karena akibat dari lebar angka yang tidak ditentukan oleh IC design engineer. Sehingga merupakan kebiasaan IC design engineer yang baik untuk selalu memberi tahu kompiler Verilog terkait ukuran atau lebar bit suatu angka yang diperlukan untuk desain sistem digital yang sedang dibangunnya.
6.5 Format Representasi Angka yang Direkomendasikan
Dalam pemrograman Verilog, angka dapat ditentukan dalam bentuk bilangan biner (basis 2) , oktal (basis 8), desimal (basis 10), atau heksadesimal (basis 16). Representasi angka yang direkomendasikan dalam pemrograman Verilog memiliki tiga unsur utama, yaitu ukuran (Size), radix/basis, dan nilai angkai (Value). Apabila ada kebutuhan untuk desain sistem digital tertentu, representasi angka ini dapat ditambahkan dengan tanda negatif (“ – “) di depan unsur ukuran (Size) yang menjadikan angka tersebut menjadi angka bertanda (Signed number), namun hal ini hanya bersifat opsional. Gambar 1 menunjukkan format representasi angka yang direkomendasikan dalam pemrograman Verilog dengan setiap unsur penyusunnya dijelaskan secara terpisah.

Gambar 1. Format representasi angka dalam pemrograman Verilog
Berikut ini adalah penjelasan untuk masing-masing unsur dalam format representasi angka pada Gambar 1:
1. Unsur [Sign]
• Unsur “Sign” adalah tanda minus (“ – “) yang diletakkan di depan unsur ukuran angka (Size) untuk menunjukkan bahwa angka tersebut merupakan angka yang bertanda (Signed) atau angka negatif. Untuk angka tidak bertanda (Unsigned) atau angka positif, maka tanda tersebut tidak perlu dituliskan dan tidak perlu juga diberi tanda plus (“ + “).
• Angka bertanda (Signed) hanya boleh direpresentasikan menggunakan angka desimal (basis 10).
• Angka negatif direpresentasikan dalam bentuk komplemen 2.
• Unsur “Sign” adalah bersifat opsional. Tergantung pada kebutuhan desain sistem digital yang dibangun.
2. Unsur [Size]
Unsur “Size” menentukan ukuran atau lebar-bit suatu angka. Angka tersebut dikenal sebagai angka berukuran (sized number) jika memiliki unsur “Size” dan dikenal sebagai angka tidak berukuran (unsized number) jika tidak memiliki unsur “Size”.
Dalam pemrograman Verilog dikenal adanya angka berukuran (Sized number) dan angka tidak berukuran (Unsized number). Berikut penjelasannya secara singkat:
A. Angka berukuran (Sized number)
Angka berukuran menentukan jumlah atau lebar bit secara eksplisit. Beberapa contoh angka berukuran dapat dilihat pada Tabel 1.
Catatan untuk diperhatikan:
- Jika ukuran angka lebih kecil (Misalnya, hanya 1-bit) daripada ukuran angka yang ditentukan (Misalnya, 5-bit), maka aktual nilai yang disimpan dan dikompilasi akan ditambah dengan angka 0 di sebelah kiri, sehingga ukuran angkanya menjadi sama dengan ukuran angka yang ditentukan.
- Namun, jika bit paling kiri adalah x atau z, maka angka x atau z yang akan ditambahkan di sebelah kiri.
Tabel 1. Contoh angka berukuran (Sized number)

B. Angka tidak berukuran (Unsized number)
Angka tidak berukuran tidak menentukan jumlah atau lebar bit secara eksplisit. Beberapa contoh angka tidak berukuran dapat dilihat pada Tabel 2.
Catatan untuk diperhatikan:
- Angka tak berukuran menghilangkan unsur “size” dalam representasinya.
- Ukuran angka sebenarnya bergantung pada ukuran/lebar-bit data arsitektur komputer host yang digunakan dalam pembuatan desain sistem digital, dengan ukuran minimal 32-bit.
- Pada angka tidak berukuran, unsur “radix/base” dapat dihilangkan jika bilangan tersebut merupakan angka desimal (Basis 10).
Tabel 2. Contoh angka tidak berukuran (Unsized number)

3. Unsur [Radix]
Unsur “Radix” adalah karakter huruf yang menentukan basis (Base) suatu angka.
- Nilai angka yang diawali dengan karakter huruf “b” atau “B”, menunjukkan bahwa angka tersebut adalah angka basis 2 (Biner).
- Nilai angka yang diawali dengan karakter huruf “o” atau “O”, menunjukkan bahwa angka tersebut adalah angka basis 8 (Octal).
- Nilai angka yang diawali dengan karakter huruf “d” atau “D”, menunjukkan bahwa angka tersebut adalah angka basis 10 (Decimal).
- Nilai angka yang diawali dengan karakter huruf “h” atau “H” , menunjukkan bahwa angka tersebut adalah angka basis 16 (Hexadecimal).
Karakter tanda kutip tunggal (‘) pada penulisan unsur radix harus segera diikuti oleh karakter yang mewakili basis angka (Radix). Spasi kosong di antaranya tidak diperbolehkan. Namun, spasi kosong tersebut dapat mendahului unsur ukuran angka.
4. Unsur [Value]
Unsur “Value” menentukan nilai angka dalam basis yang sesuai.
Catatan untuk diperhatikan terkait dengan unsur [Value]:
- Dalam penulisan unsur nilai, karakter garis bawah atau under-score (“_”) dapat ditambahkan untuk kejelasan dan menambah keterbacaan. Namun itu akan diabaikan oleh kompiler (Tidak di sintesis oleh kompiler).
- Pada unsur nilai (Value), huruf kapital dapat digunakan sebagai pengganti huruf kecil. Artinya, dalam kasus penulisan nilai angka heksadesimal, karakter huruf (Kapital) A, B, C, D, E, atau F dapat digunakan sebagai pengganti karakter huruf (Kecil) a, b, c, d, e, atau f untuk menentukan digit heksadesimal yang bersangkutan. X atau Z dapat digunakan sebagai pengganti nilai x atau z, masing-masing.
6.5.1 Catatan Penting Terkait Representasi Angka
- Penulisan representasi angka harus ditulis bersambung tanpa spasi.
- Karakter tanda tanya (“?”) dapat digunakan sebagai pengganti nilai “z”.
- Jika pemotongan atau penambahan angka di sebelah kiri dan/atau di sebelah kanan seringkali membingungkan, maka lebih baik merepresentasikan angka secara lengkap.
6.5.2 Representasi Angka/Bilangan Bulat (Integer)
Contoh representasi angka bertipe integer disajikan pada Tabel 3 berikut:
Tabel 3. Contoh representasi angka integer dalam pemrograman Verilog

6.5.3 Representasi Angka Riil (Real)
Angka real dapat dinyatakan dalam notasi desimal atau notasi ilmiah. Notasi desimal memiliki bentuk:
|
1 |
-a.b |
di mana a, b, tanda negatif, dan titik desimal memiliki arti yang biasa.
Angka “a” dan “b” harus ada di dalam angka tersebut. Suatu angka dapat dinyatakan dalam notasi ilmiah sebagai:
|
1 |
4.3e2 |
di mana 4.3 adalah mantissa dan 2 adalah eksponen (Angka 10 pangkat-n). Nilai desimal dari angka ini adalah 4.3 x 102 = 430.
Berikut ini adalah contoh lain dari angka yang direpresentasikan dalam notasi ilmiah.
|
1 2 3 |
–7.3e2 –7.3e–2 7.3e–2 |
Representasi ini umum digunakan.
–7.3e2 = -7.3 x 10 pangkat 2 = -730
–7.3e–2 = -7.3 x 10pangkat -2 = -0.073
7.3e–2 = 7.3 x 10pangkat -2 = 0.073
6.6 Format Representasi Angka yang Tidak Direkomendasikan
Berikut ini adalah contoh representasi angka yang tidak direkomendasikan untuk digunakan dalam pemrograman Verilog dan Testbench-nya.
Di bawah ini, contoh representasi angka yang valid, namun tidak didefinisikan ukuran/lebar-bit-nya secara jelas (eksplisit):
|
1 2 3 4 5 6 |
3 28 255 –3 –28 –255 |
Berikut ini, contoh representasi angka yang tidak valid karena merepresentasikan angka negatif dengan angka non-desimal (tidak diperbolehkan) dan tidak didefinisikan ukurannya secara eksplisit.
|
1 2 3 4 |
3a B7 –5a –B7 |
Dalam pemrograman Verilog, angka yang tidak didefinisikan ukuran/lebar-bit-nya secara eksplisit dianggap memiliki lebar 32-bit (Secara default). Hal ini menyebabkan ukuran area hardware yang digunakan oleh angka-angka tersebut adalah sama, yaitu 32-bit meskipun sebenarnya nilainya tidak membutuhkan ukuran angka 32-bit. Kasus seperti inilah yang menyebabkan ketidak-efisiennan penggunaan area hardware (Wafer semiconductor).
Jika deskripsi desain sistem digital memiliki representasi angka yang ditentukan dalam bentuk yang diberikan dalam contoh-contoh di atas, sintesis kode program Verilog rangkaian akan menetapkan lebar 32-bit untuk angka-angka tersebut dan untuk semua rangkaian terkait. Oleh karena itu, representasi angka seperti pada contoh di atas, meskipun sederhana, sebaiknya dihindari dalam deskripsi desain sistem digital. Representasi bilangan dalam format ini sebaiknya juga dibatasi dalam pembuatan kode program testbench.



