電子設(shè)計(jì)自動化EDA_第1頁
電子設(shè)計(jì)自動化EDA_第2頁
電子設(shè)計(jì)自動化EDA_第3頁
電子設(shè)計(jì)自動化EDA_第4頁
電子設(shè)計(jì)自動化EDA_第5頁
已閱讀5頁,還剩410頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1電子設(shè)計(jì)自動化

(EDA)ElectronicDesignAutomation主講:王成義辦公室:文理大樓411Email:CYWANG@SDAU.EDU.CN電子與通信工程系2第0章引論第1章可編程邏輯器件(PLD)的原理與應(yīng)用第2章VHDL程序編程基礎(chǔ)第5章電路仿真工具M(jìn)ultisim及其應(yīng)用第3章VHDL程序設(shè)計(jì)進(jìn)階第4章印制電路板(PCB)設(shè)計(jì)及其工具3第0章引論

0.1、電子設(shè)計(jì)自動化概述

0.2、電子系統(tǒng)的仿真、綜合與實(shí)現(xiàn)40.1、電子設(shè)計(jì)自動化概述

電子設(shè)計(jì)的歷史:

追溯至19世紀(jì)20世紀(jì)50年代:手工,設(shè)計(jì)效率、設(shè)計(jì)水平低20世紀(jì)60年代:IC出現(xiàn),計(jì)算機(jī)的應(yīng)用,大規(guī)模集成電路設(shè)計(jì)、復(fù)雜電子系統(tǒng)設(shè)計(jì)20世紀(jì)70年代:CAD工具、邏輯綜合與優(yōu)化、

SPLD(Simple)

Computer

Aided

Design,

Programable

Logic

Device

1958年9月12日

,杰克·基爾比發(fā)明集成電路

(鍺)1959年7月

,羅伯特·諾伊斯也發(fā)明了集成電路

(硅)520世紀(jì)80年代:印制電路板PCB(Printed

Circuit

Board)自動布局布線工具、HDL

(Hardware

Description

Language)

(VHDL、

Verilog

HDL)及其仿真工

具、CPLD(ComplexPLD)20世紀(jì)90年代:PAC(ProgramableAnalogCircuit)標(biāo)準(zhǔn)HDL的綜合工具以上設(shè)計(jì)技術(shù)統(tǒng)稱:電子設(shè)計(jì)自動化(ElectronicDesignAutomation)21世紀(jì):SoPC

(可編程片上系統(tǒng))

SystemonProgrammableChip

6電子設(shè)計(jì)的層次:(由上至下)集成電路技術(shù)、計(jì)算機(jī)技術(shù)與EDA的關(guān)系系統(tǒng)級、功能級、邏輯級、電路級、物理級集成電路技術(shù)和計(jì)算機(jī)技術(shù)是EDA技術(shù)發(fā)展的基礎(chǔ)。反過來,EDA技術(shù)為電子設(shè)計(jì)提供了強(qiáng)有力的支持,不僅使電子系統(tǒng)的規(guī)模日益復(fù)雜,而且使電子產(chǎn)品的周期不斷縮短,從而又推到了集成電路和計(jì)算機(jī)技術(shù)以更快的速度發(fā)展。70.2、電子系統(tǒng)的仿真、綜合與實(shí)現(xiàn)

★仿真(又稱模擬)(Simulation):

用計(jì)算機(jī)模仿電子系統(tǒng)的實(shí)際工作情況。

一般來說,仿真有問題,設(shè)計(jì)一定有問題;仿真沒有問題,設(shè)計(jì)不一定沒有問題。★綜合(Synthesis):將高層次的設(shè)計(jì)描述轉(zhuǎn)換成由低層次便于實(shí)現(xiàn)的模塊所裝配成的統(tǒng)一實(shí)體。分為:自然語言綜合

、高層(行為)綜合、邏輯綜合、版圖綜合。8★實(shí)現(xiàn)(Implementation):電子系統(tǒng)的最終載體。實(shí)現(xiàn)方式:通用IC、PLD、定制IC?!颬CB制作:9第1章PLD的原理與應(yīng)用1.1、SPLD的原理與組成1.2、CPLD的結(jié)構(gòu)與工作原理1.3、FPGA的結(jié)構(gòu)與工作原理1.4、CPLD/FPGA生產(chǎn)商1.5、CPLD與FPGA的編程與配置1.6、CPLD/FPGA的開發(fā)工具1.7、FPGA/CPLD設(shè)計(jì)流程1.8、ALTERA開發(fā)工具QUARTUSII10數(shù)字集成電路:通用集成電路、專用集成電路(ASIC)Application-SpecificIntegratedCircuit通用集成電路:74/54、C4000專用集成電路:為特定用途而設(shè)計(jì)和制造的器件,是用戶定制的IC。分為:全定制、

半定制11半定制電路門陣列(GA)可編程邏輯器件(PLD)門海(SoG)SPLDHDPLDPROMPLAPALGALCPLDFPGAPLD特點(diǎn):高密度、高速度、高開發(fā)效率121.1、SPLD的原理與組成

PLD的核心結(jié)構(gòu)1.1.1PLD的基本結(jié)構(gòu)數(shù)據(jù)輸入輸入電路與門陣列或門陣列輸出電路數(shù)據(jù)輸出}互補(bǔ)輸入與項(xiàng)與或式}……緩沖互補(bǔ)緩沖提供不同輸出結(jié)構(gòu)(課本P27)131.1.2PLD內(nèi)部電路的表示方法常用邏輯門符號與現(xiàn)有國標(biāo)符號的對照14PLD的互補(bǔ)緩沖器PLD的互補(bǔ)輸入PLD中與陣列表示PLD中或陣列的表示陣列線連接表示

PLD中的邏輯符號表示方法15PLD中的邏輯符號表示方法16PROM基本結(jié)構(gòu):地址譯碼器輸出邏輯函數(shù)是:1.1.3PROM17存儲單元邏輯函數(shù)表示:18PROM的邏輯陣列結(jié)構(gòu):19PROM表達(dá)的PLD陣列圖用PROM完成半加器邏輯陣列20PLA邏輯陣列示意圖1.1.4PLA21PLA與PROM的比較22PAL結(jié)構(gòu):PAL的常用表示形式:1.1.5PAL23一種PAL16V8的部分結(jié)構(gòu)圖241.1.6GAL24GAL16V8的結(jié)構(gòu)圖輸入口可編程與陣列24時鐘信號輸入輸入/輸出口輸出邏輯宏單元三態(tài)控制固定或陣列25OLMC的內(nèi)部結(jié)構(gòu)圖262728293031321.2、CPLD的結(jié)構(gòu)與工作原理SPLD器件基本上已被淘汰,只有GAL還在應(yīng)用。原因:1.陣列規(guī)模小,資源不夠用于設(shè)計(jì)數(shù)字系統(tǒng)。2.片內(nèi)寄存器資源不足,難以構(gòu)成豐富的時序電路。3.I/O不夠靈活,限制了片內(nèi)資源的利用率。4.編程不便,需用專用的編程工具。所以:GALCPLD典型CPLD:ALTERAMAX7000系列33MAX7000包含32到256個宏單元,每16個宏單元組成一個邏輯陣列塊(LogicArrayBlock,LAB)。MAX7000結(jié)構(gòu)中包含5部分:1.邏輯陣列塊2.宏單元3.擴(kuò)展乘積項(xiàng)(共享和并聯(lián))4.可編程連線陣列5.I/O控制塊34(1)邏輯陣列塊(LAB)EPM7256S的LAB結(jié)構(gòu)35MAX7000系列的單個宏單元結(jié)構(gòu)PRNCLRNENA邏輯陣列全局清零共享邏輯擴(kuò)展項(xiàng)清零時鐘清零選擇寄存器旁路并行擴(kuò)展項(xiàng)通往I/O模塊通往PIA乘積項(xiàng)選擇矩陣來自I/O引腳全局時鐘QDEN來自PIA的36個信號快速輸入選擇2(2)宏單元VCC3637(3)擴(kuò)展乘積項(xiàng)共享擴(kuò)展乘積項(xiàng)結(jié)構(gòu)3839并聯(lián)擴(kuò)展項(xiàng)饋送方式4041(4)可編程連線陣列

不同的LAB通過在可編程連線陣列(PIA)上布線,以相互連接構(gòu)成所需的邏輯。PIA信號布線到LAB的方式42(4)可編程連線陣列

不同的LAB通過在可編程連線陣列(PIA)上布線,以相互連接構(gòu)成所需的邏輯。PIA信號布線到LAB的方式43(5)I/O控制塊EPM7128S器件的I/O控制塊44(5)I/O控制塊EPM7128S器件的I/O控制塊451.3.1查找表1.3、FPGA的結(jié)構(gòu)與工作原理FPGA:現(xiàn)場可編程門陣列(FieldProgrammableGateArray)

查找表(Look-Up-Table)簡稱為LUT,LUT本質(zhì)上就是一個RAM。目前FPGA中多使用4輸入的LUT,所以每一個LUT可以看成一個有4位地址線的16x1的RAM。46FPGA查找表單元內(nèi)部結(jié)構(gòu)MUXF471.3.2Cyclone/CycloneII系列器件的結(jié)構(gòu)與原理Cyclone/CycloneⅡ系列器件是Altera公司的一款低成本的、高性價比的FPGA,它的結(jié)構(gòu)和工作原理在FPGA中具有典型性。

Cyclone與CycloneⅡ系列器件的基本結(jié)構(gòu)、原理類似。Cyclone系列器件主要有以下部分組成:

邏輯陣列塊LAB、嵌入式存儲器塊、I/O單元、嵌入式硬件乘法器、鎖相環(huán)PLL等。48CycloneLE結(jié)構(gòu)圖4950CycloneLE普通模式

5152CycloneLE動態(tài)算術(shù)模式

5354CycloneLAB結(jié)構(gòu)

5556LAB陣列

5758LAB控制信號生成

5960快速進(jìn)位選擇鏈

6162LUT鏈和寄存器鏈的使用

63LVDS連接

Low-VoltageDifferentialSignaling低壓差分信號641.4、CPLD/FPGA生產(chǎn)商ALTERACPLD:MAX7000/S/A/B系列:EPM7128SMAX9000/A系列MAX3000系列:MAXII系列:EPM240(570,1270,2210)/GMAXIII系列:EPM240(570,1270,2210)/GFPGA:FLEX系列:10K、10A、10KE,EPF10K30EAPEX系列:20K、20KEEP20K200EACEX系列:1K系列EP1K30、EP1K100STRATIX系列:EP1S10(20,25,30,40,50,60,80,120)CYCLONE系列:EP1C3(4,6,12,20)StratixGX系列CYCLONEII系列:EP2C5(8,20,35,50,70)STRATIXII系列:EP2S15(30,60,90,130,180)CYCLONEIII系列:EP3C5(10,16,25,40,55,80,120)STRATIXIII系列:EP3SL15(50,70,110,150,200,340)65XILINXCPLD:FPGA:XC9500系列:XC95108、XC95256XC3000系列,XC4000系列,XC5000系列Virtex系列,VirtexII系列SPARTAN系列:XCS10、XCS20、XCS30SPARTANII系列LATTICECPLD:FPGA:ispMACH4000V/B/C/Z系列MachX0系列ispLSI系列LatticeEC/ECP系列LatticeXP系列66其他PLD公司:ACTEL公司:ACT1/2/3、40MXATMEL公司:ATF1500AS系列、40MXCYPRESS公司QUIKLOGIC公司SOMUCHIC!FPGACPLD671.5、CPLD與FPGA的編程與配置ALTERAByteBlaster(MV)下載接口此接口既可作編程下載口,也可作JTAG接口JTAG:JointTestActionGroup68此接口既可作編程下載口,也可作JTAG接口ALTERAUSBBlaster下載接口691.6、CPLD/FPGA的開發(fā)工具集成的FPGA/CPLD開發(fā)環(huán)境:MAXPLUSII10.23QUARTUS

II10.0ALTERA:XILINX:FOUNDATION3.1ISE10.1iISEDesignSuite12.1LATTICE:ispEXPERT7.01ispLEVER7.2PACDesigner

ispLEVERClassic1.4

由PLD/FPGA芯片廠家提供,基本都可以完成所有的設(shè)計(jì)輸入(原理圖或HDL),仿真,綜合,布線,下載等工作。70HDL邏輯綜合軟件:

這類軟件將把HDL語言翻譯成最基本的與或非門的連接關(guān)系(網(wǎng)表),輸出edif(ElectronicDesignInterchangeFormat)文件,導(dǎo)給PLD/FPGA廠家的軟件進(jìn)行適配和布線。為了優(yōu)化結(jié)果,在進(jìn)行復(fù)雜HDL設(shè)計(jì)時,基本上都會使用這些專業(yè)的邏輯綜合軟件,而不使用PLD/FPGA廠家的集成開發(fā)軟件中自帶的邏輯綜合功能。Synplify/SynplifyProLeonardoSpectrumSynplicity:Mentor:FPGAComplierIISynopsys:71ModelTech:ModelsimAldec:ActiveHDLCadence:NC-Verlog/NC-VHDL/NC-SIMHDL仿真軟件

對設(shè)計(jì)進(jìn)行校驗(yàn)仿真,包括布線以前的功能仿真(前仿真)和布線以后包含延時的時序仿真(后仿真),對于一些復(fù)雜的HDL設(shè)計(jì)可能需要這些軟件專業(yè)的仿真功能。721.7、FPGA/CPLD設(shè)計(jì)流程應(yīng)用FPGA/CPLD的EDA開發(fā)流程:原理圖/VHDL文本編輯綜合FPGA/CPLD適配FPGA/CPLD編程下載FPGA/CPLD器件和電路系統(tǒng)時序與功能門級仿真1、功能仿真2、時序仿真邏輯綜合器結(jié)構(gòu)綜合器1、isp方式下載2、JTAG方式下載3、針對SRAM結(jié)構(gòu)的配置4、OTP器件編程

功能仿真(課本P13)731.7.1設(shè)計(jì)輸入(原理圖/HDL文本編輯)1.圖形輸入

圖形輸入

原理圖輸入

狀態(tài)圖輸入

波形圖輸入742.HDL文本輸入

這種方式與傳統(tǒng)的計(jì)算機(jī)軟件語言編輯輸入基本一致。就是將使用了某種硬件描述語言(HDL)的電路設(shè)計(jì)文本,如VHDL或VerilogHDL的源程序,進(jìn)行編輯輸入。

可以說,應(yīng)用HDL的文本輸入方法克服了上述原理圖輸入法存在的所有弊端,為EDA技術(shù)的應(yīng)用和發(fā)展打開了一個廣闊的天地。75

整個綜合過程就是將設(shè)計(jì)者在EDA平臺上編輯輸入的HDL文本、原理圖或狀態(tài)圖形描述,依據(jù)給定的硬件結(jié)構(gòu)組件和約束控制條件進(jìn)行編譯、優(yōu)化、轉(zhuǎn)換和綜合,最終獲得門級電路甚至更底層的電路描述網(wǎng)表文件。由此可見,綜合器工作前,必須給定最后實(shí)現(xiàn)的硬件結(jié)構(gòu)參數(shù),它的功能就是將軟件描述與給定的硬件結(jié)構(gòu)用某種網(wǎng)表文件的方式對應(yīng)起來,成為相互的映射關(guān)系。1.7.2綜合76

適配器也稱結(jié)構(gòu)綜合器,它的功能是將由綜合器產(chǎn)生的網(wǎng)表文件配置于指定的目標(biāo)器件中,使之產(chǎn)生最終的下載文件,如JEDEC、Jam格式的文件。適配所選定的目標(biāo)器件(FPGA/CPLD芯片)必須屬于原綜合器指定的目標(biāo)器件系列。

邏輯綜合通過后必須利用適配器將綜合后網(wǎng)表文件針對某一具體的目標(biāo)器件進(jìn)行邏輯映射操作,其中包括底層器件配置、邏輯分割、邏輯優(yōu)化、邏輯布局布線操作。適配完成后可以利用適配所產(chǎn)生的仿真文件作精確的時序仿真,同時產(chǎn)生可用于編程的文件。1.7.3適配77時序仿真功能仿真

是直接對VHDL、原理圖描述或其他描述形式的邏輯功能進(jìn)行測試模擬,以了解其實(shí)現(xiàn)的功能是否滿足原設(shè)計(jì)的要求的過程,仿真過程不涉及任何具體器件的硬件特性。1.7.4時序仿真與功能仿真

就是接近真實(shí)器件運(yùn)行特性的仿真,仿真文件中己包含了器件硬件特性參數(shù),因而,仿真精度高。78

通常,將對CPLD的下載稱為編程(Program),對FPGA中的SRAM進(jìn)行直接下載的方式稱為配置(Configure),但對于OTPFPGA的下載和對FPGA的專用配置ROM的下載仍稱為編程。

FPGA與CPLD的辨別和分類主要是根據(jù)其結(jié)構(gòu)特點(diǎn)和工作原理。通常的分類方法是:將以乘積項(xiàng)結(jié)構(gòu)方式構(gòu)成邏輯行為的器件稱為CPLD,如Lattice的ispLSI系列、Xilinx的XC9500系列、Altera的MAX7000S系列和Lattice(原Vantis)的Mach系列等。將以查表法結(jié)構(gòu)方式構(gòu)成邏輯行為的器件稱為FPGA,如Xilinx的SPARTAN系列、Altera的FLEX10K或ACEX1K系列等。1.7.5編程下載79

最后是將含有載入了設(shè)計(jì)的FPGA或CPLD的硬件系統(tǒng)進(jìn)行統(tǒng)一測試,以便最終驗(yàn)證設(shè)計(jì)項(xiàng)目在目標(biāo)系統(tǒng)上的實(shí)際工作情況,以排除錯誤,改進(jìn)設(shè)計(jì)。1.7.6硬件測試801.8、ALTERA開發(fā)工具QuartusII1位全加器設(shè)計(jì)向?qū)г韴D輸入設(shè)計(jì)方法基本設(shè)計(jì)流程為本項(xiàng)工程設(shè)計(jì)建立文件夾(必須有)注意:文件夾名不能用中文,且不可帶空格。(課本P955.1,5.2)(課本P1165.4)81CLICKCLICK82CLICKCLICK83CLICKCLICK84CLICK8586CLICK8788CLICKLibrariesprimitiveslogic89DOUBLECLICK90CLICKCLICKCLICK9192CLICK9394CLICKCLICK95CLICKCLICK9697CLICK98MouseRightClick99CLICK100CLICKCLICKCLICK101CLICK102CLICK103CLICK在此區(qū)域連續(xù)單擊鼠標(biāo)右鍵104CLICK105CLICKCLICK106保存107108第2章VHDL程序編程基礎(chǔ)2.1、簡介--背景2.2、VHDL語言程序的基本結(jié)構(gòu)2.3、VHDL語言的數(shù)據(jù)類型及運(yùn)算操作符

2.4、VHDL語法基礎(chǔ)

2.5、屬性的描述與定義109傳統(tǒng)數(shù)字電路設(shè)計(jì)方法不適合設(shè)計(jì)大規(guī)模的系統(tǒng)。工程師不容易理解原理圖設(shè)計(jì)的功能。眾多軟件公司開發(fā)研制了具有自己特色的電路硬件描述語言HDL(HardwareDescriptionLanguage),這些語言之間存在著很大的差異,工程師一旦選用某種硬件描述語言作為輸入工具,就被束縛在這個硬件設(shè)計(jì)環(huán)境之中。因此,硬件設(shè)計(jì)工程師需要一種強(qiáng)大的、標(biāo)準(zhǔn)化的硬件描述語言,作為可相互交流的設(shè)計(jì)環(huán)境。2.1、簡介--背景110描述復(fù)雜的數(shù)字電路系統(tǒng)成為國際的硬件描述語言標(biāo)準(zhǔn)美國國防部在80年代初提出了VHSIC(VeryHighSpeedIntegratedCircuit)計(jì)劃,其目標(biāo)之一是為下一代集成電路的生產(chǎn),實(shí)現(xiàn)階段性的工藝極限以及完成10萬門級以上的設(shè)計(jì),建立一項(xiàng)新的描述方法。1981年提出了一種新的HDL,稱之為VHSICHardwareDescriptionLanguage,簡稱為VHDL,這種語言的成就有兩個方面:InstituteofElectricalandElectronicsEngineers1987,“IEEE標(biāo)準(zhǔn)1076”,最新,IEEE1076-2008111VHDL的優(yōu)點(diǎn):用于設(shè)計(jì)復(fù)雜的、多層次的設(shè)計(jì)。支持設(shè)計(jì)庫和設(shè)計(jì)的重復(fù)使用與硬件獨(dú)立,一個設(shè)計(jì)可用于不同的硬件結(jié)構(gòu),而且設(shè)計(jì)時不必了解過多的硬件細(xì)節(jié)。有豐富的軟件支持VHDL的綜合和仿真,從而能在設(shè)計(jì)階段就能發(fā)現(xiàn)設(shè)計(jì)中的Bug,縮短設(shè)計(jì)時間,降低成本。更方便地向ASIC過渡。VHDL有良好的可讀性,容易理解。112VHDL與計(jì)算機(jī)語言的區(qū)別★運(yùn)行的基礎(chǔ)

▼計(jì)算機(jī)語言是在CPU+RAM構(gòu)建的平臺上運(yùn)行

▼VHDL設(shè)計(jì)的結(jié)果是由具體的邏輯、觸發(fā)器組成的數(shù)字電路★執(zhí)行方式

▼計(jì)算機(jī)語言基本上以串行的方式執(zhí)行

▼VHDL在總體上是以并行方式工作★驗(yàn)證方式

▼計(jì)算機(jī)語言主要關(guān)注于變量值的變化

VHDL要實(shí)現(xiàn)嚴(yán)格的時序邏輯關(guān)系113--eqcomp4isafourbitequalitycomparatorLibraryIEEE;useIEEE.std_logic_1164.all;entity

eqcomp4

isport(a,b:instd_logic_vector(3downto0);equal:outstd_logic);endeqcomp4;architecturedataflowofeqcomp4isbegin

equal<=‘1’whena=belse‘0’;Enddataflow;VHDL大小寫不敏感eqcomp4.vhd包實(shí)體結(jié)構(gòu)體文件名和實(shí)體名一致每行;結(jié)尾關(guān)鍵字begin關(guān)鍵字end后跟實(shí)體名關(guān)鍵字end后跟結(jié)構(gòu)體名庫類型設(shè)計(jì)實(shí)體1142.2、VHDL語言程序的基本結(jié)構(gòu)一個完整的VHDL語言程序通常包含五個部分:實(shí)體(Entity)結(jié)構(gòu)體(Architecture)配置(Configuration)包集合(Package)庫(Library)(課本P225)115前面的例子

設(shè)計(jì)實(shí)體是VHDL語言設(shè)計(jì)的基本單元,是最重要的系統(tǒng)抽象。設(shè)計(jì)實(shí)體由實(shí)體說明和結(jié)構(gòu)體兩部分組成定義了設(shè)計(jì)單元的具體構(gòu)造和操作

規(guī)定了設(shè)計(jì)單元的輸入輸出接口信號或引腳EntityDeclarationArchitectureBody2.2.1設(shè)計(jì)實(shí)體(designentity)

116實(shí)體說明的一般格式如下:文件名和實(shí)體名一致!ENTITY實(shí)體名

IS[GENERIC(類屬參數(shù)說明);][PORT(端口說明);]

實(shí)體說明部分;[BEGIN

實(shí)體語句部分;]END[ENTITY][實(shí)體名];2.2.2實(shí)體說明

117ENTITY實(shí)體名IS[GENERIC(類屬參數(shù)說明);]PORT(端口說明);END[實(shí)體名];實(shí)體說明的常用格式如下:<EntityDeclaration>::=ENTITYIdentifierIS <EntityHeader> <EntityDeclarativePart> [BEGIN <EntityStatementPart>] END[ENTITY][<EntitySimpleName>];1181.類屬參數(shù)說明

類屬參數(shù)說明用于說明設(shè)計(jì)實(shí)體和其外部環(huán)境通信的對象、通信的格式約定和通信通道的大小。

GENERIC([CONSTANT]名字表:[IN]子類型標(biāo)識[:=靜態(tài)表達(dá)式],…);

GENERIC(名字表:子類型標(biāo)識[:=靜態(tài)表達(dá)式],…);例如:GENERIC(m:TIME:=3ns)

一般書寫格式為:常用書寫格式為:GENERIC(m:TIME:=5ns,n:INTEGER:=75)GENERIC(n:INTEGER:=15)1192.端口說明

端口為設(shè)計(jì)實(shí)體和其外部環(huán)境的動態(tài)通信提供通道,是對基本設(shè)計(jì)實(shí)體與外部接口的描述。PORT([SIGNAL]端口名:[模式]子類型標(biāo)識[BUS][:=靜態(tài)表達(dá)式],…);PORT(端口名:模式子類型標(biāo)識[BUS],…);(1)端口名端口名是賦予每個外部引腳的名稱一般書寫格式為:常用書寫格式為:120(2)端口模式

端口模式用來說明數(shù)據(jù)、信號通過該端口的方向。LINKAGE(不指定方向,無論哪個方向都可連接)。

VHDL語言提供了下述端口模式:IN

(流入實(shí)體),OUT

(流出實(shí)體),INOUT

(雙向端口:既可流入,又可流出),BUFFER

(信號輸出到外部,但同時也可在實(shí)體內(nèi)部反饋),121(3)數(shù)據(jù)類型

VHDL語言中有10種數(shù)據(jù)類型,IEEE1076/93標(biāo)準(zhǔn)規(guī)定,EDA綜合工具提供的數(shù)據(jù)類型為布爾型(Boolean)、位型(Bit)、位矢量型(Bit_vector)和整數(shù)型(Integer)。

但在實(shí)際中,常用的數(shù)據(jù)類型為:

STD_LOGICSTD_LOGIC_VECTOR

要使用這2種類型,須在程序開始加入以下兩語句:

LIBRARY

IEEE;USEIEEE.STD_LOGIC_1164.ALL;例如:‘U’Uninitialized‘X’ForcingUnknown‘0’Forcing0‘1’Forcing1‘Z’HighImpedance‘W’WeakUnknown‘L’Weak0‘H’Weak1‘-’Don’tcareTRI_STATE122LIBRARY

IEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYdecoIS

PORT(clock:IN

STD_LOGIC;

q:OUT

STD_LOGIC_VECTOR(7

DOWNTO0)

);ENDdeco;前面的例子無;123結(jié)構(gòu)體描述一個設(shè)計(jì)的結(jié)構(gòu)或行為

用VHDL語言描述結(jié)構(gòu)體功能有3種方法:(1)行為描述法(behavioral):(2)數(shù)據(jù)流描述法(RTLordataflow):(3)結(jié)構(gòu)描述法(structural):2.2.3結(jié)構(gòu)體

124例如:architectureoneofmux21isbeginy<=awhens=‘0’elseb;end

architectureone;結(jié)構(gòu)體的常用書寫格式為:ARCHITECTURE結(jié)構(gòu)體名OF實(shí)體名IS--定義語句BEGIN--并行處理語句END[ARCHITECTURE][結(jié)構(gòu)體名];125ARCHITECTUREoneOFdecoISBEGINWITHnumSELECT q<="00111111"WHEN"0000", "00000110"WHEN"0001", "01011011"WHEN"0010", "01001111"WHEN"0011", "01100110"WHEN"0100", "01101101"WHEN"0101", "01111101"WHEN"0110", "00100111"WHEN"0111", "01111111"WHEN"1000", "01101111"WHEN"1001", "00000000"WHENOTHERS;ENDone;1261.結(jié)構(gòu)體名稱的命名

結(jié)構(gòu)體的名稱可自由命名,但通常命名為

behavioraldataflowstructuralARCHITECTUREbehavioralOFmuxIS用結(jié)構(gòu)體行為命名ARCHITECTUREdataflowOFmuxIS用結(jié)構(gòu)體的數(shù)據(jù)流命名ARCHITECTUREstructuralOFmuxIS用結(jié)構(gòu)體的組織結(jié)構(gòu)命名2.定義語句

用于對結(jié)構(gòu)體內(nèi)部所使用的信號、常數(shù)、數(shù)據(jù)類型和函數(shù)進(jìn)行定義。127例:計(jì)數(shù)器的VHDL描述。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;ENTITYcnt10ISPORT(clock:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(3DOWNTO0);ca:OUTSTD_LOGIC);ENDcnt10;128ARCHITECTURErtlOFcnt10IS

SIGNALqs:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(clock)VARIABLEq10:INTEGER

range0to15:=0;

BEGINIF(clock'EVENTANDclock='1')THEN IF(q10=9)THEN q10:=0;ca<='1'; ELSEq10:=q10+1;ca<='0';ENDIF;ENDIF;

qs<=CONV_STD_LOGIC_VECTOR(q10,4);

q<=qs;ENDPROCESS;ENDrtl;返回類型轉(zhuǎn)換返回整數(shù)1295LEsSKIP13073LEs1312.3、VHDL語言的數(shù)據(jù)類型及運(yùn)算操作符

VHDL語言的標(biāo)識符是遵守以下規(guī)則的字符序列:(1)有效字符:(A~Z,a~z)、(0~9)和(_)。(2)必須以英文字母打頭。(3)下劃線前后必須都有英文字母或數(shù)字。(4)標(biāo)識符不區(qū)分大小寫。下面是合法的標(biāo)識符:pulse_100msPulse_100msPULSE_100MS下面是不合法的標(biāo)識符:pulse-100ms2pulse_100ms_pulse_100mspulse_100ms_2.3.1標(biāo)識符

(課本P127)132

在VHDL語言中對象包括以下3種:信號(Signal)、變量(Variable)和常數(shù)(Constant)。

(課本P127)1.常數(shù)(Constant)CONSTANT常數(shù)名:數(shù)據(jù)類型:=表達(dá)式;例如:CONSTANTDELAY:time:=100ns;常數(shù)說明的一般格式如下:常數(shù)是一個全局量。2.3.2VHDL語言的對象及其分類

SYNconstantwriteDDRAM:std_logic_vector(4downto0):="10001";1332.變量(Variable)VARIABLE變量名:數(shù)據(jù)類型約束條件:=表達(dá)式;例如:VARIABLEx,y,z:INTEGER;變量說明語句的一般格式為:

變量只能在進(jìn)程語句、函數(shù)語句和過程語句結(jié)構(gòu)中使用,是一個局部量。變量在賦值時不能產(chǎn)生附加延時。通常暫存一些信號。variablecount:integerrange0to255:=10;SYN1343.信號(Signal)

SIGNAL信號名:數(shù)據(jù)類型約束條件:=表達(dá)式;例如:SIGNALground:std_logic:=‘0’;信號說明語句的一般格式為:用于VHDL中元件之間的通訊通常對應(yīng)實(shí)際系統(tǒng)中的連線信號賦值需要延時周期后才生效信號不能在process內(nèi)聲明信號是一個全局量SYN135變量和信號的區(qū)別:signald:std_logic_vector(3downto0);process(a,b,c,d)begind<=a;x<=b+d;d<=c;y<=b+d;endprocess;process(a,b,c)variabled:std_logic_vector(3downto0);begind:=a;x<=b+d;d:=c;y<=b+d;endprocess;x<=b+c;y<=b+c;x<=b+a;y<=b+c;1361372.3.3VHDL語言的數(shù)據(jù)類型

VHDL語言標(biāo)準(zhǔn)定義了10種標(biāo)準(zhǔn)的數(shù)據(jù)類型還可以由用戶自定義數(shù)據(jù)類型

VHDL語言的數(shù)據(jù)類型的定義相當(dāng)嚴(yán)格,不同類型之間的數(shù)據(jù)不能直接代入,數(shù)據(jù)類型相同,而位長不同時也不能直接代入。1.VHDL語言標(biāo)準(zhǔn)所定義的標(biāo)準(zhǔn)數(shù)據(jù)類型

.整數(shù)(Integer).實(shí)數(shù)(Real).位(Bit).位矢量(Bit_Vector).布爾量(Boolean)(課本P249)138.字符(Character).字符串(String).時間(Time).錯誤等級(SeverityLevel).自然數(shù)(Natural)、正整數(shù)(Positive)(1)整數(shù)(Integer)整數(shù)的表示范圍從-(231-1)到(231-1)VARIABLEA:INTEGER

RANGE–127TO127;(2)實(shí)數(shù)(Real)定義值范圍為-1.0E+38到+1.0E+38例如:+2.0,-2.5,+1.0E38SYN例子139(3)位(Bit)

位值的表示方法是,用字符'0'或者'1'(將值放在單引號中)表示(4)位矢量(Bit_Vector)

位矢量是用雙引號括起來的一組位數(shù)據(jù)。

例如:"001010"(5)布爾量(Boolean)

它能進(jìn)行關(guān)系運(yùn)算。一個布爾量常用來表示信號的狀態(tài)或者總線上的情況。

一般這一類型的數(shù)據(jù)的初始值總為FALSE。SYNSYNSYN140(6)字符(Character)

字符量通常用單引號括起來,如'T','I'。(7)字符串(String)

字符串是由雙引號括起來的一個字符序列,也稱字符矢量或字符串?dāng)?shù)組

例如:“STRING”,“INTEGERRANGE”(8)時間(Time)

時間是一個物理量數(shù)據(jù)。時間類型一般用于仿真,而不用于邏輯綜合。

例如:55sec,2minSYNSYN141

錯誤等級類型數(shù)據(jù)用來表示系統(tǒng)的狀態(tài)。它分為四種:NOTE(注意)、WARNING(警告)、ERROR(出錯)、FAILURE(失?。T诜抡孢^程中可以用這四種狀態(tài)來提示系統(tǒng)當(dāng)前的工作情況。(9)錯誤等級(SeverityLevel)(10)自然數(shù)(Natural)、正整數(shù)(Positive)

自然數(shù)和正整數(shù)是整數(shù)的子類,Natural類數(shù)據(jù)只能取值0和0以上的正整數(shù),Positive只能為正整數(shù)。SYN1422.用戶定義的數(shù)據(jù)類型

TYPE數(shù)據(jù)類型名[,數(shù)據(jù)類型名]數(shù)據(jù)類型定義;

可由用戶定義的數(shù)據(jù)類型有:.枚舉(Enumerated)類型.整數(shù)(Integer)類型.實(shí)數(shù)(Real)、浮點(diǎn)數(shù)(Floating)類型.?dāng)?shù)組(Array)類型.存取(Access)類型.文件(File)類型.記錄(Record)類型.時間(Time)類型(物理類型)書寫格式為:143(1)枚舉(Enumerated)類型

格式:TYPE數(shù)據(jù)類型名IS(元素,元素,…);例如:TYPEBooleanIS(false,true);SYN(2)整數(shù)(Integer)類型格式:TYPE數(shù)據(jù)類型名IS數(shù)據(jù)類型定義約束范圍;例如:TYPEdigitISINTEGERrange0TO9;SYN(3)數(shù)組(Array)類型格式:TYPE數(shù)據(jù)類型名ISARRAY范圍OF原數(shù)據(jù)類型名;

例如:TYPEwordISARRAY(1TO16)OFSTD_LOGIC;SYN(一維)144(4)實(shí)數(shù)(Real)、浮點(diǎn)數(shù)(Floating)類型(5)存?。ˋccess)類型(6)文件(File)類型

(7)記錄(Record)類型

記錄是將不同類型的數(shù)據(jù)和數(shù)據(jù)名組織在一起而形成數(shù)據(jù)類型。TYPE數(shù)據(jù)類型名ISRECORD

元素名:數(shù)據(jù)類型名;元素名:數(shù)據(jù)類型名;┆

ENDRECORD;格式:SYN145TYPEPCI_BUSISRECORDADDR:STD_LOGIC_VECTOR(31DOWNTO0);

DATA:STD_LOGIC_VECTOR(31DOWNTO0);┆

ENDRECORD;

SIGNALDECODE1:PCI_BUS;

SIGNALDECODE2:PCI_BUS;

PCI_DEVICE1<=DECODE1.ADDR;

PCI_DEVICE1RAM<=DECODE1.DATA;(8)時間(Time)類型(物理類型)在從記錄數(shù)據(jù)類型中提取元素?cái)?shù)據(jù)類型時應(yīng)使用“.”。例如:146

在VHDL語言中,不同類型的數(shù)據(jù)是不能進(jìn)行運(yùn)算和代入的。為了實(shí)現(xiàn)正確的代入操作,必須要將代入的數(shù)據(jù)進(jìn)行類型轉(zhuǎn)換。一般是用函數(shù)轉(zhuǎn)換法實(shí)現(xiàn)類型轉(zhuǎn)換。例如:2.3.4類型轉(zhuǎn)換

STD_LOGIC_VECTOR與INTEGER相互轉(zhuǎn)換的函數(shù),其對應(yīng)的轉(zhuǎn)換函數(shù)在程序包IEEE.STD_LOGIC_UNSIGNED和IEEE.STD_LOGIC_ARITH中定義。functionconv_integer(arg:std_logic_vector)returninteger;functionconv_std_logic_vector(arg:integer;size:integer)returnstd_logic_vector;例子(課本P254,例9-18,例9-19)1472.3.5詞法1.程序注釋

注釋從“--”符號開始,到該行末尾結(jié)束。2.?dāng)?shù)字

VHDL語言數(shù)字表示法有十進(jìn)制表示法、二進(jìn)制表示法和八進(jìn)制表示法。(課本P247)148整數(shù)舉例:010,1,345_67,3e8浮點(diǎn)數(shù)舉例:10.0,3.1415,1.2E-3,2.1e+5其中:整數(shù)::=

數(shù)字或下劃線連接的數(shù)字指數(shù)::=E[+]整數(shù)或E[-]整數(shù)(1)十進(jìn)制數(shù)表示法書寫格式為:十進(jìn)制文字::=

整數(shù).[整數(shù)][指數(shù)](2)基表示二、八、十六進(jìn)制數(shù)的方法用“基”表示數(shù)的書寫格式為:149舉例:

2#10110101#--二進(jìn)制表示法

8#267#--八進(jìn)制表示法

16#8F#--十六進(jìn)制表示法

30=3E1=16#1E#=2#11_11#E130.0=300.0e-1=16#1E.0#=2#11.11#E+3上式中:基::=

整數(shù)基于基的整數(shù)::=

擴(kuò)展數(shù)字{[下劃線]擴(kuò)展數(shù)字}

擴(kuò)展數(shù)字::=

數(shù)字/字母以基表示的數(shù)::=

基#基于基的整數(shù).[基于基的整數(shù)]#指數(shù)1503.字符

VHDL中的字符為被單引號括起來的ASCII字符。其書寫格式為:字符文字::=‘圖形字符’例如:‘A’‘’‘*’1514.字符串

VHDL中的字符串為被雙引號括起來的圖形字符序列,可以為空。其書寫格式為:字符串::=“圖形字符”例如:“A”“”“string”152

位串是被雙引號括起來的擴(kuò)展數(shù)字序列,在數(shù)字序列前冠以基數(shù)說明符。其書寫格式為:

位串文字::=基數(shù)說明符“位值”B為二進(jìn)制基說明符,O為八進(jìn)制基說明符,X為十六進(jìn)制基說明符例如:B“1111_1101”X“DFC”O(jiān)“257”5.位串

位串的長度等價于二進(jìn)制數(shù)的長度。位值::=擴(kuò)展數(shù)字{或下劃線擴(kuò)展數(shù)字}1532.3.6運(yùn)算操作符

VHDL語言的操作符有5種:★邏輯運(yùn)算符(LOGICAL)★關(guān)系運(yùn)算符(RELATIONAL)★算術(shù)運(yùn)算符(ARITHMETIC)★并置運(yùn)算符(CONCATENATION)1.邏輯運(yùn)算符

在VHDL語言中,邏輯運(yùn)算符有7種:(課本P256)★移位運(yùn)算符(SHIFT)SYN154◆NOT——取反◆AND——與◆

OR——或◆

NAND——與非◆

NOR——或非◆

XOR——異或◆

XNOR——同或

在一個VHDL語句中存在兩個邏輯表達(dá)式時,左右沒有優(yōu)先級差別(不包括NOT)。一個邏輯式中,先做括號里的運(yùn)算,再做括號外運(yùn)算。邏輯運(yùn)算符的書寫格式為:(1)a<=bANDcANDdANDe;(2)a<=bORcORdORe;(3)a<=(bANDc)OR(dANDe);1552.算術(shù)運(yùn)算符

VHDL語言有10種算術(shù)運(yùn)算符:●+——加運(yùn)算●

-——減運(yùn)算●

*

——乘運(yùn)算●

/——除運(yùn)算●

REM——取余運(yùn)算●MOD——求模運(yùn)算●

+——正●

-——負(fù)●

**

——指數(shù)運(yùn)算●

ABS——取絕對值SYN156算術(shù)運(yùn)算符的使用規(guī)則如下:◆一元運(yùn)算的操作數(shù)(正、負(fù))可以是任何數(shù)值類型(整數(shù)、實(shí)數(shù)、物理量)?!艏訙p運(yùn)算的操作數(shù)可以是整數(shù)、實(shí)數(shù)。對于加、減運(yùn)算的兩個操作數(shù)必須類型相同。◆乘除的操作數(shù)可以同為整數(shù)和實(shí)數(shù),物理量乘或除以整數(shù)仍為物理量,物理量除以同一類型的物理量即可得到一個整數(shù)量?!羟竽:腿∮嗟牟僮鲾?shù)必須是同一整數(shù)類型數(shù)據(jù)?!粢粋€指數(shù)的運(yùn)算符的左操作數(shù)可以是任意整數(shù)或?qū)崝?shù),而右操作數(shù)應(yīng)為一整數(shù)。1573.關(guān)系運(yùn)算符

VHDL語言中6種關(guān)系運(yùn)算:(1)=

——等于(2)/=

——不等于(3)<

——小于(4)<=

——小于等于(5)>

——大于(6)>=

——大于等于在VHDL程序設(shè)計(jì)中運(yùn)算符有如下規(guī)則:SYN158▼等號“=”和不等號“/=”可以適用所有類型的數(shù)據(jù)。▼小于“<”、小于等于“<=”、大于“>”、大于等于“>=”適用于整數(shù)、實(shí)數(shù)、位矢量及數(shù)組類型的比較。▼兩個位矢量類型的對象比較時,自左至右,按位比較。▼小于等于“<=”和代入“<=”是相同的,在讀VHDL語言的語句時,要根據(jù)上下文關(guān)系來判斷。▼在進(jìn)行關(guān)系運(yùn)算時,左右兩邊的操作數(shù)的數(shù)據(jù)類型必須相同.1594.并置運(yùn)算符

并置運(yùn)算符“&”用于位的連接。并置運(yùn)算符有如下使用規(guī)則:◆并置運(yùn)算符可用于位的連接,形成位矢量.◆并置運(yùn)算符可用于兩位矢量的連接構(gòu)成更大的位矢量.◆位的連接也可以用集合體的方法,即將并置符換成逗號.例如:DATA_C<=D0&D1&D2&D3;DATA_C<=(D0,D1,D2,D3);SYN1605.移位運(yùn)算符

(1)SLL

——邏輯左移(2)SRL ——邏輯右移(3)SLA ——算術(shù)左移(4)SRA

——算術(shù)右移(5)ROL ——循環(huán)左移(6)ROR ——循環(huán)右移SYN數(shù)據(jù)類型為BIT,BIT_VECTOR,BOOLEAN條件:1616.操作符的運(yùn)算優(yōu)先級

NOTABS***/MODREM+(positive)-(negative)+-&SLLSRLSLASRAROLROR=/=<<=>>=ANDORNANDNORXORXNOR高低1622.4、VHDL語法基礎(chǔ)

2.4.1并行語句

VHDL語言是并行處理語言,能夠進(jìn)行并行處理的語句有:Process-進(jìn)程語句ConcurrentSignalAssignment-并行信號賦值語句Block-塊語句ComponentInstantiation

-元件(例化)調(diào)用語句Generate-生成語句ConcurrentProcedureCall-并行過程調(diào)用語句ConcurrentStatements(課本P289)1631.進(jìn)程語句(Process)

進(jìn)程語句是并行處理語句,即各個進(jìn)程是同時處理的,在一個結(jié)構(gòu)體中多個Process語句是同時并發(fā)運(yùn)行的。Process語句具有如下特點(diǎn):(1)進(jìn)程結(jié)構(gòu)中的所有語句都是按順序執(zhí)行的。(2)多進(jìn)程之間,是并行執(zhí)行的,并可存取結(jié)構(gòu)體或?qū)嶓w中所定義的信號。(3)為啟動進(jìn)程,在進(jìn)程結(jié)構(gòu)中必須包含一個顯式的敏感信號量表或者包含一個WAIT語句。(4)進(jìn)程之間的通信是通過信號量傳遞來實(shí)現(xiàn)的。164Process語句的一般書寫結(jié)構(gòu)、組織形成為:[進(jìn)程名:]PROCESS[敏感信號表]

變量說明語句:┆

BEGIN┆順序說明語句┆

ENDPROCESS[進(jìn)程名];165[例:]由時鐘控制的進(jìn)程語句設(shè)計(jì)。ENTITYsync_deviceISPORT(ina,inb,clk:INBit;Outb:OUTBit);ENDsync_device;ARCHITECTUREexampleOFsync_deviceISBEGIN

P1:PROCESS(clk)

BEGIN

Outb<=inaandinb;

ENDPROCESSP1;ENDexample;166

GENERIC語句用于不同層次設(shè)計(jì)模塊之間信息的傳遞和參數(shù)的傳遞,可用于位矢量的長度、數(shù)組的位長等參數(shù)的傳遞。這些參數(shù)都是整數(shù)類型,其他數(shù)據(jù)類型不能綜合。libraryieee;useieee.std_logic_1164.all;entitycntm16isgeneric(cntwidth:integer:=4);port(en:instd_logic;nreset:instd_logic;clk:instd_logic;co:outstd_logic;qcnt:buffer

std_logic_vector(cntwidth-1

downto0));endcntm16;167architecturebehaveofcntm16isbeginco<='1'when(qcnt="1111"anden='1')else'0';process(clk,nreset)beginif(nreset='0')thenqcnt<=(others=>'0');--qcnt<="0000";elsif(clk'eventandclk='1')thenif(en='1')thenqcnt<=qcnt+1;endif;endif;endprocess;endbehave;1681692.并行信號賦值語句(CONCURRENTSIGNALASSIGNMENT)并行信號賦值語句有三種形式:(1)簡單信號賦值語句(2)條件信號賦值語句(3)選擇信號賦值語句170(1)簡單信號賦值語句簡單信號賦值(信號代入)語句的格式如下:信號量<=敏感信號量表達(dá)式;

信號代入語句在進(jìn)程內(nèi)部使用時,它作為順序語句的形式出現(xiàn);信號代入語句在結(jié)構(gòu)體的進(jìn)程之外使用時,它作為并發(fā)語句的形式出現(xiàn)。一個并發(fā)信號代入語句是一個等效進(jìn)程的簡略形式。例如:q<=c+d;process(c,d)beginq<=c+d;endprocess;171條件信號賦值語句的格式為:目標(biāo)信號<=表達(dá)式1WHEN

條件1ELSE

表達(dá)式2WHEN

條件2ELSE

表達(dá)式3WHEN

條件3ELSE┆

表達(dá)式nWHEN

條件nELSE

表達(dá)式n+1;

(2)條件信號賦值語句172libraryieee;useieee.std_logic_1164.all;entitymux4isport(a0,a1,a2,a3:instd_logic;s:instd_logic_vector(1downto0);y:outstd_logic);endmux4;architecturedataflowofmux4isbeginy<=a0whens=“00”elsea1whens=“01”elsea2whens=“10”elsea3;enddataflow;173TechnologyMap174RTL175libraryieee;useieee.std_logic_1164.all;entityencoder_1isport(a,b,c,d,e,f,g,h:instd_logic;codeout:outstd_logic_vector(2downto0));endencoder_1;architecturebehavioralofencoder_1isbegincodeout<="111"whenh='1'else"110"wheng='1'else"101"whenf='1'else"100"whene='1'else"011"whend='1'else"010"whenc='1'else"001"whenb='1'else"000"whena='1'else"ZZZ";endbehavioral;IF語句176177選擇型信號賦值語句的格式為:WITH

表達(dá)式

SELECT目標(biāo)信號<=表達(dá)式1WHEN

條件1,

表達(dá)式2WHEN

條件2,

表達(dá)式3WHEN

條件3,┆

表達(dá)式nWHEN

條件n;注意?。?)選擇信號賦值語句178libraryieee;useieee.std_logic_1164.all;entitymux4isport(a0,a1,a2,a3:instd_logic;s:instd_logic_vecter(1downto0);y:outstd_logic);endmux4;architecturedataflowofmux4isbegin

withs

select

y<=a0

when“00”,

a1

when

“01”,

a2

when

“10”,

a3

when

others;enddataflow;179TechnologyMap180RTL1813.塊語句

(Block)

塊(Block)是將結(jié)構(gòu)體中的并行語句組合在一起,其目的是改善并行語句及其結(jié)構(gòu)的可讀性,一般用于較復(fù)雜的VHDL程序中。但從綜合角度看,該語句沒有實(shí)用價值。標(biāo)號:Block[(保護(hù)表達(dá)式)][塊說明部分]

BEGIN

并行語句A;

并行語句B;┆

ENDBlock[塊標(biāo)號];標(biāo)號必須有!182libraryieee;useieee.std_logic_1164.all;entitytest_blockisport(a,b:instd_logic;aequalb,agreatb,alessb:outstd_logic);endtest_block;architecturebehaveoftest_blockisbegin

comp:block

beginaequalb<='1'whena=belse'0';agreatb<='1'whena>belse'0';alessb<='1'whena<belse'0';

endblock;endbehave;

183TechnologyMap184RTL1854.元件例化語句(ComponentInstantiation)

一般把設(shè)計(jì)好的設(shè)計(jì)實(shí)體稱為一個元件或一個模塊。VHDL中基本的設(shè)計(jì)層次是元件,它可作為其它模塊或更高層次模塊引用的底層模塊。

元件聲明是對VHDL模塊(即底層設(shè)計(jì),也是完整的VHDL設(shè)計(jì))的說明,使之可在其他模塊中被調(diào)用。元件聲明可放在程序包中,也可放在某個設(shè)計(jì)的結(jié)構(gòu)體中進(jìn)行。

元件例化是指元件的調(diào)用,是將現(xiàn)成元件的端口信號映射成高層次設(shè)計(jì)電路中的信號。元件聲明及元件例化的語法分別如下:186元件聲明語句

(元件定義語句):元件例化語句:COMPONENT

元件名[IS]

GENERIC(類屬表);

PORT(端口名表);ENDCOMPONENT

[元件名];例化名:元件名PORTMAP([端口名=>]連接端口名,...);位置關(guān)聯(lián)、名稱關(guān)聯(lián)1875.生成語句(GENERATE)GENERATE語句用來產(chǎn)生多個相同的結(jié)構(gòu)和描述規(guī)則結(jié)構(gòu),如塊陣列,元件例化或進(jìn)程。GENERATE語句的兩種形式分別為:[標(biāo)號:]FOR

循環(huán)變量IN

取值范圍GENERATE

說明

BEGIN

并行語句

ENDGENERATE[標(biāo)號];[標(biāo)號:]IF

條件

GENERATE

說明

Begin

并行語句

ENDGENERATE[標(biāo)號];1886.并發(fā)過程調(diào)用語句(CONCURRENTPROCEDURECALL

溫馨提示

  • 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

提交評論