Skip to content

Clock synthesizer và jitter cleaner

Một board embedded thường cần nhiều tần số clock khác nhau (cho SoC, DDR, PCIe, Ethernet PHY, transceiver của FPGA, ADC và DAC), nhưng chỉ có một hoặc vài bộ dao động tham chiếu. Chip clock synthesizer dùng vòng khóa pha (phase-locked loop, PLL) để tạo các tần số đó từ một tham chiếu chung, đồng thời có thể lọc jitter và đồng bộ theo nguồn thời gian bên ngoài. Trang này trình bày theo thứ tự: vai trò của chip clock trên board, phân loại, kiến trúc PLL, các thông số kỹ thuật, các họ chip tiêu biểu, clock cho JESD204B/C, cách cấu hình và lập trình chip, tích hợp trên Linux và các lưu ý khi thiết kế board. Nguyên lý của bản thân bộ dao động tham chiếu (XO, TCXO, OCXO) nằm ở trang Thạch anh và bộ dao động.

Chưa kiểm chứng

Đặc điểm định tính của các chuẩn ngõ ra (LVCMOS, LVDS, LVPECL, HCSL, CML) trong bảng thông số chưa được đối chiếu với một tài liệu chuẩn cụ thể. Phiên bản kernel đầu tiên có driver ZL3073x và tình trạng mainline của driver HMC7044, AD9528 cũng chưa được kiểm tra trên cây kernel chính thức (xem mục Tích hợp trên Linux).

Vai trò trên board

Mỗi khối trên board có yêu cầu clock riêng về tần số, chuẩn tín hiệu và độ nhiễu. Ví dụ, clock tham chiếu của PCIe là tín hiệu vi sai HCSL, Ethernet PHY và SerDes cần clock có jitter thấp trong dải tần của bộ khôi phục clock, còn ADC tốc độ cao có tỉ số tín hiệu trên nhiễu (SNR) bị giới hạn trực tiếp bởi jitter của clock lấy mẫu. Dùng một bộ dao động riêng cho mỗi tần số làm tăng số linh kiện và không bảo đảm các clock có quan hệ pha cố định với nhau.

Chip clock giải quyết hai việc. Thứ nhất là tổng hợp tần số (frequency synthesis): từ một tham chiếu, PLL tạo ra tần số cao rồi chia xuống thành nhiều ngõ ra. Thứ hai là lọc jitter và đồng bộ: khi tham chiếu đến từ bên ngoài (clock khôi phục từ SyncE, 1PPS từ GNSS, clock từ backplane), tham chiếu này thường nhiễu, và PLL với băng thông vòng hẹp chỉ bám theo tần số trung bình của tham chiếu, còn nhiễu pha ngắn hạn lấy theo bộ dao động sạch trên board.

Ví dụ cây clock trên board vô tuyến hoặc board đồng bộ thời gian

Hình trên là một ví dụ cây clock (clock tree): network synchronizer khóa theo nguồn thời gian bên ngoài và dùng OCXO hoặc TCXO để giữ tần số khi mất tham chiếu, sau đó cấp tham chiếu cho clock generator (clock cho SoC, PHY) và jitter cleaner (clock cho bộ chuyển đổi dữ liệu). Board thực tế có thể gộp hoặc bỏ bớt các tầng này.

Phân loại chip clock

Tên gọi giữa các hãng không thống nhất, và nhiều chip thuộc nhiều nhóm cùng lúc. Bảng sau phân loại theo chức năng chính.

Nhóm Chức năng Đặc điểm Ví dụ
Clock generator Tạo nhiều tần số từ một tinh thể hoặc tham chiếu cục bộ Không cần bám theo tham chiếu ngoài, cấu hình qua I2C hoặc ghi sẵn trong NVM Si5351, Si5341
Clock buffer (fanout) Nhân bản một clock thành nhiều ngõ ra, có thể đổi chuẩn tín hiệu Không có PLL hoặc chỉ có PLL zero-delay, chỉ thêm jitter rất nhỏ Các dòng fanout buffer của các hãng
Jitter attenuator (jitter cleaner) Bám theo tham chiếu nhiễu và tạo lại clock sạch Thường dùng hai vòng PLL: vòng băng thông hẹp để lọc, vòng băng thông rộng với VCO tần số cao để tổng hợp LMK04828, HMC7044
Network synchronizer Đồng bộ theo SyncE, 1PPS, GNSS, có holdover và chuyển nguồn tham chiếu Dùng DPLL, băng thông vòng xuống mức mHz, có DCO để phần mềm PTP điều chỉnh tần số, tuân thủ các chuẩn ITU-T như G.8262 AD9545, LMK05318, Renesas 8A34001, Microchip ZL3073x
RF synthesizer Tạo tín hiệu dao động nội (local oscillator) cho mạch RF PLL kèm VCO tích hợp, tần số tới hàng GHz Ngoài phạm vi trang này

Kiến trúc PLL

PLL là vòng điều khiển phản hồi giữ cho pha của bộ dao động điều khiển bằng điện áp (voltage-controlled oscillator, VCO) bám theo pha của tham chiếu. Tham chiếu được chia bởi bộ chia R, tín hiệu từ VCO được chia bởi bộ chia hồi tiếp N, rồi bộ so pha và tần số (phase frequency detector, PFD) so sánh hai tín hiệu đã chia. Charge pump biến sai lệch pha thành dòng điện, loop filter biến dòng điện thành điện áp điều khiển VCO. Khi vòng đã khóa, tần số VCO bằng tần số tham chiếu nhân N/R. Các bộ chia ngõ ra M chia tần số VCO xuống tần số của từng ngõ ra.

Sơ đồ khối PLL trong clock synthesizer

Các biến thể kiến trúc chính:

  • Integer-N: N là số nguyên, nên bước tần số bằng tần số tại PFD. Muốn bước tần số nhỏ thì phải giảm tần số PFD, làm tăng nhiễu.
  • Fractional-N: N có phần lẻ, thực hiện bằng cách thay đổi hệ số chia theo chu kỳ bằng bộ điều chế delta-sigma. Kiến trúc này cho phép tạo tần số bất kỳ từ một tham chiếu nhưng sinh ra các thành phần nhiễu lẻ (spur) cần được kiểm soát. Một số hãng đưa phần chia lẻ vào bộ chia ngõ ra, ví dụ MultiSynth trong Si5351 cho phép mỗi ngõ ra có tần số riêng không liên quan tới nhau.
  • Dual-loop: vòng thứ nhất có băng thông hẹp, dùng VCXO hoặc VCO sạch để lọc jitter của tham chiếu, vòng thứ hai có băng thông rộng và VCO tần số GHz để tổng hợp các ngõ ra. LMK04828 là ví dụ của kiến trúc này.
  • DPLL (digital PLL): bộ so pha là bộ chuyển đổi thời gian sang số (time-to-digital converter, TDC), loop filter là bộ lọc số. Vì bộ lọc là số nên băng thông vòng có thể xuống rất thấp (LMK05318 cho phép từ 1 mHz), và trạng thái của vòng có thể được lưu lại để giữ tần số khi mất tham chiếu.

Băng thông vòng (loop bandwidth) quyết định nguồn nhiễu nào chiếm ưu thế ở ngõ ra. Trong dải tần thấp hơn băng thông vòng, nhiễu pha ở ngõ ra bám theo nhiễu của tham chiếu. Trong dải tần cao hơn, nhiễu pha ở ngõ ra là nhiễu của VCO. Vì vậy jitter cleaner chọn băng thông hẹp khi tham chiếu nhiễu, còn clock generator với tham chiếu là tinh thể sạch có thể chọn băng thông rộng hơn.

Network synchronizer có thêm các chức năng phục vụ đồng bộ mạng:

  • Holdover: khi mất mọi tham chiếu, DPLL giữ tần số theo giá trị đã học trong lúc khóa. Chất lượng holdover phụ thuộc vào bộ dao động trên board, xem Thạch anh và bộ dao động.
  • Chuyển tham chiếu không gián đoạn (hitless switching): khi tham chiếu đang dùng mất hoặc kém chất lượng, chip chuyển sang tham chiếu khác mà không gây bước nhảy pha lớn ở ngõ ra.
  • DCO (digitally controlled oscillator): phần mềm PTP điều chỉnh tần số ngõ ra qua thanh ghi thay vì để DPLL khóa theo tham chiếu phần cứng. Renesas 8A34001 cho phép mỗi kênh hoạt động như DPLL hoặc DCO.

Thông số kỹ thuật

Thông số Ý nghĩa
RMS jitter (phase jitter) Độ lệch chuẩn của sai lệch thời gian cạnh xung, tính bằng tích phân nhiễu pha trong một dải tần. Datasheet phải ghi kèm dải tích phân, ví dụ 12 kHz đến 20 MHz. Các chip jitter cleaner hiện nay đạt mức vài chục đến dưới 100 fs trong dải này
Phase noise Nhiễu pha theo độ lệch tần số so với sóng mang, đơn vị dBc/Hz. Là dạng miền tần số của jitter, dùng để so sánh với mặt nạ yêu cầu của ADC hoặc SerDes
Noise floor Mức nhiễu pha ở độ lệch tần số lớn, quan trọng với ADC lấy mẫu tín hiệu băng rộng
Loop bandwidth Băng thông vòng PLL, quyết định mức lọc jitter của tham chiếu
Số ngõ ra và chuẩn ngõ ra LVCMOS (đơn cực, tần số thấp), LVDS, LVPECL, CML (vi sai, tần số cao), HCSL (clock tham chiếu PCIe). Nhiều chip cho phép chọn chuẩn trên từng ngõ ra
Dải tần ngõ vào và ngõ ra Network synchronizer nhận tham chiếu từ 1 Hz (1PPS) tới hàng trăm MHz, ví dụ AD9545 nhận từ 1 Hz đến 750 MHz
Lock time, holdover Thời gian khóa sau khi bật nguồn hoặc đổi cấu hình, và độ ổn định khi mất tham chiếu
Chuẩn tuân thủ Với đồng bộ mạng: ITU-T G.8262 (SyncE), G.8273.2 (boundary clock PTP), Telcordia GR-253
NVM Có bộ nhớ không mất dữ liệu (non-volatile memory) để chip tự chạy cấu hình khi bật nguồn hay không

Jitter và nhiễu pha là hai cách biểu diễn của cùng một hiện tượng. RMS jitter được tính bằng cách lấy tích phân hàm nhiễu pha một biên \(\mathcal{L}(f)\) trong dải tần \([f_1, f_2]\):

\[ \sigma_t = \frac{\sqrt{2 \int_{f_1}^{f_2} 10^{\mathcal{L}(f)/10}\, df}}{2 \pi f_0} \]

trong đó \(f_0\) là tần số clock. Giá trị jitter phụ thuộc mạnh vào dải tích phân, nên chỉ so sánh được hai con số khi chúng dùng cùng dải tần. Dải 12 kHz đến 20 MHz có nguồn gốc từ chuẩn SONET và được nhiều datasheet dùng làm mặc định, nhưng ứng dụng cụ thể (một chuẩn SerDes, một ADC) có thể yêu cầu dải khác.

Các họ chip tiêu biểu

Bảng sau liệt kê một số chip theo nhóm ứng dụng. Thông số lấy từ trang sản phẩm hoặc datasheet trong mục Tài liệu tham khảo; khi thiết kế cần đối chiếu revision mới nhất của datasheet.

Chip Hãng Nhóm Đặc điểm chính
Si5351 Skyworks (trước đây Silicon Labs) Clock generator Cấu hình qua I2C, kiến trúc PLL kèm bộ chia MultiSynth, mỗi ngõ ra tới 200 MHz, bản 20 chân QFN có 8 ngõ ra. Biến thể A dùng tinh thể, B có VCXO, C nhận clock ngoài
Si5341 Skyworks (trước đây Silicon Labs) Clock generator jitter thấp Jitter cỡ 100 fs RMS, có NVM, dùng trên một số board đánh giá của Xilinx như ZCU102
LMK04828 Texas Instruments Jitter cleaner, JESD204B Kiến trúc dual-loop, VCO0 2370 đến 2630 MHz, 14 ngõ ra từ PLL2, ngõ ra tới 3,1 GHz, 88 fs RMS (12 kHz đến 20 MHz). Mỗi device clock đi kèm một SYSREF, đủ cho 7 bộ chuyển đổi JESD204B
HMC7044 Analog Devices Jitter cleaner, JESD204B/C 14 ngõ ra tới 3,2 GHz, chọn được CML, LVDS, LVPECL, LVCMOS, có delay analog và digital trên từng ngõ ra, hỗ trợ SYSREF cho JESD204B và JESD204C
LMK05318 Texas Instruments Network synchronizer Một DPLL và hai APLL, băng thông DPLL 1 mHz đến 4 kHz, bước DCO nhỏ hơn 1 ppt cho PTP, jitter 50 fs typical tại 312,5 MHz
AD9545 Analog Devices Network synchronizer Hai DPLL, tham chiếu 1 Hz đến 750 MHz, hai NCO phụ cho servo IEEE 1588, tuân thủ ITU-T G.8262 và hỗ trợ G.8273.2
8A34001 (ClockMatrix) Renesas Network synchronizer 8 kênh, mỗi kênh là DPLL hoặc DCO, DPLL tuân thủ G.8262, bộ so pha dùng được như TDC với độ phân giải dưới 1 ps
ZL3073x (Azurite) Microchip Network synchronizer Tới 5 kênh DPLL, 10 ngõ vào, 20 ngõ ra, giao tiếp I2C hoặc SPI, có driver trong DPLL subsystem của Linux

Về nhà sản xuất: Skyworks hoàn tất mua mảng Infrastructure & Automotive của Silicon Labs, gồm dòng sản phẩm timing, vào tháng 7 năm 2021, nên các chip Si5xxx hiện mang thương hiệu Skyworks. SiTime công bố thỏa thuận mua một phần mảng timing của Renesas vào năm 2026, dự kiến hoàn tất trước cuối năm 2026; trạng thái hoàn tất của thương vụ chưa được kiểm chứng, nên khi chọn các chip ClockMatrix cần kiểm tra kênh hỗ trợ và tình trạng sản xuất hiện tại.

Clock cho JESD204B/C

JESD204B và JESD204C là chuẩn giao tiếp nối tiếp tốc độ cao giữa bộ chuyển đổi dữ liệu (ADC, DAC) và FPGA hoặc SoC. Với subclass 1, mỗi thiết bị trong link nhận hai tín hiệu từ chip clock:

  • Device clock: clock chính của bộ chuyển đổi và của lõi JESD trong FPGA.
  • SYSREF: tín hiệu tham chiếu thời gian chung, đồng bộ nguồn (source-synchronous) với device clock, dùng để căn chỉnh bộ đếm local multiframe clock (LMFC) trên mọi thiết bị.

Mục tiêu của SYSREF là độ trễ xác định (deterministic latency): độ trễ từ lúc lấy mẫu tới lúc dữ liệu ra khỏi bộ thu không đổi sau mỗi lần khởi động lại link. Độ chính xác của độ trễ xác định phụ thuộc vào quan hệ thời gian giữa device clock và SYSREF tại từng thiết bị, và vào độ lệch (skew) khi phân phối hai tín hiệu này trên board. Vì vậy các chip như LMK04828 và HMC7044 cấp device clock và SYSREF theo từng cặp, có delay điều chỉnh được trên từng ngõ ra để bù độ dài đường mạch. Nếu SYSREF chạy liên tục, chu kỳ của nó phải là bội số nguyên của chu kỳ LMFC.

Chi tiết về lõi JESD và driver ở trang JESD (Linux Kernel).

Cấu hình và lập trình chip

Chip clock hiện nay có hàng trăm thanh ghi, nên cấu hình thường được tạo bằng công cụ của hãng thay vì tính tay:

Hãng Công cụ Đầu ra
Skyworks (Silicon Labs) ClockBuilder Pro Project file, register map dạng C header hoặc CSV, file ghi NVM
Texas Instruments TICS Pro, Clock Tree Architect Register map dạng text hoặc hex
Analog Devices ACE (Analysis, Control, Evaluation) Register map, cấu hình cho board đánh giá
Renesas Timing Commander Cấu hình và file cho EEPROM hoặc OTP

Quy trình thường gặp gồm các bước:

  1. Lập kế hoạch tần số (frequency plan): liệt kê tần số, chuẩn tín hiệu và yêu cầu jitter của từng ngõ ra, chọn tần số VCO sao cho mọi ngõ ra là tần số VCO chia cho một số nguyên, hoặc dùng bộ chia lẻ nếu chip hỗ trợ.
  2. Nhập kế hoạch vào công cụ của hãng, kiểm tra jitter ước lượng, spur và khả năng khóa.
  3. Xuất register map và quyết định cách nạp cấu hình vào chip.
  4. Đo kiểm trên board: tần số, biên độ, nhiễu pha bằng máy phân tích nhiễu pha hoặc máy phân tích phổ.

Có ba cách nạp cấu hình, với hệ quả khác nhau cho trình tự khởi động:

  • Ghi sẵn vào NVM hoặc OTP của chip: chip tự chạy cấu hình khi có nguồn, clock có sẵn trước khi SoC khởi động. Đây là cách bắt buộc khi chính SoC hoặc DDR lấy clock từ chip này.
  • EEPROM ngoài: một số chip tự đọc cấu hình từ EEPROM I2C khi khởi động, cho phép sửa cấu hình mà không phải ghi lại chip.
  • Nạp từ phần mềm qua I2C hoặc SPI: bootloader (U-Boot) hoặc driver Linux ghi register map lúc khởi động. Cách này linh hoạt nhưng chỉ dùng được cho các clock không cần thiết để chạy chính phần mềm đó, ví dụ clock của ADC hoặc transceiver FPGA. Driver cần tôn trọng trình tự mà datasheet yêu cầu (ví dụ ghi preamble, chờ hiệu chỉnh VCO, rồi mới bật ngõ ra).

Tích hợp trên Linux

Linux mô hình hóa chip clock theo hai cách, tùy chức năng của chip.

Clock generator và jitter cleaner được viết thành provider của Common Clock Framework (CCF), nằm trong drivers/clk/. Driver đăng ký mỗi ngõ ra như một clock, consumer (driver của PHY, ADC, lõi FPGA) lấy clock qua Device Tree và gọi clk_prepare_enable(), clk_set_rate(). Các driver có trong mainline gồm clk-si5341.c, clk-si5351.c, clk-si570.c, clk-si544.c, clk-cdce925.c (TI CDCE925), clk-versaclock5.c (Renesas VersaClock 5 và 6) và clk-lmk04832.c (TI LMK04832, giao tiếp SPI, hỗ trợ delay của SYSREF). Vì I2C và SPI là bus có thể ngủ, thao tác ghi thanh ghi nằm trong .prepare và .set_rate thay vì .enable. Chi tiết về CCF ở trang Common Clock Framework.

Driver cho HMC7044 và AD9528 có trong cây kernel của Analog Devices (drivers/iio/frequency/ trong repo analogdevicesinc/linux), dùng chung với các driver ADC, DAC và lõi JESD của hãng. Tình trạng mainline của hai driver này chưa được kiểm chứng.

Network synchronizer được mô hình hóa qua hai subsystem:

  • PTP Hardware Clock (PHC) trong drivers/ptp/: chip được xem như một đồng hồ PTP để ptp4l điều chỉnh tần số qua DCO. Ví dụ ptp_clockmatrix.c cho Renesas ClockMatrix và ptp_idt82p33.c cho IDT 82P33.
  • DPLL subsystem trong drivers/dpll/, có từ kernel 6.7: cung cấp giao diện netlink chung để đọc trạng thái khóa của DPLL và chọn tham chiếu ngõ vào (pin) theo chế độ thủ công hoặc tự động. Các trạng thái, loại pin và cách dùng từ user space xem DPLL và đồng bộ mạng. Ban đầu subsystem phục vụ DPLL tích hợp trong NIC (Intel ice), sau đó có thêm driver cho chip rời như Microchip ZL3073x, được merge vào nhánh net-next vào tháng 7 năm 2025.

Ở user space, trạng thái clock CCF xem qua /sys/kernel/debug/clk/clk_summary, trạng thái DPLL đọc bằng công cụ netlink trong cây kernel (tools/net/ynl/ với spec dpll.yaml), ví dụ lệnh ở trang DPLL và đồng bộ mạng. Phần đồng bộ PTP xem ở Linux PTP.

Lưu ý khi thiết kế board

Vấn đề Lưu ý
Nguồn cấp Nhiễu nguồn của VCO và PLL chuyển thành nhiễu pha. Cấp nguồn cho các chân nguồn analog qua LDO nhiễu thấp hoặc bộ lọc riêng theo khuyến nghị trong datasheet
Tham chiếu Jitter ngoài băng thông vòng của tham chiếu được lọc, nhưng nhiễu trong băng thông đi thẳng ra ngõ ra. Clock generator dùng tinh thể thường đạt jitter thấp hơn so với dùng XO ngoài
Chuẩn ngõ ra và terminate Chọn chuẩn khớp với ngõ vào của tải. Nối giữa hai chuẩn khác nhau thường cần AC coupling và mạch phân cực lại, theo application note của hãng
Đi dây Clock vi sai đi dây theo cặp có trở kháng kiểm soát, tránh đi song song với tín hiệu số tốc độ cao. Với JESD204, cân bằng độ dài đường mạch của device clock và SYSREF tới các thiết bị cùng link
Trình tự khởi động Xác định clock nào phải có trước khi SoC chạy (cấu hình trong NVM) và clock nào phần mềm được phép cấu hình sau. Chân reset và chân báo khóa (lock detect) của chip nên nối tới SoC để phần mềm kiểm tra
Bộ dao động cho holdover Network synchronizer chỉ giữ được tần số khi mất tham chiếu tốt bằng OCXO hoặc TCXO đi kèm

Chi tiết về layout và nguồn ở các trang PCB Design và Power của tab Hardware Design.

Liên quan

Tài liệu tham khảo