Chcę zaimplementować blokadę fazy w układzie FPGA bez użycia zewnętrznych komponentów (innych niż ADC). Dla uproszczenia wystarczające jest zablokowanie prostym impulsem binarnym. Częstotliwość sygnałów wynosi ~ 0,1-1% zegara. Nie mogę korzystać z wbudowanych zegarów PLL, ponieważ zazwyczaj są to:
- Nie można konfigurować (ustawiane podczas syntezy).
- Roztrzęsiony.
- Nie obsługuj częstotliwości, której potrzebuję.
Przeglądałem literaturę i znalazłem kilka pętli zamkniętych w fazie binarnej. Najbardziej zauważalny projekt „kradzieży impulsów”, do którego mogę w razie potrzeby zamieścić link. Wdrożyłem i zsyntetyzowałem z pewnym sukcesem, ale jego zakres drgań i blokad nie był tak dobry, jak reklamowany. Odniosłem również sukces, korzystając z zewnętrznego DVCO, ale wolałbym, gdybym mógł zaimplementować wszystko na chipie.
Pomocny byłby projekt obwodu cyfrowego, a nawet wskazówka we właściwym kierunku (od jakiegoś czasu uderzam głową), sprawdzona implementacja FPGA byłaby cudowna, ale nie oczekiwana.
DODANO 10–27–2010
Rzeczywisty projekt DPLL, którego użyłem, ma „filtr losowego przejścia” jako filtr pętli (nie opisany wcześniej „kradzież impulsów”, przeglądający moje notatki, które nie działały dobrze), który następnie przesyła impulsy zegara do DCO . Zakres blokady ustawia się za pomocą dzielnika w DCO. Czułość pętli ustala się poprzez zmianę długości losowego marszu.
Artykuł, w którym się to znajduje, jest cytowany na końcu tego postu. Po samodzielnym wdrożeniu jego części odkryłem, że zostało ono już zaimplementowane na OpenCores, jednak okazuje się, że w ostatnich miesiącach projekt został usunięty, ale mam pliki Verilog zapisane, jeśli ktoś ich chce.
Yamamoto, H .; Mori, S .; , „Performance of Binary Quantized All Digital Digital Phase-Locked Loop with New Class of Sequential Filter,” Communications, IEEE Transactions on, tom 26, no.1, str. 35-45, styczeń 1978
doi: 10.1109 / TCOM.1978.1093972
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1093972&isnumber=23895
Odpowiedzi:
Czy możesz podać więcej szczegółów dotyczących częstotliwości docelowej, jittera i przepustowości pętli (wymagany czas ustalania)? A także, jakiego rodzaju oscylatora chcesz użyć (zewnętrznego z przetwornikiem cyfrowo-analogowym, z / bez ditheringu ?, na cyfrowym liczniku / akumulatorze)?
Jeśli jesteś zadowolony z cyfrowego „oscylatora” (tj. Przepełnionego akumulatora) i jego drgań, to reszta obwodu może być dość prosta:
Jeśli chodzi o przepustowość pętli, jeśli nie jest to wymuszone przez ustalanie czasu, zdecyduj na podstawie wkładu hałasu wszystkich komponentów.
W przypadku, gdy sygnał odniesienia jest modulowany fazowo lub częstotliwościowo - użyj szerokości pasma pętli mniejszej niż najmniejsza częstotliwość sygnału modulującego odniesienie.
Techniki trudniejsze są stosowane, jeśli częstotliwość wyjściowa jest bliska lub równa częstotliwości taktowania i / lub jeśli wymagany jest niski jitter lub bardzo szybki zakres blokowania. Być może w twoim przypadku nie są one potrzebne, poza tym mogą nie być dobrze dostosowane do implementacji FPGA.
źródło
Jeśli możesz tolerować drżenie, ale przeważnie potrzebujesz tylko precyzyjnego taktowania w stosunku do znoszonego zegara do odzyskiwania danych, możesz zaimplementować coś takiego jak CAN Standard PLL (zaczyna się na stronie 67 tego pliku PDF). Działa to w oparciu o licznik przepełnienia, który powinien być dostrojony nominalnie poprawnie, ale synchronizuje do krawędzi w strumieniu przychodzącego impulsu.
źródło