FPGA設(shè)計復(fù)習(xí)資料_第1頁
FPGA設(shè)計復(fù)習(xí)資料_第2頁
FPGA設(shè)計復(fù)習(xí)資料_第3頁
FPGA設(shè)計復(fù)習(xí)資料_第4頁
FPGA設(shè)計復(fù)習(xí)資料_第5頁
已閱讀5頁,還剩96頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

FPGA設(shè)計復(fù)習(xí)資料

目錄

零、考試題型:...................................................................4

一、名詞概念.....................................................................4

二、VerilogHDL語法的基本概念...................................................9

(一)模塊...................................................................9

(-)標(biāo)識符、轉(zhuǎn)義標(biāo)識符、關(guān)鍵字、注釋、格式..............................10

(三)數(shù)據(jù)類型及其常量和變量...............................................11

(四)運(yùn)算符及表達(dá)式.......................................................16

(五)賦值語句和塊語句.......................................................19

(六)條件語句(iLelse語句)..............................................21

(七)case語句.............................................................22

(八)循環(huán)語句.............................................................23

(九)結(jié)構(gòu)說明語句.........................................................24

(十)常用的系統(tǒng)任務(wù).......................................................27

(十一)編譯指令...........................................................32

(十二)延時(delay).............................................................................................................35

四、veriloghdl建模方法..........................................................35

(一)數(shù)據(jù)流描述方式..........................................................35

(二)行為描述方式.........................................................36

(三)結(jié)構(gòu)化描述形式.......................................................37

(四)混合設(shè)計描述方式.....................................................39

五、Testbench仿真測試...........................................................39

六、有限狀態(tài)機(jī)..................................................................42

例一:用格雷碼.............................................................43

例二、用可綜合的Verilog模塊設(shè)計、用獨(dú)熱碼表示狀態(tài)機(jī)......................44

(推薦)例三:用可綜合的Verilog模塊設(shè)計、由輸出指定的碼表示狀態(tài)的狀態(tài)機(jī)...44

(推薦)例四、用可綜合Verilog模塊設(shè)計復(fù)雜的多輸出狀態(tài)機(jī)時常用的方法.....45

七、modelsim簡介...............................................................47

八、用Modelsim進(jìn)行功能仿真和時序仿真.........................................48

九、QuartusII與ModelSim聯(lián)合仿真..............................................57

十、必須讀懂的范例.............................................................60

基本門電路的幾種描述方法...................................................60

行為描述的4位全加器.......................................................61

數(shù)據(jù)流描述的4位全加器.....................................................61

結(jié)構(gòu)描述的4位級連全加器...................................................62

4位全加器的仿真程序........................................................62

行為描述的1位全加器.......................................................63

三態(tài)雙向驅(qū)動器.............................................................63

用assign語句描述的三態(tài)門...................................................64

用bufifl關(guān)鍵字描述的三態(tài)門.................................................64

用always過程塊產(chǎn)生兩個時鐘信號............................................64

用fork-join并行塊產(chǎn)生信號波形...............................................64

用begin-end串行塊產(chǎn)生信號波形..............................................65

激勵波形的描述.............................................................65

延遲定義塊舉例.............................................................66

8位加法器的仿真程序........................................................66

8位乘法器的仿真程序........................................................67

基本D觸發(fā)器...............................................................68

帶異步清0、異步置1的D觸發(fā)器............................................68

帶同步清0、同步置1的D觸發(fā)器............................................68

電平敏感的1位數(shù)據(jù)鎖存器...................................................69

帶置位和復(fù)位端的1位數(shù)據(jù)鎖存器............................................69

8位數(shù)據(jù)鎖存器..............................................................69

8位數(shù)據(jù)寄存器..............................................................70

8位移位寄存器..............................................................70

4位計數(shù)器..................................................................70

4位計數(shù)器的仿真程序........................................................71

可變模加法/減法計數(shù)器......................................................71

8位計數(shù)器的仿真............................................................72

4位Johnson計數(shù)器(異步復(fù)位)..............................................72

模為60的BCD碼加法計數(shù)器.................................................73

阻塞賦值方式定義的2選1多路選擇器........................................73

連續(xù)賦值方式定義的2選1多路選擇器........................................74

2選1多路選擇器的仿真.....................................................74

用case語句描述的4選1數(shù)據(jù)選擇器..........................................74

用if-else語句描述的4選1MUX............................................................................................75

同步置數(shù)、同步清零的計數(shù)器.................................................75

3-8譯碼器..................................................................76

8-3優(yōu)先編碼器..............................................................76

用函數(shù)定義的8-3優(yōu)先編碼器.................................................77

任務(wù)舉例....................................................................77

同一循環(huán)的不同實(shí)現(xiàn)方式.....................................................78

用repeat實(shí)現(xiàn)8位二進(jìn)制數(shù)的乘法.............................................79

用for語句實(shí)現(xiàn)2個8位數(shù)相乘...............................................79

用for語句描述的七人投票表決器.............................................80

七段數(shù)碼管譯碼器...........................................................80

非流水線方式8位全加器.....................................................81

4級流水方式的8位全加器...................................................81

兩個加法器和一個選擇器的實(shí)現(xiàn)方式..........................................82

奇偶校驗(yàn)位產(chǎn)生器...........................................................83

兩個選擇器和一個加法器的實(shí)現(xiàn)方式..........................................83

十一、綜合實(shí)驗(yàn)參考程序.........................................................83

狀態(tài)機(jī)設(shè)計的例子(略,見上文).............................................83

交通燈控制器...............................................................83

自動轉(zhuǎn)換量程頻率計控制器...................................................86

用組合電路實(shí)現(xiàn)的ROM............................................................................................................87

256x8RAM模塊............................................................88

256x16RAM塊.............................................................88

存儲器在仿真程序中的應(yīng)用...................................................89

4位串并轉(zhuǎn)換器..............................................................89

用函數(shù)實(shí)現(xiàn)簡單的處理器.....................................................89

微處理器的測試代碼.........................................................90

乘累加器(MAC)代碼......................................................91

乘累加器的測試代碼.........................................................91

多功能數(shù)字鐘...............................................................92

電話計費(fèi)器程序.............................................................96

“梁?!睒非葑嚯娐?......................................................98

零、考試題型:

一、單項選擇題(30分,每題2分)

二、EDA名詞解釋或簡答題(10分,每題2分)

三、程序填空題(20分,每空2分)

四、程序改錯題(10分)

五、程序設(shè)計題(2—3題)(30分)

祝同學(xué)們考試順利!

一\名詞概念

1、ASICs:application-specificintegratedcircuits專用集成電路

是指應(yīng)特定用戶要求和特定電子系統(tǒng)的需要而設(shè)計、制造的集成電路。ASIC分為全定

制和半定制。

ASIC的特點(diǎn)是面向特定用戶的需求,ASIC在批量生產(chǎn)時與通用集成電路相比具有體

積更小、功耗更低、可靠性提高、性能提高、保密性增強(qiáng)、成本降低等優(yōu)點(diǎn)。全定制設(shè)計需

要設(shè)計者完成所有電路的設(shè)計,因此需要大量人力物力,靈活性好但開發(fā)效率低下。如果設(shè)

計較為理想,全定制能夠比半定制的ASIC芯片運(yùn)行速度更快。半定制使用庫里的標(biāo)準(zhǔn)邏輯

單元(StandardCell),設(shè)計時可以從標(biāo)準(zhǔn)邏輯單元庫中選擇SSI(門電路)、MSI(如加法器、比

較器等)、數(shù)據(jù)通路(如ALU、存儲器、總線等)、存儲器甚至系統(tǒng)級模塊(如乘法器、微控制

器等)和IP核,這些邏輯單元已經(jīng)布局完畢,而且設(shè)計得較為可靠,設(shè)計者可以較方便地完

成系統(tǒng)設(shè)計。

2、ALU:arithmeticanlogicunit算術(shù)邏輯單元

是中央處理器(CPU)的執(zhí)行單元,是所有中央處理器的核心組成部分,由“AndGate”

(與門)和“OrGate"(或門)構(gòu)成的算術(shù)邏輯單元,主要功能是進(jìn)行二位元的算術(shù)運(yùn)算,

如加減乘(不包括整數(shù)除法)。基本上,在所有現(xiàn)代CPU體系結(jié)構(gòu)中,二進(jìn)制都以補(bǔ)碼的形

式來表不。

3、BCD:binary-codeddecimalBCD碼或二-十進(jìn)制代碼,亦稱二進(jìn)碼十進(jìn)數(shù)

是一種二進(jìn)制的數(shù)字編碼形式,用二進(jìn)制編碼的十進(jìn)制代碼。這種編碼形式利用了四個

位元來儲存一個十進(jìn)制的數(shù)碼,使二進(jìn)制和十進(jìn)制之間的轉(zhuǎn)換得以快捷的進(jìn)行。

4、CLBs:configurablelogicblocks可酉己置邏輯模塊。

包含一個可配置開關(guān)矩陣,此矩陣有選型電路(多路復(fù)用器),觸發(fā)器和4或6個輸入

組成。在Xilinx公司的FPGA器件中,CLB由多個(一般為4個或2個)相同的slice和附

加邏輯構(gòu)成。每個CLB模塊不僅可以用于實(shí)現(xiàn)組合邏輯和時序邏輯,還可以配置為分布式

RAM和分布式R0M?

5、CPLDs:complexprogrammablelogicdevices復(fù)雜可編程邏輯器件

是從PAL和GAL器件發(fā)展出來的器件,相對而言規(guī)模大,結(jié)構(gòu)復(fù)雜,屬于大規(guī)模集成

電路范圍。主要是由可編程邏輯宏單元(MC,MacroCell)圍繞中心的可編程互連矩陣單元組

成。是一種用戶根據(jù)各自需要而自行構(gòu)造邏輯功能的數(shù)字集成電路。

6、DSP:digitalsignalprocessing數(shù)字信號處理

就是用數(shù)值計算的方式對信號進(jìn)行加工的理論和技術(shù)。

7、EDA:electronicdesignautomation電子設(shè)計自動化

在20世紀(jì)60年代中期從計算機(jī)輔助設(shè)計(CAD)、計算機(jī)輔助制造(CAM)、計算機(jī)

輔助測試(CAT)和計算機(jī)輔助工程(CAE)的概念發(fā)展而來的。EDA技術(shù)就是以計算機(jī)

為工具,設(shè)計者在EDA軟件平臺上,用硬件描述語言VHDL完成設(shè)計文件,然后由計算機(jī)

自動地完成邏輯編譯、化簡、分割、綜合、優(yōu)化、布局、布線和仿真,直至對于特定目標(biāo)芯

片的適配編譯、邏輯映射和編程下載等工作。

8、TOPDOWN:自頂向下或自上而下

是一種層次化和結(jié)構(gòu)化的現(xiàn)代集成電路設(shè)計方法。先用高抽象級構(gòu)造系統(tǒng),然后再設(shè)計

下層單元。

自下而上的設(shè)計流程:一種先構(gòu)建底層單元,然后由底層單元構(gòu)造更大的系統(tǒng)的設(shè)計方

9、FPGA:field-programmablegatearray現(xiàn)場可編程門陣列

它是在PAL、GAL,CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集

成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了

原有可編程器件門電路數(shù)有限的缺點(diǎn)。

FPGA采用了邏輯單元陣列LCA(LogicCellArray)的概念,內(nèi)部包括可配置邏輯模塊

CLB(ConfigurableLogicBlock)>輸入輸出模塊IOB(InputOutputBlock)和內(nèi)部連線

(Interconnect)三個部分。FPGA利用小型查找表(LUT)(16xlRAM)來實(shí)現(xiàn)組合邏輯,

每個查找表連接到一個D觸發(fā)器的輸入端,觸發(fā)器再來驅(qū)動其他邏輯電路或驅(qū)動I/O,由此

構(gòu)成了既可實(shí)現(xiàn)組合邏輯功能又可實(shí)現(xiàn)時序邏輯功能的基本邏輯單元模塊,這些模塊間利用

金屬連線互相連接或連接到I/O模塊。FPGA的邏輯是通過向內(nèi)部靜態(tài)存儲單元加載編程數(shù)

據(jù)來實(shí)現(xiàn)的,存儲在存儲器單元中的值決定了邏輯單元的邏輯功能以及各模塊之間或模塊與

I/O間的聯(lián)接方式,并最終決定了FPGA所能實(shí)現(xiàn)的功能,F(xiàn)PGA允許無限次的編程。

全球知名的FPGA生產(chǎn)廠商有:

(1)Altera,開發(fā)平臺是QuartusII;(2)Xilinx開發(fā)平臺是ISE;(3)ActeL開發(fā)平

臺是Libero;(4)Lattice;(5)Atmel

FPGA與CPLD的區(qū)別

CPLD:乘積項豐富而觸發(fā)器少一適用組合邏輯;延時固定;掉電后重新上電還能保持編

程信息;

FPGA:觸發(fā)器資源豐富;適用時序邏輯;延時時間不可預(yù)測(容易產(chǎn)生競爭冒險或誤碼

等);掉電后重新上電不能保持編程信息,需使用配置芯片

10、FSM:finite-statemachine有限狀態(tài)機(jī)

有限狀態(tài)機(jī)是指輸出取決于過去輸入部分和當(dāng)前輸入部分的時序邏輯電路。一般來說,

除了輸入部分和輸出部分外,有限狀態(tài)機(jī)還含有一組具有“記憶”功能的寄存器,這些寄存器

的功能是記憶有限狀態(tài)機(jī)的內(nèi)部狀態(tài),它們常被稱為狀態(tài)寄存器。在有限狀態(tài)機(jī)中,狀態(tài)寄

存器的的下一個狀態(tài)不僅與輸入信號有關(guān),而且還與該寄存器的當(dāng)前狀態(tài)有關(guān),因此有限狀

態(tài)機(jī)又可以認(rèn)為是組合邏輯和寄存器邏輯的一種組合。其中,寄存器邏輯的功能是存儲有限

狀態(tài)機(jī)的內(nèi)部狀態(tài);而組合邏輯有可以分為次態(tài)邏輯和輸出邏輯兩部分,次態(tài)邏輯的功能是

確定有限狀態(tài)機(jī)的下一個狀態(tài),輸出邏輯的功能是確定有限狀態(tài)機(jī)的輸出。

根據(jù)有限狀態(tài)機(jī)是否使用輸入信號,設(shè)計人員經(jīng)常將其分為Moore型有限狀態(tài)機(jī)和

Mealy型有限狀態(tài)機(jī)兩種類型。

11、FIFO:first-in,first-outmemory先入先出隊列

是一種傳統(tǒng)的順序執(zhí)行方法,先進(jìn)入的指令先完成并引退,接著才執(zhí)行第二條指令。是

一種先進(jìn)先出的數(shù)據(jù)緩存器

12、HDL:hardwaredescriptionlanguage硬件描述語言

具有特殊結(jié)構(gòu)能夠?qū)τ布壿嬰娐返墓δ苓M(jìn)行描述的一種高級編程語言。這種特殊結(jié)構(gòu)

的功能如下:描述電路的連接、描述電路的功能、在不同抽象級上描述電路、描述電路的時

序、表達(dá)具有并行性。

13、LUT:lookuptable查找表

本質(zhì)上就是一個RAM。它把數(shù)據(jù)事先寫入RAM后,每當(dāng)輸入一個信號就等于輸入一

個地址進(jìn)行查表,找出地址對應(yīng)的內(nèi)容,然后輸出。

14、Mealy-typeFSM:Mealy型有限狀態(tài)機(jī)

其輸出信號不僅與當(dāng)前狀態(tài)有關(guān),而且還與所有的輸入信號有關(guān),即可以把Mealy型

有限狀態(tài)機(jī)的輸出看成是當(dāng)前狀態(tài)和所有輸入信號的函數(shù)。

15、Moore-typeFSM:Moore型有限狀態(tài)機(jī)

其輸出信號僅與當(dāng)前狀態(tài)有關(guān),即可以把Moore型有限狀態(tài)的輸出看成是當(dāng)前狀態(tài)的

函數(shù)。

16^PAL:programmableanaylogic可編程陣列邏輯

17、PLA:programmablelogicarray可編程邏輯陣列

18、IPcore:知識產(chǎn)權(quán)核

是一段具有特定電路功能的硬件描述語言程序,該程序與集成電路工藝無關(guān),可以移植

到不同的半導(dǎo)體工藝中去生產(chǎn)集成電路芯片。通常是用HDL文本形式提交給用戶,它經(jīng)過

RTL級設(shè)計優(yōu)化和功能驗(yàn)證,但其中不含有任何具體的物理信息。IP核的重用是設(shè)計人員

贏得迅速上市時間的主要策略。

與工藝無關(guān)的程序(IPcore)稱為軟核。

把在某一種專用集成電路工藝器件上實(shí)現(xiàn)的、經(jīng)驗(yàn)證是正確的、總門數(shù)在5000門以上

的具有特定電路功能的集成電路版圖掩膜稱為硬核。盡管硬核由于缺乏靈活性而可移植性

差,但由于無須提供寄存器轉(zhuǎn)移級(RTL)文件,因而更易于實(shí)現(xiàn)IP保護(hù)。

固核是指在某一種FPGA器件上實(shí)現(xiàn)的、經(jīng)驗(yàn)證是正確的、總門數(shù)在5000門以上的電

路結(jié)構(gòu)編碼文件,是軟核和硬核的折衷。

19、SoC:system-on-a-chip芯片級系統(tǒng),也稱片上系統(tǒng),是一個有專用目標(biāo)的集成電路,

其中包含完整系統(tǒng)并有嵌入軟件的全部內(nèi)容。

20^RTL:registertransferlevel寄存器傳輸級

用于設(shè)計的可綜合的一種抽象級。在RTL級,IC是由一組寄存器以及寄存器之間的邏

輯操作構(gòu)成。

RTL級和門級簡單的區(qū)別在于,RTL是用硬件描述語言(Verilog或VHDL)描述電路

所要達(dá)到的功能,門級則是用具體的邏輯單元(依賴廠家的庫)來實(shí)現(xiàn)電路所要達(dá)到的功能,

門級最終可以在半導(dǎo)體廠加工成實(shí)際的硬件,即RTL和門級是設(shè)計實(shí)現(xiàn)上的不同階段,RTL

經(jīng)過邏輯綜合后,就得到門級。

21、syntaxerror:語法或句法錯誤。提示你必須檢查所寫代碼的語法問題。

22、UDP:user-definedprimitive用戶定義的原語

是指用戶自己設(shè)計的基本邏輯元件的功能,即可以利用UDP來定義自己特色的用于仿

真的基本邏輯元件模塊并建立相應(yīng)的原語庫,并進(jìn)行仿真。其結(jié)構(gòu)模塊與一般模塊類似,以

primitive關(guān)鍵詞開始,用endprimitive關(guān)鍵詞結(jié)束。

23、時序邏輯:由多個觸發(fā)器和多個組合邏輯塊組成的網(wǎng)絡(luò)。常用的有:計數(shù)器、復(fù)雜

的數(shù)據(jù)流動控制邏輯、運(yùn)算控制邏輯、指令分析和操作控制邏輯。同步時序邏輯是設(shè)計復(fù)雜

的數(shù)字邏輯系統(tǒng)的核心。時序邏輯借助于狀態(tài)寄存器記住它目前所處的狀態(tài)。在不同的狀態(tài)

下,即使所有的輸入都相同,其輸出也不一定相同。

24、組合邏輯:是指在任何時刻,輸出狀態(tài)只決定于同一時刻各輸入狀態(tài)的組合,而與

電路以前狀態(tài)無關(guān),與其他時間的狀態(tài)無關(guān)。

25、LAB:LogicArrayBlocks邏輯陣列塊

26、PIA:ProgrammableInterconnectArray可編程連線陣列

負(fù)責(zé)信號傳遞,連接所有的宏單元。

27>IEEE:InstituteofElectricalandElectronicsEngineers美國電氣和電子工程師協(xié)會

28、primitive:原語

是指veriloghdl中預(yù)先定義的邏輯單元。這些內(nèi)置的原語可以轉(zhuǎn)化為更大型的設(shè)計實(shí)

例,形成一個結(jié)構(gòu)更為復(fù)雜的部件。這些原語包括:and、nand>or、nor>xor>xnor>not>

buf等。

29、抽象級(LevelsofAbstraction):

描述風(fēng)格的詳細(xì)程度,如行為級和門級。Verilog既是一種行為描述的語言也是一種結(jié)

構(gòu)描述語言。Verilog模型可以是實(shí)際電路的不同級別的抽象。這些抽象的級別包括:

行為級(系統(tǒng)說明)行為綜合

-設(shè)計文檔/算法描述□

綜合前仿真

RTL/功能級

-\erilog邏輯綜合

門級/結(jié)構(gòu)級

-\eriiog綜合后仿真

版圖/物理級

-幾何圖形版圖

30、利I用Quartusii進(jìn)行FPGA的開發(fā)流程:

(1)設(shè)計輸入:圖形輸入、狀態(tài)圖輸入、波形圖輸入、原理圖輸入、HDL文本輸入

(2)綜合

(3)適配

(4)仿真:時序仿真、功能仿真

(5)編程下載

(6)硬件測試

31、數(shù)字系統(tǒng)建模。

被建模的數(shù)字系統(tǒng)對象既可以是簡單的門,也可以是完整的數(shù)字電子系統(tǒng)。硬件描述語

言的主要功能是編寫設(shè)計文件,建立電子系統(tǒng)行為級的仿真模型,然后利用高性能的計算機(jī)

對用VerilogHDL或VHDL建模的復(fù)雜數(shù)字邏輯進(jìn)行仿真,然后再對它進(jìn)行自動綜合以生成

符合要求且在電路結(jié)構(gòu)上可以實(shí)現(xiàn)的數(shù)字邏輯網(wǎng)表(Netlist),然后根據(jù)網(wǎng)表和適合某種工藝

的器件自動生成具體電路,最后生成該工藝條件下具體電路的延時模型。仿真驗(yàn)證無誤后用

于制造ASIC芯片或?qū)懭隖PGA和CPLD中。

32、目前最主要的硬件描述語言是VHDL和VerilogHDL。Verilog起源于C語言,因

此非常類似于C語言,容易掌握。VerilogHDL語言最初是于1983年由GatewayDesign

Automation公司為其模擬器產(chǎn)品開發(fā)的硬件建模語言。Verilog語言于1995年成為IEEE標(biāo)

準(zhǔn),稱為IEEEStd1364-1995o

VHDL起源于ADA語言,格式嚴(yán)謹(jǐn),語法嚴(yán)格,不易學(xué)習(xí)。VHDL出現(xiàn)較晚,但標(biāo)準(zhǔn)

化早。IEEE1706-1985標(biāo)準(zhǔn)。

33、HDL有兩種用途:系統(tǒng)仿真和硬件實(shí)現(xiàn)。如果程序只用于仿真,那么幾乎所有的

語法和編程方法都可以使用。但如果我們的程序是用于硬件實(shí)現(xiàn)(例如:用于FPGA設(shè)計),

那么我們就必須保證程序"可綜合"(程序的功能可以用硬件電路實(shí)現(xiàn))。不可綜合的HDL語

句在軟件綜合時將被忽略或者報錯。我們應(yīng)當(dāng)牢記一點(diǎn):"所有的HDL描述都可以用于仿真,

但不是所有的HDL描述都能用硬件實(shí)現(xiàn)。

34、硬件描述語言開發(fā)流程

用VHDL/VerilogHD語言開發(fā)PLD/FPGA的完整流程為:

(1)文本編輯:用任何文本編輯器都可以進(jìn)行,也可以用專用的HDL編輯環(huán)境。通

常VHDL文件保存為.vhd文件,Verilog文件保存為.v文件

(2)功能仿真:將文件調(diào)入HDL仿真軟件進(jìn)行功能仿真,檢查邏輯功能是否正確(也

叫前仿真,對簡單的設(shè)計可以跳過這一步,只在布線完成以后,進(jìn)行時序仿真)

(3)邏輯綜合:將源文件調(diào)入邏輯綜合軟件進(jìn)行綜合,即把語言綜合成最簡的布爾表

達(dá)式和信號的連接關(guān)系。邏輯綜合軟件會生成.edf(edif)的EDA工業(yè)標(biāo)準(zhǔn)文件。

(4)布局布線:將.edf文件調(diào)入PLD廠家提供的軟件中進(jìn)行布線,即把設(shè)計好的邏輯

安放到PLD/FPGA內(nèi)。

(5)時序仿真:需要利用在布局布線中獲得的精確參數(shù),用仿真軟件驗(yàn)證電路的時序。

(也叫后仿真)

(6)編程下載:確認(rèn)仿真無誤后,將文件下載到FPGA中。

35、VHDL:VeryHighSpeedIntegeratedCircuitHardwareDescriptionLanguage:甚高速

集成電路的硬件描述語言。

36、VerilogHDL較為適合系統(tǒng)級(System)、算法級(Alogrithem)、寄存器傳輸級(RTL)、

邏輯級(Logic)、門級(Gate)、電路開關(guān)級(Switch)設(shè)計,而對于特大型(幾百萬門級以上)的

系統(tǒng)級(System)設(shè)計,則VHDL更為適合,由于這兩種HDL語言還在不斷地發(fā)展過程中,

它們都會逐步地完善自己。

37、層次管理

復(fù)雜數(shù)字邏輯電路和系統(tǒng)的層次化、結(jié)構(gòu)化設(shè)計隱含著硬件設(shè)計方案的逐次分解。在

設(shè)計過程中的任意層次,硬件至少有一種描述形式。硬件的描述特別是行為描述通常稱為行

為建模。在集成電路設(shè)計的每一層次,硬件可以分為一些模塊,該層次的硬件結(jié)構(gòu)由這些模

塊的互連描述,該層次的硬件的行為由這些模塊的行為描述。這些模塊稱為該層次的基本單

元。而該層次的基本單元又由下一層次的基本單元互連而成。如此下去,完整的硬件設(shè)計就

可以由圖2-6-1所示的設(shè)計樹描述。在這個設(shè)計樹上,節(jié)點(diǎn)對應(yīng)著該層次上基本單元的行為

描述,樹枝對應(yīng)著基本單元的結(jié)構(gòu)分解。在不同的層次都可以進(jìn)行仿真以對設(shè)計思想進(jìn)行驗(yàn)

證。EDA工具提供了有效的手段來管理錯綜復(fù)雜的層次,即可以很方便地查看某一層次某

模塊的源代碼或電路圖以改正仿真時發(fā)現(xiàn)的錯誤。

38、具體模塊的設(shè)計編譯和仿真的過程

圖2-6-3HDL設(shè)計流程圖

從上圖可以看出,模塊設(shè)計流程主要由兩大主要功能部分組成:

設(shè)計開發(fā):即從編寫設(shè)計文件->綜合到布局布線->投片生成這樣一系列步驟。

設(shè)計驗(yàn)證:也就是進(jìn)行各種仿真的一系列步驟,如果在仿真過程中發(fā)現(xiàn)問題就返回設(shè)

計輸入進(jìn)行修改。

二、VerilogHDL語法的基本概念

(-)模塊

模塊是Verilog的基本描述單位,用于描述某個設(shè)計的功能或結(jié)構(gòu)及其與其他模塊通信

的外部端口。一個設(shè)計的結(jié)構(gòu)可使用開關(guān)級原語、門級原語和用戶定義的原語方式描述;設(shè)

計的數(shù)據(jù)流行為使用連續(xù)賦值語句進(jìn)行描述;時序行為使用過程結(jié)構(gòu)描述。一個模塊可以在

另一個模塊中使用。

一個模塊的基本語法如下:

modulemodulename(portlist);//module是模塊的起始關(guān)鍵字

//module_name是模塊名稱,portlist是端口列表;

(Declarations:)〃聲明主要包括以下類型:

reg,wire,parameter,〃模塊描述中使用的寄存器、連線型線網(wǎng)和參數(shù)

input,output,inout,〃模塊的輸入、輸出、雙向端口(相當(dāng)于引腳)

function,task,...//函數(shù),任務(wù)

(Statements:)〃功能描述包括以下類型的內(nèi)容:

initialstatement〃初始化塊

alwaysstatement〃總是執(zhí)行塊

moduleinstantiation〃模塊的實(shí)例化

gateinstantiation〃門實(shí)例

UDPinstantiation〃用戶自定義原語實(shí)例

continuousassignment〃連續(xù)任務(wù)

endmodule//endmodule是模塊的結(jié)束關(guān)鍵字

聲明部分和語句可以散布在模塊中的任何地方;但是變量、寄存器、線網(wǎng)和參數(shù)等的說

明部分必須在使用前出現(xiàn)。為了使模塊描述清晰和具有良好的可讀性,最好將所有的聲明部

分放在語句前。

以下為建模一個半加器電路的模塊的簡單實(shí)例。

moduleHalfAdder(A,B,Sum,Carry);〃模塊的名字是Ha儂dder,模塊有4個端口,以分號結(jié)束

inputA,B;/*輸入端DA和B.由于沒有定義端口的位數(shù),所有端口大小都為1位;同時,由于沒

有各端口的數(shù)據(jù)類型說明,這四個端口都是線網(wǎng)數(shù)據(jù)類型*/

outputSum,Carry;〃輸出端口Sum和Carry

assign#2Sum=AAB;〃描述半加器數(shù)據(jù)流行為的連續(xù)賦值語句

assign#5Carry=A&B;〃描述半加器數(shù)據(jù)流行為的連續(xù)賦值語句

endmodule//

/*這些語句在模塊中出現(xiàn)的順序無關(guān)緊要,這些語句是并發(fā)的。每條語句的執(zhí)行順序依賴于發(fā)生在變量A和B上的

事件。*/

在模塊中,可用下述方式描述一個設(shè)計:

1)數(shù)據(jù)流方式;

2)行為方式;

3)結(jié)構(gòu)方式;

4)上述描述方式的混合。

(-)標(biāo)識符、轉(zhuǎn)義標(biāo)識符、關(guān)鍵字、注釋、格式

VerilogHDL中的標(biāo)識符(identifier)可以是任意一組字母、數(shù)字、$符號和_(下劃線)符號

的組合,但標(biāo)識符的第一個字符必須是字母或者下劃線。另外,標(biāo)識符是區(qū)分大小寫的。以

下是標(biāo)識符的幾個例子:

Count

COUNT〃與Count不同。

R1D2

R56_68

FIVES

轉(zhuǎn)義標(biāo)識符(escapedidentifier)可以在一條標(biāo)識符中包含任何可打印字符。轉(zhuǎn)義標(biāo)識符以

'(反斜線)符號開頭,以空白結(jié)尾(空白可以是一個空格、一個制表字符或換行符)。下面例

舉了幾個轉(zhuǎn)義標(biāo)識符:

\7400

、{******}

\~Q

\OutGate與OutGate相同。

最后這個例子解釋了在一條轉(zhuǎn)義標(biāo)識符中,反斜線和結(jié)束空格并不是轉(zhuǎn)義標(biāo)識符的一部

分。也就是說,標(biāo)識符\OutGate和標(biāo)識符OutGate恒等。

VerilogHDL定義了一系列保留字,叫做關(guān)鍵詞,它僅用于某些上下文中。附錄A列

出了語言中的所有保留字。注意只有小寫的關(guān)鍵詞才是保留字。例如,標(biāo)識符always(這是

個關(guān)鍵詞)與標(biāo)識符ALWAYS(非關(guān)鍵詞)是不同的。

另外,轉(zhuǎn)義標(biāo)識符與關(guān)鍵詞并不完全相同。標(biāo)識符\initial與標(biāo)識符initial(這是個關(guān)鍵

詞)不同。注意這一約定與那些轉(zhuǎn)義標(biāo)識符不同。

注釋。在VerilogHDL中有兩種形式的注釋。

/*第一種形式:可以擴(kuò)展至

多行*/

〃第二種形式:在本行結(jié)束。

格式。VerilogHDL區(qū)分大小寫。也就是說大小寫不同的標(biāo)識符是不同的。此外,Verilog

HDL是自由格式的,即結(jié)構(gòu)可以跨越多行編寫,也可以在一行內(nèi)編寫。白空(新行、制表

符和空格)沒有特殊意義。下面通過實(shí)例解釋說明。

initialbeginTop=3"bOO1;#2Top=3"bOll;end

和下面的指令一樣:

initial

begin

Top=3"bOOl;

#2Top=3"bOll;

end

(三)

(三)數(shù)據(jù)類型及其常量和變量

1、值類型:

VerilogHDL有下列四種基本的值:

1)0:邏輯?;颉凹佟?/p>

2)1:邏輯1或“真”

3)x:未知

4)z:高阻

注意這四種值的解釋都內(nèi)置于語言中。如一個為z的值總是意味著高阻抗,一個為0

的值通常是指邏輯0o

在門的輸入或一個表達(dá)式中的為“z”的值通常解釋成“X"。此外,x值和z值都是不

分大小寫的,也就是說,值Oxlz與值0X1Z相同。VerilogHDL中的常量是由以上這四類基

本值組成的。

2、VerilogHDL中有三類常量:

1)整型

2)實(shí)數(shù)型

3)字符串型

下劃線符號(_)可以隨意用在整數(shù)或?qū)崝?shù)中,它們就數(shù)量本身沒有意義。它們能用來

提高易讀性;唯一的限制是下劃線符號不能用作為首字符。

(1)整型數(shù)

>整數(shù)常量:

?1)二進(jìn)制整數(shù)(b或B)

?2)十進(jìn)制整數(shù)(d或D)

?3)十六進(jìn)制整數(shù)(h或H)

?4)八進(jìn)制整數(shù)(o或O)

>x和z(?)值:不定值和高阻值

如:4'blOxO、4-bl01z>12'dz、12'd?、8Mx

A負(fù)數(shù):位寬前加-號,內(nèi)部是補(bǔ)碼

如:-l=-32'l=32'hFFFFFFFF

>下劃線:僅增加可讀性

如:16'bl0x0000000001111

“AB"=16'b01000001_01000010

整型數(shù)可以按如下兩種方式書寫:

簡單的十進(jìn)制數(shù)格式

這種形式的整數(shù)定義為帶有一個可選的“+”(一元)或“一”(一元)操作符的數(shù)字

序列。下面是這種簡易十進(jìn)制形式整數(shù)的例子。

32十進(jìn)制數(shù)32

—15十進(jìn)制數(shù)一15

這種形式的整數(shù)值代表一個有符號的數(shù)。負(fù)數(shù)可使用兩種補(bǔ)碼形式表示。因此32在5

位的二進(jìn)制形式中為10000,在6位二進(jìn)制形式中為110001;—15在5位二進(jìn)制形式中為

10001,在6位二進(jìn)制形式中為110001。

基數(shù)格式:[size]'basevalue

size定義以位計的常量的位長;base為o或O(表示八進(jìn)制),b或B(表示二進(jìn)制),

d或D(表示十進(jìn)制),h或H(表示十六進(jìn)制)之一;value是基于base的值的數(shù)字序列。

值x和z以及十六進(jìn)制中的a到f不區(qū)分大小寫。

下面是一些具體實(shí)例:

5,O375位八進(jìn)制數(shù)

4'D24位十進(jìn)制數(shù)

4'Blx_014位二進(jìn)制數(shù)

7'Hx7位x(擴(kuò)展的x),即xxxxxxx

4'hZ4位z(擴(kuò)展的z),即zzzz

4'd-4非法:數(shù)值不能為負(fù)

8112A在位長和字符之間,以及基數(shù)和數(shù)值之間允許出現(xiàn)空格

3'b001非法:’和基數(shù)b之間不允許出現(xiàn)空格

(2+3)'biO非法:位長不能夠?yàn)楸磉_(dá)式

注意,x(或z)在十六進(jìn)制值中代表4位x(或z),在八進(jìn)制中代表3位x(或z),

在二進(jìn)制中代表1位x(或z)。

基數(shù)格式計數(shù)形式的數(shù)通常為無符號數(shù)。這種形式的整型數(shù)的長度定義是可選的。如果

沒有定義一個整數(shù)型的長度,數(shù)的長度為相應(yīng)值中定義的位數(shù)。下面是兩個例子:

,o721〃9位八進(jìn)制數(shù)

'hAF〃8位十六進(jìn)制數(shù)

如果定義的長度比為常量指定的長度長,通常在左邊填0補(bǔ)位。但是如果數(shù)最左邊一位

為x或z,就相應(yīng)地用x或z在左邊補(bǔ)位。例如:

10'blO左邊添0占位,0000000010

10'bxOxl左邊添x占位,xxxxxxx0xl

如果長度定義得更小,那么最左邊的位相應(yīng)地被截斷。例如:

31bl001_0011與3boi1相等

5'H0FFF與5'HIF相等

?字符在數(shù)中可以代替值z,在值z被解釋為不分大小寫的情況下提高可讀性

2、實(shí)數(shù)

實(shí)數(shù)可以用下列兩種形式定義:

(1)十進(jìn)制計數(shù)法;例如

2.0

5.678

11572.12

0.1

2.//非法:小數(shù)點(diǎn)兩側(cè)必須有1位數(shù)字

(2)科學(xué)計數(shù)法;這種形式的實(shí)數(shù)舉例如下:

23_5.1e2其值為23510.0;忽略下劃線

3.6E2360.0(e與E相同)

5E-40.0005

Verilog語言定義了實(shí)數(shù)如何隱式地轉(zhuǎn)換為整數(shù)。實(shí)數(shù)通過四舍五入被轉(zhuǎn)換為最相近的

整數(shù)。

42.446,42.45轉(zhuǎn)換為整數(shù)42

92.5,92.699轉(zhuǎn)換為整數(shù)93

-15.62轉(zhuǎn)換為整數(shù)一16

-26.22轉(zhuǎn)換為整數(shù)一26

3、字符串

字符串是雙引號內(nèi)的字符序列。字符串不能分成多行書寫。例如:

"INTERNALERROR"

"REACHED->HERE"

用8位ASCII值表示的字符可看作是無符號整數(shù)。因此字符串是8位ASCII值的序列。

為存儲字符串“INTERNALERROR”,變量需要8*14位。

reg[1:8*14]Message;

Message="INTERNALERROR"

反斜線(\)用于對確定的特殊字符轉(zhuǎn)義。

\n換行符

\t制表符

W字符'本身

\"字符"

\206八進(jìn)制數(shù)206對應(yīng)的字符

數(shù)據(jù)類型

4、網(wǎng)絡(luò)數(shù)據(jù)類型:表示結(jié)構(gòu)實(shí)體之間的物理連接

wire型:用來表示單個門驅(qū)動或連續(xù)賦值語句驅(qū)動的網(wǎng)絡(luò)型數(shù)據(jù),默認(rèn)值為z,常用assign

語句或?qū)嵗妮敵鲑x值。

tri型:用來表示多驅(qū)動器驅(qū)動的網(wǎng)絡(luò)型數(shù)據(jù)

reg型:寄存器類型是數(shù)據(jù)儲存單元的抽象。

memory型:通過對reg型變量建立數(shù)組來對存儲器建模,可以描述RAM型存儲器,

ROM存儲器和reg文件。數(shù)組中的每一個單元通過一個數(shù)組索引進(jìn)行尋址。如:reg[3:0]mm

[7:0];

有5種不同的寄存器類型。reg、integer、time、real>realtime

(1)reg寄存器類型

寄存器數(shù)據(jù)類型reg是最常見的數(shù)據(jù)類型。reg類型使用保留字reg加以說明,通過賦

值語句可以改變寄存器儲存的值,其作用與改變觸發(fā)器儲存的值相當(dāng),默認(rèn)值為X。在always

塊內(nèi)被賦值的每一個變量必須是reg型。

形式如下:

reg[msb:Isb]regl,reg2,...regN;

msb和Isb定義了范圍,并且均為常數(shù)值表達(dá)式。范圍定義是可選的;如果沒有定義范

圍,缺省值為1位寄存器。例如:

reg[3:0]Sat;//Sat為4位寄存器。

regCnt;//I位寄存器。

reg[1:32]Kisp,Pisp,Lisp;

寄存器可以取任意長度。寄存器中的值通常被解釋為無符號數(shù),例如:

reg[1:4]Comb;

Comb=-2;//Comb的值為14(1110),1110是2的補(bǔ)碼。

Comb=5;〃Comb的值為15(0101)?

存儲器是一個寄存器數(shù)組。存儲器使用如下方式說明:

reg[msb:Isb]memory1[upper1:lowerl],

memory2[upper2:lower2],...;

例如:

reg[0:3]MyMem[0:63]//MyMem為64個4位寄存器的數(shù)組。

regBog[1:5]//Bog為5個1位寄存器的數(shù)組。

MyMem和Bog都是存儲器。數(shù)組的維數(shù)不能大于2。注意存儲器屬于寄存器數(shù)組

類型。線網(wǎng)數(shù)據(jù)類型沒有相應(yīng)的存儲器類型。

單個寄存器說明既能夠用于說明寄存器類型,也可以用于說明存儲器類型。

parameterADDRSIZE=16,WORDSIZE=8;

reg[1:WORDSIZE]RamPar[ADDRSIZE-1:0],DataReg;

RamPar是存儲器,是16個8位寄存器數(shù)組,而DataReg是8位寄存器。

在賦值語句中需要注意如下區(qū)別:存儲器賦值不能在一條賦值語句中完成,但是寄

存器可以。因此在存儲器被賦值時,需要定義一個索引。下例說明它們之間的不同。

reg[1:5]Dig;//Dig為5位寄存器。

Dig-51bli011;

上述賦值都是正確的,但下述賦值不正確:

regBOg[l:5];//Bog為5個1位寄存器的存儲器。

Bog=5'bll011;

有一種存儲器賦值的方法是分別對存儲器中的每個字賦值。例如:

reg[0:3]Xrom[1:4]

Xromfl]=4TlA;

Xrom[2]=4*h8;

Xrom[3]=4*hF;

Xrom[4]=4*h2;

為存儲器賦值的另一種方法是使用系統(tǒng)任務(wù):

1)$readmemb(加載二進(jìn)制值)

2)$readmemb(加載十六進(jìn)制值)

(2)Integer寄存器類型

整數(shù)寄存器包含整數(shù)值。整數(shù)寄存器可以作為普通寄存器使用,典型應(yīng)用為高層次行為

建模。使用整數(shù)型說明形式如下:

integerinteger1,integer2,...intergerN[msb:lsb];

msb和Isb是定義整數(shù)數(shù)組界限的常量表達(dá)式,數(shù)組界限的定義是可選的。注意容許無

位界限的情況。一個整數(shù)最少容納32位。但是具體實(shí)現(xiàn)可提供更多的位。下面是整數(shù)說明

的實(shí)例。

integerA,B,C;//三個整數(shù)型寄存器。

integerHist[3:6];〃一組四個寄存器。

一個整數(shù)型寄存器可存儲有符號數(shù),并且算術(shù)操作符提供2的補(bǔ)碼運(yùn)算結(jié)果。

整數(shù)不能作為位向量訪問。例如,對于上面的整數(shù)B的說明,B[6]和B[20:10]是非法的。

一種截取位值的方法是將整數(shù)賦值給一般的reg類型變量,然后從中選取相應(yīng)的位,如下所

示:

reg[31:0]Breg;

integerBint;

//Bint[6]和Bint[20:10]是不允許的。

Breg=Bint;

/*現(xiàn)在,Breg[6]和Breg[20:10]是允許的,并且從整數(shù)Bint獲取相應(yīng)的位值。*/

上例說明了如何通過簡單的賦值將整數(shù)轉(zhuǎn)換為位向量。類型轉(zhuǎn)換自動完成,不必使用特

定的函數(shù)。從位向量到整數(shù)的轉(zhuǎn)換也可以通過賦值完成。例如:

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論