Verilog 教程

2022-05-16 13:47 更新

Verilog HDL(簡(jiǎn)稱 Verilog )是一種硬件描述語(yǔ)言,用于數(shù)字電路的系統(tǒng)設(shè)計(jì)。可對(duì)算法級(jí)、門級(jí)、開(kāi)關(guān)級(jí)等多種抽象設(shè)計(jì)層次進(jìn)行建模。

Verilog 繼承了 C 語(yǔ)言的多種操作符和結(jié)構(gòu),與另一種硬件描述語(yǔ)言 VHDL 相比,語(yǔ)法不是很嚴(yán)格,代碼更加簡(jiǎn)潔,更容易上手。

Verilog 不僅定義了語(yǔ)法,還對(duì)語(yǔ)法結(jié)構(gòu)都定義了清晰的仿真語(yǔ)義。因此,Verilog 編寫的數(shù)字模型就能夠使用 Verilog 仿真器進(jìn)行驗(yàn)證。

誰(shuí)適合閱讀本教程

本教程主要針對(duì) Verilog 初學(xué)者打造。

有一定 Verilog 基礎(chǔ)的同學(xué)也可以對(duì)進(jìn)階篇、實(shí)例篇進(jìn)行學(xué)習(xí)、交流。

閱讀本教程前,你需要了解的知識(shí)

在學(xué)習(xí)本教程之前,你需要了解數(shù)字電路的一些基本信息。

如果你對(duì) C 語(yǔ)言有一定的了解,有助于 Verilog 的快速上手。

第一個(gè) Verilog 設(shè)計(jì)

4 位寬 10 進(jìn)制計(jì)數(shù)器:

module counter10(
        //端口定義
        input                   rstn,   //復(fù)位端,低有效
        input                   clk,    //輸入時(shí)鐘
        output [3:0]    cnt,    //計(jì)數(shù)輸出
        output                  cout);  //溢出位

        reg [3:0]               cnt_temp ;      //計(jì)數(shù)器寄存器
        always@(posedge clk or negedge rstn) begin
                if(! rstn)begin         //復(fù)位時(shí),計(jì)時(shí)歸0
                        cnt_temp        <= 4'b0 ;
                end
                else if (cnt_temp==4'd9) begin  //計(jì)時(shí)10個(gè)cycle時(shí),計(jì)時(shí)歸0
                        cnt_temp        <=4'b000;
                end
                else begin                                      //計(jì)時(shí)加1
                        cnt_temp        <= cnt_temp + 1'b1 ;
                end
        end

        assign  cout = (cnt_temp==4'd9) ;       //輸出周期位
        assign  cnt  = cnt_temp ;                       //輸出實(shí)時(shí)計(jì)時(shí)器

endmodule

Cat Me

本人從事過(guò) FPGA 設(shè)計(jì)、 IC 設(shè)計(jì)。學(xué)生時(shí)代用 VHDL 語(yǔ)言設(shè)計(jì)比較多,目前一直用 Verilog 。為方便查詢語(yǔ)法,也為其他學(xué)者提供便利的學(xué)習(xí)通道,特意寫此教程。需要說(shuō)明的是:

教程內(nèi)容是以自己曾經(jīng)的學(xué)習(xí)角度進(jìn)行撰寫的,學(xué)習(xí)起來(lái)可能會(huì)容易些。其中有不妥之處還望指出,一起交流進(jìn)步。

當(dāng)用Verilog設(shè)計(jì)完成數(shù)字模塊后進(jìn)行仿真時(shí),需要在外部添加激勵(lì),激勵(lì)文件叫testbench。有時(shí)testbench設(shè)計(jì)可能比數(shù)字模塊本身都復(fù)雜。所以前面在介紹Verilog基本語(yǔ)法時(shí),幾乎沒(méi)有仿真。后面介紹行為級(jí)和時(shí)序級(jí)相關(guān)知識(shí)時(shí),會(huì)多用仿真說(shuō)明。

聯(lián)系人:Think · In · Hardware
全篇教程都是本人手動(dòng)搜集、整理、編寫的,所有設(shè)計(jì)仿真都有原創(chuàng)或改進(jìn)。如果您從中受益,您的贊賞或關(guān)注將是最不耍流氓的支持,鼓勵(lì)我饑餓的靈魂去撰寫飽滿的篇章。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)