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

下載本文檔

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

文檔簡(jiǎn)介

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

2.1VerilogHDL的特點(diǎn)

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

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

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

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

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

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

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

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

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

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

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

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

2.2程序設(shè)計(jì)流程

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

2.3.1模塊的概念

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

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

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

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

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

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

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

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

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

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

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

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

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

標(biāo)識(shí)模塊結(jié)束的endmodule之后沒(méi)有分號(hào)。

【例2.1】一個(gè)三位二進(jìn)制加法器。

【例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)成方式。我們可以把一個(gè)模塊看做由其他模塊像積木塊一樣搭建而成的,所有被當(dāng)前模塊調(diào)用的其他模塊都屬于低一層次的模塊,如果當(dāng)前模塊不再被其他模塊所調(diào)用,那么這個(gè)模塊一定是所謂的頂層模塊。在一個(gè)硬件系統(tǒng)的描述中必定有而且只能有一個(gè)頂層模塊。

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

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

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

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

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

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

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

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

2.4語(yǔ)法基礎(chǔ)

2.4.1程序基本格式

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

initialbeginTop

=3'b001;#2Top

=3'b011;end

和下面的程序一樣:2.4.2注釋語(yǔ)句

VerilogHDL中有兩種注釋的方式。

1.多行注釋

多行注釋以起始符“/*”開(kāi)始,以終止符“*/”結(jié)束,兩個(gè)符號(hào)之間的語(yǔ)句都是注釋語(yǔ)句,因此可擴(kuò)展到多行。例如:

【例2.7】多行注釋舉例。

2.單行注釋

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

【例2.8】單行注釋舉例。

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

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

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論