Outils pour utilisateurs

Outils du site


votre temps local: :: ()

heure officielle (en France) : ::(TZ:)

Heure UTC client: :: Offset client: s - delai: ms - - timeZone: Heure UTC: ::
fr:dds

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Prochaine révision Les deux révisions suivantes
fr:dds [2016/03/02 10:43]
fwiotte [Direct Digital Synthesizer]
fr:dds [2018/03/23 11:13]
fwiotte [Discussion]
Ligne 1: Ligne 1:
-====== ​ Direct Digital Synthesizer ​ ====== +FIXME **Cette page n'est pas encore traduite entièrement. Merci de terminer la traduction**\\ //(supprimez ce paragraphe une fois la traduction terminée)//
-Les "​Direct Digital Synthesizers" ​(DDSsont des synthétiseurs qui peuvent générer des formes d'​ondes arbitraires à diverses fréquences à partir d'une fréquence de référence fixe. +
  
-[[fr: le principe de fonctionnement d'un DDS]] 
  
-[[fr: les applications DDS]] +======  ​Direct Digital Synthesizer ​ ​====== 
- +Direct Digital Synthesizers ​(DDS) are frequency ​synthesizers creating variable ​frequency ​arbitrary waveforms from a single, fixed-frequency reference ​clock. ​Many kinds of designs are used.
-[[fr: les différents mode de programmation]] +
- +
-[[fr: Exemple de développement autour d'un DDS: l'​AD9959]] +
- +
- +
- +
- +
- +
-======Les différents registres d'​un ​ DDS: l'​AD9959====== +
-Le premier registre à programmer est le registre CSR: table 28 du datasheet  +
-      registre CSR (channel select register)  +
-      One byte is assigned to this register: ​ nombre d'​octets du registre  +
-      CSR serial address ​0x00;  +
-      CSR defaut value 0xF0;  +
-Ce registre active les voies de sorties et les modes SPI: +
-Par défaut tous les voies sont activées et le mode SPI Single-bit serial 2-wire est sélectionné. +
-Il est évidemment possible de redéfinir ce registre suivant son application. +
- +
-Le second registre est le registre FR1: table 28 du datasheet  +
-      registre FR1 (fonction register 1)  +
-      three bytes is assigned to this register: nombre d'​octets du registre  +
-      FR1 serial address ​0x01;  +
-      FR1 defaut value 0x00;  +
-Ce registre permet en autres de définir la PLL interne et le coefficient multiplicateur x4 à x20. +
-Pour exemple la valeur à fournir pour activer la PLL x20 => FR1 0xD00000; +
-Dans ce cas il suffit de fournir un quartz à 25MHz avec la PLL activée x20 on a 500MHz d'​horloge PIN 22 et 23 du DDS. +
- +
-Le troisième registre est  le registre CFR table 29 du datasheet  +
-      registre CFR (Channel Function Register)  +
-      three bytes is assigned to this register: nombre d'​octets du registre  +
-      CFR serial address = 0x03;  +
-      CFR defaut value =0x302;  +
-Ce registre défini les différents mode de fonctionnement du DDS.Ce registre est important si vous utiliser +
-certains modes de fonctionnement:​ balayage de fréquence, de phase, ou d'​amplitude. +
-Important par défaut les sortie sont en mode DAC full-scale current. +
- +
-Le quatrième registre est le registre CFTW0: table 29 du datasheet  +
-      registre CFTW0 (Channel Frequency Tuning Word 01 +
-      four bytes is assigned to this register: nombre d'​octets du registre  +
-      CFTW0 serial address = 0x04;  +
-      CFTW0 defaut value =0x00;  +
-Ce registre permet de rentrer la fréquence désirée suivant la relation ci-dessous:​ +
-      FTW0 = frequency ​output x 2^32 /frequency ​clock +
-           +
-Le cinquième registre est le registre CPOW0 table 29 du datasheet  +
-      registre CPOW0 (Channel Phase Offset Word 01)  +
-      two bytes is assigned to this register: ​ nombre d'​octets du registre  +
-      CPOW0 serial address = 0x05;  +
-      CPOW0 defaut value =0x00;  +
-Ce registre définie la phase du signal de sortie codé sur 14 bits avec la relation ci-dessous: +
-      CPOW0 = Delta phi x 2^14 /360° +
-            +
-Le sixième registre est le registre ACR: table 29 du datasheet  +
-      registre ACR (Amplitude Control Register) +
-      two bytes is assigned to this register: ​ nombre d'​octets du registre  +
-      ACR serial address = 0x06;  +
-      ACR defaut value =0x00;  +
-Ce registre permet de définir l'​amplitude. +
-Par défaut l'​amplitude est en mode full scale mais programmable si on modifie le registre CFR. +
- +
-Les autres registres sont utiles pour programmer le DDS pour des balayages de fréquences,​ de phases et d'​amplitudes en autres. +
-      Registre FR2 (Function Register 2) +
-      Registre LSRR (Linear Sweep Ramp Rate1) +
-      Registre FDW (LSR Falling delta Word1)  +
-      Registre RDW (LSR Risingdelta Word1) +
-      Registre CW1 (Channel Word 1) +
-      ... +
-**Exemple de programme en C écrit dans le microcontrôleur MSP430F169** +
- +
-initialisation et chargement des registres CSR et CFTW0: +
- +
-      int  CSR_ADDRESS = 0x00;   ​AD9959 CSR adresss Byte +
-      int CSR_NUM_BYTE = 0x01;   CSR nombre d'​octet du registre +
-      long CSR0 = 0x10;          AD9959 du channel 0 MSB first SPI par défaut +
-          +
-      int  FTW_ADDRESS = 0x04;   ​AD9959 FTW adresss Byte +
-      int FTW_NUM_BYTE = 0x04;   FTW nombre d'​octet du registre +
-      long FTW0 = 0x28F5C28F; ​   frequence en hex fout x2^32/​fclock +
-          +
-dans le main: +
-      P4OUT = 0x40;          AD9959 master reset bit de validation du MSP430 +
-      P4OUT = 0x00;          AD9959 master set   bit de validation du MSP430 +
-       +
-      write_serial_port(CSR_ADDRESS,​ CSR0, CSR_NUM_BYTE);​ +
-      P5OUT = 0x40;          I/O update du DDS bit de validation du MSP430  +
-      P5OUT = 0x00;          I/O update du DDS bit de validation du MSP430 ​  +
-       +
-      write_serial_port(FTW_ADDRESS,​ FTW0, FTW_NUM_BYTE);​ +
-      P5OUT = 0x40;          I/O update du DDS bit de validation du MSP430  +
-      P5OUT = 0x00;          I/O update du DDS bit de validation du MSP430 ​  +
- +
- +
-**Commentaires sur le programme:​** +
- +
-on fait un RESET du DDS (pin 3), on charge les données de chaque registre au travers du port SPI write_serial_port... +
-Puis on réalise un I/O UPDATE pin 46 du DDS pour la validation et le transfert des données. +
-Ce bout de programme permet de charger le channel 0 avec une fréquence de 80MHz et une amplitude par défaut FULL DAC. +
- +
-I/O_UPDATE is synchronous to the SYNC_CLK (Pin 54) = Master ​clock/4. +
-Voir figure 40 du datasheet du DDS. +
- +
-Ci-dessous le sous programme d'​initialisation des ports du microcontrôleur et du SPI pour le MSP430F169 : TI fourni de nombreux exemples de codes de bases pour configurer les modes SPI, I2C et utiliser la mémoire Flash: {{:​fr:​slac015p.zip|}} +
-       +
-      #​include ​ <​msp430x16x.h>​ +
-      void DDS_quartz_oscillator_init(void) +
-      { +
-        BCSCTL1 |= XTS;               ACLK= LFXT1= HF XTAL  +
-        BCSCTL2 |= SELM_3; ​           MCLK = LFXT1 (safe) pin 8,9 du MSP430 +
-        P1SEL = 0x00;                 P1 I/O select +
-        P2SEL = 0x00;                 P2 I/O select +
-        P3SEL = 0x00;                 P3 I/O select +
-        P4SEL = 0x00;                 P4 I/O select +
-        P5SEL = 0x0A;                 ​P5.1,​3 SPI option select +
-        P6SEL = 0x00;                 P6 I/O select +
-        P1DIR = 0xFF;                 ​P1.output direction +
-        P2DIR = 0xFF;                 P2 output direction +
-        P3DIR = 0xFF;                 P3 output direction +
-        P4DIR = 0xFF;                 P4 output direction +
-        P5DIR = 0xFF;                 P5 output direction +
-        P6DIR = 0xFF;                 P6 output direction +
-        ME2 |= USPIE1; ​               Enable USART1 SPI +
-        UCTL1 |= CHAR + SYNC + MM;    8-bit SPI Master **SWRST** +
-        UTCTL1 = CKPH + SSEL1 + STC;  SMCLK delayed, 3-pin +
-        UBR01 = 0x2;                  ACLK/2 for baud rate +
-        UBR11 = 0x0;                  ACLK/2 for baud rate +
-        UMCTL1 = 0x0;                 Clear modulation +
-        UCTL1 &= ~SWRST; ​             Initialize USART state machine +
-      } +
- +
-BCSCTL1 |= XTS; et BCSCTL2 |= SELM_3; ​ permet d'​être en mode HF XTAL le MSP430 fonctionnera à 8MHZ au lieu +
-de 32KHz par défaut. +
-               ​MSP430F169 +
-             ​----------------- +
-         /​|\| ​             XIN|- +
-          | |                 | HF XTAL (455k - 8Mhz) +
-          --|RST ​         XOUT|- +
-            |                 | +
-            |             ​P5.4|-->​MCLK = XTAL +
- +
-D'​après : +
-//  M. Buccini +
-//  Texas Instruments Inc. +
-//  Feb 2005 +
-//  Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.21A    +
-   +
-la routine pour le chargement des données en mode SPI du MSP430F169 : +
- +
-        void write_serial_port(int instruction,​ long data, int num_byte) +
-        { +
-         int i=0; +
-   +
-         ​TXBUF1 = instruction;​ +
-          do +
-         { +
-         ​TXBUF1 = data >>​(num_byte-1-i)*8;​ +
-         ​i++;​ +
-         } +
-          while (i < num_byte);​ +
-        } +
-la routine pour le chargement des données en mode SPI de l'ARM TM4C123GH6PM : +
- +
-   int i=0; +
-   ​SSI0_DR_R =  instruction;​  +
-    while( num_byte ) +
-     { +
-          while(!(SSI0_SR_R & SSI_SR_TNF)) {} // SPI0 du TM4C123GH6PM +
-          SSI0_DR_R =  data >>​(num_byte-1-i)*8;​ +
-          num_byte--; ​           +
-     } +
-     +
-    while( !( SSI0_SR_R & SSI_SR_TNF ) ) +
-          { +
-            ; +
-          } +
-La routine init (SPI) pour l'ARM TM4C123GH6PM:​  +
- +
-    // Enable Peripheral SSI0 +
-    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);​ //Enable GPIO port A SSI0. +
-    SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);​ +
-    GPIOPinConfigure(GPIO_PA2_SSI0CLK);​  +
-    GPIOPinConfigure(GPIO_PA3_SSI0FSS);​ +
-    GPIOPinConfigure(GPIO_PA5_SSI0TX);​ +
-    GPIOPinTypeSSI(GPIO_PORTA_BASE,​ GPIO_PIN_5 | GPIO_PIN_3 | GPIO_PIN_2);​ +
-    //​GPIOPinTypeSSI(GPIO_PORTA_BASE,​ GPIO_PIN_5 | GPIO_PIN_2);​ +
-    SSIConfigSetExpClk(SSI0_BASE,​ SysCtlClockGet(),​ SSI_FRF_MOTO_MODE_0,​ +
-    SSI_MODE_MASTER,​ 10000000, 8); +
-    SSIEnable(SSI0_BASE);​ // Enable the SSI  +
-Exemple d'​initialisation d'un PORT sur l'ARM TM4C123GH6PM ​    +
-  //void PortB_Init(void) +
-  volatile unsigned long delay; +
-  SYSCTL_RCGC2_R |= 0x00000002; ​    // 1) activate clock for Port B +
-  delay = SYSCTL_RCGC2_R; ​          // allow time for clock to start +
-  GPIO_PORTB_AMSEL_R = 0x00;        // 3) disable analog on PB +
-  GPIO_PORTB_PCTL_R = 0x00000000; ​  // 4) PCTL GPIO on PB0 +
-  GPIO_PORTB_DIR_R |= 0xFF;         // 5) PB0-PB7 is out +
-  //​GPIO_PORTB_AFSEL_R &= ~0x01; ​     // 6) disable alt funct on PB0 +
-  GPIO_PORTB_AFSEL_R &= ~0xFF; ​     // 6) disable alt funct on PB0-PB7 +
-  GPIO_PORTB_DEN_R |= 0xFF;         // 7) enable digital I/O on PB0-PB7 +
- +
-====== Un schéma de base avec l'​AD9959 ====== +
-Parce qu'un schéma vaut mieux qu'un long discours! +
-Cette carte est générique,​ et grâce au port SPI sur la carte on +
-peut connecter n'​importe quel microcontrôleur disposant d'un port SPI.+
  
-{{:​fr:​carte_ad9959.png?​200|}}+===== Useful links =====
  
-====== La carte électronique pour l'​habillage du piège RF===== +A good tutorial about the designs of DDS is here [[http://​www.ieee.li/​pdf/​essay/​dds.pdf|A Technical Tutorial on Digital Signal Synthesis]]\\
-===== BEC de Rubidium ====== +
-{{:fr:dds_ad9959_bec.pdf|}}+
  
-**Projet Habillage piège RF:** 
-On remarquera sur le PCB ci-dessus que l'on utilise des composants RF externes (minicircuits) pour chaque voie de sortie qui permettent l'​adaptation d'​impédance,​ le filtrage du signal, et l'​amplification de sortie. L'​horloge du DDS est externe sans le VCO présent sur l'​image. 
-Cette carte intègre le port USB et une communication série UART entre le microcontrôleur et le bus USB.  
-Un petit programme exécutable crée sous CVI permet le chargement des données (fréquences,​ amplitudes, phases…) 
  
-===== BEC de Strontium ​=====+===== Discussion ​=====
-**Projet Antenne RF:** +
-Développement récent: RF CARD 375 to 400MHz Frequency Sweep control for RF antenna. +
-Le but est de générer des sweeps de fréquence arbitraire pour une antenne RF dans la gamme de fréquence 375 à 400 MHz. +
-J'​utilise deux DDS , l'​AD9911 pour asservir un VCO ultra low noise à 1GHZ  (ROS-1000-519+) minicircuits et le second l'​AD9858 pour générer les fréquences arbitraires. +
-Ce dernier est "​clocké"​ grâce au 1GHz provenant du VCO sur la carte. +
-J'​utilise également le MSP430F169 pour piloter les deux DDS en mode SPI 2wire single bit (bus SPI commun, un master et deux slaves en utilisant le chip select (CS) de chaques DDS).Carte réalisée ci-dessous+
  
-====Projet STRONTIUM antenne RF 375-400MHz==== +The " Direct Digital Synthesizers"​ (DDS ) are synthesizers that can generate arbitrary waveforms at various frequencies from a fixed reference frequency.
-Document complet +
-{{:​fr:​driver_rf_400mhz.pdf|}} +
-====Projet STRONTIUM ​DDS CARD sur BUS National Instrument==== +
-Document complet +
-{{:​fr:​cartes_dds_ad9858_et_ad9852_sur_carte_ni_dio_32hs.pdf|}} +
-====== Le programme sous windows avec interface CVI ======+
  
-Une routine sous Windows CVI à été développée avec une liaison USB-Série (un pont USB). +[[DDS applications]]
-Ci-dessous le programme en C dans le microcontrôleur qui permet le transfert des données à une vitesse maximale de 1Mb +
-  data1 => données séries venant du pont USB-serial.puce FTDI +
  
-   +[[various programming mode]]
-  int UART0_send(void) +
-  while(1) +
-   { +
-     ​while(i<​1) +
-    { +
-      data1[j++] = UART_InChar();​ +
-      if (j > sizeof data1-1) +
-      { +
-        UART_OutChar(data1[i++]); +
-      } +
-      if (i < sizeof data1) +
-      UART_OutChar(data1[i++]); +
-    } +
-     ​i=0;​ +
-     ​j=0;​ +
-     ​return 0; +
-   ​} ​   ​+
  
-Poster sur les applications autour des DDS au laboratoire LPL. +[[Example of development around the AD9959 ​DDS]]
-Présenté pour les rencontres des électroniciens à Toulouse en 2014. +
-{{:​fr:​generateurs_rf_a_base_de_technologie_dds-a0.pdf|}}+
  
-=====Les dernières applications DDS au LPL====== +[[programs to communicate with the DDS]]
-DDS sur bus série SPI avec rack 6 DDS AD9858 et microcontrôleur 32-bit ARM ® Cortex™ -M4 core. +
-Lien ci-dessous vers le service électronique du laboratoire LPL : +
-Poster 1 & Poster 2 les applications électroniques au LPL +
-[[http://​www-lpl.univ-paris13.fr/​FR/​]] Posters 2015+
  
-{{:​fr:​20151027electroniqueatomesfroidslpl1-a0.pdf|}} 
  
-{{:​fr:​20151027electroniqueatomesfroidslpl2-a0.pdf|}} 
fr/dds.txt · Dernière modification: 2018/03/23 14:39 par fwiotte