FPGA入門及QuartusII使用教程內部資料_第1頁
FPGA入門及QuartusII使用教程內部資料_第2頁
FPGA入門及QuartusII使用教程內部資料_第3頁
FPGA入門及QuartusII使用教程內部資料_第4頁
FPGA入門及QuartusII使用教程內部資料_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

-.z.FPGA入門及QuartusII使用教程FPGA是英文Field

Programmable

Gate

Array的縮寫,即現(xiàn)場可編程門陣列,它是在可編程陣列邏輯PAL(Programmable

Array

Logic)、門陣列邏輯GAL(Gate

Array

Logic)等可編程器件的基礎上上進一步發(fā)展的產物。可以這樣講,ASIC(ApplicationSpecificIntegratedCircuit)部的所有資源,是用積木堆積起來的小房子,可以是一個歐美風情的房子,還可以是一個四合院…….而FPGA部就可以說是一個個小積木,也就是部有大量的資源提供給我們,根據(jù)我們的需求進行部的設計。并且可以通過軟件仿真,我們可以事先驗證設計的正確性。第一章FPGA的基本開發(fā)流程下面我們基于Altera公司的QuantusII軟件來說明FPGA的開發(fā)流程。下圖是一個典型的基于QuartusII的FPGA開發(fā)整體流程框圖。建立工程師每個開發(fā)過程的開始,QuartusII以工程為單位對設計過程進行管理。建立頂層圖??梢赃@樣理解,頂層圖是一個容器,將整個工程的各個模塊包容在里邊,編譯的時候就將這些模塊整合在一起。也可以理解為它是一個大元件,比如一個單片機,部包含各個模塊,編譯的時候就是生成一個這樣的大元件。采用ALTERA公司提供的LPM功能模塊。Quartus軟件環(huán)境包含了大量的常用功能模塊,比如計數(shù)器、累加器、比較器等等。自己建立模塊。由于有些設計中現(xiàn)有的模塊功能不能滿足具體設計的要求,那就只能自己設計。使用硬件描述語言,當然也可以用原理圖的輸入方法,可以獨立的把它們當成一個工程來設計,并且生成一個模塊符號(Symbol),類似于那些LPM功能模塊。這里可以理解為,如果我們需求的濾波器,沒有現(xiàn)成的合適的,那我們可以通過LC自己來搭建一個濾波器。將頂層圖的各個功能模塊連線起來。這個過程類似電路圖設計,把各個芯片連起來,組成電路系統(tǒng)。系統(tǒng)的功能原理圖至此已經基本出爐了,下一步就是選擇芯片字載體,分配引腳,設置編譯選項等等。編譯。這個過程類似軟件開發(fā)里德編譯,但是實際上這個過程比軟件的編譯復雜的多,因為它最終要實現(xiàn)硬件里邊的物理結構,包含了優(yōu)化邏輯的組合,綜合邏輯以及布線等步驟。編譯后會生成2個文件,一個是*.sof文件,一個是*.pof文件,前者可以通過JTAG方式下載到FPGA部,可以進行調試,但斷電后數(shù)據(jù)丟失;后者通過AS或者PS方式下載到FPGA的配置芯片里邊(EEPROM或者FLASH),重新上電后FPGA會通過配置將數(shù)據(jù)讀出。對于復雜的設計,工程編譯好了,我們可以通過Quartus軟件或者其他仿真軟件來對設計進行反復仿真和驗證,直到滿足要求。(主要是時序仿真)。第二章基于QuartusII的實例一、建立工程首先,打開QuartusII軟件。接下來,建議一個新工程第一行,是所建工程的路徑,第二工程項目名稱,第三項,是填好后,如下圖下邊一直點擊NE*T,直到出現(xiàn)以下界面Family里邊選擇Srati*II,Availabledevices里邊選擇EP2S60F672C點擊OK,建立完成,工程中出現(xiàn)一個Block1.bdf文件?,F(xiàn)在點“保存”是不管用的,建議隨便放一個器件后點保存文件為bdf文件。方法是在這個bdf文件空白處雙擊鼠標,或者右鍵點鼠標,點insert->symbol這里邊的器件很多,可以再里邊輸入你所需要的器件,也可以直接點分類,根據(jù)分類查找你需要的器件。點擊File->New,選擇VHDLFile(根據(jù)你所使用的編程語言)點擊OK后,再下邊的界面就可以編寫VHDL程序了。當然可以根據(jù)自己掌握的語言種類進行編程。VHDL語言,注意:保存的文件名字,必須與實體名字一致,否則編譯會出錯。設置當前為最高實體。點擊那個紫色的三角,進行編譯下面就是產生模塊了。如圖點擊就可以生成模塊完成后,回到bdf主界面。雙擊該界面,再Project下拉欄,就會出現(xiàn)剛才所編譯文件生成的模塊,左鍵點擊就可以將其放入主原理圖實體中,并且今后如果重新改變VHDL程序,必須走這個過程,先設置最高實體,然后編譯,產生模塊,最后要添加這樣如下的過程。放置模塊的時候,通過自己的程序編譯產生的模塊,會在Project目錄下,如圖所示特別注意:已經做好的并且放入到原理圖的模塊程序如果需要改動,改動后也必須先編譯,后產生模塊,最后按照如下所示進行模塊更新。根據(jù)需求進行選擇一下以后每次要用的時候,都可以雙擊鼠標,進入project里邊進行選擇,進行使用。右鍵點擊模塊,點Generate-……引腳也可以自己設置輸入輸出引腳并且命名。設置當前實體為最高實體,再次進行編譯編譯完成后,要分配引腳,通常分配引腳有兩種方式,一種是直接在工程分配,這種方式對于引腳較少比較方便,如下圖所示。選擇PIN雙擊引腳分配處的to和location,就可以確定應用的FPGA引腳分配情況。分配好引腳后,點擊保存,再看原理圖,每個引腳后邊都有一個“小尾巴”,表示信號線的實際物理引腳分配情況。然后再編譯。最后在點擊TOOL->Programmer,或者直接點擊下載圖標就會出現(xiàn)下載對話框點擊HardwareSetup如果你沒插USB-BLASTER,打開后不會有顯示,如果插上后,這里就會顯示有一個硬件可以選擇,右上位置選擇下載方式。注意:JTAG模式和AS模式接口是不同的選擇好USB-BLASTER后,點Close,然后點Start當前選擇的是JTAG模式,因此下載程序到RAM,可以看調試結果。至此,F(xiàn)PGA的原理圖制作,代碼編寫流程及下載流程已經全部完畢?,F(xiàn)在以一個簡單的分頻器來講一下。第一件事,如同單片機的最小系統(tǒng)一樣,F(xiàn)PGA的系統(tǒng)需要一個時鐘源作為支撐,F(xiàn)PGA部有個PLL(鎖相環(huán))資源,這個PLL可以對輸入頻率進行倍頻。因此,幾乎在每個系統(tǒng)設計的時候,都需要對這個PLL進行設置。如下所示選擇第一個點NE*T,往下進行選擇IO欄目下的ALTPLL,給這個模塊起一個名字叫PLL然后點NE*T根據(jù)提示進行選擇,選擇好了后,點擊進入下一個設置在這里,把所有的勾全部去掉就可以,然后一直點下一步,一直到下面圖示,每個芯片可以設置輸出的頻率個數(shù)不同,當前我用的ep2s60總共有2個PLL,每個PLL可以設置6個不同的頻率輸出。現(xiàn)在就可以一直點下一步,直到Finish就可以。然后再Project里邊將PLL放置到原理圖上。新建一個test_div的程序,程序代碼如下libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitytest_divisport(clkin:instd_logic;clkout1:outstd_logic;clkout2:outstd_logic);endtest_div;architecturefenpin_arcoftest_divissignalcount1:integerrange0to7;--計數(shù)寄存器16分頻signalclkbuff1:std_logic;signalcount2:integerrange0to3;--計數(shù)寄存器8分頻signalclkbuff2:std_logic;beginprocess(clkin,count1,count2)beginifrising_edge(clkin)then--計數(shù)、分頻1if(count1>=7)thencount1<=0;clkbuff1<=notclkbuff1;elsecount1<=count1+1;clkout1<=clkbuff1;endif;endif;ifrising_edge(clkin)then--計數(shù)、分頻2if(count2>=3)thencount2<=0;clkbuff2<=notclkbuff2;elsecount2<=count2+1;clkout2<=clkbuff2;endif;endif;endprocess;endfenpin_arc;保存程序,設置當前為最高實體,進行編譯,編譯后產生模塊,最終也可以放在原理圖上了。用鼠標將所需要連接的線連接起來,然后設置當前為最高實體,進行編譯,分配引腳,編譯,下載就可以完成了。同時,除了下載進FPGA中進行調試外,我們還可以提前利用Quartus進行時序仿真。如上邊這個程序,生成一個Block放置在原理圖上,然后再加上一個PLL,連接起來后,以下圖示:點擊Processing->SimulationDebug->CurrentVectorInputs在name處點右鍵,選擇Inset->InsetNodeorBus點擊NodeFinder,進入可以選擇引腳,通常我習慣于顯示所有引腳,在Filter處選擇all,當然也可以選擇一些你需要的引腳,其他的引腳不顯示,然后點擊List,然后再點擊加入符號,如圖所示點擊OK,一直回到仿真頁面,鼠標左鍵單擊輸入信號,給輸入信號加所需信號,如clkin,是時鐘信號,直接點擊時鐘符號,就可以進行設置設置好輸入后,可以點Edit菜單下的EndTime可以選擇仿真多長時間。全部設置好后,點保存,起好名字,然后點Startsimulation,便開始進行時序仿真。仿真結束后,可以觀察信號時序。第三章MATLAB、DSPBUILDER、QUARTUS聯(lián)合仿真首先我們了解一個背景,現(xiàn)在在DSP算法軟件中最牛的毋庸置疑的就是Matlab了。N多人在用它搭建模型。我們可以把Matlab分為matlab和simulink兩部分。Matlab更多的是對數(shù)組進行一系列的計算,而這些計算式靜態(tài)的,純粹算法上的。而simulink是使用模塊化的方式來搭建一個平臺,這個模型才是動態(tài)的。當我們用matlab做成一個算法的時候,這個算法在實際應用中有可能可以實現(xiàn),當然也有可能實現(xiàn)不了,更多的是一種理論上的公式。只有當我們用simulink來搭建出一個模型的時候,我們可以知道,它是可以被實現(xiàn)出來的,無論是軟件,還是硬件方式。DSPbuilder是什么?通過前邊的學習,我們知道,F(xiàn)PGA部就如同一個個小積木。DSPbuilder就是ALTERA公司工程師,專門用這些小積木已經搭建好了各式各樣的小門、小窗、房梁……..而這些一個個做好的小模塊,都放到了DSPBUILDER里邊。好了,這樣,我們就可以在MATLAB的simulink環(huán)境下,用DSPBUILDER的部小模塊,開始堆積我們想要的那棟房子。這一下就省去了我們的好多工作,因為現(xiàn)在很多模塊資源都是現(xiàn)成的,不需要我們用VHDL或者是Verilog語言去做這些小模塊。當在simulink環(huán)境下模擬搭建好了后,我們通過DSP工具,就可以直接轉換到QuartusII環(huán)境下,進行真正的搭建過程了。當然了,這個過程QuartusII可以完全替代我們去完成。同樣,有一些功能模塊,是DSPbuilder庫里邊所不具備的,這個時候還可以通過使用QuartusII進行語言編程,生成一個功能模塊,并且加載到matlab的simulink庫里邊進行仿真應用。利用Matlab軟件中的Simulink模塊進行通信系統(tǒng)的仿真,并通過DSPBuilder軟件將系統(tǒng)級和RTL級(寄存器傳輸級)兩個設計領域的設計工具連接起來,把Simulink的設計文件(后綴為.mdl文件)轉成相應的硬件描述語言VHDL設計文件(后綴為.vhd文件),以及用于控制綜合與編譯的TCL腳本,之后即可通過FPGA/CPLD開發(fā)工具QuartusII來完成相應的處理。DSPBuilder依賴于數(shù)學分析工具Matlab/Simulink,以Simulink的Blockset形式出現(xiàn),可以在Simulink中進行圖形化設計和仿真。在安裝DSPBuilder軟件后,Matlab軟件的Simulink庫中會自動添加如下兩個庫:AlteraDSPBuilderBlockset和AlteraDSPBuilderAdvancedBlockset。后續(xù)的仿真及編譯工作主要基于AlteraDSPBuilderBlockset庫中的各個模塊組成的系統(tǒng)。下面以MatlabR2009b(Matalb)版本為例,與Altera公司QuartusII9.1/DSPBuilderv9.1軟件對應使用,并以BFSK(二進制頻移鍵控)的調制系統(tǒng)為例,詳細介紹Simulink的使用步驟。1.打開Matlab環(huán)境Matlab環(huán)境界面如圖所示,Matlab的主窗口界面被分割成三個窗口:命令窗口(mandWindow)、工作區(qū)(Workspace)和命令歷史記錄(mandHistory)。在命令窗口中可以鍵入Matlab命令,同時獲得Matlab對命令的響應信息、出錯警告提示等。2.建立工作庫在建立一個新的設計模型前,最好先建立一個新的文件夾,作為工作目錄,并把Matlab當前的work目錄切換到新建的文件夾下??梢渣c擊“File”中的“SetPath”選項,添加該工作目錄路徑,如圖所示“F:\ProgramFiles\MATLAB\R2009b\work”,并將其移到目錄頂部“Movetotop”然后保存。在下一次打開Matlab時,可以通過改變主界面中的“CurrentFolder”,選擇該目錄路徑,改變當前Matlab工作目錄。3、打開Simulink庫單擊Matlab界面上的快捷鍵(Simulink)可以打開Simulink的庫文件,如圖所示。上圖即為Simulink的庫瀏覽器(LibraryBrowser),在庫瀏覽器的左側是SimulinkLibrary列表,右側是選中的Library中的組件、子模塊列表。其中左側Library列表中的“Simulink”庫是Simulink的基本模型庫。當安裝完DSPBuilderv9.1后,在Simulink的庫瀏覽器中可以看到多出的兩個庫文件:“AlteraDSPBuilderAdvancedBlockset”和“AlteraDSPBuilderBlockset”。在以下的DSPBuilder應用中,主要是使用“AlteraDSPBuilderBlockset”庫中的組件、子模型來完成各項設計,再使用Simulink完成模型的仿真驗證。4.Simulink的模型文件在打開Simulink庫瀏覽器后,需要新建一個Simulink的模型文件(后綴為mdl),如圖,在Simulink的庫瀏覽器中選擇“File”菜單,在出現(xiàn)的菜單項中選擇“New”,在彈出的子菜單項中選擇新建模型“Model”即可,或者通過直接單擊界面上的打開一個空白文件。5、添加正弦產生模塊如下圖,點擊Simulink庫瀏覽器左側的庫樹形列表中的“Simulink”條,使其庫器件展開,這時會出現(xiàn)一長串樹形列表,對基本模型庫的子模塊(Block)進行了分組。再次點擊其中的“Sources”項,選中庫瀏覽器右側的“SineWave”組件,按住鼠標左鍵并拖動“SineWave”模塊到新模型窗口中。該模塊即為BFSK調制的一個輸入載波,為了便于確認,雙擊模塊下方的名字“SineWave”,將其修改為“fc1”雙擊該模塊可以得到“SourceBlockParameters:fc1”的對話框,這里包括了該模塊功能的介紹,以及各個相關參數(shù)的設定。修改參數(shù)設置如上圖,其中幅度(Amplitude)為2^10-1,表示輸入信號位寬(NumberofBits)為11位;頻率(Frequency(rad/sec))設定為263.158kHz;初始相位為pi/2表示產生余弦波;由于采樣頻率為2MHz,采樣時間(Sampletime)設為1/2000000。設置完成后點擊“OK”可以利用同樣的方法放置并設置BFSK調制的另一個輸入載波,頻率為277.778kHz,其余參數(shù)相同即可。6、添加輸入端口模塊如下圖,點擊Simulink庫瀏覽器左側的庫樹形列表中的“AlteraDSPBuilderBlockset”條,選擇其中的“IO&Bus”項并展開,選中庫瀏覽器右側的“Input”模塊,同樣按住鼠標左鍵將其拖動到模型窗口中。將該輸入端口名稱改為“SinIn1”,雙擊模塊,得到如下圖的參數(shù)設置對話框,設置如下,總線類型(BusType)選擇有符號整數(shù)(SignedInteger),輸出位寬(numberofbits)設定為11位。下面把這兩個模塊連接起來,將鼠標的指針移動到模塊的輸入或輸出端口上,鼠標指針就會變成十字形“+”,這時按住鼠標左鍵,拖動鼠標就可以連線了。或者先按住“Ctrl”鍵,然后用鼠標單擊第一個模塊fc1,再單擊第二個模塊SinIn1,則會自動產生連線,連線后如圖所示。7、完成BFSK調制模型按照上述方法,依照BFSK調制系統(tǒng)的原理框圖,可以逐步添加各個功能模塊以及輸入、輸出端口,最終完成的BFSK調制模型文件如下圖所示。上圖中用到了波形觀察模塊示波器“Scope”,該模塊屬于Simulink庫下的Sinks庫。雙擊該模塊,打開的是一個示波器窗口,其中只有一個信號的波形觀察窗口,若希望可以同時觀察多路信號,可以點擊Scope模塊窗口上側工具欄的第二個工具按鈕“Parameters”,參數(shù)設置按鈕,打開Scope參數(shù)設置對話框。在Scope參數(shù)設置對話框中有“Gerneral”(通用)和“Datahistory”(數(shù)據(jù)歷史)兩個選項頁。在“Gerneral”選項頁中將“Numberofa*es”參數(shù)改為2,如圖所示。點擊“OK”按鈕確認后,可以看到Scope窗口增加為兩個波形觀察窗,每個觀察窗都可以分別觀察信號波形,而且相對獨立。頻譜觀察模塊“SpectrumScope”屬于“SignalProcessingBlockset”下的“SignalProcessingSinks”庫,可以用來觀察輸出BFSK調制信號的頻譜波形情況。8、加入時鐘模塊展開“AlteraDSPBuilderBlockset”庫下的“AltLab”,選擇“Clock”模塊添加到模型文件中,并雙擊模塊,設置參數(shù)如下圖所示。9、設計文件存盤完成系統(tǒng)中各個模塊的設置與連接后,在進行仿真驗證和編譯(Signalpiler)之前,先對設計進行存盤操作。點擊新建模型窗口的“File”菜單,在下拉菜單中選擇“Save”項,取名并保存,等同于直接點擊窗口界面的按鈕。在上述例子中,對新建模型取名為“fskmodu”,模型文件為fskmodu.mdl。在保存完畢后,新建模型窗口的標題欄就會顯示模型名稱,如下圖所示。注意:對模型文件取名時,盡量用英文字母開頭,不使用空格,不用中文,文件名不要過長。10、Simulink模型仿真在對模型取名存盤后,就可以對文件進行編譯,并把mdl文件轉換為VHDL文件。不過現(xiàn)在模型的正確性還是未知的,需要進行仿真驗證。Matlab的Simulink環(huán)境具有強大的圖形化仿真驗證功能。用DSPBuilder模塊設計好一個新的模型后,可以直接在Simulink中進行算法級、系統(tǒng)級仿真驗證。對一個模型文件進行仿真,需要施加合適的激勵、一定的仿真步進和仿真周期,并添加合適的觀察點和觀察方式。在fskmodu模型窗口中,點擊“Simulation”菜單,在下拉菜單中選擇“ConfigurationParameters...”菜單項,將彈出fskmodu模型的仿真參數(shù)設置對話框“ConfigurationParameters:fskmodu/Configuration(Active)”。

該對話框中的“Solver”選項包括了仿真基本的時間設置、步進間隔、方式設置及輸出選項設置。具體各項設置如上圖所示,最后,點擊“OK”按鈕確認。11、啟動仿真在fskmodu模型窗口中選擇“Simulation”菜單,再選“Start”項開始仿真,或者直接點擊按鈕開始。待仿真結束,雙擊Scope模塊,打開示波器觀察窗。下圖給出了仿真結果,顯示的是系統(tǒng)生成的BFSK調制信號的基帶波形及時域波形圖,在下面的放大波形圖中,可以清晰的看到在不同的基帶信號值“0”和“1在Scope觀察窗中,可以使用工具欄中的按鈕來放大或縮小波形,或者用鼠標左鍵選擇波形并放大,也可以在波形上單擊鼠標右鍵使用“Autoscale”,使波形自動適配波形觀察窗。模塊“fskmoduSpectrum”可以得到BFSK調制信號的頻譜波形,如圖所示。該BFSK信號在頻率為270.468kHz附近(263.158kHz及277.778kHz)兩處有明顯的波峰,表明實現(xiàn)了BFSK調制信號的產生。12、編譯模型文件在Simulink中完成仿真驗證后,就需要把設計轉到硬件上加以實現(xiàn),并獲得針對特定FPGA芯片的VHDL代碼,這是整個DSPBuilder設計流程中最為關鍵的一步,包括對模型文件的編譯,以及RTL的仿真。首先需要放置Signalpiler模塊,選擇“AlteraDSPBuilderBlockset”庫中“AltLab”項的“Signalpiler”模塊,將其拖放到fskmodu.mdl文件中,如圖。雙擊該模塊,在下圖所示的對話框中可以選擇進行編譯所使用的器件類型,此例中選擇默認的Strati*Family,以及AUTODevice,單擊“pile”即可對完成的fskmodu.mdl模型文件進行編譯。編譯沒有錯誤,成功完成后,點擊“OK”即可,然后再次保存fskmodu.mdl模型文件。13、運行RTL仿真這一步

溫馨提示

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

評論

0/150

提交評論