【小月电子】ALTERA FPGA开发板系统学习教程-LESSON2 LED灯闪烁
LED燈閃爍例程講解
若要觀看該博客配套的視頻教程,可點(diǎn)擊此鏈接 開發(fā)板實(shí)物圖 圖1.FPGA設(shè)計(jì)流程 根據(jù)多年工作經(jīng)驗(yàn),總結(jié)出的FPGA的設(shè)計(jì)流程,概括起來總共有以上12步,其中根據(jù)項(xiàng)目難易度可省去其中一些步驟。比如非常簡(jiǎn)單的項(xiàng)目,我們可以省去虛線框里面的步驟,但是我們的入門級(jí)課程,即使再簡(jiǎn)單,也按照這12個(gè)步驟來進(jìn)行講解。
1.需求解讀
1.1 需求
實(shí)現(xiàn)LED燈(D8)間隔1秒閃爍1次
1.2 知識(shí)背景
LED燈簡(jiǎn)介
LED,又名發(fā)光二極管。 LED燈工作電流很小(有的僅零點(diǎn)幾毫安即可發(fā)光) , 抗 沖擊和抗震性能好,可靠性高,壽命長(zhǎng)。由于這些優(yōu)點(diǎn), LED燈被廣泛用在儀器儀表 中作指示燈、 液晶屏背光源等諸多領(lǐng)域。不同材料的發(fā)光二極管可以發(fā)出紅、 橙、 黃、 綠、 青、藍(lán)、 紫、白這八種顏色的光。 如下圖所示:
1.3 硬件設(shè)計(jì)
有源晶振,與E1管腳相連 獨(dú)立按鍵,與M1管腳相連
1.4 接口說明
| CLK_50M | 輸入 | E1 | 系統(tǒng)時(shí)鐘,50Mhz |
| KEY1 | 輸入 | M1 | 獨(dú)立按鍵,按下低電平,當(dāng)作復(fù)位使用 |
| LED0 | 輸出 | G16 | 與LED燈相連,低電平LED燈亮 |
????總結(jié):通過上述說明,可以將需求解讀成,只要將FPGA的G16管腳置為低 電平(500ms),即可以點(diǎn)亮D8這個(gè)LED燈500ms,然后再將G16管腳置為 高電平(500ms),即可以讓D8這個(gè)LED燈熄滅500ms,如此循環(huán),便實(shí)現(xiàn) 了1秒閃爍1次的效果。
2. 繪制理論波形圖
邏輯框圖clk是50Mhz時(shí)鐘,一個(gè)周期就是20ns,1秒=1000000000ns,1秒是50000000個(gè)時(shí)鐘周期,500ms=25000000個(gè)時(shí)鐘周期。
3.新建QuartusII 工程
為了讓工程看起來整潔,同時(shí)方便工程移植。我們新建4個(gè)文件夾,分別是Project,Source,Sim,Doc。
Project — 工程文件夾,里面放的QuartusII工程
Source — 源代碼文件夾,里面放的工程源碼(.v文件或.vhd文件)
Sim — 仿真文件夾,里面放的仿真相關(guān)的文件
Doc — 存放相關(guān)資料,比如數(shù)據(jù)手冊(cè),需求文檔等
4.編寫代碼
/// //QQ:3181961725 //TEL/WX:13540738439 //工程師:Mr Wang //模塊介紹:實(shí)現(xiàn)LED燈(D8)間隔1秒閃爍1次 /// module led_ctrl(input clk ,//時(shí)鐘,50MHZinput rst_n ,//復(fù)位,低電平有效nnoutput reg led //LED燈控制信號(hào));parameter time_500m=25000000;//500ms//為了縮短仿真時(shí)間,減小了參數(shù)值,僅僅用于仿真//parameter time_500m=2500;//500msreg [24:0] cnt;always@(posedge clk or negedge rst_n)beginif(!rst_n)cnt<=0;else if(cnt==time_500m-1)cnt<=0;elsecnt<=cnt+1;endalways@(posedge clk or negedge rst_n)beginif(!rst_n)led<=1;else if(cnt==time_500m-1)led<=~led;else;end endmodule5.編寫仿真測(cè)試激勵(lì)文件
仿真邏輯框圖 仿真時(shí),我們主要關(guān)心的是輸入端口,在led_ctrl這個(gè)模塊中,有兩個(gè)輸入端口, rst_n,clk,所以,我們?cè)诜抡鏈y(cè)試文件編寫時(shí),就是給這兩個(gè)端口灌入激勵(lì)信號(hào)。 `timescale 1ns/1ns module led_ctrl_tb;reg clk;reg rst_n;initialbeginclk=0;rst_n=0;//生成復(fù)位激勵(lì)信號(hào)#1000rst_n=1;//生成復(fù)位激勵(lì)信號(hào)end//生成時(shí)鐘激勵(lì)信號(hào)always #10 clk<=~clk;//例化被仿真模塊led_ctrl Uled_ctrl(.clk (clk ),.rst_n (rst_n ),.led ( )); endmodule6.Modelsim仿真
這個(gè)例程非常簡(jiǎn)單,只用了一條語句,所以不需要仿真驗(yàn)證。但是為了給大家演示一個(gè)完整的開發(fā)流程,這個(gè)實(shí)驗(yàn)我們也新建一個(gè)仿真工程,從最簡(jiǎn)單的一個(gè)代碼開始教大家如何編寫仿真激勵(lì)文件以及如何使用Modelsim軟件進(jìn)行仿真。將第三步編寫的源碼和第四步編寫的仿真測(cè)試激勵(lì)文件一起加入到Modelsim仿真工程中,即可進(jìn)行仿真觀察波形。
Modelsim仿真一般有兩種方法:
圖形化界面仿真,即所有的操作都是在Modelsim軟件界面上來完成,該方式的優(yōu)點(diǎn)是,簡(jiǎn)單易學(xué),適用于簡(jiǎn)單的項(xiàng)目,缺點(diǎn)是操作步驟繁瑣。
批處理仿真,這種方式在仿真前需要編寫相應(yīng)的腳本文件,該方式的優(yōu)點(diǎn)是,一鍵即可完成仿真,省時(shí)省力,缺點(diǎn)是前期需要編寫腳本文件。為了讓大家所學(xué)的能夠很快的應(yīng)用到工程實(shí)踐,僅僅第一個(gè)實(shí)驗(yàn)和第二個(gè)實(shí)驗(yàn),采用圖形化界面仿真,后面的實(shí)驗(yàn)均采用批處理方式仿真。
圖形化界面仿真步驟:
1.新建工程,file–>new–>Project
2.填寫工程名以及指定仿真工程存放路徑
3.添加文件,源文件和仿真激勵(lì)文件
4.編譯
5.開始仿真
6.添加觀測(cè)信號(hào)
7.中斷仿真
8.輸入運(yùn)行命令,run+仿真時(shí)間
到此,我們就可以在波形窗口觀察到仿真信號(hào)的電平狀態(tài)。
當(dāng)我們改變了源碼,又需要從第4步開始操作一次。
仿真出的波形如下圖所示:
7.對(duì)比波形圖
將第二步繪制的理論波形圖與第六步Modelsim仿真出來的波形圖進(jìn)行對(duì)比,結(jié)果一致,說明我們的邏輯設(shè)計(jì)是正確的。如果發(fā)現(xiàn)比對(duì)結(jié)果不一致,就需要找到不一致的原因,最終要保證對(duì)比結(jié)果一致。
通過對(duì)比,理論波形與仿真波形一致,說明功能符合設(shè)計(jì)要求。
8.編譯綜合
9.綁定管腳
當(dāng)工程編譯成功后,即可進(jìn)行管腳分配(需要參考開發(fā)板的原理圖)。我們店鋪的開發(fā)板和模塊在PCB板上均標(biāo)注了信號(hào)名,在綁定管腳時(shí)也可以直接參照實(shí)物的連接關(guān)系。
管腳映射關(guān)系如下所示:
10.再次編譯綜合
11 下載SOF文件
再次編譯綜合成功后便可以將生成的SOF文件下載到開發(fā)板
下載成功后,便可以觀察到開發(fā)板上的實(shí)驗(yàn)現(xiàn)象,如果實(shí)驗(yàn)現(xiàn)象與設(shè)計(jì)需求相符,那說明我們的設(shè)計(jì)是沒有問題的,即可進(jìn)行下一步固化JIC文件操作
12 生成并固化JIC文件
FPGA有一個(gè)特性,就是掉電后配置信息會(huì)丟失,所以我們需要將配置信息存儲(chǔ)在配置芯片(FLASH)中,待開發(fā)板上電后,FPGA便會(huì)讀取配置芯片中的配置信息,這樣開發(fā)板掉電再上電后同樣可正常工作。要將程序固化到配置芯片,需要先生成JIC文件。SOF文件轉(zhuǎn)換成JIC文件步驟如下:
12.1 file–>Convert Programming File…
12.2 選擇JIC文件以及配置芯片的型號(hào),FPGA的型號(hào)
標(biāo)號(hào)1:選擇生成文件的格式,我們選擇JIC文件
標(biāo)號(hào)2:選擇配置芯片的型號(hào),我們選擇EPCS16
標(biāo)號(hào)3:修改生成JIC文件的名字以及存放路徑
標(biāo)號(hào)4:鼠標(biāo)左鍵點(diǎn)擊Flash Loader
標(biāo)號(hào)5:選擇FPGA的型號(hào),我們開發(fā)板用的是EP4CE6F17C8這款FPGA,所以我們也應(yīng)該選這個(gè)型號(hào),如下圖所示:
12.3 選擇SOF文件
標(biāo)號(hào)1:鼠標(biāo)左鍵點(diǎn)擊SOF Data
標(biāo)號(hào)2:添加SOF文件,選中我們工程生成的SOF文件,如下圖:
12.3 生成JIC文件
到此,JIC文件生成好,可以進(jìn)行固化操作了。
12.4 固化JIC文件
固化好以后,掉電程序也不會(huì)丟失了!
實(shí)驗(yàn)現(xiàn)象
與FPGA管腳G16相連的LED燈被點(diǎn)亮,符合設(shè)計(jì)要求,設(shè)計(jì)完成!
總結(jié)
以上是生活随笔為你收集整理的【小月电子】ALTERA FPGA开发板系统学习教程-LESSON2 LED灯闪烁的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三维GIS软件十九重唱
- 下一篇: C语言——函数定义及用法【内部函数外部函