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