Altifigence Academy

34 / 37 · Khái niệm

Ranh giới clock domain và metastability

Hiểu phạm vi bộ đồng bộ hai tầng, phân biệt truyền một bit, xung ngắn và nhiều bit.

Đầu vào từ clock khác không bảo đảm khoảng cách cạnh

Setupsetup Thời gian tối thiểu dữ liệu đầu vào phải ổn định trước cạnh clock lấy mẫu. Vi phạm thì không thể bảo đảm kết quả lưu. Tìm hiểu thêm, holdThời gian hold Thời gian tối thiểu đầu vào phải tiếp tục ổn định sau cạnh clock bắt dữ liệu. Cần phân biệt yêu cầu thời gian này với hành vi giữ giá trị thông thường. Tìm hiểu thêm yêu cầu dữ liệu ổn định đủ quanh cạnh clock nhận. Nút nhấn hoặc đầu ra clock domain độc lập có quan hệ tùy ý với cạnh nhận, nên khó luôn bảo đảm điều kiện này.

Vì vậy trạng thái nội flip-flopFlip-flop Phần tử lưu đầu vào tại cạnh clock chỉ định rồi giữ đến cạnh sau. Đầu vào phải thỏa setup và hold. Tìm hiểu thêm có thể không nhanh chóng quyết định 0 hay 1 trong một khoảng, gọi là metastability. Mô phỏng RTL 0/1 thông thường không biểu diễn trực tiếp hiện tượng tương tự này. Dạng sóng sạch không chứng minh CDC an toàn.

Bộ đồng bộ hai tầng dành cho một bit giữ đủ lâu

SystemVerilog
module level_synchronizer (
    input  logic clk_dst,
    input  logic rst_dst,
    input  logic async_level,
    output logic synced_level
);
    logic first_stage;
    always_ff @(posedge clk_dst) begin
        if (rst_dst) begin
            first_stage  <= 1'b0;
            synced_level <= 1'b0;
        end else begin
            first_stage  <= async_level;
            synced_level <= first_stage;
        end
    end
endmodule

Cấu trúc cho tầng đầu thời gian ổn định trước khi tầng sau đọc, ngay cả nếu tầng đầu bất ổn. Mạch chức năng dùng đầu ra tầng cuối, không phân nhánh trực tiếp từ tầng đầu. Reset phía trên được giả định đồng bộ với clock đích.

Triển khai thực cần thuộc tính synchronizerBộ đồng bộ Mạch đưa tín hiệu từ miền thời gian khác vào xử lý theo clock nhận. Không áp trực tiếp chuỗi flip-flop dành cho một bit vào dữ liệu nhiều bit., dây giữa tầng ngắn, STA/CDC và xử lý phù hợp công cụ, linh kiện. Chỉ dùng hai thanh ghiThanh ghi Mạch lưu trạng thái nhiều bit. Thanh ghi đồng bộ trong khóa học lưu đầu vào đã quy định tại cạnh clock. Tìm hiểu thêm không bảo đảm cả bố trí và điều kiện đường.

Đầu vào bất đồng bộ vào tầng đầu, mạch chức năng chỉ dùng tầng cuối. Thời gian giữa tầng cho cơ hội ổn định nhưng không bảo đảm metastabilityMetastability Trạng thái tương tự trong đó phần tử lưu tạm thời chưa ổn định về 0 hay 1. Bộ đồng bộ giảm xác suất lan truyền, không làm xác suất xảy ra bằng 0. tương tự chắc chắn biến mất.

Giới hạn dùng bộ đồng bộ một bit
  1. Mức bất đồng bộ: Không có quan hệ pha với clock đích
  2. meta FF: Có thể bất ổn
  3. synced FF: Bắt tại cạnh clock đích kế tiếp
  4. Mạch chức năng: Chỉ dùng tầng cuối

Giảm xác suất lỗi, không đưa về 0

Trong một mô hình đơn giản, thời gian trung bình giữa lỗi MTBF có xu hướng sau.

MTBF ∝ eTresolve/τfdstfevent\mathrm{MTBF}\ \propto\ \frac{e^{T_{\mathrm{resolve}}/\tau}}{f_{\mathrm{dst}}f_{\mathrm{event}}}

TresolveT_{\mathrm{resolve}} là thời gian có thể ổn định, τ\tau là đặc tính linh kiện, fdstf_{\mathrm{dst}} là tần số nhận, feventf_{\mathrm{event}} là tần suất chuyển đầu vào bất đồng bộ. Tính thực cần hằng số riêng của linh kiện; không thể chỉ dùng công thức này gắn số “an toàn bao nhiêu năm” cho mạch bất kỳ.

Không dùng cùng một mạch cho các vấn đề khác nhau

Thông tin truyềnChỉ đồng bộ hai tầng một bit có đủ?Cấu trúc cần xét
Mức giữ đủ lâuDùng được nếu thỏa xác suất và trễĐồng bộ phía đích
Xung ngắn hơn chu kỳ đíchCó thể bỏ lỡ toàn xungKéo dài xung, toggle, handshake
Nhiều bit phải có nghĩa đồng thờiCác bit có thể thuộc thời điểm khác nhauBus ổn định với handshake, FIFO bất đồng bộ
Nút cơ khíDội tiếp điểm là vấn đề riêngĐồng bộ rồi debounce

Ví dụ giá trị bốn bit đổi 0111→1000, đồng bộ từng bit độc lập có thể tạo tổ hợp thoáng qua chưa từng tồn tại. Giữ nhất quán bus cần thiết kế quan hệ giữa toàn dữ liệu và hoàn tất truyền.

Đọc thêm: MIT OpenCourseWare — Synchronization, Metastability and Arbitration

Tự thử

Clock nhận 50MHz, xung đầu vào rộng 5ns. Có thể khẳng định mọi xung được phát hiện vì có đồng bộ hai tầng không? Dội nút cũng bị loại không?

Đọc giải thích

50MHz có chu kỳ 20ns. Xung 5ns có thể xuất hiện rồi mất giữa hai cạnh nhận, nên ngay tầng đầu cũng bỏ lỡ. Chỉ tăng số tầng không giải quyết bảo toàn xung; cần kéo dài xung hoặc handshake. Dội nút cần debounce riêng.

Lựa chọn áp dụng cho trình duyệt này. Có thể đổi ở chân trang bất cứ lúc nào.