EDA課件-數(shù)字系統(tǒng)設(shè)計(jì)_第1頁
EDA課件-數(shù)字系統(tǒng)設(shè)計(jì)_第2頁
EDA課件-數(shù)字系統(tǒng)設(shè)計(jì)_第3頁
EDA課件-數(shù)字系統(tǒng)設(shè)計(jì)_第4頁
EDA課件-數(shù)字系統(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩393頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

數(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

開發(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低功耗小型化嵌入式趨勢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ā)展趨勢經(jīng)濟(jì)性(成本)微型化(封裝、功耗)智能化(功能、速度)嵌入式處理器的分類和現(xiàn)狀微控制器(MCU)微處理器(MPU)數(shù)字信號(hào)處理器(DSP)混合處理器和片上系統(tǒng)(SOC)可編程片上系統(tǒng)(SOPC)11嵌入式處理器嵌入式處理器的發(fā)展趨勢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ā)展起來的一項(xiàng)新興概念和技術(shù),是指設(shè)備通過嵌入式模塊而非PC系統(tǒng)直接接入Internet,以Internet為介質(zhì)實(shí)現(xiàn)信息交互的過程,通常又稱為非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ī)??删幊踢壿嬈骷捌溟_發(fā)工具的成熟FPGA密度提高FPGA成本足以與ASIC抗衡FPGA設(shè)計(jì)、綜合、仿真、測試工具性能飛速提高微處理器核以IP的形式嵌入到FPGA中IPCore開發(fā)理念的發(fā)展與深入人心信號(hào)處理算法、軟件算法模塊、控制邏輯等均可以IPCore形式體現(xiàn)目前已經(jīng)成熟的SOPC開發(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ù)處理或控制過程的技術(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)程及通信自然語言算法級(jí)運(yùn)算步運(yùn)算的控制行為有限狀態(tài)機(jī)、控制流圖寄存器級(jí)時(shí)鐘周期寄存器、運(yùn)算、變換布爾方程、布爾有限狀態(tài)機(jī)門級(jí)延時(shí)邏輯門、器件原理圖電路級(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.門陣列3.可編程邏輯器件編程方式:1.一次編程熔絲開關(guān),反熔絲開關(guān)2.多次編程浮柵編程3.無限次編程基于SRAM編程元件1.靜態(tài)存儲(chǔ)器2.反熔絲開關(guān)3.浮柵編程技術(shù):浮柵,疊柵,電可改寫,閃速存儲(chǔ)單元

25集成電路的發(fā)展是從小規(guī)?!幸?guī)?!笠?guī)?!現(xiàn)PGA與PAL的比較1.FPGA有更多的I/O管腳,多達(dá)幾百條,不會(huì)出現(xiàn)PAL邏輯沒有使用完之前,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.可以方便地通過計(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.前者較后者有較低的開發(fā)和設(shè)計(jì)成本,可以在辦公室的PC機(jī)上進(jìn)行設(shè)計(jì),配置到芯片;2.前者是可編程的,風(fēng)險(xiǎn)能降低到最小,后者每次的修改設(shè)計(jì),用于定制掩模的費(fèi)用多達(dá)幾萬到幾十萬人民幣;3.前者可再編程的時(shí)間是很短的,省去了定制掩模范投片制造帶來的時(shí)間延誤;4.前者可再編程特性,可以做到出廠前器件100%測試,保證了器件的質(zhì)量;5.對(duì)大量的產(chǎn)品,為降低成本,前者很容易轉(zhuǎn)到固定連線的門陣列。28CPLD和FPGA與定制比較1.前者較后者有較低的開發(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)圖的簡化,寫出最簡邏輯表達(dá)式,到繪出電路原理圖。這在不是較大的電路系統(tǒng)中,工程師可以用一定的時(shí)間,了解電路的原理。若電路系統(tǒng)非常龐大,工程師就不容易在電路原理圖上了解電路的原理,而且對(duì)繪圖者也是一項(xiàng)非常煩瑣的工作。因此眾多軟件公司開發(fā)研制了具有自己特色的電路硬件描述語言(HardwareDescriptionLanguage,HDL),這些硬件描述語言必然有很大的差異,工程師一旦選用某種硬件描述語言作為輸入工具,就被束縛在這個(gè)硬件設(shè)計(jì)環(huán)境之中,不能在眾多的軟件工具中選擇一個(gè)最佳組合作為自己的最優(yōu)設(shè)計(jì)環(huán)境。因此,硬件設(shè)計(jì)工程師需要一種強(qiáng)大的、標(biāo)準(zhǔn)化的硬件描述語言,作為可相互交流的設(shè)計(jì)環(huán)境。142傳統(tǒng)的電路系統(tǒng)設(shè)計(jì)方法的步驟從狀態(tài)圖的簡化,寫美國國防部在80年代初提出了VHSIC(VeryHighSpeedIntegratedCircuit)計(jì)劃,其目標(biāo)之一是為下一代集成電路的生產(chǎn),實(shí)現(xiàn)階段性的工藝極限以及完成10萬門級(jí)以上的設(shè)計(jì),建立一項(xiàng)新的描述方法。1981年提出了一種新的HDL,稱之為VHSICHardwareDescriptionLanguage,簡稱為VHDL,這種語言的成就有兩個(gè)方面:1.描述復(fù)雜的電路系統(tǒng);

2.VHDL成為硬件描述語言的標(biāo)準(zhǔn)。143美國國防部在80年代初提出了VHSIC(VeryHVHDL的主要優(yōu)點(diǎn)是:1.覆蓋面廣,描述能力強(qiáng),是一個(gè)多層次的硬件描述語言。即設(shè)計(jì)的原始描述可以是非常簡練的描述,經(jīng)過層層細(xì)化求精,最終成為可直接付諸生產(chǎn)的電路級(jí)或版圖參數(shù)描述,整個(gè)過程都可以在VHDL的環(huán)境下進(jìn)行。2.VHDL有良好的可讀性,即可以被計(jì)算機(jī)接受,也容易被理解。用VHDL書寫的原文件,即是程序,又是文檔,即是技術(shù)人員之間交換信息的文件,又可作為合同簽約者之間的文件。3.VHDL本身的生命期長,因?yàn)閂HDL的硬件描述與工藝技術(shù)無關(guān),不會(huì)因工藝變化而使描述過時(shí)。與工藝技術(shù)有關(guān)的參數(shù)可通過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)目組來共同完成。VHDL為設(shè)計(jì)的分解和設(shè)計(jì)的再利用提供了有力的支持。VHDL的主要優(yōu)點(diǎn)是:5.VHDL已成為IEEE承認(rèn)的一個(gè)工業(yè)標(biāo)準(zhǔn),事實(shí)上已成為通用硬件描述語言。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語言是:一、參數(shù)部分——程序包146第一節(jié)VHDL的基本組成VHDL可以把任例1:LIBRARYieee;USEieee.std_logic_1164.all;調(diào)用程序包語句標(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)用程序包語句標(biāo)準(zhǔn)程序包定義程序包實(shí)體及實(shí)體聲明語句ENTITYkxorISkxorPORT(a1,b1:INstd_logic;a1b1c1:OUTstd_logic);c1ENDkxor;例2148模塊中僅有一個(gè)設(shè)計(jì)實(shí)體,它提供該設(shè)計(jì)模塊的公共實(shí)體部分的大寫單詞ENTITY、IS、PORT、IN、OUT和END為關(guān)鍵字。在ENTITY...END之間表示實(shí)體內(nèi)容,ENTITY后的字符串kxor表示實(shí)體的名稱,即電路的符號(hào)名。端口(引腳)信息關(guān)鍵字PORT中的語句有三個(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ù)、無符號(hào)數(shù)、物理以及以上數(shù)據(jù)類型組成的記錄和數(shù)組集合,信號(hào)類型也可以是設(shè)計(jì)者定義。149實(shí)體部分的大寫單詞ENTITY、IS、PORT三、描述部分—結(jié)構(gòu)體:當(dāng)異或門的符號(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)用程序包語句標(biāo)準(zhǔn)程序包定義程序包實(shí)體及實(shí)體聲明語句結(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)異或門的符號(hào)和外部端口akxora1b1c1a1b1c1151kxora1b1c1a1b1c1151第二節(jié)VHDL數(shù)據(jù)類型

和屬性VHDL硬件描述語言中涉及到了許多信號(hào),變量和常量,它們用來保持一個(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ù)類型化語言,規(guī)定每個(gè)信號(hào),常量或變量和每個(gè)表達(dá)式有一個(gè)唯一的確定數(shù)據(jù)類型,一般說,在表達(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ù)值要到未來的某個(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)分開。<目標(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ù)類型,類型說明部分規(guī)定類型名和類型范圍,它的一般形式是:154目標(biāo):是一個(gè)或多個(gè)代表著目標(biāo)種類的字符串,多個(gè)目

TYPE<類型名>IS<類型范圍>;標(biāo)量類型、復(fù)合類型、子類型、文件類型和尋址類型。標(biāo)量類型包括所有的簡單類型:如整數(shù)、實(shí)數(shù)等復(fù)合類型包括數(shù)組和記錄尋址類型在一般編輯語言中等價(jià)為指針文件類型用設(shè)計(jì)者定義的文件類型為設(shè)計(jì)者提供說明的文件對(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)常更換或者說是包含多個(gè)值,但一個(gè)目標(biāo)一次只能被一種類型說明。物理類型要提供一個(gè)基本單位,然后在這個(gè)基本單位上定義多個(gè)或零個(gè)次級(jí)單位,每個(gè)次級(jí)單位都是基本單位的整數(shù)倍。枚舉類型在形式上是定義括弧括起來的字符串文字表,一個(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程序說明一維數(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)體說明區(qū)(ARCHITECTURE和BEGIN之間)被說明的目標(biāo),僅可以在此結(jié)構(gòu)體中引用或在結(jié)構(gòu)體中的任何進(jìn)程語句中被引用,稱此目標(biāo)為局部信號(hào)。數(shù)據(jù)類型的全局化和局部化前面已經(jīng)討論VHDL描述語言的組成是由程序包、實(shí)體、結(jié)構(gòu)體(結(jié)構(gòu)體中有進(jìn)程)、以及子程序而組成,不同的目標(biāo)可以在指定的組成部分內(nèi)加以說明。如果一個(gè)目標(biāo)在實(shí)體說明部分被說明,那么在本實(shí)體和本實(shí)體內(nèi)部的任何結(jié)構(gòu)體和任何進(jìn)程中都可以引用在實(shí)體中說明的目標(biāo),稱為全局信號(hào);164在結(jié)構(gòu)體說明區(qū)(ARCHITECTURE和BEGINVHDL中不同的目標(biāo)和類型規(guī)定在不同的構(gòu)造中可以被說明。

信號(hào):實(shí)體、結(jié)構(gòu)體說明區(qū)、程序包和子程序。

變量:進(jìn)程語句說明區(qū)和子程序。

常量:實(shí)體、結(jié)構(gòu)體、進(jìn)程語句說明區(qū)和程序包和子程序。

標(biāo)量類型:實(shí)體、結(jié)構(gòu)體、進(jìn)程語句說明區(qū)和程序包和子程序。

復(fù)合類型:實(shí)體、結(jié)構(gòu)體、進(jìn)程語句說明區(qū)和程序包和子程序。文件類型:子程序和進(jìn)程語句說明區(qū)。

尋址類型:進(jìn)程語句說明區(qū)。165VHDL中不同的目標(biāo)和類型規(guī)定在不同的構(gòu)造中可以被說明。

VHDL的屬性VHDL中的屬性使得VHDL程序更加簡明扼要,更加容易理解,VHDL的屬性在時(shí)序程序中幾乎處處可見,如值類屬性的左邊界、右邊界、上下邊界以及值類屬性的長度,還可以檢測信號(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ù)組的邊界或長度,首先舉一例數(shù)組邊界的例子說明類型屬性。例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ù)組范圍的總長度。例:168TYPEbitISARRAY(0TO7)OFB它可用來檢查一個(gè)信號(hào)的變化,并且變化剛剛發(fā)生,既推斷出在信號(hào)上發(fā)生了一個(gè)跳變。函數(shù)信號(hào)屬性:函數(shù)信號(hào)屬性用來返回有關(guān)信號(hào)行為功能的信息,它反映一個(gè)信號(hào)是否正好有值的變化或事件的發(fā)生,如clk’EVENT,這個(gè)屬性為“EVENT”,對(duì)檢查時(shí)鐘邊沿觸發(fā)是很有效的。下面舉一個(gè)例子,說明函數(shù)信號(hào)屬性的用法IFclk=‘1’ANDclk’EVENT

THEN

q<=d;

ENDIF;上述語句中用到了函數(shù)信號(hào)屬性clk’EVENT,說明如果時(shí)鐘信號(hào)clk為高電平,并且事件剛剛發(fā)生,也就是說是時(shí)鐘上升沿有效,此時(shí)q得到d的信號(hào)。169它可用來檢查一個(gè)信號(hào)的變化,并且變化剛剛發(fā)生,既推第三節(jié)VHDL的行為描述在VHDL硬件描述語言中,描述電路邏輯的程序稱為行為描述,行為描述有并行行為描述、進(jìn)程行為描述和順序行為描述。三個(gè)行為即可以是相互獨(dú)立,成為單一的行為描述體,又可以相互聯(lián)系,成為混合描述體,如進(jìn)程行為描述行為之間是并行行為,進(jìn)程行為體的內(nèi)部是順序行為。170第三節(jié)VHDL的行為描述在VHD一、VHDL的并行行為在典型的編程語言如C或Pascal中,每個(gè)賦值語句按規(guī)定的次序,一個(gè)接在另一個(gè)之后順序執(zhí)行,執(zhí)行的次序由源文件決定。在VHDL中,結(jié)構(gòu)體的內(nèi)部沒有規(guī)定語句的次序,執(zhí)行的次序僅由對(duì)語句中的敏感信號(hào)發(fā)生的事件決定,且語句是同時(shí)執(zhí)行,產(chǎn)生其并行型。結(jié)構(gòu)體中并行賦值語句的一般格式如下:<對(duì)象><=<表達(dá)式>該一般形式讀作對(duì)象得到表達(dá)式的值,其作用是將表達(dá)式的信號(hào)值分配給對(duì)象,也就是說每當(dāng)表達(dá)式的信號(hào)值變化時(shí)執(zhí)行該語句。每個(gè)表達(dá)式都至少有一個(gè)敏感信號(hào),每當(dāng)敏感信號(hào)改變其值時(shí),這個(gè)信號(hào)賦值語句就執(zhí)行,171一、VHDL的并行行為在典型的編程語言如C或在所有的并行語句中,兩個(gè)以上的并行賦值語句在字面上的順序并不表明它們的執(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在所有的并行語句中,兩個(gè)以上的并行賦值語句在字面上另一種并行信號(hào)賦值語句是選擇信號(hào)賦值語句,它們的每一個(gè)賦值語句都需要給出一個(gè)表達(dá)式,同時(shí)給出與該表達(dá)式的每個(gè)可能值相關(guān)聯(lián)的信號(hào)選擇信號(hào)賦值語句的一般形式如下:

WITH<表達(dá)式>SELECT

<對(duì)象><=<信號(hào)1>WHEN<分支1>,

<信號(hào)2>WHEN<分支2>,

<信號(hào)n>WHEN<分支n>;173另一種并行信號(hào)賦值語句是選擇信號(hào)賦值語句,它一個(gè)典型的四路數(shù)據(jù)選擇器的VHDL程序說明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程序說明W仍以四路數(shù)據(jù)選擇器為例,討論另一個(gè)較為復(fù)雜的并行信號(hào)賦值語句的例子,以便更詳細(xì)地說明并行概念,下面是四輸入數(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í)行。順序行為的語句存在于VHDL程序中的進(jìn)程行為之中。而進(jìn)程行為之間是并行行為語句。進(jìn)程行為語句的一般形式如下:<進(jìn)程標(biāo)號(hào)>:PROCESS<敏感信號(hào)表><進(jìn)程說明區(qū)>

BEGIN

<語句部分>

WAITON<敏感信號(hào)表>;

WAITUNTIL<條件表達(dá)式>;

WAITFOR<時(shí)間表達(dá)式>;

ENDPROCESS;176二、VHDL的進(jìn)程行為VHDL除了并行行為之進(jìn)程行為的說明區(qū)定義該進(jìn)程所需要的局部數(shù)據(jù)環(huán)境、它包括子程序說明、屬性說明和變量說明等在這里只給出變量說明的一個(gè)例子,變量說明的一般形式為VARIABLE<定義變量表>:<類型說明:=初始值>;下面進(jìn)程說明區(qū)中說明了變量count,進(jìn)程也可對(duì)變量賦值。

PROCESS

VARIABLEcount:INTEGER:=0;

BEGIN

count:=count+1;

WAITFOR1000ns;

ENDPROCESS;177進(jìn)程行為的說明區(qū)定義該進(jìn)程所需要的局部數(shù)據(jù)環(huán)整個(gè)實(shí)體模塊中的每個(gè)進(jìn)程行為語句,可以在任何時(shí)候被激活,所有被激活的進(jìn)程是并行執(zhí)行的下面舉一個(gè)三八通用譯碼器程序的例子,說明進(jìn)程語句如何工作。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)程行為語句,可以在任何時(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)程行為語句之間是并行關(guān)系,進(jìn)程行為語句內(nèi)部是順序關(guān)系。VHDL的每個(gè)結(jié)構(gòu)體中可以有多個(gè)進(jìn)程行為語句。它的關(guān)鍵之處是:180下例是另一種激活進(jìn)程的方式:ENTITYregIS三、VHDL的順序行為順序行為語句可分為兩大類:條件控制類,循環(huán)控制類在這兩類中選出六種IF、CASE、FOR、WHILE..LOOP、EXIT和ASSERT進(jìn)行討論IF<條件>THEN

<語句>;

ELSIF<條件>THEN

<語句>;

ELSIF<條件>THEN

<語句>;

ELSE

<語句>;ENDIF;1、IF語句IF語句的一般形式為:181三、VHDL的順序行為順序行為語句可分為兩大類:條件控制類,ARCHITECTUREalarm_arcOFalarmIS

BEGIN下面舉例說明IF條件語句的用法。例:用VHDL設(shè)計(jì)一家用告警系統(tǒng)的控制邏輯,它有來自傳感器的三個(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語句CASE語句的一般形式:CASE<表達(dá)式>IS

WHEN<值>=><語句>;

WHEN<值>|<值>=><語句>;

WHEN<離散范圍>=><語句>;

WHENOTHERS=><語句>;

ENDCASE;CASE語句是VHDL提供的另一種形式的控制語句,每當(dāng)單個(gè)表達(dá)式的值在多個(gè)起作用的項(xiàng)中選擇時(shí),用此語句是較合適的,它根據(jù)所給表達(dá)式的值或域,選擇“=>”后面的執(zhí)行語句。1842、CASE語句CASE語句的一般形式:CASE<表達(dá)用CASE語句應(yīng)該注意三個(gè)問題:一,是關(guān)鍵字WHEN的數(shù)量不作限制,但不容許兩個(gè)語句用一個(gè)值;二,是所有WHEN后面的值在CASE語句中合起來的值域中的全部;三,是WHEN的次序可以任意排定185用CASE語句應(yīng)該注意三個(gè)問題:一,是關(guān)鍵字3、FOR語句FOR循環(huán)語句的一般形式為:<循環(huán)標(biāo)號(hào)>:FOR<循環(huán)變量>IN<范圍>LOOP

<語句>;

ENDLOOP<循環(huán)標(biāo)號(hào)>;下面舉一兩位二進(jìn)制乘方電路,用VHDL描述如下:例:FORIIN1TO3LOOP

a(i):=i*i;

ENDLOOP;此例中循環(huán)語句變量為I,循環(huán)范圍為“1TO3”,語句部分是乘方。1863、FOR語句FOR循環(huán)語句的一般形式為:<循環(huán)標(biāo)號(hào)>:4、WHILE..LOOP語句WHILE..LOOP循環(huán)語句的一般形式為:<循環(huán)標(biāo)號(hào)>:WHILE<條件>LOOP

<語句>;

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語句WHILE..LOOP循環(huán)語句5、斷言語句斷言語句對(duì)VHDL描述中的模型添加限制條件,報(bào)告一條文本的字符串。斷言語句檢查一個(gè)布爾表達(dá)式為真或?yàn)榧伲绻麨檎?,該語句任何事都不做,如果為假,斷言語句將輸出設(shè)計(jì)者規(guī)定的字符串到標(biāo)準(zhǔn)的輸出終端。另外,還可以規(guī)定輸出的嚴(yán)重級(jí)別,級(jí)別共分四種:注意(note)告警(warning)出錯(cuò)(error)失敗(failure)按嚴(yán)重級(jí)別分類斷言語句是設(shè)計(jì)者分析自己設(shè)計(jì)的電路的好辦法,而且按斷言語句的報(bào)告找到描述語言出錯(cuò)的位置。斷言語句不構(gòu)造硬件,主要用于模塊的預(yù)期處理,所以和綜合設(shè)計(jì)的硬件系統(tǒng)無關(guān)。1885、斷言語句斷言語句對(duì)VHDL描述中的模型添斷言語句的一般形式如下:ASSERT<條件>REPORT<輸出信息>SEVERITY<嚴(yán)重級(jí)別>;條件為假時(shí),系統(tǒng)的輸出設(shè)備上將輸出REPORT后面設(shè)計(jì)者規(guī)定的字符串信息,以及SEVERITY后面的嚴(yán)重級(jí)別。斷言語句是非常有用的,它類似于C和Pascal語言中的陷井,當(dāng)一些重要的限制未得到滿足,或者發(fā)現(xiàn)不能處理的錯(cuò)誤時(shí),就會(huì)終止模擬分析過程,提供錯(cuò)誤條件的性質(zhì)和有用信息。下面用VHDL語言設(shè)計(jì)RS觸發(fā)器和斷言語句在程序中的作用。ENTITYRSFFIS

PORT(r,s:INBIT;

q,not_q:OUTBIT);

ENDRSFF;189斷言語句的一般形式如下: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)。元件是硬件的描述,即門、芯片或者電路板。端口是元件與外界的連接點(diǎn),數(shù)據(jù)通過端口進(jìn)入或流出元件。而信號(hào)則是作為硬件連線的一種抽象描述,它即能保持變化的數(shù)據(jù),又可以連接各個(gè)子元件。192信號(hào)可被看作兩個(gè)元件之間數(shù)據(jù)傳輸?shù)耐?,第四?jié)VHD下面舉例說明“調(diào)用元件語句”的用法。對(duì)一個(gè)硬件的結(jié)構(gòu)進(jìn)行描述,就是要描述它由哪些子元件組成,以及各個(gè)子元件之間的互連關(guān)系。結(jié)構(gòu)描述比行為描述更加具體化,即,結(jié)構(gòu)描述與硬件之間的關(guān)系要比行為描述與硬件之間的關(guān)系更明顯。前面討論,行為描述的基本單元是進(jìn)程語句而結(jié)構(gòu)描述的基本單元?jiǎng)t是“調(diào)用元件語句”。193下面舉例說明“調(diào)用元件語句”的用法。對(duì)一個(gè)硬例:用VHDL結(jié)構(gòu)描述設(shè)計(jì)一全減器,全減器可由兩個(gè)半減器和一個(gè)或門組成。首先用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下面再將或門的VHDL程序描述如下:ARCHITECTUREorgate_arcOForgateIS

BEGINO1<=A1ORB1;ENDorgate_arc;下面將兩個(gè)半減器,一個(gè)或門的端口,通過定義一些中間信號(hào)將其連接起來形成VHDL的結(jié)構(gòu)描述。ENTITYorgateIS

PORT(A1,B1:INBIT;O1:OUTBIT);ENDorgate;195下面再將或門的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è)半減器的借位輸出連至“或”門的一個(gè)輸入端,信號(hào)temp_c2將第二個(gè)半減器的借位輸出連至“或”門的另一個(gè)輸入端

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論