digit. fazovy zaves

VA Elektronik - Andel Vladimir ing. vaelektronik
Středa Březen 17 11:43:08 CET 2004


>Nemohl by mi nekdo blize osvetlit cinnost digitalniho fazoveho zavesu
>realizovany jednocipem. Uvital bych i pripadny demonstaracni kousek
>zdrojaku.
Fazovy zaves s jednocipem jsem delal uz nekolikrat. Funguje to stejne,
jako v analogove forme. Aby to chodilo dobre a bylo to stabilni, regulace
musi mit integracni slozku (rizeni frekvence fazovym rozdilem) a
proporcionalni
slozku (posuv faze vystupu na zaklade fazoveho rozdilu). Presnost regulace
je dana typem promennych (8 nebo 16bitove).
    Jedna z aplikaci byl prijimac DCF77. Presne zasynchronizovani na zacatek
vterinovych pulsu (+- 5 ms) je nutnou podminkou cteni zaruseneho signalu
a udrzeni synchronizace i v pripade, ze se podari zachytit pouze malou
cast vterinovych impulzu. Zdrojak se bude asi zdat neprehledny, ale je to
kus vytrzeny z kontextu. Uvedena cast programu se provadi v dobe
-45 az +55 ms proti nabezne hrane vterinoveho pulzu. Kdyz nabezna
hrana vterinoveho impulzu prijde mimo tento interval, je pocitana jako
chyba. Podle pomeru spravne a chybne prtijatych nabeznych hran
se rozhoduje, zda je PLL zachycena.
    Cele je to v dane aplikaci slozitejsi, napr. prepinani velikosti korekce
po zachyceni PLL, ale to jsem pro zjednoduseni vyhazel. Pocatecni
zachyceni se taky provadi jinak, protoze impulzy jsou kratke a daleko
od sebe a oscilator se doladuje jen o malo.

Vysvetlivky: Cekej(K)   je zpozdeni K x 5 ms
                     Pri              je logicky vystup prijimace
                     Zacimp      sleduje, kdy prisla nab. hrana impulzu
                                        a podle toho ridi PLL
                     Sync           indikace zachyceni PLL
                     Korekce     vystup z faz. detektoru
                     Ladnap      je vystup ladiciho napeti pro doladeni
                                        krystalu

                     Clk             pricitani hodinovych pulzu po 5 ms dava
                                        rizeny kmitocet

  Zacimp=0;               /* zacatek sledovaneho intervalu PLL; 955 ms */
  if(Pri) Zacimp=1;
  Cekej(8);                  /* 995 ms, doladeni + */
  if(Pri) Zacimp|=2;
  Cekej(1);                  /* 1000 ms  synchronizace zacatku vteriny  */
  ACC=Sec; INRDEC(); Sec=ACC;    /* dekadicke pricteni vteriny */
  if(Sec==0x60) Sec=0;

  Cekej(1);                           /*  1005 ms pro PLL doladeni - */
  if(Pri) Zacimp|=4;
  Cekej(8);                 /*  1045 ms, konec sledovaneho intervalu  */
  if(Pri) Zacimp|=8;
  if(Sync>250) Sync=250;    /* omezeni pricitani */


  switch (Zacimp)
    {
    case 14: { Korekce++; Sync++; break; } /* hrana v case 995 ms */
    case 12: { Sync++; break; }            /* hrana v case 1000 ms */
    case 8:  { Korekce--; Sync++; break; } /* hrana v case 1005 ms */
    default:
      {
      if(Sync>3) Sync-=3;    /* chyba synchro */
      else Sync=0;
      }
    }
                                                    /* ladeni osc. PLL  */
  if(Korekce>(128+32))            /* stred je pri Korekce=128  */
    {
     Korekce=128;
    if((Ladnap<200) Ladnap++;
    else Ladnap=200;
    Clk++;                              /* posuv faze vyst. osc . o 5 ms */
    }

  if(Korekce<(128-32))
    {
     Korekce=128;           /* neprictenim Clk se faze posune zpet */
    if(Ladnap>1) Ladnap--;
    else Ladnap=1;
    }
  else Clk++;                /* Pricteni vyst. oscilatoru o 5 ms vzdy,
                                      kdyz neni korekce do -  */




if(Clk>199) Clk=0;    /* nastaveni kmitoctu oscilatoru na 1 Hz */








Další informace o konferenci Hw-list