FPGA基礎(chǔ)實驗部分_第1頁
FPGA基礎(chǔ)實驗部分_第2頁
FPGA基礎(chǔ)實驗部分_第3頁
FPGA基礎(chǔ)實驗部分_第4頁
FPGA基礎(chǔ)實驗部分_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

FPGA基礎(chǔ)實驗部分

實驗一基本IO實驗一、實驗?zāi)康模?)學習QuartusⅡ5.0的基本操作。(2)熟悉教學實驗板的使用。(3)初步掌握vhdl語言的設(shè)計輸入,編譯,仿真和調(diào)試過程。二、實驗原理利用一個常開按鈕(實驗板上的KEY1)作為輸入(常開時輸入1,閉合時輸入0),經(jīng)過一個反相器后輸出到核心板的一個LED。KEY1常開時,LED滅,按下(閉合)實驗板上的KEY1,該LED點亮。三、實驗步驟

1、建立工程

運行QuatrusII軟件,建立工程,F(xiàn)ile→NewProjectWizad。如圖下圖所示。

點擊NewProjectWizard后彈出指定工程名的對話框,在Diectory,Name,Top-LevelEntity中如圖下圖填寫。

按Next按鈕,直到出現(xiàn)選擇器件的對話框(下圖),按圖示選擇器件。然后一直按Next進行,最后按Finish按鈕即建立一個空項目。

2、建立頂層圖

執(zhí)行File→New,彈出新建文件對話框(下圖所示)。

選擇“BlockDiagramSchematicFile”按OK即建立一個空的頂層圖,缺省名為

“Block1.bdf”,我們把它另存為(File→Saveas),接受默認的文件名,并將“Addfiletocurrentproject”選項選上,以使該文件添加到工程中去。如下圖所示:

3、添加邏輯元件(Symbol)

雙擊頂層圖圖紙的空白處,彈出添加元件的對話框(下圖):

在Libraries里尋找所需要的邏輯元件,如果知道邏輯元件的名稱的話,也可以直接在Name一欄敲入名字,右邊的預覽圖即可顯示元件的外觀,按OK后鼠標旁邊即拖著一個元件符號,在圖紙上點擊左鍵,元件即安放在圖紙上。

在圖紙上分別添加非門(not)、輸入(input)、輸出(output)三個symbol,連線,將鼠標移到symbol連線端口的那里,按下左鍵拖動鼠標到另一個symbol的連線端。如下圖所示:

分別雙擊input和outputsymbol的名字“pin_name”、“pin_name1”,將它們的名字改為Key1,LED1。

4、分配管腳

為芯片分配管腳可以用QuartusII軟件里的“Assignments→Pins”菜單,也可以用tcl腳本文件。本文介紹用tcl的方法。

在工程目錄下建立一個name為Setup.tcl的file。File→New,選擇otherfiles頁面(下圖):有關(guān)tcl文件的更詳盡內(nèi)容可參考QuartusII的幫助文檔。在實際項目中,該文件也可以根據(jù)具體管腳分配要求來改寫。

對應(yīng)于EP1C12核心板:

set_global_assignment-nameRESERVE_ALL_UNUSED_PINS"ASINPUTTRI-STATED"

set_global_assignment-nameENABLE_INIT_DONE_OUTPUTOFF

set_location_assignmentPIN_2-toled1

set_location_assignmentPIN_122-tokey1

保存到工程目錄下,并注意在保存對話框選上“Addfiletocurrentproject”選項。然后打開Tools->TclScripts,選中剛才編輯的Script文件:Setup,并點擊Run,如圖所示:

5、設(shè)置

根據(jù)核心板的FPGA選擇芯片型號,如上圖所示選擇EP1C12Q240C8。點擊設(shè)置對話框的“Device&PinOptions”按鈕彈出Device&PinOptions對話框,并選擇該對話框的Configuration標簽頁,如下圖所示。

6、編譯

按主工具欄上的編譯按鈕即開始編譯,如下圖所示。QuartusII下面的Message窗口會顯示一些編譯信息。

7、下載

(1)下載設(shè)置:如果第一次使用下載線下載配置文件到FPGA,則需要在Q2軟件設(shè)置下載線的型號等信息。先將ByteBlasterII下載線的一頭接到PC的并口,執(zhí)行菜單Tools→Programmer(如下圖所示)。

打開下載界面,可看到NoHardware,表示還沒有設(shè)置下載線,如下圖所示。

點擊HardwareSetup,彈出“HardwareSetup”對話框(下圖)。

點擊“AddHardware”,彈出“AddHardware”對話框(下圖)。

在Hardwaretype下拉列表選擇“ByteBlasterMVorByteBlasterII”,點OK返回“HardwareSetup”對話框,從“Currentlyselectedhardware:”下拉列表選擇ByteBlasterII[LPT1],點擊“Close”返回下載界面,可看到下載線已經(jīng)被添加(下圖)。

(2)將ByteBlasterII下載線一頭與PC連接,另一頭插入到JTAG口或EPCS4的下載口。

(3)FPGA核心板接上5V電源。(4)如果只是調(diào)試一下設(shè)計是否成功,可通過JTAG口把芯片的配置信息下載到FPGA芯片內(nèi),掉電后配置信息丟失。此時,下載界面的“Mode:”下拉列表應(yīng)選擇“JTAG”,并選擇工程中.sof后綴的文件進行下載。(注意記得在“Program/Configure”那個方框那里打上“√”,其它“Verify”、“BlankCheck”等可根據(jù)需要選擇。)(5)如果要下載到非易失Flash配置芯片(掉電后配置信息不丟失)里去,則將ByteBlasterII插到EPCS4芯片的下載口。并在下載界面的“Mode:”下拉列表應(yīng)選擇“ActiveSerialProgramming”,并選擇工程中.pof后綴的文件進行下載。8、結(jié)果

在本例的設(shè)計中,我們利用一個常開按鈕(實驗板上的KEY1)作為輸入(常開時輸入1,閉合時輸入0),經(jīng)過一個反向器后輸出到核心板的第一個LED;因此按下(閉合)實驗板上的KEY1,該LED滅。該設(shè)計非常簡單,目的就是為了更容易理解FPGA的設(shè)計流程和QuartusII軟件的基本用法。

四、思考題在本實驗基礎(chǔ)上,進行修改,用三個按鍵控制兩個LED,一個按鍵控制LED全亮、一個按鍵控制LED全滅,一個按鍵控制兩個LED交替點亮。五、實驗報告根據(jù)以上的實驗內(nèi)容寫出實驗報告,包括設(shè)計原程序,仿真波形圖及思考題。

實驗二7段數(shù)碼管實驗

一、實驗?zāi)康?.進一步了解FPGA的設(shè)計流程和加深對QuatusII的使用。2.熟悉和了解動態(tài)掃描數(shù)碼管的工作原理和程序設(shè)計方法。3.加強和熟悉VHDL語言的設(shè)計方法和特點,學會掌握常用的計數(shù)器,譯碼器的設(shè)計,功能宏模塊使用方法。二、實驗原理1.開發(fā)板使用的是一個4位聯(lián)體的共陽極7段數(shù)碼管,動態(tài)掃描顯示接口是數(shù)碼管應(yīng)用最為廣泛的一種顯示方式之一。其接口電路是把所有顯示器的8個筆劃段a-h同名端連在一起,而每個顯示器的公共極COM是各自獨立地受I/O線控制。CPU向字段輸出口送出字形碼時,所有顯示器接收到相同的字形碼,但究竟是哪個顯示器亮,則取決于COM端,使各個LED輪流點亮。在輪流點亮的過程中,只要掃描速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會有閃爍感。

2.當同時使用多個7段數(shù)碼管輸出多個字符時,需要依次將各個顯示字符的數(shù)據(jù)分別送到每個數(shù)碼上并且使能。因此,需要掃描電路依次選擇每個7段數(shù)碼管,掃描電路實際上就是一個計數(shù)器,以計數(shù)的方式達到選擇切換的功能。為了將掃描電路的計數(shù)器輸出到7段數(shù)碼管,還需將計數(shù)輸出再經(jīng)過一個譯碼電路,因為使用共陽7段數(shù)碼管,所以數(shù)碼管只有在高電平時才有動作。所以,需要一個BCD多路選擇器選擇字符到相應(yīng)的數(shù)碼管上顯示。最后再設(shè)計一個3-7數(shù)碼管譯碼電路就完成了。

3.元件例化語句元件例化就是將預先定義好的設(shè)計實體定義為一個元件,然后利用特定的語句將此元件與當前的設(shè)計實體中的指定端口相連接,從而為當前設(shè)計實體引入一個新的低一級的設(shè)計層次。當前實體相當于一個較大的電路系統(tǒng),所定義的例化元件相當于一個要插在這個電路系統(tǒng)板上的芯片,而當前設(shè)計實體中指定的端口則相當于這塊電路板上準備接受芯片的一個插座。4.管腳映射:根據(jù)實驗箱,將連接對應(yīng)的管腳。

元件例化語句由兩部分組成,前一部分是將一個現(xiàn)成的設(shè)計實體定義為一個元件的語句,第二部分則是此元件與當前設(shè)計實體中的連接說明,語句格式如下:

--元件定義語句COMPONENT例化元件名ISPORT(例化元件端口名表);ENDCOMPONENT例化元件名;--元件例化語句元件例化名:例化元件名PORTMAP([例化元件端口名=>]連接實體端口名,…);

元件定義語句和元件例化語句在元件例化中都是必須存在的。元件定義語句相當于對一個現(xiàn)成的設(shè)計實體進行封裝,使其只留出外面的接口界面,就像一個集成芯片只留引腳在外面一樣。元件例化語句是把實體實例化,語句中的元件例化名相當于電路板上的一個插座名,例化元件名是定義好的元件名。PORTMAP是端口映射的意思,將當前實體的端口名與定義好的元件的端口名對應(yīng)起來。元件例化語句中所定義的例化元件的端口名與當前實體的端口名對應(yīng)的表達方式有兩種:(1)名字關(guān)聯(lián)方式:將例化元件的端口名與實體端口名通過關(guān)聯(lián)符號“=>”一一對應(yīng)聯(lián)系起來的方式;(2)位置關(guān)聯(lián)方式:按例化元件端口的定義順序?qū)⒗膶?yīng)實體的端口名一一列出的一種關(guān)聯(lián)方式。三、實驗步驟及內(nèi)容

1.該程序分為計數(shù)器模塊、譯碼模塊、多路選擇器模塊和一個4-7譯碼模塊,分別用VHDL語言描述各個模塊的功能。2.設(shè)計主電路模塊,將VHDL語言描述的各個模塊用元件例化的方式連接起來。3.設(shè)計計數(shù)時鐘系統(tǒng)時鐘為50MHz,太快,使人眼無法識別數(shù)碼管的變化。因此要對50MHz進行分頻,還需要設(shè)計一個分頻器。四、整體結(jié)構(gòu)原理圖如下:四、實驗要求

1.準備試驗前查閱本試驗相關(guān)的信息。

2.構(gòu)思程序設(shè)計方法。

3.編寫VHDL代碼同時做程序注釋。

4.編譯代碼,并仿真程序(用QuartusII),與預想結(jié)果進行比較,修改程序。

5.下載到試驗平臺上,觀察結(jié)果。

6.教師檢查后整理好設(shè)備離開實驗場地。

五、實驗報告要求1.給出BCD七段共陰極譯碼器的源程序。2.用元件例化語句描述頂層原理圖。3.總結(jié)調(diào)試代碼過程中遇到的問題,如何解決。4.談?wù)勗赩HDL中,元件例化語句的作用。實驗三NIOSII開發(fā)流程實例--LED顯示

一、實驗?zāi)康模?)掌握NiosII軟核的定制流程。(2)掌握NiosII軟件開發(fā)流程。(3)熟識NiosIIIDE開發(fā)環(huán)境的使用。(4)掌握基本的軟件調(diào)試方法。(5)學會使用Cyclone內(nèi)部的PLL的使用方法。二、實驗原理在本實驗中,我們用軟件來控制核心板上的兩個LED交替閃爍。三、實驗步驟

1、新建工程。新建一個工程目錄“sopc_led”,在此目錄下建立一個名為“sopc_led”的QuartusII工程,并新建一個頂層圖,保存于工程中。2、用SOPCBuilder定制NiosII處理器及其外設(shè)。

打開Tools→SOPCBuilder,要求指定系統(tǒng)名字,本例中我們輸入niosii_c。按OK進入SOPC定制界面

選擇Target,本例選擇UnspecifiedBoard。選擇時鐘頻率,Clock(MHz):本例選50.0。選擇目標器件系列,TargetDeviceFamily:本例選Cyclone。在SOPC定制界面的左邊,我們可以看到有很多功能模塊,這些功能模塊用戶可以按照需要添加到所設(shè)計的系統(tǒng)中。

首先,我們需要一個CPU,雙擊NiosIIProcessor–AlteraCorporation彈出AlteraNiosII對話框,我們選擇一個經(jīng)濟型的CPU核,即NiosII/e,如下圖所示:

點擊JTAGDebugModule標簽頁,選擇第一級調(diào)試支持Level1

,下圖。

點擊Finish完成NiosIICPU的配置工作。項目中會增加一個niosII處理器,名字為cpu_0,如下圖所示。

雙擊On-ChipMemory(RAMorROM),(在AvalonModules->Memory->下),為系統(tǒng)添加RAM。MemoryType選擇RAM;DataWidth選擇32bits,TotalMemorySize可以選擇4Kbytes,如下圖所示:

按Finish確認,返回SOPCBuilder界面,下圖。

雙擊PIO(在ParallelI/O)(在AvalonModules->Other下),為系統(tǒng)添加輸出到LED的輸出接口。Width選擇2bits,如下圖所示:

然后點擊Finish,返回SOPCBuilder界面,下圖所示。

然后,選擇System->Auto-AssignBaseAddresses,讓系統(tǒng)自動分配基地址。如下圖所示。

然后,選擇Sysetm->Auto-AssignIRQs,讓系統(tǒng)自動分配中斷,如下圖所示。

點擊NiosIIMore“cpu_0”settings選項卡,進行處理器設(shè)定。在該例中,無需做任何更改;ResetAddress、ExceptiongAddress、BreakLocation默認值如圖所示。

點擊SystemGeneration選項卡,進行最后的設(shè)定并生成系統(tǒng)。選中HDL.GeneratesystemmodulelogicinVerilog,如果需要仿真,也請選中Simulation.CreateModelSim(tm)projectfiles,然后點擊Generate,執(zhí)行系統(tǒng)生成的任務(wù),如圖所示。

然后,耐心地等待系統(tǒng)的生成。一般沒有問題的話,可以看到系統(tǒng)提示:SUCCESS:SYSTEMGENERATIONCOMPLETED.如果看到此信息,系統(tǒng)被正確生成了。如果失敗,請返回并檢查、修改。系統(tǒng)成功生成如圖所示。然后點擊Exit退出SOPCBuilder。

4、在QuartusII工程中添加上述niosII系統(tǒng)。

類似往QuartusII工程添加功能模塊,將所定制的NiosII軟核CPU添加到本例工程中,即雙擊工程頂層圖空白處,彈出Symbol對話框,在Project下面可以找到剛才建立的niosii_c模塊(下圖)。

5、添加PLL模塊。

從QuatusII的庫中添加一個鎖相環(huán)(PLL)模塊,以將外部時鐘倍頻后輸送給CPU。

6、添加其它元件模塊

本例分別添加clk和reset輸入、led[1..0]輸出。并相互連接。如圖所示。

7、設(shè)置編譯選項

建立并運行tcl腳本語言定義管腳。

對于EP1C12核心板,tcl管腳配置文件為:

#Setup.tcl

#SetuppinsettingforEP1C12mainboard

set_global_assignment-nameRESERVE_ALL_UNUSED_PINS"ASINPUTTRI-STATED"

set_global_assignment-nameENABLE_INIT_DONE_OUTPUTOFF

set_location_assignmentPIN_28-toclk

set_location_assignmentPIN_159-toreset

set_location_assignmentPIN_1-toled\[0\]

set_location_assignmentPIN_2-toled\[1\]

8、編譯該工程并通過Flash下載口下載到EPCS4芯片中注意是下載到EPCS4芯片,目的是在FPGA芯片中建立硬件系統(tǒng),為后來的軟件調(diào)試做好準備9、設(shè)計該工程的軟件

在SOPCBuilder中,打開Tools→SOPCBuilder,運行NiosIDE,如圖所示。

在NiosIIIDE中,選擇File->New->Project,開啟NewProject對話框,選擇C/C++Application,然后選擇Next,進入下一步,在模板中選擇HelloLED。點擊“SOPCBuilderSystem”右邊的“Browse”按鈕打開目錄對話框,從該工程目錄下找到“niosii_c.ptf”,因為NiosIIIDE必須從這個文件獲取該系統(tǒng)的相關(guān)信息。按Finish,即建立一個名為Hello_LED_0的模板。打開項目中的文件:hello_led.c,根據(jù)需要進行修改,在本例中,我們模板的程序改寫為以下內(nèi)容:intalt_main(void){alt_u8led=0x2;volatileinti;while(1)

{

for(i=0;i<300000;i++);

led=0x1;

*(unsignedint*)PIO_0_BASE=led;

for(i=0;i<300000;i++);

led=0x2;

*(unsignedint*)PIO_0_BASE=led;

}

return0;

}

10、編譯設(shè)置編譯之前我們先對項目進行一些設(shè)置,以使編譯器編譯出更高效、占用空間更小的代碼。右鍵點擊hello_led_0工程名稱,在彈出的菜單中選擇“Properties”,點擊后打開工程屬性(Propertiesforhello_led_0)對話框,在“ConfigurationSettings”點擊“General”頁面,選擇“”在“OptimizationLevel”中選擇“Optimizesize(-Os)”,點擊OK退出對hello_led_0工程屬性的設(shè)置。

然后,再設(shè)置hello_led_0_syslib[niosii_c]工程。右鍵點擊hello_led_0_syslib[niosii_c]工程名稱,在彈出的菜單中選擇“Properties”。

點擊后打開工程屬性(Propertiesforhello_led_0_syslib)對話框,在“ConfigurationSettings”點擊“General”頁面,在“OptimizationLevel”中選擇“Optimizesize(-Os)”。

然后,點擊該對話框的“SystemLibrary”打開Systemlibrary屬性頁面,在“Maxfiledescriptors:”欄改為4,清除“Cleanexit(flushbuffers)”和“Linkwithprofilinglibrary”,選上“Reduceddevicedrivers”和“SmallClibrary”。點擊OK完成設(shè)置。以上設(shè)置主要目的是為了優(yōu)化程序,并減少程序占用內(nèi)存空

間。

11、編譯右鍵點擊“hello_led_0”,在彈出的菜單中選擇“BuildProject”。(為使編譯過程更加順利,此時最好關(guān)閉殺毒軟件和其它占用電

溫馨提示

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

最新文檔

評論

0/150

提交評論