This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] DAC3174:如何及时设置寄存器以应用单总线单时钟模式?

Guru**** 2468950 points
Other Parts Discussed in Thread: DAC3174

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1336954/dac3174-how-to-exatly-set-the-registers-for-the-application-of-single-bus-single-clock-mode

器件型号:DAC3174

您好!

我设计了一个具有8个 DAC3174 DAC 的 PCB、并且希望用简单的设置来测试我的 PCB。

我将 FPGA 设置为12位、并且有两个寄存器(例如 MEMORY_I 和 MEMORY_Q、每个都具有100x12数据)。 我可以将这些数据以循环方式流至 DAC。

我正在使用 FPGA 的 DDR (双倍数据速率)功能、它看起来像这样(来自7系列 FPGA SelectIO 资源用户指南(UG471)):

最终、这些数据会被转换(单端-> LVDS)。 我在调试卡上对其进行了测试、运行正常。

对于 DAC、这意味着我必须对 D2使用时钟上升沿(在本例中为 Q-part)、而对 D1使用下降沿(在本例中为 I-part)。
我查看了数据表、发现最适合我的选项是使用"单总线单时钟模式":



我会同时流式传输所有数据、因此还需要同时设置 SYNC 信号是否正确?

我没有找到特殊的寄存器、我必须写入这些寄存器才能激活"单总线"或"单时钟模式"。 我只找到了关于"双总线"的东西。 此模式在寄存器复位后是否开启?

首先、我按照建议使用以下内容启动电路板:

% DACCONFIG:Bit0 -> Resetb、Bit1 -> Alarm、Bit2 -> Ex_ENA、Bit3 -> Sleep

% 1. 将 TXENABLE 设置为低电平、以防止在初始化器件时出现虚假输出
ResetB = 1 & Ex_ENA = 0;% 0000 0001
% 2. 将 RESETB 引脚切换为低电平有效、脉冲持续时间至少为25ns。
ResetB = 0;% 0000 0000活动
ResetB = 1;% 0000 0001无效
% 3. 将 TXENABLE 设置为高电平
ResetB = 1 & Ex_ENA = 1;% 0000 0101


我的主要问题是同步模式。 板上没有足够的空间、因此我使用了相同的行进行同步和对齐。
SYNC 线路处于交流耦合状态并馈送到 ALGIN。 因为 ALIGN 使用 LVPECL、SYNC 使用 LVDS。 我将 SNYC 端口的内部100 Ω 电阻器用作终端。




主要问题是:此设置是否适用于正常双同步?
或者在这种情况下我是否必须使用 SYNC_ONLY?

然后、我写入以下寄存器:

% CONFIG0:(0x00)
0x00:'0x52EC'% 0101 0010 1110 1100
% CONFIG1:(0x01)
0x01:'0x600E'% 0110 0000 1110
%、带 CONFIG0:'52EC'、CONFIG1:'600E'
% 1. 正常双路同步
% 2. 单总线单时钟模式

您如何看待此设置?
非常感谢任何帮助!


  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Danny:  

    您能解释 SON_EDGE 模式的"OQ"行吗? 这是输出吗? 我认为这来自 Xilinx 的文档。  

    谢谢!

    马特

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Matt、您好!

    是的,没错! "OQ"是输出。 我将尝试解释它、尽我所能。

    7系列 FPGA 中的 ODDR 块旨在实现高速双倍数据速率输出。 这基本上是通过将两个数据输入(这里为 D1和 D2)组合到一个双倍数据速率输出(这里为 OQ)来完成的。

    我的实际目标是在 DAC3174芯片上使用两个 DAC、所以我使用这个 DDR 函数(D1是同相部分、D2是 QAM 测光的正交部分)。 在这种情况下、根据 DAC3174数据表中的表1、我将 D1 (I-part)连接到 Ch-A、D2 (Q-part)连接到 Ch-B。 DATACLK 也来自 FPGA、因此它与 DDR 块同步。 我希望,这是不知何故可以理解:)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Matt、我的回答是否澄清了您的问题? 如果可能的话,我想回答我的问题。

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Danny:

    要同步多个 DAC、您需要使用正常的双同步模式。 如果您使用相同的信号进行同步和对齐、只要您确保满足以下两个方面的设置/保持要求、就没有问题:

    1>以 DATACLK 为基准的同步

    2>相对于 DACCLK 对齐

    这也意味着 DATACLK 和 DACCLK 需要相当程度地进行相位对齐。 DATACLK 由 FPGA 生成、因此如果您在延迟补偿模式下使用 PLL/MMCM 并使用 ODDR 生成 DATACLK、则您应该能够使用 DACCLK 获得相位对齐。 为了获得最大设置/保持裕度、您可以在时钟的负边沿驱动 SYNC/ALIGN 信号。

    I/Q 数据流的 ODDR 函数没有问题。 但请注意、使用 SON_EDGE 协议时、如果您希望 I 流位于通道 A 上、而 Q 流位于通道 B 上、则您需要分别在 ODDR 的 D1和 D2输入上显示 Qn 和 IN+1。

    此致、

    艾米特

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嘿、Amet、

    非常感谢您的回复!

    您是说、我应该使用 DACCLK 进入 ODDR 来生成 DATACLK? 我不太明白、你这么说是什么意思。 您能进一步澄清一下吗?

    我应该如何准确地在负边沿上驱动 SYNC/ALIGN、如果(单总线单时钟模式)的表1中提到了这一点、那么该 SYNC 应该在 DATACLK 的上升沿发生。 您是否还能澄清您对此的陈述?

    感谢您指出、Qn 和 IN+1分别为 D1和 D2。 我计划将 I-Data 移动一个值、即 qn 和 in 分别在 D1和 D2上。

    您还能确认我的寄存器值吗? 这对于按希望操作 DAC 是否足够? 我只分配2个寄存器、如上问题所述。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、

    我仍然想回答我的问题。

    非常感谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Danny:

    我一直在尝试进一步了解寄存器设置、因为我以前不支持这部分。 我觉得寄存器写入值看起来很准确。 如果发现任何差异、我将会恢复。

    对于使用 ODDR 生成 DATACLK、这意味着 DACCLK 将作为 ODDR 的时钟输入、其 D1和 D2输入分别连接到"1"和"0"。 这将确保 DATACLK 与 DA 和 DB 信号之间存在严格的时序关系。

    同步在 DATACLK 上升沿进行采样、因此在使用 FPGA 时将其与负边沿对齐、可以为您提供最大的设置/保持裕度。

    请告诉我这是否解决了您的问题。

    此致、

    艾米特

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Amet:

    我按照您的建议尝试了这种设置、但在 I/Q 的输出端根本找不到任何信号。 我测量的只是50mV、但完全没有信号、它几乎为零、所以有些东西不能正常工作。

    我检查了所有电压和数据线、DACCLK 和 DATACLK、所有这些都没有问题。

    我还转动了4线制界面并读取 CONFIG0、这就像我第一次在 SDO 线路上写入它一样。 所以我至少知道 DAC 芯片正在工作且正在响应、没有任何短路。 TXENABLE 和 RESETB 为高电平、SLEEP 为低电平。

    我在这里缺少什么吗? 我将正对着第一行数据切换到高电平、因此它应该运转正常。

    仅用于测试:我生成了[-1、1]个数据作为正弦/余弦波、然后将它们映射到[04095]、以进行12位输出。 这些数据转换为二进制数并馈入每个数据线、因此我应在 I/Q 输出端测量正弦/余弦波。

    你知道我能做些什么吗? 可能我缺少一些寄存器? 以下是我以前编写的代码:

    % CONFIG0:(0x00)
    0x00:'0x52EC'% 0101 0010 1110 1100
    % CONFIG1:(0x01)
    0x01:'0x600E'% 0110 0000 1110

    任何帮助都会被大大接受!! DACCLK 和 DATACLK 以50kHz 的频率运行、与数据线的更新相同。 我还试图将 DACCLK 调到1MHz、10MHz 和100MHz、但效果不佳。 此时我几乎无法选择、因为所有其他项都可以检出、并且所有 LVDS 均已到达芯片、因此相当正确。

    谢谢!!