Pengenalan kepada Verilog: Asas, Sintaks, Contoh Reka Bentuk, dan Sumber Pembelajaran untuk Pemula

目次

1. Apa Itu Verilog? Gambaran Keseluruhan dan Kes Penggunaan

Definisi Asas Verilog

Verilog adalah salah satu bahasa penerangan perkakasan (HDL) yang digunakan untuk mereka bentuk litar digital. Manakala bahasa pengaturcaraan perisian menerangkan program komputer, Verilog digunakan untuk menerangkan kelakuan litar dan sistem digital. Dengan menggunakan bahasa ini, anda dapat mempermudah reka bentuk litar yang kompleks dan melaksanakan simulasi serta sintesis dengan cekap (penukaran kepada litar yang boleh dihasilkan). Verilog dibangunkan pada tahun 1984 dan diseragamkan oleh IEEE (Institute of Electrical and Electronics Engineers) pada tahun 1995. Sejak itu, ia terus berkembang dan kini banyak digunakan untuk reka bentuk FPGA (Field-Programmable Gate Array) dan ASIC (Application-Specific Integrated Circuit).

Peranan Verilog dalam Reka Bentuk Litar Digital

Reka bentuk litar digital ialah proses membina sistem yang memproses maklumat menggunakan isyarat elektrik. Contohnya termasuk pemproses dan memori dalam telefon pintar serta komputer. Verilog berfungsi sebagai alat yang cekap untuk mereka bentuk sistem digital tersebut. Secara khusus, ia digunakan dalam senario seperti:

  • Reka bentuk FPGA : FPGA adalah peranti yang sangat fleksibel. Verilog membolehkan jurutera menentukan fungsi FPGA secara bebas dan memprogram semula peranti mengikut keperluan.
  • Reka bentuk ASIC : ASIC ialah litar bersepadu khusus untuk aplikasi tertentu. Verilog membolehkan reka bentuk IC tersuai.
  • Simulasi : Litar yang diterangkan dalam Verilog boleh disimulasikan dalam perisian untuk mengesahkan kelakuan terlebih dahulu, membolehkan pengesanan awal dan pembetulan ralat reka bentuk.

Apa Yang Akan Anda Pelajari dalam Artikel Ini

Artikel ini menyediakan penjelasan langkah demi langkah untuk pemula yang belajar Verilog buat pertama kali atau mereka yang mengulang kaji asas-asasnya. Topik termasuk:

  1. Sintaks asas dan konsep asas Verilog
  2. Contoh reka bentuk praktikal dan teknik penyahpepijatan
  3. Sumber berguna serta cadangan alat

Pembaca sasaran termasuk:

  • Pemula yang ingin belajar Verilog atau HDL
  • Jurutera yang memulakan reka bentuk FPGA atau ASIC
  • Pereka atau pelajar yang mengulang kaji pengetahuan asas

2. Sintaks Asas dan Konsep Verilog

Sintaks dan Struktur Verilog

Mendefinisikan dan Menggunakan Modul

Dalam Verilog, unit paling asas ialah “module”. Modul mewakili komponen litar dan menyimpan penerangan input, output, serta struktur dalaman. Berikut ialah contoh modul ringkas:

module AND_gate (
    input wire a, // input a
    input wire b, // input b
    output wire y // output y
);
    assign y = a & b; // AND operation
endmodule

Kod ini melakukan operasi AND pada dua input (a dan b) dan mengeluarkan hasil ke y. Modul didefinasikan menggunakan kata kunci module dan diakhiri dengan endmodule.

Memilih Jenis Data (wire vs. reg)

Verilog menggunakan dua jenis data utama:

  • wire : Mewakili wayar fizikal. Digunakan untuk menyambungkan isyarat.
  • reg : Mewakili pendaftar. Digunakan untuk menyimpan nilai berdasarkan peristiwa jam.

Contoh:

module Example (
    input wire clk,    // clock input
    input wire rst,    // reset input
    input wire a,      // input a
    output reg y       // output y
);
    always @(posedge clk or posedge rst) begin
        if (rst)
            y <= 0;    // output = 0 on reset
        else
            y <= a;    // assign input a to output y on clock edge
    end
endmodule

Di sini, y perlu menyimpan nilai, jadi jenis reg digunakan dalam blok always.

Struktur Kawalan (if, case) dan Nota Simulasi

Menggunakan Penyataan if

Verilog menggunakan if untuk percabangan bersyarat:

always @(posedge clk) begin
    if (a == 1'b1)
        y <= 1'b0;  // set y = 0 when a is 1
    else
        y <= 1'b1;  // otherwise set y = 1
end

Menggunakan Penyataan case

(Nota: bahagian seterusnya belum disediakan.)

always @(state) begin
    case (state)
        2'b00: y = 1'b0;
        2'b01: y = 1'b1;
        2'b10: y = 1'b0;
        2'b11: y = 1'b1;
        default: y = 1'bx; // unknown state
    endcase
end

Konsep Asas untuk Pemula

Penetapan Blocking vs. Non-Blocking

Verilog menawarkan dua jenis penetapan:

  • Blocking (=) : Dilaksanakan secara berurutan.
  • Non-blocking (<=) : Dilaksanakan secara serentak.

Contoh:

always @(posedge clk) begin
    a = b;     // blocking
    c <= d;    // non-blocking
end

Berfikir secara Selari

Verilog menyokong pelaksanaan selari:

always @(posedge clk) begin
    a <= b + 1;
end

always @(posedge clk) begin
    c <= d - 1;
end

Perbezaan Antara Simulasi dan Sintesis

  • Simulasi : Mengesahkan kelakuan dalam perisian.
  • Sintesis : Menukar reka bentuk menjadi perkakasan.

Sesetengah konstruk seperti initial hanya untuk simulasi.

3. Ciri-ciri Utama Verilog

Kekuatan dan Perbandingan dengan HDL Lain

Kekuatan Verilog

  1. Sintaks mudah
  • Verilog menyerupai C, memudahkan pengaturcara untuk mempelajarinya.
  • Elemen asasnya—modul, jenis data, operator—adalah intuitif.
  1. Sokongan meluas
  • Standard dalam alat FPGA/ASIC seperti Vivado dan ModelSim.
  • Komuniti pembelajaran yang besar dan sumber-sumber.
  1. Metodologi reka bentuk yang fleksibel
  • Menyokong reka bentuk RTL dan lain-lain.

Membandingkan Verilog, VHDL, dan SystemVerilog

LanguageFeaturesUse Cases
VerilogSimplified syntax, low learning cost. Widely used for FPGA/ASIC.Rapid prototyping, FPGA design
VHDLStrict grammar, supports robust and precise designs.Mission-critical systems
SystemVerilogEnhanced version of Verilog. Supports advanced testbenches and class-based design.Advanced verification and system design
  • Perbezaan dengan VHDL : VHDL menekankan sintaks yang ketat, manakala Verilog memberi keutamaan kepada ekspresi yang ringkas.
  • Perbezaan dengan SystemVerilog : SystemVerilog menambah ciri berorientasikan objek dan keupayaan pengesahan lanjutan.

Kes Penggunaan Praktikal Verilog

Peranan Verilog dalam Reka Bentuk FPGA

FPGA ialah litar bersepadu yang boleh diprogramkan yang membolehkan konfigurasi perkakasan yang fleksibel. Verilog membolehkan mereka bentuk logik digital yang kompleks dengan cekap. Peranan utama termasuk:

  1. Prototip
  • Digunakan untuk mengesahkan kelakuan litar pada peringkat awal pembangunan produk.
  • Prototip pantas dengan penyesuaian mudah kepada perubahan spesifikasi.
  1. Pengesahan Tingkah Laku
  • Simulasi dengan Verilog membantu mengenal pasti isu reka bentuk pada peringkat awal.
  • Alat seperti ModelSim membolehkan jurutera membina testbench dan memerhati kelakuan sistem.

Aliran Asas Simulasi Litar

Langkah umum untuk simulasi berasaskan Verilog ialah:

  1. Huraikan litar
  • Laksanakan litar sasaran menggunakan Verilog.
  1. Cipta testbench
  • Testbench menentukan persekitaran untuk mengesahkan kelakuan litar.
  • Contoh:
    module Testbench;
        reg a, b;
        wire y;
    
        // Instantiate the module under test
        AND_gate uut (
            .a(a),
            .b(b),
            .y(y)
        );
    
        initial begin
            // Apply test patterns
            a = 0; b = 0;
            #10; a = 0; b = 1;
            #10; a = 1; b = 0;
            #10; a = 1; b = 1;
            #10;
        end
    endmodule
    
  1. Jalankan simulasi
  • Laksanakan testbench dalam simulator dan sahkan kelakuan yang dijangka.
  1. Analisis keputusan
  • Periksa output gelombang dan kenal pasti isu reka bentuk.

4. Contoh Reka Bentuk Praktikal Menggunakan Verilog

Pembelajaran melalui Kod Verilog Contoh

Contoh Reka Bentuk Kaunter (dengan Penjelasan Kod)

Kaunter adalah komponen asas dalam reka bentuk digital. Berikut ialah kaunter ringkas yang meningkat berdasarkan isyarat jam:

module Counter (
    input wire clk,    // clock input
    input wire rst,    // reset input
    output reg [3:0] count // 4-bit counter output
);
    always @(posedge clk or posedge rst) begin
        if (rst)
            count <= 4'b0000; // reset counter to 0
        else
            count <= count + 1; // increment on rising edge
    end
endmodule

Penjelasan:

  1. clk mengawal masa.
  2. rst memulakan semula kaunter.
  3. Kaunter meningkat dari 0 hingga 15 secara serentak dengan jam.

Contoh FSM (Finite State Machine) dan Aplikasi

FSMs digunakan untuk mereka bentuk litar dengan pelbagai keadaan. Berikut adalah contoh ringkas dengan tiga keadaan:

module FSM (
    input wire clk,    // clock input
    input wire rst,    // reset input
    input wire in,     // trigger input
    output reg [1:0] state // current state
);
    // State definitions
    localparam STATE0 = 2'b00,
               STATE1 = 2'b01,
               STATE2 = 2'b10;

    always @(posedge clk or posedge rst) begin
        if (rst)
            state <= STATE0; // initial state
        else begin
            case (state)
                STATE0: state <= (in) ? STATE1 : STATE0;
                STATE1: state <= (in) ? STATE2 : STATE0;
                STATE2: state <= (in) ? STATE0 : STATE1;
                default: state <= STATE0;
            endcase
        end
    end
endmodule

Penjelasan:

  1. Keadaan ditakrifkan menggunakan localparam .
  2. case mengendalikan peralihan berdasarkan in .
  3. Struktur ini boleh digunakan pada pengawal atau litar penjanaan isyarat.

Reka Bentuk Penambah Ringkas (Mesra Pemula)

Penambah 2-bit asas:

module Adder (
    input wire [1:0] a, // 2-bit input a
    input wire [1:0] b, // 2-bit input b
    output wire [2:0] sum // 3-bit output to handle carry
);
    assign sum = a + b; // addition
endmodule

Penjelasan:

  1. Menggunakan assign untuk logik kombinasional.
  2. Output 3-bit mengambil kira pembawa-keluar.
  3. Ini adalah blok binaan asas untuk logik aritmetik.

Isu Biasa dan Penyelesaian

Ralat Biasa (Simulasi & Sintesis)

  1. Ralat Simulasi
  • Simptom: Isyarat menjadi tidak ditakrifkan ( x ).
  • Punca: Kekurangan inisialisasi atau sambungan modul yang salah.
  • Penyelesaian: Takrifkan nilai awal atau inisialisasi melalui testbench.
  1. Ralat Sintesis
  • Simptom: Menggunakan konstruk yang tidak boleh disintesis (contohnya, initial ).
  • Punca: Penyertaan kod hanya untuk simulasi.
  • Penyelesaian: Gunakan struktur yang boleh disintesis (seperti always ).

Menggunakan Alat Penyahpepijatan Secara Berkesan

Reka bentuk Verilog memerlukan penyahpepijatan yang kukuh. Alat biasa termasuk:

  1. Simulasi (contohnya, ModelSim)
  • Periksa tingkah laku isyarat dan sahkan masa melalui paparan gelombang.
  1. Pemapar Gelombang
  • Analisis secara visual isyarat input/output untuk mengenal pasti isu reka bentuk.
  1. Mesej Penyahpepijatan
  • Gunakan $display untuk cetak nilai semasa simulasi:
    initial begin
        $display("Initial state: %b", state);
    end
    

5. Sumber dan Alat untuk Pembelajaran Verilog

Sumber Pembelajaran yang Disyorkan

Buku & Tutorial untuk Pemula

Bagi pendatang baru, bahan pembelajaran yang boleh dipercayai adalah penting. Pilihan yang disyorkan termasuk:

  1. Buku
  • “Introduction to Digital Design with HDL”

    • Menerangkan konsep asas kedua-dua Verilog dan VHDL.
    • “Verilog HDL: A Guide to Digital Design and Synthesis”

    • Buku bahasa Inggeris komprehensif yang meliputi asas hingga reka bentuk lanjutan.

    • “Digital Design and Verilog HDL Fundamentals”

    • Sesuai untuk pemula hingga pembelajar sederhana, dengan tumpuan kuat pada reka bentuk berasaskan Verilog.

  1. Tutorial Dalam Talian
  • YouTube

    • Tutorial percuma tersedia dalam bahasa Inggeris dan Jepun.
    • Membolehkan pelajar mengikuti bersama kod sebenar.
    • Laman Web

    • EDA Playground : Persekitaran berasaskan pelayar untuk menjalankan Verilog.

    • ASIC World : Menawarkan tutorial dari sintaks kepada contoh reka bentuk praktikal.

Kursus Video dan Pembelajaran Tangan

  1. Udemy
  • Kursus seperti “Verilog for Beginners” dan “Learn FPGA Design” menyediakan kandungan berstruktur.
  1. Coursera
  • Kursus tahap universiti yang memberi tumpuan kepada reka bentuk perkakasan.

Alat yang Menyokong Pembangunan

Alat Pemodelan (ModelSim, Vivado)

  1. ModelSim
  • Alat simulasi Verilog terkemuka.
  • Ciri-ciri:

    • Antara muka mesra pengguna.
    • Pemapar gelombang intuitif untuk penyahpepijatan.
  1. Vivado
  • Suite reka bentuk FPGA Xilinx.
  • Ciri-ciri:

    • Sokongan bersepadu dari RTL ke pelaksanaan.
    • Sambungan lancar dengan papan FPGA Xilinx.

Memilih dan Memasang Alat Sintesis

  1. Quartus Prime
  • Pakej pembangunan FPGA Intel, dengan edisi percuma tersedia.
  1. ISE Design Suite
  • Digunakan untuk peranti FPGA Xilinx yang lebih lama.

6. Soalan Lazim Mengenai Pembelajaran Verilog

Bagaimana Pemula Sepatutnya Mula Belajar Verilog?

Soalan: Saya baru mula belajar Verilog. Apakah cara terbaik untuk bermula?

Jawapan:

  1. Mula dengan asas
  • Mulakan dengan mereka bentuk litar ringkas seperti gerbang AND/OR. Memahami sintaks asas dan struktur modul adalah penting.
  1. Gunakan alat simulasi
  • Alat seperti ModelSim atau Vivado membantu mengesahkan kod anda. Menjalankan simulasi mendalamkan pemahaman anda.
  1. Gunakan sumber yang boleh dipercayai
  • Rujuk buku dan tutorial dalam talian untuk membina asas yang kukuh (lihat Seksyen 5 untuk cadangan).
  1. Cuba projek kecil
  • Selepas belajar asas, cuba membina projek kecil seperti penghitung 4-bit atau FSM ringkas.

Adakah Saya Perlu Memilih VHDL atau Verilog?

Soalan: Bahasa mana yang patut saya belajar—VHDL atau Verilog? Bila setiap satu patut digunakan?

Jawapan:

  1. Bila memilih Verilog
  • Sintaks Verilog yang ringkas menjadikannya mesra pemula, terutamanya bagi mereka yang mempunyai pengalaman pengaturcaraan C.
  • Digunakan secara meluas untuk prototaip dan pembangunan FPGA.
  1. Bila memilih VHDL
  • Ideal untuk sistem kritikal misi yang memerlukan pengesahan reka bentuk yang ketat.
  • Pemeriksaan jenis yang kuat mengurangkan peluang ralat reka bentuk.
  1. Kriteria pemilihan
  • Kemudahan pembelajaran : Verilog biasanya lebih mudah untuk pemula.
  • Keperluan projek : Ikuti bahasa yang digunakan dalam persekitaran reka bentuk.
  • Sokongan alat : Kebanyakan alat menyokong kedua-duanya, tetapi pemilihan bergantung pada FPGA/ASIC sasaran.

Kesilapan Biasa yang Perlu Dihindari oleh Pemula

Soalan: Apakah kesilapan yang biasa dibuat oleh pemula semasa belajar Verilog, dan bagaimana mereka boleh mengelakkannya?

Jawapan:

  1. Kekurangan inisialisasi
  • Isyarat mungkin muncul sebagai x (tidak ditakrif) semasa simulasi.
  • Penyelesaian: Sentiasa inisialisasi isyarat atau tetapkan nilai dalam testbench anda.
    initial begin
        signal = 0; // initialize signal
    end
    
  1. Keliru antara penugasan blok dan bukan blok
  • Penyalahgunaan = (blok) dan <= (bukan blok) boleh menyebabkan tingkah laku tidak dijangka.
  • Penyelesaian: Gunakan penugasan bukan blok dalam blok always yang dikawal jam.
  1. Campur aduk kod yang boleh disintesis dan kod simulasi sahaja
  • Memasukkan konstruk simulasi sahaja (contohnya, initial ) dalam logik yang boleh disintesis menyebabkan ralat.
  • Penyelesaian: Pisahkan logik yang boleh disintesis daripada blok simulasi sahaja.
  1. Salah faham tentang pelaksanaan selari
  • Verilog menerangkan tingkah laku perkakasan selari, bukan logik perisian berurutan.
  • Penyelesaian: Fahami bahawa setiap blok always berjalan secara bebas.

7. Bergerak ke Langkah Seterusnya dengan Verilog

Mengkaji Kemajuan Pembelajaran Verilog Anda

Senarai Semak Kajian

  • Pemahaman sintaks asas : Pastikan anda boleh menerangkan modul, jenis data, dan struktur kawalan.
  • Pengalaman reka bentuk praktikal : Penghitung, FSM, dan reka bentuk serupa sepatutnya terasa selesa.
  • Penggunaan alat : Anda sepatutnya boleh mensimulasikan dan menyahpepijatan dengan ModelSim atau Vivado.

Menyediakan untuk Langkah Seterusnya

  • Jika anda memahami asas, anda sudah sedia untuk meneruskan ke topik yang lebih maju.
  • Gunakan langkah-langkah di bawah untuk mengembangkan kemahiran teknikal anda.

Maju ke Reka Bentuk FPGA

Belajar Asas FPGA

FPGA (Field-Programmable Gate Array) adalah salah satu platform paling praktikal untuk menerapkan kemahiran Verilog.

  1. Sediakan papan pembangunan FPGA
  • Papan pemula yang disyorkan: Basys 3, Nexys A7 (Digilent)
  • Sebab: Sokongan komuniti yang kuat dan integrasi mudah dengan Vivado.
  1. Mulakan dengan projek ringkas
  • Mulakan dengan kedipan LED atau litar dikawal suis.
  • Belajar pembahagian jam dan logik kawalan asas.
  1. Bergerak ke sistem yang lebih kompleks
  • Reka pengawal multi-FSM, antara muka memori, dan sistem bersepadu.

Beralih ke SystemVerilog

Mengapa Mempelajari SystemVerilog?

  • SystemVerilog memperluas Verilog dengan ciri pengesahan lanjutan dan berorientasikan objek.
  • Berguna untuk membina testbench yang canggih dan sistem berskala besar.

Topik Utama untuk Dipelajari

  1. Testbench berasaskan kelas
  • Membolehkan ujian rawak dan analisis liputan.
  1. Menggunakan antara muka
  • Mempermudah komunikasi antara modul.
  1. Struktur kawalan lanjutan
  • Pelajari ciri seperti unique dan priority untuk meningkatkan keselamatan reka bentuk.

Bekerja pada Projek Dunia Sebenar

Sertai Projek Sumber Terbuka

  • Reka bentuk pemproses RISC-V
  • Modul DSP (Pemprosesan Isyarat Digital) ringkas

Mulakan Projek Anda Sendiri

  • Cipta reka bentuk asal berdasarkan minat anda.
  • Contoh: jam digital, pemproses audio, litar penapisan isyarat.

Langkah Pembelajaran Seterusnya yang Disyorkan

Peroleh Kemahiran Reka Bentuk Lanjutan

  1. Reka bentuk paip
  • Pelajari asas yang digunakan dalam pemproses berprestasi tinggi.
  1. Memahami domain jam
  • Kuasai teknik untuk mengendalikan isyarat merentasi pelbagai domain jam.
  1. Reka bentuk kuasa rendah
  • Terapkan kaedah reka bentuk cekap tenaga untuk aplikasi dunia sebenar.