目的: 在之前的LED的實例的基礎之上使用GPIO點亮LCD1602液晶屏。本文將更多介紹SDK中的操作。 實驗環境: 軟件:Xilinx ISE Design Suit 13.4 板卡: 紅色颶風II-Xilinx RCII-SP3S400 實驗內容: 在ISE工程中添加MircroBlaze軟核,並在SDK中編寫軟件程序,驅動外設LCD1602液晶屏。 實驗步驟: 第一步:ISE中創建工程並添加DCM。 1、 打開ISE,點擊New Project。
2、 選擇工程路徑,為工程命名
3、 選擇工程屬性和器件參數 此處注意,如果是使用其他的板卡,或者自己設計的板卡,需要選擇相應的器件參數。 4、 添加頂層文件
生成頂層red_lcd.v文件。 5、 添加DCM。
選擇
選擇
設置DCM參數如下:
參數如下:
此處輸入時鍾為紅色颶風板卡上面的晶振50MHz,並添加上了二倍頻時鍾CLK2X。 DCM添加完成后,我們還需要將DCM在頂層模塊中進行實例化,結果如下:
第二步:添加microblaze軟核。 1、 添加Embedded Processor。
此處創建過程與直接調用XPS創建系統大同小異,此處不多做貼圖,不過需要注意的幾個地方如下:
此處輸入時鍾為50MHz所以需要在頂層連接的時候選擇DCM輸出的50MHz時鍾。
添加外設的時候除了添加了上次添加的LEDS外,這次還添加了RS232和兩個GPIO,其中GPIO為3bit,是用來給輸出LCD1602的RS、RW、EN,GPIO_1是8bit是用來輸出給LCD0~LCD7的。 生成的系統如下圖示:
2、因為系統默認的GPIO端口都為雙向的端口,所以我們需要對端口做一些修改,選中Ports,點擊Generic_GPIO中的Connected Port端口然后選擇Disconnect from External Ports。
可以看到External Ports中的Generic_GPIO端口也已經沒有了。
然后重新選擇Generic_GPIO下面的GPIO_IO_O,選擇External Ports。
可以看到在External Ports中的Generic_GPIO端口重新出現了,並且是GPIO_IO_O。這樣就將Generic_GPIO口從原來的雙向端口更改成了輸出端口。
可以按照同樣的方法將Generic_GPIO_1端口也從雙向端口更改成輸出端口。
3、 端口修改完成后我們就需要初始化地址,選擇Addresses,
點擊最右側的
表示地址生成成功。 4、 生成網標文件。 選擇Hardware下面的Gneerate Natlist生成網標。
此處估計會花的時間比較長。
表示生成網標完成。 此刻我們的軟核就生成完成了,我們就可以退出XPS界面了。
注意:Xilinx在ISE13以后將軟件中XPS和SDK徹底分離了,所以現在的XPS中不能再進行軟件添加,軟件編寫全部移到了SDK中。
5、 將軟核實例化之頂層文件中。 實例化軟核和實例化DCM類似,也是需要打開View HDL Instantiation Templat文件。 實例化以后的結果詳見代碼。
第三步:編譯ISE工程。 1、 添加UCF文件。 添加UCF文件的方法和平時ISE工程中添加UCF文件的方法相同,此處不再贅述。 2、 編譯工程。 添加好UCF文件以后雙擊Generate Programming File,進行工程編譯。
第四步:添加SDK工程。 1、 打開SDK軟件。 此處需要注意,首先選中Hierarchy框中的軟核文件
然后在Processes框中雙擊Export Hardware Design To SDK with Bitstream選項。(該選項可以在打開SDK的時候自動添加microblaze軟核的信息到SDK工程中。) 2、 添加軟核路徑。 在打開SDK的時候軟件會提示選擇工作空間,個人建議可以在之前的ISE的工程目錄里面創建一個工作空間來存放SDK的工程。
3、 添加軟件工程。 進入軟件后可以看到軟件自動添加了軟核的信息。
在此需要添加軟件工程。在Project Explorer的空白處右鍵點擊選擇new->project。
選擇Xilinx C project
然后選擇空模板。
最后點擊finish。 最終軟件工程創建完成。
4、 添加代碼。 在src文件夾上點擊右鍵選擇新建一個Source File。
輸入文件名,因為是C文件所以后綴需要是.c。
完成后可以看到在主編輯框中出現了main.c文件。
將代碼添加進工程里面,詳見工程代碼。 第五步:編譯SDK工程並下載至FPGA。 1、 編譯SDK工程。 右鍵點擊軟件工程,選擇Build Project,進行工程編譯。
如果有錯誤可以通過Problems框進行錯誤查看。
2、 FPGA下載 編譯通過以后就可以進行FPGA下載了。選擇Xilinx Tools->ProgramFPGA。
點擊后會出現下載文件選擇,如下圖:
其中Bitstream選擇ISE工程下生成的bit文件, Bmm文件為ISE工程路徑下的edkBmmFile_bd.bmm文件。 ELF文件為軟件配置文件,路徑在 .. \SDK_workspace\empty_application_0\Debug
選擇好了以后點擊Program后就會看到
顯示的下載的滾動條。下載結束后會可以看到板卡上面的LCD1602會顯示"hello world""hello xilinx"兩行字,同時LED會在進行流水顯示,當led7~led0 == 1111_1110的時候lcd會進行清屏。
后記: 本次試驗是在紅色颶風2的板子上做的實驗,因為這個板子上的GPIO可以直接跟LCD1602連接,如果需要在SP601板子上做這個實驗,只是需要在創建ISE工程的時候選擇Spartan6的器件,在做引腳分配的是做相應的引腳分配即可,至於軟件工程中的代碼是參考了單片機上的lcd1602的程序。希望文章可以幫助更多初學的朋友。文章中還有不足,希望發現問題的朋友可以郵件提醒我,我也可以做及時的修改。 By: 冰風溪谷 E-mail: icelyb24@gmail.com
工程下載地址:http://fpga-study-information.googlecode.com/files/red_lcd.rar |