FMC 4通道高速 AD 模块 FL9627 用户手册
Rev 1.0
版权与联系信息
版权所有 © 2012-2018 芯驿电子科技(上海)有限公司
公司网址: http://www.alinx.com.cn
技术论坛: http://www.heijin.org
官方旗舰店: http://alinx.jd.com
邮箱: avic@alinx.com.cn
电话: 021-67676997
传真: 021-37737073
ALINX 微信公众号: [ALINX WeChat Official Account]
文档修订记录
版本 | 时间 | 描述 |
---|---|---|
1.0 | 2018/8/20 | First Release |
第一部分 FMC 高速 AD 模块说明介绍
黑金 FMC 高速 AD 模块 FL9627 是一款4路125MSPS,12位分辨率的模拟信号转换数字信号模块。该模块的 AD 转换器采用了2片 ADI 公司的 AD9627 芯片,每片 AD9627 芯片支持2路 AD 输入转换,因此2片 AD9627 芯片共支持4路的 AD 输入转换。模拟信号输入的电压范围为 -5V 至 +5V,接口为 SMA 插座。模块具有一个标准的 LPC 的 FMC 接口,用于连接 FPGA 开发板。FMC 连接器型号为 ASP 134604 01。
FL9627 模块实物照片描述: 模块为一块黑色 PCB 板,板上安装有4个 SMA 连接器(用于模拟信号输入),一个 FMC 连接器(用于连接 FPGA 开发板),以及 AD9627 芯片、AD8055 运放、AD8138 差分转换器等电子元件。板上印有 "ALINX" 和 "FL9627" 字样。 FL9627 高速 AD 模块尺寸结构图描述: 该图展示了模块的物理尺寸和布局。模块的尺寸约为 76 mm (长) x 63 mm (宽)。图中清晰标示了 FMC 连接器、SMA 连接器以及板上主要芯片的相对位置。1.1 FL9627 模块的参数说明
1.2 FL9627 模块的结构图
第二部分 模块功能说明
2.1 FL9627 模块原理框图
FL9627 模块原理设计框图描述: 框图展示了模块内部信号流。FMC LPC 连接器接收时钟和 SPI 信号。125M 时钟通过 IBUFDS 转换为差分信号。AD9627 芯片(双通道 AD 芯片)接收差分时钟和 LVDS 数据。AD9627 芯片的输出数据通过 AD8138 差分转换器转换为差分信号,再经过 AD8055 运放处理后,通过 SMA 接口输出。框图显示了 AD1 和 AD2 输入通道的信号路径,包括单端转差分、运放、AD 芯片、LVDS 输出等环节。
关于 AD9627 的电路具体参考设计,请参考 AD9267 的芯片手册。
2.2 运放电路
板上通过 300MHz 带宽的 AD8055 芯片和分压电阻将 -5V~+5V 的输入电压缩小成 -1V~+1V。如果用户需要输入更宽范围的电压,只需修改前端的分压电阻的阻值。
运放电路示意图描述: 该图展示了一个输入电压范围为 -5V~+5V 的电路,通过一个分压电阻网络(包括 R32, R34)和一个运放(AD8055)将输入电压 V_IN 转换为输出电压 V_OUT,输出范围为 -1V~+1V。转换公式为 V_OUT = (1/5.02) * V_IN。
下表为模拟输入信号和 AD8055 运放输出后的电压对照表:
AD 模拟输入值 | AD8055 运放输出 |
---|---|
-5V | -1V |
0V | 0V |
+5V | +1V |
2.3 单端转差分及 AD 转换
-1V~+1V 的输入电压通过 AD8138 芯片转换成差分信号 (VIN+ – VIN−)。差分信号的共模电平由 AD 的 CML 管脚决定。
AD8138 差分输出电路示意图描述: 该图展示了 AD8138 芯片如何将单端输入信号转换为差分输出信号。输入信号范围为 -1V~+1V,通过 AD8138 芯片输出差分信号 VIN+ 和 VIN-。图中还包含了相关的电阻和电容元件。
下表为模拟输入信号到 AD8138 差分输出后的电压对照表:
AD 模拟输入值 | AD8055 运放输出 | AD8138 差分输出 (VIN+ – VIN−) |
---|---|---|
-5V | -1V | +1V |
0V | 0V | 0V |
+5V | +1V | -1V |
如果 AD 配置成 Offset Binary Output Mode,AD 转换的值如下图所示:
输出数据格式表描述: 表格展示了输入电压与数字输出之间的关系,特别是 Offset Binary Output Mode 下的输出格式。当输入电压为 -5V 时,AD9627 转换的数字值最大;当输入电压为 +5V 时,AD9627 转换的数字值最小。
Input (V) | Condition (V) | Offset Binary Output Mode |
---|---|---|
VIN+ - VIN- | < -VREF - 0.5 LSB | 0000 0000 0000 |
VIN+ - VIN- | = -VREF | 0000 0000 0000 |
VIN+ - VIN- | = 0 | 1000 0000 0000 |
VIN+ - VIN- | = +VREF - 1.0 LSB | 1111 1111 1111 |
VIN+ - VIN- | > +VREF - 0.5 LSB | 1111 1111 1111 |
在模块电路设计中,AD9627 的 VREF 的值为 1V,这样最终的模拟信号输入和 AD 转换的数据如下:
AD 模拟输入值 | AD8055 运放 输出 | AD8138 差分输出 (VIN+ – VIN−) | AD9627 数字输出 |
---|---|---|---|
-5V | -1V | +1V | 111111111111 |
0V | 0V | 0V | 100000000000 |
+5V | +1V | -1V | 000000000000 |
从表中可以可以看出,-5V 输入的时候,AD9627 转换的数字值最大,+5V 输入的时候,AD9627 转换的数字值反而最小。
2.4 FL9627 数字输出时序
AD9627 双通道 AD 的数字输出配置成了 +1.8V 的 LVDS 输出模式。2路通道 (A 和 B) 共用一对差分时钟信号和 12 对差分数据信号。数据输出的顺序为交替输出,一路 AD 在时钟的上升沿输出,另外一路 AD 数据在时钟的下降沿输出。
LVDS 数据和时钟输出时序图描述: 该图展示了 LVDS 模式下的数据和快速检测输出时序。图示了 CLK+ / CLK- 时钟信号与 CH A/CH B DATA 信号之间的关系,以及 DCO+ / DCO- 信号。它说明了数据如何在时钟的上升沿和下降沿被输出。
2.5 FL9627 LVDS 标准
从 AD9627 的芯片手册里可以看到,AD9627 输出的 +1.8V LVDS 的电平标准如下:
Parameter | Temperature | Min | Typ | Max | Unit | |
---|---|---|---|---|---|---|
Differential Output Voltage (VOD), ANSI Mode | Full | 250 | 350 | 450 | mV | |
Output Offset Voltage (Vos), ANSI Mode | Full | 1.15 | 1.25 | 1.35 | V | |
Differential Output Voltage (VOD), Reduced Swing Mode | Full | 150 | 200 | 280 | mV | |
Output Offset Voltage (Vos), Reduced Swing Mode | Full | 1.15 | 1.25 | 1.35 | V |
而 FPGA 芯片的 +2.5V LVDS 输入的电平标准如下:
Symbol | DC Parameter | Conditions | Min | Typ | Max | Units |
---|---|---|---|---|---|---|
Vcco | Supply Voltage | 2.375 | 2.500 | 2.625 | V | |
VIDIFF | Differential Input Voltage: | (Q+ - Q-), Q = High | 100 | 350 | 600 | mV |
(Q+ - Q-), Q = High | ||||||
VICM | Input Common-Mode Voltage | 0.300 | 1.200 | 1.500 | V |
说明 AD9627 输出的差分信号完全满足 FPGA 的 +2.5V 的 LVDS 输入电平标准。
2.6 模块 FMC LPC 的引脚分配
下面列出了电源和 AD 芯片接口的信号,GND 的信号未列出,具体用户可以参考原理图。
Pin Number | Signal Name | Description |
---|---|---|
C35 | +12V | 12V 电源输入 |
C37 | +12V | 12V 电源输入 |
D32 | +3.3V | 3.3V 电源输入 |
C34 | GA0 | EEPROM 地址位0位 |
D35 | GA1 | EEPROM 地址位1位 |
D8 | CLK1_125M | AD1 芯片的 125M 参考时钟输入 |
G6 | AD1_DCO+ | AD1 通道 A 和通道 B LVDS 的数据时钟输出-P |
G7 | AD1_DCO- | AD1 通道 A 和通道 B LVDS 的数据时钟输出-N |
H7 | AD1_DO+ | AD1 通道 A 和通道 B LVDS 的数据0输出-P |
H8 | AD1_DO- | AD1 通道 A 和通道 B LVDS 的数据0输出-N |
C10 | AD1_D1+ | AD1 通道 A 和通道 B LVDS 的数据1输出-P |
C11 | AD1_D1- | AD1 通道 A 和通道 B LVDS 的数据1输出-N |
D11 | AD1_D2+ | AD1 通道 A 和通道 B LVDS 的数据2输出-P |
D12 | AD1_D2- | AD1 通道 A 和通道 B LVDS 的数据2输出-N |
H10 | AD1_D3+ | AD1 通道 A 和通道 B LVDS 的数据3输出-P |
H11 | AD1_D3- | AD1 通道 A 和通道 B LVDS 的数据3输出-N |
C14 | AD1_D4+ | AD1 通道 A 和通道 B LVDS 的数据4输出-P |
C15 | AD1_D4- | AD1 通道 A 和通道 B LVDS 的数据4输出-N |
G12 | AD1_D5+ | AD1 通道 A 和通道 B LVDS 的数据5输出-P |
G13 | AD1_D5- | AD1 通道 A 和通道 B LVDS 的数据5输出-N |
H13 | AD1_D6+ | AD1 通道 A 和通道 B LVDS 的数据6输出-P |
H14 | AD1_D6- | AD1 通道 A 和通道 B LVDS 的数据6输出-N |
D14 | AD1_D7+ | AD1 通道 A 和通道 B LVDS 的数据7输出-P |
D15 | AD1_D7- | AD1 通道 A 和通道 B LVDS 的数据7输出-N |
G15 | AD1_D8+ | AD1 通道 A 和通道 B LVDS 的数据8输出-P |
G16 | AD1_D8- | AD1 通道 A 和通道 B LVDS 的数据8输出-N |
H16 | AD1_D9+ | AD1 通道 A 和通道 B LVDS 的数据9输出-P |
H17 | AD1_D9- | AD1 通道 A 和通道 B LVDS 的数据9输出-N |
D17 | AD1_D10+ | AD1 通道 A 和通道 B LVDS 的数据10输出-P |
D18 | AD1_D10- | AD1 通道 A 和通道 B LVDS 的数据10输出-N |
C18 | AD1_D11+ | AD1 通道 A 和通道 B LVDS 的数据11输出-P |
C19 | AD1_D11- | AD1 通道 A 和通道 B LVDS 的数据11输出-N |
G9 | AD1_SPI_CS | AD1 芯片的 SPI 通信片选信号 |
G10 | AD1_SPI_SDIO | AD1 芯片的 SPI 通信数据信号 |
D9 | AD1_SPI_SCLK | AD1 芯片的 SPI 通信时钟信号 |
G19 | AD1_SMI_SCLK | AD1 监控信号串行输出时钟信号 |
G18 | AD1_SMI_SDFS | AD1 监控信号串行输出数据帧同步信号 |
H19 | AD1_SMI_SDO | AD1 监控信号串行输出数据信号 |
D20 | CLK2_125M | AD2 芯片的 125M 参考时钟输入 |
C22 | AD2_DCO+ | AD2 通道 A 和通道 B LVDS 的数据时钟输出-P |
C23 | AD2_DCO- | AD2 通道 A 和通道 B LVDS 的数据时钟输出-N |
G21 | AD2_DO+ | AD2 通道 A 和通道 B LVDS 的数据0输出-P |
G22 | AD2_DO- | AD2 通道 A 和通道 B LVDS 的数据0输出-N |
H22 | AD2_D1+ | AD2 通道 A 和通道 B LVDS 的数据1输出-P |
H23 | AD2_D1- | AD2 通道 A 和通道 B LVDS 的数据1输出-N |
C26 | AD2_D2+ | AD2 通道 A 和通道 B LVDS 的数据2输出-P |
C27 | AD2_D2- | AD2 通道 A 和通道 B LVDS 的数据2输出-N |
G24 | AD2_D3+ | AD2 通道 A 和通道 B LVDS 的数据3输出-P |
G25 | AD2_D3- | AD2 通道 A 和通道 B LVDS 的数据3输出-N |
H25 | AD2_D4+ | AD2 通道 A 和通道 B LVDS 的数据4输出-P |
H26 | AD2_D4- | AD2 通道 A 和通道 B LVDS 的数据4输出-N |
D26 | AD2_D5+ | AD2 通道 A 和通道 B LVDS 的数据5输出-P |
D27 | AD2_D5- | AD2 通道 A 和通道 B LVDS 的数据5输出-N |
G27 | AD2_D6+ | AD2 通道 A 和通道 B LVDS 的数据6输出-P |
G28 | AD2_D6- | AD2 通道 A 和通道 B LVDS 的数据6输出-N |
H28 | AD2_D7+ | AD2 通道 A 和通道 B LVDS 的数据7输出-P |
H29 | AD2_D7- | AD2 通道 A 和通道 B LVDS 的数据7输出-N |
G30 | AD2_D8+ | AD2 通道 A 和通道 B LVDS 的数据8输出-P |
G31 | AD2_D8- | AD2 通道 A 和通道 B LVDS 的数据8输出-N |
H31 | AD2_D9+ | AD2 通道 A 和通道 B LVDS 的数据9输出-P |
H32 | AD2_D9- | AD2 通道 A 和通道 B LVDS 的数据9输出-N |
G33 | AD2_D10+ | AD2 通道 A 和通道 B LVDS 的数据10输出-P |
G34 | AD2_D10- | AD2 通道 A 和通道 B LVDS 的数据10输出-N |
H34 | AD2_D11+ | AD2 通道 A 和通道 B LVDS 的数据11输出-P |
H35 | AD2_D11- | AD2 通道 A 和通道 B LVDS 的数据11输出-N |
D21 | AD2_SPI_CS | AD2 芯片的 SPI 通信片选信号 |
D23 | AD2_SPI_SDIO | AD2 芯片的 SPI 通信数据信号 |
D24 | AD2_SPI_SCLK | AD2 芯片的 SPI 通信时钟信号 |
G37 | AD2_SMI_SCLK | AD2 芯片监控信号串行输出时钟信号 |
G36 | AD2_SMI_SDFS | AD2 芯片监控信号串行输出数据帧同步信号 |
H37 | AD2_SMI_SDO | AD2 芯片监控信号串行输出数据信号 |
H20 | AD_SYNC | 数字同步信号 |
C30 | SCL | EEPROM 的 I2C 时钟 |
C31 | SDA | EEPROM 的 I2C 数据 |
G39 | VADJ | VADJ 电源输入 |
H40 | VADJ | VADJ 电源输入 |
第三部分 AD 采样 DEMO 程序说明
提供了黑金 FPGA 开发板的 AD 采集和显示的例程。该例程使用2个 AD9627 输入的差分 LVDS 时钟信号和差分 LVDS 数据信号,通过 IBUFDS 模块分别转换成单端信号。12位的数据再通过 IDDR 模块转换成 A 通道 12 位数据和 B 通道 12 位数据。A 通道和 B 通道的 12 位数据可以通过 ILA 在线 debug 观察。
上电后,需要对 AD9267 的寄存器进行配置。这里使用 SPI 总线对每个 AD9627 芯片进行寄存器配置,使得 AD9627 工作在 LVDS 模式。
FPGA 的 AD 测试功能框图描述: 该框图展示了 FPGA 如何与 AD9627 芯片协同工作。FPGA 包含 SPI 控制器、IBUFDS 模块、IDDR 模块、ILA 调试接口和 PLL。AD9627 芯片接收时钟和数据,并通过 SPI 接口进行配置。框图清晰地显示了数据流和控制流。
1. lut_config.v
AD9627 寄存器配置表。这里只配置了2个寄存器的值:寄存器 0x14 和寄存器 0xFF。
寄存器 0x14 配置描述: 该寄存器用于配置输出模式,将其设置为 LVDS 输出格式,输出为 offset binary 模式。具体配置包括输出类型、驱动强度、输出使能等。
寄存器 0xFF 配置描述: 对寄存器 0x14 配置后,需要对 0xFF 寄存器的最低位写 1 才能生效。
具体的寄存器含义,请参考 AD9627 芯片手册。
2. spi_config.v
此模块通过调用 SPI 通信模块 (adc_spi.v) 对 AD9627 芯片进行寄存器配置。配置的寄存器地址和值定义在 lut_config.v 文件里。
3. top.v
top 模块除了实例化上面的子模块外,还实现以下几个功能:
- 调用 PLL IP 产生 AD9627 芯片所需的 125MHz 参考时钟。
- 调用 IBUFDS 原语实现 LVDS 差分时钟信号和数据信号转换成单端时钟和单端数据。
- 调用 IDDR 原语实现双沿的 A, B 通道的数据转换成单沿的 A 通道数据和 B 通道数据。
4. xdc 约束文件
xdc 约束文件里定义了两个 AD 的通信的管脚以及 ILA 调试接口。用户可以自行修改 ILA 的接口信号来观察自己想观察的信号。
第四部分 硬件连接和测试
FL9627 模块和 FPGA 开发板的硬件连接很简单,只需将 FMC 接口跟开发板的 FMC 接口对插,然后用螺丝固定即可。此处使用信号发生器产生模拟信号连接到 AD1_A 通道的 SMA 接口上。
硬件连接图描述: 该图展示了黑金 AX7325 开发板和 FL9627 模块的硬件连接方式。FMC 接口直接对插固定。
开发板上电,信号发生器产生 -5V~+5V 的正弦波,频率为 200KHz。然后在 Vivado 环境下下载程序。
Vivado 程序下载界面描述: 这是一个 Vivado 的 "Program Device" 对话框,用于选择比特流文件 (.bit) 和调试探针文件 (.ltx) 并下载到硬件设备。用户需要指定比特流文件的路径。
这里会出现 hw_ila_1 的界面。在 hw_ila_1 界面里显示第一路 AD 模块的通道 A 和通道 B 的 AD 采集数据。点击 "Run trigger mode for this ILA core" 按钮,adc1_data_a_d0 通道会显示正弦波。
Vivado 硬件管理器和波形窗口描述: 屏幕截图展示了 Vivado 的硬件管理器界面,显示了 hw_ila_1 和 hw_ila_2 探针。波形窗口显示了 adc1_data_a_d0 信号。当信号发生器输出 -5V~+5V 的方波时,点击 "Run trigger mode for this ILA core" 按钮,adc1_data_a_d0 通道会显示方波。图中显示,+5V 时 AD 采集的数据为 04e,-5V 时 AD 采集的数据为 fb3。
如果用户需要测量另外一个 AD2 的波形,需要将模拟信号输入到 AD2 的通道 A 或者通道 B 上。然后双击 hw_ila_2 就会显示 hw_ila_2 的界面。