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