主要内容

在Zynq董事会上编写音频系统参考设计

此示例显示如何构建参考设计以在Zynq®板上运行音频算法和访问音频输入并输出。

介绍

在这个例子中,你将创建一个参考设计,接收来自Zedboard的音频输入,执行一些处理,并将处理后的音频数据传输出Zedboard。还可以为外设接口生成IP核心高密度脂蛋白工作流顾问

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

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

  2. I2S在编解码器芯片和Zynq Fabric之间流式传输数字化音频数据。

上图是一个高层架构图,显示了过滤算法IP如何使用参考设计。I2S IP工作在50MHz的频率,而人们可能希望在更高的频率运行滤波算法IP。该频率在Step中控制1.4高密度脂蛋白工作流顾问。在此示例中,假设滤波器在80MHz处运行。由于I2S和过滤算法IP以不同的频率运行,因此我们需要FIFO来处理时钟域交叉。根据所选滤波器的类型,过滤算法IP从输入的音频数据过滤一系列频率并将过滤的音频数据传出。在上图中,过滤算法IP是我们在Simulink中建模的主要算法。金宝app虽然FIVADO提供了FIFO IP,但需要创建I2C和I2S IP。这里,用户有3个选择:(a)使用预打包的IP,例如,如果存在一个,(b)在Simulink中模拟它,并使用IP核心生成工作流程或(c)使用遗留HDL代码来生成IP核心。金宝app要创建IP遗留HDL代码,请使用Simulink模型到黑框HDL代码并从中生成IP内核。金宝appFIFO IPS处理50MHz的传入音频数据之间的时钟域交叉,并在80MHz上运行的过滤器IP。I2C,I2S,PLL,FIFO IPS和处理系统形成参考设计的一部分。

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

  1. 为外围接口生成IP核心

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

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

  4. 验证参考设计

1.使用HDL Workflow Advisor生成外设接口的IP核心

在这个例子中,

  1. I2C IP是通过使用状态流模块对其进行建模而开发的,三状态缓冲区也使用了传统的VHDL代码。

  2. I2S IP是通过在Simulink中建模而开发的。金宝app

1.1创建I2C IP

创建I2C IP配置音频编解码器ADAU1761,请参考IP核心生成I2C控制器IP以配置音频编解码器芯片篇文章。

1.2创建I2S IP

利用matlab函数在Simulin金宝appk中设计一个实现I2S协议的模型。

modelname =.'hdlcoder_i2s_adau1761';Open_System(ModelName);

在模型中创建一个测试台来模拟来自编解码器的传入音频数据。

将此数据提供给执行I2S操作的子系统块。验证子系统在Scope上的输出。

从DUT子系统启动HDL Workflow Advisor。任务1.1中I2C IP的设置请与之前的I2C IP保持一致。在任务1.2中,设置目标平台接口如下:

运行任务3.2并生成IP核心。

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

I2C,I2S和FIFO IP纳入自定义参考设计中。要创建自定义参考设计,请参阅“使用Xilinx Vivado创建和导出自定义参考设计”部分定义自定义板和Zynq工作流程的参考设计

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

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

  2. FIFO将设置为其配置的默认值。

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

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

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

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

  1. Bit_clock是采样频率、每个信道的比特数和信道数的乘积。它由主模式下的音频编解码器驱动。在本例中,Sampling frequency为48KHz, No of channels为2,Number of bits per channel为24。

  2. left_right_select.是区分左侧音频信道数据和右音频信道数据。它与位时钟同步。

  3. serial_data_in.是将音频数据从模拟转换为数字的编解码器。

  4. Serial_data_out数字音频数据是否要将编解码器转换为模拟形式。

  5. I2C_CLKI2C_DATA是标准I2C信号吗

  6. ADDR0ADDR1是I2C地址位。

  7. Clk_24MHz是编解码器所需的24MHz时钟信号。

为此示例创建的自定义音频编解码器参考设计如下所示:

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

以下代码描述了Zedboard参考设计定义文件的内容plugin_rd.m.以上为参考设计。关于如何定义和注册自定义板的更多细节,请参阅定义自定义板和Zynq工作流程的参考设计的例子。

Zedboard.文件夹使用以下命令:

CD([matlabroot'/工具箱/ hdlcoder / hdlcoderdemos / comporicboards / zedboard']);

参考设计需要的所有文件,如IP核心文件、XDC文件、plugin_rd文件等都应该添加到matlab路径中,在里面Zedboard.使用下面显示的层次结构的文件夹。用户生成的IP核心文件应该在+ vivado文件夹。plugin_rd.m,tcl文件和xdc文件应该在参考设计插件文件夹中,例如,+ vivado_audio_filter_2017_2文件夹。

4.验证参考设计

为了确保参考设计和参考设计中的接口如预期的工作,设计了一个类似算法IP发送音频的Simulink模型,将其与参考设计集成并在Zedboard上测试它。金宝app用户应该能够听到音频回路。

modelname =.“hdlcoder_audio_pass_through”;Open_System(ModelName);

模型中的接口选择如下图所示:

要从模型生成IP核并将其与音频编解码器参考设计集成,请参考使用Zynq板在实时音频输入上运行音频滤波器的例子。