EDK使用實例之LCD1602


目的:

在之前的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

ice_lyb@qq.com

 

 

工程下載地址:http://fpga-study-information.googlecode.com/files/red_lcd.rar


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM