- 1 1. Pendahuluan: Pentingnya dan Tujuan “display” dalam Verilog
- 2 2. Dasar‑dasar $display: Sintaks, Kasus Penggunaan, dan Perhatian
- 3 3. Membandingkan Sistem Tugas Log Output: $display, $write, $strobe, $monitor
- 4 4. Spesifikator Format dan Teknik Display Lanjutan
- 5 5. Contoh Praktis: Menggunakan $display di Test Bench dan Modul
- 6 6. Aplikasi Display‑Control (Pixel/Teks/Gambar)
- 7 7. Penggunaan yang Tepat dan Tips Berdasarkan Skenario Aplikasi
- 8 8. FAQ (Pertanyaan yang Sering Diajukan)
- 8.1 Q1. Apa perbedaan antara $display dan $monitor?
- 8.2 Q2. Kapan saya harus menggunakan $strobe?
- 8.3 Q3. Apa kegunaan spesifikator format %m?
- 8.4 Q4. Log saya menjadi sangat besar karena saya menggunakan banyak $display. Apa yang harus saya lakukan?
- 8.5 Q5. Bisakah $display digunakan untuk sintesis (FPGA/ASIC)?
- 8.6 Q6. Bagaimana cara menampilkan teks atau gambar pada perangkat keras sebenarnya?
- 9 9. Kesimpulan & Langkah Selanjutnya
1. Pendahuluan: Pentingnya dan Tujuan “display” dalam Verilog
Apa Arti “display” dalam Verilog?
Dalam Verilog, $display adalah tugas sistem yang digunakan sebagai alat untuk “menampilkan” keadaan internal suatu desain selama simulasi. Mirip dengan printf di C, ia memungkinkan Anda mengeluarkan sinyal, nilai variabel, dan string ke terminal atau konsol—memainkan peran sentral dalam debugging dan verifikasi fungsional.
Mengapa $display Penting untuk Pengembangan Verilog?
- Meningkatkan efisiensi debugging : Pada desain sirkuit yang kompleks, memvisualisasikan apakah sinyal internal berfungsi dengan benar sangat penting. Dengan menggunakan
$display, Anda dapat langsung memeriksa nilai sinyal yang diinginkan selama simulasi. - Visualisasi simulasi : Saat melacak transisi nilai pada titik waktu tertentu, gelombang saja mungkin tidak cukup. Log tampilan menyediakan cara yang dapat diandalkan untuk menandai momen‑momen tepat tersebut.
- Bermanfaat untuk dokumentasi juga : Saat menyampaikan maksud desain atau aturan operasional kepada insinyur lain, menyisipkan log tampilan yang beranotasi dapat meningkatkan pemahaman kode.
Tujuan dan Struktur Artikel Ini
Dalam artikel ini, kami akan menjelaskan secara metodis hal‑hal berikut:
- Sintaks dasar dan penggunaan : Pengantar yang cermat tentang sintaks fundamental dan penggunaan
$display. - Perbandingan dengan tugas sistem lainnya : Kami akan menguraikan perbedaan antara tugas‑tugas terkait tampilan seperti
$write,$strobe, dan$monitor. - Spesifikator format dan teknik penggunaan lanjutan : Penggunaan spesifikator format seperti
%d,%b,%h,%s, serta teknik tampilan khusus akan diperkenalkan. - Contoh penggunaan praktis : Kami akan menunjukkan contoh konkret dalam test bench dan kode, memberikan pengetahuan yang dapat langsung diterapkan.
- Aplikasi kontrol tampilan : Contoh kasus penggunaan akan mencakup output perangkat keras seperti LCD atau kontrol monitor serta menampilkan output teks/gambar.
Dengan struktur ini, baik pemula maupun pengguna menengah dapat memahami $display dalam Verilog dengan tepat dan menerapkannya dalam praktik. Pada setiap bagian berikutnya, kami akan melanjutkan dengan jelas menggunakan contoh dan diagram bila memungkinkan.
2. Dasar‑dasar $display: Sintaks, Kasus Penggunaan, dan Perhatian
Sintaks Dasar $display
Saat menggunakan $display dalam Verilog, sintaks dasar adalah sebagai berikut.
$display("string or format specifiers", signal1, signal2, ...);
- Bagian string : Tulis teks apa pun atau spesifikator format (misalnya:
%d,%b,%h). - Argumen : Daftar nama sinyal atau variabel yang akan dikeluarkan sesuai format yang bersangkutan.
Contoh: Menampilkan hitungan jam dan nilai sinyal
$display("Time=%0t : clk=%b, reset=%b", $time, clk, reset);
Pada contoh ini, waktu simulasi serta nilai sinyal clock/reset dikeluarkan.
Kasus Penggunaan $display
- Memahami kemajuan simulasi Dengan menyisipkan
$displaypada titik‑titik tertentu dalam desain Anda dapat memverifikasi bagian kode mana yang telah dijalankan. - Verifikasi nilai sinyal Bahkan ketika penampil gelombang menyulitkan pemahaman intuitif tentang cabang kondisional atau transisi status, output berupa teks membuat pemahaman menjadi lebih mudah.
- Menampilkan pesan bersyarat Dengan menggabungkan dengan pernyataan
ifAnda dapat mencatat pesan hanya ketika kondisi tertentu terpenuhi.if (reset) $display("Reset asserted at %0t", $time);
Perbedaan antara $display dan $write
$display secara otomatis menambahkan baris baru di akhir output. Sebaliknya, $write melanjutkan output tanpa menambahkan baris baru.
Contoh:
$display("Hello");
$display("World");
Output:
Hello
World
$write("Hello");
$write("World");
Output:
HelloWorld
Jika Anda memerlukan log yang lebih jelas baris per baris, gunakan $display. Ketika Anda ingin memformat output pada satu baris, gunakan $write.
Perhatian
- Hindari output berlebihan Jika Anda menggunakan
$displaysetiap siklus clock, log akan menjadi sangat besar dan keterbacaan menurun. → Gunakan kondisional untuk mengurangi output. - Manfaatkan tampilan waktu Menampilkan
$timeatau$realtimememungkinkan Anda menangkap timing operasi secara akurat. - Tugas hanya untuk simulasi
$displaytidak dapat digunakan untuk sintesis (implementasi FPGA/ASIC). Ini adalah alat debug yang hanya untuk simulasi.
3. Membandingkan Sistem Tugas Log Output: $display, $write, $strobe, $monitor
Verilog menyediakan tugas sistem selain $display untuk output. Perbedaan penggunaan dan timing‑nya membuat penting untuk memahami cara menggunakannya secara terpisah.
$display: Tugas Display Standar
- Karakteristik Secara otomatis menambahkan newline dan mencatat satu baris per pemanggilan.
- Kasus Penggunaan Paling umum digunakan sebagai metode debug dasar; Anda dapat memanggilnya kapan saja untuk output satu kali.
$write: Display Tanpa Newline
- Karakteristik Tidak menambahkan newline sehingga output berlanjut pada baris yang sama.
- Kasus Penggunaan Berguna ketika Anda ingin menampilkan beberapa nilai berdampingan.
- Contoh
$write("A=%d, ", a); $write("B=%dn", b);→ Output:A=5, B=10.
$strobe: Output pada Akhir Siklus Simulasi
- Karakteristik Mencetak nilai setelah semua evaluasi simulasi pada langkah saat ini selesai.
- Kasus Penggunaan Berguna untuk menghindari kondisi balapan (ketika beberapa sinyal berubah secara bersamaan).
- Contoh
$strobe("Time=%0t, signal=%b", $time, sig);→ Sementara$displaymungkin menampilkan nilai interim,$strobemenampilkan nilai yang sudah stabil.
$monitor: Output Pelacakan Otomatis
- Karakteristik Secara otomatis menampilkan ketika sinyal yang dipantau berubah.
- Kasus Penggunaan Praktis ketika Anda ingin memantau sekumpulan sinyal secara terus‑menerus.
- Contoh
$monitor("At %0t: a=%b, b=%b", $time, a, b);→ Mencatat ketikaaataubberubah.
Tabel Ringkasan
| Tugas | Newline | Timing Output | Kasus Penggunaan Utama |
|---|---|---|---|
$display | Ya | Saat dipanggil | Output log dasar |
$write | Tidak | Saat dipanggil | Format berdampingan |
$strobe | Ya | Setelah siklus simulasi selesai | Memeriksa nilai yang stabil |
$monitor | Ya | Otomatis saat sinyal berubah | Pemantauan kontinu |
Tips untuk Penggunaan Efektif
- Gunakan
$displaysecara default : Mudah dibaca dan cocok untuk pemula. - Gunakan
$writeketika Anda menginginkan output gabungan satu baris . - Gunakan
$strobeketika Anda memerlukan nilai yang sudah stabil setelah perubahan . - Gunakan
$monitorketika Anda memerlukan pemantauan sinyal secara terus‑menerus .
4. Spesifikator Format dan Teknik Display Lanjutan
Dengan tugas seperti $display atau $write, Anda dapat menyertakan “spesifikator format” dalam string untuk menampilkan sinyal atau variabel dalam format yang diinginkan. Karena mirip dengan printf di C, penggunaan yang tepat berdasarkan tujuan Anda secara signifikan meningkatkan efisiensi debugging.
Spesifikator Format Dasar
| Spesifikator | Deskripsi | Contoh Output |
|---|---|---|
%b | biner | 1010 |
%d | desimal | 10 |
%h | heksadesimal | A |
%o | oktal | 12 |
%c | karakter ASCII | A |
%s | string | Hello |
%t | waktu simulasi | #100 dll. |
%m | nama hierarki modul | top.u1.u2 |
Contoh Praktis
- Tampilkan sinyal dalam beberapa format
reg [7:0] data = 8'b10101010; $display("data = %b (bin), %d (dec), %h (hex)", data, data, data);→ Contoh output:data = 10101010 (bin), 170 (dec), AA (hex) - Periksa hierarki modul
$display("Current module hierarchy is %m");→ Contoh output:Current module hierarchy is top.u1.counter - Tampilkan waktu simulasi
$display("Time=%0t: clk=%b", $time, clk);→ Contoh output:Time=100: clk=1
Teknik Display Lanjutan
- Zero‑padding & lebar bidang Anda dapat menentukan zero‑padding atau lebar bidang seperti
%0d. Contoh:$display("Count=%04d", count);→ Output:Count=0012 - Perbedaan signed vs unsigned
%dmemperlakukan nilai sebagai signed,%umemperlakukan nilai sebagai unsigned. Jika nilai negatif tidak ditampilkan seperti yang diharapkan, perbaiki spesifikatornya. - Pemformatan pesan multi‑baris Gunakan
\nuntuk memecah baris demi keterbacaan. Contoh:$display("Start of test\nSignal A=%b\nSignal B=%b", A, B);
Precautions
- Perhatikan lebar bit : Sinyal Verilog dapat memiliki lebar yang berbeda; penggunaan
%ddapat menyebabkan pemotongan atau masalah sign‑extension. - Menangani nilai tak terdefinisi (X, Z) : Jika Anda menyertakan bit yang tak terdefinisi, penggunaan
%bakan menampilkanxatauzsecara langsung.
5. Contoh Praktis: Menggunakan $display di Test Bench dan Modul
Di bagian ini kami akan memperkenalkan penggunaan efektif $display melalui contoh kode Verilog nyata, mencakup dasar‑dasar test bench hingga logging debug bersyarat.
Contoh Dasar: Output di Test Bench
Dengan menyisipkan $display ke dalam test bench, Anda dapat mengamati perilaku selama simulasi.
module tb_counter;
reg clk;
reg reset;
wire [3:0] count;
// DUT (Device Under Test)
counter uut (
.clk(clk),
.reset(reset),
.count(count)
);
// Clock generation
initial begin
clk = 0;
forever #5 clk = ~clk; // invert every 5 units
end
// Test scenario
initial begin
reset = 1;
#10 reset = 0;
#50 $finish;
end
// Display state
always @(posedge clk) begin
$display("Time=%0t | reset=%b | count=%d", $time, reset, count);
end
endmodule
Pada contoh ini, setiap tepi naik clock memicu output reset dan count. Karena Anda dapat memeriksa log teks serta gelombang, pelacakan perilaku menjadi lebih mudah.
Contoh Display Bersyarat
Dengan menggabungkan pernyataan if Anda dapat mencatat hanya ketika kondisi tertentu terpenuhi.
always @(posedge clk) begin
if (count == 4'd10) begin
$display("Count has reached 10 (Time=%0t)", $time);
end
end
→ Ini memungkinkan Anda menghindari log berlebih sambil menyoroti peristiwa yang penting.
Contoh Pesan Debug
Saat melakukan debugging desain, efektif untuk menangkap ketika sebuah sinyal masuk ke “status tak terduga”.
always @(posedge clk) begin
if (count > 4'd12) begin
$display("WARNING: count overflow detected! Time=%0t, value=%d", $time, count);
end
end
→ Anda dapat dengan cepat menemukan kesalahan desain atau perilaku simulasi yang tidak diharapkan.
Memantau Banyak Sinyal Secara Bersamaan
Ketika menampilkan banyak sinyal, mengumpulkannya dalam satu baris menggunakan $display membuat log lebih mudah dibaca.
$display("Time=%0t | clk=%b | reset=%b | A=%h | B=%h | SUM=%h",
$time, clk, reset, A, B, SUM);

Ringkasan Tips Praktis
- Letakkan
$displaydi test bench untuk memvisualisasikan kemajuan - Gunakan cabang bersyarat untuk menyaring log
- Buat pesan peringatan untuk mendeteksi anomali
- Konsolidasikan beberapa sinyal dalam satu baris untuk meningkatkan keterbacaan
6. Aplikasi Display‑Control (Pixel/Teks/Gambar)
Sampai saat ini, kami telah memperkenalkan $display untuk log simulasi. Sementara itu, Verilog juga banyak digunakan untuk “display control” pada implementasi perangkat keras (LCD, VGA, output HDMI). Pada bagian ini, kami secara singkat memperkenalkan cara mengimplementasikan tampilan layar pada level perangkat keras.
Konsep Dasar Display Control
Untuk menampilkan teks atau gambar di layar, Anda harus menghasilkan sinyal video, bukan sekadar menggunakan $display. Sinyal kontrol tipikal meliputi:
- HSYNC (Horizontal Sync) : Sinyal yang menandakan akhir setiap baris
- VSYNC (Vertical Sync) : Sinyal yang menandakan akhir setiap frame
- RGB Data : Sinyal yang mewakili warna tiap piksel (misalnya, 8‑bit × 3 = 24‑bit warna)
Di Verilog, Anda mengendalikan sinyal‑sinyal ini melalui penghitung dan mesin status serta mengeluarkannya berdasarkan timing untuk mewujudkan “tampilan layar”.
Contoh 1: Menampilkan Color Bars
Contoh paling dasar adalah menampilkan bar warna secara horizontal pada sebuah tampilan.
always @(posedge clk) begin
if (h_counter < 100) rgb <= 24'hFF0000; // red
else if (h_counter < 200) rgb <= 24'h00FF00; // green
else if (h_counter < 300) rgb <= 24'h0000FF; // blue
else rgb <= 24'h000000; // black
end
→ Ini menghasilkan bar warna merah, hijau, dan biru yang teralign secara horizontal di seluruh layar.
Contoh 2: Tampilan Teks
Untuk tampilan teks, Anda menyiapkan font ROM dan mengubah pola titik setiap karakter menjadi piksel.
// Referencing the pattern of 'A' from the font ROM and displaying
if (font_rom[char_code][y][x] == 1'b1)
rgb <= 24'hFFFFFF; // white for display
else
rgb <= 24'h000000; // black background
→ Ini menggambar karakter tertentu (misalnya, “A”) pada layar.
Contoh 3: Tampilan Gambar
Untuk menampilkan gambar, Anda membaca data bitmap (ROM atau memori eksternal) yang telah disimpan sebelumnya dan mengubahnya menjadi output piksel.
rgb <= image_rom[addr]; // Retrieve color data from ROM
Dalam sistem tertanam yang menggunakan FPGA, metode ini memungkinkan Anda menampilkan ikon atau logo sederhana.
Perbedaan Dibandingkan Debug $display
$displayadalah output teks (hanya simulasi)- Kontrol tampilan adalah generasi sinyal video (dapat diimplementasikan pada perangkat keras)
Meskipun tujuan mereka berbeda, pelajar Verilog sering kebingungan antara keduanya.
- “Saya ingin memverifikasi perilaku selama simulasi” → Gunakan
$display - “Saya ingin menampilkan ke layar sebenarnya pada FPGA” → Rancang logika sinyal video
Perluasan Aplikasi
- Pada papan FPGA untuk pembelajaran, Verilog sering digunakan untuk tampilan LED 7‑segmen atau layar LCD kecil.
- Dengan melangkah lebih jauh, Anda dapat membangun sistem yang mendukung output VGA/HDMI untuk pengembangan game atau tampilan GUI.
- Dengan menggabungkan pengetahuan tentang
$displaydengan logika kontrol tampilan, Anda dapat menangani “tampilan” baik dalam simulasi maupun perangkat keras sebenarnya.
7. Penggunaan yang Tepat dan Tips Berdasarkan Skenario Aplikasi
Ketika kita membicarakan “tampilan” dalam Verilog, ada dua aspek: tugas $display hanya simulasi, dan kontrol tampilan implementasi perangkat keras. Menggunakan masing‑masing secara tepat menghasilkan pengembangan dan debugging yang efisien.
Penggunaan dalam Simulasi
$displaysebagai log debug- Keluarkan variabel atau sinyal penting dengan
$displayuntuk memeriksa apakah desain Anda berperilaku seperti yang diharapkan. - Memverifikasi “nilai dalam kondisi tertentu” atau “counter mencapai titik” melalui log sangat efisien.
- Keluarkan variabel atau sinyal penting dengan
- Hindari output berlebihan
- Mengeluarkan output pada setiap siklus clock membanjiri log dan mengurangi keterbacaan. Persempit kondisi.
- Contoh:
if (state == ERROR) $display("Error occured at %0t", $time);
- Membedakan antara tugas
$monitor→ Untuk sinyal yang ingin Anda pantau secara terus‑menerus$strobe→ Ketika Anda perlu mengeluarkan nilai yang sudah stabil$write→ Untuk output horizontal yang terformat
Penggunaan dalam Kontrol Tampilan Perangkat Keras
- Tampilan 7‑segmen untuk pembelajaran
- Dalam proyek pemula FPGA, menampilkan nilai counter pada LED 7‑segmen adalah hal standar.
- Gabungkan dengan output simulasi
$displayuntuk memperdalam pemahaman tentang perbedaan tampilan vs simulasi.
- Kontrol monitor LCD atau VGA
- Gunakan font ROM atau image ROM untuk menampilkan teks atau gambar.
- Dengan juga menggunakan
$displaydalam simulasi, Anda dapat memverifikasi dua kali bahwa generasi sinyal video sudah benar.
- Overlay debug pada perangkat keras
- Anda dapat menambahkan overlay “nilai counter”, “koordinat”, “pesan debug” pada output video sebenarnya.
- Dalam pengembangan FPGA, umum untuk “menjadikan layar itu sendiri sebagai alat debugging”.
Tips Praktis
- Ikuti alur simulasi → perangkat keras Pertama gunakan
$displayuntuk memverifikasi perilaku dalam simulasi, kemudian pindah ke logika kontrol tampilan untuk implementasi perangkat keras. - Gunakan log dan gelombang secara bersamaan Log teks dari
$displaymenunjukkan “waktu terjadinya peristiwa”, sementara gelombang menampilkan “transisi detail”. Menggunakan keduanya meningkatkan presisi debugging. - Seragamkan format pesan dalam pengembangan tim Menstandarisasi format pesan
$display(prefiks, tampilan waktu, dll.) memudahkan analisis log ketika banyak orang bekerja bersama.
Ringkasan
- Tugas tipe
$displayhanya untuk simulasi “alat observasi” - Kontrol tampilan berarti implementasi perangkat keras “metode tampilan”
- Dengan menggunakan masing‑masing secara tepat dan menggabungkannya, Anda dapat memungkinkan pengembangan yang efisien
8. FAQ (Pertanyaan yang Sering Diajukan)
Q1. Apa perbedaan antara $display dan $monitor?
A. $display menghasilkan output satu kali pada saat dipanggil. Sebaliknya, $monitor secara otomatis menghasilkan output setiap kali sinyal yang terdaftar berubah.
- Untuk debugging satu kali →
$display - Untuk pemantauan berkelanjutan →
$monitor
Q2. Kapan saya harus menggunakan $strobe?
A. $strobe menghasilkan nilai yang sudah stabil pada akhir siklus simulasi. Misalnya, ketika beberapa sinyal berubah secara bersamaan pada tepi clock, $display mungkin menampilkan nilai antara. Dalam kasus seperti itu $strobe berguna untuk menampilkan nilai akhir.
Q3. Apa kegunaan spesifikator format %m?
A. %m menghasilkan nama hierarki modul saat ini. Pada desain besar, mencatat “hierarki mana pesan berasal” membuat analisis jauh lebih mudah.
$display("Current module: %m");
Contoh output:
Current module: top.u1.counter
Q4. Log saya menjadi sangat besar karena saya menggunakan banyak $display. Apa yang harus saya lakukan?
A. Langkah‑langkah berikut efektif:
- Gunakan pernyataan
ifuntuk menyaring output - Hanya output deteksi error atau peristiwa tertentu
- Gunakan
$monitoruntuk memantau hanya sinyal minimum yang diperlukan - Output ke file log dan terapkan alat penyaringan selama analisis
Q5. Bisakah $display digunakan untuk sintesis (FPGA/ASIC)?
A. Tidak. $display adalah tugas hanya untuk simulasi. Alat sintesis mengabaikannya sehingga tidak muncul di perangkat keras sebenarnya. Jika Anda ingin menampilkan output pada perangkat keras nyata, Anda harus merancang dengan “LED 7‑segmen”, “LCD”, “logika kontrol VGA”, dll., dalam Verilog.
Q6. Bagaimana cara menampilkan teks atau gambar pada perangkat keras sebenarnya?
A. Tidak melalui $display, melainkan dengan menghasilkan sinyal video.
- Tampilan 7‑segmen → Untuk tampilan numerik atau karakter sederhana
- VGA/LCD → Menghasilkan sinyal HSYNC, VSYNC, RGB dan mengontrolnya
- Teks → Gunakan ROM font dan keluarkan pola titik
- Gambar → Simpan bitmap di ROM atau memori eksternal dan keluarkan piksel sesuai
9. Kesimpulan & Langkah Selanjutnya
Ringkasan Artikel Ini
Dalam artikel ini kami membahas “display” dalam Verilog dari dasar hingga aplikasi. Poin-poin utama meliputi:
Dasar-dasar
$display- Tugas simulasi yang menampilkan sinyal atau variabel, dapat digunakan serupa dengan
printfdi C.
- Tugas simulasi yang menampilkan sinyal atau variabel, dapat digunakan serupa dengan
Perbedaan dengan tugas terkait
$write→ Menampilkan tanpa baris baru$strobe→ Menghasilkan nilai stabil pada akhir siklus simulasi$monitor→ Secara otomatis memantau perubahan sinyal
Menggunakan spesifikator format
- Dengan menggunakan
%b,%d,%h,%m,%t, Anda dapat menghasilkan log yang lebih jelas dan praktis.
- Dengan menggunakan
Contoh praktis
- Sisipkan
$displayke dalam test bench untuk memantau kemajuan. - Gunakan pesan bersyarat untuk memungkinkan debugging yang efisien.
- Sisipkan
Aplikasi dalam kontrol tampilan
$displayhanya untuk simulasi; implementasi perangkat keras menggunakan HSYNC, VSYNC, RGB untuk menampilkan teks/gambar.- Dari mempelajari tampilan 7‑segmen hingga kontrol VGA/HDMI lanjutan, ekspansi memungkinkan.
- Maju ke SystemVerilog → Dalam bahasa penerus SystemVerilog Anda dapat menggunakan fitur debug yang lebih canggih (assertion,
$displayyang ditingkatkan, dll.). - Menggabungkan dengan penampil gelombang → Dengan menggabungkan log
$displaydan data gelombang, Anda dapat menganalisis nilai numerik serta transisi, meningkatkan presisi debugging. - Pelajari output tampilan perangkat keras → Pada proyek papan FPGA kecil, coba keluarkan pada 7‑segment atau LCD untuk merasakan perbedaan antara “tampilan simulasi” dan “kontrol tampilan perangkat keras”.
- Terapkan dalam pengembangan tim → Dengan menstandarisasi format pesan
$display, Anda meningkatkan efisiensi analisis log dalam pengembangan tim multi‑orang.
Penutup
$display lebih dari sekadar “output teks”. Ini adalah alat yang kuat untuk debugging simulasi. Dan ketika Anda memasuki dunia kontrol tampilan, Anda dapat merasakan kegembiraan menampilkan grafik pada monitor nyata melalui FPGA.
Saya harap artikel ini membantu pembelajar Verilog memahami baik “debugging simulasi” maupun “output tampilan perangkat keras” dengan jelas.

