




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、EDA原理及應(yīng)用馬冬梅2019.1.17 內(nèi)容: 一、EDA設(shè)計(jì)導(dǎo)論 二、可編程邏輯器件設(shè)計(jì)方法 三、Verilog HDL語(yǔ)言基礎(chǔ) EDA技術(shù)綜述;EDA技術(shù)發(fā)展歷史EDA技術(shù)涵義EDA技術(shù)主要內(nèi)容PLD設(shè)計(jì)方法學(xué);PLD設(shè)計(jì)概論P(yáng)LD設(shè)計(jì)流程SOPC設(shè)計(jì)流程HDL硬件描述語(yǔ)言HDL硬件描述語(yǔ)言概念HDL語(yǔ)言特點(diǎn)和比較HDL語(yǔ)言最新發(fā)展一、EDA設(shè)計(jì)導(dǎo)論 EDA技術(shù)隨著計(jì)算機(jī)、集成電路、電子系統(tǒng)設(shè)計(jì)的發(fā)展,經(jīng)歷了三個(gè)發(fā)展階段: 1、計(jì)算機(jī)輔助設(shè)計(jì)(CAD) 2、計(jì)算機(jī)輔助工程設(shè)計(jì)(CAE) 3、電子設(shè)計(jì)自動(dòng)化(EDA)EDA技術(shù)發(fā)展歷史1、計(jì)算機(jī)輔助設(shè)計(jì)(CAD)硬件設(shè)計(jì)發(fā)展的初級(jí)階段。在此
2、階段,大量選用中小規(guī)模標(biāo)準(zhǔn)集成電路,將產(chǎn)品設(shè)計(jì)過(guò)程中高度重復(fù)性的布圖布線工作,采用二維圖形編輯與分析的CAD工具。由于PCB布圖布線工具受到計(jì)算機(jī)工作平臺(tái)的制約,其支持的設(shè)計(jì)工作有限且性能比較差。2、計(jì)算機(jī)輔助工程(CAE) 采用少數(shù)幾種通用的標(biāo)準(zhǔn)芯片實(shí)現(xiàn)電子系統(tǒng)的設(shè)計(jì)。 CAE階段的EDA工具已經(jīng)可以進(jìn)行設(shè)計(jì)描述、綜合與優(yōu)化和設(shè)計(jì)結(jié)果驗(yàn)證。但是,大部分從原理圖出發(fā)的EDA工具仍然不能適應(yīng)復(fù)雜電子系統(tǒng)的設(shè)計(jì)要求,而具體化的元件圖形制約著優(yōu)化設(shè)計(jì)。3、電子系統(tǒng)設(shè)計(jì)自動(dòng)化階段各種規(guī)模的可編程邏輯器件和EDA工具的發(fā)展,通過(guò)一些簡(jiǎn)單標(biāo)準(zhǔn)化的設(shè)計(jì)過(guò)程,利用微電子廠家提供的設(shè)計(jì)庫(kù)來(lái)完成數(shù)萬(wàn)門ASIC和集
3、成系統(tǒng)的設(shè)計(jì)與驗(yàn)證。在此階段,硬件描述語(yǔ)言HDL的出現(xiàn)使得EDA設(shè)計(jì)進(jìn)入到抽象描述的設(shè)計(jì)層次。現(xiàn)在,EDA設(shè)計(jì)進(jìn)入了片上系統(tǒng)設(shè)計(jì)SOPC(System On Programmable Chip)階段,可編程邏輯器件內(nèi)集成了數(shù)字信號(hào)處理器的內(nèi)核、微處理器的內(nèi)核等,使得可編程邏輯器件不再只是完成復(fù)雜的邏輯功能,而是具有了強(qiáng)大的信號(hào)處理和控制功能。 EDA技術(shù)包括狹義EDA技術(shù)和廣義EDA技術(shù)。狹義EDA技術(shù)指以大規(guī)??删幊踢壿嬈骷樵O(shè)計(jì)載體,以硬件描述語(yǔ)言為系統(tǒng)邏輯描述的主要表達(dá)方式,以計(jì)算機(jī)、大規(guī)??删幊踢壿嬈骷拈_發(fā)軟件及實(shí)驗(yàn)開發(fā)系統(tǒng)為設(shè)計(jì)工具,通過(guò)有關(guān)的開發(fā)軟件,自動(dòng)完成用軟件方式設(shè)計(jì)的電子
4、系統(tǒng)到硬件系統(tǒng)的邏輯編譯、邏輯化簡(jiǎn)、邏輯分割、邏輯綜合及優(yōu)化、邏輯布局布線、邏輯仿真,直至對(duì)于特定目標(biāo)芯片的適配編譯、邏輯映射、編程下載等工作,最終形成集成電子系統(tǒng)或?qū)S眉尚酒募夹g(shù),或稱為IES/ASIC自動(dòng)設(shè)計(jì)技術(shù)。EDA技術(shù)含義廣義EDA技術(shù),是通過(guò)計(jì)算機(jī)及其電子系統(tǒng)的輔助分析和設(shè)計(jì)軟件,完成電子系統(tǒng)某一部分的設(shè)計(jì)過(guò)程。因此,廣義EDA技術(shù)除了包含狹義的EDA技術(shù)外,還包括計(jì)算機(jī)輔助分析CAA技術(shù)(如PSPICE,EWB,MATLAB等),印刷電路板計(jì)算機(jī)輔助設(shè)計(jì)PCB-CAD技術(shù)(如PROTEL,ORCAD等)和其它高頻和射頻設(shè)計(jì)和分析的工具等。EDA技術(shù)的共同特點(diǎn):1、通過(guò)使用相應(yīng)
5、的電路分析和設(shè)計(jì)軟件,完成電子系統(tǒng)各部分的設(shè)計(jì);2、在電子系統(tǒng)設(shè)計(jì)中所使用的EDA軟件基本都符合自頂向下的設(shè)計(jì)流程的理念;3、使用EDA軟件設(shè)計(jì)電子系統(tǒng),都需要分工設(shè)計(jì),團(tuán)體協(xié)作;4、使用EDA軟件設(shè)計(jì)電子系統(tǒng),提高了設(shè)計(jì)的效率,縮短了設(shè)計(jì)周期;5、使用EDA軟件設(shè)計(jì)電子系統(tǒng),采用了模塊化和層次化的設(shè)計(jì)方法;6、大多數(shù)EDA軟件都具有仿真和模擬功能;基于狹義EDA技術(shù)進(jìn)行可編程邏輯器件的設(shè)計(jì)應(yīng)掌握以下幾個(gè)方面的內(nèi)容:、大規(guī)??删幊踢壿嬈骷LD,是利用EDA技術(shù)進(jìn)行電子系統(tǒng)設(shè)計(jì)的載體;、硬件描述語(yǔ)言HDL,是利用EDA技術(shù)進(jìn)行電子系統(tǒng)設(shè)計(jì)的主要表達(dá)手段;、EDA設(shè)計(jì)軟件EDAS:是利用EDA技
6、術(shù)進(jìn)行電子系統(tǒng)設(shè)計(jì)的自動(dòng)化設(shè)計(jì)工具;、相關(guān)的硬件平臺(tái),是利用EDA技術(shù)進(jìn)行電子系統(tǒng)設(shè)計(jì)的下載工具及硬件驗(yàn)證工具;EDA技術(shù)的主要內(nèi)容、大規(guī)??删幊踢壿嬈骷LDPLD器件一般包含現(xiàn)場(chǎng)可編程門陣列(FPGA)和復(fù)雜可編程邏輯器件(CPLD)。由于EDA開發(fā)工具的通用性、設(shè)計(jì)語(yǔ)言的標(biāo)準(zhǔn)化以及設(shè)計(jì)過(guò)程幾乎與所用器件的硬件結(jié)構(gòu)無(wú)關(guān),因而設(shè)計(jì)開發(fā)成功的各類邏輯功能塊軟件有很好的兼容性和可移植性。與ASIC設(shè)計(jì)相比,PLD顯著的優(yōu)勢(shì)是開發(fā)周期短、投資風(fēng)險(xiǎn)小、產(chǎn)品上市速度快、市場(chǎng)適應(yīng)能力強(qiáng)和硬件升級(jí)回旋余地大,而且當(dāng)產(chǎn)品定型和產(chǎn)量擴(kuò)大后,可將在生產(chǎn)中達(dá)到充分檢驗(yàn)的VHDL設(shè)計(jì)迅速實(shí)現(xiàn)ASIC投產(chǎn)。2、硬件描
7、述語(yǔ)言常用硬件描述語(yǔ)言有VHDL、Verilog和ABEL語(yǔ)言。下面從使用方面對(duì)這三種語(yǔ)言進(jìn)行簡(jiǎn)要的對(duì)比:(1)邏輯描述層次:一般的硬件描述語(yǔ)言可以在三個(gè)層次上進(jìn)行電路描述,其層次由高到低依次可分為行為級(jí)、寄存器傳輸級(jí)RTL和門電路級(jí)。VHDL語(yǔ)言是一種高級(jí)描述語(yǔ)言,適用于行為級(jí)和RTL級(jí)的描述,最適于描述電路的行為;Verilog語(yǔ)言和ABEL語(yǔ)言是一種較低級(jí)的描述語(yǔ)言,適用于RTL級(jí)和門電路級(jí)的描述,最適于描述門級(jí)電路。(2)設(shè)計(jì)要求:VHDL進(jìn)行電子系統(tǒng)設(shè)計(jì)時(shí)可以不了解電路的結(jié)構(gòu)細(xì)節(jié),Verilog和ABEL語(yǔ)言進(jìn)行電子系統(tǒng)設(shè)計(jì)時(shí)需了解電路的結(jié)構(gòu)細(xì)節(jié)。(3)綜合過(guò)程:任何一種語(yǔ)言源程序,
8、最終都要轉(zhuǎn)換成門電路級(jí)才能被布線器或適配器所接受。因此,VHDL語(yǔ)言源程序的綜合要經(jīng)過(guò)行為級(jí)RTL級(jí)門電路級(jí)的轉(zhuǎn)化,VHDL幾乎不能直接控制門電路的生成。而Verilog語(yǔ)言和ABEL語(yǔ)言源程序的綜合過(guò)程只經(jīng)過(guò)RTL級(jí)門電路級(jí)的轉(zhuǎn)化,易于控制電路資源。(4)對(duì)綜合器的要求:VHDL描述語(yǔ)言層次較高,不易控制底層電路,因而對(duì)綜合器的性能要求較高,Verilog和ABEL對(duì)綜合器的性能要求較低。(5)支持的EDA工具:支持VHDL和Verilog的EDA工具很多,但支持ABEL的綜合器僅僅Dataio一家。(6)國(guó)際化程度:VHDL和Verilog已成為IEEE標(biāo)準(zhǔn),而ABEL正朝國(guó)際化標(biāo)準(zhǔn)努力。
9、現(xiàn)在,VHDL與Verilog語(yǔ)言將承擔(dān)幾乎全部的數(shù)字系統(tǒng)設(shè)計(jì)任務(wù)。3、軟件開發(fā)工具基于高復(fù)雜度PLD器件的開發(fā),在很大程度上依靠EDA軟件完成。PLD的EDA工具以計(jì)算機(jī)軟件為主,將典型的單元電路封裝起來(lái)形成固定模塊并形成標(biāo)準(zhǔn)的硬件開發(fā)語(yǔ)言(如HDL語(yǔ)言)供設(shè)計(jì)人員使用。PLD開發(fā)軟件需要自動(dòng)地完成邏輯編譯、化簡(jiǎn)、分割、綜合及優(yōu)化、布局布線、仿真以及對(duì)于特定目標(biāo)芯片的適配編譯和編程下載等工作。典型的EDA工具中必須包含兩個(gè)特殊的軟件包,即綜合器和適配器。綜合器的功能就是將設(shè)計(jì)者在EDA平臺(tái)上完成的針對(duì)某個(gè)系統(tǒng)項(xiàng)目的HDL、原理圖或狀態(tài)圖形描述,針對(duì)給定的硬件系統(tǒng)組件,進(jìn)行編譯、優(yōu)化、轉(zhuǎn)換和綜
10、合。、硬件開發(fā)平臺(tái)硬件開發(fā)平臺(tái)提供芯片下載電路及EDA實(shí)驗(yàn)/開發(fā)的外圍資源,以供硬件驗(yàn)證。硬件開發(fā)平臺(tái)一般包括:)實(shí)驗(yàn)或開發(fā)所需的各類基本信號(hào)發(fā)生模塊,包括時(shí)鐘、脈沖、高低電平等;)PLD輸出信息顯示模塊,包括數(shù)碼顯示、發(fā)光管顯示、聲響指示等;)監(jiān)控程序模塊,提供“電路重構(gòu)軟配置”;)目標(biāo)芯片適配座以及上面的FPGA/CPLD目標(biāo)芯片和編程下載電路。 傳統(tǒng)上的設(shè)計(jì)方法是自下而上的設(shè)計(jì)方法,是以固定功能元件為基礎(chǔ),基于電路板的設(shè)計(jì)方法。這種設(shè)計(jì)方法有下面的缺點(diǎn):設(shè)計(jì)依賴于設(shè)計(jì)人員的經(jīng)驗(yàn)。設(shè)計(jì)依賴于通用元器件。設(shè)計(jì)后期的仿真不易實(shí)現(xiàn),并且調(diào)試復(fù)雜。設(shè)計(jì)實(shí)現(xiàn)周期長(zhǎng),靈活性差,耗時(shí)耗力,效率低下。 系
11、統(tǒng)調(diào)試、測(cè)試與性能分析完整系統(tǒng)構(gòu)成電路板設(shè)計(jì)固定功能元件系統(tǒng)功能需求傳統(tǒng)設(shè)計(jì)方法PLD設(shè)計(jì)方法學(xué)設(shè)計(jì)目標(biāo)設(shè)計(jì)輸入功能級(jí)仿真網(wǎng)表轉(zhuǎn)換、映射、布局布線(CPLD為適配)時(shí)序仿真系統(tǒng)驗(yàn)證系統(tǒng)產(chǎn)品原理圖輸入,文本輸入(包括器件選擇、元件庫(kù)的建立、原理圖或狀態(tài)機(jī)設(shè)計(jì)、VHDL語(yǔ)言設(shè)計(jì))網(wǎng)表轉(zhuǎn)換、映射、布局布線、產(chǎn)生時(shí)序數(shù)據(jù)、產(chǎn)生配置文件配置文件加載后,用示波器、邏輯分析儀、軟件程序觀察FPGA開發(fā)的一般流程綜合優(yōu)化行為仿真生成網(wǎng)表文件PLD設(shè)計(jì)流程1、設(shè)計(jì)目標(biāo)在系統(tǒng)設(shè)計(jì)之前,首先要進(jìn)行的是方案論證、系統(tǒng)設(shè)計(jì)和FPGA芯片選擇等準(zhǔn)備工作。根據(jù)任務(wù)要求,如系統(tǒng)的指標(biāo)和復(fù)雜度,對(duì)工作速度和芯片本身的各種資源、
12、成本等方面進(jìn)行權(quán)衡,選擇合理的設(shè)計(jì)方案和合適的器件類型。一般都采用自頂向下的設(shè)計(jì)方法,把系統(tǒng)分成若干個(gè)基本單元,然后再把每個(gè)基本單元?jiǎng)澐譃橄乱粚哟蔚幕締卧?,直到可以直接使用EDA元件庫(kù)為止。 PLD設(shè)計(jì)流程2、設(shè)計(jì)輸入 設(shè)計(jì)輸入是將所設(shè)計(jì)的系統(tǒng)或電路以開發(fā)軟件要求的某種形式表示出來(lái),并輸入EDA工具的過(guò)程。常用的方法有硬件描述語(yǔ)言(HDL)和原理圖輸入方法等。原理圖輸入方式是一種最直接的描述方式,在可編程芯片發(fā)展的早期應(yīng)用較廣,它將所需的器件從元件庫(kù)中調(diào)出來(lái),畫出原理圖。這種方法雖然直觀并易于仿真,但效率低,且不易維護(hù)。更主要的缺點(diǎn)是可移植性差。HDL語(yǔ)言輸入法利用文本描述設(shè)計(jì),主要使用行為
13、級(jí)HDL,其主流語(yǔ)言是Verilog HDL和VHDL。3、功能仿真 功能仿真也稱為前仿真,是在編譯之前對(duì)用戶所設(shè)計(jì)的電路進(jìn)行邏輯功能驗(yàn)證,此時(shí)的仿真沒(méi)有延遲信息,僅對(duì)初步的功能進(jìn)行檢測(cè)。仿真前,要先利用波形編輯器和HDL等建立波形文件和測(cè)試向量(即將所關(guān)心的輸入信號(hào)組合成序列),仿真結(jié)果將會(huì)生成報(bào)告文件和輸出信號(hào)波形,從中便可以觀察各個(gè)節(jié)點(diǎn)信號(hào)的變化。如果發(fā)現(xiàn)錯(cuò)誤,則返回設(shè)計(jì)修改邏輯設(shè)計(jì)。常用的工具有Model Tech公司的ModelSim、Sysnopsys公司的VCS和Cadence公司的NC-Verilog, 以及NC-VHDL等軟件。 4、綜合優(yōu)化 所謂綜合就是將較高級(jí)抽象層次的描
14、述轉(zhuǎn)化成較低層次的描述。綜合優(yōu)化根據(jù)目標(biāo)與要求優(yōu)化所生成的邏輯連接,使層次設(shè)計(jì)平面化,供FPGA布局布線軟件進(jìn)行實(shí)現(xiàn)。綜合優(yōu)化是指將設(shè)計(jì)輸入編譯成由與門、或門、非門、RAM、觸發(fā)器等基本邏輯單元組成的邏輯連接網(wǎng)表,而并非真實(shí)的門級(jí)電路。真實(shí)具體的門級(jí)電路需要利用FPGA制造商的布局布線功能,根據(jù)綜合后生成的標(biāo)準(zhǔn)門級(jí)結(jié)構(gòu)網(wǎng)表來(lái)產(chǎn)生。由于門級(jí)結(jié)構(gòu)、RTL級(jí)的HDL程序的綜合是很成熟的技術(shù),所有的綜合器都可以支持到這一級(jí)別的綜合。 常用的綜合工具有Synplicity公司Synplify/ Synplify Pro軟件以及各個(gè)FPGA廠家自己推出的綜合開發(fā)工具。 5、綜合后仿真 綜合后仿真檢查綜合結(jié)
15、果是否和原設(shè)計(jì)一致。在仿真時(shí),把綜合生成的標(biāo)準(zhǔn)延時(shí)文件反標(biāo)注到綜合仿真模型中去,可估計(jì)門延時(shí)帶來(lái)的影響。但這一步驟不能估計(jì)線延時(shí),因此和布線后的實(shí)際情況還有一定的差距,并不十分準(zhǔn)確。目前的綜合工具較為成熟,對(duì)于一般的設(shè)計(jì)可以省略這一步,但如果在布局布線后發(fā)現(xiàn)電路結(jié)構(gòu)和設(shè)計(jì)意圖不符,則需要回溯到綜合后仿真來(lái)確認(rèn)問(wèn)題之所在。在功能仿真中介紹的軟件工具一般都支持綜合后仿真。6、實(shí)現(xiàn)與布局布線 將綜合生成的邏輯網(wǎng)表配置到具體的FPGA芯片上,布局布線是其中最重要的過(guò)程。布局將邏輯網(wǎng)表中的硬件原語(yǔ)和底層單元合理地配置到芯片內(nèi)部的固有硬件結(jié)構(gòu)上,并且往往需要在速度最優(yōu)和面積最優(yōu)之間作出選擇。布線根據(jù)布局的
16、拓?fù)浣Y(jié)構(gòu),利用芯片內(nèi)部的各種連線資源,合理正確地連接各個(gè)元件。布線結(jié)束后,軟件工具會(huì)自動(dòng)生成報(bào)告,提供有關(guān)設(shè)計(jì)中各部分資源的使用情況。 由于只有FPGA芯片生產(chǎn)商對(duì)芯片結(jié)構(gòu)最為了解,所以布局布線必須選擇芯片開發(fā)商提供的工具。7、時(shí)序仿真也稱為后仿真,是指將布局布線的延時(shí)信息反標(biāo)注到設(shè)計(jì)網(wǎng)表中來(lái)檢測(cè)有無(wú)時(shí)序違規(guī)(即不滿足時(shí)序約束條件或器件固有的時(shí)序規(guī)則,如建立時(shí)間、保持時(shí)間等)現(xiàn)象。時(shí)序仿真包含的延遲信息最全,也最精確,能較好地反映芯片的實(shí)際工作情況。由于不同芯片的內(nèi)部延時(shí)不一樣,不同的布局布線方案也給延時(shí)帶來(lái)不同的影響。因此在布局布線后,通過(guò)對(duì)系統(tǒng)和各個(gè)模塊進(jìn)行時(shí)序仿真,分析其時(shí)序關(guān)系,估計(jì)系
17、統(tǒng)性能,以及檢查和消除競(jìng)爭(zhēng)冒險(xiǎn)是非常有必要的。在功能仿真中介紹的軟件工具一般都支持綜合后仿真。 8、板級(jí)仿真與驗(yàn)證 板級(jí)仿真主要應(yīng)用于高速電路設(shè)計(jì)中,對(duì)高速系統(tǒng)的信號(hào)完整性、電磁干擾等特征進(jìn)行分析,一般都以第三方工具進(jìn)行仿真和驗(yàn)證。 9、芯片編程與調(diào)試 設(shè)計(jì)的最后一步就是芯片編程與調(diào)試。芯片編程是指產(chǎn)生使用的數(shù)據(jù)文件,然后將編程數(shù)據(jù)下載到FPGA芯片中。 其中,芯片編程需要滿足一定的條件,如編程電壓、編程時(shí)序和編程算法等方面。目前,主流的FPGA芯片生產(chǎn)商都提供了內(nèi)嵌的在線邏輯分析儀來(lái)解決上述矛盾,它們只需要占用芯片少量的邏輯資源,具有很高的實(shí)用價(jià)值。 硬件描述語(yǔ)言(Hardware Desc
18、ription Language)是硬件設(shè)計(jì)人員和電子設(shè)計(jì)自動(dòng)化(EDA)工具之間的界面,其主要目的是用來(lái)編寫設(shè)計(jì)文件,建立電子系統(tǒng)行為級(jí)的仿真模型。即利用計(jì)算機(jī)的巨大能力對(duì)Verilog HDL或VHDL建模的復(fù)雜數(shù)字邏輯進(jìn)行仿真,然后再自動(dòng)綜合,生成符合要求且在電路結(jié)構(gòu)上可以實(shí)現(xiàn)的數(shù)字邏輯網(wǎng)表(Netlist),根據(jù)網(wǎng)表和某種工藝的器件自動(dòng)生成具體電路,最后生成該工藝條件下這種具體電路的時(shí)延模型。仿真驗(yàn)證無(wú)誤后,該模型可用于制造ASIC芯片或?qū)懭隒PLD和FPGA器件中。HDL硬件描述語(yǔ)言 在HDL語(yǔ)言出現(xiàn)之前,已有了許多程序設(shè)計(jì)語(yǔ)言,如匯編、C、Pascal、Fortran、Prolog
19、等。它們適合于描述過(guò)程和算法,不適合作硬件描述。在使用EDA工具進(jìn)行電子系統(tǒng)設(shè)計(jì)時(shí),就需要一種硬件描述語(yǔ)言來(lái)作為EDA工具的工作語(yǔ)言。因此,眾多的EDA工具軟件開發(fā)者相繼推出了自己的HDL語(yǔ)言。HDL硬件描述語(yǔ)言概念 在HDL語(yǔ)言的發(fā)展過(guò)程中,美國(guó)國(guó)防部起了非常重要的作用。美國(guó)國(guó)防部電子系統(tǒng)項(xiàng)目有眾多的承包公司,他們使用各自的HDL語(yǔ)言,造成了信息交換困難和維護(hù)困難。美國(guó)政府為了降低開發(fā)費(fèi)用,避免重復(fù)設(shè)計(jì),國(guó)防部為他們的超高速集成電路提供了一種硬件描述語(yǔ)言,以期望VHDL功能強(qiáng)大、嚴(yán)格、可讀性好。政府要求各公司的合同都用它來(lái)描述,以避免產(chǎn)生歧義。HDL語(yǔ)言的特點(diǎn)主要體現(xiàn)在以下幾個(gè)方面:1、HD
20、L語(yǔ)言既包含一些高層程序設(shè)計(jì)語(yǔ)言的結(jié)構(gòu)形式,同時(shí)也兼顧描述硬件線路連接的具體構(gòu)件。、HDL語(yǔ)言是并發(fā)的,即具有在同一時(shí)刻執(zhí)行多任務(wù)的能力。一般來(lái)講編程語(yǔ)言是非并行的,但在實(shí)際硬件中許多操作都是在同一時(shí)刻發(fā)生的,所以HDL語(yǔ)言具有并發(fā)的特征。、HDL語(yǔ)言有時(shí)序的概念。一般來(lái)講,編程語(yǔ)言是沒(méi)有時(shí)序概念的,但在硬件電路中從輸入到輸出總是有延遲存在的,為描述這些特征,HDL語(yǔ)言需要建立時(shí)序的概念。 因此,使用HDL除了可以描述硬件電路的功能外,還可以描述其時(shí)序要求。HDL語(yǔ)言特點(diǎn)和比較、通過(guò)使用結(jié)構(gòu)級(jí)或行為級(jí)描述可以在不同的抽象層次描述設(shè)計(jì),HDL語(yǔ)言采用自頂向下的數(shù)字電路設(shè)計(jì)方法,主要包括3個(gè)領(lǐng)域5
21、個(gè)抽象層次,如下表所示:行為領(lǐng)域結(jié)構(gòu)領(lǐng)域物理領(lǐng)域系統(tǒng)級(jí)性能描述部件及它們之間的邏輯連接方式芯片、模塊、電路板和物理劃分的子系統(tǒng)算法級(jí)I/O應(yīng)答算法級(jí)硬件模塊數(shù)據(jù)結(jié)構(gòu)部件之間的物理連接、電路板、底盤等寄存器傳輸級(jí)并行操作寄存器傳輸、狀態(tài)表算術(shù)運(yùn)算部件、多路選擇器、寄存器總線、微定序器、微存儲(chǔ)器之間的物理連接方式芯片、宏單元邏輯級(jí)用布爾方程敘述門電路、觸發(fā)器、鎖存器標(biāo)準(zhǔn)單元布圖電路級(jí)微分方程表達(dá)晶體管、電阻、電容、電感元件晶體管布圖總的來(lái)說(shuō),它們有以下幾點(diǎn)不同:、VHDL偏重于標(biāo)準(zhǔn)化的考慮,Verilog HDL則和EDA工具結(jié)合得更為緊密。VHDL是為了實(shí)現(xiàn)美國(guó)國(guó)防部VHSIC計(jì)劃所推出的各個(gè)電
22、子部件供應(yīng)商具有統(tǒng)一數(shù)據(jù)交換格式標(biāo)準(zhǔn)的要求。Verilog HDL是在全球最大的EDA/ESDA供應(yīng)商Cadence公司的支持下針對(duì)EDA工具專門開發(fā)的硬件描述語(yǔ)言。、Verilog HDL擁有廣泛的設(shè)計(jì)群體,成熟的資源遠(yuǎn)比VHDL豐富。同時(shí)Verilog HDL是從高級(jí)設(shè)計(jì)語(yǔ)言C語(yǔ)言發(fā)展而來(lái)的,比VHDL而言更容易上手,其編碼風(fēng)格也更為簡(jiǎn)潔明了,是一種非常容易掌握的硬件描述語(yǔ)言。Verilog和VHDL比較、Verilog HDL和VHDL在行為級(jí)抽象建模的覆蓋范圍方面也有所不同。一般認(rèn)為Verilog HDL在系統(tǒng)抽象方面比VHDL要強(qiáng)一些,Verilog HDL比較適合算法級(jí)(Algor
23、ithm)、寄存器傳輸級(jí)(RTL)、邏輯級(jí)(Logic)以及門級(jí)(Gate)的設(shè)計(jì),而VHDL更適合特大型系統(tǒng)級(jí)(System)的設(shè)計(jì)。目前對(duì)于一個(gè)系統(tǒng)芯片設(shè)計(jì)項(xiàng)目,可以采用的方案包括以下幾種: 1、在系統(tǒng)級(jí)采用VHDL,在軟件級(jí)采用C語(yǔ)言,在實(shí)現(xiàn)級(jí)采用Verilog。目前,軟件與硬件的協(xié)調(diào)設(shè)計(jì)還是一個(gè)很具挑戰(zhàn)性的工作,因?yàn)檐浖絹?lái)越成為SoC設(shè)計(jì)的關(guān)鍵。該方案的特點(diǎn)是:風(fēng)險(xiǎn)小,集成難度大,與原有方法完全兼容,有現(xiàn)成的開發(fā)工具,但工具集成由開發(fā)者自行負(fù)責(zé)完成。、系統(tǒng)級(jí)及軟件級(jí)采用Superlog,硬件級(jí)和實(shí)現(xiàn)級(jí)均采用Verilog HDL描述,這樣和原有的硬件設(shè)計(jì)可以兼容。該方案特點(diǎn)是風(fēng)險(xiǎn)較小
24、,易于集成,與原硬件設(shè)計(jì)兼容性好,有集成開發(fā)環(huán)境。HDL語(yǔ)言最新發(fā)展3、系統(tǒng)級(jí)和軟件級(jí)采用SystemC,硬件級(jí)采用Verilog HDL,SystemC與常規(guī)的Verilog HDL互相轉(zhuǎn)換,與原來(lái)的軟件編譯環(huán)境完全兼容。開發(fā)者只需要一組描述類庫(kù)和一個(gè)包含仿真核的庫(kù),就可以在通常ANSI C+編譯環(huán)境下開發(fā),但硬件描述與原有方法完全不兼容。該方法特點(diǎn)是風(fēng)險(xiǎn)較大,與原軟件開發(fā)兼容性好,硬件開發(fā)有風(fēng)險(xiǎn)。 IC(Integrated Circuit)設(shè)計(jì)方法一般分為6類: 1、全定制法:如ROM,RAM或PLA等; 2、定制法:通常包括標(biāo)準(zhǔn)單元和通用單元; 3、半定制法:通常包括數(shù)字電路門陣列和線
25、性陣列; 4、模塊編譯法:對(duì)設(shè)計(jì)模塊進(jìn)行描述,然后通過(guò)編譯直接得到電路掩膜版圖; 5、可編程邏輯器件法:通常是指PAL、PLA、GAL器件和CPLD器件; 6、邏輯單元陣列法:通常是指現(xiàn)場(chǎng)可編程門陣列FPGA器件。二、可編程邏輯器件設(shè)計(jì)方法 可編程邏輯器件(Programmable Logic Device,PLD)起源于20世紀(jì)70年代,是在專用集成電路(ASIC)的基礎(chǔ)上發(fā)展起來(lái)的一種數(shù)字系統(tǒng)設(shè)計(jì)的主要硬件平臺(tái)。 其主要特點(diǎn): 1、由用戶通過(guò)軟件進(jìn)行配置和編程,從而完成某種特定的功能,且可以反復(fù)擦寫; 2、在修改和升級(jí)PLD時(shí),不需額外地改變PCB電路板,只是在計(jì)算機(jī)上修改和更新程序,使硬
26、件設(shè)工作成為軟件開發(fā)工作,縮短了系統(tǒng)設(shè)計(jì)的周期,提高了實(shí)現(xiàn)的靈活性并降低了成本??删幊踢壿嬈骷攀鯬LD器件包括4種基本類型:編程只讀存儲(chǔ)器(Programmable Read Only Memory,PROM);現(xiàn)場(chǎng)可編程邏輯陣列(Field Programmable Logic Array,F(xiàn)PLA);可編程陣列邏輯(Programmable Array Logic,PAL);通用陣列邏輯(Generic Array Logic,GAL);按照顆粒度可以分為3類:小顆粒度(“門海(sea of gates)”架構(gòu))中等顆粒度(如:FPGA)大顆粒度(如:CPLD)PLD產(chǎn)品分類按編程工藝可
27、以分為四類:熔絲(Fuse)和反熔絲(Antifuse)編程器件可擦除的可編程只讀存儲(chǔ)器(UEPROM)編程器件電信號(hào)可擦除的可編程只讀存儲(chǔ)器(EEPROM)編程器件SRAM編程器件。 前3類為非易失性器件,編程后,配置數(shù)據(jù)保留在器件上;第4類為易失性器件,掉電后配置數(shù)據(jù)會(huì)丟失,因此在每次上電后需要重新進(jìn)行數(shù)據(jù)配置。可編程邏輯器件的發(fā)展可以劃分為4個(gè)階段:第1階段的可編程器件只有簡(jiǎn)單的可編程只讀存儲(chǔ)器(PROM)、紫外線可擦除只讀存儲(chǔ)器(EPROM)和電可擦只讀存儲(chǔ)器(EEPROM)3種,由于結(jié)構(gòu)的限制,只能完成簡(jiǎn)單的數(shù)字邏輯功能。第2階段出現(xiàn)了結(jié)構(gòu)上稍微復(fù)雜的可編程陣列邏輯(PAL)和通用陣
28、列邏輯(GAL)器件,正式被稱為PLD,能夠完成各種邏輯運(yùn)算功能。典型的PLD由“與”、“非”陣列組成,用“與或”表達(dá)式來(lái)實(shí)現(xiàn)任意組合邏輯,所以PLD能以乘積和形式完成大量的邏輯組合。可編程邏輯器件的發(fā)展歷史第3階段Xilinx和Altera分別推出了與標(biāo)準(zhǔn)門陣列類似的FPGA和類似于PAL結(jié)構(gòu)的擴(kuò)展性CPLD,提高了邏輯運(yùn)算的速度,具有體系結(jié)構(gòu)和邏輯單元靈活、集成度高以及適用范圍寬等特點(diǎn),兼容了PLD和通用門陣列的優(yōu)點(diǎn),能夠?qū)崿F(xiàn)超大規(guī)模的電路,編程方式也很靈活,成為產(chǎn)品原型設(shè)計(jì)和中小規(guī)模(一般小于10000)產(chǎn)品生產(chǎn)的首選。第4階段出現(xiàn)了SOPC和SOC技術(shù),是PLD和ASIC技術(shù)融合的結(jié)果
29、,涵蓋了實(shí)時(shí)化數(shù)字信號(hào)處理技術(shù)、高速數(shù)據(jù)收發(fā)器、復(fù)雜計(jì)算以及嵌入式系統(tǒng)設(shè)計(jì)技術(shù)的全部?jī)?nèi)容。超越了ASIC器件的性能和規(guī)模,也超越了傳統(tǒng)意義上FPGA的概念,使PLD的應(yīng)用范圍從單片擴(kuò)展到系統(tǒng)級(jí)。CPLD更適合完成各種算法和組合邏輯,F(xiàn)PGA更適合于完成時(shí)序邏輯。換句話說(shuō), FPGA更適合于觸發(fā)器豐富的結(jié)構(gòu),而CPLD更適合于觸發(fā)器有限而乘積項(xiàng)豐富的結(jié)構(gòu)。CPLD的連續(xù)式布線結(jié)構(gòu)決定了它的時(shí)序延遲是均勻的和可預(yù)測(cè)的,而FPGA的分段式布線結(jié)構(gòu)決定了其延遲的不可預(yù)測(cè)性。在編程上FPGA比CPLD具有更大的靈活性。CPLD通過(guò)修改具有固定內(nèi)連電路的邏輯功能來(lái)編程,F(xiàn)PGA主要通過(guò)改變內(nèi)部連線的布線來(lái)
30、編程;FPGA可在邏輯門下編程,而CPLD是在邏輯塊下編程。CPLD和FPGA的比較FPGA的集成度比CPLD高,具有更復(fù)雜的布線結(jié)構(gòu)和邏輯實(shí)現(xiàn)。CPLD比FPGA使用起來(lái)更方便。CPLD的編程采用E2PROM或FASTFLAS技術(shù),無(wú)需外部存儲(chǔ)器芯片,使用簡(jiǎn)單。而FPGA的編程信息需存放在外部存儲(chǔ)器上,使用方法復(fù)雜。CPLD的速度比FPGA快,并且具有較大的時(shí)間可預(yù)測(cè)性。這是由于FPGA是門級(jí)編程,并且CLB(可配置邏輯模塊 Configurable Logic Block)之間采用分布式互聯(lián),而CPLD是邏輯塊級(jí)編程,并且其邏輯塊之間的互聯(lián)是集總式的。在編程方式上,CPLD主要是基于E2P
31、ROM或FLASH存儲(chǔ)器編程,編程次數(shù)可達(dá)1萬(wàn)次,優(yōu)點(diǎn)是系統(tǒng)斷電時(shí)編程信息也不丟失。CPLD又可分為在編程器上編程和在系統(tǒng)編程兩類。FPGA大部分是基于SRAM編程,編程信息在系統(tǒng)斷電時(shí)丟失,每次上電時(shí),需從器件外部將編程。數(shù)據(jù)重新寫入SRAM中。其優(yōu)點(diǎn)是可以編程任意次,可在工作中快速編程,從而實(shí)現(xiàn)板級(jí)和系統(tǒng)級(jí)的動(dòng)態(tài)配置。 CPLD保密性好,F(xiàn)PGA保密性差。 一般情況下,CPLD的功耗要比FPGA大,且集成度越高越明顯。Verilog HDL語(yǔ)言基礎(chǔ) Verilog語(yǔ)言概述Verilog HDL(以下簡(jiǎn)稱Verilog)是一種硬件描述語(yǔ)言,用于從算法級(jí)、門級(jí)到開關(guān)級(jí)的多種抽象設(shè)計(jì)層次的數(shù)字系
32、統(tǒng)建模。Verilog HDL語(yǔ)言具有下述描述能力:設(shè)計(jì)的行為特性:使用過(guò)程化結(jié)構(gòu)建模設(shè)計(jì)的數(shù)據(jù)流特性:使用連續(xù)賦值語(yǔ)句方式建模設(shè)計(jì)的結(jié)構(gòu)組成:使用門和模塊實(shí)例語(yǔ)句建模包含響應(yīng)監(jiān)控和設(shè)計(jì)驗(yàn)證方面的時(shí)延和波形產(chǎn)生機(jī)制。Verilog HDL語(yǔ)言提供了編程語(yǔ)言接口,通過(guò)該接口可以在模擬、驗(yàn)證期間從設(shè)計(jì)外部訪問(wèn)設(shè)計(jì),包括模擬的具體控制和運(yùn)行。Verilog 語(yǔ)言從C編程語(yǔ)言中繼承了多種操作符和結(jié)構(gòu)。并提供了擴(kuò)展的建模能力。Verilog語(yǔ)言是IEEE標(biāo)準(zhǔn),為IEEE Std13642019。Verilog硬件描述語(yǔ)言的主要功能包括:基本邏輯門,如and、or和nand等內(nèi)置在語(yǔ)言中。用戶定義原語(yǔ)(U
33、DP)創(chuàng)建的靈活性。用戶定義的原語(yǔ)既可以是組合邏輯原語(yǔ),也可以是時(shí)序邏輯原語(yǔ)。開關(guān)級(jí)基本結(jié)構(gòu)模型,例如pmos和nmos等也內(nèi)置在語(yǔ)言中。提供顯式語(yǔ)言結(jié)構(gòu)指定設(shè)計(jì)中的端口到端口的時(shí)延及路徑時(shí)延和設(shè)計(jì)的時(shí)序檢查??刹捎萌N不同方式或混合方式對(duì)設(shè)計(jì)建模:行為描述方式使用過(guò)程化結(jié)構(gòu)建模;數(shù)據(jù)流方式使用連續(xù)賦值語(yǔ)句方式建模;結(jié)構(gòu)化方式使用門和模塊實(shí)例語(yǔ)句描述建模。Verilog HDL硬件描述語(yǔ)言功能Verilog HDL中有兩類數(shù)據(jù)類型:網(wǎng)絡(luò)類型表示構(gòu)件間的物理連線寄存器類型表示抽象的數(shù)據(jù)存儲(chǔ)元件能夠描述層次設(shè)計(jì),可使用模塊實(shí)例結(jié)構(gòu)描述任何層次。設(shè)計(jì)的規(guī)??梢允侨我獾?,語(yǔ)言不對(duì)設(shè)計(jì)的規(guī)模(大?。┦┘?/p>
34、任何限制。Verilog HDL語(yǔ)言的描述能力能夠通過(guò)使用編程語(yǔ)言接口(PLI)機(jī)制進(jìn)一步擴(kuò)展。PLI是允許外部函數(shù)訪問(wèn)Verilog模塊內(nèi)信息、允許設(shè)計(jì)者與模擬器交互的例程集合。人和機(jī)器都可閱讀Verilog 語(yǔ)言,因此可作為EDA工具和設(shè)計(jì)者之間的交互語(yǔ)言。設(shè)計(jì)能夠在多個(gè)層次上加以描述,從開關(guān)級(jí)、門級(jí)、寄存器傳送級(jí)(RTL)到算法級(jí),包括進(jìn)程和隊(duì)列級(jí)。能夠使用內(nèi)置開關(guān)級(jí)原語(yǔ)在開關(guān)級(jí)對(duì)設(shè)計(jì)完整建模。同一語(yǔ)言可用于生成模擬激勵(lì)和指定測(cè)試的驗(yàn)證約束條件,例如輸入值的指定。Verilog HDL能夠監(jiān)控模擬驗(yàn)證的執(zhí)行,即模擬驗(yàn)證執(zhí)行過(guò)程中設(shè)計(jì)的值能夠被監(jiān)控和顯示。這些值也能夠用于與期望值比較,在不
35、匹配的情況下,打印報(bào)告消息。一個(gè)復(fù)雜電路系統(tǒng)的完整Verilog HDL模型是由若干個(gè)Verilog HDL模塊構(gòu)成的,每一個(gè)模塊又可以由若干個(gè)子模塊構(gòu)成。Verilog使用大約100個(gè)預(yù)定義的關(guān)鍵詞定義該語(yǔ)言的結(jié)構(gòu)。用Verilog 描述的電路設(shè)計(jì)就是該電路的 Verilog 模型,也稱為模塊,是Verilog的基本描述單位。一般來(lái)說(shuō)一個(gè)模塊可以是一個(gè)元件或者是一個(gè)更低層設(shè)計(jì)模塊的集合。模塊是并行運(yùn)行的,通常需要一個(gè)高層模塊通過(guò)調(diào)用其他模塊的實(shí)例來(lái)定義一個(gè)封閉的系統(tǒng),包括測(cè)試數(shù)據(jù)和硬件描述。Verilog程序結(jié)構(gòu)Verilog模塊結(jié)構(gòu)module 模塊名(端口列表); endmodule 端
36、口定義 input 輸入端口 output 輸出端口 inout 輸入/輸出端口 數(shù)據(jù)類型說(shuō)明 wire reg parameter 邏輯功能定義 assign always function task .Verilog結(jié)構(gòu)位于module和endmodule聲明語(yǔ)句之間,每個(gè)Verilog程序包括端口定義、數(shù)據(jù)類型說(shuō)明和邏輯功能定義部分。是模塊唯一的標(biāo)識(shí)符;是由模塊各個(gè)輸入、輸出和雙向端口組成,這些端口用來(lái)與其他模塊進(jìn)行通信;數(shù)據(jù)類型說(shuō)明部分用來(lái)指定模塊內(nèi)用到的數(shù)據(jù)對(duì)象為寄存器型、存儲(chǔ)器型還是連線型;邏輯功能定義部分通過(guò)使用邏輯功能語(yǔ)句來(lái)實(shí)現(xiàn)具體的邏輯功能。每個(gè)Verilog 程序源文件都以
37、.v作為文件擴(kuò)展名;Verilog HDL區(qū)分大小寫,每條語(yǔ)句以分號(hào)結(jié)束,endmodule語(yǔ)句后不加分號(hào)。白空(新行、制表符和空格)沒(méi)有特殊意義。模塊聲明包括模塊名字,模塊的輸入,輸出端口類表。模塊的定義格式如下:module (port_name1,port_namen);. endmodule; 其中: module_name為模塊名,是該模塊的唯一標(biāo)識(shí)。port_name為端口名,這些端口名使用“,”分割。端口是模塊與外部其它模塊進(jìn)行信號(hào)傳遞的通道(信號(hào)線),模塊端口分為輸入、輸出或雙向端口。端口的定義格式為: input , .;input為關(guān)鍵字,用于聲明后面的端口為輸入口;inp
38、ut_port_name為輸入端口名字;other_inputs為用逗號(hào)分割的其它輸入端口的名字; output ,.;output為關(guān)鍵字,用于聲明后面的端口為輸出端口;output_port_name為輸出端口名字;other_outputs為逗號(hào)分割的其它輸出端口的名字; inout ,.;inout為關(guān)鍵字,用于聲明后面端口為輸入/輸出類型;other_inouts為輸入/輸出端口的名字;other_inouts為逗號(hào)分割的其它輸入/輸出端口的名字;在聲明輸入/輸出時(shí),還要聲明其數(shù)據(jù)類型;默認(rèn)的端口類型為wire類型。輸入和雙向端口不能聲明為寄存器型?!纠?.1】端口說(shuō)明實(shí)例modul
39、e addr(cout,sum,ina,inb,cin)input cin;input7:0 ina,inb;output7:0 sum;output cout;endmodule注意,在verilog中,也可以使用ANSI C風(fēng)格進(jìn)行端口聲明??杀苊舛丝诿诙丝诹斜砗投丝诼暶髡Z(yǔ)句中的重復(fù)。如果聲明中未指明端口的數(shù)據(jù)類型,那么默認(rèn)端口具有wire數(shù)據(jù)類型?!纠?.2】 ANSI C風(fēng)格的端口說(shuō)明實(shí)例 module fulladd4(output reg3:0 sum, output reg c_out, input3:0 a,b, input c_in); endmodule 對(duì)模塊中所用到的
40、所有信號(hào)(包括端口信號(hào))都必須進(jìn)行數(shù)據(jù)類型的定義。Verilog HDL語(yǔ)言提供了各種信號(hào)類型,分別模擬實(shí)際電路中的各種物理連接和物理實(shí)體?!纠?.3】信號(hào)類型聲明 reg cout; /定義信號(hào)cout的數(shù)據(jù)類型為reg reg7:0 out; /定義信號(hào)out的數(shù)據(jù)類型為8位reg wire A,B,C,D,F /定義信號(hào)A,B,C,D,F為wire(連線)型 信號(hào)類型聲明 邏輯功能定義用于實(shí)現(xiàn)模塊中的具體的功能。主要的方法有:賦值語(yǔ)句實(shí)現(xiàn)邏輯定義:用assign賦值語(yǔ)句【例3.4】assign F=(A&B)|(C&D);模塊調(diào)用:指從模塊模板生成實(shí)際的電路結(jié)構(gòu)對(duì)象的操作,這樣的電路結(jié)構(gòu)
41、對(duì)象被稱為模塊實(shí)例,模塊調(diào)用也被稱為實(shí)例化。一個(gè)Verilog模塊可以被任意多個(gè)其他模塊調(diào)用。在Verilog 語(yǔ)言中,模塊不能被嵌套定義,但是卻可以包含其他模塊的拷貝,即調(diào)用其他模塊的實(shí)例。模塊的定義和模塊的實(shí)例是兩個(gè)不同的概念,在一個(gè)設(shè)計(jì)中,只有通過(guò)模塊調(diào)用(實(shí)例化)才能使用一個(gè)模塊。邏輯功能定義always過(guò)程賦值:always塊經(jīng)常用來(lái)描述邏輯功能,實(shí)現(xiàn)時(shí)序邏輯電路。【例3.5】always過(guò)程實(shí)現(xiàn)計(jì)數(shù)器的過(guò)程。 always (posedge clk) /正沿觸發(fā) begin if(reset) out=0; else out=out+1; end函數(shù)和任務(wù)調(diào)用:模塊調(diào)用和函數(shù)調(diào)用非
42、常相似,但是在本質(zhì)上又有很大差別:一個(gè)模塊代表?yè)碛刑囟üδ艿囊粋€(gè)電路塊,每當(dāng)一個(gè)模塊在其他模塊內(nèi)被調(diào)用一次,被調(diào)用模塊所表示的電路結(jié)構(gòu)就會(huì)在調(diào)用模塊代表的電路內(nèi)部被復(fù)制一次(即生成被調(diào)用模塊的一個(gè)實(shí)例);但是模塊調(diào)用不能像函數(shù)調(diào)用一樣具有“退出調(diào)用”的操作,因?yàn)橛布娐方Y(jié)構(gòu)不會(huì)隨著時(shí)間而發(fā)生變化,被復(fù)制的電路塊將一直存在。Verilog語(yǔ)言要素 注釋,在Verilog HDL中有兩種格式的注釋:/*第一種形式:可以擴(kuò)展至多行* / /第二種形式:在本行結(jié)束。間隔符:包括空格字符(b)、制表符(t)、換行符(n)以及換頁(yè)符。標(biāo)識(shí)符:Verilog HDL中的標(biāo)識(shí)符(identifier)可以是任
43、意一組字母、數(shù)字、$符號(hào)和_(下劃線)符號(hào)的組合。標(biāo)識(shí)符的第一個(gè)字符必須是字母或者下劃線。另外,標(biāo)識(shí)符是區(qū)分大小寫的。關(guān)鍵字:所有的關(guān)鍵字都使用小寫字母。運(yùn)算符:Verilog提供了豐富的運(yùn)算符。 Verilog常量Verilog HDL中有三類常量:整型;實(shí)數(shù)型;字符串型。整數(shù)型常量可以按如下兩種方式描述:簡(jiǎn)單的十進(jìn)制格式 +32 十進(jìn)制數(shù)32 -15 十進(jìn)制數(shù)-15基數(shù)表示法:;:定義以位計(jì)的常量的位長(zhǎng);:?jiǎn)我?hào)是指定位寬格式表示法的固有字符,不能省略。:是基于base的值的數(shù)字序列,由相應(yīng)基數(shù)格式的數(shù)字串組成。值x和z以及十六進(jìn)制中的a到f不區(qū)分大小寫?!纠?.6】下面給出基數(shù)表示的具體
44、實(shí)例。 5O37 5位八進(jìn)制數(shù) 4D2 4位十進(jìn)制數(shù) 4B1x_01 4位二進(jìn)制數(shù) 7Hx 7位x(擴(kuò)展的x),即xxxxxxx 4hZ 4位z(擴(kuò)展的z),即zzzz 4d-4 非法,數(shù)值不能為負(fù) 8 h 2A 8位十六進(jìn)制數(shù) 3 b001 非法,和基數(shù)b之間不允許出現(xiàn)空格 (2+3)b10 非法,位長(zhǎng)不能夠?yàn)楸磉_(dá)式整數(shù)型常量【例3.7】采用不同基數(shù)表示的例子 o721 9位八進(jìn)制數(shù) hAF 8位十六進(jìn)制數(shù)【例3.8】補(bǔ)零填充的例子 10b10,左邊添0占位,0000000010 10bx0 x1,左邊添x占位, xxxxxxx0 x1【例3.9】數(shù)據(jù)被截?cái)嗟睦?3b1001_0011與3
45、b011相等 5H0FFF與5H1F相等實(shí)數(shù)可以用下列兩種形式描述:十進(jìn)制計(jì)數(shù)法【例3.10】十進(jìn)制計(jì)數(shù)法表示實(shí)數(shù)常量的例子 2.0,5.678,11572.12,0.1 2.為非法,因?yàn)樾?shù)點(diǎn)兩側(cè)必須要有1位數(shù)字科學(xué)計(jì)數(shù)法【例3.11】科學(xué)計(jì)數(shù)法表示實(shí)數(shù)常量的例子 23_5.1e2其值為23510.0;忽略下劃線 3.6E2其值為360.0e(與E相同) 5E-4其值為0.0005 Verilog語(yǔ)言定義了實(shí)數(shù)如何隱式地轉(zhuǎn)換為整數(shù):實(shí)數(shù)通過(guò)四舍五入被轉(zhuǎn)換為最相近的整數(shù)。實(shí)數(shù)型常量【例3.12】對(duì)實(shí)數(shù)四舍五入后的表示 42.446,42.45轉(zhuǎn)換為整數(shù)42 92.5,92.699轉(zhuǎn)換為整數(shù)93
46、 -15.62轉(zhuǎn)換為整數(shù)-16 -26.22轉(zhuǎn)換為整數(shù)-26字符串是雙引號(hào)內(nèi)的字符序列,用一串8位二進(jìn)制ASC碼的形式表示,每一個(gè)8位二進(jìn)制ASC碼代表一個(gè)字符。例如:字符串“ab”等價(jià)于16h 5758。如果字符串被用作Verilog表達(dá)式或復(fù)制語(yǔ)句的操作數(shù),則字符串被看做無(wú)符號(hào)整數(shù)序列。字符串變量聲明:字符串變量是寄存器型變量,它具有與字符串的字符數(shù)乘以8相等的位寬。字符串常量【例3.13】字符串變量的聲明。 存儲(chǔ)12個(gè)字符的字符串“Hello China!”需要8*12(即96位)寬的寄存器。 reg 8*12:1 str; initial begin str =“Hello China
47、!”; end字符串操作 可以使用Verilog HDL的操作符對(duì)字符串進(jìn)行處理,被操作符處理的數(shù)據(jù)是8位ASC碼的序列。在操作過(guò)程中,如果聲明的字符串變量位數(shù)大于字符串實(shí)際長(zhǎng)度,則在賦值操作后,字符串變量的左端(即高位)補(bǔ)0?!纠?.14】字符串操作的例子module string_test; reg8*14:1 stringvar;initialbegin stringvar=“Hello China”; $display(“%s is stored as %h”,stringvar,stringvar); stringvar=stringvar.“!”; $display(“%s is
48、stored as %h”,stringvar,stringvar);endendmoduleVerilog常量-字符串常量輸出結(jié)果為:Hello China is stored as 00000048656c6c6f20776f726c64Hello China! is stored as 48656c6c6f20776f726c64212121特殊字符:在某些字符之前加上一個(gè)引導(dǎo)性的字符(轉(zhuǎn)移字符),這些的字符只能用于字符串中。 下表列出了這些特殊字符的表示和意義。字符意義 n換行符tTab鍵符號(hào)”符號(hào)”ddd3位八進(jìn)制數(shù)表示的ASCII值(0d7)Verilog HDL有下列四種基本的值
49、:1)0:邏輯0或“假”狀態(tài);2)1:邏輯1或“真”狀態(tài);3)x(X):未知狀態(tài),對(duì)大小寫不敏感;4)z(Z):高阻狀態(tài),對(duì)大小寫不敏感。Verilog數(shù)據(jù)類型 在Verilog HDL中,根據(jù)賦值和對(duì)值保持方式不同,可將數(shù)據(jù)類型主要分為兩大類:網(wǎng)絡(luò)(net)型和變(Variable)型。這兩類數(shù)據(jù)也代表了不同的硬件結(jié)構(gòu)。網(wǎng)絡(luò)和變量net表示器件之間的物理連接,需要門和模塊的驅(qū)動(dòng)。網(wǎng)絡(luò)數(shù)據(jù)類型是指輸出始終根據(jù)輸入的變化而更新其值的變量,它一般指的是硬件電路中的各種物理連接。 沒(méi)有聲明的net的默認(rèn)類型為1位(標(biāo)量)wire類型。Verilog HDL禁止對(duì)已經(jīng)聲明過(guò)的網(wǎng)絡(luò)、變量或參數(shù)再次聲明。
50、 net(網(wǎng)絡(luò))型下面給出net聲明的語(yǔ)法格式: range delay ,net_name; net_type:表示網(wǎng)絡(luò)型數(shù)據(jù)數(shù)據(jù)的類型。range:指定數(shù)據(jù)為標(biāo)量或矢量。默認(rèn)為1位的標(biāo)量;反之,由該項(xiàng)指定數(shù)據(jù)的矢量形式。delay:指定仿真延遲時(shí)間。net_name:net名稱,一次可定義多個(gè)net,用逗號(hào)分開。【例3.15】網(wǎng)絡(luò)的聲明wand w; / 一個(gè)標(biāo)量wand類型net tri 15: 0 bus; / 16位三態(tài)總線 wire 0: 31 w1, w2; / 兩個(gè)32位wire,MSB為bit0 類型功能可綜合性wire,tri標(biāo)準(zhǔn)內(nèi)部連接線supply1,supply0電源
51、和地wor,trior多驅(qū)動(dòng)源線或wand,triand多驅(qū)動(dòng)源線與trireg能保存電荷的nettri1,tri0無(wú)驅(qū)動(dòng)時(shí)上拉/下拉 常用的net型變量 網(wǎng)絡(luò)和變量 -net(網(wǎng)絡(luò))型網(wǎng)絡(luò)數(shù)據(jù)類型包含多種不同種類的網(wǎng)絡(luò)子類型: wire型,tri型,wor型,trior型,wand型,triand型,trireg型,tri1型,tri0型,supply0型,supply1型。簡(jiǎn)單的網(wǎng)絡(luò)類型說(shuō)明語(yǔ)法為: net_kindmsb:lsbnet1,net2, . . . , netN; 網(wǎng)絡(luò)型數(shù)據(jù)的默認(rèn)初始化值為Z。帶有驅(qū)動(dòng)的網(wǎng)絡(luò)型數(shù)據(jù)應(yīng)當(dāng)為它們的驅(qū)動(dòng)輸出指定默認(rèn)值。trireg網(wǎng)絡(luò)型數(shù)據(jù)時(shí)一個(gè)例
52、外。它的默認(rèn)初始值為x,而且在聲明語(yǔ)句中應(yīng)當(dāng)為其指定電荷量強(qiáng)度。 在一個(gè)網(wǎng)絡(luò)型數(shù)據(jù)類型聲明中,可以指定兩類強(qiáng)度:電荷量強(qiáng)度(charge strength)驅(qū)動(dòng)強(qiáng)度(drive strength)。 1)電荷量強(qiáng)度(charge strength)一個(gè)trireg網(wǎng)絡(luò)型數(shù)據(jù)用于模擬電荷存儲(chǔ)。電荷量強(qiáng)度可由下面的關(guān)鍵字來(lái)制定電容量的相對(duì)大?。簊mall、medium、large。默認(rèn)的電荷強(qiáng)度為medium。一個(gè)trireg網(wǎng)絡(luò)型數(shù)據(jù)能夠模擬一個(gè)電荷存儲(chǔ)節(jié)點(diǎn),該節(jié)點(diǎn)的電荷量將隨時(shí)間而逐漸衰減。對(duì)于一個(gè)trireg網(wǎng)絡(luò)型數(shù)據(jù)在仿真時(shí),其電荷衰減時(shí)間應(yīng)當(dāng)制定為延遲時(shí)間。2)驅(qū)動(dòng)強(qiáng)度(drive st
53、rength)在一個(gè)網(wǎng)絡(luò)型數(shù)據(jù)的聲明語(yǔ)句中如果對(duì)數(shù)據(jù)對(duì)象進(jìn)行了連續(xù)賦值,就可以為聲明的數(shù)據(jù)對(duì)象指定驅(qū)動(dòng)強(qiáng)度。1wire和tri網(wǎng)絡(luò)類型用于連接單元的連線wire是最常見的網(wǎng)絡(luò)類型。連線與三態(tài)線(tri)網(wǎng)語(yǔ)法和語(yǔ)義一致;三態(tài)線可以用于描述多個(gè)驅(qū)動(dòng)源驅(qū)動(dòng)同一根線的網(wǎng)絡(luò)類型;并沒(méi)有其他特殊的意義。多個(gè)驅(qū)動(dòng)源驅(qū)動(dòng)一個(gè)連線(或三態(tài)網(wǎng)絡(luò)),其有效值由下表確定。wire或tri01xz00 xx01x1x1XxxxxZ01xzwire型變量的定義格式如下:wire n-1:0 ,;其中name1,namen表示wire型名字。【例3.16】wire型變量的說(shuō)明 wire L; /將電路的輸出信號(hào)L聲明為網(wǎng)
54、絡(luò)型變量 wire 7:0 data bus; /聲明一個(gè)8bit寬的網(wǎng)絡(luò)型總線變量2wor和trior網(wǎng)絡(luò)類型wor和trior用于連線型邏輯結(jié)構(gòu)建模。當(dāng)有多個(gè)驅(qū)動(dòng)源驅(qū)動(dòng)wor和trior型數(shù)據(jù)時(shí),將產(chǎn)生線或結(jié)構(gòu)。如果驅(qū)動(dòng)源中任一個(gè)為1,那么網(wǎng)絡(luò)型數(shù)據(jù)的值也為1。線或和三態(tài)線或(trior)在語(yǔ)法和功能上是一致的。如果多個(gè)驅(qū)動(dòng)源驅(qū)動(dòng)這類網(wǎng),網(wǎng)的有效值由下表決定。wor或trior01xz001x011111xx1xxz01xz3wand和triand網(wǎng)絡(luò)類型當(dāng)有多個(gè)驅(qū)動(dòng)源驅(qū)動(dòng)線與網(wǎng)wand和triand時(shí),網(wǎng)絡(luò)的值為0。線與和三態(tài)線與(triand)網(wǎng)在語(yǔ)法和功能上是一致的。如果這類網(wǎng)絡(luò)存在
55、多個(gè)驅(qū)動(dòng)源,網(wǎng)絡(luò)的有效值由下表決定。Wand或triand01xz00000101x1X0 xxxZ01xz4Trireg網(wǎng)絡(luò)類型一個(gè)trireg網(wǎng)絡(luò)型數(shù)據(jù)可以處于以下兩種狀態(tài)之一:1)驅(qū)動(dòng)狀態(tài):當(dāng)至少被一個(gè)驅(qū)動(dòng)源驅(qū)動(dòng)時(shí),trireg網(wǎng)型數(shù)據(jù)有一個(gè)值(1、0、x)。判決值被導(dǎo)入trireg型數(shù)據(jù),也就是trireg型網(wǎng)絡(luò)的驅(qū)動(dòng)值。2)電容性狀態(tài):如果所有驅(qū)動(dòng)源都處于高阻狀態(tài)(z),trireg網(wǎng)絡(luò)型數(shù)據(jù)則保持它最后的驅(qū)動(dòng)值。高阻值不會(huì)從驅(qū)動(dòng)源導(dǎo)入trireg網(wǎng)絡(luò)型數(shù)據(jù)。5tri0和tri1網(wǎng)絡(luò)類型若無(wú)驅(qū)動(dòng)源驅(qū)動(dòng),tri0的值為0,tri1的值為1。網(wǎng)絡(luò)值的驅(qū)動(dòng)強(qiáng)度都為pull。tri0相當(dāng)于這
56、樣一個(gè)wire型網(wǎng)絡(luò):有一個(gè)強(qiáng)度為pull的0值連續(xù)驅(qū)動(dòng)該wire。同樣,tri1相當(dāng)于這樣一個(gè)wire型網(wǎng)絡(luò):有一個(gè)強(qiáng)度為pull的1值連續(xù)驅(qū)動(dòng)該wire。下表給出在多個(gè)驅(qū)動(dòng)源情況下tri0或tri1網(wǎng)的有效值。tri0或tri101xZ00 xx01x1x1XxxxXZ01x0或16supply0和supply1網(wǎng)絡(luò)類型supply0用于對(duì)“地”建模,即低電平0;supply1網(wǎng)用于對(duì)電源建模,即高電平1。 【例3.17】supply0和supply1網(wǎng)絡(luò)類型描述 supply0 Gnd,ClkGnd; supply1 2:0 Vcc;7未說(shuō)明的網(wǎng)絡(luò)在Verilog HDL中,可不必聲明某
57、種網(wǎng)絡(luò)類型,默認(rèn)為1位wire網(wǎng)絡(luò)??梢允褂胐efault_nettype編譯器指令改變這一隱式網(wǎng)絡(luò)說(shuō)明方式。使用方法如下: default_nettypenet_kind 例如,帶有下列編譯器指令 default_nettype wand 任何未被說(shuō)明的網(wǎng)默認(rèn)為1位線與網(wǎng)。1整型變量聲明整型變量常用于對(duì)循環(huán)控制變量的說(shuō)明,在算術(shù)運(yùn)算中被視為二進(jìn)制補(bǔ)碼形式的有符號(hào)數(shù)。整型數(shù)據(jù)與32位的寄存器型數(shù)據(jù)在實(shí)際意義上相同,只是寄存器型數(shù)據(jù)被當(dāng)做無(wú)符號(hào)數(shù)來(lái)處理。 【例3.18】整數(shù)變量的聲明 integer i,j; integer31:0 D;需要注意的是雖然interger有位寬度的聲明,但是int
58、eger型變量不能作為位向量訪問(wèn)。D6和D16:0的聲明都是非法的。在綜合時(shí),integer型變量的初始值是x。變量數(shù)據(jù)類型2實(shí)數(shù)型變量聲明 實(shí)數(shù)型數(shù)據(jù)在機(jī)器碼表示法中是浮點(diǎn)型數(shù)值,可用于對(duì)延遲時(shí)間的計(jì)算。實(shí)數(shù)型變量是不可綜合的。3時(shí)間型變量聲明 時(shí)間型變量與整型變量類似,只是它是64位的無(wú)符號(hào)數(shù)。時(shí)間型變量主要用于對(duì)仿真時(shí)間的存儲(chǔ)與計(jì)算處理,常與系統(tǒng)函數(shù)$time一起使用。4寄存器型變量聲明 寄存器型變量對(duì)應(yīng)的是具有狀態(tài)保持作用的硬件電路,如觸發(fā)器、鎖存器等。寄存器型變量與網(wǎng)絡(luò)絡(luò)數(shù)據(jù)的區(qū)別主要在于:寄存器型變量保持最后一次的賦值,而wire型數(shù)據(jù)需要有連續(xù)的驅(qū)動(dòng)。寄存器型變量只能在initi
59、al或always內(nèi)部被賦值。寄存器型變量聲明的格式如下: range , reg_name; reg_type為寄存器類型;range為矢量范圍,MSB:LSB格式,只對(duì)reg類型有效;reg_name為reg型變量的名字,一次可定義多個(gè)reg型變量,使用逗號(hào)分開。 【例3.19】寄存器型變量的聲明及使用module mult(clk, rst, A_IN, B_OUT);input clk,rst,A_IN;output B_OUT;reg arb_onebit = 1b0;always (posedge clk or posedge rst)begin if (rst) arb_oneb
60、it = 1b1; else arb_onebit = A_IN; endend B_OUT = arb_onebit;endmoduleVerilog HDL中的參數(shù)(parameter)既不屬于變量類型也不屬于網(wǎng)絡(luò)類型范疇。參數(shù)不是變量,而是常量。用參數(shù)聲明一個(gè)可變常量,常用于定義延時(shí)及寬度等參數(shù)。參數(shù)定義的格式:parameter par_name1=expression1, , par_namen=expression;par_name1,.par_namen為參數(shù)的名字;expression1,.,expression為表達(dá)式。參數(shù)【例3.20】參數(shù)的聲明及使用parameter B
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電工聘請(qǐng)合同范本
- 供熱ppp項(xiàng)目合同范本
- 分期出租手機(jī)合同范本
- 共享單車租賃合同范本
- 個(gè)體雇傭司機(jī)合同范本
- 公司買車抵押合同范本
- 沖壓模具采購(gòu)合同范本
- 內(nèi)墻涂料維修合同范本
- 醫(yī)療材料采購(gòu)合同范本
- 保險(xiǎn)服務(wù)合同范本
- 智慧消防綜合解決方案
- 勞務(wù)分包項(xiàng)目經(jīng)理崗位職責(zé)
- 幼兒繪本故事:奇怪的雨傘店
- 鋼琴基礎(chǔ)教程教案
- 糖基轉(zhuǎn)移酶和糖苷酶課件(PPT 111頁(yè))
- 屋面網(wǎng)架結(jié)構(gòu)液壓提升施工方案(50頁(yè))
- (語(yǔ)文A版)四年級(jí)語(yǔ)文下冊(cè)課件跳水 (2)
- 第6章向量空間ppt課件
- 醫(yī)療機(jī)構(gòu)聘用(返聘)證明
- 【單元設(shè)計(jì)】第七章《萬(wàn)有引力與宇宙航行》單元教學(xué)設(shè)計(jì)及教材分析課件高一物理人教版(2019)必修第二冊(cè)
- 馬可尼2955B(綜合測(cè)試儀)操作使用說(shuō)明書
評(píng)論
0/150
提交評(píng)論