版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1電子設(shè)計(jì)自動(dòng)化
(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ì)自動(dòng)化概述
0.2、電子系統(tǒng)的仿真、綜合與實(shí)現(xiàn)40.1、電子設(shè)計(jì)自動(dòng)化概述
電子設(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)自動(dòng)布局布線工具、HDL
(Hardware
Description
Language)
(VHDL、
Verilog
HDL)及其仿真工
具、CPLD(ComplexPLD)20世紀(jì)90年代:PAC(ProgramableAnalogCircuit)標(biāo)準(zhǔn)HDL的綜合工具以上設(shè)計(jì)技術(shù)統(tǒng)稱(chēng):電子設(shè)計(jì)自動(dòng)化(ElectronicDesignAutomation)21世紀(jì):SoPC
(可編程片上系統(tǒng))
SystemonProgrammableChip
6電子設(shè)計(jì)的層次:(由上至下)集成電路技術(shù)、計(jì)算機(jī)技術(shù)與EDA的關(guān)系系統(tǒng)級(jí)、功能級(jí)、邏輯級(jí)、電路級(jí)、物理級(jí)集成電路技術(shù)和計(jì)算機(jī)技術(shù)是EDA技術(shù)發(fā)展的基礎(chǔ)。反過(guò)來(lái),EDA技術(shù)為電子設(shè)計(jì)提供了強(qiáng)有力的支持,不僅使電子系統(tǒng)的規(guī)模日益復(fù)雜,而且使電子產(chǎn)品的周期不斷縮短,從而又推到了集成電路和計(jì)算機(jī)技術(shù)以更快的速度發(fā)展。70.2、電子系統(tǒng)的仿真、綜合與實(shí)現(xiàn)
★仿真(又稱(chēng)模擬)(Simulation):
用計(jì)算機(jī)模仿電子系統(tǒng)的實(shí)際工作情況。
一般來(lái)說(shuō),仿真有問(wèn)題,設(shè)計(jì)一定有問(wèn)題;仿真沒(méi)有問(wèn)題,設(shè)計(jì)不一定沒(méi)有問(wèn)題?!锞C合(Synthesis):將高層次的設(shè)計(jì)描述轉(zhuǎn)換成由低層次便于實(shí)現(xiàn)的模塊所裝配成的統(tǒng)一實(shí)體。分為:自然語(yǔ)言綜合
、高層(行為)綜合、邏輯綜合、版圖綜合。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的開(kāi)發(fā)工具1.7、FPGA/CPLD設(shè)計(jì)流程1.8、ALTERA開(kāi)發(fā)工具QUARTUSII10數(shù)字集成電路:通用集成電路、專(zhuān)用集成電路(ASIC)Application-SpecificIntegratedCircuit通用集成電路:74/54、C4000專(zhuān)用集成電路:為特定用途而設(shè)計(jì)和制造的器件,是用戶定制的IC。分為:全定制、
半定制11半定制電路門(mén)陣列(GA)可編程邏輯器件(PLD)門(mén)海(SoG)SPLDHDPLDPROMPLAPALGALCPLDFPGAPLD特點(diǎn):高密度、高速度、高開(kāi)發(fā)效率121.1、SPLD的原理與組成
PLD的核心結(jié)構(gòu)1.1.1PLD的基本結(jié)構(gòu)數(shù)據(jù)輸入輸入電路與門(mén)陣列或門(mén)陣列輸出電路數(shù)據(jù)輸出}互補(bǔ)輸入與項(xiàng)與或式}……緩沖互補(bǔ)緩沖提供不同輸出結(jié)構(gòu)(課本P27)131.1.2PLD內(nèi)部電路的表示方法常用邏輯門(mén)符號(hào)與現(xiàn)有國(guó)標(biāo)符號(hào)的對(duì)照14PLD的互補(bǔ)緩沖器PLD的互補(bǔ)輸入PLD中與陣列表示PLD中或陣列的表示陣列線連接表示
PLD中的邏輯符號(hào)表示方法15PLD中的邏輯符號(hào)表示方法16PROM基本結(jié)構(gòu):地址譯碼器輸出邏輯函數(shù)是:1.1.3PROM17存儲(chǔ)單元邏輯函數(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時(shí)鐘信號(hào)輸入輸入/輸出口輸出邏輯宏單元三態(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)成豐富的時(shí)序電路。3.I/O不夠靈活,限制了片內(nèi)資源的利用率。4.編程不便,需用專(zhuān)用的編程工具。所以:GALCPLD典型CPLD:ALTERAMAX7000系列33MAX7000包含32到256個(gè)宏單元,每16個(gè)宏單元組成一個(gè)邏輯陣列塊(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系列的單個(gè)宏單元結(jié)構(gòu)PRNCLRNENA邏輯陣列全局清零共享邏輯擴(kuò)展項(xiàng)清零時(shí)鐘清零選擇寄存器旁路并行擴(kuò)展項(xiàng)通往I/O模塊通往PIA乘積項(xiàng)選擇矩陣來(lái)自I/O引腳全局時(shí)鐘QDEN來(lái)自PIA的36個(gè)信號(hào)快速輸入選擇2(2)宏單元VCC3637(3)擴(kuò)展乘積項(xiàng)共享擴(kuò)展乘積項(xiàng)結(jié)構(gòu)3839并聯(lián)擴(kuò)展項(xiàng)饋送方式4041(4)可編程連線陣列
不同的LAB通過(guò)在可編程連線陣列(PIA)上布線,以相互連接構(gòu)成所需的邏輯。PIA信號(hào)布線到LAB的方式42(4)可編程連線陣列
不同的LAB通過(guò)在可編程連線陣列(PIA)上布線,以相互連接構(gòu)成所需的邏輯。PIA信號(hào)布線到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)場(chǎng)可編程門(mén)陣列(FieldProgrammableGateArray)
查找表(Look-Up-Table)簡(jiǎn)稱(chēng)為L(zhǎng)UT,LUT本質(zhì)上就是一個(gè)RAM。目前FPGA中多使用4輸入的LUT,所以每一個(gè)LUT可以看成一個(gè)有4位地址線的16x1的RAM。46FPGA查找表單元內(nèi)部結(jié)構(gòu)MUXF471.3.2Cyclone/CycloneII系列器件的結(jié)構(gòu)與原理Cyclone/CycloneⅡ系列器件是Altera公司的一款低成本的、高性?xún)r(jià)比的FPGA,它的結(jié)構(gòu)和工作原理在FPGA中具有典型性。
Cyclone與CycloneⅡ系列器件的基本結(jié)構(gòu)、原理類(lèi)似。Cyclone系列器件主要有以下部分組成:
邏輯陣列塊LAB、嵌入式存儲(chǔ)器塊、I/O單元、嵌入式硬件乘法器、鎖相環(huán)PLL等。48CycloneLE結(jié)構(gòu)圖4950CycloneLE普通模式
5152CycloneLE動(dòng)態(tài)算術(shù)模式
5354CycloneLAB結(jié)構(gòu)
5556LAB陣列
5758LAB控制信號(hào)生成
5960快速進(jìn)位選擇鏈
6162LUT鏈和寄存器鏈的使用
63LVDS連接
Low-VoltageDifferentialSignaling低壓差分信號(hào)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的開(kāi)發(fā)工具集成的FPGA/CPLD開(kāi)發(fā)環(huán)境:MAXPLUSII10.23QUARTUS
II10.0ALTERA:XILINX:FOUNDATION3.1ISE10.1iISEDesignSuite12.1LATTICE:ispEXPERT7.01ispLEVER7.2PACDesigner
ispLEVERClassic1.4
由PLD/FPGA芯片廠家提供,基本都可以完成所有的設(shè)計(jì)輸入(原理圖或HDL),仿真,綜合,布線,下載等工作。70HDL邏輯綜合軟件:
這類(lèi)軟件將把HDL語(yǔ)言翻譯成最基本的與或非門(mén)的連接關(guān)系(網(wǎng)表),輸出edif(ElectronicDesignInterchangeFormat)文件,導(dǎo)給PLD/FPGA廠家的軟件進(jìn)行適配和布線。為了優(yōu)化結(jié)果,在進(jìn)行復(fù)雜HDL設(shè)計(jì)時(shí),基本上都會(huì)使用這些專(zhuān)業(yè)的邏輯綜合軟件,而不使用PLD/FPGA廠家的集成開(kāi)發(fā)軟件中自帶的邏輯綜合功能。Synplify/SynplifyProLeonardoSpectrumSynplicity:Mentor:FPGAComplierIISynopsys:71ModelTech:ModelsimAldec:ActiveHDLCadence:NC-Verlog/NC-VHDL/NC-SIMHDL仿真軟件
對(duì)設(shè)計(jì)進(jìn)行校驗(yàn)仿真,包括布線以前的功能仿真(前仿真)和布線以后包含延時(shí)的時(shí)序仿真(后仿真),對(duì)于一些復(fù)雜的HDL設(shè)計(jì)可能需要這些軟件專(zhuān)業(yè)的仿真功能。721.7、FPGA/CPLD設(shè)計(jì)流程應(yīng)用FPGA/CPLD的EDA開(kāi)發(fā)流程:原理圖/VHDL文本編輯綜合FPGA/CPLD適配FPGA/CPLD編程下載FPGA/CPLD器件和電路系統(tǒng)時(shí)序與功能門(mén)級(jí)仿真1、功能仿真2、時(shí)序仿真邏輯綜合器結(jié)構(gòu)綜合器1、isp方式下載2、JTAG方式下載3、針對(duì)SRAM結(jié)構(gòu)的配置4、OTP器件編程
功能仿真(課本P13)731.7.1設(shè)計(jì)輸入(原理圖/HDL文本編輯)1.圖形輸入
圖形輸入
原理圖輸入
狀態(tài)圖輸入
波形圖輸入742.HDL文本輸入
這種方式與傳統(tǒng)的計(jì)算機(jī)軟件語(yǔ)言編輯輸入基本一致。就是將使用了某種硬件描述語(yǔ)言(HDL)的電路設(shè)計(jì)文本,如VHDL或VerilogHDL的源程序,進(jìn)行編輯輸入。
可以說(shuō),應(yīng)用HDL的文本輸入方法克服了上述原理圖輸入法存在的所有弊端,為EDA技術(shù)的應(yīng)用和發(fā)展打開(kāi)了一個(gè)廣闊的天地。75
整個(gè)綜合過(guò)程就是將設(shè)計(jì)者在EDA平臺(tái)上編輯輸入的HDL文本、原理圖或狀態(tài)圖形描述,依據(jù)給定的硬件結(jié)構(gòu)組件和約束控制條件進(jìn)行編譯、優(yōu)化、轉(zhuǎn)換和綜合,最終獲得門(mén)級(jí)電路甚至更底層的電路描述網(wǎng)表文件。由此可見(jiàn),綜合器工作前,必須給定最后實(shí)現(xiàn)的硬件結(jié)構(gòu)參數(shù),它的功能就是將軟件描述與給定的硬件結(jié)構(gòu)用某種網(wǎng)表文件的方式對(duì)應(yīng)起來(lái),成為相互的映射關(guān)系。1.7.2綜合76
適配器也稱(chēng)結(jié)構(gòu)綜合器,它的功能是將由綜合器產(chǎn)生的網(wǎng)表文件配置于指定的目標(biāo)器件中,使之產(chǎn)生最終的下載文件,如JEDEC、Jam格式的文件。適配所選定的目標(biāo)器件(FPGA/CPLD芯片)必須屬于原綜合器指定的目標(biāo)器件系列。
邏輯綜合通過(guò)后必須利用適配器將綜合后網(wǎng)表文件針對(duì)某一具體的目標(biāo)器件進(jìn)行邏輯映射操作,其中包括底層器件配置、邏輯分割、邏輯優(yōu)化、邏輯布局布線操作。適配完成后可以利用適配所產(chǎn)生的仿真文件作精確的時(shí)序仿真,同時(shí)產(chǎn)生可用于編程的文件。1.7.3適配77時(shí)序仿真功能仿真
是直接對(duì)VHDL、原理圖描述或其他描述形式的邏輯功能進(jìn)行測(cè)試模擬,以了解其實(shí)現(xiàn)的功能是否滿足原設(shè)計(jì)的要求的過(guò)程,仿真過(guò)程不涉及任何具體器件的硬件特性。1.7.4時(shí)序仿真與功能仿真
就是接近真實(shí)器件運(yùn)行特性的仿真,仿真文件中己包含了器件硬件特性參數(shù),因而,仿真精度高。78
通常,將對(duì)CPLD的下載稱(chēng)為編程(Program),對(duì)FPGA中的SRAM進(jìn)行直接下載的方式稱(chēng)為配置(Configure),但對(duì)于OTPFPGA的下載和對(duì)FPGA的專(zhuān)用配置ROM的下載仍稱(chēng)為編程。
FPGA與CPLD的辨別和分類(lèi)主要是根據(jù)其結(jié)構(gòu)特點(diǎn)和工作原理。通常的分類(lèi)方法是:將以乘積項(xiàng)結(jié)構(gòu)方式構(gòu)成邏輯行為的器件稱(chēng)為CPLD,如Lattice的ispLSI系列、Xilinx的XC9500系列、Altera的MAX7000S系列和Lattice(原Vantis)的Mach系列等。將以查表法結(jié)構(gòu)方式構(gòu)成邏輯行為的器件稱(chēng)為FPGA,如Xilinx的SPARTAN系列、Altera的FLEX10K或ACEX1K系列等。1.7.5編程下載79
最后是將含有載入了設(shè)計(jì)的FPGA或CPLD的硬件系統(tǒng)進(jìn)行統(tǒng)一測(cè)試,以便最終驗(yàn)證設(shè)計(jì)項(xiàng)目在目標(biāo)系統(tǒng)上的實(shí)際工作情況,以排除錯(cuò)誤,改進(jìn)設(shè)計(jì)。1.7.6硬件測(cè)試801.8、ALTERA開(kāi)發(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、簡(jiǎn)介--背景2.2、VHDL語(yǔ)言程序的基本結(jié)構(gòu)2.3、VHDL語(yǔ)言的數(shù)據(jù)類(lèi)型及運(yùn)算操作符
2.4、VHDL語(yǔ)法基礎(chǔ)
2.5、屬性的描述與定義109傳統(tǒng)數(shù)字電路設(shè)計(jì)方法不適合設(shè)計(jì)大規(guī)模的系統(tǒng)。工程師不容易理解原理圖設(shè)計(jì)的功能。眾多軟件公司開(kāi)發(fā)研制了具有自己特色的電路硬件描述語(yǔ)言HDL(HardwareDescriptionLanguage),這些語(yǔ)言之間存在著很大的差異,工程師一旦選用某種硬件描述語(yǔ)言作為輸入工具,就被束縛在這個(gè)硬件設(shè)計(jì)環(huán)境之中。因此,硬件設(shè)計(jì)工程師需要一種強(qiáng)大的、標(biāo)準(zhǔn)化的硬件描述語(yǔ)言,作為可相互交流的設(shè)計(jì)環(huán)境。2.1、簡(jiǎn)介--背景110描述復(fù)雜的數(shù)字電路系統(tǒng)成為國(guó)際的硬件描述語(yǔ)言標(biāo)準(zhǔn)美國(guó)國(guó)防部在80年代初提出了VHSIC(VeryHighSpeedIntegratedCircuit)計(jì)劃,其目標(biāo)之一是為下一代集成電路的生產(chǎn),實(shí)現(xiàn)階段性的工藝極限以及完成10萬(wàn)門(mén)級(jí)以上的設(shè)計(jì),建立一項(xiàng)新的描述方法。1981年提出了一種新的HDL,稱(chēng)之為VHSICHardwareDescriptionLanguage,簡(jiǎn)稱(chēng)為VHDL,這種語(yǔ)言的成就有兩個(gè)方面:InstituteofElectricalandElectronicsEngineers1987,“IEEE標(biāo)準(zhǔn)1076”,最新,IEEE1076-2008111VHDL的優(yōu)點(diǎn):用于設(shè)計(jì)復(fù)雜的、多層次的設(shè)計(jì)。支持設(shè)計(jì)庫(kù)和設(shè)計(jì)的重復(fù)使用與硬件獨(dú)立,一個(gè)設(shè)計(jì)可用于不同的硬件結(jié)構(gòu),而且設(shè)計(jì)時(shí)不必了解過(guò)多的硬件細(xì)節(jié)。有豐富的軟件支持VHDL的綜合和仿真,從而能在設(shè)計(jì)階段就能發(fā)現(xiàn)設(shè)計(jì)中的Bug,縮短設(shè)計(jì)時(shí)間,降低成本。更方便地向ASIC過(guò)渡。VHDL有良好的可讀性,容易理解。112VHDL與計(jì)算機(jī)語(yǔ)言的區(qū)別★運(yùn)行的基礎(chǔ)
▼計(jì)算機(jī)語(yǔ)言是在CPU+RAM構(gòu)建的平臺(tái)上運(yùn)行
▼VHDL設(shè)計(jì)的結(jié)果是由具體的邏輯、觸發(fā)器組成的數(shù)字電路★執(zhí)行方式
▼計(jì)算機(jī)語(yǔ)言基本上以串行的方式執(zhí)行
▼VHDL在總體上是以并行方式工作★驗(yàn)證方式
▼計(jì)算機(jī)語(yǔ)言主要關(guān)注于變量值的變化
▼
VHDL要實(shí)現(xiàn)嚴(yán)格的時(shí)序邏輯關(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大小寫(xiě)不敏感eqcomp4.vhd包實(shí)體結(jié)構(gòu)體文件名和實(shí)體名一致每行;結(jié)尾關(guān)鍵字begin關(guān)鍵字end后跟實(shí)體名關(guān)鍵字end后跟結(jié)構(gòu)體名庫(kù)類(lèi)型設(shè)計(jì)實(shí)體1142.2、VHDL語(yǔ)言程序的基本結(jié)構(gòu)一個(gè)完整的VHDL語(yǔ)言程序通常包含五個(gè)部分:實(shí)體(Entity)結(jié)構(gòu)體(Architecture)配置(Configuration)包集合(Package)庫(kù)(Library)(課本P225)115前面的例子
設(shè)計(jì)實(shí)體是VHDL語(yǔ)言設(shè)計(jì)的基本單元,是最重要的系統(tǒng)抽象。設(shè)計(jì)實(shí)體由實(shí)體說(shuō)明和結(jié)構(gòu)體兩部分組成定義了設(shè)計(jì)單元的具體構(gòu)造和操作
規(guī)定了設(shè)計(jì)單元的輸入輸出接口信號(hào)或引腳EntityDeclarationArchitectureBody2.2.1設(shè)計(jì)實(shí)體(designentity)
116實(shí)體說(shuō)明的一般格式如下:文件名和實(shí)體名一致!ENTITY實(shí)體名
IS[GENERIC(類(lèi)屬參數(shù)說(shuō)明);][PORT(端口說(shuō)明);]
實(shí)體說(shuō)明部分;[BEGIN
實(shí)體語(yǔ)句部分;]END[ENTITY][實(shí)體名];2.2.2實(shí)體說(shuō)明
117ENTITY實(shí)體名IS[GENERIC(類(lèi)屬參數(shù)說(shuō)明);]PORT(端口說(shuō)明);END[實(shí)體名];實(shí)體說(shuō)明的常用格式如下:<EntityDeclaration>::=ENTITYIdentifierIS <EntityHeader> <EntityDeclarativePart> [BEGIN <EntityStatementPart>] END[ENTITY][<EntitySimpleName>];1181.類(lèi)屬參數(shù)說(shuō)明
類(lèi)屬參數(shù)說(shuō)明用于說(shuō)明設(shè)計(jì)實(shí)體和其外部環(huán)境通信的對(duì)象、通信的格式約定和通信通道的大小。
GENERIC([CONSTANT]名字表:[IN]子類(lèi)型標(biāo)識(shí)[:=靜態(tài)表達(dá)式],…);
GENERIC(名字表:子類(lèi)型標(biāo)識(shí)[:=靜態(tài)表達(dá)式],…);例如:GENERIC(m:TIME:=3ns)
一般書(shū)寫(xiě)格式為:常用書(shū)寫(xiě)格式為:GENERIC(m:TIME:=5ns,n:INTEGER:=75)GENERIC(n:INTEGER:=15)1192.端口說(shuō)明
端口為設(shè)計(jì)實(shí)體和其外部環(huán)境的動(dòng)態(tài)通信提供通道,是對(duì)基本設(shè)計(jì)實(shí)體與外部接口的描述。PORT([SIGNAL]端口名:[模式]子類(lèi)型標(biāo)識(shí)[BUS][:=靜態(tài)表達(dá)式],…);PORT(端口名:模式子類(lèi)型標(biāo)識(shí)[BUS],…);(1)端口名端口名是賦予每個(gè)外部引腳的名稱(chēng)一般書(shū)寫(xiě)格式為:常用書(shū)寫(xiě)格式為:120(2)端口模式
端口模式用來(lái)說(shuō)明數(shù)據(jù)、信號(hào)通過(guò)該端口的方向。LINKAGE(不指定方向,無(wú)論哪個(gè)方向都可連接)。
VHDL語(yǔ)言提供了下述端口模式:IN
(流入實(shí)體),OUT
(流出實(shí)體),INOUT
(雙向端口:既可流入,又可流出),BUFFER
(信號(hào)輸出到外部,但同時(shí)也可在實(shí)體內(nèi)部反饋),121(3)數(shù)據(jù)類(lèi)型
VHDL語(yǔ)言中有10種數(shù)據(jù)類(lèi)型,IEEE1076/93標(biāo)準(zhǔn)規(guī)定,EDA綜合工具提供的數(shù)據(jù)類(lèi)型為布爾型(Boolean)、位型(Bit)、位矢量型(Bit_vector)和整數(shù)型(Integer)。
但在實(shí)際中,常用的數(shù)據(jù)類(lèi)型為:
STD_LOGICSTD_LOGIC_VECTOR
要使用這2種類(lèi)型,須在程序開(kāi)始加入以下兩語(yǔ)句:
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;前面的例子無(wú);123結(jié)構(gòu)體描述一個(gè)設(shè)計(jì)的結(jié)構(gòu)或行為
用VHDL語(yǔ)言描述結(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)體的常用書(shū)寫(xiě)格式為:ARCHITECTURE結(jié)構(gòu)體名OF實(shí)體名IS--定義語(yǔ)句BEGIN--并行處理語(yǔ)句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)體名稱(chēng)的命名
結(jié)構(gòu)體的名稱(chēng)可自由命名,但通常命名為
behavioraldataflowstructuralARCHITECTUREbehavioralOFmuxIS用結(jié)構(gòu)體行為命名ARCHITECTUREdataflowOFmuxIS用結(jié)構(gòu)體的數(shù)據(jù)流命名ARCHITECTUREstructuralOFmuxIS用結(jié)構(gòu)體的組織結(jié)構(gòu)命名2.定義語(yǔ)句
用于對(duì)結(jié)構(gòu)體內(nèi)部所使用的信號(hào)、常數(shù)、數(shù)據(jù)類(lèi)型和函數(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;返回類(lèi)型轉(zhuǎn)換返回整數(shù)1295LEsSKIP13073LEs1312.3、VHDL語(yǔ)言的數(shù)據(jù)類(lèi)型及運(yùn)算操作符
VHDL語(yǔ)言的標(biāo)識(shí)符是遵守以下規(guī)則的字符序列:(1)有效字符:(A~Z,a~z)、(0~9)和(_)。(2)必須以英文字母打頭。(3)下劃線前后必須都有英文字母或數(shù)字。(4)標(biāo)識(shí)符不區(qū)分大小寫(xiě)。下面是合法的標(biāo)識(shí)符:pulse_100msPulse_100msPULSE_100MS下面是不合法的標(biāo)識(shí)符:pulse-100ms2pulse_100ms_pulse_100mspulse_100ms_2.3.1標(biāo)識(shí)符
(課本P127)132
在VHDL語(yǔ)言中對(duì)象包括以下3種:信號(hào)(Signal)、變量(Variable)和常數(shù)(Constant)。
(課本P127)1.常數(shù)(Constant)CONSTANT常數(shù)名:數(shù)據(jù)類(lèi)型:=表達(dá)式;例如:CONSTANTDELAY:time:=100ns;常數(shù)說(shuō)明的一般格式如下:常數(shù)是一個(gè)全局量。2.3.2VHDL語(yǔ)言的對(duì)象及其分類(lèi)
SYNconstantwriteDDRAM:std_logic_vector(4downto0):="10001";1332.變量(Variable)VARIABLE變量名:數(shù)據(jù)類(lèi)型約束條件:=表達(dá)式;例如:VARIABLEx,y,z:INTEGER;變量說(shuō)明語(yǔ)句的一般格式為:
變量只能在進(jìn)程語(yǔ)句、函數(shù)語(yǔ)句和過(guò)程語(yǔ)句結(jié)構(gòu)中使用,是一個(gè)局部量。變量在賦值時(shí)不能產(chǎn)生附加延時(shí)。通常暫存一些信號(hào)。variablecount:integerrange0to255:=10;SYN1343.信號(hào)(Signal)
SIGNAL信號(hào)名:數(shù)據(jù)類(lèi)型約束條件:=表達(dá)式;例如:SIGNALground:std_logic:=‘0’;信號(hào)說(shuō)明語(yǔ)句的一般格式為:用于VHDL中元件之間的通訊通常對(duì)應(yīng)實(shí)際系統(tǒng)中的連線信號(hào)賦值需要延時(shí)周期后才生效信號(hào)不能在process內(nèi)聲明信號(hào)是一個(gè)全局量SYN135變量和信號(hào)的區(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語(yǔ)言的數(shù)據(jù)類(lèi)型
VHDL語(yǔ)言標(biāo)準(zhǔn)定義了10種標(biāo)準(zhǔn)的數(shù)據(jù)類(lèi)型還可以由用戶自定義數(shù)據(jù)類(lèi)型
VHDL語(yǔ)言的數(shù)據(jù)類(lèi)型的定義相當(dāng)嚴(yán)格,不同類(lèi)型之間的數(shù)據(jù)不能直接代入,數(shù)據(jù)類(lèi)型相同,而位長(zhǎng)不同時(shí)也不能直接代入。1.VHDL語(yǔ)言標(biāo)準(zhǔn)所定義的標(biāo)準(zhǔn)數(shù)據(jù)類(lèi)型
.整數(shù)(Integer).實(shí)數(shù)(Real).位(Bit).位矢量(Bit_Vector).布爾量(Boolean)(課本P249)138.字符(Character).字符串(String).時(shí)間(Time).錯(cuò)誤等級(jí)(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'(將值放在單引號(hào)中)表示(4)位矢量(Bit_Vector)
位矢量是用雙引號(hào)括起來(lái)的一組位數(shù)據(jù)。
例如:"001010"(5)布爾量(Boolean)
它能進(jìn)行關(guān)系運(yùn)算。一個(gè)布爾量常用來(lái)表示信號(hào)的狀態(tài)或者總線上的情況。
一般這一類(lèi)型的數(shù)據(jù)的初始值總為FALSE。SYNSYNSYN140(6)字符(Character)
字符量通常用單引號(hào)括起來(lái),如'T','I'。(7)字符串(String)
字符串是由雙引號(hào)括起來(lái)的一個(gè)字符序列,也稱(chēng)字符矢量或字符串?dāng)?shù)組
例如:“STRING”,“INTEGERRANGE”(8)時(shí)間(Time)
時(shí)間是一個(gè)物理量數(shù)據(jù)。時(shí)間類(lèi)型一般用于仿真,而不用于邏輯綜合。
例如:55sec,2minSYNSYN141
錯(cuò)誤等級(jí)類(lèi)型數(shù)據(jù)用來(lái)表示系統(tǒng)的狀態(tài)。它分為四種:NOTE(注意)、WARNING(警告)、ERROR(出錯(cuò))、FAILURE(失?。T诜抡孢^(guò)程中可以用這四種狀態(tài)來(lái)提示系統(tǒng)當(dāng)前的工作情況。(9)錯(cuò)誤等級(jí)(SeverityLevel)(10)自然數(shù)(Natural)、正整數(shù)(Positive)
自然數(shù)和正整數(shù)是整數(shù)的子類(lèi),Natural類(lèi)數(shù)據(jù)只能取值0和0以上的正整數(shù),Positive只能為正整數(shù)。SYN1422.用戶定義的數(shù)據(jù)類(lèi)型
TYPE數(shù)據(jù)類(lèi)型名[,數(shù)據(jù)類(lèi)型名]數(shù)據(jù)類(lèi)型定義;
可由用戶定義的數(shù)據(jù)類(lèi)型有:.枚舉(Enumerated)類(lèi)型.整數(shù)(Integer)類(lèi)型.實(shí)數(shù)(Real)、浮點(diǎn)數(shù)(Floating)類(lèi)型.?dāng)?shù)組(Array)類(lèi)型.存?。ˋccess)類(lèi)型.文件(File)類(lèi)型.記錄(Record)類(lèi)型.時(shí)間(Time)類(lèi)型(物理類(lèi)型)書(shū)寫(xiě)格式為:143(1)枚舉(Enumerated)類(lèi)型
格式:TYPE數(shù)據(jù)類(lèi)型名IS(元素,元素,…);例如:TYPEBooleanIS(false,true);SYN(2)整數(shù)(Integer)類(lèi)型格式:TYPE數(shù)據(jù)類(lèi)型名IS數(shù)據(jù)類(lèi)型定義約束范圍;例如:TYPEdigitISINTEGERrange0TO9;SYN(3)數(shù)組(Array)類(lèi)型格式:TYPE數(shù)據(jù)類(lèi)型名ISARRAY范圍OF原數(shù)據(jù)類(lèi)型名;
例如:TYPEwordISARRAY(1TO16)OFSTD_LOGIC;SYN(一維)144(4)實(shí)數(shù)(Real)、浮點(diǎn)數(shù)(Floating)類(lèi)型(5)存?。ˋccess)類(lèi)型(6)文件(File)類(lèi)型
(7)記錄(Record)類(lèi)型
記錄是將不同類(lèi)型的數(shù)據(jù)和數(shù)據(jù)名組織在一起而形成數(shù)據(jù)類(lèi)型。TYPE數(shù)據(jù)類(lèi)型名ISRECORD
元素名:數(shù)據(jù)類(lèi)型名;元素名:數(shù)據(jù)類(lèi)型名;┆
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)時(shí)間(Time)類(lèi)型(物理類(lèi)型)在從記錄數(shù)據(jù)類(lèi)型中提取元素?cái)?shù)據(jù)類(lèi)型時(shí)應(yīng)使用“.”。例如:146
在VHDL語(yǔ)言中,不同類(lèi)型的數(shù)據(jù)是不能進(jìn)行運(yùn)算和代入的。為了實(shí)現(xiàn)正確的代入操作,必須要將代入的數(shù)據(jù)進(jìn)行類(lèi)型轉(zhuǎn)換。一般是用函數(shù)轉(zhuǎn)換法實(shí)現(xiàn)類(lèi)型轉(zhuǎn)換。例如:2.3.4類(lèi)型轉(zhuǎn)換
STD_LOGIC_VECTOR與INTEGER相互轉(zhuǎn)換的函數(shù),其對(duì)應(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.程序注釋
注釋從“--”符號(hào)開(kāi)始,到該行末尾結(jié)束。2.?dāng)?shù)字
VHDL語(yǔ)言數(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ù)表示法書(shū)寫(xiě)格式為:十進(jìn)制文字::=
整數(shù).[整數(shù)][指數(shù)](2)基表示二、八、十六進(jìn)制數(shù)的方法用“基”表示數(shù)的書(shū)寫(xiě)格式為: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中的字符為被單引號(hào)括起來(lái)的ASCII字符。其書(shū)寫(xiě)格式為:字符文字::=‘圖形字符’例如:‘A’‘’‘*’1514.字符串
VHDL中的字符串為被雙引號(hào)括起來(lái)的圖形字符序列,可以為空。其書(shū)寫(xiě)格式為:字符串::=“圖形字符”例如:“A”“”“string”152
位串是被雙引號(hào)括起來(lái)的擴(kuò)展數(shù)字序列,在數(shù)字序列前冠以基數(shù)說(shuō)明符。其書(shū)寫(xiě)格式為:
位串文字::=基數(shù)說(shuō)明符“位值”B為二進(jìn)制基說(shuō)明符,O為八進(jìn)制基說(shuō)明符,X為十六進(jìn)制基說(shuō)明符例如:B“1111_1101”X“DFC”O(jiān)“257”5.位串
位串的長(zhǎng)度等價(jià)于二進(jìn)制數(shù)的長(zhǎng)度。位值::=擴(kuò)展數(shù)字{或下劃線擴(kuò)展數(shù)字}1532.3.6運(yùn)算操作符
VHDL語(yǔ)言的操作符有5種:★邏輯運(yùn)算符(LOGICAL)★關(guān)系運(yùn)算符(RELATIONAL)★算術(shù)運(yùn)算符(ARITHMETIC)★并置運(yùn)算符(CONCATENATION)1.邏輯運(yùn)算符
在VHDL語(yǔ)言中,邏輯運(yùn)算符有7種:(課本P256)★移位運(yùn)算符(SHIFT)SYN154◆NOT——取反◆AND——與◆
OR——或◆
NAND——與非◆
NOR——或非◆
XOR——異或◆
XNOR——同或
在一個(gè)VHDL語(yǔ)句中存在兩個(gè)邏輯表達(dá)式時(shí),左右沒(méi)有優(yōu)先級(jí)差別(不包括NOT)。一個(gè)邏輯式中,先做括號(hào)里的運(yùn)算,再做括號(hào)外運(yùn)算。邏輯運(yùn)算符的書(shū)寫(xiě)格式為:(1)a<=bANDcANDdANDe;(2)a<=bORcORdORe;(3)a<=(bANDc)OR(dANDe);1552.算術(shù)運(yùn)算符
VHDL語(yǔ)言有10種算術(shù)運(yùn)算符:●+——加運(yùn)算●
-——減運(yùn)算●
*
——乘運(yùn)算●
/——除運(yùn)算●
REM——取余運(yùn)算●MOD——求模運(yùn)算●
+——正●
-——負(fù)●
**
——指數(shù)運(yùn)算●
ABS——取絕對(duì)值SYN156算術(shù)運(yùn)算符的使用規(guī)則如下:◆一元運(yùn)算的操作數(shù)(正、負(fù))可以是任何數(shù)值類(lèi)型(整數(shù)、實(shí)數(shù)、物理量)?!艏訙p運(yùn)算的操作數(shù)可以是整數(shù)、實(shí)數(shù)。對(duì)于加、減運(yùn)算的兩個(gè)操作數(shù)必須類(lèi)型相同。◆乘除的操作數(shù)可以同為整數(shù)和實(shí)數(shù),物理量乘或除以整數(shù)仍為物理量,物理量除以同一類(lèi)型的物理量即可得到一個(gè)整數(shù)量。◆求模和取余的操作數(shù)必須是同一整數(shù)類(lèi)型數(shù)據(jù)?!粢粋€(gè)指數(shù)的運(yùn)算符的左操作數(shù)可以是任意整數(shù)或?qū)崝?shù),而右操作數(shù)應(yīng)為一整數(shù)。1573.關(guān)系運(yùn)算符
VHDL語(yǔ)言中6種關(guān)系運(yùn)算:(1)=
——等于(2)/=
——不等于(3)<
——小于(4)<=
——小于等于(5)>
——大于(6)>=
——大于等于在VHDL程序設(shè)計(jì)中運(yùn)算符有如下規(guī)則:SYN158▼等號(hào)“=”和不等號(hào)“/=”可以適用所有類(lèi)型的數(shù)據(jù)。▼小于“<”、小于等于“<=”、大于“>”、大于等于“>=”適用于整數(shù)、實(shí)數(shù)、位矢量及數(shù)組類(lèi)型的比較。▼兩個(gè)位矢量類(lèi)型的對(duì)象比較時(shí),自左至右,按位比較。▼小于等于“<=”和代入“<=”是相同的,在讀VHDL語(yǔ)言的語(yǔ)句時(shí),要根據(jù)上下文關(guān)系來(lái)判斷。▼在進(jìn)行關(guān)系運(yùn)算時(shí),左右兩邊的操作數(shù)的數(shù)據(jù)類(lèi)型必須相同.1594.并置運(yùn)算符
并置運(yùn)算符“&”用于位的連接。并置運(yùn)算符有如下使用規(guī)則:◆并置運(yùn)算符可用于位的連接,形成位矢量.◆并置運(yùn)算符可用于兩位矢量的連接構(gòu)成更大的位矢量.◆位的連接也可以用集合體的方法,即將并置符換成逗號(hào).例如: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ù)類(lèi)型為BIT,BIT_VECTOR,BOOLEAN條件:1616.操作符的運(yùn)算優(yōu)先級(jí)
NOTABS***/MODREM+(positive)-(negative)+-&SLLSRLSLASRAROLROR=/=<<=>>=ANDORNANDNORXORXNOR高低1622.4、VHDL語(yǔ)法基礎(chǔ)
2.4.1并行語(yǔ)句
VHDL語(yǔ)言是并行處理語(yǔ)言,能夠進(jìn)行并行處理的語(yǔ)句有:Process-進(jìn)程語(yǔ)句ConcurrentSignalAssignment-并行信號(hào)賦值語(yǔ)句Block-塊語(yǔ)句ComponentInstantiation
-元件(例化)調(diào)用語(yǔ)句Generate-生成語(yǔ)句ConcurrentProcedureCall-并行過(guò)程調(diào)用語(yǔ)句ConcurrentStatements(課本P289)1631.進(jìn)程語(yǔ)句(Process)
進(jìn)程語(yǔ)句是并行處理語(yǔ)句,即各個(gè)進(jìn)程是同時(shí)處理的,在一個(gè)結(jié)構(gòu)體中多個(gè)Process語(yǔ)句是同時(shí)并發(fā)運(yùn)行的。Process語(yǔ)句具有如下特點(diǎn):(1)進(jìn)程結(jié)構(gòu)中的所有語(yǔ)句都是按順序執(zhí)行的。(2)多進(jìn)程之間,是并行執(zhí)行的,并可存取結(jié)構(gòu)體或?qū)嶓w中所定義的信號(hào)。(3)為啟動(dòng)進(jìn)程,在進(jìn)程結(jié)構(gòu)中必須包含一個(gè)顯式的敏感信號(hào)量表或者包含一個(gè)WAIT語(yǔ)句。(4)進(jìn)程之間的通信是通過(guò)信號(hào)量傳遞來(lái)實(shí)現(xiàn)的。164Process語(yǔ)句的一般書(shū)寫(xiě)結(jié)構(gòu)、組織形成為:[進(jìn)程名:]PROCESS[敏感信號(hào)表]
變量說(shuō)明語(yǔ)句:┆
BEGIN┆順序說(shuō)明語(yǔ)句┆
ENDPROCESS[進(jìn)程名];165[例:]由時(shí)鐘控制的進(jìn)程語(yǔ)句設(shè)計(jì)。ENTITYsync_deviceISPORT(ina,inb,clk:INBit;Outb:OUTBit);ENDsync_device;ARCHITECTUREexampleOFsync_deviceISBEGIN
P1:PROCESS(clk)
BEGIN
Outb<=inaandinb;
ENDPROCESSP1;ENDexample;166
GENERIC語(yǔ)句用于不同層次設(shè)計(jì)模塊之間信息的傳遞和參數(shù)的傳遞,可用于位矢量的長(zhǎng)度、數(shù)組的位長(zhǎng)等參數(shù)的傳遞。這些參數(shù)都是整數(shù)類(lèi)型,其他數(shù)據(jù)類(lèi)型不能綜合。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.并行信號(hào)賦值語(yǔ)句(CONCURRENTSIGNALASSIGNMENT)并行信號(hào)賦值語(yǔ)句有三種形式:(1)簡(jiǎn)單信號(hào)賦值語(yǔ)句(2)條件信號(hào)賦值語(yǔ)句(3)選擇信號(hào)賦值語(yǔ)句170(1)簡(jiǎn)單信號(hào)賦值語(yǔ)句簡(jiǎn)單信號(hào)賦值(信號(hào)代入)語(yǔ)句的格式如下:信號(hào)量<=敏感信號(hào)量表達(dá)式;
信號(hào)代入語(yǔ)句在進(jìn)程內(nèi)部使用時(shí),它作為順序語(yǔ)句的形式出現(xiàn);信號(hào)代入語(yǔ)句在結(jié)構(gòu)體的進(jìn)程之外使用時(shí),它作為并發(fā)語(yǔ)句的形式出現(xiàn)。一個(gè)并發(fā)信號(hào)代入語(yǔ)句是一個(gè)等效進(jìn)程的簡(jiǎn)略形式。例如:q<=c+d;process(c,d)beginq<=c+d;endprocess;171條件信號(hào)賦值語(yǔ)句的格式為:目標(biāo)信號(hào)<=表達(dá)式1WHEN
條件1ELSE
表達(dá)式2WHEN
條件2ELSE
表達(dá)式3WHEN
條件3ELSE┆
表達(dá)式nWHEN
條件nELSE
表達(dá)式n+1;
(2)條件信號(hào)賦值語(yǔ)句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語(yǔ)句176177選擇型信號(hào)賦值語(yǔ)句的格式為:WITH
表達(dá)式
SELECT目標(biāo)信號(hào)<=表達(dá)式1WHEN
條件1,
表達(dá)式2WHEN
條件2,
表達(dá)式3WHEN
條件3,┆
表達(dá)式nWHEN
條件n;注意!(3)選擇信號(hào)賦值語(yǔ)句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.塊語(yǔ)句
(Block)
塊(Block)是將結(jié)構(gòu)體中的并行語(yǔ)句組合在一起,其目的是改善并行語(yǔ)句及其結(jié)構(gòu)的可讀性,一般用于較復(fù)雜的VHDL程序中。但從綜合角度看,該語(yǔ)句沒(méi)有實(shí)用價(jià)值。標(biāo)號(hào):Block[(保護(hù)表達(dá)式)][塊說(shuō)明部分]
BEGIN
并行語(yǔ)句A;
并行語(yǔ)句B;┆
ENDBlock[塊標(biāo)號(hào)];標(biāo)號(hà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.元件例化語(yǔ)句(ComponentInstantiation)
一般把設(shè)計(jì)好的設(shè)計(jì)實(shí)體稱(chēng)為一個(gè)元件或一個(gè)模塊。VHDL中基本的設(shè)計(jì)層次是元件,它可作為其它模塊或更高層次模塊引用的底層模塊。
元件聲明是對(duì)VHDL模塊(即底層設(shè)計(jì),也是完整的VHDL設(shè)計(jì))的說(shuō)明,使之可在其他模塊中被調(diào)用。元件聲明可放在程序包中,也可放在某個(gè)設(shè)計(jì)的結(jié)構(gòu)體中進(jìn)行。
元件例化是指元件的調(diào)用,是將現(xiàn)成元件的端口信號(hào)映射成高層次設(shè)計(jì)電路中的信號(hào)。元件聲明及元件例化的語(yǔ)法分別如下:186元件聲明語(yǔ)句
(元件定義語(yǔ)句):元件例化語(yǔ)句:COMPONENT
元件名[IS]
GENERIC(類(lèi)屬表);
PORT(端口名表);ENDCOMPONENT
[元件名];例化名:元件名PORTMAP([端口名=>]連接端口名,...);位置關(guān)聯(lián)、名稱(chēng)關(guān)聯(lián)1875.生成語(yǔ)句(GENERATE)GENERATE語(yǔ)句用來(lái)產(chǎn)生多個(gè)相同的結(jié)構(gòu)和描述規(guī)則結(jié)構(gòu),如塊陣列,元件例化或進(jìn)程。GENERATE語(yǔ)句的兩種形式分別為:[標(biāo)號(hào):]FOR
循環(huán)變量IN
取值范圍GENERATE
說(shuō)明
BEGIN
并行語(yǔ)句
ENDGENERATE[標(biāo)號(hào)];[標(biāo)號(hào):]IF
條件
GENERATE
說(shuō)明
Begin
并行語(yǔ)句
ENDGENERATE[標(biāo)號(hào)];1886.并發(fā)過(guò)程調(diào)用語(yǔ)句(CONCURRENTPROCEDURECALL
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版賓館餐飲住宿租賃承包經(jīng)營(yíng)協(xié)議2篇
- 二零二五版獨(dú)資公司股權(quán)轉(zhuǎn)讓與產(chǎn)業(yè)鏈優(yōu)化協(xié)議3篇
- 2025年土石方運(yùn)輸車(chē)輛服務(wù)合同提供高效運(yùn)輸6篇
- 2025年消防工程勞務(wù)分包及消防安全培訓(xùn)合同3篇
- 2025年度高新技術(shù)產(chǎn)業(yè)協(xié)議付款補(bǔ)充協(xié)議(2025年度)3篇
- 二零二五版頂名購(gòu)置房產(chǎn)代持協(xié)議書(shū)3篇
- 2025年洗車(chē)店車(chē)輛安全檢查與保養(yǎng)承包協(xié)議3篇
- 2025年物業(yè)公司物業(yè)管理區(qū)域環(huán)境衛(wèi)生管理合同3篇
- 二零二五版電商平臺(tái)虛擬貨幣交易風(fēng)險(xiǎn)控制合同3篇
- 2025年農(nóng)村產(chǎn)權(quán)改建流轉(zhuǎn)協(xié)議
- 【智慧校園】-智慧校園系統(tǒng)方案
- 康佳液晶電視企業(yè)文化(課堂PPT)
- 個(gè)人養(yǎng)老金:是什么、怎么繳、如何領(lǐng)PPT個(gè)人養(yǎng)老金基礎(chǔ)知識(shí)培訓(xùn)PPT課件(帶內(nèi)容)
- 雞鴨屠宰生產(chǎn)企業(yè)安全風(fēng)險(xiǎn)分級(jí)管控資料
- 醫(yī)院感染管理組織架構(gòu)圖
- 《工程招投標(biāo)與合同管理》題庫(kù)試題及答案 共5套試卷
- 離子色譜法分析氯化物原始記錄 (1)
- 高等數(shù)學(xué)說(shuō)課稿PPT課件(PPT 49頁(yè))
- 造影劑腎病概述和性質(zhì)
- 單片機(jī)交通燈系統(tǒng)設(shè)計(jì)報(bào)告
- 標(biāo)桿房企人力資源體系研究之龍湖
評(píng)論
0/150
提交評(píng)論