Semua Loop Kunci Fase Digital

9

Saya mencari untuk menerapkan kunci fase dalam FPGA tanpa menggunakan komponen eksternal (selain ADC). Untuk kesederhanaan, penguncian ke pulsa biner sederhana sudah memadai. Frekuensi sinyal ~ 0,1-1% dari jam. Saya tidak dapat menggunakan jam PLL onboard, karena mereka biasanya:

  1. Tidak dapat dikonfigurasi (ditetapkan saat sintesis).
  2. Gelisah.
  3. Jangan mendukung frekuensi yang saya butuhkan.

Saya telah memilah-milah literatur dan menemukan beberapa loop fase biner terkunci. Paling menonjol desain "denyut nadi" yang bisa saya kirimi tautan jika diinginkan. Saya telah menerapkan dan mensintesis dengan beberapa keberhasilan, tetapi jangkauan jitter dan lock-nya tidak sebagus yang diiklankan. Saya juga sudah sukses menggunakan DVCO eksternal, tetapi saya lebih suka jika saya bisa menerapkan semuanya pada chip.

Desain sirkuit digital atau bahkan petunjuk ke arah yang benar akan sangat membantu (saya telah membenturkan kepala saya terhadap hal ini untuk sementara waktu), implementasi FPGA yang terbukti akan luar biasa tetapi tidak diharapkan.

TAMBAH 10-27-2010

Desain DPLL aktual yang saya gunakan memiliki "Random Walk Filter" sebagai filter loop (bukan "pulse steal" yang dijelaskan sebelumnya, menelusuri catatan saya yang tidak berfungsi dengan baik), yang kemudian mengarahkan pulsa clock ke DCO . Rentang penguncian diatur melalui pembagi di DCO. Sensitivitas loop ditetapkan dengan memvariasikan panjang jalan acak.

Makalah di mana ini ditemukan dikutip pada akhir posting ini. Setelah mengimplementasikan bagian-bagiannya sendiri, saya menemukan bahwa itu sebenarnya sudah diterapkan pada OpenCores, namun ternyata dalam beberapa bulan terakhir proyek telah dihapus tetapi saya memiliki file Verilog yang disimpan jika ada yang menginginkannya.

Yamamoto, H .; Mori, S .; , "Kinerja Biner Menguantifikasi Semua Loop Terkunci Fase Digital dengan Kelas Baru dari Sequential Filter," Komunikasi, Transaksi IEEE aktif, vol.26, no.1, hlm. 35-45, Jan 1978

doi: 10.1109 / TCOM.1978.1093972

URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1093972&isnumber=23895

crasic
sumber
1
Harap tautkan ke desain 'denyut nadi' - tidak ada alasan untuk tidak melakukannya.
Kevin Vermeer

Jawaban:

6

Bisakah Anda memposting rincian lebih lanjut tentang frekuensi target, jitter dan bandwidth loop (waktu penyelesaian yang diperlukan)? Juga, apa jenis osilator yang ingin Anda gunakan (eksternal dengan DAC, dengan / tanpa dithering ?, pada chip digital counter / akumulator)?

Jika Anda senang dengan "osilator" digital (yaitu akumulator yang melimpah) dan jitter-nya, maka sisa rangkaiannya bisa cukup sederhana:

  • penghitung (PFD) menghitung jumlah siklus antara referensi dan (opsional dibagi) output PLL,
  • filter digital - apa pun akan dilakukan dengan asumsi ia melakukan integrasi (akumulator) dan memiliki nol (minus (atau plus?) keluaran PFD yang diskalakan) untuk menstabilkan loop, secara opsional satu atau lebih kutub di atas loop bandwidth untuk mengurangi nilai kontrol "riak" pada frekuensi referensi (hanya penting jika fref
  • bit paling signifikan dari output filter digital (nilai kontrol DVCO) diberikan sebagai input ke akumulator melimpah (DVCO).

Adapun loop bandwidth, jika tidak ditegakkan dengan menetapkan waktu, putuskan berdasarkan kontribusi kebisingan dari semua komponen.

  • Jika jitter terutama berasal dari referensi atau dari PFD - gunakan bandwidth yang lebih kecil,
  • Jika kebisingan berasal dari osilator - tingkatkan.

Jika sinyal referensi termodulasi fase atau frekuensi - gunakan lebar pita loop lebih rendah dari frekuensi terkecil dari sinyal yang memodulasi referensi.

Teknik yang lebih rumit digunakan jika frekuensi output dekat atau sama dengan frekuensi clock dan / atau jika jitter rendah atau rentang penguncian yang sangat cepat diperlukan. Mungkin dalam kasus Anda mereka tidak diperlukan, selain itu mereka mungkin tidak cocok untuk implementasi FPGA.

Andrzej
sumber
Jika seseorang ingin misalnya mengalikan frekuensi sinyal masuk yang stabil dengan 16 dan satu memiliki jam yang relatif cepat untuk itu, apa untungnya menggunakan filter digital sebagai lawan mengukur jumlah jam antara masing-masing tepi dan sebelumnya satu, dan mencari tahu frekuensi apa yang harus dikeluarkan sehingga pulsa keluaran yang harus bertepatan dengan tepi jam input berikutnya akan melakukannya? Jika input clock jitter tidak lebih dari siklus clock, output jitter seharusnya sama baiknya. Skema semacam itu dapat mulai menghasilkan keluaran bersih segera setelah mendapat pulsa input kedua.
supercat
1

Jika Anda dapat mentolerir sedikit jitter tetapi sebagian besar hanya perlu pencatatan waktu yang tepat terhadap jam drifty untuk pemulihan data, Anda mungkin ingin menerapkan sesuatu seperti CAN Standard PLL (dimulai pada halaman 67 dari PDF itu). Ini bekerja berdasarkan penghitung luapan yang harus disetel secara nominal dengan benar, tetapi disinkronkan hingga ke tepi dalam aliran pulsa masuk.

AM Shea
sumber