《Verilog HDL數(shù)字系統(tǒng)設(shè)計-原理、實例及仿真》課件第2章_第1頁
《Verilog HDL數(shù)字系統(tǒng)設(shè)計-原理、實例及仿真》課件第2章_第2頁
《Verilog HDL數(shù)字系統(tǒng)設(shè)計-原理、實例及仿真》課件第2章_第3頁
《Verilog HDL數(shù)字系統(tǒng)設(shè)計-原理、實例及仿真》課件第2章_第4頁
《Verilog HDL數(shù)字系統(tǒng)設(shè)計-原理、實例及仿真》課件第2章_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

第2章VerilogHDL基礎(chǔ)2.1VerilogHDL的特點2.2程序設(shè)計流程2.3程序的基本結(jié)構(gòu)2.4語法基礎(chǔ)

2.1VerilogHDL的特點

VerilogHDL語言描述硬件單元的結(jié)構(gòu)簡單、易讀,其最大特點就是易學(xué)易用,如果有C語言的編程經(jīng)驗,在一個較短的時間內(nèi)即能很快掌握。但VerilogHDL較自由的語法,也容易使初學(xué)者犯一些錯誤,這一點應(yīng)注意。

VerilogHDL語言具有多種描述能力,包括設(shè)計的行為特性、設(shè)計的數(shù)據(jù)流特性、設(shè)計的結(jié)構(gòu)組成以及包含響應(yīng)監(jiān)控和設(shè)計驗證方面的時延和波形產(chǎn)生機制。

VerilogHDL語言編寫的模型可使用Verilog仿真器進行驗證,它從C編程語言中繼承了多種操作符和結(jié)構(gòu)。VerilogHDL提供了擴展的建模能力,其中許多擴展最初很難理解,但是VerilogHDL的核心子集非常易于學(xué)習(xí)和使用,這對大多數(shù)建模應(yīng)用來說已經(jīng)足夠。完整的硬件描述語言可以對從最復(fù)雜的芯片到完整的電子系統(tǒng)進行描述,主要特點如下:

(1)?VerilogHDL是一種用于數(shù)字邏輯電路描述的語言,主要用于邏輯電路的建模、仿真和設(shè)計。

(2)用VerilogHDL描述的電路設(shè)計就是該電路的VerilogHDL模型。

(3)?VerilogHDL既是一種行為描述語言也是一種結(jié)構(gòu)描述語言,既可以用電路的功能描述,也可以用元器件和它們之間的連接來建立所設(shè)計電路的VerilogHDL模型。

(4)?Verilog模型可以是實際電路不同級別的抽象,這些抽象的級別和它們對應(yīng)的模型類型共有以下五種:

系統(tǒng)級(System)——用高級語言結(jié)構(gòu)實現(xiàn)設(shè)計模塊行為的模型;

算法級(Algorithmic)——用高級語言結(jié)構(gòu)實現(xiàn)設(shè)計算法行為的模型,部分可綜合;

RTL級(RegisterTransferLevel)——描述數(shù)據(jù)在寄存器之間流動和處理這些數(shù)據(jù)行為的模型,可綜合;

門級(Gate-Level)——描述邏輯門以及邏輯門之間連接的模型;

開關(guān)級(Switch-Level)——描述器件中三極管和存儲器件以及它們之間連接的模型。

2.2程序設(shè)計流程

圖2.1所示是一個典型的FPGA/CPLD設(shè)計流程,而如果是ASIC設(shè)計,則不需要STEP5這個環(huán)節(jié),只要把綜合后的結(jié)果直接交給集成電路生產(chǎn)廠家即可。圖2.1典型的FPGA/CPLD設(shè)計流程2.3程序的基本結(jié)構(gòu)

2.3.1模塊的概念

模塊(module)是VerilogHDL設(shè)計中的基本描述單位,用于描述某個設(shè)計的功能或結(jié)構(gòu)及其與其他模塊通信的外部端口。每個VerilogHDL設(shè)計的系統(tǒng)都是由若干個模塊組成的,所以在學(xué)習(xí)基本語法之前有必要了解模塊的概念。模塊具有如下特征:

(1)每個模塊在語言形式上是以關(guān)鍵詞module開始、以關(guān)鍵詞endmodule結(jié)束的一段程序。

(2)模塊代表硬件電路上的邏輯實體,其范圍可以從簡單的門到整個大的系統(tǒng),比如一個計數(shù)器、一個存儲子系統(tǒng)、一個微處理器等。

(3)模塊可以根據(jù)描述方法的不同定義成行為型或結(jié)構(gòu)型(或者是二者的組合)。行為型模塊通過傳統(tǒng)的編程語言結(jié)構(gòu)定義數(shù)字系統(tǒng)(模塊)的狀態(tài),如使用if條件語句、賦值語句等。結(jié)構(gòu)型模塊是將數(shù)字系統(tǒng)(模塊)的狀態(tài)表達為具有層次概念的互相連接的子模塊。

(4)每個模塊都可實現(xiàn)特定的功能。

(5)模塊是分層的,高層模塊通過調(diào)用、連接底層模塊的實例來實現(xiàn)復(fù)雜的功能。

(6)模塊之間是并行運行的。

圖2.2是一個完整模塊的結(jié)構(gòu)示意圖,從圖中我們可以看出模塊作為VerilogHDL設(shè)計中最基本的單元的結(jié)構(gòu)組成。圖2.2模塊結(jié)構(gòu)示意圖

模塊名是模塊唯一性的標(biāo)識符(模塊的名稱)。

端口定義是端口(輸入、輸出和雙向端口)的列表,這些端口用來與其他模塊進行連接。端口類型有三種:輸入端口(input)、輸出端口(output)和輸入/輸出(雙向)端口(inout)。

通過圖2.3模塊的端口示意圖,我們可以更清楚地了解模塊端口。圖2.3模塊的端口示意圖

數(shù)據(jù)類型聲明是對模塊中所用到的信號(包括端口信號、節(jié)點信號等)進行數(shù)據(jù)類型的定義,也就是指定數(shù)據(jù)對象為寄存器型、存儲器型、線型等。

邏輯功能定義是模塊中最核心的部分,有多種方法可在模塊中描述和定義邏輯功能,還可以調(diào)用函數(shù)(function)和任務(wù)(task)來描述邏輯功能,可以包含initial結(jié)構(gòu)、always結(jié)構(gòu)、連續(xù)賦值或模塊實例等。

標(biāo)識模塊結(jié)束的endmodule之后沒有分號。

【例2.1】一個三位二進制加法器。

【例2.2】2選1數(shù)據(jù)選擇器。圖2.42選1數(shù)據(jù)選擇器邏輯圖

【例2.3】一位比較器。

【例2.4】調(diào)用子模塊舉例。2.3.2模塊的調(diào)用

模塊調(diào)用是VerilogHDL結(jié)構(gòu)描述的基本構(gòu)成方式。我們可以把一個模塊看做由其他模塊像積木塊一樣搭建而成的,所有被當(dāng)前模塊調(diào)用的其他模塊都屬于低一層次的模塊,如果當(dāng)前模塊不再被其他模塊所調(diào)用,那么這個模塊一定是所謂的頂層模塊。在一個硬件系統(tǒng)的描述中必定有而且只能有一個頂層模塊。

【例2.5】以二選一數(shù)據(jù)選擇器為例,實現(xiàn)模塊調(diào)用。調(diào)用模塊實例的一般形式如下:

<模塊名><參數(shù)列表><實例名><端口列表>;

其中,<模塊名>是要調(diào)用子模塊的名稱,如上例中調(diào)用的是mymux2;<參數(shù)列表>是傳輸?shù)阶幽K的參數(shù)值,參數(shù)傳遞的典型應(yīng)用是定義門級時延,例2.5中沒有用到;<實例名>是把子模塊實例化后的名稱,例2.5中的實例名是m2;<端口列表>是實現(xiàn)子模塊連接并實現(xiàn)高層模塊功能的關(guān)鍵。2.3.3模塊的測試

VerilogHDL模型建成之后,為確保其正確性,應(yīng)當(dāng)對模塊進行測試,這需要編寫測試程序(testbench),也即用一段程序產(chǎn)生測試信號序列,作為待測模塊的輸入信號,并測試被測模塊的輸出信號,用以測試所設(shè)計的模塊能否正常運行。

【例2.6】2選1數(shù)據(jù)選擇器測試模塊的描述。進行功能仿真后可以得到圖2.5的仿真波形和圖2.6的仿真監(jiān)測結(jié)果,通過對這些輸入、輸出信號進行分析,檢查模塊的功能是否滿足設(shè)計要求。圖2.5仿真波形

圖2.6仿真監(jiān)測結(jié)果上述程序仿真后將產(chǎn)生如下結(jié)果:

(1)仿真器執(zhí)行所有的事件后自行停止,因此不需要指定仿真結(jié)束時間。

(2)在VerilogHDL硬件編程中,模塊的調(diào)用是硬件的實現(xiàn),每一次調(diào)用(實例化)都將產(chǎn)生實現(xiàn)這個模塊功能的一組電路。

2.4語法基礎(chǔ)

2.4.1程序基本格式

VerilogHDL是一種書寫格式非常自由的語言,即語句可以在一行內(nèi)編寫,也可跨行編寫;每一句均用分號分隔;由空格(\b)、制表符(\t)和換行符組成空白符,在文本中起一個分隔符的作用,在編譯時被忽略。例如:

initialbeginTop

=3'b001;#2Top

=3'b011;end

和下面的程序一樣:2.4.2注釋語句

VerilogHDL中有兩種注釋的方式。

1.多行注釋

多行注釋以起始符“/*”開始,以終止符“*/”結(jié)束,兩個符號之間的語句都是注釋語句,因此可擴展到多行。例如:

【例2.7】多行注釋舉例。

2.單行注釋

單行注釋以符號//開頭,表示以//開始到本行結(jié)束都屬于注釋語句,而且它只能注釋到本行結(jié)束。

【例2.8】單行注釋舉例。

regin1,in2; //定義兩個寄存器變量in1、in22.4.3標(biāo)識符和關(guān)鍵字

標(biāo)識符(identifier)用于定義模塊名、端口名、信號名等。VerilogHDL中的標(biāo)識符可以是任意一組字母、數(shù)字、$符號和_(下劃線)符號的組合,但標(biāo)識符的第一個字符必須是字母或者下劃線,不能是數(shù)字。單個標(biāo)識符的總字符數(shù)不能超過1024個。另外,標(biāo)識符是區(qū)分大小寫的。以下是標(biāo)識符的幾個例子:2.4.4參數(shù)聲明

在VerilogHDL中用parameter來定義常量,即用parameter來定義一個代表常量的標(biāo)識符,稱為符號常量,采用標(biāo)識符常量可提高程序的可讀性和可維護性。parameter型數(shù)據(jù)是一種常數(shù)型的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論