主要内容

基于Zynq板的音频系统参考设计

这个例子展示了如何构建一个参考设计来运行音频算法,并访问Zynq®板上的音频输入和输出。

简介

在本例中,您将创建一个参考设计,从Zedboard接收音频输入,对其执行一些处理,并将处理后的音频数据传输出Zedboard。您还可以使用高密度脂蛋白工作流顾问

要在Zedboard上执行音频处理,需要以下2个协议:

  1. I2C在Zedboard上配置ADAU1761音频编解码器芯片。

  2. 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和处理系统构成了参考设计的一部分。

以下步骤用于创建上面描述的参考设计:

  1. 为外设接口生成IP核

  2. 在Vivado中创建一个自定义音频编解码器参考设计

  3. 创建参考设计定义文件

  4. 验证参考设计

1.使用HDL工作流Advisor为外围接口生成IP核

在这个例子中,

  1. I2C IP是通过使用状态流块建模开发的,同时也使用遗留的VHDL代码进行三状态缓冲区。

  2. 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工作流

在创建这个自定义参考设计时需要注意的要点:

  1. 我们必须了解Zedboard上的音频编解码器芯片的工作原理。

  2. 在配置时,将fifo设置为默认值。

  3. 对于使用HDL Workflow Advisor生成的IP核,IPCORE_CLK而且AXI4_Lite_ACLK应该连接到同一个时钟源。

  4. 在Vivado中验证块设计时,除了未连接的端口之外,应该没有任何严重警告。

  5. 在这个参考设计中,音频编解码器被配置为在主模式下工作。

以下信号在Zynq Soc上的参考设计和Zedboard上的音频编解码器之间运行:

  1. Bit_clock是采样频率,每个信道的比特数和信道数的乘积。它由主模式下的音频编解码器驱动。在本例中,采样频率为48KHz,通道数为2,每个通道的比特数为24。

  2. Left_right_select就是区分左声道数据和右声道数据。它与位时钟同步。

  3. Serial_data_in是从模拟到数字转换的音频数据的编解码器。

  4. Serial_data_out数字音频数据将被编解码器转换成模拟形式。

  5. I2C_CLK而且I2C_DATA是标准I2C信号吗

  6. ADDR0而且ADDR1为I2C地址位。

  7. 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板在现场音频输入中运行音频过滤器的例子。

Baidu
map