Board從入門到精通系列(七)
本文將給出通過Vivado IDE開發(fā)Zynq平臺上PS裸機(jī)應(yīng)用程序的流程。讀者將看到Vivado開發(fā)更高效、快捷。
本文引用地址:http://2s4d.com/article/201710/365594.htmMP3我們都聽過,現(xiàn)在我們可以用ZED-Board來聽。板子上有音頻芯片ADAU1761,可以實現(xiàn)錄音、放音,但不具有MP3解碼功能。Zynq 雙核ARM9做MP3軟件解碼應(yīng)該是可以實現(xiàn)的,但是博主本人有一顆VS1003,可以實現(xiàn)MP3硬件解碼,軟件將得以簡化,對MP3解碼原理感興趣的可以深入研究如何利用CortexA9+ADAU1761實現(xiàn)MP3播放。電路圖如下:
利用Zynq MIO實現(xiàn)VS1003控制,這樣只和PS有關(guān),PL完全可以丟棄。在本節(jié)基礎(chǔ)上,讀者可以嘗試將SPI模塊移到PL上實現(xiàn),這樣可以降低PS部分IO讀寫頻率,提高CPU利用率。實物連接圖如下:
Zynq板子外接用排母,為了使用杜邦線,需要一個雙公排針,可以用普通單排2.54mm排針壓制而成
下面介紹軟件開發(fā)流程。建立Vivado工程,命名為MP3Player,過程遵循上節(jié)Vivado建立工程步驟,略。
進(jìn)入IDE后,點擊左側(cè)流程管理器中的IPI Integrator下的Create Block Design。 這個工具是2013.1版本后才出現(xiàn)的,將取代XPS完成系統(tǒng)集成。
在編輯區(qū)右鍵,選擇Add IP...,名稱保持默認(rèn)design_1.bd
搜索框中輸入zynq,雙擊第一個,添加IP到電路圖中。
添加完成后,自動進(jìn)行布線連接,點下圖中圓圈區(qū)域 Run Block AutomaTIon。
等待完成,結(jié)果如下圖所示。
可以看到,DDR和固定IO自動進(jìn)行了連接。這是因為我們建立工程時選擇了ZedBoard DVK,這樣就能按照板子描述自動連接引腳到相應(yīng)外設(shè)。
另外看到,默認(rèn)狀態(tài)下使能了M_AXI_GP0,可以將PL部分帶AXI從接口的IP連接到PS進(jìn)行控制。本節(jié)不需要,所以必須禁用,否則驗證設(shè)計時會報錯。雙擊方塊,見下圖
看到了熟悉又陌生的畫面,有些像XPS中Zynq視圖,但精簡了很多。單擊左側(cè)“PS-PL ConfiguraTIon,界面如下:
將AXI GP0接口后的勾取消選擇,確認(rèn),回到IPI。
驗證設(shè)計,在空白處右鍵,點擊Validate Design。無誤,點確認(rèn)即可。
在上圖位置點Generate Block Design,確認(rèn)。
在Sources窗口中找到design_1,右鍵選擇生成頂層HDL包裝。確認(rèn)。
直接點左側(cè)流程中的Generate Bitstream,一步到位。完成比特流大約需要5~8min。
完成后,先Open Implementated Design,再導(dǎo)出到SDK。
完成后,先Open Implementated Design,再導(dǎo)出到SDK。如果沒有做這一步,上圖中第二項會變成灰色。
后面就是SDK開發(fā)了,和本系列教程(三)中相同。建立ApplicaTIon工程,C工程,模板helloworld。將代碼改為下面:
#include
#include platform.h
#define MIO_BASE 0xE000A000
#define DATA0 0x40
#define DATA0_RO 0x60
#define DIRM_0 0x204
#define OEN_0 0x208
void delay(unsigned int t)
{
unsigned int i,j;
for(j=0;j
評論