zynq zedboard standalone audio
2016-04-05 21:28
253 查看
本文基于zedboard改进版本,编写了裸机(standalone)的audio控制程序,实现了audio的控制。
采用的功放芯片是ADAU1761,zynq型号是020,以下是原理图的连接。
![](http://img.blog.csdn.net/20160405205558602?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
其和zynq的连接端口原理图如下:
![](http://img.blog.csdn.net/20160405205715915?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
在创建vivado工程时注意板子按如下选择
![](http://img.blog.csdn.net/20160405210913982?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
创建如下系统框图:
![](http://img.blog.csdn.net/20160405211038217?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
这里需要注意的是,有两个自己创建的IP,一个是用于IIS接口的,一个是创建了一个nco,nco创建使用了HLS,从图中的IP图就可以看出这一点。
按照设计流程,export HW, 然后load SDK,创建工程,软件编写软件。
这里说一下我遇到的两个问题。
1.FCLK_CLK1的10MHz时钟始终出不来,原因也未查明,有机会在zedboard上试试相同的程序看看能否出来,哪位有zedboard的愿意帮忙的请联系我,帮我验证一下是否是板子设计原因导致的,遇到类似问题的也望不吝赐教。
2.就是下载bit流的configure,FPGA和SDK程序如果分别在vivado和SDK开发环境下载,则时钟极有可能出不来,下图附上下载设置。
默认reset system和Program FPGA是没有选上的。(SDSOC开发环境上是这样的。)
![](http://img.blog.csdn.net/20160405212553629?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
附上zynq时钟控制法:
PL fabric clock控制方法
1.设置IO_PLL_CTRL[PLL_FDIV]值以及PLL的寄存器IO_PLL_CFG[LOCK_CNT, PLL_CP, PLL_RES]值
2.将PLL强制进入bypass模式,通过向IO_PLL_CTRL [PLL_BYPASS_FORCE, 4]写入1来实现。
3.先向IO_PLL_CTRL [PLL_RESET, 0]写入1使能复位,然后写入1取消复位。
4.通过读取PLL_STATUS [IO_PLL_LOCK, 2]确认PLL锁相成功
5.向to IO_PLL_CTRL [4]写入0,退出bypass模式。
PLL Frequency Control Settings
P699
PS-PL voltage level shifter enables
在ps和pl之间传输的信号都要经过voltage boundary。
1.上电PL,slcr.LVL_SHFTR_EN应该等于0.
2.使能PS-PL的电平转换寄存器,向slcr.LVL_SHFTR_EN写入0x0A。
3.编程PL
4.等待PL被编程,等待devcfg.INT_STS [PCFG_DONE_INT]等于1,即PL部分编程完毕。
5.使能PL-PS的电平转换寄存器,向slcr.LVL_SHFTR_EN写入0x0F。
6.使用PS和PL之间信号。
采用的功放芯片是ADAU1761,zynq型号是020,以下是原理图的连接。
其和zynq的连接端口原理图如下:
在创建vivado工程时注意板子按如下选择
创建如下系统框图:
这里需要注意的是,有两个自己创建的IP,一个是用于IIS接口的,一个是创建了一个nco,nco创建使用了HLS,从图中的IP图就可以看出这一点。
按照设计流程,export HW, 然后load SDK,创建工程,软件编写软件。
这里说一下我遇到的两个问题。
1.FCLK_CLK1的10MHz时钟始终出不来,原因也未查明,有机会在zedboard上试试相同的程序看看能否出来,哪位有zedboard的愿意帮忙的请联系我,帮我验证一下是否是板子设计原因导致的,遇到类似问题的也望不吝赐教。
2.就是下载bit流的configure,FPGA和SDK程序如果分别在vivado和SDK开发环境下载,则时钟极有可能出不来,下图附上下载设置。
默认reset system和Program FPGA是没有选上的。(SDSOC开发环境上是这样的。)
附上zynq时钟控制法:
PL fabric clock控制方法
1.设置IO_PLL_CTRL[PLL_FDIV]值以及PLL的寄存器IO_PLL_CFG[LOCK_CNT, PLL_CP, PLL_RES]值
2.将PLL强制进入bypass模式,通过向IO_PLL_CTRL [PLL_BYPASS_FORCE, 4]写入1来实现。
3.先向IO_PLL_CTRL [PLL_RESET, 0]写入1使能复位,然后写入1取消复位。
4.通过读取PLL_STATUS [IO_PLL_LOCK, 2]确认PLL锁相成功
5.向to IO_PLL_CTRL [4]写入0,退出bypass模式。
PLL Frequency Control Settings
P699
PS-PL voltage level shifter enables
在ps和pl之间传输的信号都要经过voltage boundary。
1.上电PL,slcr.LVL_SHFTR_EN应该等于0.
2.使能PS-PL的电平转换寄存器,向slcr.LVL_SHFTR_EN写入0x0A。
3.编程PL
4.等待PL被编程,等待devcfg.INT_STS [PCFG_DONE_INT]等于1,即PL部分编程完毕。
5.使能PL-PS的电平转换寄存器,向slcr.LVL_SHFTR_EN写入0x0F。
6.使用PS和PL之间信号。
相关文章推荐
- poj1039 pipe 计算几何
- 学习Python
- 《Linux内核分析》课程第七周学习总结
- Eclipse部署Maven--Maven常用配置
- QCheckBox类
- 隐藏listView的滚动条
- LeetCode *** 8. String to Integer (atoi)
- LeetCode 9 Palindrome Number
- java.lang.UnsatisfiedLinkError: Native method not found
- ThinkPHP的静态化页面方法
- 简单的选项栏设置。
- c#调用c++ dll的一个例子
- Java入门:基础算法之求数组元素的和
- 软件工程结对作业02
- poj1061 青蛙的约会(扩展欧几里得)
- 鼠标设置感兴趣区域(ROI)
- php之文件载入include, include_once,require,require_once
- 【codevs 2981】题解
- LeetCode #002 Add Two Numbers
- JavaScript 防篡改对象