请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:DAC12DL3200 主题中讨论的其他器件: LMK04832
工具与软件:
您好!
我们正在研究 DAC12DL3200 数模转换器(DAC)、其 LVDS 接口可通过 双通道4 LVDS 总线运行。
DAC 参数:
1.采样率 :3200 MSPS
2.采样时钟 :3200 MHz
3.频率范围 : 0 -750 MHz
4. LMODE :双通道、4总线模式。
5. LWIDTH :12位样本宽度
请注意、
1.我们有 双路 ADC/DAC 同相采样和正交分量、每路工作速度是3200MSPS。
2. 3200MHz 的采样时钟 由 LMK04832生成。
3.每个转换器使用两条总线、因此总共 使用四条 LVDS 总线。
4.在 DAC 中禁用双时钟模式。
5.数据 由 Xilinx 高速选择 IO 向导(HSSIO)以1600Mbps 的接口速度和 DDR 时钟发送。
寄存器映射的字段 初始化和运行 IO 测试 关系如下:
3.置位复位
0x0000B0
4.置为无效复位–保险丝 ROM 加载将自动开始
0x000030
5.程序部分配置(CH_CFG、DCM_EN、MXMODE_*等)
0x010151:已配置 CH_CFG
0x004800:已配置 DCM_EN
0x016000:已配置 MXMODE
0x017180:为 DACA 配置电流控制
0x017280:为 DACB 配置电流控制
6.等待保险丝 ROM 加载完成(FUSE_DONE =1)
0x890000:我们得到了所需的输出0x03、
将 LVDS 信号(和 SYSREF、如果使用)应用于输入。 如果需要、可以在先前的任何时间点执行此操作、
但必须在这里保持稳定。
我们提供一个0xFFf 的常量数据来运行 IOtest
8.设置 DP_EN =1
0x010001: 观察到 LVDS_CLK_ALM 在此处设置(0xFF)、这表示什么?
9.清除 LVDS_CLK_ALM 和 STROBE_ALM
0x0821ff: 观察到 LVDS_CLK_ALM 仅为高电平(0xFF)、为什么会发生这种情况、为什么不清除它?
我们的 LVDS_CLK 来自 FPGA、在示波器中观察时发现它是正确的。
10.同步系统
a.如果使用 LVDS 选通信号进行对齐:
i.设置 LVDS_STROBE_ALIGN = 1
i.等待 LVDS_STROBE_DET = 1
b.如果使用 SYSREF 进行对齐:
i.请参阅 SYSREF 窗口化以启用和对齐同步 SYSREF 采集。
二、设置 SYSREF_ALIGN_EN =1
ii.等待 SYSREF_DET = 1
IV。设置 SYSREF_ALIGN_EN =0
已跳过同步
11、配置 FIFO_DLY (这可能会尽早完成、但应在此处完成)
0x020000
11.在 IOTEST_PAT 和 IOTEST_CONT 中配置 IOTEST 数据模式。
0x071100
0x071001
0x0720ff
0x07210f
0x0722ff
0x07230f
0x0724ff
0x07250f
0x0726ff
0x07270f
0x0728ff
0x07290f
0x072Aff
0x072B0f
0x072Cff
0x072D0f
0x072Eff
0x072F0f
12.设置 IOTEST_STRB_LOCK=1 (如果需要)。
没有设置、因为我们不使用选通
13.如果使用 LSB 选通并且模式在数据操作中测试 LSB、则设置 LSB_SYNC=0和 SYNC_n=1。
已跳过
14。设置 IOTEST_EN=1
0x0710F1
0x0000B0
4.置为无效复位–保险丝 ROM 加载将自动开始
0x000030
5.程序部分配置(CH_CFG、DCM_EN、MXMODE_*等)
0x010151:已配置 CH_CFG
0x004800:已配置 DCM_EN
0x016000:已配置 MXMODE
0x017180:为 DACA 配置电流控制
0x017280:为 DACB 配置电流控制
6.等待保险丝 ROM 加载完成(FUSE_DONE =1)
0x890000:我们得到了所需的输出0x03、
将 LVDS 信号(和 SYSREF、如果使用)应用于输入。 如果需要、可以在先前的任何时间点执行此操作、
但必须在这里保持稳定。
我们提供一个0xFFf 的常量数据来运行 IOtest
8.设置 DP_EN =1
0x010001: 观察到 LVDS_CLK_ALM 在此处设置(0xFF)、这表示什么?
9.清除 LVDS_CLK_ALM 和 STROBE_ALM
0x0821ff: 观察到 LVDS_CLK_ALM 仅为高电平(0xFF)、为什么会发生这种情况、为什么不清除它?
我们的 LVDS_CLK 来自 FPGA、在示波器中观察时发现它是正确的。
10.同步系统
a.如果使用 LVDS 选通信号进行对齐:
i.设置 LVDS_STROBE_ALIGN = 1
i.等待 LVDS_STROBE_DET = 1
b.如果使用 SYSREF 进行对齐:
i.请参阅 SYSREF 窗口化以启用和对齐同步 SYSREF 采集。
二、设置 SYSREF_ALIGN_EN =1
ii.等待 SYSREF_DET = 1
IV。设置 SYSREF_ALIGN_EN =0
已跳过同步
11、配置 FIFO_DLY (这可能会尽早完成、但应在此处完成)
0x020000
11.在 IOTEST_PAT 和 IOTEST_CONT 中配置 IOTEST 数据模式。
0x071100
0x071001
0x0720ff
0x07210f
0x0722ff
0x07230f
0x0724ff
0x07250f
0x0726ff
0x07270f
0x0728ff
0x07290f
0x072Aff
0x072B0f
0x072Cff
0x072D0f
0x072Eff
0x072F0f
12.设置 IOTEST_STRB_LOCK=1 (如果需要)。
没有设置、因为我们不使用选通
13.如果使用 LSB 选通并且模式在数据操作中测试 LSB、则设置 LSB_SYNC=0和 SYNC_n=1。
已跳过
14。设置 IOTEST_EN=1
0x0710F1
15.启用使用 txenable 或 TXEN_A/B 的传输
0x022003
16.使用 IOTEST_TRIG 开始测试。
0x071101
17.如果 IOTEST_CONT = 0、则监控 IOTEST_RUN、直到测试停止、然后检查结果。 If
IOTEST_CONT = 1、使用寄存器中的 IOTEST_SUM 或 IOTEST_MISS*字段监控故障
IOTEST_STAT0 - IOTEST_STAT3。
IOTEST_CONT 设置为1 、表示 IOTEST 将一直运行、直到手动停止、但选中时我们 找到 IOTEST_run
为0 、这表示什么、它是否事先未运行或停止?
IOTEST_SUM 和 IOTEST_MISS 被观察为零。
IOTEST_STAT0和 IOTEST_STAT3被观察为零。
IOTEST_CAP 寄存器提供的数据与从 FPGA 发送的数据不同。
我应该从 IO 测试得出什么结论?为什么即使在清除后也要设置时钟警报? 为什么即使在观察时钟后也要设置时钟警报
示波器?
此外、当配置为 SPIDAC 时、将一个 恒定的采样值馈送到 DAC、我们会在 p 和 n 引脚上观察到相同的电压、这是为什么?