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