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.

[参考译文] DAC3484:具有正弦波输入的DAC3484输出谐波

Guru**** 2560800 points
Other Parts Discussed in Thread: DAC3484

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/568169/dac3484-dac3484-output-harmonics-with-a-sine-wave-input

部件号:DAC3484

     我们设计了一个通过FMC-HPC将DAC3484与Xilinx FPGA接口的平台。 在这里,我们尝试以153.6MSPS速率将7MHz正弦波提供给所有四个通道(I0 Q0 I1 Q1),这些通道是从FPGA中的DDS生成的。

DACDATA_CLK为307.2 ,DAC_CLK为614.4 (插值为4)。DAC NCO配置为192MHz。 帧信号已用于同步FIFO源。NCO同步源为SIFSYNC。

但我们观察到,在通道C-D的DAC输出上有两个频率为199MHz (192+7)和185MHz (192-7)的谐波,在通道A-B上有两个频率为199MHZ的谐波  

这种行为的原因是什么?  

再生器设置如下所示,

Cw0 <= x"00_028F";
Cw1 <= x"01_01";
CW2 <= x"02_80D2";--禁用混合器增益
CW3 <= x"03_D000";
Cw4 <= x"04_0000";
cw5 <= x"05_0000";
Cw6 <= x"06_3300";
cw7 <= x"07_FFFFFFFFF";
Cw8 <= x"08_0000";
cw9 <= x"09_8000";
cw10 <= x"0A_0000";
Cw11 <= x"0B_0000";
cw12 <= x"0C_0400";
Cw13 <= x"0D_0400";
CW14 <= x"0E_0400";
CW15 <= x"0F_0400";
CW16 <= x"10_0000";
cw17 <= x"11_0000";
cw18 <= x"12_0000";
cw19 <= x"13_0000";
cw20 <= x"14_0000";-- reg 0x14-0x17 if=192MHz
Cw21 <= x"15_5000";
cw22 <= x"16_0000";
cw23 <= x"17_5000";
cw24 <= x"18_2000";
Cw25 <= x"19_0000";
Cw26 <= x"1A_0020";
Cw27 <= x"1B_0800";
Cw28 <= x"1C_0000";
cw29 <= x"1D_0000";
Cw30 <= x"1E_1111";
Cw31 <= x"1F_8880";
Cw32 <= x"20_2201";
CW34 <= x"22_1B1B";
Cw35 <= x"23_FFFFFFFFF";
cw36 <= x"24_1800";
Cw37 <= x"25_7A7A";
Cw38 <= x"26_B6B6";
Cw39 <= x"27_EAA";
Cw40 <= x"28_4545";
Cw41 <= x"29_1A1A";
Cw42 <= x"2A_1616";
Cw43 <= x"2B_AAAAA";
Cw44 <= x"2C_C66";
Cw45 <= x"2D_0004";-
Cw46 <= x"2E_0000";
Cw47 <= x"2F_0000";
cw48 <= x"30_7FFF";

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

    您好,

    您是否以复杂的信号发送到AB和CD频道?  换言之,7MHz时的正弦和余弦?

    NCO混频器是一种复杂的混频器,如果A和B上的输入信号均为sin,则将其视为真实信号,并且边带信号不会取消。  然后,该信号将在NCO频率(围绕NCO的双边带)上显示为真实信号。  如果信号是复杂的(单边带),则信号将仅出现在NCO频率的一端的输出处(其中一个边带将在复杂混音器中取消)。

    请确认您是否正在向AB和CD发送复杂信号。

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

    我们仍然看到相同的问题,我们正在从kintex-7 FPGA中生成的两个DDS模块中提供样本
    (一个7.199MHz至通道A和B,9.599Mhz至通道C和D),分别作为通道A和通道B的正弦和余弦,以及通道C和D。

    DAC配置-
    DACDATACLK–307.2MSPS
    DACCLK–614.4MSPS
    DAC NCO–192MHz
    插值–4x
    syncsel_mixerAB=sif_sync
    syncsel_mixerCD=sif_sync
    syncsel_nco=sif_sync
    syncsel_dataformatter=frame
    syncsel_fifoin =帧
    syncsel_fifoout =帧
    遵循的顺序:
    1) DAC重置
    2)编程DAC寄存器
    3)提供sif同步
    4)生成内部信号标志=1
    5)在Flag=1时,在特定延迟之后,OSERDES (输出串行器反序列化器基元,用于在153.6MHz速率至307.2MHz时钟频率下对通道A,B,C,D数据进行多工处理,根据DAC的要求) FPGA中的块被重置并启用

    6)产生帧脉冲
    7) DAC Txenable被拉高

    两个DDS分别用于为上述频率的两个DAC通道生成IQ (正弦和余弦)。 输出速率为153.6MSPS,DAC数据卡为307.2MSPS。

    我们发现7.2 I1和Q1中有两个单位为199.2MHz (192+ 7.2)和184.8 MHz (192-MHz)。 I2和Q2 Out也是如此。在关闭和打开模拟卡(DAC3484位于此处)时,保持数字卡(FPGA位于此处)处于打开状态, 我们已经看到组件分别为182.4MHz (192 9.6)和201.6MHz (192+ 9.6),在重新发送FPGA时,它们已更改为199.2MHz (192+ 7.2)和184.8 MHz (192 7.2)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Ken:

    我们正在从Kintex-7 FPGA发送复杂信号。我们已经生成了两个DDS编译器,一个7.199MHz,另一个9.599MHz。我们正在将正弦信号发送到通道A,将余弦信号发送到通道B (7.199MHz),还将分别发送到通道C和D (9.599MHz)。

    配置如下所示,

    DAC配置-
    DACDATACLK–307.2MSPS
    DACCLK–614.4MSPS
    DAC NCO–192MHz
    插值–4x
    syncsel_mixerAB=sif_sync
    syncsel_mixerCD=sif_sync
    syncsel_nco=sif_sync
    syncsel_dataformatter=frame
    syncsel_fifoin =帧
    syncsel_fifoout =帧

    遵循的顺序:
    1) DAC重置
    2)编程DAC寄存器
    3)提供sif同步
    4)生成内部信号标志=1
    5)在Flag=1时,在特定延迟之后,OSERDES (输出串行器反序列化器基元,用于在153.6MHz速率至307.2MHz时钟频率下对通道A,B,C,D数据进行多工处理,根据DAC的要求) FPGA中的块被重置并启用
    6)产生帧脉冲
    7) DAC Txenable被拉高

    两个DDS分别用于为上述频率的两个DAC通道生成IQ (正弦和余弦)。 输出速率为153.6MSPS,DAC数据卡为307.2MSPS。

    我们首先配置FPGA并提供了一个复位,实习生可以配置DAC,数字样片将从DDS提供给DAC。 在重置FPGA后,我们发现两个组件分别为199.2MHz (192+FPGA)和184.8 7.2 (192-FPGA) 7.2 和Q1输出。 I2和Q2也是如此。
    然后我们关闭电源并打开模拟卡(DAC3484放置在那里)保持FPGA电源我们看到频率组件9.6 分别为182.4MHz (192 9.6)和201.6MHz (192+FPGA)。
    在给予FPGA重置后7.2 ,两个通道的频谱都更改为199.2MHz (192+ 7.2)和184.8 MHz (192-MHz)。

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

    您好,

    请您做几个实验。

    关闭DAC中的NCO并监控A,B,C,D的输出

    如果您查看A和B,您应该会看到7.2m正弦和余弦-请在示波器上监控两个输出,并确保它们是正弦/COS,具有90度偏移。  对C和D输出执行同样的操作,您应该看到90度偏移9.6M sin /Cos。

    如果您看不到这一点,则表明数据未正确进入DAC。

    请确认您在没有NCO 1的情况下看到此信息。

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

    尊敬的Ken C:

    我们尝试了所有模式检查。我们发现所有模式检查都正常,因此数据接口似乎正常。
    我们也尝试过单帧脉冲和周期帧,这是否意味着-- FPGA和DAC3484之间的数据接口和数据传输是好的?

    我们尝试禁用DAC NCO,在不同的较高频率下发现了一些杂散,当我们尝试禁用mixer_enable时也没有找到任何DAC输出。

    因此,我们不能确定问题的原因,也不能根据模式检查得出什么结论? 这是检查数据接口的唯一方法吗? 因此,模式检查结果的一个基础是,这是否意味着我们的数据接口和帧生成工作正常?

    此致,
    Nandakumar

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

    请发送通道A和B的屏幕截图,同时NCO混音器设置为关闭。  如果您看不到正弦或余弦,则您的界面可能无法正常工作,或者您的数字格式(偏移二进制或2s补码)可能未在FPGA和DAC之间对齐。

    DAC输出的屏幕截图将帮助我们了解可能的问题。

    另一个尝试是将DAC输入设置为常量级别(如0000),然后将输入格式设置为偏移二进制(这在输入选项卡中,基本上是全刻度DC), 然后启用NCO,将输入直流电平调至NCO频率。  您应该能够在输出A和B的NCO频率下测量正弦和余弦

    如果这种方法有效,则表示DAC配置正确,NCO工作正常,并且问题出在您的数字接口/信号中。

     

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

    尊敬的Ken:

    请查找随附的屏幕截图。

    当NCO禁用时,DAC输出。

    启用NCO时DAC输出。

    分析器绘图。

    当NCO禁用时。

    以及启用NCO时。

     TGH

    直流输入在NCO频率(192MHz)下提供单音输出。  

    我们试用了DAC3484评估模块aslo, kintex7 FPGA评估模块用于数据接口。  DAC是使用评估软件配置的。  

    我们已经给出了2.4 MHz正弦曲线IQ,并在禁用NCO和混频器的情况下进行了绘图。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您提到,使用直流输入时,输出处于NCO频率,A上为正弦,B上为cos。如果这是真实的,则表示DAC工作正常。

    如果您关闭NCO并且无法让DAC输出正确的信号,则这意味着FPGA和DAC输入之间可能存在接口问题。

    您能否发送显示2.4MHz信号的最后一个频谱图的时间域图(示波器)?

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

    我们将2.4MHz正弦波从kintex7评估板提供给DAC484 EVM。 DAC NCO和混音器被禁用。

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

       这是为KC705和DAC3484评估板设置编写的DAC数据接口。 由  
    更改模式属性(C_DAC_MODE )相同的代码适用于自检,模式检查和正弦测试  
    和实际数据。 自检和图案检查在使用此代码时工作正常。 其中两个  
    由于某些问题,DAC线路在PCB上发生反向(线路3和线路12)。 这两个  
    代码中有针对性地反转了行,这样最终的行是正确的。 PLZ检查  
    数据接口,如果您发现逻辑中存在问题,请告知我们。  

    图书馆IEEE;
    使用IEEE-STD_LOGIC_1164.ALL;
    图书馆UNISIM;
    使用UNISIM.VComponents.ALL;
    使用IEEE-STD_LOGIC_ARITH.ALL;

    实体DAC_datainterface为
    通用(.
           C_DAC_MODE                 :整数范围0至3:=2
                                       --0自检
                                                         --1为固定模式
                                       --2是正弦波模式
                                       --3是实际数据模式
            );

       端口(.
                      mmcm_locked :在std_logic中;
              DAC_CLK:在STD_LOGIC;中--- f=2*DAC输入的数据速率
              DAC_CLKby2:标准逻辑中;-- f= DAC输入的数据速率(每个通道)
              DAC_I1:在STD_LOGIC_Vector中(15到0);-- f= DAC输入的数据速率
              DAC_Q1:在STD_LOGIC_Vector中(15到0);
              DAC_I2:在STD_LOGIC_Vector中(15到0);
              DAC_Q2:在STD_LOGIC_Vector中(15到0);
              
              DAC_DATACLK_P:输出STD_LOGIC;--f=2*DAC输入的数据速率
              DAC_DATACLK_N:输出STD_LOGIC;
              DAC_frame_P:输出STD_LOGIC;
              DAC_frame_N:输出STD_LOGIC;
              DAC_sync_P:输出STD_LOGIC;
              DAC_SYNC_N:输出STD_LOGIC;
              DAC_DATA_P:输出STD_LOGIC_Vector (15至0);
              DAC_DATA_N:输出STD_LOGIC_Vector (15至0)          
              );
    结束DAC_datainterface;

    DAC_datainterface的体系结构行为是

    组件sine_wave_gen
     端口(.
       aclk:在STD_LOGIC中;
       m_axis_data_tvalid:输出STD_LOGI;
       m_axis_ddata_tdata:输出STD_LOGIC_Vector (31下降到0)
     );
    最终组件;
    分量sine_wave_gen_1
     端口(.
       aclk:在STD_LOGIC中;
       m_axis_data_tvalid:输出STD_LOGI;
       m_axis_ddata_tdata:输出STD_LOGIC_Vector (31下降到0)
     );
    最终组件;

    信号dac_dataclk_prebuf,dac_frame_i,dac_frame_prebuf,io_rst,m_axis_datum_tvalid,m_axis_data_tvalid1:std_logic;
    信号DAC_I1_I,DAC_Q1_I,DAC_I2_I,DAC_Q2_I,DAC_DATA_prebuf,DAC_CORRECTED_I1,DAC_CORRECTED_Q1,DAC_CORRECTED_I2,DAC_CORRECTED_Q2:STD_LOGIC_Vector (15下降到0);
    信号m_axis_data_tdata,m_axis_data_tdata1 :std_logic_vector(31 downto 0);

    信号DAC_samp0,DAC_samp1,DAC_samp2,DAC_samp3,DAC_samp4,DAC_samp5,DAC_samp6,DAC_samp7:STD_LOGIC_Vector (15下降到0);

    信号dc_sync_prebuf:std_logic;

    开始
    -------- DAC数据源sel,data mux,帧生成---------------------------

    dacdatamux_selftest:如果C_DAC_mode =0则生成
    开始
    ---自检DAC数据和帧不会影响。DAC数据卡需要运行---
          dac-samp0 <= x"00ff";
         DAC_samp1 <= x"00ff";
         DAC_samp2 <= x"00ff";
         DAC_samp3 <= x"00ff";
         
         DAC_samp4 <= x"00ff";
         DAC_samp5 <= x"00ff";
         DAC_samp6 <= x"00ff";
         DAC_samp7 <= x"00ff";

    End Generate (最终生成);
         
    dacdatamux_fixedpattern:如果C_DAC_mode =1则生成
    开始
         dac-samp0 <= x"7a7b";
         DAC_samp1 <= x"b6b6";
         DAC_samp2 <= x"eaa";
         DAC_samp3 <= x"4545";
         
         dac-samp4 <= x"1a1a";
         DAC_samp5 <= x"1616";
         DAC_samp6 <= x"AAA";
         dac _samp7 <= x"c6c6";

    End Generate (最终生成);

    DAC_SINETEST :if C_DAC_MODE = 2 Generate
    开始

    DAC_sin弦 波形通用:正弦波形通用--大约2.4MHz
     端口映射(.
       aclk => DAC_CLKby2,
       m_axis_data_tvalid => m_axis_data_tvalid,
       m_axis_data_tdata => m_axis_data_tdata
     );

    DAC_SONENT_WAVE_Gen1:SING_WAVE_GEN_1 --约7.2MHz
     端口映射(.
       aclk => DAC_CLKby2,
       m_axis_data_tvalid => m_axis_data_tvalid1,
       m_axis_data_tdata => m_axis_data_tdata1.
     );  
           DAC_samp0 <= m_axis_datum_tdata1(31 downto 16); --CHA Q2
           DAC_samp1 <= m_axis_datum_tdata1(15 downto 0); --ChB I2
           dac _samp2 <= m_axis_ddata_tdata(31 downto 16); --CHC Q1
           DAC_samp3 <= m_axis_ddata_tdata(15 downto 0);--sine --CHD I1.
           
           --- samp4到7与SAMP 0到3相同
           dac _samp4 <= m_axis_data_tdata1(31-16);
           dac _samp5 <= m_axis_data_tdata1(15下降到0);
           DAC_samp6 <= m_axis_data_tdata(31下降到16);
           dac _samp7 <= m_axis_data_tdata(15下至0);
     
    --      dac-samp0 <= x"FFFFFFFFF"; -- CHA Q2
    --      DAC_samp1 <= x"0000"; -- ChB I2
    --      DAC_samp2 <= x"0000"; -- CHC Q1
    --      dac-samp3 <= x"0000";--sine -- CHD I1
          
    ---      samp4到7与SAMP 0到3相同
    --      DAC_samp4 <= x"FFFFFFF";
    --      dac-samp5 <= x"0000";
    --      DAC_samp6 <= x"0000";
    --      DAC_samp7 <= x"0000";
    End Generate (最终生成);


    DAC_actualdata:如果C_DAC_MODE = 3 Generate
    开始
          DAC_samp0 <= DAC_Q2; --CHA Q2
          DAC_samp1 <= DAC_I2;  --ChB I2
          DAC_samp2 <= DAC_Q1; --CHC Q1
          DAC_samp3 <= DAC_I1; --CHD I1
          
          --- samp4到7与SAMP 0到3相同
          DAC_samp4 <= DAC_Q2;
          DAC_samp5 <= DAC_I2;
          DAC_samp6 <= DAC_Q1;
          DAC_samp7 <= DAC_I1;
          
    End Generate (最终生成);



     进程(DAC_CLKby2)
      变量CTR:整数范围0到1 :=0;
       变量ctr_frame:整数范围0到31 :=0;
       开始
         如果Rising _EDGE (DAC_CLKby2),则
           如果(CTR = 0),则
            DAC_I1_I <= DAC_samp0;
            DAC_Q1_I <= DAC_samp1;
            DAC_I2_I <= DAC_samp2;
            DAC_Q2_I <= DAC_samp3;
            电话预约维修:=电话预约维修+ 1;
               如果ctr_frame=0,则
                 DAC_frame_I <='1';
               否则
                 DAC_frame_I <='0';
                结束条件:
            ctr_frame:= ctr_frame + 1;
            否则
            DAC_I1_I <= DAC_samp4;
            DAC_Q1_I <= DAC_samp5;
            DAC_I2_I <= DAC_samp6;
            DAC_Q2_I <= DAC_samp7;
            电话预约维修:=电话预约维修+ 1;
            DAC_frame_I <='0';
            ctr_frame:= ctr_frame + 1;

           结束条件:
          结束条件:
      结束流程;
      
    DAC_CORRECTED_I1 <= DAC_I1_I (15至13)& NOT (DAC_I1_I (12))& DAC_I1_I (11至4)& NOT (DAC_I1_I (3))& DAC_I1_I (2至0);
    DAC_CORRECTED_Q1 <= DAC_Q1_I (15至13)& NOT (DAC_Q1_I (12))& DAC_Q1_I (11至4)& NOT (DAC_Q1_I (3))& DAC_Q1_I (2至0);
    DAC_CORRECTED_I2 <= DAC_I2_I (15至13)& NOT (DAC_I2_I (12))& DAC_I2_I (11至4)& NOT (DAC_I2_I (3))& DAC_I2_I (2至0);
    DAC_CORRECTED_Q2 <= DAC_Q2_I (15至13)& NOT (DAC_Q2_I (12))& DAC_Q2_I (11至4)& NOT (DAC_Q2_I (3))& DAC_Q2_I (2至0);
    ----------------------------------
    ——— io_rst reset for oserdese2 blocks generation ---------------------------
    ---使用前必须应用RESET
    ---需要与CLKDIV同步重置取消断言
    ---当知道CLK和CLKDIV稳定且存在时,应取消声明复位

    io_RST_generation:进程(mmcm_locked,DAC_CLKby2)
    变量cnt:整数范围0到201:=0;
    开始
    如果mmcm_locked ='0',则
         io_rst <='1';
         cnt :=0;
    ELSIF RING_EDGE (DAC_CLKby2),然后
         如果cnt <200,则
               cnt := cnt +1;
               io_rst <='1';
         否则
           cnt:=cnt;
               io_rst <='0';
         结束条件:
    结束条件:
    结束流程;
    ----------------------------------
    --用于DAC时钟的输出串行器和LVDS缓冲器
    ----------------------------------

    oserdes2_dacclk:OSERDESE1.
      通用映射(.
         DATA_RATE_OQ =>"DDR",      --"SDR"或"DDR"
         DATA_RATE_TQ =>"DDR",      --"BUF","SDR"或"DDR"
         data_width => 4,--            并行数据宽度(1-8,10)
         DDR3-data => 1,             --必须保留为1 (仅限MIG参数)
         INIT_OQ =>'0',             -- OQ输出的初始值(0/1)
         INIT_TQ =>'0',             -- TQ输出的初始值(0/1)
         interface_type =>"default",--必须保留"default"(仅限MIG参数)
         ODELAY_USDED => 0,           --必须保留为0 (仅限MIG参数)
         SerDes_mode =>"master",    --"master"或"slaver"
         SRVAL_OQ =>'0',            --使用SR时的OQ输出值(0/1)
         SRVAL_TQ =>'0',            --使用SR时的TQ输出值(0/1)
         tristate_width => 1-        与串行三态转换器宽度并行(1或4)
      )
      端口映射(.
         --仅限MIG信号:1位(每个)输出:除非MIG生成,否则不要使用
        -- OCBEXTEND => OPEN,      -- 1位输出:保持未连接(仅MIG连接信号)
         --输出:1位(每个)输出:串行输出端口
         OFB =>打开,                  -- 1位输出:数据反馈输出到ISERDESE1
         OQ =>DAC_dataclk_prebuf,                    -- 1位输出:数据输出(连接到I/O端口)
         TFB =>打开,                  -- 1位输出:3态控制输出
         tq =>打开,                    -- 1位输出:3态路径输出
         -- SHIFTOUT1-SHIFTOUT2:1位(每个)输出:数据宽度扩展输出端口
         SHIFTOUT1 =>打开,      --1位输出:连接到从属或未连接的SHIFTIN1
         SHIFTOUT2 => OPEN,      -- 1位输出:连接到从属或未连接的SHIFTIN2
         --时钟:1位(每个)输入:OSERDESE1时钟输入端口
         CLK => DAC_clk,                  -- 1位输入:高速时钟输入
         CLKDIV => DAC_clkby2,--1            位输入:分频时钟输入
         --控制信号:1位(每个)输入:时钟启用和重置输入端口
         OCE =>'1',-oce,--1                  位输入:活动高时钟数据路径启用输入
         rst => io_rst,                  -- 1位输入:有源高重置输入
         Tce =>'0',--tce,                  --1位输入:用于三态的活动高时钟启用输入
         -- D1 - D6:1位(每个)输入:并行数据输入
         d1 =>'1',
         D2 =>'0',
         D3 =>'1',
         D4 =>'0',
         D5 =>'0',
         D6 =>'0',
         --仅限MIG信号:1位(每个)输入:除非由MIG生成,否则不要使用
         CLKPERF =>'0',--CLKPERF,--1          位输入:接地输入(仅MIG连接信号)
         CLKPERFDEAY =>'0',--CLKPERFDELAY,-- 1位输入:接地输入(仅限MIG连接信号)
         ODD =>'0',--ODD,                  --1位输入:接地输入(仅MIG连接信号)
         WC =>'0',--wc,                    --1位输入:接地输入(仅MIG连接信号)
         -- SHIFTIN1-SHIFTIN2:1位(每个)输入:数据宽度扩展输入端口
         SHIFTIN1 =>'0',        -- 1位输入:连接到主机或GND的SHIFTOUT1
         SHIFTIN2 =>'0',        -- 1位输入:连接到MASTER或GND的SHIFTOUT2
         -- T1 - T4:1位(每个)输入:并行三态输入
         T1 =>'0',
         T2 =>'0',
         T3 =>'0',
         T4 =>'0'
      );

    --output buffer
    obufds_dac_dataclk:OBUFDS
             通用映射(.
               IOSTANDARD =>“LVDS_25”)
    端口映射(.
     I => dac_dataclk_prebuf,
     o => dac_dataclk_p,
     OB => DAC_dataclk_n
    );

    ----------------------------------
    --用于DAC数据的输出SerDes和LVDS缓冲器
    ----------------------------------
    DAC_DATA:0到15中的I生成

     --oserdes在数据路径中
     oserdes2_dacdata:  OSERDESE1.
      通用映射(.
         DATA_RATE_OQ =>"DDR",      --"SDR"或"DDR"
         DATA_RATE_TQ =>"DDR",      --"BUF","SDR"或"DDR"
         data_width => 4,--            并行数据宽度(1-8,10)
         DDR3-data => 1,             --必须保留为1 (仅限MIG参数)
         INIT_OQ =>'0',             -- OQ输出的初始值(0/1)
         INIT_TQ =>'0',             -- TQ输出的初始值(0/1)
         interface_type =>"default",--必须保留"default"(仅限MIG参数)
         ODELAY_USDED => 0,           --必须保留为0 (仅限MIG参数)
         SerDes_mode =>"master",    --"master"或"slaver"
         SRVAL_OQ =>'0',            --使用SR时的OQ输出值(0/1)
         SRVAL_TQ =>'0',            --使用SR时的TQ输出值(0/1)
         tristate_width => 1-        与串行三态转换器宽度并行(1或4)
      )
      端口映射(.
         --仅限MIG信号:1位(每个)输出:除非MIG生成,否则不要使用
        -- OCBEXTEND => OPEN,      -- 1位输出:保持未连接(仅MIG连接信号)
         --输出:1位(每个)输出:串行输出端口
         OFB =>打开,                  -- 1位输出:数据反馈输出到ISERDESE1
         OQ =>DAC_DATA_prebuf (I),                    -- 1位输出:数据输出(连接到I/O端口)
         TFB =>打开,                  -- 1位输出:3态控制输出
         tq =>打开,                    -- 1位输出:3态路径输出
         -- SHIFTOUT1-SHIFTOUT2:1位(每个)输出:数据宽度扩展输出端口
         SHIFTOUT1 =>打开,      --1位输出:连接到从属或未连接的SHIFTIN1
         SHIFTOUT2 => OPEN,      -- 1位输出:连接到从属或未连接的SHIFTIN2
         --时钟:1位(每个)输入:OSERDESE1时钟输入端口
         CLK => DAC_clk,                  -- 1位输入:高速时钟输入
         CLKDIV => DAC_clkby2,--1            位输入:分频时钟输入
         --控制信号:1位(每个)输入:时钟启用和重置输入端口
         OCE =>'1',-oce,--1                  位输入:活动高时钟数据路径启用输入
         rst => io_rst,                  -- 1位输入:有源高重置输入
         Tce =>'0',--tce,                  --1位输入:用于三态的活动高时钟启用输入
         -- D1 - D6:1位(每个)输入:并行数据输入
         D1 => DAC_CORRECTED_I1 (I),
         D2 => DAC_CORRECTED_Q1 (I),
         D3 => DAC_CORRECTED_I2 (I),
         D4 => DAC_CORRECTED_Q2 (I),
         D5 =>'0',
         D6 =>'0',
         --仅限MIG信号:1位(每个)输入:除非由MIG生成,否则不要使用
         CLKPERF =>'0',--CLKPERF,--1          位输入:接地输入(仅MIG连接信号)
         CLKPERFDEAY =>'0',--CLKPERFDELAY,-- 1位输入:接地输入(仅限MIG连接信号)
         ODD =>'0',--ODD,                  --1位输入:接地输入(仅MIG连接信号)
         WC =>'0',--wc,                    --1位输入:接地输入(仅MIG连接信号)
         -- SHIFTIN1-SHIFTIN2:1位(每个)输入:数据宽度扩展输入端口
         SHIFTIN1 =>'0',        -- 1位输入:连接到主机或GND的SHIFTOUT1
         SHIFTIN2 =>'0',        -- 1位输入:连接到MASTER或GND的SHIFTOUT2
         -- T1 - T4:1位(每个)输入:并行三态输入
         T1 =>'0',
         T2 =>'0',
         T3 =>'0',
         T4 =>'0'
      );

     --output buffers
     obufds_data: OBUFDS
               通用映射(.
                 IOSTANDARD =>“LVDS_25”)
     端口映射(.
       I => DAC_DATA_prebuf (I),
       o => DAC_DATA_p (I),
       OB => DAC_DATA_n (I)
     );

    End Generate (最终生成);

    ----------------------------------
    --用于DAC帧的输出串行器和LVDS缓冲器
    ----------------------------------
    oserdes2_dacframe : oserDESE1.
      通用映射(.
         DATA_RATE_OQ =>"DDR",      --"SDR"或"DDR"
         DATA_RATE_TQ =>"DDR",      --"BUF","SDR"或"DDR"
         data_width => 4,--            并行数据宽度(1-8,10)
         DDR3-data => 1,             --必须保留为1 (仅限MIG参数)
         INIT_OQ =>'0',             -- OQ输出的初始值(0/1)
         INIT_TQ =>'0',             -- TQ输出的初始值(0/1)
         interface_type =>"default",--必须保留"default"(仅限MIG参数)
         ODELAY_USDED => 0,           --必须保留为0 (仅限MIG参数)
         SerDes_mode =>"master",    --"master"或"slaver"
         SRVAL_OQ =>'0',            --使用SR时的OQ输出值(0/1)
         SRVAL_TQ =>'0',            --使用SR时的TQ输出值(0/1)
         tristate_width => 1-        与串行三态转换器宽度并行(1或4)
      )
      端口映射(.
         --仅限MIG信号:1位(每个)输出:除非MIG生成,否则不要使用
        -- OCBEXTEND => OPEN,      -- 1位输出:保持未连接(仅MIG连接信号)
         --输出:1位(每个)输出:串行输出端口
         OFB =>打开,                  -- 1位输出:数据反馈输出到ISERDESE1
         OQ => DAC_frame_prebuf,                    -- 1位输出:数据输出(连接到I/O端口)
         TFB =>打开,                  -- 1位输出:3态控制输出
         tq =>打开,                    -- 1位输出:3态路径输出
         -- SHIFTOUT1-SHIFTOUT2:1位(每个)输出:数据宽度扩展输出端口
         SHIFTOUT1 =>打开,      --1位输出:连接到从属或未连接的SHIFTIN1
         SHIFTOUT2 => OPEN,      -- 1位输出:连接到从属或未连接的SHIFTIN2
         --时钟:1位(每个)输入:OSERDESE1时钟输入端口
         CLK => DAC_clk,                  -- 1位输入:高速时钟输入
         CLKDIV => DAC_clkby2,--1            位输入:分频时钟输入
         --控制信号:1位(每个)输入:时钟启用和重置输入端口
         OCE =>'1',-oce,--1                  位输入:活动高时钟数据路径启用输入
         rst => io_rst,                  -- 1位输入:有源高重置输入
         Tce =>'0',--tce,                  --1位输入:用于三态的活动高时钟启用输入
         -- D1 - D6:1位(每个)输入:并行数据输入
         D1 => DAC_frame_I,
         d2 =>'0',--dac帧i,
         D3 =>'0',--dac帧_I,
         D4 =>'0',--dac帧_I,
         D5 =>'0',
         D6 =>'0',
         --仅限MIG信号:1位(每个)输入:除非由MIG生成,否则不要使用
         CLKPERF =>'0',--CLKPERF,--1          位输入:接地输入(仅MIG连接信号)
         CLKPERFDEAY =>'0',--CLKPERFDELAY,-- 1位输入:接地输入(仅限MIG连接信号)
         ODD =>'0',--ODD,                  --1位输入:接地输入(仅MIG连接信号)
         WC =>'0',--wc,                    --1位输入:接地输入(仅MIG连接信号)
         -- SHIFTIN1-SHIFTIN2:1位(每个)输入:数据宽度扩展输入端口
         SHIFTIN1 =>'0',        -- 1位输入:连接到主机或GND的SHIFTOUT1
         SHIFTIN2 =>'0',        -- 1位输入:连接到MASTER或GND的SHIFTOUT2
         -- T1 - T4:1位(每个)输入:并行三态输入
         T1 =>'0',
         T2 =>'0',
         T3 =>'0',
         T4 =>'0'
      );
         
    --output buffer
    obufds_dacframe : OBUFDS
    通用映射(.
     IOSTANDARD =>“LVDS_25”)
    端口映射(.
     I => dac帧前,
     o => dac帧_p,
     OB => DAC_frame_n
    );


    ----------------------------------
    --用于DAC帧的输出串行器和LVDS缓冲器
    ----------------------------------
    oserdes2_dacsync : OSERDESE1.
      通用映射(.
         DATA_RATE_OQ =>"DDR",      --"SDR"或"DDR"
         DATA_RATE_TQ =>"DDR",      --"BUF","SDR"或"DDR"
         data_width => 4,--            并行数据宽度(1-8,10)
         DDR3-data => 1,             --必须保留为1 (仅限MIG参数)
         INIT_OQ =>'0',             -- OQ输出的初始值(0/1)
         INIT_TQ =>'0',             -- TQ输出的初始值(0/1)
         interface_type =>"default",--必须保留"default"(仅限MIG参数)
         ODELAY_USDED => 0,           --必须保留为0 (仅限MIG参数)
         SerDes_mode =>"master",    --"master"或"slaver"
         SRVAL_OQ =>'0',            --使用SR时的OQ输出值(0/1)
         SRVAL_TQ =>'0',            --使用SR时的TQ输出值(0/1)
         tristate_width => 1-        与串行三态转换器宽度并行(1或4)
      )
      端口映射(.
         --仅限MIG信号:1位(每个)输出:除非MIG生成,否则不要使用
        -- OCBEXTEND => OPEN,      -- 1位输出:保持未连接(仅MIG连接信号)
         --输出:1位(每个)输出:串行输出端口
         OFB =>打开,                  -- 1位输出:数据反馈输出到ISERDESE1
         OQ => DAC_sync_prebuf,                    -- 1位输出:数据输出(连接到I/O端口)
         TFB =>打开,                  -- 1位输出:3态控制输出
         tq =>打开,                    -- 1位输出:3态路径输出
         -- SHIFTOUT1-SHIFTOUT2:1位(每个)输出:数据宽度扩展输出端口
         SHIFTOUT1 =>打开,      --1位输出:连接到从属或未连接的SHIFTIN1
         SHIFTOUT2 => OPEN,      -- 1位输出:连接到从属或未连接的SHIFTIN2
         --时钟:1位(每个)输入:OSERDESE1时钟输入端口
         CLK => DAC_clk,                  -- 1位输入:高速时钟输入
         CLKDIV => DAC_clkby2,--1            位输入:分频时钟输入
         --控制信号:1位(每个)输入:时钟启用和重置输入端口
         OCE =>'1',-oce,--1                  位输入:活动高时钟数据路径启用输入
         rst => io_rst,                  -- 1位输入:有源高重置输入
         Tce =>'0',--tce,                  --1位输入:用于三态的活动高时钟启用输入
         -- D1 - D6:1位(每个)输入:并行数据输入
         D1 => DAC_frame_I,
         D2 => DAC_frame_I,
         D3 => DAC_frame_I,
         D4 => DAC_frame_I,
         D5 =>'0',
         D6 =>'0',
         --仅限MIG信号:1位(每个)输入:除非由MIG生成,否则不要使用
         CLKPERF =>'0',--CLKPERF,--1          位输入:接地输入(仅MIG连接信号)
         CLKPERFDEAY =>'0',--CLKPERFDELAY,-- 1位输入:接地输入(仅限MIG连接信号)
         ODD =>'0',--ODD,                  --1位输入:接地输入(仅MIG连接信号)
         WC =>'0',--wc,                    --1位输入:接地输入(仅MIG连接信号)
         -- SHIFTIN1-SHIFTIN2:1位(每个)输入:数据宽度扩展输入端口
         SHIFTIN1 =>'0',        -- 1位输入:连接到主机或GND的SHIFTOUT1
         SHIFTIN2 =>'0',        -- 1位输入:连接到MASTER或GND的SHIFTOUT2
         -- T1 - T4:1位(每个)输入:并行三态输入
         T1 =>'0',
         T2 =>'0',
         T3 =>'0',
         T4 =>'0'
      );
         
    --output buffer
    obufds_dacsync: OBUFDS
    通用映射(.
     IOSTANDARD =>“LVDS_25”)
    端口映射(.
     I => dac同步预布f,
     o => dac同步_p,
     OB => DAC_sync_n
    );

    ----------------------------------

    终止行为;
     

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

    Nandakumar,

    我无法用您发送的Verilog代码做很多事情。  这超出了本论坛的范围。

    根据2.4MHz信号的频谱图,它显示信号的大部分能量是在正确的2.4MHz频率下。  但是有很多谐波。  有几种情况可能导致此问题。  数字路径中存在一些数字剪辑,或者数字样本未正确呈现给DAC。

    正如您以前使用DC (仅NCO混音器)的实验所显示的CH1和CH2输出上的正弦和余弦输出正确,现在让我们假设DAC配置正确。

    对于数字路径中可能出现的裁剪情况,请尝试将数字信号缩小0.5倍,然后查看输出。  如果数字域中存在裁剪,这将有所帮助。

     对于数字信号不正确的另一种情况,您需要进行更多实验(在这些情况下,NCO始终关闭)。  您是否尝试过在kHz范围内运行真正缓慢的正弦波或计数模式?  这将在数据速率时钟以小增量递增输出。  您应该能够跟踪模拟输出中的这一趋势,并确定将位发送到DAC时是否存在问题-您应该看到增量步骤。  假设路径中没有变压器(限制低频),信号被正确端接,可在示波器上测量。

    希望这将帮助您确定您的问题。

    肯尼亚

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

    我们已经尝试了上述测试。

    在NCO和混合器被禁用的情况下,为DAC提供了2KHz正弦波。以下是不同时标的示波器图。

    在反击DAC之后,

      

    所有上述观察都在DAC3484评估板中进行了尝试,其中数据是由kintex-7 FPGA评估板提供的。

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

    您好,

    如果您使用的是标准DAC3484 EVM,则输出是变压器耦合的。  这些变压器通常具有大约1MHz的高通响应。

    使用2kHz正弦波,您不应获得任何输出或严重衰减正弦波。  您在输出中看到了许多转换,这意味着位模式有一些不正确的地方。

    此外,当您发送一个斜坡时,输出看起来像以令人着迷的方式返回到0。  这也表示位顺序/模式可能有问题。

    根据这两个实验,我猜位顺序不正确。  您可以放大斜坡输出,看看是否可以确定哪些位工作不正常。  例如,根据您的DAC输出速率,您可以测量间隙定步。  这可能有助于确定在特定时间切换哪个位。

    我不确定是否可以帮助远程调试此问题。  到目前为止,它看起来像是一些位模式/顺序问题。