groupUrl: https://ez.analog.com/clock_and_timing/
Analog.com Analog Dialogue Wiki English
Analog.com Analog Dialogue Wiki 简体中文
EngineerZone
EngineerZone
  • Site
  • User
  • Site
  • Search
  • User
EngineerZone
EngineerZone
  • Log in
  • Site
  • Search
  • Log in
  • Home
  • Blogs ⌵
    • EZ Spotlight
    • The Engineering Mind
  • Browse ⌵
    • All Groups
    • All Members
  • Support ⌵
    • 3D ToF Depth Sensing
    • A2B
    • Aerospace and Defense (ADEF)
    • Amplifiers
    • Analog Microcontrollers
    • Analysis Control Evaluation (ACE) Software
    • Audio
    • Clock and Timing
    • Condition-Based Monitoring
    • Data Converters
    • Design Tools and Calculators
    • Direct Digital Synthesis (DDS)
    • Embedded Vision Sensing
    • Energy Monitoring and Metering
    • FPGA Reference Designs
    • Industrial Ethernet
    • Interface and Isolation
    • Low Power RF Transceivers
    • MEMS Inertial Sensors
    • Motor Control Hardware Platforms
    • Optical Sensing
    • Power Management
    • Precision Technology Signal Chains
    • Processors and DSP
    • Reference Circuits
    • RF and Microwave
    • Signal Chain Power (SCP)
    • Switches/Multiplexers
    • Temperature Sensors
    • Video
    • Wide Band RF Transceivers
    • Wireless Sensor Networks Reference Library
  • About EZ
  • More
  • Cancel
  • 主页
  • 浏览 ⌵
    • 收件箱
    • 个人设置
    • 会员
    • 专区列表
  • 论坛专区 ⌵
    • 放大器专区
    • 精密转换器专区
    • 音频专区
    • ADE电能计量专区
    • MEMS和传感器专区
    • 接口和隔离专区
    • Power 中文专区
    • ADUC微处理器专区
    • 锁相环专区
    • 开关和多路复用器专区
    • 温度传感器
    • 基准电压源专区
    • 资源库
    • 论坛使用指南
    • 技术支持参考库
    • 在线研讨会
    • 论坛社群活动
    • 论坛激励活动
  • More
  • Cancel
Clock and Timing
Clock and Timing
Documents AD9512 Phase setting not working
  • Q&A
  • Discussions
  • Documents
  • File Uploads
  • Tags
  • Managers
  • More
  • Cancel
  • New
Clock and Timing requires membership for participation - click to join
  • +Documents
  • Clock and Timing Support Community
  • +AD9508: FAQ
  • +AD9510: FAQ
  • +AD9511: FAQ
  • -AD9512: FAQ
    • AD9512 evaluation board and  Windows 7, 64 Bit driver issues
    • AD9512 evaluation software and windows 7 64bit compatibleissues
    • AD9512 Phase setting not working
  • +AD9513: FAQ
  • +AD9514: FAQ
  • +AD9515: FAQ
  • +AD9517-1: FAQ
  • +AD9518-0: FAQ
  • +AD9518-4: FAQ
  • +AD951x: FAQ
  • +AD9520-3: FAQ
  • +AD9523-1: FAQ
  • +AD9523: FAQ
  • +AD9525: FAQ
  • +AD9548: FAQ
  • +AD9549BCPZ: FAQ
  • +AD9552: FAQ
  • +AD9951: FAQ
  • +AD9957: FAQ
  • +ADCLK846: FAQ
  • +LTC6952: FAQ
  • +LTC695x: FAQ

AD9512 Phase setting not working

Q 

We have a problem setting up the AD9512. We have set to clock divider to 5, and
should therefore be able to change the phase delay to 0,1,2,3,4.
But we can’t see any changes at all when scoping this.
Schematics and SW setup is attached.

--
On the first output we are using divider = 5, so it means we do have 5 choices
of shifting the phase. The problem is that even applying changes to the
registers (tried all 5 values out) and successfully reading register value back
those changes are not visible on the oscilloscope.
In mean time we are able to change output's amplitude & divider ratio and those
changes are clearly visible on the oscilloscope. For the first two outputs we
have the same divider ratio applied. So we are able to compare signals at the
same time if something changes, but unfortunately it doesn't...

Do we need to update some special bit in correct register in order to see
changes for phase offset?

We manage to set the divider and amplitude, but somehow we cannot see any
change in the output when setting the phase offset value (on output 0 and 1).
We measure by looking at two outputs (0 and 1) from the clock-divide (They both
have the same divider value).
What can be the error?

The register writing is as follows (always 3 byte, control byte + 2 data bytes,
default MSB mode):

                instr_table[tab_size++] = (LVDS_1_REG_ADDR |
AD9512_BTC_2_BYTES) << 16
                                                                               
| /*LVDS_0_TO_2_REGS_VALUE*/lvds_1 << 8 |
/*LVDS_0_TO_2_REGS_VALUE*/lvds_0;              // LVDS_1_REG_ADDR &
LVDS_0_REG_ADDR
                instr_table[tab_size++] = (LVDS_3_REG_ADDR |
AD9512_BTC_2_BYTES) << 16
                                                                               
| LVDS_3_TO_4_REGS_VALUE << 8 | /*LVDS_0_TO_2_REGS_VALUE*/ lvds_2; //
LVDS_3_REG_ADDR & LVDS_2_REG_ADDR
                instr_table[tab_size++] = (REG_ADDR_AFTER_LVDS_4 |
AD9512_BTC_2_BYTES) << 16
                                                                               
| LVDS_3_TO_4_REGS_VALUE; // REG_ADDR_AFTER_LVDS_4 = 0 & LVDS_4_REG_ADDR
                // CLK1 and CLK2
                instr_table[tab_size++] = (AD9512_CLK1_CLK2_REG_ADDR |
AD9512_BTC_1_BYTE) << 16 | AD9512_CLK1_CLK2_REG_VALUE << 8;  // CLK1_CLK2

                // Setting LVDS Outputs Phase based on the input parameters, if
not changed, set to 0
                if(LVDS_0_PHASE_VALUE != 0x00)
                                printk("AD9512 | LVDS_0_PHASE_VALUE has been
changed to hex = 0x%X | dec = %d\n", LVDS_0_PHASE_VALUE, LVDS_0_PHASE_VALUE);
                if(LVDS_1_PHASE_VALUE != 0x00)
                                printk("AD9512 | LVDS_1_PHASE_VALUE has been
changed to hex = 0x%X | dec = %d\n", LVDS_1_PHASE_VALUE, LVDS_1_PHASE_VALUE);
                if(LVDS_2_PHASE_VALUE != 0x00)
                                printk("AD9512 | LVDS_2_PHASE_VALUE has been
changed to hex = 0x%X | dec = %d\n", LVDS_2_PHASE_VALUE, LVDS_2_PHASE_VALUE);
                if(LVDS_3_PHASE_VALUE != 0x00)
                                printk("AD9512 | LVDS_3_PHASE_VALUE has been
changed to hex = 0x%X | dec = %d\n", LVDS_3_PHASE_VALUE, LVDS_3_PHASE_VALUE);
                if(LVDS_4_PHASE_VALUE != 0x00)
                                printk("AD9512 | LVDS_4_PHASE_VALUE has been
changed to hex = 0x%X | dec = %d\n", LVDS_4_PHASE_VALUE, LVDS_4_PHASE_VALUE);

                // DIVIDERS | Setting up LVDS Outputs & Phase | Divider = 5
                instr_table[tab_size++] = (LVDS_0_DIV_PHASE_ADDR |
AD9512_BTC_2_BYTES) << 16 | LVDS_0_PHASE_VALUE << 8 |
LVDS_0_DIVIDER_VALUE;     // PHASE = 0 & LVDS_0_DIV_ADDR = DIV5
                instr_table[tab_size++] = (LVDS_1_DIV_PHASE_ADDR |
AD9512_BTC_2_BYTES) << 16 | LVDS_1_PHASE_VALUE << 8 |
LVDS_1_DIVIDER_VALUE;     // PHASE = 0 & LVDS_1_DIV_ADDR = DIV5
                instr_table[tab_size++] = (LVDS_2_DIV_PHASE_ADDR |
AD9512_BTC_2_BYTES) << 16 | LVDS_2_PHASE_VALUE << 8 | LVDS_2_DIVIDER_VALUE
/*LVDS_CHOOSEN_DIV_MK1*/;   // PHASE = 0 & LVDS_2_DIV_ADDR = DIV5, changed to
DIV10 - Henning
                instr_table[tab_size++] = (LVDS_3_DIV_PHASE_ADDR |
AD9512_BTC_2_BYTES) << 16 | LVDS_3_PHASE_VALUE << 8 |
LVDS_3_DIVIDER_VALUE;     // PHASE = 0 & LVDS_3_DIV_ADDR = DIV30
                instr_table[tab_size++] = (LVDS_4_DIV_PHASE_ADDR |
AD9512_BTC_2_BYTES) << 16 | LVDS_4_PHASE_VALUE << 8 |
LVDS_4_DIVIDER_VALUE;     // PHASE = 0 & LVDS_4_DIV_ADDR = DIV14

                // Do Soft Sync AND set function pin to SyncB
                instr_table[tab_size++] = (LVDS_FUNTION_REGISTER_ADDR |
AD9512_BTC_1_BYTE) << 16 | (LVDS_SOFT_SYNC_FUNTION_REGISTER_VALUE |
LVDS_SYNCB_FUNTION_REGISTER_VALUE) << 8;      // Soft SYNC bit

                instr_table[tab_size++] = (LVDS_FUNTION_REGISTER_ADDR |
AD9512_BTC_1_BYTE) << 16 | LVDS_SYNCB_FUNTION_REGISTER_VALUE <<
8;              // Reset Soft SYNC bit
               
                //Update Registers
                instr_table[tab_size++] = (LVDS_UPDATE_REGISTERS_ADDR |
AD9512_BTC_1_BYTE) << 16 | LVDS_UPDATE_REGISTERS_VALUE << 8;               //
Update REGS

 

A 

In order to see a change on the phase, they need to issue an output sync. This
can either be done as a hardware sync using the SYNCB function or issuing a
software sync using Register 0x58<2>.

The exact sequence for a soft sync is:
R0x58=0x04  ; stalls the outputs
R0x5A=0x01 ; update the live registers so that the write to 0x58 takes effect.
R0x58=0x00 ; releases the outputs.
R0x5A=0x01; ; update the live registers so that the write to 0x58 takes effect.

Attachments:
AD9512_Clock_Divider.h.zip
ClockDividerSchematics.pdf
AD9512_Clock_Divider.c.zip
  • ad9512
  • Share
  • History
  • More
  • Cancel
Comments
Anonymous
Related
 
社交网络
快速链接
  • 关于ADI
  • Partners
  • 模拟对话
  • 职业
  • 联系我们
  • 投资信息
  • 新闻中心
  • 质量和可靠性
  • 办事处与代理商
  • Analog Garage
语言
  • English
  • 简体中文
  • 日本語
  • Руccкий
电子快讯

欲获得最新ADI产品、设计工具、培训与活动的相关新闻与文章,请从我们的在线快讯中选出您感兴趣的产品类别,每月或每季度都会发送至您的收件箱。

订阅
Switch to mobile view
Analog Logo
© 1995 - 2022 Analog Devices, Inc. All Rights Reserved 沪ICP备09046653号-1
  • ©
  • 1995 - 2022 Analog Devices, Inc. All Rights Reserved
  • 沪ICP备09046653号-1
  • 网站地图
  • 隐私和保密政策
  • 隐私设置
  • 使用条款
 
Social
Quick Links
  • About ADI
  • Partners
  • Analog Dialogue
  • Careers
  • Contact us
  • Investor Relations
  • News Room
  • Quality & Reliability
  • Sales & Distribution
  • Analog Garage
Languages
  • English
  • 简体中文
  • 日本語
  • Руccкий
Newsletters

Interested in the latest news and articles about ADI products, design tools, training and events? Choose from one of our 12 newsletters that match your product area of interest, delivered monthly or quarterly to your inbox.

Sign Up
Switch to mobile view
Analog Logo
© 1995 - 2022 Analog Devices, Inc. All Rights Reserved 沪ICP备09046653号-1
  • ©
  • 1995 - 2022 Analog Devices, Inc. All Rights Reserved
  • 沪ICP备09046653号-1
  • Sitemap
  • Privacy & Security
  • Privacy Settings
  • Terms of use
EngineerZone Uses cookies to ensure you get the best experience in our community. For more information on cookies, please read our Privacy & Security Statement.