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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論