Xilinx 7系列 FPGA硬件知识系列(三)—— Bank划分及引脚定义
用户Bank
BANK 0(配置BANK)
BANK 14(HR BANK)
BANK 116/117/118(GTX BANK)
7系列的FPGA开始才有HP BANK和HR BANK,UltraScale FPGA有HP BANK、HR BANK和HD BANK,但并不是一个FPGA中会同时包含HP/HR/HDBANK。
HP:High Performance,应用于高速场景,比如DDR或其他高速差分线(不是GTX)
HR:High Range,应用于宽范围I/0,最高能够支持到3.3V的电压。
HD:High Density,应用于低速I/O的场景,最高速率限制在250M以内,最高电压也是支持到3.3V.
用户Bank
FPGA的器件管脚按照Bank进行划分,每个Bank独立供电,以使FPGA I/O适应不同电压标准,增强I/O设计的灵活性。每个用户Bank包括50个I/O管脚或者24对差分对管脚(48个差分信号),顶端和底端各一个单端管脚。
在上图中,我们可以看到红色圈住的两个单端信号,绿色线条圈住的_CC时钟管脚不用作时钟输入时可以作为用户I/O来使用,另外,还可以看到蓝色标记的VREF管脚,当该BANK I/O用作DDR内存接口时,需要提供伪差分所需的阈值电压,此时_VREF_管脚需要接DDR外设要求的参考电压。
Notes: 所谓伪差分电平,就是信号在接收端是一个差分的接收器,但其中一端固定接参考电压,而另一端接单端信号线。输入信号电压与参考电压之间进行比较,作为判断输入信号高低的标准。
BANK 0(配置BANK)
电源
① VCCO_0:代表BANK 0中所有IO所遵循的电平标准,可连接3V3/2V5/1V8/1V5等电压。
当VCCO_0=3V3或2V5时,CFGBVS也必须和VCCO_0保持一致;当VCCO_0=1V8或1V5时,CFGBVS需要接GND,CFGBVS一般不需要上下拉电阻,直连就可以。
Virtex-7 FPGA比较特殊,非HT(Virtex-7 HT)器件的BANK0和其他S/A/K系列相同,而BANK 14/15是HP BANK,仅支持1V8以下电平;Virtex-7 HT器件无CFGBVS引脚,仅支持1V8电平。
实际应用中,分两种情况:
主SPI:该模式下,FPGA通过CCLK_0输出时钟给FLASH,考虑到当前SPI FLASH以3V3电源为主,BANK 0建议也接3V3,这样能省去电平适配带来的麻烦;
主BPI:该模式下,BPI FLASH和BANK 0之间没有连接关系,只要能找到1V8/1V5供电的BPI FLASH,理论上BANK 0可以连接1V5/1V8/2V5/3V3等电压;
不管是主SPI还是主BPI,都会涉及到BANK14/15,此时BANK14/15的电源需要和BANK 0保持一致,这一点需要注意。
② VCCBATT_0
该引脚和配置文件加密功能有关,用到该功能时,该引脚需要接外部电池,防止器件掉电后加密功能也失效,DS182中规定电压范围为1V0~1V89,并没有明确规定是1.8V、1.5V还是1.2V;但是用不到加密功能时,Xilinx建议接入VCCAUX(1V8)或GND。结合来看,电池电压也应和VCCAUX保持一致,即1V8。Spartan-7的7S6/7S15不支持加密功能,该引脚需要接VCCAUX或GND。
③ XADC
XADC是Xilinx公司的FPGA里集成的ADC模块、温度传感器、电压传感器的集合。XADC包含2个通道的12位模拟差分输入AD转换器(确保10位可靠精度)、每个通道的采样率都为1MSPS,分别为ADC_A和ADC_B。XADC 可测量多达17 个外部模拟通道的输入信号,同时还能对芯片的温度和供电电压进行监测和报警。它是自动循环扫描所有的模拟输入通道,大大地减轻了主芯片的负担。其功能模块如下图所示:
l 内含两个12 位、每秒1 兆采样(1MSPS)的AD 转换器ADC_A 和ADC_B。
l XADC 含片上温度传感器,可测试和监控芯片的温度,实现超温报警(OT)。默认的超温报警温度是125°C,用户可以在发生过热报警时及时切断芯片供电以避免损失。用户还可以设定自己定义芯片工作温度范围,当芯片温度超出用户设定的界限时予以报警。
l XADC 内含6 个芯片供电电压传感器,可对芯片供电电源监测和报警。(PL 是FPGA 逻辑电路,PS 是CPU 系统)被监测的电源电压如下:
l VCCINT: PL 内核电压(1.0V)
l VCCAU: PL 辅助电压(1.8V)
l VCCBRAM: PL BRAM 电压(1.0V)
l VCCPINT: PS 内核电压(1.0V)
l VCCPAUX: PS 辅助电压(1.8V)
l VCCO_DDR: DDR RAM 电压(1.5V)
用户可以为这些电压设定上、下限,当电压超出用户设定的界限时报警。
XADC 有一路专用的差分模拟输入通道Vp/Vn,如果不使用Vp/Vn 时,应该将Vp/Vn 连接到GNDADC引脚。
XADC 另有16 路辅助模拟输入通道。这些输入通道与Vp/Vn 不同之处是,他们的引脚是模拟/数字复用引脚。如果其中某个引脚被用做模拟输入,该引脚的数字I/O 功能就不可再用。如果辅助模拟输入通道所在的BANK 中混合有模拟和数字I/O,该I/O BANK 必须由满足所用数字I/O标准所需的电压供电。
辅助模拟输入通道既可以设置成单极性输入,也可以设置成双极性输入。但所有片上传感器(温度和电压)都采用单极性工作模式。
XADC 可对ADC 转换结果自动计算和输出平均值,以抑制信号和PCB 板上的噪音。用户可从无平均值计算、16 个样本平均,64 个样本平均或256 个样本平均等四个选项中选取。
XADC 允许延长采样充电时间,将采样充电时间从4 个ADCCLK 延长至10 个ADCCLK。当信号源内阻或模拟通道多路器内阻过大影响采样电容获得的信号精度时,加长采样时间可以提高精度。
XADC 内部含有1.25V 的参考电压源。将VREF_P0 接模拟地GNDADC 就能启用片上参考电压。如果希望得到更高的精度,可以将VREF_P0 连接外部精密电压参考IC。
XADC 可基于已知的参考电压源对传感器、ADC A 和ADC B 的偏移和增益偏差进行校准计算,得到的校准系数存储在XADC 的只读状态寄存器中。随后可以利用这些系数对ADC 转换结果进行补偿。
XADC 有128 个16 位寄存器(见图1-1),其中前64 个(DADDR[6:0]=00h~3Fh)为只读寄存器。用来存放片上传感器、专用模拟通道和辅助模拟通道的当前模数转换结果,同时存储芯片自本次上电以来测量到的最高和最低电压值,分别用ADC A 和ADC B 测量的电源传感器偏差、以及ADC A 和ADC B 的自身偏移和增益的校准系数。最后一个地址(3Fh)Flag 寄存器存储当前报警状态。
地址40h 至7Fh 是可读/写寄存器。其中前3 个是XADC 配置和控制寄存器、接着的8 个是辅助模拟通道选择寄存器、再后面是16 个报警阈值预设寄存器。用户通过配置这些寄存器来控制XADC 的行为。剩下的其他寄存器用于工厂测试或未定义,用户不必关注。
为了减轻PS 处理器或FPGA 中其他控制系统的负担,XADC 提供了一个叫作Sequencer 的模拟通道自动扫描器。Sequencer 按预定的顺序自动地逐个接通用户选择的模拟输入通道,执行ADC转换并把结果存进XADC 的只读状态寄存器。
FPGA 或Synq7000 中的PL 逻辑可以通过16 位宽的动态重配置接口(DRP)访问XADC 的状态和控制寄存器,通过JTAG 口也可以访问这些寄存器。但Zynq7000 的PS 是通过AXI4-Lite 或AXI4 Stream 接口访问XADC 寄存器的。在Vivado 开发环境中用户不需要关心PS 和XADC 互联的细节,只需在运行XADC Wizard 时选择AXI4-Lite 或AXI4 Stream 就可以了,系统将自动建立两者的互连关系。
Ø XADC 的引脚
所有XADC 的专用引脚都在BANK0 中,引脚名都以_0 后缀。UG480 图1-2 展示了XADC 的2 种基本连接方法。XADC 由VCCAUX(1.8V)供电,VCCAUX 上的低通滤波器用来滤除高频干扰以提高ADC 性能。
图中左边的电路采用外部1.25V 精密参考IC 做参考电压,外部参考能提供更好的精度和热漂移性能。铁氧体磁珠用于隔离GNDADC 和系统地GND。UG480 图1-2 右边电路采用片上自带的参考电压源。将VREFP 引脚接到GNDADC 引脚就能激活片上参考源。如果只需进行基本的片上温度和电源监测,片上参考已能提供良好性能。100 nF 退耦电容器应尽可能靠近芯片的BGA 引脚,以减小寄生电感。
VCCADC_0:XADC 中ADC 和其他模拟电路的模拟电源引脚,电压和VCCAUX保持一致,建议单独供电或通过滤波电路(电感等)连到VCCAUX上,不使用时也需要接VCCAUX;
GNDADC_0:XADC的模拟接地引脚,应该通过磁珠连接到系统GND。在一个混合信号系统中,如果可能的话,此引脚应该连到在一个模拟的接地平面上,在这种情况下就可以不需要铁氧体磁珠。即使XADC 不用,也应始终将此引脚连接到GND。
VP_0/VN_0:XADC专用差分输入引脚(专用是对比其他XADC模拟输入来说,该引脚不能用作普通IO,其他的都可以),不使用时接GND;
VREFP_0:电压基准,此引脚可连接到外部1.25V 精确参考IC(±0.2%或12 位的±9 LSB),以获得ADC 的最佳性能。应将其视为模拟信号,与VREFN 信号一起提供1.25V 差分电压。如果将此引脚连接到GNDADC,芯片内参考源(12 位时为±1%或±41 LSB)被激活。如果没有提供外部引用,这个引脚应该应始终连接到GNDADC。
VREFN_0:电压基准GND,该引脚应与外部1.25V 精确参考IC(±0.2%)的地引脚相连,以获得最佳的ADC 性能。应将其视为模拟信号,与VREFP 信号一起提供差分1.25V 电压。即使没有提供外部参考,此引脚也应始终连接到GNDADC。
AD0P_ toAD15P:辅助模拟输入/数字IO,这些是多功能引脚,可以支持16 个模拟的正输入端,也可以用作常规数字I/O(见图1-1)。当不被用作模拟输入时,这些引脚可以像其他任何数字I/O 一样使用。
AD0N_ toAD15N:辅助模拟输入/数字IO,这些是多功能引脚,可以支持16 个模拟的负输入端,也可以用作常规数字I/O(见图1-1)。当不被用作模拟输入时,这些管脚可以像其他任何数字I/O 一样使用。
DXP_0/DXN_0:DXP、DXN 为内部热敏二极管温度传感器引脚,在BANK0热二极管被允许接入使用DXP和DXN引脚,结合外部温度监控电路可实现对FPGA芯片结温的监控,不用时接系统GND。在设计该部分电路时,可以使用MAX6642替代热敏二极管。大多数热敏二极管温度传感器,包括MAX1617和MAX6654,与二极管都有两个连接点:DXP和DXN。DXP连接至热敏二极管的阳极,源出二极管偏置电流。DXN吸入偏置电流,并将阴极偏置在0.7V左右。
从上图可以看出,FPGA上电后,XADC可以监测FPGA内的温度以及所有的FPGA电压,还可以接收来自FPGA专用模拟差分管脚VP_0/VN_0的模拟差分信号(不可以作为普通User I/O),也可以接收FPGA其他普通数字/模拟混合管脚VAUXP/VAUXN[15:0]的16路模拟差分输入(不使用的时候可以作为普通的User I/O),因此XADC可以最多处理17路外部模拟信号。
XADC的输出通过JTAG口可以直接被FPGA开发工具读取并用Vivado开发工具实时在线监测,也可以由用户调用XADC硬核,并用代码在FPGA里实现实时获取信息。另外,如果咱们觉得用代码实现有困难,那还可以借助Xilinx CORE Generator生成XADC的IP核,只要配置好之后加载到FPGA逻辑代码里也可以工作,自己写代码和调动IP核这两种方式都可以方便的供用户自己读取FPGA的温度、电压以及外部输入的模拟信号等信息。
XADC的端口如下图所示,其每个端口的具体含义请参考UG480的P19~P20。
专用模拟输入VP/VN
专用模拟输入VP/VN 采用差分采样方案,以减少共模噪声信号的影响。PCB 的公共地阻抗将数字电路的开关电流噪音耦合到模拟系统,其幅度可达100 毫伏或更高。这对于ADC 来说相当于数百个LSB,因此会导致很大的测量误差。差分采样方案在两个输入端(VP/VN)对含共模噪声的信号进行采样。ADC 的前置放大器的高共模抑制比有效地抑制了共模噪声信号,送到ADC 输入口的只剩下VP 和VN 之间的差模信号。所以用户如果要获得高共模抑制比,应采用专用模拟输入通道VP/VN。
UG480 图2-4 共模噪音抑制
辅助模拟输入通道
辅助模拟输入(VAUXP[15:0]和VAUXN[15:0])是与常规数字I/O 引脚共享的模拟输入引脚。
辅助模拟输入通道引脚的IOSTANDARD 必须与所在BANK 的数字I/O 标准所要求的电压兼容(在XDC 约束文件中声明),其输入的模拟信号幅度不应超过数字I/O BANK 的电源电压。只有被启用为辅助模拟输入的引脚才具有模拟输入属性,其他引脚仍然保留数字I/O 属性。
UG480 图2-5 是辅助模拟输入通道单极性和双极性输入模式的等效电路。
单极性输入时只有一个采样电容,双极性输入时有2 个采样电容。在ADC 采集阶段,采样开关闭合,采样电容充电至模拟输入信号源的电压,然后采样开关切换连接ADC。
采样电容器充电至最终值(达到输入信号值±0.5 LSBs)所需的时间取决于采样电容器的大小、模拟多路开关的电阻和外部信号源阻抗。
UG480 图2-5 模拟输入的等效输入电路
根据测算,专用模拟通道(VP/VN)所需最小采样时间为3ns,而辅助模拟通道(VAUXP[15:0]和VAUXN[15:0])因为有一个大约10K的开关电阻,最小采样时间是300ns。任何额外的外部电阻(如去假频滤波器或电阻分压器)都会增加采集时间要求。
单极性输入要求
测量单极性模拟输入信号时,ADC 必须设置成单极性输入模式。通过写入配置寄存器0 来选择此模式。单极性输入时,以专用模拟输入(VP/VN)为例,信号必须满足以下要求:
VP 和VN 必须始终高于GNDADC
VP 必须始终高于VN
VP 和VN 之间最大幅度差是1.0V(ADC 的满标电压)
VN 上的共模信号可以在0 V到+0.5 V之间变化(相对于GNDADC 测量),所以VP 上的最大信号不得高于+1.5 V。
VN 通常连接到本地接地或共模信号上
UG480 图2-6 说明了这种关系:
UG480 图2-6 单极性输入信号要求
双极性输入要求
双极性输入信号具有以下属性:
VP 和VN 相对关系不总是VP>VN,两者的关系是交替变化的。VP 可能高于VN,但VP 也可能低于VN,但VP 和VN 都必须高于地电平。例如平衡电桥的输出信号就具有这种属性,但2 个输出端上有一个高于公共地的共模电压。
VP 和VN 是一个相对于GNDADC 的交流电压。这种情况就必须设法引入一个共模电压,将VP 和VN都拉到GNDADC 电平以上。在上述第一种情况,因为XADC 的满标电压是1.0V,共模电压不应超过0.5 V。以平衡电桥为例,电桥的2 个输出上的共模电压应该是0.5V,如下图所示。将平衡电桥的一个输出连接到VN,VP 在VN 的上下摆动,其幅值