ZMOD DAC 1411低级控制器IP核心用户指南
介绍
本用户指南介绍了Digilent ZmodDAC1411低电平控制器知识产权。该IP直接与Zmod接口DAC按AD9717数字到模拟转换器的要求,在单个双数据速率(DDR)通道上初始化硬件并将两个输入通道复用(DAC)由zmod特色DAC1411. ZMOD.DAC1411低电平控制器用于不需要处理器交互(独立模式)的项目中作为一个独立的IP,或者它可以与Digilent Zmod DAC1411 AXI适配器IP结合使用,提供与处理系统的连接。
特性
-
初始化zmod上的硬件ADC1411.
-
根据ZMOD格式化在两个单个数据速率(SDR)通道上收到的数据DAC1411年的需求。
-
提供重写初始值的可能性DAC通过提供一个可选的上层接口,允许间接访问DAC的SPI接口来配置。
-
基于用户/上层IP指定的系数执行偏移和增益校准。
性能
IP被设计为生成两个100MHz.Zmod的时钟信号DAC1411年的DAC一个用于限制输入数据,一个用作采样时钟,并按要求在一个14位DDR并行总线上以200 MSPS产生输出数据DAC.IP核心有两个SDR输入数据通道,与系统时钟输入同步(100MHz.), IP核需要。
概述
1.DAC输入时钟生成
IP输出两100MHz.时钟(DCLKIO CLKIN)。DCLKIO用于AD9717DAC来限定输入数据,而CLKIN是DAC的采样时钟。作为输入,IP需要两个100MHz.时钟信号:SysClk、DacClk。DacClk需要与SysClk相移90度,它用于生成DCLKIO。
2.数据通路
数据路径由两个阶段组成。第一阶段负责将乘法和加法校准系数应用到两个通道,以补偿ZmodDAC1411DAC输出过滤器公差。校准系数可以作为IP参数引入,也可以通过(可选)外部端口传递,这取决于核心是在独立模式下使用,还是通过Zmod连接到处理系统DAC1411 AXI适配器IP核。如果IP在单机模式下使用,用户应运行待确定的可执行文件获取校准参数。
$$ chxoddr = chxin * cofxmult_ {lh / hg} + cofxadd_ {lg / hg} \ tag {1} $$
在前一关系式中,IP核的数据输入通道标记为ChxIn,校准级输出标记为ChxODDR, CoefxMult_{LH/HG}和CoefxAdd_{LG/HG}表示增益和偏置校准系数。
如下图所示DAC数据格式。
校准台的每个输出位都连接到ODDR原语,该原语按照AD9717的要求对输出数据进行格式化参考文献3..两个输入通道在200 MSPS 14位并行总线上复用。
3.规模的选择
IP核心提供选择ZMOD的选择DAC1411缩放选项静态或动态。对于静态配置,需要将ExtScaleEn设置为“false”,并且需要在IP核中配置规模配置参数(见表3)GUI.对于动态缩放控制,需要将ExtScaleEn设置为“true”,外部缩放控制端口将变为可用。
4.配置状态机
配置状态机向Zmod的AD9717发送预定义的SPI命令序列,执行设备的初始化。执行序列后,状态机会进入IDLE状态,如果上级SPI命令接口上存在任何有效数据,则会监视。执行任何请求的SPI传输后,状态机通过所接收的SPI数据(用于读取命令)并返回空闲状态。下面列出了初始配置命令序列。在配置每个寄存器后,读取寄存器数据并检查预期值以确定任何SPI事务错误。有关配置的更多详细信息,请详细说明请咨询参考1.
-
SPI控制寄存器:设置软件复位(地址:00h;数据:20h)
-
SPI控制寄存器:发布软件重置(地址:00h;数据:00h)
-
数据控制寄存器配置选择:2的补码,IDATA锁存在DCLKIO上升沿,I第一对在数据输入板上,使能数据时钟输入,使能数据时钟输出(地址:02h;数据:B4h)
-
CLKMODE注册:清除重新核准位(地址:14h;数据:00h)
-
CLKMODE注册:设置(切换)所需位(地址:14h;数据:00 h)
-
CLKMODE注册:清除重新核准位(地址:14h;数据:00h)
5.SPI控制器
SPI控制器通过AD9717的SPI接口实现对寄存器的基本访问。目前只支持单字节数据传输。更多关于AD9717的SPI接口的详细信息可以在(文献3].下面介绍SPI控制器的接口。
信号的名字 | 接口 | 信号类型 | 初始化状态 | 描述 |
---|---|---|---|---|
SysClk | - | 一世 | N/A | 100MHz输入时钟信号。 |
DACCLK. | - | 一世 | N/A | 100MHz输入时钟信号相对于SysClk移了90度。 |
srst_n. | - | 一世 | N/A | 负极性同步复位。 |
sSPI_Clk | SPI | O. | N/A | 输出SPI时钟(文献3]除以sysclk。应连接到相应的顶级SPI端口。 |
SSDIO. | SPI | IO | N/A | SPI SDIO信号(文献3].应连接到相应的顶级SPI端口。 |
SCS. | SPI | 一世 | N/A | SPICS信号(文献3].应连接到相应的顶级SPI端口。 |
sRdData [7:0] | - | O. | N/A | SPI寄存器读取接收数据 |
sWrData | - | 一世 | N/A | SPI寄存器写数据。 |
sAddr (11:0) | - | 一世 | N/A | SPI指令阶段地址。 |
向下的(1:0) | - | 一世 | N/A | SPI指令相位字长。当前支持的唯一值是0(传输的1个数据字节)。 |
sRdEn | - | 一世 | N/A | 触发SPI上的寄存器读操作。 |
sWrEn | - | 一世 | N/A | 触发SPI上的寄存器写操作。 |
sDone | - | O. | N/A | 表示请求的操作已完成 |
6.孵蛋的
IP在两个时钟域中运行。系统时钟(SYSCLK)为除输出时钟生成块之外的所有逻辑。所有输出时钟都来自100MHz.输入DacClk。IP不限制任何输入时钟,因此,如果使用时钟修改块,它需要在顶层设计中手动或依赖于自动派生的约束。更多信息请参见[4]。
端口描述
信号的名字 | 接口 | 信号类型 | 初始化状态 | 描述 |
---|---|---|---|---|
SysClk | - | 一世 | N/A | 100MHz输入时钟信号。 |
srst_n. | - | 一世 | N/A | 负极性同步复位。 |
sInitDone_n | - | O. | N/A | 活动低标志,指示Zmod初始化完成时。 |
sCh1In [13:0] | - | O. | N/A | Channel1数据输入。 |
sCh2In [13:0] | - | O. | N/A | Channel2数据输入。 |
sExtCh1LgMultCoef | - | O. | N/A | 通道1低增益乘系数外部端口。通过将extcaliben参数设置为“true”,启用此端口。 |
sextch1lgaddcoef. | - | O. | N/A | Channel1低增益加性系数外部端口。通过将extcaliben参数设置为“true”,启用此端口。 |
sExtCh1HgMultCoef | - | O. | N/A | 通道1高增益乘系数外部端口。通过将extcaliben参数设置为“true”,启用此端口。 |
sExtCh1HgAddCoef | - | O. | N/A | Channel1高增益添加系数外部端口。通过将extcaliben参数设置为“true”,启用此端口。 |
sExtCh2LgMultCoef | - | O. | N/A | 通道2低增益乘系数外部端口。通过将extcaliben参数设置为“true”,启用此端口。 |
sExtCh2LgAddCoef | - | O. | N/A | Channel2低增益加性系数外部端口。通过将extcaliben参数设置为“true”,启用此端口。 |
sExtCh2HgMultCoef | - | O. | N/A | 通道2高增益乘系数外部端口。通过将extcaliben参数设置为“true”,启用此端口。 |
sextch2hgaddcoef. | - | O. | N/A | Channel2高增益添加剂系数外部端口。通过将extcaliben参数设置为“true”,启用此端口。 |
sExtCh1Scale | - | O. | N/A | Channel1 Scale选择外部端口。通过将extscaleConfigen参数设置为“true”,启用此端口。“1”=满量程。“0”=不是全尺寸。 |
sExtCh2Scale | - | O. | N/A | Channel2缩放选择外部端口。通过将extscaleConfigen参数设置为“true”,启用此端口。“1”=满量程。“0”=不是全尺寸。 |
sDAC_EnIn | - | 一世 | N/A | 当断言zmod时DAC1411输出继电器放置在设定位置。当困惑这两个DAC通道与输出断开连接。 |
sExtSPI_Idle | - | O. | N/A | 表示配置状态机处于IDLE状态的标志。通过将extcmdinterfaceen参数设置为“true”,启用此端口。 |
sCmdDone | - | O. | N/A | 指示成功完成SPI命令的脉冲。通过将extcmdinterfaceen参数设置为“true”,启用此端口。 |
sextspi_txrden | - | 一世 | N/A | 读取使能信号,用于从上层TX命令FIFO加载数据。通过将extcmdinterfaceen参数设置为“true”,启用此端口。 |
sExtSPI_TxDout [23:0] | - | 一世 | N/A | 上层TX命令FIFO输出数据包含传输长度,寄存器地址和传递到SPI控制器的寄存器数据。通过将extcmdinterfaceen参数设置为“true”,启用此端口。 |
sextspi_txvalid. | - | 一世 | N/A | 上层TX命令FIFO数据有效信号。通过将extcmdinterfaceen参数设置为“true”,启用此端口。 |
sExtSPI_RxWrEn | - | O. | N/A | 上层RX命令FIFO写使能信号。通过将extcmdinterfaceen参数设置为“true”,启用此端口。 |
sExtSPI_RxDin [7:0] | - | O. | N/A | 上层RX命令FIFO输入数据。通过将extcmdinterfaceen参数设置为“true”,启用此端口。 |
sDAC_ClkIO | - | O. | N/A | 应该连接到AD9717 DCLKIO输入(文献3]. |
sDAC_Clkin | - | O. | N/A | 应该连接到AD9717的CLKIN输入(文献3]. |
sDAC_Data [13:0] | - | O. | N/A | 应该连接到AD9717的DB[13:0]输入(文献3]. |
sdac_reset. | - | 一世 | N/A | 应该连接到AD9717的RESET/PINMD输入(文献3]. |
sDAC_SDIO | SPI | IO | N/A | SPI SDIO信号(文献3]. |
sDAC_CS | SPI | O. | N/A | SPICS信号(文献3]. |
sdac_sclk. | SPI | O. | N/A | SPI输出时钟(文献3]. |
sDAC_setFS1 | - | O. | N/A | 这个信号控制ZmodDAC1411 SCALE SELECT IMBAND SELDIC开关用于通道1。 |
sDAC_setFS2 | - | O. | N/A | 这个信号控制ZmodDAC1411刻度选择模拟开关2通道。 |
sDAC_EnOut | - | O. | N/A | 这个信号控制ZmodDAC1411年输出继电器。 |
参数描述
IP核参数说明如下表所示。
信号的名字 | 描述 |
---|---|
ExtrelayConfigen. | 启用外部中继配置端口。当需要动态继电器配置时,设置为“true”。当静态继电器配置足够时,设置为“false”。 |
ExtCalibEn | 启用外部校准接口。当IP核连接到Zmod时设置为“true”DAC1411 AXI适配器IP核心。当核心以独立模式运行时,设置为“假”。在单独操作模式下操作时,可以从中获得校准系数要确定可执行文件并载入标定参数见下表。 |
ExtCmdInterfaceEn | 使能上层IP SPI配置接口。当IP核连接到Zmod时设置为“true”DAC1411 AXI适配器。这将使处理器能够访问zmodDAC1411年SPI接口。在初始化配置时设置为“false”SPI控制器部分。 |
kCh1CouplinStatic | Channel1 AC DC耦合选择静态配置参数。如果参数ExtRelayConfigEn为“false”,配置状态机在初始化时将根据该参数的值配置耦合选择中继。继电器的状态以后不能改变。如果ExtrelayConfigen参数的值为“true”,则忽略此参数。“1”= AC耦合。“0”=直流耦合。 |
kCh2CouplinStatic | Channel2交流直流耦合选择静态配置参数。如果参数ExtRelayConfigEn为“false”,配置状态机在初始化时将根据该参数的值配置耦合选择中继。继电器的状态以后不能改变。如果ExtrelayConfigen参数的值为“true”,则忽略此参数。“1”= AC耦合。“0”=直流耦合。 |
kCh1GainStatic | Channel1增益选择静态配置参数。如果参数ExtRelayConfigEn为“false”,配置状态机在初始化时将根据该参数的值配置耦合选择中继。继电器的状态以后不能改变。如果ExtrelayConfigen参数的值为“true”,则忽略此参数。“1”=高增益。“0”=低增益。 |
kCh2GainStatic | Channel2增益选择静态配置参数。如果参数ExtRelayConfigEn为“false”,配置状态机在初始化时将根据该参数的值配置耦合选择中继。继电器的状态以后不能改变。如果ExtrelayConfigen参数的值为“true”,则忽略此参数。“1”=高增益。“0”=低增益。 |
kCh1LgMultCoefStatic [17:0] | 通道1低增益乘性校准系数。如果参数ExtRelayConfigEn为“false”,配置状态机在初始化时将根据该参数的值配置耦合选择中继。如果ExtrelElayConfigen参数的值为“true”,则忽略此参数,并且预计处理系统将更新相应的外部端口。 |
kCh1LgAddCoefStatic [17:0] | Channel1低增益加性校准系数。如果参数ExtRelayConfigEn为“false”,配置状态机在初始化时将根据该参数的值配置耦合选择中继。如果ExtrelElayConfigen参数的值为“true”,则忽略此参数,并且预计处理系统将更新相应的外部端口。 |
kCh1HgMultCoefStatic [17:0] | Channel1高增益乘法校准系数。如果参数ExtRelayConfigEn为“false”,配置状态机在初始化时将根据该参数的值配置耦合选择中继。如果ExtrelElayConfigen参数的值为“true”,则忽略此参数,并且预计处理系统将更新相应的外部端口。 |
Kch1hgaddcoefstatic [17:0] | 通道1高增益加性校准系数。如果参数ExtRelayConfigEn为“false”,配置状态机在初始化时将根据该参数的值配置耦合选择中继。如果ExtrelElayConfigen参数的值为“true”,则忽略此参数,并且预计处理系统将更新相应的外部端口。 |
kCh2LgMultCoefStatic [17:0] | Channel2低增益乘法校准系数。如果参数ExtRelayConfigEn为“false”,配置状态机在初始化时将根据该参数的值配置耦合选择中继。如果ExtrelElayConfigen参数的值为“true”,则忽略此参数,并且预计处理系统将更新相应的外部端口。 |
Kch2lgaddcoefstatic [17:0] | Channel2低增益加性校准系数。如果参数ExtRelayConfigEn为“false”,配置状态机在初始化时将根据该参数的值配置耦合选择中继。如果ExtrelElayConfigen参数的值为“true”,则忽略此参数,并且预计处理系统将更新相应的外部端口。 |
Kch2hgmultcoefstatic [17:0] | 通道2高增益乘性校准系数。如果参数ExtRelayConfigEn为“false”,配置状态机在初始化时将根据该参数的值配置耦合选择中继。如果ExtrelElayConfigen参数的值为“true”,则忽略此参数,并且预计处理系统将更新相应的外部端口。 |
kCh2HgAddCoefStatic [17:0] | Channel2高增益加性校准系数。如果参数ExtRelayConfigEn为“false”,配置状态机在初始化时将根据该参数的值配置耦合选择中继。如果ExtrelElayConfigen参数的值为“true”,则忽略此参数,并且预计处理系统将更新相应的外部端口。 |
核心设计
定制
IP通过其可定制的参数(ExtScaleConfigEn、ExtCalibEn、ExtCmdInterfaceEn)使用户能够选择具有最小外部端口的更基本的设计,或者选择具有多个端口的更可配置但也更复杂的设计,这些端口支持对几个硬件特性进行动态配置。当Zmod使用IP Core时DAC1411 AXI适配器,硬件配置功能预计将由处理系统控制,因此应启用所有接口并连接到上层IP核心。
参考文献
以下文件提供有关讨论主题的额外资料:
-
Xilinx Inc., UG471: 7系列fpga SelectIO资源,v1.4, 2014年5月13日。
-
Xilinx Inc.,UG472:7系列FPGA时钟资源,2012年10月2日,V1.6
-
Analog Devices, AD9646 Datasheet(数据表)11 page - Analog Devices
-
Xilinx Inc., UG903: Using Constraints, v2014.3, 2014年10月31日