主要内容

IP核心代一个I2C控制器IP配置音频编解码器芯片

这个例子演示了如何使用一个模型一个I2C控制器I2C主控制器建模使用Stateflow™块配置音频编解码器芯片。

在本例中,您:

  1. 模型I2C主控制器使用Stateflow®块模型®金宝app

  2. 模型I2C控制器使用I2C配置音频编解码器芯片的主控制器块

  3. 使用黑箱子系统和双向端口特性来处理三态逻辑I2C IP核心

  4. 使用IP核心代工作流来生成一个I2C控制器IP核

1。I2C协议的概述

I2C总线,也叫做Inter-IC总线,是一个简单的,多主机,主机,双向双线式总线,由串行数据(SDA)和串行时钟(sci)线。每台设备连接到总线的软件由一个独特的7位和10位地址寻址,并维护一个简单的主从关系。面向8位串行,双向数据传输可以高达100 kbit / s在标准模式下,400 kbit / s在快速模式,或3.4 Mbit / s高速模式。I2C总线有两个节点:主节点和从节点。主节点生成时钟和发起通信的奴隶。奴隶节点由主接收时钟处理和响应主在承认。有四种模式的操作掌握传输,主,从传输和奴隶。主启动通信发送起始位,紧随其后的是7到10位地址的奴隶后跟读(1)或写(0)。如果该地址对应的奴隶存在,那么它会用ACK。主继续通信在传输或接收模式下基于读或写。 Similarly, the slave continues its operation based on the read or write instruction from the master. The figure below shows the timing diagram of I2C protocol.

2。建模广义I2C主控制器在模型使用Stateflow块金宝app

配置多个外设的设计可以是一个繁琐而乏味的过程。相反,创建一个通用的I2C主控制器,你可以直接使用配置音频编解码器芯片。下面的图显示了广义I2C主控制器的体系结构中使用Stateflow块实现仿真软件。金宝app

上面部分显示了I2C主控制器。配置外围,您必须提供特定于设备的配置块I2C主控制器。框图配置音频编解码器使用I2C主控制器芯片是如下所示。

下面的模型显示了I2C主控制器建模仿真软件使用Stateflow块。金宝app

modelname =“hdlcoder_I2C_master_controller”;open_system (modelname);open_system (“hdlcoder_I2C_master_controller / I2C_MasterController”);

I2C主控器只支持I2C写,目前不支持I2C回读。金宝appI2C主控制器由两部分组成,I2C控制器主图和三态缓冲黑箱。I2C主控制器图表提供了串行数据,SDA和串行时钟,sci奴隶设备通过三态缓冲黑箱。三态缓冲黑箱使用手写的VHDL代码和用于双向SDA端口的功能。三态缓冲黑箱模型中添加作为建模仿真软件不支持双向端口。金宝app金宝app

使用以下步骤创建一个黑箱。

1。做一个子系统包含输入和输出端口的HDL源代码创建您想要导入的黑箱。I2C三态缓冲黑箱如下所示。

2。指定你作为一个黑盒的子系统接口,右键单击子系统和选择>高密度脂蛋白HDL代码块属性并设置黑箱的架构如下图所示。

3所示。数据端口I2C_SDAI2C主控制器是双向的。设置端口为双向,右键单击I2C_SDA港口和点击HDL块属性并设置BidirectionalPort如下所示。

4所示。在仿真过程中,实际内容黑箱的内部子系统将用于模拟。

在代码生成过程中,高密度脂蛋白编码器不会生成代码在黑箱子系统。相反,代码生成器将手写HDL代码集成到IP核心。I2C主控制器的输入块可以通过添加一个设备提供输入特定的配置图。这个图表包含寄存器的详细信息,需要为您的奴隶设备配置。更多关于设备配置的部分覆盖Zedboard, Zybo董事会和箭头SoC开发工具包使用I2C音频编解码器配置主控制器。

2.1 I2C主控制器的I / O描述块中

下图给出了详细信息输入和输出端口的I2C主控制器。

2.2描述的I2C主控制器Stateflow图表

I2C控制器主图是由以这样一种方式,在所有的州都要求时钟(sci)生成和提供数据按I2C协议通过串行数据(SDA)端口。州后展示了一代的时钟和起始位。

用于发送以下州7位地址的奴隶设备。

这个函数bitget用于连续发送比特SDA端口。它允许用户获取比特值在指定位置的整数中提到它的参数列表。从一个状态转换到另一个状态取决于指定的执行顺序转换条件。如上述所示图的过渡cmd_slave_addr_pcmd_slave_addr_n状态发生基于转换条件的值(bit_cnt > 0) bit_cnt不断递减,直到满足过渡条件。bit_cnt的值初始化为“7”和它的价值直到它变成' 1 '的精神性用于发送7位地址的奴隶设备SDA端口。HDL代码生成,必须使用受支持的数据类型。金宝app冒号(:)符如图所示在美国是一个铸字算子用于cmd_slave_addr_n状态(sci(,) = 0)将一个值类型的“双重”类型“逻辑”(sci是逻辑数据类型在美国如图所示)。使用如下所示的状态寄存器地址发送给奴隶设备。

使用如下所示的状态发送到奴隶设备寄存器数据。

状态显示停止位后一代。

3所示。上配置音频编解码器ADAU1761 Zedboard使用I2C主控制器库

本节展示如何:

  1. 模型的音频编解码器ADAU1761设备配置图在仿真软件中使用Stateflow块。金宝app

  2. 使用I2C主控制器库配置音频编解码器ADAU1761块。

  3. 执行创建模型的仿真。

正如前面所提到的配置音频编解码器ADAU1761 Zedboard,需要创建ADAU1761设备配置图。这个图表应该连接到I2C主控制器库块之前创建。

注意:你必须为你自己的设备创建设备配置图。这个例子是说明I2C主控制器库块可用于配置音频编解码器设备。设备配置图用于ADAU1761是特定于这个设备和其他设备不能用于配置。

配置模型为ADAU1761创建如下所示。

modelname =“hdlcoder_I2C_adau1761”;open_system (modelname);

3.1模拟音频编解码器ADAU1761配置模型

音频编解码器芯片ADAU1761 20寄存器需要配置。他们必须写的I2C主控制器在突发模态和几个字节模式。第一个寄存器写入字节模式,第二突发模态6个字节的长度。剩余的18个寄存器都写在字节模式。

仿真波形的音频编解码器ADAU1761配置如下所示。

字节模式之间的转移I2C主控制器和音频编解码器芯片ADAU1761下图所示。

下面模拟显示发送的起始位,紧随其后的是7位地址的奴隶设备(0 x3b),其次是写(0),其次是16位的寄存器地址(0 x4000),紧随其后的是8位寄存器数据(0 x0e)和从奴隶设备确认。

3.2 IP核心代工作流

生成的音频编解码器ADAU1761配置HDL IP核心,遵循下面的步骤。

1。设置Xilinx Vivado合成工具路径使用以下命令在MATLAB命令窗口。使用自己的Vivado安装路径,当你运行该命令

hdlsetuptoolpath (“ToolName”,“Xilinx Vivado”,“路径”,“C: \ Xilinx \ Vivado \ 2017.4 \ bin \ vivado.bat ');

2。在ADAU1761配置模型,选择I2C_IP子系统和通过右击打开HDL工作流顾问。在任务1.1中,选择IP核心代为目标的工作流程,通用Xilinx平台目标平台和Xilinx Vivado合成工具。也选择家庭,设备,包和速度如下图所示。

3所示。在任务1.2中,将目标平台的接口设置为“外部端口”所有的港口。

4所示。的三态hdlcoder_I2C_tristate.vhd HDL逻辑存在于VHDL文件。将其复制到您的当前工作目录。

拷贝文件(fullfile (matlabroot,“工具箱”,“hdlcoder”,“hdlcoderdemos”,“hdlcoder_I2C_tristate.vhd”),“hdlcoder_I2C_tristate.vhd”);

5。在任务3.2中,添加额外的源文件中的三态缓冲硬件描述语言(VHDL)文件。然后右键单击生成RTL代码和IP核心和点击选择任务运行。

I2C配置的IP核心ADAU1761将生成。下面的图中显示的IP核心生成报告。

IP核可用于生成用户参考设计。创建参考设计,请参考编写一个参考设计Zynq板音频系统

4所示。配置音频编解码器SSM2603 Zybo板上使用I2C主控制器库

本节展示如何:

  1. 模型的音频编解码器SSM2603设备配置图在仿真软件中使用Stateflow块。金宝app

  2. 使用I2C主控制器库配置音频编解码器SSM2603块。

  3. 执行创建模型的仿真。

上配置音频编解码器SSM2603 Zybo板,需要创建SSM2603设备配置图。这个图表应该连接到I2C主控制器库块之前创建。

注意:设备配置图用于SSM2603是特定于这个设备和其他设备不能用于配置。

配置模型为SSM2603创建如下所示。

modelname =“hdlcoder_I2C_ssm2603”;open_system (modelname);

4.1模拟音频编解码器SSM2603配置模型

音频编解码器芯片SSM2603 11寄存器需要配置。所有要写的字节模式。

仿真波形的音频编解码器SSM2603配置如下所示。

下面模拟显示发送的起始位,紧随其后的是7位地址的奴隶设备(0 x1a),其次是写(0),紧随其后的是8位寄存器地址(0 x0c),紧随其后的是8位寄存器数据(0 x10)和应答从奴隶设备。

4.2 IP核心代工作流

IP核心代SSM2603配置模型的步骤同上述步骤3.2节中,IP核心代工作流。IP核可用于生成用户参考设计。创建参考设计,请参考编写一个参考设计ZYBO板音频系统

5配置音频编解码器SSM2603箭头SoC开发工具包使用I2C主控制器库

本节展示如何:

  1. 模型的音频编解码器SSM2603设备配置图在仿真软件中使用Stateflow块。金宝app

  2. 使用I2C主控制器库配置音频编解码器SSM2603块。

  3. 执行创建模型的仿真。

上配置音频编解码器SSM2603箭头SoC开发工具包,为需要创建SSM2603设备配置图。这个图表应该连接到I2C主控制器库块之前创建。

注意:设备配置图用于SSM2603是特定于这个设备和其他设备不能用于配置。

配置模型对箭头SoC SSM2603开发工具包在Zybo董事会SSM2603一样配置模型。请参阅本文的第四节SSM2603配置模型。

5.1模拟音频编解码器SSM2603配置模型

音频编解码器在箭头SoC芯片SSM2603配置开发工具包是一样的音频编解码器芯片SSM2603配置Zybo板上。请参考4.1节本文的仿真。

5.2 IP核心代工作流

生成的音频编解码器SSM2603配置HDL IP核心,遵循下面的步骤。

1。建立了英特尔第四的刀具轨迹MATLAB命令窗口中使用以下命令。使用自己的第四的安装路径,当你运行该命令

hdlsetuptoolpath (“ToolName”,“阿尔特拉第四的二世”,“路径”,“C: \ intelFPGA \ 18.1 \第四的\ bin64 \ quartus.exe);

2。在SSM2603配置模型,选择I2C_SSM2603子系统和通过右击打开HDL工作流顾问。在任务1.1中,选择IP核心代为目标的工作流程,通用的阿尔特拉平台目标平台和阿尔特拉第四的二世合成工具。也选择家庭,设备,包和速度如下图所示。

3所示。在任务1.2中,将目标平台的接口设置为“外部端口”所有的港口。

4所示。三态HDL逻辑存在于hdlcoder_I2C_tristate_arrowssm2603.vhd Verilog文件。将其复制到您的当前工作目录。

拷贝文件(fullfile (matlabroot,“工具箱”,“hdlcoder”,“hdlcoderdemos”,“hdl_I2C_tristate_arrowssm2603.vhd”),“hdl_I2C_tristate_arrowssm2603.vhd”);

5。在任务3.2中,添加额外的源文件中的三态缓冲Verilog文件。然后右键单击生成RTL代码和IP核心和点击选择任务运行。

I2C配置的IP核心SSM2603将生成。下面的图中显示的IP核心生成报告。

IP核可用于生成用户参考设计。创建参考设计,请参考编写一个参考设计在英特尔董事会音频系统