Đồng hồ lệch là gì, và tại sao nó có thể là âm?


10

Trình biên dịch HDL của tôi (Quartus II) tạo các báo cáo thời gian. Trong đó, các nút có cột "đồng hồ lệch". Định nghĩa duy nhất về độ lệch của đồng hồ tôi tìm thấy là trong tài liệu TimeQuest (xem trang 7-24):

Để chỉ định thủ công độ không chắc chắn của đồng hồ, hoặc nghiêng, đối với chuyển đồng hồ sang đồng hồ, hãy sử dụng set_clock_uncertaintylệnh.

Vì vậy, nếu độ lệch là "không chắc chắn", tại sao một số đồng hồ của tôi bị lệch âm (ví dụ -0.048)? Chính xác thì đồng hồ là gì?

Câu trả lời:


8

Từ Wikipedia :

Trong một đồng hồ mạch đồng bộ xiên ( ) là sự khác biệt về thời gian đến giữa hai thanh ghi liền kề nhau. Cho hai thanh ghi liền kề và với thời gian đến của đồng hồ tại các chân đồng hồ đăng ký lần lượt là và , sau đó có thể định nghĩa xiên đồng hồ là:TSkewRTôiRjTCTôiTCj

TSkewTôi,j= =TCTôi-TCj

Đồng hồ lệch có thể là tích cực hoặc tiêu cực. Nếu các tín hiệu đồng hồ hoàn toàn đồng bộ, thì độ lệch đồng hồ quan sát được tại các thanh ghi này bằng không.

Vì vậy, số lượng đồng hồ lệch ở một thanh ghi có liên quan đến một thanh ghi khác. Vì nó là tương đối, nó có thể là tích cực hoặc tiêu cực.

Một số hình ảnh minh họa:

nghiêng / tiêu cực nghiêng / tụt

Lấy ví dụ về chuyển khoản nội bộ như được xác định trong tài liệu TimeQuest bạn đã cung cấp:

Truyền Intraclock xảy ra khi quá trình chuyển đổi đăng ký thành đăng ký diễn ra trong lõi của thiết bị và đồng hồ nguồn và đích đến từ cùng một pin đầu ra PLL hoặc cổng đồng hồ.

Vì vậy, nếu thanh ghi đích gần hơn với mạch tạo đồng hồ, thì đồng hồ có thể sẽ đến thanh ghi đích trước khi đến thanh ghi nguồn, dẫn đến độ lệch của đồng hồ dẫn thực sự dương. Nếu thanh ghi đích nhận được cạnh của đồng hồ sau thanh ghi nguồn, thì độ lệch của đồng hồ sẽ bị trễ hoặc âm.

Nói một cách khác, độ lệch của đồng hồ là sự không chắc chắn về thời gian cạnh nhau của đồng hồ sẽ đạt được hai thanh ghi riêng biệt được đưa ra theo đơn vị thời gian đối với một thanh ghi nguồn trong chuyển khoản đăng ký để đăng ký.

Việc mở rộng sự khác biệt đó để bao gồm chuyển tiền liên tục và thiết lập và thời gian giữ sẽ hơi lộn xộn. Vì vậy, có thể dễ dàng hơn khi nghĩ về nó như "mức độ đồng bộ" của một cạnh hoặc thời gian giữ giữa hai thanh ghi. Chúng ta có xu hướng nghĩ "đồng bộ" là "xảy ra cùng một lúc". Nhưng mọi thứ hiếm khi xảy ra hoàn toàn chính xác cùng một lúc. Vì vậy, chúng ta cần phải chịu đựng thời gian đó. Và dung sai thường được nêu dưới dạng tích cực và tiêu cực (tức là ±).


10

Các thiết bị logic kỹ thuật số hiện đại thường được (*) thiết kế với "thực hành thiết kế đồng bộ": kiểu thiết kế chuyển đổi thanh ghi được kích hoạt đồng bộ toàn cầu (RTL): Tất cả các mạch tuần tự được chia thành các thanh ghi kích hoạt cạnh được kết nối với tín hiệu đồng hồ toàn cầu CLK và logic tổ hợp thuần túy.

Phong cách thiết kế đó cho phép mọi người nhanh chóng thiết kế các hệ thống logic kỹ thuật số mà không cần quan tâm đến thời gian. Hệ thống của họ sẽ "chỉ hoạt động" miễn là có đủ thời gian từ một cạnh đồng hồ đến cạnh tiếp theo để trạng thái bên trong giải quyết.

Với phong cách thiết kế này, độ lệch của đồng hồ và các vấn đề liên quan đến thời gian khác là không liên quan, ngoại trừ việc tìm ra "Tốc độ xung nhịp tối đa cho hệ thống này là bao nhiêu?".

Chính xác thì đồng hồ là gì?

Ví dụ:

...
     R1 - register 1              R3
     +-+                  
   ->| |------>( combinational  )  +-+
...->| |------>(         logic  )->| |--...
   ->|^|------>(                )->|^|
     +-+       (                )  +-+
      |   +--->(                )   |
     CLK  | +->(                )  CLK
          | |
     R2:  | |
     +-+  | |               
...->| |->+ |
   ->|^|->--+
     +-+
      |
     CLK

Trong phần cứng thực, tín hiệu "CLK" không bao giờ thực sự chuyển đổi chính xác đồng thời tại mỗi thanh ghi. Các đồng hồ nghiêng Tskew là sự chậm trễ của các đồng hồ hạ lưu tương đối so với đồng hồ ở thượng nguồn ( một ):

Tskew (nguồn, đích) = Destination_time - source_time

trong đó source_time là thời gian của cạnh đồng hồ hoạt động tại thanh ghi nguồn ngược dòng (trong trường hợp này là R1 hoặc R2) và Destination_time là thời gian của cạnh đồng hồ hoạt động "tương tự" tại một số thanh ghi đích xuôi dòng (trong trường hợp này là R3) .

  • lệch đồng hồ âm: CLK tại R3 chuyển trước đồng hồ ở R1.
  • lệch đồng hồ dương: CLK tại R3 chuyển sau đồng hồ ở R1.

Tác dụng của đồng hồ xiên là gì?

(có lẽ một sơ đồ thời gian ở đây sẽ làm cho điều này rõ ràng hơn)

Để mọi thứ hoạt động chính xác, ngay cả trong trường hợp xấu nhất, đầu vào của R3 không được thay đổi trong thời gian thiết lập hoặc thời gian giữ của R3. Nói cách khác, để mọi thứ hoạt động tốt, chúng ta phải thiết kế những thứ như:

Tskew (R1, R3) <Tco - Th.

Tclk_min = Tco + Tcalc + Tsu - Tskew (R1, R3).

Ở đâu:

  • Tcalc là thời gian giải quyết trường hợp xấu nhất tối đa của bất kỳ khối logic tổ hợp nào ở bất kỳ đâu trong hệ thống. (Đôi khi chúng ta có thể thiết kế lại khối logic tổ hợp trên đường tới hạn, đẩy các phần ngược dòng hoặc xuôi dòng hoặc chèn một giai đoạn khác của đường ống, do đó thiết kế mới có Tcalc nhỏ hơn, cho phép chúng ta tăng tốc độ xung nhịp) .
  • Tclk_min là khoảng thời gian tối thiểu từ một cạnh đồng hồ hoạt động đến cạnh đồng hồ hoạt động tiếp theo. Chúng tôi tính toán nó từ phương trình trên.
  • Tsu là thời gian thiết lập đăng ký. Nhà sản xuất đăng ký hy vọng chúng ta sử dụng đồng hồ đủ chậm để luôn đáp ứng yêu cầu này.
  • Th là thời gian giữ đăng ký. Nhà sản xuất đăng ký hy vọng chúng tôi kiểm soát độ lệch đồng hồ đủ để luôn đáp ứng yêu cầu này.
  • Tco là độ trễ đồng hồ đầu ra (thời gian lan truyền). Sau mỗi cạnh đồng hồ hoạt động, R1 và R2 tiếp tục lái các giá trị cũ đến logic tổ hợp trong một thời gian ngắn trước khi chuyển sang các giá trị mới. Điều này được thiết lập bởi phần cứng và được đảm bảo bởi nhà sản xuất, nhưng chỉ khi chúng tôi đáp ứng Tsu và Th và các yêu cầu khác mà nhà sản xuất chỉ định cho hoạt động bình thường.

Quá nhiều sai lệch tích cực là một thảm họa chưa được thừa nhận. Quá nhiều sai lệch tích cực có thể (với một số kết hợp dữ liệu) gây ra "đường dẫn lén", thay vì R3 chốt "dữ liệu chính xác" ở đồng hồ N + 1 (một chức năng xác định của dữ liệu trước đó được gắn vào R1 và R2 ở đồng hồ N) , dữ liệu mới được chốt vào R1 và R2 tại đồng hồ N + 1 có thể bị rò rỉ, làm đảo lộn logic tổ hợp và khiến dữ liệu sai được gắn vào R3 ở cạnh đồng hồ "cùng" N + 1.

Bất kỳ lượng lệch âm nào cũng có thể được "sửa" bằng cách làm chậm tốc độ xung nhịp. Nó chỉ "xấu" theo nghĩa là nó buộc chúng ta phải chạy hệ thống ở tốc độ xung nhịp chậm hơn, để cho các đầu vào của thời gian R3 ổn định sau khi R1 và R2 chốt dữ liệu mới ở cạnh đồng hồ N, và sau đó là R3 chốt kết quả ở cạnh đồng hồ "tiếp theo" N + 1.

Nhiều hệ thống sử dụng mạng phân phối đồng hồ cố gắng giảm độ lệch xuống 0. Theo trực giác, bằng cách thêm cẩn thận độ trễ dọc theo đường xung nhịp - đường dẫn từ bộ tạo đồng hồ đến đầu vào CLK của mỗi người đăng ký - có thể tăng tốc độ rõ ràng mà mặt sóng cạnh đồng hồ truyền từ vật lý CLK của một người đăng ký sang đầu vào CLK của bộ đăng ký tiếp theo nhanh hơn tốc độ ánh sáng.

Các tài liệu Altera đề cập đến

"Tránh sử dụng logic tổ hợp trong đường dẫn đồng hồ vì nó góp phần làm lệch đồng hồ."

Điều này đề cập đến thực tế là nhiều người viết HDL được biên dịch trên một đồ họa theo cách nào đó gây ra thứ gì đó không phải là tín hiệu CLK toàn cầu để điều khiển đầu vào CLK cục bộ của một số thanh ghi. (Đây có thể là logic "gating đồng hồ" để các giá trị mới chỉ được tải vào một thanh ghi khi đáp ứng một số điều kiện nhất định hoặc logic "bộ chia xung nhịp" chỉ cho phép 1 trong số N đồng hồ đi qua, v.v.). CLK cục bộ đó thường được lấy từ CLK toàn cầu bằng cách nào đó - CLK toàn cầu, và sau đó CLK cục bộ không thay đổi, hoặc (một sự chậm trễ ngắn sau CLK toàn cầu để tín hiệu truyền qua "cái gì đó khác") CLK cục bộ thay đổi một lần.

Khi "cái gì đó khác" điều khiển CLK của thanh ghi xuôi dòng (R3), nó làm cho độ lệch dương hơn. Khi "cái gì đó khác" điều khiển CLK của thanh ghi ngược dòng (R1 hoặc R2), nó làm cho độ lệch âm hơn. Đôi khi, bất cứ điều gì điều khiển CLK của thanh ghi ngược dòng và bất cứ điều gì khiến CLK của thanh ghi xuôi dòng thực tế có cùng độ trễ, làm cho độ lệch giữa chúng thực tế bằng không.

Mạng phân phối đồng hồ bên trong một số ASIC được thiết kếchủ ý với một lượng nhỏ đồng hồ dương nghiêng trên một số thanh ghi, giúp logic tổ hợp ngược dòng thời gian hơn một chút để giải quyết và do đó toàn bộ hệ thống có thể chạy ở tốc độ xung nhịp nhanh hơn. Đây gọi là "đồng hồ nghiêng tối ưu hóa" hay "đồng hồ nghiêng lịch", và có liên quan đến " retiming ".

Tôi vẫn bị bí ẩn bởi set_clock_uncertaintylệnh - tại sao tôi lại muốn "chỉ định thủ công" xiên?

(*) Một ngoại lệ: hệ thống không đồng bộ .


Tôi tin rằng ý tưởng đằng sau việc thêm độ trễ để giảm thiểu độ lệch của đồng hồ đôi khi có thể liên quan đến việc trì hoãn đồng hồ gần một chu kỳ. Khi đồng hồ lên và chạy, bạn có thể thiết lập đồng hồ để flip flop A nhìn thấy cạnh đồng hồ 1 đồng thời lật chính xác B nhìn thấy cạnh đồng hồ 2. Từ góc nhìn bên ngoài, chúng là các cạnh khác nhau, nhưng mạch không Không quan tâm miễn là các cạnh được căn chỉnh hoàn hảo.
ajs410

1

đồng hồ lệch là khi đồng hồ đến các điểm khác nhau của mạch tại các thời điểm khác nhau do khoảng cách, điện dung, vv có thể làm cho nó bị hỏng. Tôi nghĩ rằng tiêu cực phải là khi đồng hồ đến điểm đó trước khi nó đến tham chiếu

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.