基于Zynq板的音频系统参考设计
这个例子展示了如何构建一个参考设计来运行音频算法,并访问Zynq®板上的音频输入和输出。
简介
在本例中,您将创建一个参考设计,从Zedboard接收音频输入,对其执行一些处理,并将处理后的音频数据传输出Zedboard。您还可以使用高密度脂蛋白工作流顾问.
要在Zedboard上执行音频处理,需要以下2个协议:
I2C在Zedboard上配置ADAU1761音频编解码器芯片。
I2S在编解码器芯片和Zynq织物之间传输数字化音频数据。
上图是一个高级架构图,显示了过滤算法IP如何使用参考设计。I2S IP在50MHz频率下运行,而过滤算法IP在更高的频率下运行。这个频率在步进中控制1.4在高密度脂蛋白工作流顾问.在本例中,假设过滤器工作在80MHz。由于I2S和滤波算法IPs在不同的频率下工作,我们需要FIFOs来处理时钟域交叉。根据选择的过滤器类型,过滤算法IP从传入的音频数据中过滤一定范围的频率,并将过滤后的音频数据传递出去。在上图中,过滤算法IP是我们在Simulink中建模的主要算法。虽然Vivado提供了FIFO IP,但需要创建I2C和I2S IP。在这里,用户有3个选择:(a)使用预打包的IP,例如,如果存在的话,(b)在Simulink中建模并使用IP核生成工作流生成IP核,或者(c)使用遗留的HDL代码。为了从遗留的HDL代码中创建IP,使用Simulink模型对HDL代码进行黑盒处理,并从中生成IP核。FIFO IP处理50MHz的传入音频数据和80MHZ的过滤器IP之间的时钟域交叉。I2C, I2S, PLL, FIFO IPs和处理系统构成了参考设计的一部分。
以下步骤用于创建上面描述的参考设计:
为外设接口生成IP核
在Vivado中创建一个自定义音频编解码器参考设计
创建参考设计定义文件
验证参考设计
1.使用HDL工作流Advisor为外围接口生成IP核
在这个例子中,
I2C IP是通过使用状态流块建模开发的,同时也使用遗留的VHDL代码进行三状态缓冲区。
I2S IP是在Simulink中建模开发的。
1.1创建I2C IP
I2C IP配置“ADAU1761音频编解码”请参见IP核I2C控制器IP,用于配置音频编解码芯片篇文章。
1.2 I2S IP的创建
利用MATLAB函数在Simulink中设计实现I2S协议的模型。
modelname =“hdlcoder_I2S_adau1761”;open_system (modelname);
在模型中创建一个测试台架,以模拟从编解码器传入的音频数据。
将这些数据提供给执行I2S操作的子系统块。在作用域中验证子系统的输出。
从DUT子系统启动HDL Workflow Advisor。在任务1.1中,与前面生成的“I2C IP”保持一致。在任务1.2中,设置目标平台接口如下所示:
运行Task 3.2,生成ip core。
2.在Vivado中创建一个自定义音频编解码器参考设计
I2C、I2S和FIFO ip被纳入自定义参考设计。要创建一个自定义参考设计,请参考中“使用Xilinx Vivado创建并导出一个自定义参考设计”一节定义自定义板和参考设计的Zynq工作流.
在创建这个自定义参考设计时需要注意的要点:
我们必须了解Zedboard上的音频编解码器芯片的工作原理。
在配置时,将fifo设置为默认值。
对于使用HDL Workflow Advisor生成的IP核,IPCORE_CLK而且AXI4_Lite_ACLK应该连接到同一个时钟源。
在Vivado中验证块设计时,除了未连接的端口之外,应该没有任何严重警告。
在这个参考设计中,音频编解码器被配置为在主模式下工作。
以下信号在Zynq Soc上的参考设计和Zedboard上的音频编解码器之间运行:
Bit_clock是采样频率,每个信道的比特数和信道数的乘积。它由主模式下的音频编解码器驱动。在本例中,采样频率为48KHz,通道数为2,每个通道的比特数为24。
Left_right_select就是区分左声道数据和右声道数据。它与位时钟同步。
Serial_data_in是从模拟到数字转换的音频数据的编解码器。
Serial_data_out数字音频数据将被编解码器转换成模拟形式。
I2C_CLK而且I2C_DATA是标准I2C信号吗
ADDR0而且ADDR1为I2C地址位。
Clk_24MHz为编解码器所需的24MHz时钟信号。
为这个例子创建的自定义音频编解码器参考设计如下所示:
3.创建参考设计定义文件
下面的代码描述了Zedboard参考设计定义文件的内容plugin_rd.m为以上参考设计。有关如何定义和注册自定义板的详细信息,请参见定义自定义板和参考设计的Zynq工作流的例子。
去Zedboard使用以下命令打开文件夹:
解压缩(“ZedBoard.zip”);目录(genpath (“ZedBoard”));
参考设计所需的所有文件,如IP core文件,XDC文件,plugin_rd文件等都应该添加到MATLAB路径中Zedboard文件夹中使用如下所示的层次结构。用户生成的IP核文件应该在+ vivado文件夹中。plugin_rd.m, tcl files and xdc files should be in the reference design plugin folder, for example,+ vivado_audio_filter_2017_2文件夹中。
4.验证参考设计
为了保证参考设计和参考设计中的接口能够正常工作,设计了一个仅通过算法IP发送音频的Simulink模型,并将其与参考设计集成在Zedboard上进行测试。用户应该能够听到音频循环。
modelname =“hdlcoder_audio_pass_through”;open_system (modelname);
模型中接口的选择如下所示:
从模型生成IP核并与音频编解码器集成的参考设计,请参见使用Zynq板在现场音频输入中运行音频过滤器的例子。