Xilinx ISE系列教程(2):LED点灯工程、仿真、bit下载和mcs固化
文章目錄
- @[toc]
- 1. 創(chuàng)建工程目錄
- 2. 新建ISE工程
- 3. 新建verilog源文件
- 4. 新建testbench仿真文件
- 5. ISim功能仿真
- 6. 管腳分配和時鐘約束
- 7. bit文件生成和下載
- 8. mcs文件生成和下載
- @[toc]
- 1. 創(chuàng)建工程目錄
- 2. 新建ISE工程
- 3. 新建verilog源文件
- 4. 新建testbench仿真文件
- 5. ISim功能仿真
- 6. 管腳分配和時鐘約束
- 7. bit文件生成和下載
- 8. mcs文件生成和下載
本文是Xilinx ISE系列教程的第2篇文章。
上一篇文章,我們介紹了ISE 14.7的下載、安裝和注冊,在之后的文章,我們會以Xilinx Spartan-6系列FPGA XC6SLX16為例,不涉及FPGA開發(fā)知識,僅僅是工具的使用,介紹Xilinx ISE開發(fā)環(huán)境的使用教程和使用技巧。
本篇文章介紹如何使用ISE創(chuàng)建一個點燈工程,完成工程創(chuàng)建、設計輸入、功能仿真、綜合、管腳分配和程序下載固化,這也是FPGA的典型開發(fā)流程。
1. 創(chuàng)建工程目錄
為了便于后續(xù)的工程文件管理,我們先創(chuàng)建led_demo文件夾,這也是我們的工程頂級目錄,在此文件夾下再創(chuàng)建如下6個文件夾:
rtl:用于存放verilog rtl文件 tb:用于存放testbench文件 flash:用于存放生成的bit和mcs文件 ucf:用于存放管腳約束文件 modelsim:用于存放modelsim工程,如果使用自帶的isim仿真器,此目錄可省略 doc:用于存放文檔,比如芯片的數據手冊,官方的應用文檔等創(chuàng)建完成后,如下圖所示:
2. 新建ISE工程
工程文件夾創(chuàng)建完成后,下面我們來創(chuàng)建ise工程。
啟動ISE 14.7,點擊New Project啟動工程創(chuàng)建向導。
指定工程的存放路徑,如下圖所示,這樣創(chuàng)建出的工程結構比較簡潔。
選擇FPGA器件型號、封裝和速度等級:
創(chuàng)建完成后的工程目錄結構:
3. 新建verilog源文件
在FPGA器件名稱上右鍵,選擇New Source:
選擇Verilog Module,并指定文件名稱和存放路徑。
輸入如下LED點燈代碼,功能為:外部50M時鐘分頻為1Hz,LED 500ms亮,500ms滅。
/**************************************************************** Copyright(C), 2010-2022, WeChat: mcu149* ModuleName : top_hdl.v * Date : 2022年8月14日* Time : 19:59:06* Author : mcu149* Function : led blink module* Version : v1.0* Version | Modify* ----------------------------------* v1.0 .....***************************************************************/module top_hdl(//Inputsinput gclk,input greset,//Outputsoutput led );//1.localparam localparam LED_PERIOD = 50_000_000; localparam LED_ON = 1'b1; localparam LED_OFF = ~LED_ON;//2.parameter//3.reg reg [31:0] cnt;//4.wire wire rst_n = !greset;//5.assign assign led = (cnt < LED_PERIOD/2) ? LED_OFF : LED_ON; //500ms 0 + 500 ms 1//6.always always @ (posedge gclk) beginif(!rst_n) begincnt <= 'd0;endelse beginif(cnt == LED_PERIOD)cnt <= 'd0;else cnt <= cnt + 1;end end//7.instanceendmodule4. 新建testbench仿真文件
和源文件同樣的添加方式,選擇Verilog Test Fixture,文件名命名為top_hdl_tb,存放路徑選擇我們最初創(chuàng)建的tb文件夾。
選擇要仿真的verilog文件:
輸入如下激勵代碼:
`timescale 1ns / 1psmodule top_hdl_tb;parameter CLK_PERIOD = 20;reg gclk; reg greset;top_hdl uut (//Inputs.gclk(gclk), .greset(greset), //Outputs.led() );always #(CLK_PERIOD/2) gclk <= !gclk;initial begingclk = 0;greset = 1;#100;@(posedge gclk);greset = 0;endendmodule5. ISim功能仿真
切換到Simulation選項卡,檢查testbench文件的語法,如果無誤,點擊Simaulate Behavioral Model。
會啟動ISE自帶的ISim仿真工具進行功能仿真。
ISim的界面和Modelsim非常類似,如果你使用過Modelsim,那么ISim你也可以直接上手使用。
不同的是,ISim并不支持以模擬的方式顯示計數器的變化。
我們代碼中設計的LED周期是1s,為了縮短仿真的時間,我們改為250個時鐘周期:
改完之后,保存,在ISim界面點擊Re-Launch圖標,這樣仿真文件就更新了。
重新執(zhí)行復位,并啟動仿真,可以看到仿真結果和我們的設計是一樣的。
仿真完成后,別忘了把LED周期再改回1s。
6. 管腳分配和時鐘約束
功能仿真正常后,我們來進行管腳分配和時鐘約束。
切換到Implementation選項卡,選中頂層設計,點擊User Constraints->Create Timing Constraints,創(chuàng)建時鐘約束
耐心等待綜合完成,在彈出的界面選擇要約束的時鐘Create Constraint。
指定時鐘周期20ns和占空比50%。
選擇Floorplan Area/IO/Logic進行圖形化管腳分配。
ISE在Windows 8/10環(huán)境下使用圖形化管腳分配工具PlanAhead時,會出現(xiàn)閃退情況,需要替換安裝目錄下的\Xilinx\14.7\ISE_DS\PlanAhead\bin\rdiArgs.bat文件。
rdiArgs.bat文件的下載地址:
https://download.csdn.net/download/whik1194/86400515如果無法下載,可以在評論區(qū)留言。
替換完成后
根據實際硬件電路的管腳和電平標準進行分配。
也可以使用文本編輯器直接編輯top_hdl.ucf文件,文件內容如下:
#Created by Constraints Editor (xc6slx16-csg324-2) - 2022/08/14 NET "gclk" TNM_NET = "gclk"; TIMESPEC TS_gclk = PERIOD "gclk" 20 ns HIGH 50 %;NET "greset" LOC = N4; NET "greset" IOSTANDARD = LVCMOS18;NET "led" LOC = T10; NET "led" IOSTANDARD = LVCMOS33;NET "gclk" LOC = V10; NET "gclk" IOSTANDARD = LVCMOS33;7. bit文件生成和下載
管腳分配和時鐘約束完成之后,就可以生成最終的程序文件了,右鍵Generate Programming File,選擇Process Properties進行配置。如果FPGA使用的是SPI x 1的Flash則無需配置,直接生成bit文件即可。
bit流生成配置選項很多,支持生成bit/bin/ascii格式的bin文件,是否壓縮,配置速度,配置管腳的上下拉,用戶ID,數據加載速度,SPI總線寬度,是否支持Readback,程序加密等等。
我們主要關注以下幾個配置選項:ConfigRate和SPI_buswidth。
ConfigRate:指的是FPGA上電后,從外部SPI Flash讀數據的時鐘速度,涉及到程序上電后的執(zhí)行速度,不要超過所使用的SPI Flash的最大讀速度 SPI_buswidth:指的是外部SPI Flash配置電路的數據線寬度,一般是1位數據線,也有是QSPI 4位數據線,根據實際配置電路來選擇。我的板子使用的是ST M25P80芯片,1位數據線,最高讀取速度為20MHz,
SPI Flash的最高讀取速度為20MHz。
設置完成之后,雙擊Generate Programming File生成bit流文件。
如果語法無誤,時序滿足,就會在project目錄下生成top_hdl.bit文件。
點擊Configure Target Device打開燒錄工具。
在打開的iMPACT工具中,點擊Boundary Scan邊界掃描,在右側的空白區(qū)右鍵點擊Initialize Chain連接到FPGA芯片。
如果連接正確,會檢測到一顆FPGA芯片:
雙擊FPGA芯片,指定bit文件,加載完成后右鍵執(zhí)行燒寫。
這樣,FPGA程序就會下載到內部的RAM中。
8. mcs文件生成和下載
bit文件下載之后,可以看到LED按照我們設計的1s周期閃爍起來了,但是此時如果斷電,重新上電程序就丟失了。
我們還需要把程序固化到外部的SPI Flash,這樣每次掉電重啟后,FPGA先從外部的SPI Flash中讀取程序,再加載到內部RAM中進行運行。程序固化不能直接使用bit文件,需要根據不同的SPI Flash型號和大小重新生成一個mcs格式的文件。
點擊Create PROM File,選擇SPI Flash的大小,并指定mcs文件的存儲路徑和文件名。
選擇完成之后,加載生成的bit文件,點擊左側Generate File,生成mcs文件。
生成成功后,我們回到邊界掃描界面,選擇外部SPI Flash,并加載mcs文件。
選擇SPI Flash的型號和數據線寬度,需要和生成bit時指定的數據寬度保持一致。
在外部SPI Flash上右鍵執(zhí)行編程。
由于是使用JTAG通過FPGA對外部SPI Flash進行編程,這個過程會比下載bit文件慢很多,耐心等待下載完成。
'1': Erasing Device. '1': Using Sector Erase. '1': Programming Flash. '1': Reading device contents... done. '1': Verification completed. '1':Programming in x1 mode. '1': Programmed successfully. INFO:iMPACT - '1': Flash was programmed successfully.LCK_cycle = NoWait. LCK cycle: NoWait INFO:iMPACT - '1': Checking done pin....done. '1': Programmed successfully. PROGRESS_END - End Operation. Elapsed time = 19 sec.下載完成后,每次掉電重啟程序就可以正常運行了。
關于bit文件和mcs文件格式的描述,可以查看歷史分享的博文:
- Xilinx Bit文件格式詳解
- HEX(Xilinx MCS)文件格式詳解
簡單理解可以認為bit文件是bin文件加了文件頭,hex文件是bin文件加了地址和校驗信息。
在flash文件夾,新建copyBit.bat批處理文件,內容如下:
copy ..\project\top_hdl.bit .\flash.bit這樣每次,只需要雙擊這個文件,就可以自動把工程目錄下的top_hdl.bit文件復制到flash文件夾下了。
還可以結合iMPACT執(zhí)行腳本的功能,來實現(xiàn)一鍵bit文件下載,一鍵bit轉mcs,一鍵mcs下載。
可以參考:
- 使用ISE iMPACT實現(xiàn)一鍵bit轉mcs、bit文件下載、mcs文件下載
總結
以上是生活随笔為你收集整理的Xilinx ISE系列教程(2):LED点灯工程、仿真、bit下载和mcs固化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑 | 更新后显示器无法实现夜间模式
- 下一篇: 最好PDF软件汇总070623