




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)字系統(tǒng)設(shè)計(jì)1數(shù)字系統(tǒng)設(shè)計(jì)1第一章:數(shù)字系統(tǒng)設(shè)計(jì)方法2第一章:數(shù)字系統(tǒng)設(shè)計(jì)方法21.1數(shù)字系統(tǒng)范疇消費(fèi)類電子產(chǎn)品計(jì)算機(jī)通信汽車電子工業(yè)產(chǎn)品軍用產(chǎn)品31.1數(shù)字系統(tǒng)范疇消費(fèi)類電子產(chǎn)品3數(shù)字系統(tǒng)設(shè)計(jì)研究的內(nèi)容系統(tǒng)方案設(shè)計(jì)硬件設(shè)計(jì)前段信號(hào)處理邏輯控制單元輸出回路設(shè)計(jì)軟件設(shè)計(jì)系統(tǒng)調(diào)試產(chǎn)品化設(shè)計(jì)產(chǎn)品認(rèn)證4數(shù)字系統(tǒng)設(shè)計(jì)研究的內(nèi)容系統(tǒng)方案設(shè)計(jì)4數(shù)字系統(tǒng)技術(shù)現(xiàn)狀單片機(jī)技術(shù)DSP技術(shù)
DigitalSignalProcessor嵌入式系統(tǒng)ASIC技術(shù)
ApplicationSpecificIntegrationCircuits可編程ASIC技術(shù)CPLD/FPGA5數(shù)字系統(tǒng)技術(shù)現(xiàn)狀單片機(jī)技術(shù)5幾個(gè)基本概念EDAElectronicDesignAutomation
開(kāi)發(fā)平臺(tái)DevelopmentKit仿真技術(shù)SimulateTechnicalSOC片上系統(tǒng)SystemonChipIP知識(shí)產(chǎn)權(quán)模塊IntellectualProperty
SMTSurfersMatchTechnology6幾個(gè)基本概念EDAElectronicDesignAu單片機(jī)技術(shù)現(xiàn)狀RISC技術(shù)ReducedInstructionSetComputer外圍接口總線技術(shù)I2CCANBUS低功耗小型化嵌入式趨勢(shì)7單片機(jī)技術(shù)現(xiàn)狀RISC技術(shù)7嵌入式系統(tǒng)的定義(E)
專用計(jì)算機(jī)系統(tǒng)(非PC智能電子設(shè)備)以應(yīng)用為中心以計(jì)算機(jī)技術(shù)為基礎(chǔ)軟件硬件可裁剪適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求知識(shí)集成系統(tǒng)(CSEA)技術(shù)密集資金密集高度分散不可壟斷面向應(yīng)用不斷創(chuàng)新8嵌入式系統(tǒng)的定義(E)專用計(jì)算機(jī)系統(tǒng)(非PC智能電子設(shè)備)嵌入式系統(tǒng)的分類按表現(xiàn)形式分:(硬件范疇)芯片級(jí)嵌入(含程序或算法的處理器)模塊級(jí)嵌入(系統(tǒng)中的某個(gè)核心模塊)系統(tǒng)級(jí)嵌入按實(shí)時(shí)性要求分:(軟件范疇)非實(shí)時(shí)系統(tǒng)(PDA)軟實(shí)時(shí)系統(tǒng)(消費(fèi)類產(chǎn)品)硬實(shí)時(shí)系統(tǒng)(工業(yè)和軍工系統(tǒng))9嵌入式系統(tǒng)的分類按表現(xiàn)形式分:(硬件范疇)9嵌入式系統(tǒng)的基本要素嵌入式處理器系統(tǒng)嵌入式處理器各種類型存儲(chǔ)器模擬電路及電源接口控制器及接插件嵌入式軟件系統(tǒng)實(shí)時(shí)操作系統(tǒng)(RTOS)板級(jí)支持包(BSP)設(shè)備驅(qū)動(dòng)(DeviceDriver)協(xié)議棧(ProtocolStack)應(yīng)用程序(Application)10嵌入式系統(tǒng)的基本要素嵌入式處理器系統(tǒng)10嵌入式處理器嵌入式處理器的發(fā)展趨勢(shì)經(jīng)濟(jì)性(成本)微型化(封裝、功耗)智能化(功能、速度)嵌入式處理器的分類和現(xiàn)狀微控制器(MCU)微處理器(MPU)數(shù)字信號(hào)處理器(DSP)混合處理器和片上系統(tǒng)(SOC)可編程片上系統(tǒng)(SOPC)11嵌入式處理器嵌入式處理器的發(fā)展趨勢(shì)11硬件設(shè)計(jì)工具(EDA工具)系統(tǒng)級(jí)設(shè)計(jì)工具Cadence的SPWSystemView模擬電路系統(tǒng)仿真工具PspiceEWBPCB設(shè)計(jì)工具ProtelPADs的PowerPCB&ToolKitMentor的Expedition&ToolKit可編程邏輯器件設(shè)計(jì)工具M(jìn)entorFPGAAdvantage&ModelSimXilinxFoundationISE&ToolKit各種綜合和仿真第三方工具12硬件設(shè)計(jì)工具(EDA工具)系統(tǒng)級(jí)設(shè)計(jì)工具12最新進(jìn)展之:嵌入式Internet技術(shù)定義:嵌入式Internet是近幾年發(fā)展起來(lái)的一項(xiàng)新興概念和技術(shù),是指設(shè)備通過(guò)嵌入式模塊而非PC系統(tǒng)直接接入Internet,以Internet為介質(zhì)實(shí)現(xiàn)信息交互的過(guò)程,通常又稱為非PCInternet接入。應(yīng)用:
智能家居(家電上網(wǎng))工業(yè)遠(yuǎn)程監(jiān)控與數(shù)據(jù)采集InternetReconfigurableLogic(IRL)及其相關(guān)應(yīng)用等等13最新進(jìn)展之:嵌入式Internet技術(shù)定義:嵌入式Inter圖:嵌入式Internet應(yīng)用14圖:嵌入式Internet應(yīng)用14最新進(jìn)展之:可編程片上系統(tǒng)(SOPC)SOPC:可編程邏輯器件在嵌入式應(yīng)用中的完美體現(xiàn)SOPC的技術(shù)基礎(chǔ)超大規(guī)??删幊踢壿嬈骷捌溟_(kāi)發(fā)工具的成熟FPGA密度提高FPGA成本足以與ASIC抗衡FPGA設(shè)計(jì)、綜合、仿真、測(cè)試工具性能飛速提高微處理器核以IP的形式嵌入到FPGA中IPCore開(kāi)發(fā)理念的發(fā)展與深入人心信號(hào)處理算法、軟件算法模塊、控制邏輯等均可以IPCore形式體現(xiàn)目前已經(jīng)成熟的SOPC開(kāi)發(fā)平臺(tái):XilinxSpartanIIFPGA和MicroBlaze軟處理器IPCoreXilinxVirtexIIProFPGA和PowerPC硬處理器IPCoreAltera等其它FPGA和處理器IPCore15最新進(jìn)展之:可編程片上系統(tǒng)(SOPC)SOPC:可編程邏輯器圖:SOPC示例16圖:SOPC示例16goReaderInterneteBookSamsungAnyWebInternetScreenPhoneeRemoteIntelligentHomeControllerTektronixTDS7000DigitalOscilloscopesNixvueDigitalAlbumDigitalPhotoAlbum一些典型的嵌入式系統(tǒng)應(yīng)用實(shí)例返回17goReaderInterneteBookSamsun數(shù)字系統(tǒng)設(shè)計(jì)與仿真的層次系統(tǒng)設(shè)計(jì)的層次算法級(jí)----電路板級(jí)---芯片級(jí)設(shè)計(jì)與仿真方法EDA方法設(shè)計(jì)與仿真工具SystemViewMatlabOrCADProtelMaxplusFoundation
硬件仿真仿真板用戶版18數(shù)字系統(tǒng)設(shè)計(jì)與仿真的層次系統(tǒng)設(shè)計(jì)的層次算法級(jí)----電路板級(jí)1.2數(shù)系統(tǒng)字設(shè)計(jì)的一般步驟1.2.1引例1.2.2數(shù)字系統(tǒng)設(shè)計(jì)的基本步驟1.系統(tǒng)邏輯功能的確定(1)待設(shè)計(jì)系統(tǒng)信息、特征等。(2)控制信號(hào)的作用、格式及控制信號(hào)與輸入、輸出數(shù)據(jù)之間的關(guān)系。(3)數(shù)據(jù)處理或控制過(guò)程的技術(shù)指標(biāo)。191.2數(shù)系統(tǒng)字設(shè)計(jì)的一般步驟1.2.1引例192.系統(tǒng)的描述2.系統(tǒng)的描述3.算法的設(shè)計(jì):把系統(tǒng)的復(fù)雜運(yùn)算分解成一組有序進(jìn)行的子運(yùn)算。4.電路結(jié)構(gòu)選擇:尋求一個(gè)可以實(shí)現(xiàn)上述算法的電路結(jié)構(gòu)。202.系統(tǒng)的描述2.系統(tǒng)的描述20設(shè)計(jì)與仿真的層次設(shè)計(jì)層次時(shí)序單位基本單元功能描述系統(tǒng)級(jí)數(shù)據(jù)處理進(jìn)程及通信自然語(yǔ)言算法級(jí)運(yùn)算步運(yùn)算的控制行為有限狀態(tài)機(jī)、控制流圖寄存器級(jí)時(shí)鐘周期寄存器、運(yùn)算、變換布爾方程、布爾有限狀態(tài)機(jī)門(mén)級(jí)延時(shí)邏輯門(mén)、器件原理圖電路級(jí)物理時(shí)間晶體管、R、L、C電壓、電流的微分方程版圖級(jí)幾何圖形21設(shè)計(jì)與仿真的層次設(shè)計(jì)層次時(shí)序單位基本單元功能描述系統(tǒng)級(jí)數(shù)據(jù)處可編程ASIC技術(shù)22可編程ASIC技術(shù)22可編程ASIC技術(shù)可編程ASIC技術(shù)概論Altera可編程ASIC器件Xilinx可編程ASIC器件23可編程ASIC技術(shù)可編程ASIC技術(shù)概論23電子設(shè)計(jì)自動(dòng)化ElectronicDesigeAutomation(EDA)CAE(前端)CAD(后端)ViewlogicVHDLSummitVHDLSynopsysVHDLCadenceVerilogHDLOrCADDataI/OAbelCOMPASSASIC配置文件XilinxFoundationAlteraMAX+PlusIILatticePDS+AMDMicrosimPilkingtonFPAAFPMA24電子設(shè)計(jì)自動(dòng)化ElectronicDesigeAutom集成電路的發(fā)展是從小規(guī)?!幸?guī)?!笠?guī)模—超大規(guī)模,發(fā)展的方向是兩方面:通用集成電路,專用集成電路定制半定制1.標(biāo)準(zhǔn)單元2.門(mén)陣列3.可編程邏輯器件編程方式:1.一次編程熔絲開(kāi)關(guān),反熔絲開(kāi)關(guān)2.多次編程浮柵編程3.無(wú)限次編程基于SRAM編程元件1.靜態(tài)存儲(chǔ)器2.反熔絲開(kāi)關(guān)3.浮柵編程技術(shù):浮柵,疊柵,電可改寫(xiě),閃速存儲(chǔ)單元
25集成電路的發(fā)展是從小規(guī)?!幸?guī)模—大規(guī)?!現(xiàn)PGA與PAL的比較1.FPGA有更多的I/O管腳,多達(dá)幾百條,不會(huì)出現(xiàn)PAL邏輯沒(méi)有使用完之前,I/O已經(jīng)用完;2.有更多的觸發(fā)器,可以構(gòu)造許多的寄存器和計(jì)數(shù)器;3.可以構(gòu)成系統(tǒng)級(jí)特性,如數(shù)據(jù)總線等;4.可以集成多個(gè)PAL以上;5.減少印刷板面積,降低系統(tǒng)成本;6.降低功耗;7.系統(tǒng)有較少的元件在印刷板上,可靠性增加;8.可編程和可再利用性,PAL只能一次編程,FPGA和CPLD多次編程;9.加密能力增加。26FPGA與PAL的比較1.FPGA有更多的I/O管腳,多達(dá)幾CPLD和FPGA與TTL電路的比較1.CPLD和FPGA相當(dāng)于20到500以上個(gè)TTL電路集成到一個(gè)器件內(nèi),有較高的密度;2.設(shè)計(jì)者以自己的設(shè)計(jì)方法設(shè)計(jì)所需的邏輯系統(tǒng),所以增加了靈活性;3.集成之后,可以顯著改善系統(tǒng)的可靠性;4.可以方便地通過(guò)計(jì)算機(jī)軟件平臺(tái),對(duì)所設(shè)計(jì)的系統(tǒng)進(jìn)行修改和仿真,不用對(duì)印刷板進(jìn)行修改;5.系統(tǒng)集成到可編程邏輯器件以后,可減少印刷板的層次和縮小印刷板的面積。27CPLD和FPGA與TTL電路的比較1.CPLD和FPGA相CPLD和FPGA與定制比較1.前者較后者有較低的開(kāi)發(fā)和設(shè)計(jì)成本,可以在辦公室的PC機(jī)上進(jìn)行設(shè)計(jì),配置到芯片;2.前者是可編程的,風(fēng)險(xiǎn)能降低到最小,后者每次的修改設(shè)計(jì),用于定制掩模的費(fèi)用多達(dá)幾萬(wàn)到幾十萬(wàn)人民幣;3.前者可再編程的時(shí)間是很短的,省去了定制掩模范投片制造帶來(lái)的時(shí)間延誤;4.前者可再編程特性,可以做到出廠前器件100%測(cè)試,保證了器件的質(zhì)量;5.對(duì)大量的產(chǎn)品,為降低成本,前者很容易轉(zhuǎn)到固定連線的門(mén)陣列。28CPLD和FPGA與定制比較1.前者較后者有較低的開(kāi)發(fā)和設(shè)計(jì)2929主要EDA設(shè)計(jì)工具和網(wǎng)址公司名稱軟件名稱網(wǎng)址XilinxFoundationAllianceAlteraMaxplusIIQuartusDataI/OSysnarioTasklink
CadenceDesignSystemsComposerFPGASolution
MentorGraphicsFPGAStation
SynopsysFPGAExpressVHDLSystemSimulate
ViewlogicPowerviewToolsLatticeExpertSynario30主要EDA設(shè)計(jì)工具和網(wǎng)址公司名稱軟件名稱網(wǎng)址Xilinx掌握要點(diǎn)數(shù)字系統(tǒng)設(shè)計(jì)的內(nèi)容是什么?電子系統(tǒng)的主要設(shè)計(jì)方法有哪些?什么是EDA技術(shù)?電子系統(tǒng)設(shè)計(jì)與仿真的幾個(gè)層次是什么?你知道哪些主流設(shè)計(jì)工具?怎樣在不同系統(tǒng)選擇不同的設(shè)計(jì)方案?31掌握要點(diǎn)數(shù)字系統(tǒng)設(shè)計(jì)的內(nèi)容是什么?31練習(xí)一上網(wǎng)查找EDA相關(guān)網(wǎng)站及相關(guān)設(shè)計(jì)、仿真工具重點(diǎn)查找網(wǎng)站
/
32練習(xí)一上網(wǎng)查找EDA相關(guān)網(wǎng)站及相關(guān)設(shè)計(jì)、仿真工具323333343435353636373738383939404041414242434344444545464647474848494950505151525253535454555556565757585859596060616162626363646465656666676768686969707071717272737374747575767677777878797980808181SMI82SMI828383848485858686878788888989909091919292939394949595969697979898999910010011011101102102103103104104105105106106107107108108109109110110111111112112113113114114115115116116117117118118119119120120121121122122123123124124125125126126127127128128129129130130131131132132133133134134135135136136137137138138139139可編程ASIC的設(shè)計(jì)方法原理圖方法HDL(VHDL、ABEL、Verilog)狀態(tài)機(jī)波形圖功能模塊設(shè)計(jì)IP調(diào)用140可編程ASIC的設(shè)計(jì)方法原理圖方法140141141
傳統(tǒng)的電路系統(tǒng)設(shè)計(jì)方法的步驟從狀態(tài)圖的簡(jiǎn)化,寫(xiě)出最簡(jiǎn)邏輯表達(dá)式,到繪出電路原理圖。這在不是較大的電路系統(tǒng)中,工程師可以用一定的時(shí)間,了解電路的原理。若電路系統(tǒng)非常龐大,工程師就不容易在電路原理圖上了解電路的原理,而且對(duì)繪圖者也是一項(xiàng)非常煩瑣的工作。因此眾多軟件公司開(kāi)發(fā)研制了具有自己特色的電路硬件描述語(yǔ)言(HardwareDescriptionLanguage,HDL),這些硬件描述語(yǔ)言必然有很大的差異,工程師一旦選用某種硬件描述語(yǔ)言作為輸入工具,就被束縛在這個(gè)硬件設(shè)計(jì)環(huán)境之中,不能在眾多的軟件工具中選擇一個(gè)最佳組合作為自己的最優(yōu)設(shè)計(jì)環(huán)境。因此,硬件設(shè)計(jì)工程師需要一種強(qiáng)大的、標(biāo)準(zhǔn)化的硬件描述語(yǔ)言,作為可相互交流的設(shè)計(jì)環(huán)境。142傳統(tǒng)的電路系統(tǒng)設(shè)計(jì)方法的步驟從狀態(tài)圖的簡(jiǎn)化,寫(xiě)美國(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,稱之為VHSICHardwareDescriptionLanguage,簡(jiǎn)稱為VHDL,這種語(yǔ)言的成就有兩個(gè)方面:1.描述復(fù)雜的電路系統(tǒng);
2.VHDL成為硬件描述語(yǔ)言的標(biāo)準(zhǔn)。143美國(guó)國(guó)防部在80年代初提出了VHSIC(VeryHVHDL的主要優(yōu)點(diǎn)是:1.覆蓋面廣,描述能力強(qiáng),是一個(gè)多層次的硬件描述語(yǔ)言。即設(shè)計(jì)的原始描述可以是非常簡(jiǎn)練的描述,經(jīng)過(guò)層層細(xì)化求精,最終成為可直接付諸生產(chǎn)的電路級(jí)或版圖參數(shù)描述,整個(gè)過(guò)程都可以在VHDL的環(huán)境下進(jìn)行。2.VHDL有良好的可讀性,即可以被計(jì)算機(jī)接受,也容易被理解。用VHDL書(shū)寫(xiě)的原文件,即是程序,又是文檔,即是技術(shù)人員之間交換信息的文件,又可作為合同簽約者之間的文件。3.VHDL本身的生命期長(zhǎng),因?yàn)閂HDL的硬件描述與工藝技術(shù)無(wú)關(guān),不會(huì)因工藝變化而使描述過(guò)時(shí)。與工藝技術(shù)有關(guān)的參數(shù)可通過(guò)VHDL提供的屬性加以描述,工藝改變時(shí),只需修改相應(yīng)程序中的屬性參數(shù)即可。144VHDL的主要優(yōu)點(diǎn)是:1.覆蓋面廣,描述能力強(qiáng)4.支持大規(guī)模設(shè)計(jì)的分解和已有設(shè)計(jì)的再利用,一個(gè)大規(guī)模設(shè)計(jì)不可能一個(gè)人獨(dú)立完成,它將由多人,多項(xiàng)目組來(lái)共同完成。VHDL為設(shè)計(jì)的分解和設(shè)計(jì)的再利用提供了有力的支持。VHDL的主要優(yōu)點(diǎn)是:5.VHDL已成為IEEE承認(rèn)的一個(gè)工業(yè)標(biāo)準(zhǔn),事實(shí)上已成為通用硬件描述語(yǔ)言。1454.支持大規(guī)模設(shè)計(jì)的分解和已有設(shè)計(jì)的再利用,一個(gè)大第一節(jié)VHDL的基本組成VHDL可以把任意復(fù)雜的電路系統(tǒng)視作一個(gè)模塊,一個(gè)模塊可主要分為三個(gè)組成部分:每個(gè)模塊中的程序包有IEEE標(biāo)準(zhǔn)的標(biāo)準(zhǔn)程序包或設(shè)計(jì)者自身設(shè)計(jì)的程序包,而且調(diào)用的數(shù)量不限。模塊中的程序包是設(shè)計(jì)中的子程序和公用數(shù)據(jù)類型的集合,是構(gòu)成設(shè)計(jì)工具的工具箱,工具箱中最基本的工具是數(shù)據(jù)類型包,調(diào)用此標(biāo)準(zhǔn)程序包的VHDL語(yǔ)言是:一、參數(shù)部分——程序包146第一節(jié)VHDL的基本組成VHDL可以把任例1:LIBRARYieee;USEieee.std_logic_1164.all;調(diào)用程序包語(yǔ)句標(biāo)準(zhǔn)程序包定義程序包這兩句設(shè)置在VHDL程序的前面,表示以后在實(shí)體或結(jié)構(gòu)體中要用到數(shù)據(jù)類型包中的數(shù)據(jù)類型。147例1:LIBRARYieee;USEieee.std模塊中僅有一個(gè)設(shè)計(jì)實(shí)體,它提供該設(shè)計(jì)模塊的公共信息,是VHDL設(shè)計(jì)電路的最基本部分。VHDL設(shè)計(jì)的電路系統(tǒng)是可以分層次的,所以設(shè)計(jì)的模塊系統(tǒng)實(shí)體即可以是頂層實(shí)體,又可以是最底層實(shí)體。二、接口部分—設(shè)計(jì)實(shí)體:調(diào)用程序包語(yǔ)句標(biāo)準(zhǔn)程序包定義程序包實(shí)體及實(shí)體聲明語(yǔ)句ENTITYkxorISkxorPORT(a1,b1:INstd_logic;a1b1c1:OUTstd_logic);c1ENDkxor;例2148模塊中僅有一個(gè)設(shè)計(jì)實(shí)體,它提供該設(shè)計(jì)模塊的公共實(shí)體部分的大寫(xiě)單詞ENTITY、IS、PORT、IN、OUT和END為關(guān)鍵字。在ENTITY...END之間表示實(shí)體內(nèi)容,ENTITY后的字符串kxor表示實(shí)體的名稱,即電路的符號(hào)名。端口(引腳)信息關(guān)鍵字PORT中的語(yǔ)句有三個(gè)端口,描述了信號(hào)的流向,分別是兩個(gè)輸入(IN)模式a1和b1,一個(gè)是輸出(OUT)模式c1,端口信息除了輸入輸出之外,還可以是雙向、緩沖器等。std_logic表示信號(hào)取值的類型為標(biāo)準(zhǔn)邏輯位,除了標(biāo)準(zhǔn)邏輯位之外,還可以是實(shí)數(shù)、整數(shù)、無(wú)符號(hào)數(shù)、物理以及以上數(shù)據(jù)類型組成的記錄和數(shù)組集合,信號(hào)類型也可以是設(shè)計(jì)者定義。149實(shí)體部分的大寫(xiě)單詞ENTITY、IS、PORT三、描述部分—結(jié)構(gòu)體:當(dāng)異或門(mén)的符號(hào)和外部端口a1、b1和c1確定之后,就要確定實(shí)體的內(nèi)部電路,使之與實(shí)體相對(duì)應(yīng)。電路描述部分稱之為結(jié)構(gòu)體ARCHITECTURE,它描述實(shí)體硬件的互連關(guān)系、數(shù)據(jù)的傳輸和變換以及動(dòng)態(tài)行為。一個(gè)實(shí)體可以對(duì)應(yīng)多個(gè)結(jié)構(gòu)體,每個(gè)結(jié)構(gòu)體可以代表該硬件的某一方面特性,例如行為特性,結(jié)構(gòu)特性。調(diào)用程序包語(yǔ)句標(biāo)準(zhǔn)程序包定義程序包實(shí)體及實(shí)體聲明語(yǔ)句結(jié)構(gòu)體1結(jié)構(gòu)體2結(jié)構(gòu)體nARCHITECTUREkxor_arcOFkxorIS例3BEGIN
c1<=(NOTa1ANDb1)OR(a1AND
NOTb1);ENDkxor_arc;150三、描述部分—結(jié)構(gòu)體:當(dāng)異或門(mén)的符號(hào)和外部端口akxora1b1c1a1b1c1151kxora1b1c1a1b1c1151第二節(jié)VHDL數(shù)據(jù)類型
和屬性VHDL硬件描述語(yǔ)言中涉及到了許多信號(hào),變量和常量,它們用來(lái)保持一個(gè)數(shù)據(jù)。保持?jǐn)?shù)據(jù)的信號(hào),變量和常量,在VHDL中稱為目標(biāo),每一個(gè)目標(biāo)都有一個(gè)數(shù)據(jù)類型確定目標(biāo)保持的那一類數(shù)據(jù)。VHDL是一種非常嚴(yán)格的數(shù)據(jù)類型化語(yǔ)言,規(guī)定每個(gè)信號(hào),常量或變量和每個(gè)表達(dá)式有一個(gè)唯一的確定數(shù)據(jù)類型,一般說(shuō),在表達(dá)式中分配數(shù)值給目標(biāo)時(shí)的數(shù)據(jù)類型不可以被混用。每個(gè)目標(biāo)和表達(dá)式的類型靜態(tài)地確定。152第二節(jié)VHDL數(shù)據(jù)類型
和屬性VHDL硬件描在VHDL中有三類目標(biāo):信號(hào)、變量和常量。信號(hào)和變量可以賦予一系列的值,而常量一次僅被分配一個(gè)值。變量和信號(hào)又有不同,賦予信號(hào)的數(shù)值要到未來(lái)的某個(gè)時(shí)刻,信號(hào)才接受當(dāng)前的數(shù)值,而賦予變量的數(shù)值,變量立即接受當(dāng)前的數(shù)值。目標(biāo)的一般形式如下:<目標(biāo)種類><目標(biāo)<,目標(biāo)...>>:<目標(biāo)類型>:=<表達(dá)式>;153在VHDL中有三類目標(biāo):信號(hào)、變量和常量。信目標(biāo):是一個(gè)或多個(gè)代表著目標(biāo)種類的字符串,多個(gè)目
標(biāo)時(shí)用“,”號(hào)分開(kāi)。<目標(biāo)種類><目標(biāo)<,目標(biāo)...>>:<目標(biāo)類型>:=<表達(dá)式>;目標(biāo)種類:信號(hào)、變量和常量。信號(hào):它可以表示把元件的端口連接在一起的互連線。
變量:用于對(duì)暫時(shí)數(shù)據(jù)的局部存儲(chǔ),變量只在進(jìn)程和子
程序內(nèi)部定義。
常量:對(duì)某些特定類型數(shù)據(jù)賦予的數(shù)值。表達(dá)式:表達(dá)式是為了規(guī)定目標(biāo)的初始值,這是缺省部分。目標(biāo)類型:為了規(guī)定目標(biāo)的特征,VHDL含有很寬范圍的數(shù)據(jù)類型。VHDL除了有基本的數(shù)據(jù)類型之外,設(shè)計(jì)者還可以建立自己新的數(shù)據(jù)類型,類型說(shuō)明部分規(guī)定類型名和類型范圍,它的一般形式是:154目標(biāo):是一個(gè)或多個(gè)代表著目標(biāo)種類的字符串,多個(gè)目
TYPE<類型名>IS<類型范圍>;標(biāo)量類型、復(fù)合類型、子類型、文件類型和尋址類型。標(biāo)量類型包括所有的簡(jiǎn)單類型:如整數(shù)、實(shí)數(shù)等復(fù)合類型包括數(shù)組和記錄尋址類型在一般編輯語(yǔ)言中等價(jià)為指針文件類型用設(shè)計(jì)者定義的文件類型為設(shè)計(jì)者提供說(shuō)明的文件對(duì)象子類型主要是對(duì)現(xiàn)有類型加以限制VHDL可用數(shù)據(jù)類型有五類:155TYPE<類型名>IS<類型范圍>;標(biāo)量類一、標(biāo)量數(shù)據(jù)類型標(biāo)量數(shù)據(jù)類型是基本的數(shù)據(jù)類型,它包括整數(shù)類型、實(shí)數(shù)類型、物理類型和枚舉類型。一個(gè)目標(biāo)的數(shù)值有可能經(jīng)常更換或者說(shuō)是包含多個(gè)值,但一個(gè)目標(biāo)一次只能被一種類型說(shuō)明。物理類型要提供一個(gè)基本單位,然后在這個(gè)基本單位上定義多個(gè)或零個(gè)次級(jí)單位,每個(gè)次級(jí)單位都是基本單位的整數(shù)倍。枚舉類型在形式上是定義括弧括起來(lái)的字符串文字表,一個(gè)字符串文字在枚舉類型定義中只能出現(xiàn)一次,但允許同樣一個(gè)字符串文字出現(xiàn)在不同的枚舉類型的字符串文字表中,枚舉類型的字符串文字表中的文字是由設(shè)計(jì)者定義的,這些字母可以是單個(gè)字母,也可以是一個(gè)字符串,例如BREAKFAST,Lunch,a等。
156一、標(biāo)量數(shù)據(jù)類型標(biāo)量數(shù)據(jù)類型是基本的數(shù)據(jù)類型,它包括整數(shù)類
下面舉兩個(gè)VHDL程序加深理解標(biāo)量類型的使用。PACKAGEscaleIS
TYPEcurrentISRANGE0TO1000000000;
UNITS
na;
ua=1000na;
ma=1000ua;
a=1000ma;
ENDUNITS;
TYPEloadIS(small,med,big);
ENDscale;例1:USEwork.scale.all;
ENTITYscale1IS
PORT(out1:OUTcurrent;
load1:INload;
ENDscale1;157
下面舉兩個(gè)VHDL程序加深理解標(biāo)量類型的使用。PACKAARCHITECTUREscale1_arcOFscale1IS
SIGNALa1:REAL;
BEGIN
a1<=1.0;--OK
a1<=1;--Error
a1<=-1.0E10;--OK
a1<=2.5E-20;--OK
a1<=-1E+8;--Error
a1<=5.3ns;--Error158ARCHITECTUREscale1_arcOFscaPROCESS(a)
VARIABLEb:INTEGER;
BEGIN
b:=-1;--OK
b:=1.0;--Error
ENDPROCESS;
out1<=100uaWHEN(load1=small)ELSE
1maWHEN(load1=med)ELSE
10maWHEN(load1=big)ELSE
100ua;
ENDscale1_arc;159PROCESS(a)
VARIABLEb:INTEPACKAGEmeals_pkgIS
TYPEmealIS(breakfast,lunch,dinner);
ENDmeals_pkg;例2:USEwork.meals_pkg.all;
ENTITYmealsIS
PORT(previous_meal:INmeal;
next_meal:OUTmeal);
ENDmeals;ARCHITECTUREmeals_arcOFmealsIS
BEGIN
WITHprevious_mealSELECT
next_meal<=breakfastWHENdinner,
lunchWHENbreakfast,
dinnerWHENlunch;
ENDmeals_arc;160PACKAGEmeals_pkgIS
TYPEmea二、復(fù)合數(shù)據(jù)類型復(fù)合類型是由數(shù)組類型和記錄類型組成,它們的元素是標(biāo)量類型的元素。數(shù)組類型是由相同的標(biāo)量元素組成,即同構(gòu)復(fù)合類型,數(shù)組可以是一維二維或多維。例如TYPEmatrixIS
ARRAY(row,column)OFstd_logic;
TYPEr_maISARRAY(1TO10,1TO40)OFstd_logic;TYPEwordISARRAY(15DOWNTO0)OFBIT;TYPEcolumnISRANGE1TO40;TYPErowISRANGE1TO10;CONSTANTROM:BIT_VECTOR(0TO15);161二、復(fù)合數(shù)據(jù)類型復(fù)合類型是由數(shù)組類型和記錄類型組ARCHITECTURErom_arcOFromIS
BEGIN
PROCESS(cs,x1,x2,x3,x4)
VARIABLEn:NATURAL
RANGE0TO15;
CONSTANTrom0:std_logic_vector(0TO15):=“0101010101010101”;
CONSTANTrom1:std_logic_vector(0TO15):=“0011001100110011”;
CONSTANTrom2:std_logic_vector(0TO15):=“0000111100001111”;
CONSTANTrom3:std_logic_vector(0TO15):=“0000000011111111”;下面舉一個(gè)VHDL程序說(shuō)明一維數(shù)組實(shí)現(xiàn)16×4的ROM。LIBRARYieee;USEieee.std_logic_1164.all;ENTITYromISPORT(cs,x1,x2,x3,x4:INstd_logic;d0,d1,d2,d3:OUTstd_logic);ENDrom;162ARCHITECTURErom_arcOFromIS
BEGIN
IFcs=‘1’THEN
n:=0;
IFx1=‘1’THENn:=n+1;ENDIF;
IFx2=‘1’THENn:=n+2;ENDIF;
IFx3=‘1’THENn:=n+4;ENDIF;
IFx4=‘1’THENn:=n+8;ENDIF;
d0<=rom0(n)AFTER10ns;
d1<=rom1(n)AFTER10ns;
d2<=rom2(n)AFTER10ns;
d3<=rom3(n)AFTER10ns;
ELSE
d0<=‘Z’AFTER10ns;
d1<=‘Z’AFTER10ns;
d2<=‘Z’AFTER10ns;
d3<=‘Z’AFTER10ns;
ENDIF;
ENDPROCESS;
ENDrom_arc;163BEGIN
IFcs=‘1’THEN
在結(jié)構(gòu)體說(shuō)明區(qū)(ARCHITECTURE和BEGIN之間)被說(shuō)明的目標(biāo),僅可以在此結(jié)構(gòu)體中引用或在結(jié)構(gòu)體中的任何進(jìn)程語(yǔ)句中被引用,稱此目標(biāo)為局部信號(hào)。數(shù)據(jù)類型的全局化和局部化前面已經(jīng)討論VHDL描述語(yǔ)言的組成是由程序包、實(shí)體、結(jié)構(gòu)體(結(jié)構(gòu)體中有進(jìn)程)、以及子程序而組成,不同的目標(biāo)可以在指定的組成部分內(nèi)加以說(shuō)明。如果一個(gè)目標(biāo)在實(shí)體說(shuō)明部分被說(shuō)明,那么在本實(shí)體和本實(shí)體內(nèi)部的任何結(jié)構(gòu)體和任何進(jìn)程中都可以引用在實(shí)體中說(shuō)明的目標(biāo),稱為全局信號(hào);164在結(jié)構(gòu)體說(shuō)明區(qū)(ARCHITECTURE和BEGINVHDL中不同的目標(biāo)和類型規(guī)定在不同的構(gòu)造中可以被說(shuō)明。
信號(hào):實(shí)體、結(jié)構(gòu)體說(shuō)明區(qū)、程序包和子程序。
變量:進(jìn)程語(yǔ)句說(shuō)明區(qū)和子程序。
常量:實(shí)體、結(jié)構(gòu)體、進(jìn)程語(yǔ)句說(shuō)明區(qū)和程序包和子程序。
標(biāo)量類型:實(shí)體、結(jié)構(gòu)體、進(jìn)程語(yǔ)句說(shuō)明區(qū)和程序包和子程序。
復(fù)合類型:實(shí)體、結(jié)構(gòu)體、進(jìn)程語(yǔ)句說(shuō)明區(qū)和程序包和子程序。文件類型:子程序和進(jìn)程語(yǔ)句說(shuō)明區(qū)。
尋址類型:進(jìn)程語(yǔ)句說(shuō)明區(qū)。165VHDL中不同的目標(biāo)和類型規(guī)定在不同的構(gòu)造中可以被說(shuō)明。
VHDL的屬性VHDL中的屬性使得VHDL程序更加簡(jiǎn)明扼要,更加容易理解,VHDL的屬性在時(shí)序程序中幾乎處處可見(jiàn),如值類屬性的左邊界、右邊界、上下邊界以及值類屬性的長(zhǎng)度,還可以檢測(cè)信號(hào)上升沿和下降沿以及前一次發(fā)生的事件等等。VHDL的屬性可歸納為,信號(hào)類屬性、函數(shù)類屬性、值類屬性、類型類屬性和范圍類屬性。本節(jié)介紹值類屬性及函數(shù)信號(hào)類屬性。166VHDL的屬性VHDL中的屬性使得VHDL程序更TYPEbitISARRAY(63DOWNTO32)OFBIT;
VARIABLEleft_range,right_range,uprange,lowrange:INTEGER;
BEGIN
left_range:=bit’LEFT;--returns63
right_range:=bit’RIGHT;--returns32
uprange:=bit’HIGH;--returns63
lowrange:=bit’LOW;--returns32值類屬性:值類屬性用于返回?cái)?shù)組的邊界或長(zhǎng)度,首先舉一例數(shù)組邊界的例子說(shuō)明類型屬性。例8:167TYPEbitISARRAY(63DOWNTO32TYPEbitISARRAY(0TO7)OFBIT;
TYPEbit1ISARRAY(8TO31)OFBIT;
VARIABLElen1,len2:INTEGER;
BEGIN
len1:=bit’LENGTH;--return8
len2:=bit1’LENGTH;--return24下面再舉一個(gè)值類數(shù)組屬性的例子,讓其返回?cái)?shù)組范圍的總長(zhǎng)度。例:168TYPEbitISARRAY(0TO7)OFB它可用來(lái)檢查一個(gè)信號(hào)的變化,并且變化剛剛發(fā)生,既推斷出在信號(hào)上發(fā)生了一個(gè)跳變。函數(shù)信號(hào)屬性:函數(shù)信號(hào)屬性用來(lái)返回有關(guān)信號(hào)行為功能的信息,它反映一個(gè)信號(hào)是否正好有值的變化或事件的發(fā)生,如clk’EVENT,這個(gè)屬性為“EVENT”,對(duì)檢查時(shí)鐘邊沿觸發(fā)是很有效的。下面舉一個(gè)例子,說(shuō)明函數(shù)信號(hào)屬性的用法IFclk=‘1’ANDclk’EVENT
THEN
q<=d;
ENDIF;上述語(yǔ)句中用到了函數(shù)信號(hào)屬性clk’EVENT,說(shuō)明如果時(shí)鐘信號(hào)clk為高電平,并且事件剛剛發(fā)生,也就是說(shuō)是時(shí)鐘上升沿有效,此時(shí)q得到d的信號(hào)。169它可用來(lái)檢查一個(gè)信號(hào)的變化,并且變化剛剛發(fā)生,既推第三節(jié)VHDL的行為描述在VHDL硬件描述語(yǔ)言中,描述電路邏輯的程序稱為行為描述,行為描述有并行行為描述、進(jìn)程行為描述和順序行為描述。三個(gè)行為即可以是相互獨(dú)立,成為單一的行為描述體,又可以相互聯(lián)系,成為混合描述體,如進(jìn)程行為描述行為之間是并行行為,進(jìn)程行為體的內(nèi)部是順序行為。170第三節(jié)VHDL的行為描述在VHD一、VHDL的并行行為在典型的編程語(yǔ)言如C或Pascal中,每個(gè)賦值語(yǔ)句按規(guī)定的次序,一個(gè)接在另一個(gè)之后順序執(zhí)行,執(zhí)行的次序由源文件決定。在VHDL中,結(jié)構(gòu)體的內(nèi)部沒(méi)有規(guī)定語(yǔ)句的次序,執(zhí)行的次序僅由對(duì)語(yǔ)句中的敏感信號(hào)發(fā)生的事件決定,且語(yǔ)句是同時(shí)執(zhí)行,產(chǎn)生其并行型。結(jié)構(gòu)體中并行賦值語(yǔ)句的一般格式如下:<對(duì)象><=<表達(dá)式>該一般形式讀作對(duì)象得到表達(dá)式的值,其作用是將表達(dá)式的信號(hào)值分配給對(duì)象,也就是說(shuō)每當(dāng)表達(dá)式的信號(hào)值變化時(shí)執(zhí)行該語(yǔ)句。每個(gè)表達(dá)式都至少有一個(gè)敏感信號(hào),每當(dāng)敏感信號(hào)改變其值時(shí),這個(gè)信號(hào)賦值語(yǔ)句就執(zhí)行,171一、VHDL的并行行為在典型的編程語(yǔ)言如C或在所有的并行語(yǔ)句中,兩個(gè)以上的并行賦值語(yǔ)句在字面上的順序并不表明它們的執(zhí)行順序,例如下面的兩個(gè)結(jié)構(gòu)體在功能上是等價(jià)的。ENTITYexeIS
PORT(a1,a2:INBIT;
b1,b2:OUTBIT);
ENDexe;ARCHITECTUREexe_arc1OFexeIS
BEGIN
b1<=a1ANDb2;
b2<=NOTa1ORa2;
ENDexe_arc1;ARCHITECTUREexe_arc2OFexeIS
BEGIN
b2<=NOTa1ORa2;
b1<=a1ANDb2;
ENDexe_arc2;a1a2b1b2172在所有的并行語(yǔ)句中,兩個(gè)以上的并行賦值語(yǔ)句在字面上另一種并行信號(hào)賦值語(yǔ)句是選擇信號(hào)賦值語(yǔ)句,它們的每一個(gè)賦值語(yǔ)句都需要給出一個(gè)表達(dá)式,同時(shí)給出與該表達(dá)式的每個(gè)可能值相關(guān)聯(lián)的信號(hào)選擇信號(hào)賦值語(yǔ)句的一般形式如下:
WITH<表達(dá)式>SELECT
<對(duì)象><=<信號(hào)1>WHEN<分支1>,
<信號(hào)2>WHEN<分支2>,
<信號(hào)n>WHEN<分支n>;173另一種并行信號(hào)賦值語(yǔ)句是選擇信號(hào)賦值語(yǔ)句,它一個(gè)典型的四路數(shù)據(jù)選擇器的VHDL程序說(shuō)明WITH一般形式的用法ENTITYselsIS
PORT(d0,d1,d2,d3:INBIT;
s:ININTEGERRANGE0TO3;
out1:OUTBIT);
ENDsels;ARCHITECTUREsels_arcOFselsISBEGIN
WITHsSELECT
out1<=d0WHEN0,
d1WHEN1,
d2WHEN2,
d3WHEN3;
ENDsels_arc;d0d1d2d3sout1sels174一個(gè)典型的四路數(shù)據(jù)選擇器的VHDL程序說(shuō)明W仍以四路數(shù)據(jù)選擇器為例,討論另一個(gè)較為復(fù)雜的并行信號(hào)賦值語(yǔ)句的例子,以便更詳細(xì)地說(shuō)明并行概念,下面是四輸入數(shù)據(jù)選擇器的第二個(gè)VHDL程序。
例:LIBRARYieee;
USEieee.std_logic_1164.all;
ENTITYmux4IS
PORT(I0,I1,I2,I3,A,B:INstd_logic;
Q:OUTstd_logic);
ENDmux4;ARCHITECTUREmux4_arcOFmux4IS
SIGNALsel:INTEGER;
BEGIN
Q<=I0AFTER10nsWHENsel=0ELSE
I1AFTER10nsWHENsel=1ELSE
I2AFTER10nsWHENsel=2ELSE
I3AFTER10ns;sel<=0WHENA=‘0’ANDB=‘0’ELSE
1WHENA=‘1’ANDB=‘0’ELSE
2WHENA=‘0’ANDB=‘1’ELSE
3;ENDmux4_arc;175仍以四路數(shù)據(jù)選擇器為例,討論另一個(gè)較為復(fù)雜的并行二、VHDL的進(jìn)程行為VHDL除了并行行為之外,還有順序行為。順序行為執(zhí)行的順序是一個(gè)接在另一個(gè)之后嚴(yán)格執(zhí)行。順序行為的語(yǔ)句存在于VHDL程序中的進(jìn)程行為之中。而進(jìn)程行為之間是并行行為語(yǔ)句。進(jìn)程行為語(yǔ)句的一般形式如下:<進(jìn)程標(biāo)號(hào)>:PROCESS<敏感信號(hào)表><進(jìn)程說(shuō)明區(qū)>
BEGIN
<語(yǔ)句部分>
WAITON<敏感信號(hào)表>;
WAITUNTIL<條件表達(dá)式>;
WAITFOR<時(shí)間表達(dá)式>;
ENDPROCESS;176二、VHDL的進(jìn)程行為VHDL除了并行行為之進(jìn)程行為的說(shuō)明區(qū)定義該進(jìn)程所需要的局部數(shù)據(jù)環(huán)境、它包括子程序說(shuō)明、屬性說(shuō)明和變量說(shuō)明等在這里只給出變量說(shuō)明的一個(gè)例子,變量說(shuō)明的一般形式為VARIABLE<定義變量表>:<類型說(shuō)明:=初始值>;下面進(jìn)程說(shuō)明區(qū)中說(shuō)明了變量count,進(jìn)程也可對(duì)變量賦值。
PROCESS
VARIABLEcount:INTEGER:=0;
BEGIN
count:=count+1;
WAITFOR1000ns;
ENDPROCESS;177進(jìn)程行為的說(shuō)明區(qū)定義該進(jìn)程所需要的局部數(shù)據(jù)環(huán)整個(gè)實(shí)體模塊中的每個(gè)進(jìn)程行為語(yǔ)句,可以在任何時(shí)候被激活,所有被激活的進(jìn)程是并行執(zhí)行的下面舉一個(gè)三八通用譯碼器程序的例子,說(shuō)明進(jìn)程語(yǔ)句如何工作。LIBRARYieee;
USEieee.std_logic_1164.all;
USEieee.std_logic_arith.all;
ENTITYdecoderIS
PORT(sel:INUNSIGNED(2DOWNTO0);
dout:OUTUNSIGNED(7DOWNTO0));ENDdecoder;ARCHITECTUREdecoder_arcOFdecoderIS
SIGNALsel1:INTEGER;
BEGIN
PROCESS(sel)
BEGINsel1<=CONV_INTEGER(sel);
CASEsel1IS
WHEN0=>dout<=(‘0’,’0’,’0’,’0’,’0’,’0’,’0’,’1’)AFTER5ns;178整個(gè)實(shí)體模塊中的每個(gè)進(jìn)程行為語(yǔ)句,可以在任何時(shí)WHEN1=>dout<=(‘0’,’0’,’0’,’0’,’0’,’0’,’1’,’0’)AFTER5ns;
WHEN2=>dout<=(‘0’,’0’,’0’,’0’,’0’,’1’,’0’,’0’)AFTER5ns;
WHEN3=>dout<=(‘0’,’0’,’0’,’0’,’1’,’0’,’0’,’0’)AFTER5ns;
WHEN4=>dout<=(‘0’,’0’,’0’,’1’,’0’,’0’,’0’,’0’)AFTER5ns;
WHEN5=>dout<=(‘0’,’0’,’1’,’0’,’0’,’0’,’0’,’0’)AFTER5ns;
WHEN6=>dout<=(‘0’,’1’,’0’,’0’,’0’,’0’,’0’,’0’)AFTER5ns;
WHENOTHERS=>dout<=(‘1’,’0’,’0’,’0’,’0’,’0’,’0’,’0’)AFTER5ns;
ENDCASE;
ENDPROCESS;
ENDdecoder_arc;此例不像上例那樣等待時(shí)間到1000ns以后再激活進(jìn)程,而是只要sel的值一發(fā)生改變就激活進(jìn)程,從第一句執(zhí)行直到滿足條件后再被掛起。179WHEN1=>dout<=(‘下例是另一種激活進(jìn)程的方式:ENTITYregIS
PORT(d,clk:INBIT;
q1,q2:OUTBIT);
ENDreg;
ARCHITECTUREreg_arcOFregIS
BEGINPROCESS
BEGIN
WAITUNTILclk=‘1’;
q1<=d;
ENDPROCESS;PROCESS
BEGIN
WAITUNTILclk=‘0’;q2<=d;
ENDPROCESS;ENDreg_arc;進(jìn)程行為語(yǔ)句之間是并行關(guān)系,進(jìn)程行為語(yǔ)句內(nèi)部是順序關(guān)系。VHDL的每個(gè)結(jié)構(gòu)體中可以有多個(gè)進(jìn)程行為語(yǔ)句。它的關(guān)鍵之處是:180下例是另一種激活進(jìn)程的方式:ENTITYregIS三、VHDL的順序行為順序行為語(yǔ)句可分為兩大類:條件控制類,循環(huán)控制類在這兩類中選出六種IF、CASE、FOR、WHILE..LOOP、EXIT和ASSERT進(jìn)行討論IF<條件>THEN
<語(yǔ)句>;
ELSIF<條件>THEN
<語(yǔ)句>;
ELSIF<條件>THEN
<語(yǔ)句>;
ELSE
<語(yǔ)句>;ENDIF;1、IF語(yǔ)句IF語(yǔ)句的一般形式為:181三、VHDL的順序行為順序行為語(yǔ)句可分為兩大類:條件控制類,ARCHITECTUREalarm_arcOFalarmIS
BEGIN下面舉例說(shuō)明IF條件語(yǔ)句的用法。例:用VHDL設(shè)計(jì)一家用告警系統(tǒng)的控制邏輯,它有來(lái)自傳感器的三個(gè)輸入信號(hào)smoke、door、water和準(zhǔn)備傳輸?shù)礁婢O(shè)備的三個(gè)輸出觸發(fā)信號(hào)fire_alarm、burg_alarm、water_alarm以及使能信號(hào)en和alarm_en。VHDL程序描述如下:LIBRARYieee;
USEieee.std_logic_1164.all;
ENTITYalarmIS
PORT(smoke,door,water:INstd_logic;
en,alarm_en:INstd_logic;
fire_alarm,burg_alarm,water_alarm:OUTstd_logic);
ENDalarm;182ARCHITECTUREalarm_arcOFaPROCESS(smoke,door,water,en,alarm_en)
BEGIN
IF((smoke=‘1’)AND(en=‘0’))THEN
fire_alarm<=‘1’;
ELSE
fire_alarm<=‘0’;
ENDIF;IF((door=‘1’)AND((en=‘0’)AND(alarm_en=‘0’)))THEN
burg_alarm<=‘1’;
ELSE
burg_alarm<=‘0’;
ENDIF;IF((water=‘1’)AND(en=‘0’))THEN
water_alarm<=‘1’;
ELSE
water_alarm<=‘0’;
ENDIF;ENDPROCESS;
ENDalarm_arc;183PROCESS(smoke,door,water,en,al2、CASE語(yǔ)句CASE語(yǔ)句的一般形式:CASE<表達(dá)式>IS
WHEN<值>=><語(yǔ)句>;
WHEN<值>|<值>=><語(yǔ)句>;
WHEN<離散范圍>=><語(yǔ)句>;
WHENOTHERS=><語(yǔ)句>;
ENDCASE;CASE語(yǔ)句是VHDL提供的另一種形式的控制語(yǔ)句,每當(dāng)單個(gè)表達(dá)式的值在多個(gè)起作用的項(xiàng)中選擇時(shí),用此語(yǔ)句是較合適的,它根據(jù)所給表達(dá)式的值或域,選擇“=>”后面的執(zhí)行語(yǔ)句。1842、CASE語(yǔ)句CASE語(yǔ)句的一般形式:CASE<表達(dá)用CASE語(yǔ)句應(yīng)該注意三個(gè)問(wèn)題:一,是關(guān)鍵字WHEN的數(shù)量不作限制,但不容許兩個(gè)語(yǔ)句用一個(gè)值;二,是所有WHEN后面的值在CASE語(yǔ)句中合起來(lái)的值域中的全部;三,是WHEN的次序可以任意排定185用CASE語(yǔ)句應(yīng)該注意三個(gè)問(wèn)題:一,是關(guān)鍵字3、FOR語(yǔ)句FOR循環(huán)語(yǔ)句的一般形式為:<循環(huán)標(biāo)號(hào)>:FOR<循環(huán)變量>IN<范圍>LOOP
<語(yǔ)句>;
ENDLOOP<循環(huán)標(biāo)號(hào)>;下面舉一兩位二進(jìn)制乘方電路,用VHDL描述如下:例:FORIIN1TO3LOOP
a(i):=i*i;
ENDLOOP;此例中循環(huán)語(yǔ)句變量為I,循環(huán)范圍為“1TO3”,語(yǔ)句部分是乘方。1863、FOR語(yǔ)句FOR循環(huán)語(yǔ)句的一般形式為:<循環(huán)標(biāo)號(hào)>:4、WHILE..LOOP語(yǔ)句WHILE..LOOP循環(huán)語(yǔ)句的一般形式為:<循環(huán)標(biāo)號(hào)>:WHILE<條件>LOOP
<語(yǔ)句>;
ENDLOOP<循環(huán)標(biāo)號(hào)>;循環(huán)的條件是布爾表達(dá)式,并且為假時(shí)結(jié)束循環(huán),即每次在執(zhí)行循環(huán)前檢查條件為真時(shí)執(zhí)行循環(huán)。例WHILE(X<10)LOOP
X:=X+1;
ENDLOOP;1874、WHILE..LOOP語(yǔ)句WHILE..LOOP循環(huán)語(yǔ)句5、斷言語(yǔ)句斷言語(yǔ)句對(duì)VHDL描述中的模型添加限制條件,報(bào)告一條文本的字符串。斷言語(yǔ)句檢查一個(gè)布爾表達(dá)式為真或?yàn)榧?,如果為真,該語(yǔ)句任何事都不做,如果為假,斷言語(yǔ)句將輸出設(shè)計(jì)者規(guī)定的字符串到標(biāo)準(zhǔn)的輸出終端。另外,還可以規(guī)定輸出的嚴(yán)重級(jí)別,級(jí)別共分四種:注意(note)告警(warning)出錯(cuò)(error)失?。╢ailure)按嚴(yán)重級(jí)別分類斷言語(yǔ)句是設(shè)計(jì)者分析自己設(shè)計(jì)的電路的好辦法,而且按斷言語(yǔ)句的報(bào)告找到描述語(yǔ)言出錯(cuò)的位置。斷言語(yǔ)句不構(gòu)造硬件,主要用于模塊的預(yù)期處理,所以和綜合設(shè)計(jì)的硬件系統(tǒng)無(wú)關(guān)。1885、斷言語(yǔ)句斷言語(yǔ)句對(duì)VHDL描述中的模型添斷言語(yǔ)句的一般形式如下:ASSERT<條件>REPORT<輸出信息>SEVERITY<嚴(yán)重級(jí)別>;條件為假時(shí),系統(tǒng)的輸出設(shè)備上將輸出REPORT后面設(shè)計(jì)者規(guī)定的字符串信息,以及SEVERITY后面的嚴(yán)重級(jí)別。斷言語(yǔ)句是非常有用的,它類似于C和Pascal語(yǔ)言中的陷井,當(dāng)一些重要的限制未得到滿足,或者發(fā)現(xiàn)不能處理的錯(cuò)誤時(shí),就會(huì)終止模擬分析過(guò)程,提供錯(cuò)誤條件的性質(zhì)和有用信息。下面用VHDL語(yǔ)言設(shè)計(jì)RS觸發(fā)器和斷言語(yǔ)句在程序中的作用。ENTITYRSFFIS
PORT(r,s:INBIT;
q,not_q:OUTBIT);
ENDRSFF;189斷言語(yǔ)句的一般形式如下:ASSERT<條件>ARCHITECTURERSFF_arcOFRSFFIS
BEGIN
PROCESS(r,s)
VARIABLElast_state:BIT:=‘0’;
BEGINASSERTNOT(r=‘1’ANDs=‘1’)
REPORT“BothrANDsequalto‘1’”
SEVERITYerror;IFr=‘0’ANDs=‘0’THEN
last_state:=last_state;ELSIFr=‘1’ANDs=‘0’THEN
last_state:=‘0’;ELSE--r=‘0’ANDs=‘1’last_state:=‘1’;ENDIF;190ARCHITECTURERSFF_arcOFRSq<=last_stateAFTER10ns;not_q<=NOT(last_state)AFTER20ns;
ENDPROCESS;ENDRSFF_arc;191q<=last_stateAFTER信號(hào)可被看作兩個(gè)元件之間數(shù)據(jù)傳輸?shù)耐罚谒墓?jié)VHDL的結(jié)構(gòu)描述實(shí)體主要描述元件、端口與信號(hào)。元件是硬件的描述,即門(mén)、芯片或者電路板。端口是元件與外界的連接點(diǎn),數(shù)據(jù)通過(guò)端口進(jìn)入或流出元件。而信號(hào)則是作為硬件連線的一種抽象描述,它即能保持變化的數(shù)據(jù),又可以連接各個(gè)子元件。192信號(hào)可被看作兩個(gè)元件之間數(shù)據(jù)傳輸?shù)耐罚谒墓?jié)VHD下面舉例說(shuō)明“調(diào)用元件語(yǔ)句”的用法。對(duì)一個(gè)硬件的結(jié)構(gòu)進(jìn)行描述,就是要描述它由哪些子元件組成,以及各個(gè)子元件之間的互連關(guān)系。結(jié)構(gòu)描述比行為描述更加具體化,即,結(jié)構(gòu)描述與硬件之間的關(guān)系要比行為描述與硬件之間的關(guān)系更明顯。前面討論,行為描述的基本單元是進(jìn)程語(yǔ)句而結(jié)構(gòu)描述的基本單元?jiǎng)t是“調(diào)用元件語(yǔ)句”。193下面舉例說(shuō)明“調(diào)用元件語(yǔ)句”的用法。對(duì)一個(gè)硬例:用VHDL結(jié)構(gòu)描述設(shè)計(jì)一全減器,全減器可由兩個(gè)半減器和一個(gè)或門(mén)組成。首先用VHDL的行為描述設(shè)計(jì)半減器:ENTITYhalfsubIS
PORT(A,B:INBIT;
T,C:OUTBIT);
ENDhalfsub;
PROCESS(A,B)
BEGIN
T<=AXORBAFTER10ns;
C<=(NOTA)ANDBAFTER10ns;
ENDPROCESS;ARCHITECTUREhalfsub_arcOFhalfsubIS
BEGINENDhalfsub_arc;194例:用VHDL結(jié)構(gòu)描述設(shè)計(jì)一全減器,全減器可由兩個(gè)首先用VH下面再將或門(mén)的VHDL程序描述如下:ARCHITECTUREorgate_arcOForgateIS
BEGINO1<=A1ORB1;ENDorgate_arc;下面將兩個(gè)半減器,一個(gè)或門(mén)的端口,通過(guò)定義一些中間信號(hào)將其連接起來(lái)形成VHDL的結(jié)構(gòu)描述。ENTITYorgateIS
PORT(A1,B1:INBIT;O1:OUTBIT);ENDorgate;195下面再將或門(mén)的VHDL程序描述如下:ARCHITECTURE在下面舉的全減器例子里可以看到定義了中間信號(hào)temp_T,temp_c1和temp_c2ENTITYfullsubISPORT(I1,I2,C_IN:INBIT;FT,C_OUT:OUTBIT);ENDfullsub;ARCHITECTUREfullsub_arcOFfullsubISSIGNAL
temp_T,temp_c1,temp_c2:BIT;COMPONENThalfsub
PORT(A,B:INBIT;T,C:OUTBIT);ENDCOMPONENT;COMPONENTorgate
PORT(A1,B1:INBIT;O1:OUTBIT);ENDCOMPONENT;196在下面舉的全減器例子里可以看到定義了中間信號(hào)ENTITYf圖中虛線框各元件之間的連線命名。temp_T將第一個(gè)半減器的差位輸出連到第二個(gè)半減器的輸入端。信號(hào)temp_c1將第一個(gè)半減器的借位輸出連至“或”門(mén)的一個(gè)輸入端,信號(hào)temp_c2將第二個(gè)半減器的借位輸出連至“或”門(mén)的另一個(gè)輸入端
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 非營(yíng)利組織財(cái)務(wù)分析與運(yùn)營(yíng)策略優(yōu)化
- 高中語(yǔ)文情感美文藝藝
- 音樂(lè)類視頻產(chǎn)品的創(chuàng)新制作與推廣
- 初中語(yǔ)文文摘職場(chǎng)阿蘇的小雪
- 四年級(jí)數(shù)學(xué)上冊(cè)可能性教案蘇教版
- 高中語(yǔ)文課外古詩(shī)文歸莊送顧寧人北游序原文及翻譯
- 部編版四年級(jí)下冊(cè)道德與法治全冊(cè)教案
- 跨國(guó)企業(yè)知識(shí)產(chǎn)權(quán)糾紛解決與司法管轄探討
- 海南2025年01月??谑协偵絽^(qū)事業(yè)單位(綜合類)2025年度公開(kāi)招考65名工作人員(第一號(hào))筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 跨境B2B電商平臺(tái)運(yùn)營(yíng)模式探討
- 財(cái)務(wù)管理中的財(cái)務(wù)指標(biāo)
- 2016-2023年青島酒店管理職業(yè)技術(shù)學(xué)院高職單招(英語(yǔ)/數(shù)學(xué)/語(yǔ)文)筆試歷年參考題庫(kù)含答案解析
- 第二章-環(huán)境數(shù)據(jù)統(tǒng)計(jì)與分析
- 電力各種材料重量表總
- 腸道健康講座活動(dòng)策劃
- 醫(yī)療器械(耗材)項(xiàng)目投標(biāo)服務(wù)投標(biāo)方案(技術(shù)方案)
- 小學(xué)三年級(jí)下冊(cè)數(shù)學(xué)教案3篇
- pci術(shù)后術(shù)肢腫脹處理流程
- 遼寧省營(yíng)口市2023-2024學(xué)年七年級(jí)上學(xué)期期末英語(yǔ)試題
- 大數(shù)據(jù)平臺(tái)部署與運(yùn)維高職全套教學(xué)課件
- 《大數(shù)據(jù)平臺(tái)部署與運(yùn)維》課程教學(xué)大綱
評(píng)論
0/150
提交評(píng)論