3.2 四位閃爍燈設(shè)計-明德?lián)P至簡設(shè)計法原理與應(yīng)用
本文的文檔編號:000800000014
1、講解了如何使用至簡設(shè)計法來設(shè)計實(shí)現(xiàn)4位LED燈循環(huán)閃爍的功能,具體功能位:間隔1秒,第N盞LED燈亮N秒(其中,N=1.2.3.4)的功能
需要看對應(yīng)的視頻,請點(diǎn)擊視頻編號:000800000045
第三篇?FPGA至簡設(shè)計項(xiàng)目實(shí)踐
? ?第二章??4位閃爍燈設(shè)計
第1節(jié) 項(xiàng)目背景
LED燈的相關(guān)理論以及教學(xué)板的原理圖已經(jīng)在第一個案例《1位閃爍燈》中進(jìn)行了比較詳細(xì)的講解,這里就不再贅述,如果有需要可以返回上一章進(jìn)行閱讀學(xué)習(xí)。
第2節(jié) 設(shè)計目標(biāo)
開始進(jìn)行新的設(shè)計之前,依舊先要明確本設(shè)計的功能目標(biāo),這也是本書以及至簡設(shè)計法的特別之處。通過對上一個案例的學(xué)習(xí)領(lǐng)悟也可以意識到明確設(shè)計目標(biāo)的重要性,后續(xù)設(shè)計的每一個步驟都應(yīng)該根據(jù)功能目標(biāo)有進(jìn)行針對性的逐步展開。至簡設(shè)計法的這一方法讓每一段代碼每一個步驟都有其相應(yīng)作用。反之,在設(shè)計中如果沒有明確設(shè)計目標(biāo),而是按照自己的想法東一錘子、西一榔頭,可能最終要花費(fèi)成倍的時間才能做出同樣的成果。所以再次強(qiáng)調(diào),在設(shè)計目標(biāo)確立這一步驟一定不要偷懶,要認(rèn)真思考一下本次設(shè)計最終目標(biāo)是什么,希望達(dá)到什么效果,明確目標(biāo)后再進(jìn)行設(shè)計實(shí)操才能起到事半功倍的效果。
本工程使用4個LED燈(LED1~LED4)來實(shí)現(xiàn)閃爍燈的功能。具體功能要求為:首先LED1暗1秒,接著亮1秒后變暗;接著LED2暗1秒,亮2秒后變暗;隨后LED3暗1秒,亮3秒后變暗;最后LED4暗1秒,亮4秒后變暗;至此一個循環(huán)結(jié)束,隨后按照此規(guī)律進(jìn)行循環(huán)往復(fù)。也就是說,四個LED燈依次循環(huán)閃爍,具體閃爍要求為:隔1秒,亮N秒,N的變化為:1,2,3,4秒,然后再次進(jìn)入循環(huán)。閃爍燈變化功能圖如圖3.2-1所示,上板后的效果展示可參見圖3.2-2??梢缘卿浿梁喸O(shè)計法官方網(wǎng)站觀看上板后的演示視頻:www.mdy-edu.com/xxxx。

圖3.2-14位閃爍燈功能圖

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??圖3.2-24位閃爍燈效果圖
第3節(jié) 設(shè)計實(shí)現(xiàn)
與上個案例相同,下面會詳細(xì)的按照步驟和思考邏輯進(jìn)行工程的逐步分析。如果知識掌握比較牢靠、只想練習(xí)設(shè)計工程,可以跳過此部分,直接進(jìn)入第五節(jié)“簡化版步驟分享”進(jìn)行實(shí)操練習(xí)。依舊建議初學(xué)者不要選擇捷徑,按照詳細(xì)思路一步步學(xué)習(xí)分析打好基礎(chǔ),在掌握思想原理之后,再按照操作步驟反復(fù)進(jìn)行實(shí)踐。
3.1 頂層信號
新建目錄:D:mdy_bookhuxiled,并在該目錄中,新建一個名為huxiled.v的文件。用GVIM打開該文件后開始編寫代碼。這里再強(qiáng)調(diào)一下,建議初學(xué)者按照本書提供的文件路徑以及文件名進(jìn)行設(shè)置,避免不必要的錯誤。
首先應(yīng)確定頂層信號。由設(shè)計目標(biāo)可知控制相應(yīng)LED燈亮或滅需要FPGA產(chǎn)生一個信號并將此信號傳送至LED燈。想控制LED燈滅,則令FPGA輸出信號為1,想控制LED燈亮,則令FPGA輸出信號為0。根據(jù)目標(biāo)可知需要分別控制4個LED燈亮或滅,對應(yīng)地需要FPGA產(chǎn)生4個信號。假定這4個信號分別為led0、led1、led2和led3,將其分別與相應(yīng)LED燈連接。操作中如果想控制LED0亮,LED1~3滅,則應(yīng)控制FPGA輸出的led0信號為0,led1~3信號都為1。
硬件電路圖的連接關(guān)系如下表所示,可以看到本工程中LED0連接的FPGA管腳為AA4,對應(yīng)FPGA工程信號為led0;LED1連接的FPGA管腳為AB4,對應(yīng)FPGA工程信號為led1;LED2連接的FPGA管腳為AA5,對應(yīng)FPGA工程信號為led2;LED3燈連接的FPGA管腳為AB8,對應(yīng)的FPGA工程信號為led3。工程的時鐘管腳為G1,對應(yīng)FPGA工程信號為clk,復(fù)位管腳為AB12,對應(yīng)FPGA工程信號為rst_n。由此可見,本工程一共需要六個信號:時鐘信號clk、復(fù)位信號rst_n以及四個LED燈的控制信號led0、led1、led2和led3。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?表3.2-1信號和管腳關(guān)系

基于此可以完成頂層信號代碼的編寫,將module的名稱定義為huxiled。在頂層信號代碼中需要將與外部相連接的輸入/輸出信號列出,從而實(shí)現(xiàn)信號與管腳的連接,其具體代碼如下:

隨后對信號的輸入輸出屬性進(jìn)行聲明,指出對于FPGA來說這一信號屬于輸入還是輸出,若為輸入聲明則為input,若為輸出聲明則為output。在本設(shè)計中由于clk是外部晶振輸送給FPGA的,因此對于FPGA來說clk為輸入信號input。同樣地,rst_n是外部按鍵給FPGA的,在FPGA中也為輸入信號input。同時可知led0、led1、led2、led3四個信號是FPGA產(chǎn)生以實(shí)現(xiàn)對相應(yīng)四個LED燈的控制,因此led0、led1、led2、led3為輸出信號output。根據(jù)這些信息將輸入輸出端口定義補(bǔ)充完整,其代碼如下:

3.2?信號設(shè)計
在進(jìn)行架構(gòu)設(shè)計前再次分析一下功能需求,首先?LED1暗1秒,亮1秒變暗;接著LED2暗1秒,亮2秒后變暗;隨后LED3暗1秒,亮3秒后變暗;最后LED4暗1秒,亮4秒后變暗,如此循環(huán)往復(fù)。分析需求可以看出:當(dāng)一個LED燈亮?xí)r,其余LED燈都屬于滅的狀態(tài)。如果將四個LED燈看成一個整體循環(huán),可以把功能需求翻譯成:LED0復(fù)位后,滅1秒,亮1秒后滅12秒;LED1復(fù)位后,滅3秒,亮2秒后滅9秒;LED2復(fù)位后,滅6秒,亮3秒后滅5秒;LED3,滅10秒后亮4秒,四個LED燈以此為規(guī)律循環(huán)往復(fù)。
下面將以上邏輯翻譯成信號來進(jìn)行理解:
復(fù)位后,信號led0=1持續(xù)1秒,接著讓led0=0持續(xù)1秒,然后讓led0=1持續(xù)12秒,循環(huán)往復(fù)。
復(fù)位后,信號led1=1持續(xù)3秒,接著讓led1=0持續(xù)2秒,然后讓led1=1持續(xù)9秒,循環(huán)往復(fù)。
復(fù)位后,信號led2=1持續(xù)6秒,接著讓led2=0持續(xù)3秒,然后讓led2=1持續(xù)5秒,循環(huán)往復(fù)。
復(fù)位后,信號led3=1持續(xù)10秒,接著讓led3=0持續(xù)4秒,循環(huán)往復(fù)。
以此為規(guī)律的信號波形圖如下圖所示。

圖3.2-34位閃爍燈波形圖
從波形圖中可看出信號led0~led3的變化單位最小是1秒,并且4個信號都是以14秒為一個周期進(jìn)行循環(huán)往復(fù)。這樣的情況下,至簡設(shè)計法的思路是使用2個計數(shù)器,其中1個計數(shù)器用來確定1秒的時間,另1個計數(shù)器用來計1秒的次數(shù)從而確定一個循環(huán)即14秒的時間。這兩個計數(shù)器的使用為led0~led3的變化時間確定了標(biāo)準(zhǔn)。
本設(shè)計中將計算1秒次數(shù)的計數(shù)器命名為cnt0。至簡設(shè)計法的設(shè)計規(guī)則中有講過,計數(shù)器的設(shè)計只考慮兩個因素:加1條件和計數(shù)數(shù)量。只要確定好相應(yīng)邏輯,就能完成計數(shù)器代碼設(shè)計。本工程的工作時鐘是50MHz,時鐘周期即20ns,當(dāng)計數(shù)器計數(shù)到1_000_000_000/20=50_000_000個的時候就意味著1秒時間計時結(jié)束。該計數(shù)器始終不停地進(jìn)行計數(shù),因此可以認(rèn)為其加1條件是一直有效的,可寫成:assignadd_cnt0==1。
可能會有同學(xué)提出疑問:加1條件的概念是什么?這里以停車位來進(jìn)行比喻,一般情況下對每個停車位置會進(jìn)行對應(yīng)編號,但是如果某個位置上放置了一塊石頭無法作為停車位時,該位置就不能獲得對應(yīng)的編號。反之則可以認(rèn)為停車位編號的加1條件就是:對應(yīng)位置上沒有石頭,其可以繼續(xù)進(jìn)行編號,即assignadd_cnt0 = “沒有石頭”。因此如果在設(shè)計中計數(shù)器一直沒有阻礙地進(jìn)行計數(shù)工作,則可以認(rèn)為加1條件是一直有效的。
以往進(jìn)行代碼編寫這一步驟時都是一行行的輸入相應(yīng)代碼。至簡設(shè)計法在這里提供一個小技巧,在節(jié)省編寫代碼的時間的同時在一定程度上降低了代碼的出錯率。至簡設(shè)計法將日常代碼中常用到的固定部分制作成模板,進(jìn)行代碼編程時可以調(diào)用相應(yīng)模板后根據(jù)邏輯輸入對應(yīng)設(shè)計的變量將代碼補(bǔ)充完整。此處就可以用模板編寫計數(shù)器代碼,下面帶領(lǐng)同學(xué)們一起來學(xué)習(xí)一下這個炫酷的功能。
打開GVIM工具,在命令模式下輸入“:Mdyjsq”,點(diǎn)擊回車后調(diào)出了對應(yīng)模板,如下圖所示。之后再將本案例中的變量填到模板里面,就可以得到完整正確的計數(shù)器代碼。

圖3.2-4至簡設(shè)計法調(diào)用計數(shù)器代碼模板
按照上文方法調(diào)出計數(shù)器模板后,將本案例中的變量填到模板里面,得到計數(shù)器cnt0的完整代碼如下:

同樣的,需要確定用于計時14秒計數(shù)器的加1條件和計數(shù)數(shù)量,將該計數(shù)器命名為cnt1。該計數(shù)器的值每隔1秒進(jìn)行加1操作,因此其加一條件為cnt0結(jié)束,用代碼表示即為end_cnt0。根據(jù)設(shè)計目標(biāo)可知計數(shù)器cnt1用于確定周期時間,閃爍燈的一個周期是14秒,因此該計數(shù)器的計數(shù)數(shù)量應(yīng)為14。
此處可以繼續(xù)調(diào)用代碼模板,在GVIM的命令模式下輸入“:Mdyjsq”,點(diǎn)擊回車調(diào)出計數(shù)器模板后將“add_cnt1”和“end_cnt1”補(bǔ)充完整,得到代碼如下:

確定好兩個計數(shù)器的代碼后請同學(xué)們思考一下四個led輸出信號的變化。根據(jù)設(shè)計目標(biāo)可知,LED燈具有兩種狀態(tài):亮和滅。對應(yīng)地,四個led輸出信號也兩個變化點(diǎn):變0和變1。下面依次對四個led信號變化的原因進(jìn)行判斷,可以結(jié)合圖3.2-3中的波形進(jìn)行思考。首先來確定led0,根據(jù)設(shè)計目標(biāo)可以發(fā)現(xiàn):led0變0的原因是計數(shù)器完成了1秒計時,即當(dāng)add_cnt1 && cnt1==1-1時,時間過去了一秒,led0的值變?yōu)?來控制LED0點(diǎn)亮。而led0變1的原因則是計數(shù)器完成2秒時間計時,即add_cnt1 && cnt1==2-1時,led0的值變?yōu)?從而控制LED0熄滅。在GVIM的編輯模式下輸入“Shixu2”回車,調(diào)用至簡設(shè)計法模板,將代碼補(bǔ)充完整后得到led0信號的代碼如下:

下面來思考輸出信號led1的變化原因。同理,led1的值變0的原因是計數(shù)到3秒時間,即add_cnt1 &&cnt1==3-1時,led1的值變?yōu)?從而控制LED1點(diǎn)亮。led1變1的原因則是計數(shù)到5秒時間,即add_cnt1 &&cnt1==5-1時,led1的值變?yōu)?從而控制LED1熄滅。打開GVIM,在編輯模式下輸入“Shixu2”回車后調(diào)用至簡設(shè)計法模板,將代碼補(bǔ)充完整后得到led1信號的代碼如下所示:

同樣的邏輯來思考輸出信號led2的變化。led2變0的原因是計數(shù)到6秒時間,也就是add_cnt1 &&cnt1==6-1時,led2的值變?yōu)?從而控制LED2點(diǎn)亮。led2變1的原因則是數(shù)到9秒時間,即add_cnt1 &&cnt1==9-1時,led2的值變?yōu)?從而控制LED2熄滅。打開GVIM,在編輯模式下輸入“Shixu2”回車,調(diào)用至簡設(shè)計法模板,將代碼補(bǔ)充完整后得到led2信號的代碼如下:

最后確定輸出信號led3的變化。led3變0的原因是計數(shù)到10秒時間,也就是add_cnt1 &&cnt1==10-1時,led2的值變?yōu)?從而控制LED2點(diǎn)亮。變1的原因是計數(shù)到14秒時間,即add_cnt1 && cnt1==14-1,也就是end_cnt1時,led3的值變?yōu)?從而控制LED2熄滅。在GVIM的編輯模式下輸入“Shixu2”回車,調(diào)用至簡設(shè)計法模板,將代碼補(bǔ)充完整后得到led0信號的代碼如下:

至此,主體程序已經(jīng)完成。如果對四個輸出信號代碼的設(shè)計還存有疑慮,可以結(jié)合波形圖再次著重了解一下設(shè)計目標(biāo),重新整理思路,完全吸收設(shè)計目標(biāo)后再進(jìn)行代碼編寫。反復(fù)領(lǐng)會吸收一定會有所收獲。
3.3 信號定義
下面需要將module補(bǔ)充完整,首先要做的是定義信號的類型。在這里再次強(qiáng)調(diào),在進(jìn)行reg和wire類型判斷的時候,總會有多余的聯(lián)想,比如認(rèn)為reg就是寄存器,wire是線;或者認(rèn)為reg類型會綜合成寄存器,wire類型不會綜合成寄存器。實(shí)際上這些與信號是reg型還是wire型都沒有關(guān)系。至簡設(shè)計法建議不要進(jìn)行任何聯(lián)想,只遵從一個規(guī)則:“用always實(shí)現(xiàn)的是reg型,其他都是wire型”。
進(jìn)行信號定義時,除了信號的類型還需要確定信號的位寬。至簡設(shè)計法在這里分享一個非常實(shí)用的獲取信號位寬的技巧:打開計算器,點(diǎn)擊“查看”,選擇“程序員”模式,在“十進(jìn)制”下輸入數(shù)字后就會獲得對應(yīng)的信號位寬。

圖3.2-5通過計算器獲取信號位寬
cnt0是用always產(chǎn)生的信號,因此類型為reg。cnt0計數(shù)的最大值為50_000_000。如圖3.2-5所示,通過計算器可以得知該信號需要用26根線表示,即位寬是26位。代碼表示如下:

同樣的,cnt1也是用always產(chǎn)生的信號,因此類型為reg。cnt1計數(shù)的最大值為8,需要用4根線表示,即位寬是4位。編輯狀態(tài)下輸入“Reg4”調(diào)用至簡設(shè)計法模板,補(bǔ)充完整后得到代碼表示如下:

add_cnt0和end_cnt0都是用assign方式設(shè)計的,因此類型為wire。其值是0或者1,用1根線表示即可,即位寬為1。編輯模式下輸入“Wire1”調(diào)用模板,補(bǔ)充完整后得到代碼表示如下:

add_cnt1和end_cnt1也是用assign方式設(shè)計的,因此類型為wire。其值是0或者1,用1根線表示即可,即位寬為1。編輯模式下輸入“Wire1”調(diào)用模板,補(bǔ)充完整后得到代碼表示如下:

led0、led1、led2、led3是用always方式設(shè)計的,因此類型為reg。其值是0或者1,用1根線表示即可。編輯模式下輸入“Reg1”調(diào)用模板,補(bǔ)充完整后得到代碼表示如下:

整個代碼的設(shè)計工作至此已經(jīng)完成,完整的工程代碼如下所示:

第4節(jié) 綜合與上板
4.1 新建工程
打開軟件Quartus Ⅱ,點(diǎn)擊“File”下拉列表中的New Project Wzard...新建工程選項(xiàng),如下圖所示。

圖3.2-6Quartus新建工程
隨后會出現(xiàn)圖3.2-7所示的Quartus新建工程介紹,直接點(diǎn)擊“Next”:

圖3.2-7Quartus新建工程介紹
此時出現(xiàn)的是工程文件夾、工程名、頂層模塊名設(shè)置界面,如圖3.2-8所示。注意目錄為:D:/mdy_book/huxiled,工程名和頂層名為huxiled。這里再次進(jìn)行強(qiáng)調(diào),為了避免初學(xué)者使用過程中出現(xiàn)報錯情況,強(qiáng)烈建議按照本書的工程名和文件名進(jìn)行設(shè)置,設(shè)置完成后點(diǎn)擊Next。

圖3.2-8QUARTUS新建工程設(shè)置名稱
新建工程類型設(shè)置選擇“Empty project”,如下圖所示,然后點(diǎn)擊“Next”。

圖3.2-9QUARTUS新建工程類型
文件添加界面如圖3.2-10所示,點(diǎn)擊右側(cè)的“Add”按鈕,選擇已經(jīng)寫好的“huxiled.v”文件,此時文件會在下方顯示出來,隨后點(diǎn)擊“Next”。

圖3.2-10QUARTUS添加文件
芯片型號選擇界面如圖3.2-11所示,選擇“Cyclone ⅣE”,在芯片型號選擇處選擇“EP4CE15F23C8”,之后點(diǎn)擊“Next”。

圖3.2-11QUARTUS選擇芯片型號
圖3.2-12為QUARTUS設(shè)置工具界面,不必做任何修改,直接點(diǎn)擊“Next”即可。

圖3.2-12QUARTUS設(shè)置工具界面
新建工程的匯總情況如圖3.2-13所示,點(diǎn)擊“Finish”完成新建工程。

圖3.2-13QUARTUS新建工程匯總界面
4.2 綜合
新建工程步驟完成后,QUARTUS界面如下圖所示。

圖3.2-14QUARTUS新建工程后界面
點(diǎn)擊編譯按鈕,可以對整個工程進(jìn)行編譯,編譯成功后的界面如圖3.2-15所示。

圖3.2-15QUARTUS編譯后界面
4.3 配置管腳
下面需要對相應(yīng)管腳進(jìn)行配置。如圖3.2-16所示,在菜單欄中選中Assignments后選擇Pin Planner,隨后配置管腳的窗口就會彈出。

圖3.2-16QUARTUS配置管腳選項(xiàng)
在配置窗口最下方中的“l(fā)ocation”一列,參考信號和管腳關(guān)系,按照表3.2-1中最右兩列配置好FPGA管腳。此處配置管理來源的選擇在最開始的管腳配置設(shè)計環(huán)節(jié)中進(jìn)行了講解,最終配置的結(jié)果見圖3.2-17。配置完成后,關(guān)閉“Pin Planner”,軟件自動會保存管腳配置信息。
表3.2-1信號和管腳關(guān)系


圖3.2-17QUARTUS配置管腳
4.4 再次綜合
再次打開“QUARTUS”軟件,在菜單欄中選中“Processing”,然后選擇“Start Compilation”,再次對整個工程進(jìn)行編譯和綜合,如下圖所示。

圖3.2-18QUARTUS編譯選項(xiàng)
當(dāng)出現(xiàn)如下圖所示的編譯成功標(biāo)志時,說明已經(jīng)編譯綜合成功。

圖3.2-19QUARTUS編譯成功標(biāo)志
4.5 連接開發(fā)板
完成編譯后開始進(jìn)行上板調(diào)試操作,按照下圖的方式將下載器接入電腦USB接口,接上開發(fā)板電源后按下開發(fā)板下方藍(lán)色開關(guān),硬件連接完畢。

圖3.2-204位閃爍燈開發(fā)板連接圖
4.6 上板
如下圖所示,單擊QUARTUS界面中的 ,彈出配置界面。

圖3.2-21QUARTUS界面
隨后點(diǎn)擊“add file”添加“.sof”文件,點(diǎn)擊“Start”,在“Progress”中會顯示出進(jìn)度。

圖3.2-22QUARTUS下載程序界面
如圖3.2-22所示,當(dāng)“Progress”進(jìn)度條中提示成功即可在開發(fā)板上觀察到相應(yīng)的現(xiàn)象。如果按照步驟正確完成了設(shè)計,此時會看到四個LED燈輪流開始閃爍,且每次持續(xù)的時間按照增加一秒的規(guī)律,四個LED燈依次閃爍循環(huán)往復(fù),若觀察到這一現(xiàn)象則可以判斷此次設(shè)計成功。如果無法正常顯示或者未按設(shè)計閃爍的情況,則需要回過頭來進(jìn)行排查錯誤。如果反復(fù)思考后依然無法找到錯誤,建議靜下心來重新操作一遍,熟能生巧,多次實(shí)踐后自然而然就可以迅速發(fā)現(xiàn)問題并且解決問題。
第5節(jié) 簡化版步驟分享
同樣這里也會分享簡化版的步驟,方便復(fù)習(xí)以及反復(fù)實(shí)操。
5.1 設(shè)計實(shí)現(xiàn)
5.1.1 頂層信號
新建目錄:D:mdy_bookhuxiled。在該目錄中,新建一個名為“huxiled.v”的文件,并用GVIM打開,開始編寫代碼。
確定頂層信號。工程信號和管腳關(guān)系如下圖:
表3.2-1信號和管腳關(guān)系

寫出頂層信號代碼:

聲明輸入輸出屬性:

5.1.2 信號設(shè)計
首先進(jìn)行架構(gòu)設(shè)計。根據(jù)設(shè)計需求得出波形圖如下所示。

圖3.2-34位閃爍燈波形圖
設(shè)計計數(shù)器架構(gòu),表示計時1秒的計數(shù)器cnt0代碼如下所示:

表示計時一次循環(huán)(14秒)的計數(shù)器cnt1代碼如下所示:

設(shè)計led0信號代碼:

設(shè)計led1信號代碼:

設(shè)計led2信號代碼:

設(shè)計led3信號代碼:

主體程序完成后將module補(bǔ)充完整。
5.1.3 信號定義
對信號進(jìn)行類型定義,其中cnt0 信號定義如下:

add_cnt0和 end_cnt0 信號定義如下:

cnt1信號定義如下:

add_cnt1和 end_cnt1 信號定義如下:

led0、led1、led2、led3信號定義如下:

至此,整個代碼的設(shè)計工作完成,后續(xù)應(yīng)對代碼進(jìn)行編譯綜合以及上板查看現(xiàn)象。
5.2 綜合與上板
5.2.1 新建工程
打開Quartus Ⅱ,點(diǎn)擊File下拉列表中的New Project Wzard...新建工程選項(xiàng)。

圖3.2- 6Quartus新建工程
點(diǎn)擊“Next”。

圖3.2-7Quartus新建工程介紹
此時會出現(xiàn)工程文件夾、工程名、頂層模塊名設(shè)置界面,完成設(shè)置后點(diǎn)擊“Next”。

圖3.2-8QUARTUS新建工程設(shè)置名稱
選擇“Empty project”后點(diǎn)擊“Next”。

圖3.2- 9QUARTUS新建工程類型
點(diǎn)擊右側(cè)的“Add”按鈕后添加“huxiled.v”文件,點(diǎn)擊“Next”。

圖3.2-10QUARTUS添加文件
在“Device family”選項(xiàng)中選擇“Cyclone ⅣE”,“Available devices”選項(xiàng)下選擇“EP4CE15F23C8”,隨后點(diǎn)擊“Next”。

圖3.2-11QUARTUS選擇芯片型號
直接點(diǎn)擊“Next”。

圖3.2-12QUARTUS設(shè)置工具界面
點(diǎn)擊“Finish”,完成新建工程。

圖3.2-13QUARTUS新建工程匯總界面
5.2.2 綜合
新建工程后界面如下圖所示,點(diǎn)擊“編譯”按鈕。

圖3.2-14QUARTUS新建工程后界面
編譯成功界面如下圖所示。

圖3.2-15QUARTUS編譯后界面
5.2.3 配置管腳
在菜單欄點(diǎn)擊“Assignments”后點(diǎn)擊“Pin Planner”隨后會彈出配置管腳的窗口。

圖3.2-16QUARTUS配置管腳選項(xiàng)
在配置窗口“l(fā)ocation”配置管腳,配置完成關(guān)閉“Pin Planner”即可自動保存配置信息。

圖3.2-17QUARTUS配置管腳
5.2.4 再次綜合
打開“QUARTUS”軟件,在菜單欄中選擇“Processing”,點(diǎn)擊“Start Compilation”后再次進(jìn)行綜合。

圖3.2-18QUARTUS編譯選項(xiàng)
出現(xiàn) QUARTUS 編譯成功標(biāo)志則表示此次編譯成功。

圖3.2-19QUARTUS編譯成功標(biāo)志
5.2.5 連接開發(fā)板
將下載器接入電腦 USB 接口,開發(fā)板接上電源后按下藍(lán)色開關(guān)。

圖3.2-204位閃爍燈開發(fā)板連接圖
5.2.6 上板
打開 QUARTUS 界面后單擊“?

?”圖標(biāo)。

圖3.2-21QUARTUS界面
點(diǎn)擊“add file”添加.sof文件,隨后點(diǎn)擊“Start”?!癙rogress”會顯示當(dāng)前進(jìn)度,當(dāng)進(jìn)度條顯示“100%”為成功,可在開發(fā)板觀察此時現(xiàn)象。

圖3.2-22QUARTUS下載程序界面
第6節(jié) 擴(kuò)展練習(xí)
至此整個4位閃爍燈設(shè)計就分享完畢了,這里也可以基于此例展開思考,可以自己嘗試更改LED亮燈時間或者四個LED燈的亮燈順序。嘗試進(jìn)行更多的設(shè)計,也歡迎有更好思路和想法的同學(xué)前往至簡設(shè)計法論壇進(jìn)行交流討論。
? ?