在進行第一個工程實例前,順便提一下設計工具相關資源的獲取。從特權同學接觸的幾家FPGA開發工具來看,Xilinx在這方面做得應該算是最人性化的了,其設計資源可謂唾手可得。如圖1所示,當我們開啟ISE軟件后,主窗口便會顯示這樣一個帶有介紹和引導鏈接的頁面。這里我們主要提一下它的Documentation。
圖1 ISE設計資源引導界面????????
點開Documentation,如圖2所示,其實是直接打開了Xilinx的一個客戶端小工具Documentation Navigat
or(簡稱DocNav)的
下載頁面。這是一款不錯的Xilinx設計文檔在線瀏覽工具,非常
推薦各位下載并安裝。
圖2 Documentation頁面????????
如圖3所示,打開DocNav軟件的首頁,可以看到各類開發相關的歸類文檔,這個小工具讓Xilinx的各類文檔一目了然,極大的方便了設計者對文檔資源的索取和閱讀。這么大的一個文檔資源庫,恐怕花個一年半載的都未必能夠通讀一遍,實際上壓根個也沒有這個必要。一般來說,建議設計者對這些文檔的基本用處有所了解即可,而在遇到一些設計小問題的時候腦子里能夠靈光一現,想起來大概哪個文檔里會有解決問題的辦法,而后再過來翻看也就足夠了。?圖3 D
ocNav首頁????????
再說每個軟件都有Help,ISE中點開菜單欄的HelpàHelp To
pics…,便如圖4所示。記得特權同學大三那年一個被認為牛的不行的留過洋的
微波課老師第一次和我們提Project,還讓我們用
Matlab畫smith圓圖,那時對專業英文一知半解的我們才發現原來Help里面要啥有啥,真可謂大百科全書。所以捏,同學們都要好好利用Help這玩意,不懂就問,最簡單快捷的問法就是Search。
圖4 ISE Help頁面好了,那么下面我們要簡單的做個ISE工程的范例,寫個流水燈的小代碼下載到FPGA中看看效果。雙擊打開桌面的快捷方式“Xilinx ISE Design Sui
te 13.3”,點擊菜單欄的FileàNew Project…。出現如圖5所示的新工程設置界面,輸入工程名并定位好工程存儲文件夾位置,完成后點擊Next進入下一步。
圖5 工程名與存儲設置????????
器件與工程屬性設置如圖6所示。設置完畢再Next便Finish。
圖6 器件與工程屬性設置????????
此時我們看工具左側窗口,選中Design便如圖7所示。Hierarchy下只有工程名和相應器件顯示,可謂設計文件一片空白,咱要來此拓荒了。首先,我們需要添加源代碼文件到工程中。
圖7 Design窗口????????
在Hierarchy窗口的空白處右鍵點擊New Source…,如圖8所示。這里可以選擇新建各類源文件,包括IP核、基于
處理器的系統、
verilog或VHDL源文件以及測試腳本等等。我們需要新建一個verilog源代碼文件,所以選擇Verilog Module,給模塊命名,通常頂層代碼源文件名建議和工程名一致,免得后面一串麻煩事。
圖8 新建源文件???
新建的源代碼.v文件會自動添加到Hierarchy下,并且直接在主窗口中打開源文件如圖9所示。
圖9 源代碼文件???????
? 此時需要編寫一段流水燈測試代碼,如下所示:module test1
led(??????????? clk,
rst_n,??????????? led??????? );?input clk;????? //100MHzinput rst_n;??? //低電平復位
信號?output[7:0] led;??? //分頻信號,連接到蜂鳴器?//---------------------------------------------------reg[2:0] cnt;?? //分頻計數器?always @ (posedge clk or negedge rst_n)//異步復位??? if(!rst_n) cnt <= 23'd0;??? else cnt <= cnt+1'b1;?? //寄存器cnt循環計數?//----------------------------------------------------reg[7:0] ledr;? //LED流水燈?always @ (posedge clk or negedge rst_n)??? if(!rst_n) ledr <= 8'd1;??? else if(cnt == 23'h7fffff) ledr <= {ledr[6:0],ledr[7]};//大約每80ms讓led左移一次?assign led = ledr;?endmodule???????? 接下來需要對管腳進行分配,如圖10所示,Hierarchy中需要先選中頂層代碼文件testled.v,然后雙擊Processes下的User ConstraintsàI/O Pin Planning(PlanAhead) – Post-synthesis(或者I/O Pin Planning(PlanAhead) – Pre-synthesis,兩者的區別在于在分配管腳時是否synthesis了,一般是無關緊要的)。
Xilinx的工具做得真是獨具匠心啊,打開PlanAhead后的歡迎界面不得不讓我們發出“設計文檔無處不在”的感慨。如果想深入了解PlanAhead工具,不妨好好拜讀下這里羅列的PlanAhead User Guide。
圖11 PlanAhead的歡迎界面????????
如圖12所示,參照原理圖NEXYS3_sch.pdf,在PlanAhead的I/O Ports中對該實例的管腳進行分配。其中rst_n使用了撥碼開關SW1,板級驗證的時候注意將SW1朝板子內側撥動即處于正常運行狀態。分配完成后保存設置即可退出PlanAhead。
圖12 管腳分配????????
回到ISE中,雙擊圖10的Processes下Generate Prog
ramming File進行編譯生成.bit下載文件。然后使用上節提到的Adept工具,在Config功能項中加載并燒錄工程文件夾下生成的test1led.bit文件。接著,我們就可以看到在線燒錄到FPGA器件中的代碼運行起來了,SW1撥碼開關處于內側時,8個流水燈跑的很歡。轉載自:特權同學的博客
評論
查看更多