FPGA設(shè)計與VHDL實(shí)現(xiàn)PPT全套完整教學(xué)課件_第1頁
FPGA設(shè)計與VHDL實(shí)現(xiàn)PPT全套完整教學(xué)課件_第2頁
FPGA設(shè)計與VHDL實(shí)現(xiàn)PPT全套完整教學(xué)課件_第3頁
FPGA設(shè)計與VHDL實(shí)現(xiàn)PPT全套完整教學(xué)課件_第4頁
FPGA設(shè)計與VHDL實(shí)現(xiàn)PPT全套完整教學(xué)課件_第5頁
已閱讀5頁,還剩341頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

FPGA設(shè)計與VHDL實(shí)現(xiàn)EDA技術(shù)概述第一章ch01EDA技術(shù)概述.pptxch02FPGACPLD器件.pptxch03QuartusPrime使用指南.pptxch04VHDL設(shè)計初步.pptx.pptxch05VHDL結(jié)構(gòu)與要素.pptxch06VHDL基本語句.pptxch07VHDL設(shè)計進(jìn)階.pptx.pptxch08VHDL有限狀態(tài)機(jī)設(shè)計.pptxch09VHDL數(shù)字設(shè)計與優(yōu)化.pptxch10VHDL的TestBench仿真.pptxch11VHDL設(shè)計實(shí)例.pptx全套可編輯PPT課件01EDA技術(shù)及其發(fā)展EDA技術(shù)及其發(fā)展CAD階段電子CAD階段是EDA技術(shù)發(fā)展的早期階段(時間大致為20世紀(jì)70年代至80年代初)。在這個階段,一方面,計算機(jī)的功能還比較有限,個人計算機(jī)還沒有普及;另一方面,電子設(shè)計軟件的功能也較弱。人們主要借助計算機(jī)對所設(shè)計電路的性能進(jìn)行些模擬和預(yù)測;另外,就是完成PCB的布局布線、簡單版圖的繪制等工作。1EDA技術(shù)及其發(fā)展CAE階段集成電路規(guī)模的擴(kuò)大,電子系統(tǒng)設(shè)計的逐步復(fù)雜,使得電子CAD的工具逐步完善和發(fā)展,尤其是人們在設(shè)計方法學(xué)、設(shè)計工具集成化方面取得了長足的進(jìn)步,EDA技術(shù)進(jìn)入電子CAE階段(時間大致為20世紀(jì)80年代初至90年代初)。在這個階段,各種單點(diǎn)設(shè)計工具、各種設(shè)計單元庫逐漸完備,并且開始將許多單點(diǎn)工具集成在起使用,大大提高了工作效率。2EDA技術(shù)及其發(fā)展EDA階段20世紀(jì)90年代以來,微電子工藝有了顯著的發(fā)展,工藝水平達(dá)到深亞微米級,在個芯片上可以集成數(shù)目上于萬乃至上億的晶體管,芯片的工作速度水平達(dá)到深亞微米級,在個芯片上可以集成數(shù)目上于萬乃至上億的晶體管,芯片的工作速度達(dá)到Gbps級,這樣就對電子設(shè)計的工具提出了更高的要求,也促使設(shè)計工具提高性能。EDA技術(shù)的使用貫穿電子系統(tǒng)開發(fā)的各個層級,比如寄存器傳輸級(RTL)、門級和版圖級;也貫穿電子系統(tǒng)開發(fā)的各個領(lǐng)域,從低頻到高頻電路、從線性到非線性電路、從模擬電路到數(shù)字電路、從PCB到FPGA領(lǐng)域等。302Top-down設(shè)計與IP核復(fù)用Top-down設(shè)計與IP核復(fù)用Top-down設(shè)計Top-down設(shè)計,即自頂向下的設(shè)計。這種設(shè)計方法首先從系統(tǒng)設(shè)計入手,在頂層進(jìn)行功能的劃分;在功能級進(jìn)行仿真、糾錯,并用硬件描述語言進(jìn)行行為描述,然后用綜合工具將設(shè)計轉(zhuǎn)化為門級電路網(wǎng)表,其對應(yīng)的物理實(shí)現(xiàn)可以是PLD器件或?qū)S眉呻娐?ASIC)。在Top-down設(shè)計中,將設(shè)計分成幾個不同的層次:系統(tǒng)級、功能級、門級和開關(guān)級等,按照自上而下的順序,在不同的層次上對系統(tǒng)進(jìn)行描述與仿真。1Top-down設(shè)計與IP核復(fù)用Bottom-up設(shè)計Bottom-up設(shè)計,即自底向上的設(shè)計。Top-down設(shè)計符合人們邏輯思維的習(xí)慣,便于對復(fù)雜的系統(tǒng)進(jìn)行合理的劃分與不斷的優(yōu)化,因此成為主流的設(shè)計思路;不過,Top-down設(shè)計也并非是絕對的,在設(shè)計過程中,有時也帣要用到自底向上的方法,兩者相輔相成。在數(shù)字系統(tǒng)設(shè)計中,應(yīng)以Top-down設(shè)計為主,以Bottom-up設(shè)計為輔。2Top-down設(shè)計與IP核復(fù)用IP復(fù)用技術(shù)與soc電子系統(tǒng)的設(shè)計越向高層發(fā)展,基于IP復(fù)用(IPReuse)的設(shè)計技術(shù)越顯示出優(yōu)越性。IP(IntellectualProperty)原來的含義是指知識產(chǎn)權(quán)、著作權(quán)等,在IC設(shè)計領(lǐng)域,可將其理解為實(shí)現(xiàn)某種功能的設(shè)計,IP核(Ip模塊)則是指完成某種功能的設(shè)計模塊。IP核分為硬核、固核和軟核三種類型。3Top-down設(shè)計與IP核復(fù)用IP復(fù)用技術(shù)與soc基于IP核的設(shè)計能節(jié)省開發(fā)時間、縮短開發(fā)周期、避免重復(fù)勞動,因此基于IP復(fù)用的設(shè)計技術(shù)得到廣泛應(yīng)用,但也存在些問題,如IP版權(quán)的保護(hù)、IP的保密、IP間的集成等。微電子工藝的進(jìn)步為SoC的實(shí)現(xiàn)提供了硬件基礎(chǔ),EDA軟件則為SoC實(shí)現(xiàn)提供了工具。3Top-down設(shè)計與IP核復(fù)用IP復(fù)用技術(shù)與socPBD的實(shí)現(xiàn)依賴于如下關(guān)鍵技術(shù)的突破:高層次系統(tǒng)級的設(shè)計工具、軟/硬件協(xié)同設(shè)計技術(shù)等。303數(shù)字設(shè)計的流程數(shù)字設(shè)計的流程數(shù)字系統(tǒng)的實(shí)現(xiàn)主要依賴兩類器件,一種是可編程邏輯器件(PLD),另種是專用集成電路(ASIC),這兩類器件各有優(yōu)點(diǎn)。PLO(FPGNCPLD)是一種半定制的器件,器件內(nèi)已經(jīng)做好各種邏輯資源,用戶只需對器件內(nèi)的資源編程連接就可實(shí)現(xiàn)所需的功能,而且可以反復(fù)修改、反復(fù)編程,直至滿足設(shè)計需求,方便性、靈活性高,成本低、風(fēng)險小。數(shù)字設(shè)計的流程專用集成電路(ApplicationSpecificIntegratedCircuit,ASIC)指用全定制方式(版圖級)實(shí)現(xiàn)設(shè)計,也稱掩膜(Mask)ASIC。ASIC實(shí)現(xiàn)方式能得到功耗更低、面積更省的設(shè)計,它要求設(shè)計者使用版圖編輯工具從晶體管的版圖尺寸、位置及連線進(jìn)行設(shè)計,以得到最優(yōu)性能。版圖設(shè)計好后,還要進(jìn)行一系列檢查和驗(yàn)證,才可以將得到的標(biāo)準(zhǔn)格式的版圖文件(如CIF、GDSII格式)交廠家(Foundry)進(jìn)行流片。數(shù)字設(shè)計的流程設(shè)計輸入設(shè)計輸入(DesignEntry)是將設(shè)計者設(shè)計的電路以開發(fā)軟件要求的某種形式表達(dá)出來,并輸入相應(yīng)軟件的過程。設(shè)計輸入最常用的是原理圖輸入方式和HDL文本輸入方式。1數(shù)字設(shè)計的流程設(shè)計輸入1.原理圖輸入原理圖(Schematic)是圖形化的表達(dá)方式,它使用元件符號和連線描述設(shè)計。2.HDL文本輸入硬件描述語言CHDL)是種用文本形式描述、設(shè)計電路的語言。1數(shù)字設(shè)計的流程綜合綜合(Synthesis)是一個很重要的步驟,指的是將較高級抽象層次的設(shè)計描述自動轉(zhuǎn)化為較低層次描述的過程。綜合器就是自動實(shí)現(xiàn)上述轉(zhuǎn)換的軟件工具?;蛘哒f,綜合器是將原理圖或HDL語言表達(dá)、描述的電路編譯成由與或陣列、RAM、觸發(fā)器、寄存器等邏輯單元組成的電路結(jié)構(gòu)網(wǎng)表的工具。2數(shù)字設(shè)計的流程布局布線布局布線(Place&Route),或者稱為適配(F兀ting),可理解為將綜合生成的電路邏輯網(wǎng)表映射到具體的目標(biāo)器件中實(shí)現(xiàn),并產(chǎn)生最終的可下載文件的過程。布局布線將綜合后的網(wǎng)表文件針對某具體的目標(biāo)器件進(jìn)行邏輯映射,把整個設(shè)計分為多個適合器件內(nèi)部邏輯資源實(shí)現(xiàn)的邏輯小塊,并根據(jù)用戶的設(shè)定在速度和面積之間做出選擇或折中;布局是將已分割的邏輯小塊放到器件內(nèi)部邏輯資源的具體位置,并使它們易于連線;布線則利用器件的布線資源完成各功能塊之間和反饋信號之間的連接。3數(shù)字設(shè)計的流程仿真仿真CSimulation)也稱模擬,是對所設(shè)計電路的功能的驗(yàn)證。用戶可以在設(shè)計過程中對整個系統(tǒng)和各模塊進(jìn)行仿真,即在計算機(jī)上用軟件驗(yàn)證功能是否正確、各部分的時序配合是否準(zhǔn)確。有問題可以隨時進(jìn)行修改,避免了邏輯錯誤。高級的仿真軟件還可以對整個系統(tǒng)設(shè)計的性能進(jìn)行估計。規(guī)模越大的設(shè)計越需要進(jìn)行仿真。仿真包括功能仿真(FunctionSimulation)和時序仿真(TimingSimulation)。4數(shù)字設(shè)計的流程編程配置把適配后生成的編程文件裝入PLD器件中的過程稱為下載。通常將對基于EEPROM工藝的非易失結(jié)構(gòu)CPLD器件的下載稱為編程(Program),而將基于SRAM工藝結(jié)構(gòu)的FPGA器件的下載稱為配置(Configuration)。有兩種常用的編程方式:在系統(tǒng)編程(In-SystemProgrammable,ISP)和用專用的編程器編程,現(xiàn)在的PLD器件一般都支持在系統(tǒng)編程,因此在設(shè)計數(shù)字系統(tǒng)和做PCB時,應(yīng)預(yù)留器件的下載接口。504常用的EDA工具軟件常用的EDA工具軟件EDA工具軟件有兩種分類方法:一種是按公司類別進(jìn)行分類,另一種是按照軟件的功能進(jìn)行分類。1.集成的FPGNCPLD開發(fā)工具集成的FPG兇CPLD開發(fā)工具是由FPG兇CPLD芯片生產(chǎn)廠家提供的,這些工具可以完成從設(shè)計輸入(原理距或HDL)、邏輯綜合、模擬仿真到適配下載等全部工作。常用的EDA工具軟件2.設(shè)計輸入工具輸入工具主要幫助用戶完成原理圖和HDL文本的編輯與輸入工作。好的輸入工具支持多種輸入方式,包括原理圖、HDL文本、波形圖、狀態(tài)機(jī)、真值表等。常用的EDA工具軟件3.邏輯綜合器(Synthesizer)邏輯綜合是將設(shè)計者在EDA平臺上編輯輸入的HDL文本、原理圖或狀態(tài)圖描述,依據(jù)給定的硬件結(jié)構(gòu)和約束控制條件進(jìn)行編譯、優(yōu)化和轉(zhuǎn)換,最終獲得門級電路甚至更底層的電路描述網(wǎng)表文件的過程。常用的EDA工具軟件4.仿真器仿真工具提供了對設(shè)計進(jìn)行模擬仿真的手段,包括布線以前的功能仿真(前仿真)和布線以后包含延時的時序仿真(后仿真)。仿真器按對設(shè)計語言的處理方式分為兩類:編譯型仿真器和解釋型仿真器。常用的EDA工具軟件5.芯片版圖設(shè)計軟件提供IC版圖設(shè)計工具的著名公司有Synopsys、Cadence、Mentor,Syn.opsys的優(yōu)勢在于其邏輯綜合工具,而Mentor和Cadence則能夠在設(shè)計的各個層次提供全套的開發(fā)工具。05EDA技術(shù)的發(fā)展趨勢EDA技術(shù)的發(fā)展趨勢1.高性能的EDA工具將得到進(jìn)一步發(fā)展隨著市場需求的增長,集成工藝水平及計算機(jī)自動設(shè)計技術(shù)的不斷提高,單片系統(tǒng)或系統(tǒng)集成芯片成為IC設(shè)計的主流。感謝觀看,再見!FPGA設(shè)計與VHDL實(shí)現(xiàn)FPGA設(shè)計與VHDL實(shí)現(xiàn)FPGA/CPLD器件第二章01PLD概述PLD概述PLD的發(fā)展歷程PLD的雛形是20世紀(jì)70年代中期出現(xiàn)的可編程邏輯陣列(ProgrammableLo鄆CArray,PLA),PLA在結(jié)構(gòu)上由可編程的與陣列和可編程的或陣列構(gòu)成,陣列規(guī)模小,編程煩瑣。后來出現(xiàn)了可編程陣列邏輯(ProgrammableArrayLogic,PAL),PAL由可編程的與陣列和固定的或陣列組成,采用熔絲編程工藝,它的設(shè)計較PLA靈活、快速,因而成為第一個得到普遍應(yīng)用的PLD。1PLD概述PLD的發(fā)展歷程20世紀(jì)80年代初,美國的Lattice公司發(fā)明了通用陣列邏輯(GenericArrayLogic,GAL)。GAL器件采用了輸出邏輯宏單元(OLMC)的結(jié)構(gòu)和EEPROM工藝,具有可編程、可擦除、可長期保持?jǐn)?shù)據(jù)的優(yōu)點(diǎn),使用方便,所以GAL得到了更為廣泛的應(yīng)用。CPLD(ComplexProgrammableLogicDevice),即復(fù)雜可編程邏輯器件,是從EPLD改進(jìn)而來的,采用EEPROM工藝制作。1PLD概述PLD的分類1.按集成度分類集成度是PLD的一項(xiàng)重要指標(biāo),從集成密度上分,PLD可分為低密度PLD(LDPLD)和高密度PLD(HDPLD),低密度PLD也可稱為簡單PLD(SPLD)。一般按照GAL22Vl0芯片的容亞區(qū)分SPLD和HDPLD。GAL22Vl0的集成度大致在500~750門。2PLD概述PLD的分類(1)簡單的可編程邏輯器件簡單的可編程邏輯器件(SPLD):包括PROM、PLA、PAL和GAL四類器件。以上四類SPLD都是基于“與或“陣列結(jié)構(gòu)的,不過其內(nèi)部結(jié)構(gòu)有明顯區(qū)別,主要表現(xiàn)在與陣列、或陣列是否可編程,輸出電路是否含有存儲元件(如觸發(fā)器),以及是否可以靈活配置(可組態(tài))方面。2PLD概述PLD的分類(2)高密度可編程邏輯器件高密度可編程邏輯器件CHDPLD):主要包括CPLD和FPGA兩類器件,這兩類器件也是當(dāng)前PLD的主流。2PLD概述PLD的分類(2)高密度可編程邏輯器件高密度可編程邏輯器件CHDPLD):主要包括CPLD和FPGA兩類器件,這兩類器件也是當(dāng)前PLD的主流。2PLD概述按結(jié)構(gòu)特點(diǎn)分類按照不同的內(nèi)部結(jié)構(gòu)可以將PLD分為如下兩類。(1)基于乘積項(xiàng)(Product-Term)結(jié)構(gòu)的PLD(2)基于查找表(LookUpTable,LUT)結(jié)構(gòu)的PLD302PLD的基本原理與結(jié)構(gòu)PLD的基本原理與結(jié)構(gòu)PLD的基本結(jié)構(gòu)任何組合邏輯函數(shù)均可化為“與或“表達(dá)式,用”與門一或門”二級電路實(shí)現(xiàn),而任何時序電路又都可以由組合電路加上存儲元件(觸發(fā)器)構(gòu)成。因此,從原理上說,與或陣列加上觸發(fā)器的結(jié)構(gòu)就可以實(shí)現(xiàn)任意的數(shù)字邏輯電路。PLD就是采用這樣的結(jié)構(gòu),再加上可以靈活配置的互連線,從而實(shí)現(xiàn)任意邏輯功能的。1PLD的基本原理與結(jié)構(gòu)PLD電路的表示方法1.PLD緩沖電路的表示PLD的輸入緩沖器和輸出緩沖器都采用互補(bǔ)的結(jié)構(gòu)。2PLD的基本原理與結(jié)構(gòu)PLD電路的表示方法2.PLD與門、或門表示乘積項(xiàng)為P=A·B?C;邏輯關(guān)系為F=P1+P2+P32PLD的基本原理與結(jié)構(gòu)PLD電路的表示方法3.PLD連接的表示"X"表示可編程連接,表示該點(diǎn)既可以連接,也可以斷開,在熔絲編程工藝的PLD(如PAL)中,接通對應(yīng)于熔絲未熔斷,斷開對應(yīng)于熔絲熔斷。2PLD的基本原理與結(jié)構(gòu)PLD電路的表示方法4.邏輯陣列的表示陣列中,與陣列是固定的,或陣列是可編程的,與陣列的輸入變量為A2A1和A0,輸出變量為F1和F0。203低密度PLD的原理與結(jié)構(gòu)低密度PLD的原理與結(jié)構(gòu)PROMPROM開始是作為只讀存儲器出現(xiàn)的,最早的PROM是用熔絲編程的,在20世紀(jì)70年代就開始使用了。從可編程邏輯器件的角度看,可以發(fā)現(xiàn),地址譯碼器可看成一個與陣列,其連接是固定的;存儲陣列可看成一個或陣列,其連接關(guān)系是可編程的。1低密度PLD的原理與結(jié)構(gòu)PLAPLA在結(jié)構(gòu)上由可編程的與陣列和可編程的或陣列構(gòu)成。PLA只有4個乘積項(xiàng),實(shí)際中的PLA規(guī)模要大一些,典型的結(jié)構(gòu)是16個輸入,32個乘積項(xiàng),8個輸出。PLA的與陣列、或陣列都可以編程,這種結(jié)構(gòu)的優(yōu)點(diǎn)是芯片的利用率高,節(jié)省芯片面積;缺點(diǎn)是對開發(fā)軟件的要求高,優(yōu)化算法復(fù)雜;此外,器件的運(yùn)行速度低。2低密度PLD的原理與結(jié)構(gòu)PALPAL在結(jié)構(gòu)上對PLA進(jìn)行了改進(jìn),PAL的與陣列是可編程的,或陣列是固定的,這樣的結(jié)構(gòu)使得送到或門的乘積項(xiàng)的數(shù)目是固定的,大大簡化了設(shè)計算法。還可看出,PAL22V10器件在輸出端還加入了宏單元結(jié)構(gòu),宏單元中包含觸發(fā)器,用于實(shí)現(xiàn)時序邏輯功能。3低密度PLD的原理與結(jié)構(gòu)GAL1985年,Lattice公司在PAL的基礎(chǔ)上設(shè)計出了GAL器件。GAL首次在PLD上采用EEPROM工藝,使得GAL具有電可擦除重復(fù)編程的特點(diǎn),解決了熔絲工藝不能重復(fù)編程的問題。GAL器件在與或陣列上沿用PAL的結(jié)構(gòu),即與陣列可編程,或陣列固定,但在輸出結(jié)構(gòu)上做了較大改進(jìn),設(shè)計了獨(dú)特的輸出邏輯宏單元(OutputLogicMacroCell,OLMC)。404CPLD的原理與結(jié)構(gòu)CPLD的原理與結(jié)構(gòu)宏單元結(jié)構(gòu)我們可以看到每個宏單元是由類似PAL結(jié)構(gòu)的電路構(gòu)成的,包括可編程的與陣列,固定的或陣列。異或門的輸出連接到D觸發(fā)器的輸入端,2選1多路選擇器可以將觸發(fā)器旁路,也可以將三態(tài)緩沖器使能或者連接到與陣列的乘積項(xiàng)。三態(tài)緩沖器的輸出還可以反饋到與陣列。如果三態(tài)緩沖器輸出處于高阻狀態(tài),那么與之相連的I/0引腳可以用做輸入。1CPLD的原理與結(jié)構(gòu)典型CPLD的結(jié)構(gòu)MAX7000S是Intel早期推出的款CPLD。如圖2.22所示是MAX7000S器件的內(nèi)部結(jié)構(gòu),主要由以下部件構(gòu)成:宏單元(Macrocells),可編程連線陣列(ProgrammableInterconnetArray,PIA)和1/0控制塊WOControlBlocks)。宏單元是CPLD的基本結(jié)構(gòu),用來實(shí)現(xiàn)邏輯功能;可編程連線負(fù)責(zé)信號傳遞,連接所有的宏單元;I/0控制塊負(fù)責(zé)輸入/輸出的電氣特性控制,比如可以設(shè)定集電極開路輸出、擺率控制和三態(tài)輸出等。205FPGA的原理與結(jié)構(gòu)FPGA的原理與結(jié)構(gòu)查找表結(jié)構(gòu)大部分FPGA器件采用了查找表結(jié)構(gòu)。查找表的原理類似于ROM,其物理結(jié)構(gòu)是靜態(tài)存儲器(SRAM),N個輸入項(xiàng)的邏輯函數(shù)可以由一個2N位容量SRAM來實(shí)現(xiàn),函數(shù)值存放在SRAM中,SRAM的地址線起輸入線的作用,地址即輸入變堡值,SRAM的輸出為邏輯函數(shù)值,由連線開關(guān)實(shí)現(xiàn)與其他功能塊的連接。查找表結(jié)構(gòu)的功能非常強(qiáng)。N個輸入的查找表可以實(shí)現(xiàn)任意N個輸入變堂的組合邏輯函數(shù)。從理論上講,只要能夠增加輸入信號線和擴(kuò)大存儲器容量,用查找表就可以實(shí)現(xiàn)任意輸入變量的邏輯函數(shù)。1FPGA的原理與結(jié)構(gòu)CycloneIV器件結(jié)構(gòu)CycloneIV器件是Intel與TSMC(臺積電)優(yōu)化制造工藝推出的低成本、低功耗FPGA器件,提供以下兩種型號。?CycloneIVE:低功耗、低成本。?CycloneIVGX:低功耗、低成本,集成了3.125Gbps收發(fā)器。兩種型號器件均采用60run低功耗工藝。206FPGA/CPLD的編程元件FPGA/CPLD的編程元件熔絲型開關(guān)熔絲型開關(guān)是最早的可編程元件,它由可以用電流熔斷的熔絲組成。使用熔絲編程技術(shù)的可編程邏輯器件如PROM、EPLD等。一般在需要編程的互連節(jié)點(diǎn)上設(shè)置相應(yīng)的熔絲開關(guān),在編程時,根據(jù)設(shè)計的熔絲圖文件,需保持連接的節(jié)點(diǎn)保留熔絲,需去除連接的節(jié)點(diǎn)燒掉熔絲。1FPGA/CPLD的編程元件反熔絲結(jié)構(gòu)熔絲型開關(guān)要求的編程電流大,占用的芯片面積大。為了克服熔絲型開關(guān)的缺點(diǎn),出現(xiàn)了反熔絲編程技術(shù)。反熔絲技術(shù)主要通過擊穿介質(zhì)來達(dá)到連通的目的。反熔絲元件在未編程時處于開路狀態(tài),編程時,在其兩端加上編程電壓,反熔絲就會由高阻抗變?yōu)榈妥杩梗瑥亩鴮?shí)現(xiàn)兩個極間的連通,且在編程電壓撤除后也一直處于導(dǎo)通狀態(tài)。2FPGA/CPLD的編程元件浮柵編程器件浮柵編程技術(shù)包括紫外線擦除、電編程的EPROM、電擦除電編程的EEPROM及Flash閃速存儲器,這三種存儲器都是用浮柵存儲電荷的方法來保存編程數(shù)據(jù)的,因此在斷電時,存儲的數(shù)據(jù)是不會丟失的。EPROM的存儲內(nèi)容不僅可以根據(jù)需要來編制,而且當(dāng)需要更新存儲內(nèi)容時,還可以將原存儲內(nèi)容抹去,再寫入新的內(nèi)容。3FPGA/CPLD的編程元件SRAM編程元件SRAM(StaticRAM)是指靜態(tài)存儲器,大多數(shù)FPGA采用SRAM存儲配置數(shù)據(jù)。一個SRAM單元由兩個CMOS反相器和一個用來控制讀/寫的MOS傳輸開關(guān)構(gòu)成,其中每個CMOS反相器包含兩個晶體管(一個下拉N溝道晶體管和一個上拉P溝道晶體管)。因此,一個SRAM基本單元是由5個或6個晶體管組成的。407邊界掃描測試技術(shù)邊界掃描測試技術(shù)SRAM編程元件隨著器件變得越來越復(fù)雜,對器件的測試變得越來越困難。ASIC電路生產(chǎn)批量小,功能于變?nèi)f化,很難用一種固定的測試策略和測試方法來驗(yàn)證其功能。為了解決超大規(guī)模集成電路(VLSI)的測試問題,自1986年開始,IC領(lǐng)域的專家成立了聯(lián)合測試行動組CJointTestActionGroup,JTAG),并制定出了IEEE1149.1邊界扣描測試(BoundaryScanTest,BST)技術(shù)規(guī)范。408FPGA/CPLD的編程與配置FPGA/CPLD的編程與配置在系統(tǒng)可編程FPG蟻CPLD都支持在系統(tǒng)可編程功能,所謂在系統(tǒng)可編程(InSystemProgrammable,ISP),指的是對器件、電路板或整個電子系統(tǒng)的邏輯功能可隨時進(jìn)行修改或重構(gòu)的能力。這種重構(gòu)或修改可以發(fā)生在產(chǎn)品設(shè)計、生產(chǎn)過程的任意環(huán)節(jié),甚至是在交付用戶后。在系統(tǒng)可編程技術(shù)使器件的編程變得容易,允許用戶先制板,后編程,在調(diào)試過程中發(fā)現(xiàn)問題,可在基本不改動硬件電路的前提下,通過對FPGNCPLD的修改設(shè)計和重新配置,實(shí)現(xiàn)邏輯功能的改動,使設(shè)計和調(diào)試變得方便。1FPGA/CPLD的編程與配置FPGA器件的配置FPGA器件是基于SRAM結(jié)構(gòu)的,由于SRAM的易失性,每次加電時,配置數(shù)據(jù)都必須重新構(gòu)造。Intel?FPGA器件主要配置方式(ConfigurationScheme)有如下幾種。JTAG方式:用Intel下載電纜通過JTAG接口完成。AS方式(ActiveSerialConfigurationMode):主動串行配置方式,由FPGA器件引導(dǎo)配置過程,它控制外部存儲器和初始化過程。PS方式(PassiveSerialConfigurationMode):被動串行配置方式,由外部主機(jī)(Host)控制配置過程。2FPGA/CPLD的編程與配置CycloneIV器件的編程CycloneIV器件支持的配置方式有多種,這里只介紹最常用的三種:JTAG方式、AS方式和PS方式。其中,以JTAG方式和AS方式最為重要。一般的FPGA實(shí)驗(yàn)板,多采用AS+JTAG的方式,這樣可以用JTAG方式調(diào)試,程序調(diào)試無誤之后,再用AS方式把程序燒到配置芯片里去,將配置文件固化到實(shí)驗(yàn)板上,達(dá)到脫機(jī)運(yùn)行的目的。CycloneIV器件的配置方式是通過MSEL引腳設(shè)置為不同的電平組合來選擇的。309Intel的FPGA/CPLDIntel的FPGA/CPLDStratix高端FPGA家族系列Stratix高端FPGA家族(Family)系列從I代、II代發(fā)展到現(xiàn)在的StratixV、Stratix10等。StratixII器件采用1.2V、90nm工藝制作,容量從15600~179400個等效LE和多達(dá)9Mb的嵌入式RAM。1Intel的FPGA/CPLDCyclone低成本FPGA家族系列Cyclone低成本FPGA系列從I代、II代、III代發(fā)展到CycloneIV、CycloneV、Cyclone10。CycloneII器件采用90nm工藝制作;Cyclone器件的工藝是130nm。Cyclone和CycloneII器件目前已停產(chǎn)。CycloneIII器件采用65run低功耗工藝制作,能提供豐富的邏輯、存儲器和DSP功能,CycloneIIIFPGA含有5000~120000萬個邏輯單元(LE),288個DSP乘法器,存儲器容量大幅增加,每個RAM塊增加到9Kb,最大容籃達(dá)到4Mb,18位乘法器數(shù)噩也達(dá)到288個。3Intel的FPGA/CPLDArria中端FPGA家族系列如a是面向中端應(yīng)用的FPGA系列,用于對成本和功耗敏感的收發(fā)器以及嵌入式應(yīng)用。ArriaGX器件2007年推出,采用90nm工藝。收發(fā)器速率為3.125Gbps,支持PCie、以太網(wǎng)、SerialRapidIO等多種協(xié)議。心riaII器件基于40nm工藝,其架構(gòu)包括ALM、DSP模塊和嵌入式RAM,以及PCIExpress硬核。ArriaII包括兩個型號:ArriaIIGX和ArriaIIGZ,后者功能更強(qiáng)一些。210FPGA/CPLD的發(fā)展趨勢FPGA/CPLD的發(fā)展趨勢FPGA/CPLD在40年的時間中取得了巨大成功,在性能、成本、功耗、容堂和編程能力方面不斷提升。1.向高密度、高速度、寬頻帶、高保密方向進(jìn)一步發(fā)展:14nm制作工藝目前已用于FPGA/CPLD,FPGA在性能、容量方面取得的進(jìn)步非常顯著。2.向低電壓、低功耗、低成本、低價格的方向發(fā)展:功耗已成為電子設(shè)計開發(fā)中錄重要的考慮因素之一,影響著最終產(chǎn)品的體積、重噩和效率。3.向IP軟/硬核復(fù)用、系統(tǒng)集成的方向發(fā)展:FPGA平臺已經(jīng)廣泛嵌入RAM/ROM、FIFO等存儲器模塊,以及DSP模塊、硬件乘法器等,可實(shí)現(xiàn)快速的乘累加操作。感謝觀看,再見!FPGA設(shè)計與VHDL實(shí)現(xiàn)FPGA設(shè)計與VHDL實(shí)現(xiàn)QuartusPrime使用指南第三章01QuartusPrime原理圖設(shè)計QuartusPrime原理圖設(shè)計半加器原理圖設(shè)計輸入1.輸入源設(shè)計文件選擇菜單File--New,在彈出的New對話框中選擇源文件的類型,本例選擇BlockDiagram/SchematicFile類型。在原理圖中調(diào)入與門(and2)、異或門(xor)、輸入引腳(input)、輸出引腳(output)等元件,并將這些元件連線,最終構(gòu)成半加器電路。1QuartusPrime原理圖設(shè)計半加器原理圖設(shè)計輸入2.創(chuàng)建工程每個設(shè)計都是一項(xiàng)工程(Project),所以還必須創(chuàng)建工程。這里利用NewProjectWizard建立工程,在此過程中要設(shè)定工程名、目標(biāo)器件、選用的綜合器和仿真器等。1QuartusPrime原理圖設(shè)計1位全加器設(shè)計輸入1.將半加器創(chuàng)建成一個元件符號選擇菜單File-Create/Update-CreateSymbolFilesforCurrentFile。2.全加器原理圖輸入(1)創(chuàng)建一個新的原理圖文件。(2)選擇菜單Edit-InsertSymbolC或者雙擊圖中空白處),出現(xiàn)Symbol元器件輸入對話框。(3)在原理圖中繼續(xù)調(diào)入或門(OR2),輸入引腳(INPUT)、輸出引腳(OUTPUT)等元件,將這些元件連線,構(gòu)成1位全加器。2QuartusPrime原理圖設(shè)計1位全加器的編譯完成了工程文件的創(chuàng)建和源文件的輸入,即可對設(shè)計進(jìn)行編譯。在編譯前,必須進(jìn)行必要的設(shè)置。1.編譯模式的設(shè)置可以設(shè)置編譯模式。選擇菜單Assignments-Settings,在如圖3.16所示的Settings窗口中,單擊左邊的CompilationProcessSettings項(xiàng),在右邊出現(xiàn)的CompilationProcessSettings窗口中,選擇使能UseSmartcompilation和Preservefewernodenrunestosave小skspace等選項(xiàng)。3QuartusPrime原理圖設(shè)計1位全加器的編譯2.編譯選擇菜單Project-SetasTop-LevelEntity,將全加器fulladder.bdf設(shè)為頂層實(shí)體,對其進(jìn)行編譯。QuartusPrime編譯器是由幾個處理模塊構(gòu)成的,分別對設(shè)計文件進(jìn)行分析檢錯、綜合、適配等,并產(chǎn)生多種輸出文件,如定時分析文件、器件編程文件、各種報告文件等。3QuartusPrime原理圖設(shè)計1位全加器的仿真1.建立QuartusPrime和Modelsim的鏈接如果是第次使用ModelSim-Altera,需建立QuartusPrime和Modelsim的鏈接。在QuartusPrime主界面執(zhí)行Tools-Options命令,彈出Options對話框,在Options頁面的Category欄中選中EDAToolOptions,在右邊的ModelSim-Altera欄中指定ModelSim-Altera10.4d的安裝路徑,本例中為C:\intelFPGA\17.0\modelsim_ase\win32aloem。4QuartusPrime原理圖設(shè)計1位全加器的仿真3.建立測試腳本(TestBench)建立測試腳本文件(TestBench),TestBench可以自己寫,也可以由QuartusPrime自動生成,不過生成的只是模板,核心功能語句還需自己添加。在QuartusPrime主界面中選擇菜單Processing--+Start-+StartTestBenchTemplateWriter,會自動生成TestBench模板文件。4QuartusPrime原理圖設(shè)計1位全加器的仿真4.為TestBench文件添加核心功能語句打開自動生成的TestBench模板文件,在其中添加測試的核心功能語句,存盤退出。4QuartusPrime原理圖設(shè)計1位全加器的下載1.器件和引腳的鎖定2.復(fù)用引腳的設(shè)置3.未用引腳狀態(tài)的設(shè)置4.選擇配置方式和配置器件5.更多編程文件格式的生成6.重新編譯7.編程下載8.觀察下載效果5QuartusPrime原理圖設(shè)計配置數(shù)據(jù)固化與脫機(jī)運(yùn)行如果需要將配置數(shù)據(jù)固化,可以將配置數(shù)據(jù)燒寫至EPCS芯片中,可達(dá)到脫機(jī)獨(dú)立運(yùn)行的目的,仍以AIGO_C4開發(fā)板為目標(biāo)板說明配置數(shù)據(jù)固化的步驟。I.將.sof在線配置文件轉(zhuǎn)換為燒寫配置芯片的.jic編程文件2.燒寫.jic文件602基于IP核的設(shè)計基于IP核的設(shè)計用LPM_COUNTER設(shè)計模24方向可控計數(shù)器QuartusPrime軟件為設(shè)計者提供了豐富的IP核,包括參數(shù)化宏功能模塊(LibraryParameterizedMegafunction,LPM)、MegaCore等,這些IP核均針對Altera的FPGA器件做了優(yōu)化,基于IP核完成設(shè)計可極大提高電路設(shè)計的效率與可靠性。1基于IP核的設(shè)計用LPM_COUNTER設(shè)計模24方向可控計數(shù)器選擇菜單Tools-IPCatalog,在QuartusPr皿e界面中會出現(xiàn)1P核目錄OPCatalog)窗口,自動將目標(biāo)器件支持的IP核列出來。CycloneIVE器件支待的IP核目錄,包括基本功能類(BasicFunctions)、數(shù)字信號處理類(DSP)、接口協(xié)議類(InterfaceProtocols)等,每一類又包括若干子類。1基于IP核的設(shè)計用LPM_COUNTER設(shè)計模24方向可控計數(shù)器在QuartusPrime軟件中,用IP目錄(IpCatalog)和參數(shù)編輯器(ParameterEditor)代替QuartusII中的theMegaWizardPlug-InManager,用ParameterEditor可定制IP核的端口(Ports)和參數(shù)(Parameters);Qsys則用千系統(tǒng)級的IP集成,連接IP核和各子系統(tǒng),提高FPGA設(shè)計的效率。1基于IP核的設(shè)計用LPM_COUNTER設(shè)計模24方向可控計數(shù)器1.創(chuàng)建工程,定制LPM_COUNTER模塊參照上節(jié)的內(nèi)容,利用NewProjectWizard建立工程,本例中設(shè)立的工程名為count24。在QuartusPrime主界面的IPCatalog欄中,在BasicFunctions的Arithmetic目錄下找到LPM_COUNTER模塊,雙擊該模塊,出現(xiàn)SaveIPVariation對話框。1基于IP核的設(shè)計用LPM_COUNTER設(shè)計模24方向可控計數(shù)器2.編譯單擊Finish按鈕完成counter24模塊的設(shè)置后會自動出現(xiàn)QuartusPrimeIPFiles對話框,單擊Yes按鈕選擇將生成的counter24.qip文件加入到當(dāng)前工程中。選擇菜單Project-SetasTop-LevelEntity,將counter24.qip設(shè)為頂層實(shí)體(或者將前面生成的counter24.vhd設(shè)置為頂層實(shí)體亦可),選擇菜單Processing-StartCompilation,或者單擊P按鈕,對工程進(jìn)行編譯。1基于IP核的設(shè)計用LPM_COUNTER設(shè)計模24方向可控計數(shù)器3.仿真參照3.1.4節(jié)的內(nèi)容用ModelSim-Altera對計數(shù)器進(jìn)行仿真,過程不再重復(fù)。在QuartusPrime主界面中選擇菜單Processing-Start-StartTestBenchTemplateWriter,自動生成TestBench文件,在當(dāng)前工程所在的C:\VHDL\counter\simulation\modelsim目錄下打開自動生成的TestBench文件(counter24.vht),在其中添加激勵語句。1基于IP核的設(shè)計用LPM_ROM模塊實(shí)現(xiàn)4x4無符號數(shù)乘法器1.定制LPM_ROM模塊2.原理圖輸入3.mif文件的生成4.編譯5.仿真2基于IP核的設(shè)計用LPM_ROM模塊實(shí)現(xiàn)4x4無符號數(shù)乘法器1.定制LPM_ROM模塊在IPCatalog---DeviceFamily-InstalledIP-Library-BasicFunctions的OnChipMemory目錄下找到lpm_rom宏模塊,雙擊該模塊,出現(xiàn)SaveIPVariation對話框。單擊OK按鈕,啟動MegaWizardPlug-InManager,對lpm_rom模塊進(jìn)行參數(shù)設(shè)置。2基于IP核的設(shè)計用LPM_ROM模塊實(shí)現(xiàn)4x4無符號數(shù)乘法器界面中設(shè)置芯片的系列、數(shù)據(jù)線和存儲單元數(shù)目(地址線寬度),本例中數(shù)據(jù)線寬度設(shè)為8bits,存儲單元的數(shù)目為256。在Whatshouldthememoryblocktypebe?欄中選擇以何種方式實(shí)現(xiàn)存儲器,由于芯片的不同,選擇也會不同,一般按照默認(rèn)選擇Auto即可。在最下面的Whatclockingmethodwouldyouliketouse?欄中選擇時鐘方式,可以使用2基于IP核的設(shè)計用LPM_ROM模塊實(shí)現(xiàn)4x4無符號數(shù)乘法器界面中設(shè)置芯片的系列、數(shù)據(jù)線和存儲單元數(shù)目(地址線寬度),本例中數(shù)據(jù)線寬度設(shè)為8bits,存儲單元的數(shù)目為256。在Whatshouldthememoryblocktypebe?欄中選擇以何種方式實(shí)現(xiàn)存儲器,由于芯片的不同,選擇也會不同,一般按照默認(rèn)選擇Auto即可。在最下面的Whatclockingmethodwouldyouliketouse?欄中選擇時鐘方式,可以使用2基于IP核的設(shè)計用LPM_ROM模塊實(shí)現(xiàn)4x4無符號數(shù)乘法器2.原理圖輸入選擇菜單氏le_.New,在彈出的New對話框中,選擇源文件的類型為BlockDiagram/SchematicFile,新建一個原理圖文件。在原理圖中調(diào)入剛定制好的my_rom模塊,再調(diào)入input、output等元件,連線(注意總線型連線的網(wǎng)表命名方法),完成原理圖設(shè)計,如圖3.53所示是基千LPM_ROM實(shí)現(xiàn)的4x4無符號數(shù)乘法器原理圖,將該原理圖存盤(本例為C:\VHDL\mult—rom\mult_ip.bdf)。2基于IP核的設(shè)計用LPM_ROM模塊實(shí)現(xiàn)4x4無符號數(shù)乘法器3.mif文件的生成ROM存儲器的內(nèi)容存儲在*.mif文件中,生成*.mif文件的步驟如下:在QuartusPrime軟件中,選擇菜單File-New,在New對話框中選擇MemoryFiles下的MemoryInitializationFile,單擊OK按鈕,在對話框中填寫ROM的大小為256,數(shù)據(jù)位寬取8,單擊OK按鈕,將出現(xiàn)空的mif數(shù)據(jù)表格,如圖3.56所示,可直接將乘法結(jié)果填寫到表中,填好后保存文件,取名為mult—rom.mif.2基于IP核的設(shè)計用LPM_ROM模塊實(shí)現(xiàn)4x4無符號數(shù)乘法器4.編譯至此已完成源文件輸入,參照前面的例子,利用NewProjectWizard建立工程,本例中設(shè)立的工程名為design,選擇菜單Project-SetasTop-LevelEntity,將mult_ip.bdf設(shè)為頂層實(shí)體,選擇菜單Processing-StartCompilation(或者單擊I>按鈕),對設(shè)計進(jìn)行編譯??梢园l(fā)現(xiàn),本例只使用了2056(8x256)bits的存儲器構(gòu)成,沒有用到LE單元。2基于IP核的設(shè)計用LPM_ROM模塊實(shí)現(xiàn)4x4無符號數(shù)乘法器5.仿具本例的TestBench激勵文件如例3.4所示。2基于IP核的設(shè)計用LPM_ROM模塊實(shí)現(xiàn)4x4無符號數(shù)乘法器2基于IP核的設(shè)計用LPM_ROM模塊實(shí)現(xiàn)4x4無符號數(shù)乘法器2基于IP核的設(shè)計用LPM_ROM模塊實(shí)現(xiàn)4x4無符號數(shù)乘法器203SignalTapII的使用方法SignalTapII的使用方法用LPM_COUNTER設(shè)計模24方向可控計數(shù)器QuartusPrime的嵌入式邏輯分析儀Signa!TapII為設(shè)計者提供了種方便高效的硬件測試手段,它可以隨設(shè)計文件起下載到目標(biāo)芯片中,捕捉目標(biāo)芯片內(nèi)信號節(jié)點(diǎn)或總線上的數(shù)據(jù),將這些數(shù)據(jù)暫存于目標(biāo)芯片的嵌入式RAM中,然后通過器件的JTAG端口將采到的信息和數(shù)據(jù)送到計算機(jī)進(jìn)行顯示,供用戶分析。本節(jié)以正弦波信號產(chǎn)生器為例,介紹嵌入式邏輯分析儀SignalTapII的使用方法。正弦信號產(chǎn)生器的源程序如例3.5所示。1SignalTapII的使用方法用LPM_COUNTER設(shè)計模24方向可控計數(shù)器1SignalTapII的使用方法用LPM_COUNTER設(shè)計模24方向可控計數(shù)器1SignalTapII的使用方法用LPM_COUNTER設(shè)計模24方向可控計數(shù)器1SignalTapII的使用方法用LPM_COUNTER設(shè)計模24方向可控計數(shù)器1SignalTapII的使用方法用LPM_COUNTER設(shè)計模24方向可控計數(shù)器1SignalTapII的使用方法用LPM_COUNTER設(shè)計模24方向可控計數(shù)器在使用邏輯分析儀之前,需要鎖定芯片和些關(guān)鍵的引腳,本例中,需要鎖定外部時鐘輸入(elk)、復(fù)位(cir)兩個引腳,為邏輯分析儀提供時鐘源,否則將得不到邏輯分析的結(jié)果。本例的引腳鎖定基于DE2-115(也可改為其他目標(biāo)板,如C4_MB)'先指定芯片為EP4CEll5F29C7,再將elk引腳鎖定為PIN—Y2(50MHz時鐘頻率輸入)。1SignalTapII的使用方法用LPM_COUNTER設(shè)計模24方向可控計數(shù)器完成引腳鎖定并通過編譯后,就進(jìn)入嵌入式邏輯分析儀SignalTapII的使用階段,分為新建SignalTapII文件、調(diào)入節(jié)點(diǎn)信號、SignalTapII參數(shù)設(shè)置、文件存盤編譯、下載和運(yùn)行分析等步驟。104QuartusPrime的優(yōu)化設(shè)置與時序分析SignalTapII的使用方法用LPM_COUNTER設(shè)計模24方向可控計數(shù)器1.編譯設(shè)置選擇菜單Assignments----Settings,在Settings對話框中,選擇CompilerSettings,在此頁面中,可以指定編譯器高層優(yōu)化的策略(Specifyhigh-leveloptimizationsettingsfortheCompiler)。2.網(wǎng)表查看器(NetlistViewer)工程編譯后,可以使用網(wǎng)表查看器(NetlistViewer)查看綜合后的網(wǎng)表結(jié)構(gòu),分析綜合結(jié)果是否與設(shè)想的一致。1SignalTapII的使用方法用LPM_COUNTER設(shè)計模24方向可控計數(shù)器3.ChipPlanner(器件規(guī)劃圖)工程編譯后,還可以使用ChipPlanner工具查看布局布線的詳細(xì)信息,顯示各個功能模塊間的布線資源,查看各個LUT的Fan-In、Fan-Out,布局連線的疏密程度,各模塊的位置,路徑延時,等等。1SignalTapII的使用方法用LPM_COUNTER設(shè)計模24方向可控計數(shù)器4.器件資源利用報告編譯后,還可以查看器件資源利用信息,這些信息對分析設(shè)計中的布局布線問題有時非常必要。要確定資源使用情況,可查看CompilationReport中的FlowSummary,得到邏輯資源利用百分比,用了多少LE單元、引腳、存儲器、乘法器、鎖相環(huán)等。1SignalTapII的使用方法用LPM_COUNTER設(shè)計模24方向可控計數(shù)器5.設(shè)計可靠性檢查選擇菜單Assignments-Settings,在Settings對話框的Category中選中DesignAssistant,然后在右邊的對話框中使能RunDesignAssistantduringcompilation選項(xiàng),對工程編譯后,可在CompilationReport中查看DesignAssistant報告。1感謝觀看,再見!FPGA設(shè)計與VHDL實(shí)現(xiàn)FPGA設(shè)計與VHDL實(shí)現(xiàn)VHDL設(shè)計初步第四章01VHDL簡介VHDL簡介VHDL是種標(biāo)準(zhǔn)化程度較高的硬件描述語言,它源于美國國防部CDOD)提出的超高速集成電路計劃,其目的是為了在各個承擔(dān)國防部訂貨的集成電路廠商間建立個統(tǒng)的設(shè)計數(shù)據(jù)和文檔交換格式,其名字的全稱是超高速集成電路硬件描述語言。VHDL簡介?1983年VHDL語言正式提出。?1987年IEEE將VHDL采納為標(biāo)準(zhǔn),即"IEEEStd1076-987",從而使VHDL成為硬件描述語言的業(yè)界標(biāo)準(zhǔn)之一,各EDA公司相繼推出自己的VHDL設(shè)計環(huán)境,或宣布自己的設(shè)計工具支持VHDL。?1993年,IEEE對VHDL做了修訂,從更高的抽象層次和系統(tǒng)描述能力上擴(kuò)展了VHDL的功能,公布了新版本的VHDL標(biāo)準(zhǔn),即"IEEEStd1076一1993"版本。?1997年,VHDL綜合程序包"IEEEStd1076.3-1997"發(fā)布。VHDL簡介?2002年IEEE公布了更新的VHDL標(biāo)準(zhǔn)版本,即"IEEEStd1076VHDL的出現(xiàn)是為了適應(yīng)數(shù)字系統(tǒng)設(shè)計日益復(fù)雜的需求,以及設(shè)計者在設(shè)計可重用、可移植性方面提出的更高的要求,目前VHDL已被廣泛用于電路與系統(tǒng)設(shè)計、數(shù)字邏輯綜合、電路仿真等領(lǐng)域,可勝任數(shù)字系統(tǒng)的結(jié)構(gòu)、行為、功能描述。同時,隨著技術(shù)和工藝的進(jìn)步,VHDL語言也不斷更新,以跟上時代的發(fā)展和進(jìn)步。VHDL簡介概括地說,VHDL語言具有以下特點(diǎn)。1.語法嚴(yán)謹(jǐn),結(jié)構(gòu)規(guī)范,移植性強(qiáng)。VHDL語言是種被IEEE標(biāo)準(zhǔn)化的硬件描述語言,幾乎被所有的EDA工具所支持,可移植性強(qiáng),便于多人合作進(jìn)行大規(guī)模復(fù)雜電路的設(shè)計;VHDL語言語法嚴(yán)謹(jǐn)、規(guī)范,具備強(qiáng)大的電路行為描述能力,尤其擅長于復(fù)雜的多層次結(jié)構(gòu)的數(shù)字系統(tǒng)設(shè)計。VHDL簡介2.數(shù)據(jù)類型豐富:VHDL有整型、布爾型、字符型、位型(B心、位矢掀型(Bit_Vector)、時間型(Time)等數(shù)據(jù)類型,這些數(shù)據(jù)類型具有鮮明的物理意義,VHDL也允許設(shè)計者自己定義數(shù)據(jù)類型,自己定義的數(shù)據(jù)類型可以是標(biāo)準(zhǔn)數(shù)據(jù)類型復(fù)合而成的枚舉、數(shù)組或記錄(Record)等類型。VHDL簡介3.支持層次結(jié)構(gòu)設(shè)計:VHDL適于采用Top-down的設(shè)計方法,對系統(tǒng)進(jìn)行分模塊、分層次描述,同樣也適于Bottom-up的設(shè)計思路;在對數(shù)字系統(tǒng)建模時支持結(jié)構(gòu)描述、數(shù)據(jù)流描述和行為描述,可以像軟件程序那樣描述模塊的行為特征,這時設(shè)計者注意力可以集中在模塊的功能上,而不是具體實(shí)現(xiàn)結(jié)構(gòu)上。設(shè)計人員可根據(jù)需要靈活地運(yùn)用不同的設(shè)計風(fēng)格。VHDL簡介4.獨(dú)立于器件和設(shè)計平臺:V印衛(wèi),具有很好的適應(yīng)性,其設(shè)計獨(dú)立于器件和平臺,可迅速移植到其他平臺或其他器件,用戶在設(shè)計時對器件結(jié)構(gòu)與細(xì)節(jié)可不用考慮。VHDL簡介5.便于設(shè)計復(fù)用:VHDL提供了豐富的庫、程序包,便于設(shè)計復(fù)用,還提供了配置、子程序、函數(shù)、過程等結(jié)構(gòu)便于設(shè)計者構(gòu)建自己的設(shè)計庫。VHDL簡介VHDL的出現(xiàn)是為了適應(yīng)數(shù)字系統(tǒng)設(shè)計日益復(fù)雜的需求,以及設(shè)計者在設(shè)計可重用、可移植性方面提出的更高的要求,目前VHDL已被廣泛用于電路與系統(tǒng)設(shè)計、數(shù)字邏輯綜合、電路仿真等領(lǐng)域,可勝任數(shù)字系統(tǒng)的結(jié)構(gòu)、行為、功能描述。同時,隨著技術(shù)和工藝的進(jìn)步,VHDL語言也不斷更新,以跟上時代的發(fā)展和進(jìn)步。02VHDL組臺電路設(shè)計VHDL組臺電路設(shè)計1.用VHDL設(shè)計三人表決電路電路表示的邏輯函數(shù)可表示為:f=ab+be+ac。2.用VHDL設(shè)計二進(jìn)制加法器加法器也是常用的組合邏輯電路。3.用VHDL設(shè)計BCD碼加法器BCD碼加法器,采用的是逄十進(jìn)一的規(guī)則。VHDL組臺電路設(shè)計從書寫形式看VHDL程序具有以下特點(diǎn)。1.VHDL每個語句的最后一般用分號(;)結(jié)束。2.VHDL程序書寫格式自由,可通過增加空格、轉(zhuǎn)行等提高程序的可讀性。3.以“一“開始的語句為注釋語句,用來增強(qiáng)程序的可讀性和可維護(hù)性,注釋語句不參與編譯。4.VHDL關(guān)鍵字(或稱為保留字)對大小寫不敏感(大寫、小寫均可)。VHDL組臺電路設(shè)計有關(guān)的VHDL語法如下。1.INTEGER數(shù)據(jù)類型。將輸入數(shù)據(jù)a、b,輸出數(shù)據(jù)sum定義為INTEGER(整數(shù))數(shù)據(jù)類型,INTEGER型數(shù)據(jù)是VHDL的10種標(biāo)準(zhǔn)數(shù)據(jù)類型之一,不須做任何聲明即可使用。INTEGER型的數(shù)可包括正整數(shù)、負(fù)整數(shù)和零。在可綜合的設(shè)計中,要求用RANGE語句限定其取值范圍,這樣綜合器會根據(jù)所限定的范圍來決定表示此信號或變量的二進(jìn)制位數(shù)。比如在上面的例子中,a、b(RANGEOTO16)會用4位二進(jìn)制數(shù)表示,sum(RANGEOTO32)會用5位二進(jìn)制數(shù)表示。03VHDL時序電路設(shè)計VHDL組臺電路設(shè)計1.用VHDL設(shè)計D觸發(fā)器

時序電路最基本的器件是觸發(fā)器,。2.用VHDL設(shè)計計數(shù)器計數(shù)器是另一種典型的時序邏輯電路,用VHDL能夠非常方便地描述各種功能的計數(shù)器電路。感謝觀看,再見!FPGA設(shè)計與VHDL實(shí)現(xiàn)FPGA設(shè)計與VHDL實(shí)現(xiàn)VHDL結(jié)構(gòu)與要素第五章01實(shí)體實(shí)體程序通常包含實(shí)體(ENTITY)、結(jié)構(gòu)體(ARCHITECTURE)、配置(CONFIGURATION)、程序包(PACKAGE)和庫(LIBRARY)五個部分。其中,實(shí)體和結(jié)構(gòu)體是每個程序必備的,是最基本的VHDL程序組成部分。實(shí)體名可自己命名,般根據(jù)模塊的功能或特點(diǎn)取名;GENERIC類屬說明語句用于定義類屬參數(shù);PORT語句用于定義模塊端口信息;方括號內(nèi)的語句可選,只在需要時加上。實(shí)體類屬參數(shù)說明用類屬說明語句可指定參數(shù),如總線寬度等,它以關(guān)鍵詞GENERIC引導(dǎo)個類屬參量表,在表中提供時間參數(shù)或總線寬度等信息,通過參數(shù)傳遞,很容易改變一個設(shè)計實(shí)體內(nèi)部電路規(guī)模。采用類屬說明語句定義了加法器操作數(shù)的數(shù)據(jù)寬度,如果要改變加法器的規(guī)模,比如改為8位、32位的加法器,只需改變類屬參量width的賦值即可。1實(shí)體端口說明端口是實(shí)體與外部進(jìn)行通信的接口,類似于電路圖符號的引腳。端口說明語句由PORT引導(dǎo),包括端口名、端口模式、數(shù)據(jù)類型等。端口名是賦予每個實(shí)體外部引腳的名稱,通常用英文字母,或者英文字母加數(shù)字命名,如dO、sel、qO等。202結(jié)構(gòu)體實(shí)體類屬參數(shù)說明結(jié)構(gòu)體(ARCHITECTURE)也稱為構(gòu)造體,結(jié)構(gòu)體是對實(shí)體功能的具體描述。它可以描述實(shí)體的邏輯行為、功能,也可以描述實(shí)體的內(nèi)部構(gòu)造、所用元件及內(nèi)部連接關(guān)系。1實(shí)體類屬參數(shù)說明1.結(jié)構(gòu)體名結(jié)構(gòu)體名可自行定義,"OF"后面的實(shí)體名指明了該結(jié)構(gòu)體對應(yīng)的實(shí)體。2.結(jié)構(gòu)體說明語句結(jié)構(gòu)體說明語句用于對結(jié)構(gòu)體內(nèi)部將要使用的信號、常數(shù)、數(shù)據(jù)類型、元件、函數(shù)和過程等加以說明,結(jié)構(gòu)體說明語句必須放在關(guān)鍵詞ARCHITECTURE和BEGIN之間。1實(shí)體類屬參數(shù)說明3.結(jié)構(gòu)體功能描述語句結(jié)構(gòu)體功能描述語旬位于BEGIN和END之間,具體描述結(jié)構(gòu)體的行為、功能或者連接關(guān)系。1實(shí)體列出了5種功能描述語句。塊語句:塊語旬是由一系列并行語句構(gòu)成的組合體,其功能是將結(jié)構(gòu)體中的并行語句組成一個或多個子模塊。進(jìn)程語句:進(jìn)程由順序語句組成,用以將從外部獲得的信號值或內(nèi)部運(yùn)算數(shù)據(jù)賦值給其他的信號。實(shí)體信號賦值語句:將設(shè)計實(shí)體內(nèi)的處理結(jié)果賦值給定義的信號或界面端口。子程序調(diào)用語句:可以調(diào)用進(jìn)程或參數(shù),并將獲得的結(jié)果賦值給信號。元件例化語句:將其他的設(shè)計實(shí)體打包成元件,調(diào)用元件并將元件的端口與其他元件、信號或高層實(shí)體的界面端口進(jìn)行連接。實(shí)體4.結(jié)構(gòu)體描述方式結(jié)構(gòu)體主要有3種描述方式,即行為描述、數(shù)據(jù)流描述和結(jié)構(gòu)描述。我們給結(jié)構(gòu)體命名時通常用不同的名字來區(qū)分這3種描述方式,比如用behavior、dataflow和structural分別表示行為、數(shù)據(jù)流和結(jié)構(gòu)描述,這樣可使我們在閱讀VHDL程序時,能更清楚地了解設(shè)計者采用的描述方式。03VHDL庫和程序包VHDL庫和程序包庫庫(LIBRARY)是已編譯數(shù)據(jù)的集合,存放程序包定義、實(shí)體定義、結(jié)構(gòu)體定義和配置定義,庫以VHDL源文件的形式存在,在綜合時綜合器可隨時讀入使用,便于設(shè)計者共享己編譯過的設(shè)計結(jié)果。1VHDL庫和程序包庫常用的VHDL庫有:STD庫、WORK庫、IEEE庫、ASIC庫和用戶自定義庫等。1VHDL庫和程序包庫一般在基于FPGA/CPLD的開發(fā)中,打開IEEE庫中的STD_LOGIC_ll64、STD_LOGIC_ARITH、STD_LOGIC_SIGNED和STD_LOGIC_UNSIGNED這4個程序包基本夠用,需注意的是在使用前,必須書寫聲明語句。除STD庫和WORK庫外,其他庫在使用前都必須顯式地聲明,另外,還需使用USE語句指明庫中的程序包。1VHDL庫和程序包庫在實(shí)際設(shè)計中,若用USE語句直接指定該項(xiàng)目名,可節(jié)省綜合器綜合時從程序包中查找相關(guān)項(xiàng)目與元件的時間。在VHDL中,庫的說明語句總是放在實(shí)體單元前面。這樣,在實(shí)體中就可以任意使用庫中的數(shù)據(jù)和文件。由此可見,庫的用處在于使設(shè)計者共享已經(jīng)完成的設(shè)計成果。VHDL允許在同一個實(shí)體中同時打開多個不同的庫,但庫之間必須是相互獨(dú)立的。1VHDL庫和程序包庫在實(shí)際設(shè)計中,若用USE語句直接指定該項(xiàng)目名,可節(jié)省綜合器綜合時從程序包中查找相關(guān)項(xiàng)目與元件的時間。在VHDL中,庫的說明語句總是放在實(shí)體單元前面。這樣,在實(shí)體中就可以任意使用庫中的數(shù)據(jù)和文件。由此可見,庫的用處在于使設(shè)計者共享已經(jīng)完成的設(shè)計成果。VHDL允許在同一個實(shí)體中同時打開多個不同的庫,但庫之間必須是相互獨(dú)立的。2VHDL庫和程序包庫程序包(PACKAGE)主要用來存放各個設(shè)計能夠共享的信號說明、常瘟定義、數(shù)據(jù)類型、子程序說明、屬性說明和元件說明等部分。如果要使用程序包中的某些說明和定義,設(shè)計者只要用USE語句聲明下即可。程序包由兩個部分組成的:程序包首和程序包體。程序包首部分主要對數(shù)據(jù)類型、子程序、常暈、信號、元件、屬性和屬性指定等進(jìn)行說明,所有說明語句是對外可見的,這一點(diǎn)與實(shí)體說明部分相似。104配置配置配置主要用于指定實(shí)體和結(jié)構(gòu)體之間的對應(yīng)關(guān)系。一個實(shí)體可以有多個結(jié)構(gòu)體,每個結(jié)構(gòu)體對應(yīng)著實(shí)體的一種實(shí)現(xiàn)方案,但在每次綜合時,綜合器只能接受一個結(jié)構(gòu)體,通過配置語句可以為實(shí)體指定或配置一個結(jié)構(gòu)體;仿真時,可通過配置使仿真器為同實(shí)體配置不同的結(jié)構(gòu)體,從而使設(shè)計者比較不同結(jié)構(gòu)體的仿真差別。配置也可以用于指定元件和設(shè)計實(shí)體之間的對應(yīng)關(guān)系,或者為例化的各元件實(shí)體指定結(jié)構(gòu)體,從而形成個所希望的例化元件層次構(gòu)成的設(shè)計。05子程序子程序過程過程由過程首和過程體構(gòu)成,過程首不是必需的,如果僅僅在個結(jié)構(gòu)體中定義并調(diào)用過程,是不需要定義過程首的,只需要定義過程體;只有當(dāng)想要將所定義的過程打包成程序包入庫時,才需要定義過程首,這樣,這個過程就可以在任何設(shè)計中被調(diào)用。過程體由順序語句組成,調(diào)用過程即啟動了過程體順序語句的執(zhí)行。過程體中的說明語句是局部的,其有效范圍只限于該過程體內(nèi)部。1子程序函數(shù)函數(shù)與過程的定義有類似的地方,也有明顯的區(qū)別。函數(shù)也由函數(shù)首和函數(shù)體構(gòu)成,函數(shù)首不是必需的,可以只使用函數(shù)體,如果僅僅在個結(jié)構(gòu)體中定義并調(diào)用函數(shù),則不需要定義函數(shù)首,只需要定義函數(shù)體即可。在將所定義的函數(shù)打包成程序包入庫時,則需要定義函數(shù)首,這樣,這個函數(shù)就可以在任意設(shè)計中被調(diào)用。函數(shù)首由函數(shù)名、參數(shù)表和返回值的數(shù)據(jù)類型組成,而函數(shù)的具體功能在函數(shù)體中定義。206VHDL文字規(guī)則VHDL文字規(guī)則標(biāo)識符標(biāo)識符用來命名和區(qū)分端口、信號、變址或參數(shù)等,它表現(xiàn)為用26個大寫和小寫的英文,字符、0~9Clo個數(shù)字)和下畫線("_")組成的字符串。標(biāo)識符的書寫有兩個規(guī)范,VHDL'87規(guī)范和VHDL'93規(guī)范。一般將VHDL'87標(biāo)準(zhǔn)中定義的標(biāo)識符稱為短標(biāo)識符,將VHDL'93標(biāo)準(zhǔn)中定義的標(biāo)識符稱為擴(kuò)展標(biāo)識符。1VHDL文字規(guī)則標(biāo)識符VHDL'93標(biāo)準(zhǔn)中,擴(kuò)展標(biāo)識符的命名必須遵循下列規(guī)則:1.擴(kuò)展標(biāo)識符用反斜杠來分隔,例如:\addr_bus\。2.擴(kuò)展標(biāo)識符中允許包含圖形符號和空格等,例如:\addr&_bus\,\addr_bus\。3.擴(kuò)展標(biāo)識符的兩個反斜杠之間可以使用保留字,例如:\begin\。4.擴(kuò)展標(biāo)識符中允許多個下畫線相連。5.同名的擴(kuò)展標(biāo)識符和短標(biāo)識符不同,例如:\data\與data是不同的。6擴(kuò)展標(biāo)識符區(qū)分大小寫,例如:\data\與\DATA\是不同的標(biāo)識符。7.若擴(kuò)展標(biāo)識符中含有一個反斜杠,則應(yīng)該用兩個相鄰的反斜杠來代替。1VHDL文字規(guī)則數(shù)字VHDL中的數(shù)字主要表現(xiàn)為整數(shù)、實(shí)數(shù)和物理量文字三種形式。2VHDL文字規(guī)則字符串字符是用單引號括起的ASCII字符,可以是數(shù)值,也可以是符號或字母。字符串是一維的字符數(shù)組,須放在雙引號中。字符串可分為兩種,即文字字符串和數(shù)位字符串。307數(shù)據(jù)對象數(shù)據(jù)對象常量常量或稱為常數(shù),是定義后其值不再改變的數(shù)據(jù)對象,可在實(shí)體、結(jié)構(gòu)體、程序包、子程序和進(jìn)程中定義,具有全局性。常量在使用前必須進(jìn)行說明,只有進(jìn)行說明之后的常量才能在VHDL程序中使用。1數(shù)據(jù)對象變量變量只能在進(jìn)程和子程序(函數(shù)和過程)中定義和使用,是一個局部量。在仿真過程中,它不像信號那樣,到了規(guī)定的仿真時間才進(jìn)行賦值,變量的賦值是立即生效的。變量的主要作用是在進(jìn)程中作為臨時性的數(shù)據(jù)存儲單元。2數(shù)據(jù)對象變量在變暈定義語句中可以定義初始值,這是一個與變晝具有相同數(shù)據(jù)類型的常數(shù)值,初始值的定義不是必需的,并且只在仿真中有效,在綜合時,綜合器并不支持初始值設(shè)置。變盆作為局部晝,其有效范圍僅限于定義了變蜇的進(jìn)程或子程序中,另外,變盤的值將隨變云賦值語句先后順序的改變而改變,因此,變暈賦值語句與軟件語言中的串行語句類似。2數(shù)據(jù)對象信號信號常用來表示電路節(jié)點(diǎn)或內(nèi)部連線。信號通常在結(jié)構(gòu)體、程序包和實(shí)體中說明。信號和變量在賦值符號、適用范圍和行為特性等方面都是有明顯區(qū)別的。在進(jìn)程中,信號在進(jìn)程結(jié)束時賦值才起作用,而變量賦值是立即起作用的。3數(shù)據(jù)對象文件對文件進(jìn)行說明的一般格式為:FILE文件變量:TEXTIS方向“文件名“;從文件中讀出一行的格式是:READ蕁NE(文件變量,行變量);408VHDL數(shù)據(jù)類型VHDL數(shù)據(jù)類型VHDL中的信號、常量、常數(shù)等都要指定數(shù)據(jù)類型,VHDL提供了多種標(biāo)準(zhǔn)的數(shù)據(jù)類型,為方便設(shè)計,還可以由用戶自己定義數(shù)據(jù)類型。VHDL是種強(qiáng)類型語言,不同類型之間的數(shù)據(jù)不能相互傳遞。而且,數(shù)據(jù)類型相同,位長不同,也不能賦值。這樣,VHDL綜合工具很容易找出設(shè)計中的各種錯誤。VHDL數(shù)據(jù)類型預(yù)定義數(shù)據(jù)類型1.標(biāo)準(zhǔn)數(shù)據(jù)類型VHDL的STD庫中STANDARD程序包中定義了10種數(shù)據(jù)類型,稱為標(biāo)準(zhǔn)數(shù)據(jù)類型。1VHDL數(shù)據(jù)類型預(yù)定義數(shù)據(jù)類型2.IEEE預(yù)定義數(shù)據(jù)類型IEEE庫的STD_LOGIC_ll64程序包中還定義了兩種應(yīng)用非常廣泛的數(shù)據(jù)類型。(1)STD—LOGIC:標(biāo)準(zhǔn)邏輯型。(2)STD_LOGIC_VECTOR:標(biāo)準(zhǔn)邏輯矢量型,是多個STD_LOGIC型信號的組合。1VHDL數(shù)據(jù)類型預(yù)定義數(shù)據(jù)類型3.其他預(yù)定義數(shù)據(jù)類型在IEEE庫的STD_LOGIC_ARITH程序包中擴(kuò)展了UNSIGNED(無符號型)、SIGNED(有符號型)和SMALL_INT(小整型)三種數(shù)據(jù)類型。1VHDL數(shù)據(jù)類型用戶自定義數(shù)據(jù)類型VHDL允許用戶自己定義新的數(shù)據(jù)類型,其定義格式為:TYPE數(shù)據(jù)類型名IS數(shù)據(jù)類型定義;用戶定義的數(shù)據(jù)類型有枚舉型、整數(shù)型、實(shí)數(shù)型、數(shù)組型、存取型、文件型和記錄型等,這些數(shù)據(jù)類型有些是VHDL標(biāo)準(zhǔn)數(shù)據(jù)類型和IEEE預(yù)定義數(shù)據(jù)類型中已有的,可以認(rèn)為是這些數(shù)據(jù)類型加了一定約束范圍的子類型(如用戶自定義整數(shù)型、實(shí)數(shù)型);有些數(shù)據(jù)類型則是全新的。2VHDL數(shù)據(jù)類型數(shù)據(jù)類型的轉(zhuǎn)換在VHDL語言中,數(shù)據(jù)類型的定義是很嚴(yán)格的,不同類型的數(shù)據(jù)間不能進(jìn)行運(yùn)算或者賦值,當(dāng)常堂、變量和信號之間進(jìn)行運(yùn)算或賦值操作時,必須要保證數(shù)據(jù)類型的一致性,否則仿真和綜合過程中EDA工具會報錯。在設(shè)計中,如需要對數(shù)據(jù)類型進(jìn)行轉(zhuǎn)換,可通過類型標(biāo)識符轉(zhuǎn)換和函數(shù)轉(zhuǎn)換。309VHDL運(yùn)算符VHDL運(yùn)算符邏輯運(yùn)算符VHDL提供了7種邏輯運(yùn)算符:NOT取反、AND-與、OR一或、NAND與非、NOR-—或非、XOR異或和XNOR-同或。1VHDL運(yùn)算符關(guān)系運(yùn)算符使用關(guān)系運(yùn)算符時應(yīng)注意:1.關(guān)系運(yùn)算符為二元運(yùn)算符,要求運(yùn)算符左右兩邊數(shù)據(jù)的類型必須相同,運(yùn)算結(jié)果為BOOLEAN型數(shù)據(jù)(即結(jié)果只能為TRUE或FALSE)。1.不同的關(guān)系運(yùn)算符對其左右兩邊操作數(shù)的數(shù)據(jù)類型有不同要求。其中,等于(=)和不等于(/=)可以適用所有類型的數(shù)據(jù),只有當(dāng)兩個數(shù)據(jù)a和b的數(shù)據(jù)類型相同,其數(shù)值也相等時,"a=b"的運(yùn)算結(jié)果才為TRUE,'宙=b"的運(yùn)算結(jié)果為FALSE。2VHDL運(yùn)算符關(guān)系運(yùn)算符使用關(guān)系運(yùn)算符時應(yīng)注意:1.關(guān)系運(yùn)算符為二元運(yùn)算符,要求運(yùn)算符左右兩邊數(shù)據(jù)的類型必須相同,運(yùn)算結(jié)果為BOOLEAN型數(shù)據(jù)(即結(jié)果只能為TRUE或FALSE)。1.不同的關(guān)系運(yùn)算符對其左右兩邊操作數(shù)的數(shù)據(jù)類型有不同要求。其中,等于(=)和不等于(/=)可以適用所有類型的數(shù)據(jù),只有當(dāng)兩個數(shù)據(jù)a和b的數(shù)據(jù)類型相同,其數(shù)值也相等時,"a=b"的運(yùn)算結(jié)果才為TRUE,'宙=b"的運(yùn)算結(jié)果為FALSE。2VHDL運(yùn)算符并置運(yùn)算符

&—并置運(yùn)算符,用來將兩個或多個位或位矢最拼接成維數(shù)更大的矢量。

用并置運(yùn)算符進(jìn)行拼接的方式很多,可以將兩個或多個位拼接起來形成一個位矢

疊,也可以將兩個或多個矢最拼接起來以形成一個新的維數(shù)更大的矢量。3感謝觀看,再見!FPGA設(shè)計與VHDL實(shí)現(xiàn)FPGA設(shè)計與VHDL實(shí)現(xiàn)VHDL基本語句第六章01順序語句順序語句賦值語句賦值語句根據(jù)其應(yīng)用的場合可分為兩種類型:一種是應(yīng)用于進(jìn)程和子程序內(nèi)部的賦值語句,這時它是一種順序語句,稱為順序賦值語句;另一種是應(yīng)用于進(jìn)程和子程序外部的信號賦值語句,這時它是一種并行語句,因此稱為并行信號賦值語句。每種賦值語句都由三個部分組成,即賦值目標(biāo)、賦值符號和賦值源。1順序語句賦值語句賦值目標(biāo)是賦值的受體,它的基本元素只能是信號或變量,但表現(xiàn)形式可以有多種,如文字、標(biāo)識符、數(shù)組等。1順序語句IF語句與其他軟件編程語言(如C語言)相類似,VHDL中的IF語句也是一種具有條件控制功能的語句,它根據(jù)給出的條件來決定需要執(zhí)行程序中的哪些語句。2順序語句IF語句IF語句的格式有如下4種。1.非完整性IF語句當(dāng)程序執(zhí)行到IF語句時,如果IF語句中的條件成立,程序執(zhí)行T印3-N后面的順序語句;否則程序?qū)⑻鯥F語句,轉(zhuǎn)而去執(zhí)行其他語句。實(shí)際上,這種形式的IF語句是一種非完整IF語句。2順序語句IF語句2.二重選擇的IF語句首先判斷條件是否成立,如果IF語句中的條件成立,那么程序會執(zhí)行順序語句I;否則程序執(zhí)行順序語句2。3.具有多重選擇的IF語句在VHDL中,具有多重選擇的IF語句常用來描述具有多個選擇分支的邏輯功能電路。2順序語句IF語句4.IF語句的嵌套IF語句可以嵌套,多用于描述具有復(fù)雜控制功能的邏輯電路。2順序語句CASE語句在VHDL中,CASE語句是另外一種形式的條件控制語句,它與1F語句一樣可以用來描述具有控制功能的數(shù)字電路。一般來說,CASE語句是根據(jù)表達(dá)式的值從不同的順序處理語句序列中選取其中的一組語句來進(jìn)行操作,它常用來描述總線、編碼器、譯碼器或者數(shù)據(jù)選擇器等數(shù)字邏輯電路。3順序語句CASE語句當(dāng)執(zhí)行到CASE語句時,如果條件表達(dá)式的值等于選擇值I,程序就執(zhí)行順序語句1;如果條件表達(dá)式的值等于選擇值2,程序就執(zhí)行順序語句2;依次類推,如果條件表達(dá)式的值與前面的n-1個選擇值都不同,則程序就執(zhí)行"WHENOTHERS"語句中的“順序語句n"3順序語句LOOP語句LOOP語句與其他高級語言中的循環(huán)語句相似,它可以使所包含的一組順序語句被循環(huán)執(zhí)行,其執(zhí)行次數(shù)可由設(shè)定的循環(huán)參數(shù)決定。LOOP語句有三種格式。4順序語句LOOP語句1.簡單LOOP語句2.FORLOOP語句3.WHILELOOP語句4順序語句NEXT與EXIT語句1.NEXT語句NEXT語句主要用于在LOOP語句中進(jìn)行轉(zhuǎn)向控制。其格式分以下三種。(1)無條件終止當(dāng)前循環(huán),跳回到本次循環(huán)LOOP語句開始處,開始下次循環(huán)。(2)無條件終止當(dāng)前1盾環(huán),跳轉(zhuǎn)到指定標(biāo)號的LOOP語句開始處,重新執(zhí)行循環(huán)操作。(3)當(dāng)條件表達(dá)式的值為TRUE,則執(zhí)行NEXT語句,進(jìn)入跳轉(zhuǎn)操作,否則繼續(xù)向下執(zhí)行。5順序語句NEXT與EXIT語句2.EXIT語句EXIT語句與NEXT語句類似,也是一種循環(huán)控制語句,用于在LOOP語句中控制循環(huán)轉(zhuǎn)向。502并行語句并行語句并行信號賦值語句并行信號賦值語句是應(yīng)用于結(jié)構(gòu)體中進(jìn)程和子程序之外的一種基本信號賦值語句,它與信號賦值語句的語法結(jié)構(gòu)是完全相同的。作為一種并行描述語句,結(jié)構(gòu)體中的多條并行信號賦值語句是并行執(zhí)行的,它們的執(zhí)行順序與書寫順序無關(guān)。1并行語句并行信號賦值語句并行信號賦值語句有3種形式:簡單信號賦值語句;條件信號賦值語句;選擇信號賦值語句。1并行語句進(jìn)程語句在VHDL中,進(jìn)程語句(PROCESS)是使用最為頻繁、應(yīng)用最為廣泛的一種語句,因此學(xué)握進(jìn)程語句對于編寫VHDL程序來說十分重要。一個結(jié)構(gòu)體可以包含多個進(jìn)程語句。2并行語句塊語句塊(BLOCK)是VHDL程序中又一種常用的子結(jié)構(gòu)形式,可看成是結(jié)構(gòu)體的子模塊。采一用塊語句描述系統(tǒng),是一種結(jié)構(gòu)化的描述方法。塊語句可以使結(jié)構(gòu)體層次分明,結(jié)構(gòu)清晰。3并行語句塊語句塊語句具有如下特點(diǎn):1.塊內(nèi)的語句是并發(fā)執(zhí)行的,其綜合結(jié)果與語句的書寫順序無關(guān)。2.在結(jié)構(gòu)體內(nèi),可以有多個塊結(jié)構(gòu),塊在結(jié)構(gòu)體內(nèi)是并發(fā)運(yùn)行的。3并行語句元件例化語句在VHDL程序中可以直接將已經(jīng)設(shè)計好的電路模塊,封裝為“元件”,然后在新的設(shè)計實(shí)體中調(diào)用該元件,構(gòu)成層次化的設(shè)計。元件可以是設(shè)計好的VHDL源文件,也可以是用別的硬件描述語言,如Verilog設(shè)計的模塊,還可以是IP核、LPM宏功能模塊、EDA設(shè)計軟件中的嵌入式核等功能單元。元件的定義與調(diào)用必須用元件例化語句完成。元件例化語句由元件定義語句和元件例化(或元件調(diào)用)兩部分組成。4并行語句生成語句GENERATE生成語句是一種可以建立重復(fù)結(jié)構(gòu)或者是在模塊的多個表示形式之間進(jìn)行選擇的語句。由于生成語句可以用來產(chǎn)生或復(fù)制多個相同的結(jié)構(gòu),因此使用生成語句可避免重復(fù)書寫多段相同的VHDL程序。生成語句的格式有如下兩種形式:5并行語句生成語句1.FORGENERATE語句2.IFGENERATE語句IFGENERATE語句與1F語句的區(qū)別在于,IFGENERATE語句沒有類似于1F語句的ELSE或ELSIF分支語句。5并行語句并行過程調(diào)用語句當(dāng)在進(jìn)程內(nèi)部調(diào)用過程語句時,調(diào)用語句相當(dāng)于是一種順序語句;當(dāng)在結(jié)構(gòu)體的進(jìn)程之外調(diào)用過程時,它作為并行語句的形式出現(xiàn)。作為并行過程調(diào)用語句,在結(jié)構(gòu)體中它們是并行執(zhí)行的,其執(zhí)行順序與書寫順序無關(guān)。并行過程調(diào)用語句的功能等效于包含了同一個過程調(diào)用語句的進(jìn)程。603屬性說明與定義語句屬性說明與定義語句數(shù)據(jù)類型屬性數(shù)據(jù)類型屬性如下:T'BASE-數(shù)據(jù)類型T的基本類型。T'LEFT-左限值。T'RIGHT-右限值。THIGH—上限值。T'LOW-下限值。1屬性說明與定義語句數(shù)組屬性數(shù)組屬性如下:A'LEFT一數(shù)組A的左邊界。A'RIGHT-—數(shù)組A的右邊界。A'HIGH上邊界。A'LOW-—下邊界。A'RANGE—范圍。2屬性說明與定義語句信號屬性signal'EVENT:如果在當(dāng)前極小的一段時間間隔內(nèi),siganl上發(fā)生了一個事件,則函數(shù)返回真"(TRUE),否則就返回“假"(FALSE)。signal'STABLE[(T

溫馨提示

  • 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

提交評論