FPGA最小系統(tǒng)之:實(shí)例1 在Altera的FPGA開(kāi)發(fā)板上運(yùn)行第一個(gè)FPGA程序
2.5.1 實(shí)例的內(nèi)容及目標(biāo)
1.實(shí)例的主要內(nèi)容
本節(jié)旨在通過(guò)給定的工程實(shí)例——“蜂鳴器播放梁祝音樂(lè)”來(lái)熟悉Altera Quartus II軟件的基本操作、設(shè)計(jì)、編譯及仿真流程。同時(shí)使用基于Altera FPGA的開(kāi)發(fā)板將該實(shí)例進(jìn)行下載驗(yàn)證,完成工程設(shè)計(jì)的硬件實(shí)現(xiàn),熟悉Altera FPGA開(kāi)發(fā)板的使用及配置方式。
在本節(jié)中,將主要講解下面一些知識(shí)點(diǎn)。
- Quartus II工程創(chuàng)建及屬性設(shè)置。
- Quartus II源文件設(shè)計(jì)輸入方式。
- Quartus II約束設(shè)計(jì)。
- Quartus II工程編譯。
- Quartus II功能仿真。
- Quartus II時(shí)序仿真。
- Quartus II硬件下載。
通過(guò)這些知識(shí)點(diǎn),按照下面提供的訓(xùn)練流程,讀者可以迅速地掌握使用Quartus II軟件進(jìn)行FPGA開(kāi)發(fā)的方法。
2.實(shí)例目標(biāo)
通過(guò)詳細(xì)的流程講解,讀者應(yīng)達(dá)到下面的目標(biāo)。
- 熟悉Quartus II軟件的操作環(huán)境。
- 熟悉Quartus II軟件開(kāi)發(fā)FPGA的基本流程。
- 可獨(dú)立使用Quartus II軟件開(kāi)發(fā)新工程。
2.5.2 平臺(tái)簡(jiǎn)介
本實(shí)例基于紅色颶風(fēng)II代Altera板,在此開(kāi)發(fā)板上集成了Altera的Cyclone一代FPGA及相關(guān)的豐富外設(shè)資源。
此開(kāi)發(fā)板更加詳細(xì)的信息、擴(kuò)展附件及使用方法,可以到紅色颶風(fēng)的官方網(wǎng)站:http://www.fpgadev.com獲取更多的信息。
本實(shí)例將在這個(gè)開(kāi)發(fā)板上對(duì)Altera的FPGA設(shè)計(jì)流程做一個(gè)全面的介紹,依照此例程的流程便可在該開(kāi)發(fā)板上運(yùn)行一個(gè)FPGA程序。如圖2.29所示為此開(kāi)發(fā)板的外觀圖。
圖2.29 紅色颶風(fēng)II代Altera板外觀圖
2.5.3 實(shí)例詳解
本節(jié)將使用圖解的方式將整個(gè)流程一步一步展現(xiàn)給讀者,使讀者能夠輕松掌握Quartus II的開(kāi)發(fā)流程。
1.工程創(chuàng)建及屬性設(shè)置
(1)啟動(dòng)Quartus II軟件。
安裝Quartus II軟件后,在桌面或者程序組中啟動(dòng)Quartus II軟件。
(2)打開(kāi)新工程向?qū)А?/p>
啟動(dòng)軟件后,選擇“File”菜單的“New Project Wizard”選項(xiàng),打開(kāi)新建工程向?qū)?,如圖2.30所示。在新建工程向?qū)У?“介紹”頁(yè)面中,單擊“Next”按鈕進(jìn)入下一頁(yè)。
(3)設(shè)置工程屬性。
如圖2.31所示,在新建工程向?qū)У牡谝豁?yè)對(duì)工程工作目錄、工程名稱以及頂層模塊名稱進(jìn)行設(shè)置。
圖2.30 新建工程
圖2.31 設(shè)置工程屬性
(4)添加設(shè)計(jì)文件。
在新建工程向?qū)У牡诙?yè)選擇為工程添加設(shè)計(jì)文件,如圖2.32所示。
圖2.32 添加設(shè)計(jì)文件
(5)選擇FPGA器件。
在新建工程向?qū)У牡谌?yè),為工程配置相應(yīng)的器件型號(hào)和參數(shù),如圖2.33所示。選取的器件型號(hào)將在完全編譯時(shí)將工程設(shè)計(jì)映射到對(duì)應(yīng)的器件邏輯資源上。
圖2.33 選擇器件型號(hào)
(6)完成工程創(chuàng)建。
配置完器件屬性后,選擇Quartus II默認(rèn)的綜合工具、仿真工具及時(shí)序分析工具,完成工程的創(chuàng)建。
選擇軟件左側(cè)的工程瀏覽器的按鈕來(lái)管理已添加的文件。如圖2.34所示,左邊為工程層次窗口,右邊為設(shè)計(jì)文件窗口。
圖2.34 工程結(jié)構(gòu)窗口
2.設(shè)計(jì)輸入
(1)添加設(shè)計(jì)文件。
如果在創(chuàng)建工程時(shí)沒(méi)有為工程添加設(shè)計(jì)文件,可以選擇“Project”菜單的“Add/Remove Files in Project”選項(xiàng),為工程添加設(shè)計(jì)文件。在本實(shí)例中,讀者可向工程添加實(shí)例代碼中的liangzhu.v文件。
添加后,在工程瀏覽器中雙擊liangzhu.v圖標(biāo),即可查看該Verilog設(shè)計(jì)文件,如圖2.35所示。
圖2.35 Verilog設(shè)計(jì)文件
(2)配置器件屬性。
同樣的,如果在創(chuàng)建工程時(shí)沒(méi)有為工程配置器件型號(hào)及屬性,可以在工程瀏覽器的工程實(shí)體圖標(biāo)上單擊右鍵,選擇“Device”選項(xiàng),為工程配置器件屬性,如圖2.36所示。
若在建立工程時(shí)已經(jīng)配置好,則可單擊“Device Pin Options…”按鈕,進(jìn)一步設(shè)置器件的相關(guān)屬性,如圖2.37所示。
圖2.36 器件選擇 圖2.37 器件屬性配置
在如圖2.38所示的對(duì)話框中,可對(duì)FPGA所使用的配置芯片及未用管腳等進(jìn)行配置。
圖2.38 指定配置模式
選擇“Unused Pins”選項(xiàng)卡,將不使用的管腳配置為三態(tài),如圖2.39所示。
圖2.39 未用管腳置三態(tài)
(3)分析工程。
編寫設(shè)計(jì)輸入文件后,首先要進(jìn)行工程分析,目的是為了檢查設(shè)計(jì)輸入的語(yǔ)法。單擊“Start Analysis Synthesis”按鈕分析工程,如圖2.40所示。
圖2.40 分析工程選項(xiàng)
查看信息欄,修改所有出現(xiàn)的錯(cuò)誤,直到分析通過(guò),如圖2.41所示。
圖2.41 分析工程結(jié)果,沒(méi)有報(bào)錯(cuò)
3.約束設(shè)計(jì)
(1)管腳分配。
管腳分配的作用在于將設(shè)計(jì)輸入文件的端口與實(shí)際的器件進(jìn)行映射,實(shí)現(xiàn)設(shè)計(jì)輸入模塊端口在實(shí)際器件管腳上的實(shí)例化。在Quartus II軟件中可以在管腳分配主窗口中對(duì)管腳的分配進(jìn)行設(shè)置,如圖2.42所示。
圖2.42 管腳分配
通過(guò)工具欄中的快捷按鈕可以幫助用戶快速的進(jìn)行管腳分配,如圖2.43所示。
通過(guò)管腳分配主窗口中的管腳信息可以看到管腳的I/O種類、管腳的序號(hào)、Bank所在的位置、I/O使用的電壓標(biāo)準(zhǔn)等,如圖2.44所示。
圖2.43 指定管腳快捷按鈕 圖2.44 管腳信息
(2)其他約束。
除了對(duì)工程的管腳進(jìn)行約束外,Quartus II軟件還允許用戶對(duì)其他的一些約束進(jìn)行設(shè)置,例如面積約束、速度約束、時(shí)鐘約束、資源約束等。這些約束都屬于較為嚴(yán)格的工程設(shè)置,在本實(shí)戰(zhàn)訓(xùn)練中無(wú)需考慮。
4.編譯工程
(1)完全編譯。
有了完整的設(shè)計(jì)輸入、完整的約束條件后,就可以對(duì)工程進(jìn)行完全編譯了,如圖2.45所示是完全編譯的選項(xiàng)。
根據(jù)工程復(fù)雜度的不同,Quartus II在進(jìn)行完全編譯時(shí)所消耗的時(shí)間差異也很大。在工程瀏覽器中顯示了編譯的類別及進(jìn)度,幫助用戶了解編譯的進(jìn)程。
圖2.45 完全編譯選項(xiàng) 圖2.46 編譯狀態(tài)
若在編譯過(guò)程中出現(xiàn)錯(cuò)誤提示,用戶可在信息欄中查看錯(cuò)誤的信息,修改所有存在的錯(cuò)誤后重新進(jìn)行編譯,直到能夠無(wú)錯(cuò)誤地完成編譯,如圖2.47所示。
圖2.47 編譯結(jié)果信息欄
(2)編譯報(bào)告。
Quartus II編譯結(jié)束后,為用戶提供了一個(gè)完整而詳細(xì)的編譯報(bào)告。通過(guò)該報(bào)告,用戶可以查看工程使用資源的情況及系統(tǒng)可以達(dá)到的性能,如圖2.48所示。
5.功能仿真
(1)建立仿真文件。
選擇Quartus II軟件“File”菜單的“New”選項(xiàng),打開(kāi)新建其他文件對(duì)話框,選擇新建波形圖文件,如圖2.49所示。
圖2.48 編譯結(jié)果報(bào)告 圖2.49 新建波形圖
(2)添加觀察信號(hào)。
用戶可以通過(guò)雙擊波形窗口中的空白區(qū)域?yàn)楣こ烫砑有枰^察的信號(hào),如圖2.50所示。
圖2.50 仿真波形窗口
在打開(kāi)的插入節(jié)點(diǎn)或總線對(duì)話框中,打開(kāi)“Node Finder…”(節(jié)點(diǎn)查找器),如圖2.51所示。通過(guò)節(jié)點(diǎn)查找器,用戶可以方便地選擇需要觀察的信號(hào)。
圖2.51 插入節(jié)點(diǎn)或總線對(duì)話框
選擇Filter:“Pins:all”,然后點(diǎn)擊list列出所用輸入/輸出端口,如圖2.52所示。
圖2.52 節(jié)點(diǎn)查找器
選中所有信號(hào),單擊按鈕,即可將選中信號(hào)加入觀察目標(biāo)窗口中,如圖2.53所示。
圖2.53 已添加好的信號(hào)
(3)設(shè)置仿真時(shí)間最小間隔。
考慮到硬件環(huán)境提供的是50MHz的時(shí)鐘,即時(shí)鐘周期為20ns,設(shè)置“Grid Size”為20ns。選擇“Edit”菜單的“Grid Size”選項(xiàng)進(jìn)行設(shè)置,如圖2.54所示。
(4)設(shè)置仿真時(shí)間長(zhǎng)度。
選擇“Edit”菜單的“End Time”選項(xiàng),設(shè)置仿真時(shí)間長(zhǎng)度為10ms,如圖2.55所示。
(5)添加激勵(lì)信號(hào)。
選中sys_clk信號(hào),單擊時(shí)鐘按鈕,將該信號(hào)設(shè)置為時(shí)鐘波形,周期為20ns,如圖2.56所示。此信號(hào)代表了系統(tǒng)時(shí)鐘。
圖2.55 設(shè)置仿真結(jié)束時(shí)間 圖2.56 設(shè)置時(shí)鐘
選中rst_n信號(hào),單擊高電平按鈕,將該信號(hào)設(shè)置為1。此信號(hào)代表了復(fù)位信號(hào)。
添加激勵(lì)信號(hào)后,選擇保存文件,此時(shí)的波形如圖2.57所示。
圖2.57 以設(shè)置好的輸入波形
(6)生成功能仿真網(wǎng)表。
選擇“Tools”菜單的“Simulator Tool”選項(xiàng),打開(kāi)仿真器,如圖2.58所示。
將仿真器的仿真模式設(shè)置為“Functional”(功能仿真),如圖2.59所示。
圖2.58 仿真器選項(xiàng) 圖2.59 仿真對(duì)話框
單擊“Generate Functional Simulation Netlist”按鈕產(chǎn)生仿真網(wǎng)表。仿真網(wǎng)表是將工程設(shè)計(jì)文件進(jìn)行編譯及映射后生成的用于進(jìn)行仿真的文件,仿真器根據(jù)仿真網(wǎng)表進(jìn)行仿真,直接反應(yīng)了工程設(shè)計(jì)文件的真實(shí)情況。
(7)開(kāi)始功能仿真。
單擊“Start”按鈕開(kāi)始進(jìn)行功能仿真,如圖2.60所示,可以看到仿真的進(jìn)度,根據(jù)工程的復(fù)雜度,仿真過(guò)程所消耗的時(shí)間也有所不同。
圖2.60 仿真進(jìn)度
仿真完成后單擊“open”按鈕打開(kāi)仿真結(jié)果,如圖2.61所示。
圖2.61 仿真波形結(jié)果
6.時(shí)序仿真
功能仿真后,如果波形沒(méi)有問(wèn)題,開(kāi)始做時(shí)序仿真,檢查波形延時(shí)對(duì)設(shè)計(jì)是否有影響。
選擇“Tools”菜單的“Simulator Tool”選項(xiàng),打開(kāi)仿真器,選擇仿真模式為“Timing”,即時(shí)序仿真模式,如圖2.62所示。
圖2.62 選擇時(shí)序仿真
單擊“Start”按鈕,開(kāi)始時(shí)序仿真。時(shí)序仿真比功能仿真要慢一些。
仿真完成后,查看仿真結(jié)果。通過(guò)波形可以看到產(chǎn)生了7.06ns的延時(shí),如圖2.63所示。
圖2.63 查看仿真結(jié)果
可以看到,功能仿真并不包含延遲,而時(shí)序仿真則會(huì)根據(jù)具體的器件參數(shù)配置及資源使用情況將延遲仿真出來(lái)。功能仿真主要用于驗(yàn)證工程設(shè)計(jì)文件邏輯的正確性,而時(shí)序仿真更能體現(xiàn)真實(shí)的硬件運(yùn)行過(guò)程中設(shè)計(jì)文件的執(zhí)行過(guò)程。
7.下載程序
仿真驗(yàn)證結(jié)束后,用戶就可以將工程下載到實(shí)際的開(kāi)發(fā)板上進(jìn)行驗(yàn)證了。
選擇“Tools”菜單的“Programmer”選項(xiàng),打開(kāi)下載器界面,如圖2.64所示。
圖2.64 下載界面
首先單擊“Hardware Setup”按鈕,選擇下載電纜,如ByteBlasterII(LPT1),即打印機(jī)接口下載線,然后選擇下載模式為JTAG(在線調(diào)試)模式或者AS(固化至EPCS配置芯片)模式,并選擇對(duì)應(yīng)的下載文件。
連接好下載電纜后,選中“Program/Configure”即可下載。
8.結(jié)果檢驗(yàn)
下載結(jié)束后,用戶應(yīng)該可以在開(kāi)發(fā)板的蜂鳴器上聽(tīng)到演奏的梁祝樂(lè)曲。如果采用的是JTAG下載模式,那么將開(kāi)發(fā)板斷電后,重新上電,則樂(lè)曲不會(huì)再繼續(xù)演奏;若使用的是AS下載模式,則樂(lè)曲還會(huì)再繼續(xù)演奏。
若下載后沒(méi)有聽(tīng)到樂(lè)曲,用戶應(yīng)檢查幾個(gè)主要容易出問(wèn)題的步驟。例如,設(shè)計(jì)輸入是否完整,管腳是否分配,下載電纜是否正確連接等。
2.5.4 小結(jié)
上述流程就是一個(gè)完整的FPGA設(shè)計(jì)流程。雖然此實(shí)例實(shí)現(xiàn)的功能比較簡(jiǎn)單,但對(duì)于初學(xué)者來(lái)說(shuō),是一個(gè)不錯(cuò)的入門實(shí)例。其主要目的是讓初學(xué)者對(duì)FPGA的設(shè)計(jì)有一個(gè)初步的了解。通過(guò)該實(shí)例來(lái)熟悉Quartus II軟件的使用,為今后的學(xué)習(xí)打下基礎(chǔ)。
在實(shí)際的FPGA設(shè)計(jì)中,在每個(gè)階段都會(huì)遇到很多問(wèn)題。為了實(shí)現(xiàn)最終的目標(biāo),需要充分地利用Quartus II設(shè)計(jì)軟件。這需要一個(gè)比較長(zhǎng)時(shí)間的學(xué)習(xí)和積累,希望通過(guò)這個(gè)實(shí)例能讓初學(xué)者更快地入門。
評(píng)論