当前位置:   article > 正文

ZYNQ PS端模块读书笔记-XADC_zynq中xadc时钟

zynq中xadc时钟

在这里插入图片描述


作者:ShownSun
工作室:时沿科技


ZYNQ PS端模块读书笔记-XADC

1 介绍

  JTAG和DRP接口可以访问XADC状态和控制寄存器;PS-XADC接口用于PS软件来控制XADC。

  XADC包含两个12位1MSPS的ADCs,各自包含独立的追踪和保持放大器,一个模拟多路选择器(多达17个外部模拟输入通道),一个片上温度和片上电压传感器。跟踪和保持放大器支持模拟输入类型:单极、双极和差分。在1MSPS下,模拟输入的带宽为500KHz。

  为了实现全12位ADCs性能,一个外部1.25V参考IC被推荐。

控制接口

  PS端控制XADC包含两种方法:
  一种是:PS-XADC(32位APB从接口,为FIFO和串行化);
  一种是:AXI-XADC接口(PS到PL的AXI主接口);
  PL端控制XADC是使用JTAG;
  不过PL的JATG和PS的XADC不能同时工作;可以使用XADCIF_CFG[ENABLEE]位进行设置。

系统考虑

  如果想要高性能的ADC,IP核逻辑应当连接到M_AXI_GP接口,这是一个并行数据路径。使用PS_AXDC,FIFO用于命令和读取数据,软件可以快速的执行命令,无需等待串行化。而使用PL-JTAG,数据被串行化,运行更加慢。

1.1 特色

模拟数字转换器ADC

  双12位1 MSPS模数转换器(adc)
  多达17个灵活的和用户可配置的模拟输入
  芯片内或外部参考选择
  片内温度和电源传感器
  JTAG访问ADC测量

PS-XADC接口

  读取和写入XADC寄存器
  串行数据传输到达或者来自XADC
  缓冲读写数据操作
  15字32位命令FIFO
  15个字,32位
  读取数据FIFO
  可编程的fifo级中断
  可编程的报警中断
  配置接口操作(使用devcfg寄存器)
  当使用PS-XADC接口时,PL-JTAG接口被禁用

DRP并行接口

  最高速率接口带宽
  16位采样数据

PL-JTAG接口

  当PL只是上电没有编程时访问XADC;
  使用JTAG TAP控制器来访问XADC寄存器;
  使能JATG来访问所有XADC寄存器;

1.2 系统视角

PS-XADC接口

  PS算使用devcfg寄存器配置接口,软件写命令到接口,并将其推进命令FIFO。这些32位写参数,包含了DRP命令,地址和数据,被串行化并传输到XADC。

DRP接口

  DRP接口时并行16位双向接口,通过AXI XADC PL逻辑连接到PL总线。IP核通过AXI4-Lite读写协议接收16位数据。
PL-AXI接口提供最高的性能。

PL JTAG接口

  Chipscope使用PL JTAG接口读取核写入到XADC状态核控制寄存器。

警告

  7个警告和超温度信号布线到PS-XADC接口,并连入PS-XADC接口和PL接口;

1.3 PS-XADC接口框图

  PS-XADC接口被软件使用APU进行控制;软件写32位命令和NOPs到命令FIFO。命令FIFO输出由XADC的32位数据包中的串行通信通道串行化。

  包之间有一个可编程的空闲间隙(IGAP)时间,以便XADC有时间加载读响应前一个数据包的数据。命令FIFO控制字每执行一次,都有一个对应的值从读取数据FIFO中移出。在DRP读命令的情况下,因为命令FIFO移出,将XADC_DRP的DR寄存器的旧内容移出。经过IGAP时间,结果当前DRP读可在XADC DRP的DR寄存器中获得。当TXFIFO的下一个命令移位时,在DR寄存器中当前读的结果被移到RDFIFO中。

1.4 编程指南

PS-XADC接口

  第3小节将会详细描述

DRP接口

  UG480

PL-JTAG接口

  UG480

2 功能描述

2.1 接口仲裁(PL-JTAG与PS-XADC)

  XADC在三个XADC接口中的两个之间对请求进行仲裁。其中的一个接口始终是可选连接到LogiCORE XADC桥的DRP接口。

  仲裁的接口取决于devcfg.XADCIF_CFG[ENABLE]位。
  [ENABLE] = 0: DRP和PL-JTAG(重置默认值)
  [ENABLE] = 1: DRP和PS-XADC

2.2 串行通信通道(PL-JTAG与PS-XADC)

  默认情况下PS和XADC不使能,必须向devcfg.XADCIF_CFG[ENABLE]写1来控制通信从PL-JTAG接口转向PS-XADC接口。

2.3 模拟数字转换器

  UG480

2.4 传感器警告(PS-XADC和DRP)

  XADC阈值寄存器存储用户设置的阈值,阈值被存储在XADC控制寄存器,参考UG480;

PS-XADC接口

  警告状态存储在PS XADC接口寄存器中,可以设置使能警告来触发中断;个别的警告状态可以在devcfg.XADCIF_INT_MASK寄存器中不使能;

  中断状态发送到PS-XADC接口状态寄存器,可以产生IRQ ID#39中断到PS中断控制器。可以向devcfg.XADCIF_INT_STS寄存器写1来激活警告位,清除中断。

DRP接口

  PG019

功能描述

  对于电压传感器,高于或者低于阈值警告就会出现;对于温度传感器,只是在高于阈值的时候才会出现;

3 PS-XADC接口描述

3.1 串行通道时钟频率

  PS-XADC与XADC之间的通信通道时钟不能超过50MHz。被PS时钟子系统产生的PCAP_2x时钟派生出的串行时钟有一个名义的200MHz频率。devcfg.XADCIF_CFG [TCLK_RATE]位用于配置时钟分频器,减小PCAP_2x时钟频率不超过50MHz。

XADC serial clock = PCAP_2x clock / [TCLK_RATE]
  • 1

3.2 命令和数据包

  PS-XADC接口缓冲32位的读写,以最小化慢速串行的影响传输PS系统吞吐量的过程。PS-XADC接口最多可以缓冲15个命令。每一个命令被序列化并与XADC通信。对于写入到PS-XADC接口每个命令,读取数据FIFO中都会接收一个数据字。读取的数据FIFO可以存储15数据字。一次最多可写15个命令,最多可读15个数据字fifo。

  XADC读取数据是32位,但只有32位的低16位包含ADC数据。

PS-XADC事件时序

  写命令寄存器
  串行化到XADC
  编程空闲间隔宽devcfg.XADCIF_CFG[IGAP]

  命令和数据的状态可以使用devcfg.XADCIF_MSTS进行监控,软件能够使用devcfg.XADCIF_INT_STS中断状态寄存器配置中断。

3.3 命令公式

  低16位包含DRP寄存器数据,XADCIF_CMD_FIFO [25:16]包含读写操作的地址位,XADCIF_CMD_FIFO [29:26]命令位包含读写或者无操作。

3.4 DRP地址和DRP数据

  UG480

3.5 读数据公式

  XADC数据返回到devcfg.XADCIF_RDFIFO的低16位;

3.6 最小最大阈值

  上电或复位后,所有最小寄存器设置为FFFFh,所有最大寄存器都设置为0000h。片上传感器每次产生的测量结果都与最大寄存器和最小寄存器的内容进行了比较。如果测量值大于其内容的最大寄存器,则将测量值写入最大寄存器。同样,对于最小寄存器,如果测量值小于其内容其最小寄存器的测量值被写入最小寄存器。每次将测量结果写入状态寄存器。

3.7 致命超温警告

  芯片上的温度测量用于临界温度警告。默认温度阈值为125℃。此阈值用于OT上层告警的内容未配置寄存器(在UG480中列出)。当模具温度超过在XADC的控制寄存器中设置阈值时,超温报警(OT)将激活。当模具温度低于设定的阈值时,信号复位。

  OT警报还可以用于在激活时自动关闭PL。OT报警不能通过向XADC配置寄存器写1禁用它。

4 PS-XADC接口编程指南

例子:通过PS-XADC接口初始化XADC

  1、 复位串行通信通道;向devcfg.XADCIF_MCTL[RESET]先写1再写0;
  2、 复位XADC;写16位指到DRP地址0x03(复位寄存器),向devcfg.XADCIF_CMDFIFO寄存器写08030000h;
  3、 刷新FIFOs;无需复位信号,只需写15个NOOPs到FIFO;
  4、等待命令FIFO为空。最后的命令应当是NOOP(空写);
  5、读取读数据FIFO直到为空;

例子:通过PS-XADC接口启动顺序

  1、 配置PS-XADC接口;向devcfg.XADCIF_CFG写入80001114h;
  使用默认的最小空间隔,[IGAP] = 14h(20个串行时钟);
  使用默认的XADC串行时钟频率, PCAP_2x 时钟频率的1/4,[TCKRATE] = 01;
  使用默认的FIFO串行读取捕获边沿(上升沿),[REDGE] = 1
  使用默认的FIFO串行写开始边沿(下降沿),[WEDGE] = 0;
  使用默认的读取数据FIFO阈值,[DFIFOTH] = 0x0;
  使用默认的命令FIFO阈值,[CFIFOTH] = 0;
  使能接入到XADC的PS,向devcfg.XADCIF_CFG [ENABLE]写1;
  2、 配置中断;参考第5小节;
  3、 传输到XADC;参考第5小节;

4.1 读写到FIFOs

  开机后的命令和读取数据fifo的PS-XADC接口都是空的,但必须在XADC接口复位后刷新。从XADC寄存器写入或读取的命令是使用FIFO命令将数据发送到XADC,并在读取数据FIFO中获取XADC返回的数据。

例子:写命令到XADC(向XADC Vccpaux警告上线阈值寄存器中写数据)

  1、 准备命令;按照命令公式向XADC Vccpaux寄存器0x5A写入阈值;
  2、 用数据填充命令FIFO;向devcfg.XADCIF_CMDFIFO寄存器填充步骤1的指令;
  3、 等待直到命令FIFO变为空;等待devcfg.XADCIF_MSTS [CFIFOE] = 1;

例子:从XADC中读取Vccpaux值

  1、 准备命令;准备向XADC Vccpaux寄存器0x5E状态寄存器的命令公式;
  2、 用数据填充命令FIFO;向devcfg.XADCIF_CMDFIFO寄存器填充步骤1的指令;
  3、 等待直到命令FIFO变为空;等待devcfg.XADCIF_MSTS [CFIFOE] = 1;
  4、 从读取数据FIFO中读取虚拟数据;读取devcfg.XADCIF_RDFIFO寄存器;
  5、 公式数据;准备无操作的命令;
  6、 写数据到命令FIFO;将上一步的数据写入到devcfg.XADCIF_CMDFIFO寄存器;
  7、 读取读数据FIFO;读取devcfg.XADCIF_RDFIFO寄存器;

4.2 中断

例子:配置和管理警告5(Vccpaux)

  1、 准备命令;向(VCCPAUX Upper-0x5A and VCCPAUX Lower-0x5E) 寄存器设置要求的阈值;设置XADC Config_Reg1 (0x41)使 XADC工作在独立模式;
  2、 准备写入命令FIFO的命令;向devcfg.XADCIF_CMDFIFO寄存器写入步骤1的命令;
  3、 使能PS-XADC接口警告5中断;devcfg.XADCIF_INT_MASK[M_ALM] =7Eh;
  4、 检查是否警告5被触发;测验devcfg.XADCIF_INT_STS [M_ALM] = 1;
  5、 清除警告5中断;devcfg.XADCIF_INT_STS [M_ALM] = 1;
  6、 不使能警告0中断;devcfg.XADCIF_INT_MASK [M_ALM] = 7Fh;

4.3 命令操作

例子:准备写入XADC寄存器的数据(设置XADC工作在独立模式)

  1、 DRP数据;8000h;
  2、 DRP地址;0x41;
  3、 写命令;0010b

例子:准备从XADC寄存器读取的数据(读取VCCPAUX状态寄存器0x0E数据)

  1、 DRP数据;0000h;
  2、 DRP地址;0x0E;
  3、 写命令;0001b

4.4 寄存器概述

5 用于DRP接口的编程指南

6 用于PL-JTAG接口的编程指南

7 系统功能

7.1 时钟

PS-XADC接口时钟
  1、 PS-XADC接口使用FIFOs连接PS系统时钟和XADCIF时钟;
  2、 PS系统接口时钟是CPU_1x时钟;
  3、 XADCIF时钟频率是PCAP_2x时钟/[TCLKRATE];
    a. XADCIF时钟最大频率为50 MHz;
    b. PCAP_2x时钟频率名义上是200 MHz;
    c. [TCLKRATE]位:除2、4(默认)、8或16;

DRP接口时钟

  使用来自PL的PLLs

PL-JTAG接口时钟

  使用JTAG时钟的TCK

7.2 复位

PS-XADC接口复位

  devcfg.XADCIF_MCTL [RESET]

XADC复位

  写0x08030000到devcfg.XADCIF_CMDFIFO寄存器

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/509938
推荐阅读
相关标签
  

闽ICP备14008679号