of 16 /16
Chien-Jung Li Nov. 2013 Analog Devices ADF4113 Frequency Synthesizer

ADF4113 Frequency Synthesizer 驅動程式實作

  • Author
    simenli

  • View
    122

  • Download
    1

Embed Size (px)

Text of ADF4113 Frequency Synthesizer 驅動程式實作

  1. 1. Chien-Jung Li Nov. 2013 Analog Devices ADF4113 Frequency Synthesizer
  2. 2. 2 Analog Devices ADF4113
  3. 3. 3 ADF4113 Spec. Abstract RF characteristics were not shown, since we are focusing the design of digital interface here. DSN-3019 Spec. (I guess 3.3V DVDD is used in the packaged module)
  4. 4. 4 Timing Diagram 10 ns 10 ns 25 ns 25 ns 10 ns 2 ns Its quite easy to meet the timing requirement. MSB go first 24-bits
  5. 5. 5 ADF4113 Pin Function Digital Section: 1. 24-bit input shift register / 14-bit R counter / 19-bit N counter (6-bit A counter + 13-bit B counter). 2. Data is clocked into the 24-bit shift register on each rising edge of CLK MSB first. 3. Data is transferred from the shift register to one of four latches on the rising edge of LE. The destination latch is determined by the state of the two control bits (C2, C1) in the shift register. These are the two LSBs, DB1 and DB0, as shown in Figure 2. The truth table for these bits is shown in Table 5.
  6. 6. 6 4 Types of the Latches
  7. 7. 7 R Counter Latch (0, 0) 14-bits div. ratio (0 is not allowed) PFD deadzone cancel (0, 0) normal How LD is set (not important) Not important Byte[2] Byte[1] Byte[0]
  8. 8. 8 N Counter Latch Byte[2] Byte[1] Byte[0]
  9. 9. 9 Function Latch Byte[2] Byte[1] Byte[0] Datasheet
  10. 10. 10
  11. 11. 11 (I) 1. Init: 80,00,C3 = 1000, 0000, 0000, 0000, 1100, 0011 2. R = 00,00,28 = 0000, 0000, 0000, 0000, 0010, 1000 3. N = 00,4C,49 = 0000, 0000, 0100, 1100, 0100, 1001 Initial Latch
  12. 12. 12 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 Div32 Normal ICP0 TCOUNTER0 Fast Lock Disable Normal + RDIV Normal Init Latch 0x8000C3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 R Latch Normal 3 cycleNormal 3 ns 10 Dec 0x000028 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 0 1 0 0 1 N LatchGain1 18 Dec76 Dec 0x004C49 P = 32, B = 76, A = 18, R = 10
  13. 13. 13 (II) 2476 MHz Function Latch 1. Func: 80,00,C2 = 1000, 0000, 0000, 0000, 1100, 0010 2. R = 00,00,28 = 0000, 0000, 0000, 0000, 0010, 1000 3. N = 00,4D,31 = 0000, 0000, 0100, 1101, 0011, 0001 A = 12 DecB = 77 Dec R= 10 Dec P= 32 Dec
  14. 14. 14 (III) LD5 Cycles, abp1.5ns, ICP6, counter43 PFD cycles, MUXN 2423 MHz 1. Func: 9B,50,A2 = 1001, 1011, 0101, 0000, 1010, 0010 2. R = 11,00,28 = 0001, 0001, 0000, 0000, 0010, 1000 3. N = 00,4B,5D = 0000, 0000, 0100, 1011, 0101, 1101 ICP6 (datasheetCPI6) 43 PFD Cycles N A = 23 DecB = 75 Dec R= 10 Dec P= 32 Dec
  15. 15. 15 API main()Synthesizer HalSynInit(void)main() (while(1)super loop) HalSynStart(uint16 rf_Freq) rf_FreqMHz 2558 MHzHalSynStart(2558) halSynSetFunc(uint8 funcSet, uint8 mode) ( hal_adf4113.h) ( hal_adf4113.h) extern uint8 HalSynInit(void); extern uint8 HalSynStart(uint16 rf_Freq); extern uint8 halSynSetFunc(uint8 funcSet, uint8 mode);
  16. 16. 16 main() #include #include "hal_adf4113.h" #define BTN1 P3_bit.P3_2 #define BTN2 P3_bit.P3_3 void main() { TriWire_LE = 0; BTN1 = 1; BTN2 = 1; HalSynInit(); while(1) { if (BTN1 == 0) { delayms(50); if (BTN1 == 0){ while(BTN1 == 0); HalSynStart(2476); } } if (BTN2 == 0) { delayms(50); if (BTN2 == 0){ while(BTN2 == 0); halSynSetFunc(ADF4113_SET_LD_PREC, ADF4113_LD_PREC_5CYCLE); halSynSetFunc(ADF4113_SET_ABP, ADF4113_ANTI_WIDTH_1P5NS); halSynSetFunc(ADF4113_SET_CURRENT, ADF4113_ICP6); halSynSetFunc(ADF4113_SET_COUNTER_CONT, ADF4113_TCOUNTER10); halSynSetFunc(ADF4113_SET_MUX, ADF4113_MUX_DIVN_OUT); HalSynStart(2423); } } } } HalSynStart() 3-wire I/O hal_adf4113.h