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