Tại sao một số vi điều khiển có độ trễ đồng bộ hóa lớn như vậy?


11

Trên các bộ vi điều khiển dòng Atmel SAM-D21, nhiều thiết bị ngoại vi sử dụng đồng hồ không đồng bộ với đồng hồ CPU chính và việc truy cập vào các thiết bị ngoại vi này phải thông qua logic đồng bộ hóa; trên các thiết bị ngoại vi có xung nhịp chậm so với thời gian của CPU, điều này có thể thêm một số độ trễ thực sự lớn. Ví dụ: nếu RTC được cấu hình để sử dụng đồng hồ 1024Hz (dường như là ý định thiết kế) và CPU đang chạy ở 48Mhz, việc đọc thanh ghi "thời gian hiện tại" sẽ khiến logic bus chèn hơn 200.000 trạng thái chờ (tối thiểu trong năm chu kỳ của đồng hồ 1024Hz). Mặc dù CPU có thể đưa ra yêu cầu đọc, thực thi một số mã không liên quan khác và trả lại hơn 200.000 chu kỳ sau để lấy thời gian, nhưng dường như không có cách nào để thực sự đọc thời gian nhanh hơn.

Theo hiểu biết của tôi về đồng bộ hóa, mạch đồng bộ hóa một bit sẽ làm chậm tín hiệu bằng 2-3 chu kỳ của đồng hồ đích; đồng bộ hóa số lượng nhiều bit khó hơn một chút, nhưng có nhiều cách tiếp cận khác nhau có thể đảm bảo hành vi đáng tin cậy trong năm chu kỳ của đồng hồ đích nếu nó nhanh hơn đồng hồ nguồn và chỉ một vài chu kỳ nếu không. Atmel SAM-D21 sẽ làm gì để yêu cầu sáu chu kỳ trong miền đồng hồ nguồn để đồng bộ hóa và yếu tố nào có lợi cho thiết kế có độ trễ đồng bộ hóa đủ lâu để bắt buộc phải ngắt "đồng bộ hóa", so với một đảm bảo độ trễ đồng bộ hóa đủ ngắn để làm cho các ngắt như vậy không cần thiết?


2
Cảm ơn bạn cho câu hỏi này. Nó làm cho cuối cùng tôi hiểu vấn đề trong tay tôi. Tôi đến đây vì tôi không thể hiểu tại sao việc xóa Đồng hồ bấm giờ (WDT) sẽ mất gần 5 mili giây trên SAMD20 / 21. Bây giờ tôi biết đó là do thiết kế phần cứng, không phải lỗi của tôi. (WDT có xung nhịp 1024 Hz, đây là lựa chọn hợp lý duy nhất.) Bây giờ tôi ít nhất có thể đối phó với nó cho phù hợp.
T-Bull

2
@ T-Bull: Điều thực sự thú vị về bộ giám sát trên các bộ phận đó là nó bị vô hiệu hóa giữa thời gian phần mềm phát lệnh khởi động lại và thời gian lệnh đi qua bộ đồng bộ hóa. Nếu thiết bị đi vào giấc ngủ trong suốt khoảng thời gian đó, các cơ quan giám sát sẽ không chạy trừ khi hoặc cho đến khi một cái gì đó khác tỉnh dậy phần.
supercat

Câu trả lời:


2

Đó là một cách làm việc khác với tôi, tôi đã quen với các kiến ​​trúc của mình, nơi các thanh ghi của tôi nằm trên đồng hồ CPU của tôi hoặc ít nhất là 1/2 đồng hồ đó. Vì vậy, bạn viết sổ đăng ký của bạn và họ đã sẵn sàng ngay lập tức. Có lẽ họ đang làm theo cách này để tiết kiệm điện? Nếu họ đặt các thanh ghi ngoại vi vào miền đồng hồ thực sự chậm riêng của mình, có thể họ không phải thức dậy và chạy bộ dao động chính hoặc đồng hồ CPU nhưng có thể tiếp tục cập nhật giá trị trên thiết bị ngoại vi.

Nếu đó là trường hợp thì bạn có thể viết một thanh ghi trong khối ngoại vi siêu chậm của mình, sau đó vô hiệu hóa đảo nguồn cho toàn bộ CPU hoặc cổng đồng hồ, và để bộ đồng bộ hóa chậm đọc cho đến khi nó vui và sau đó ngắt CPU để đưa nó ra của giấc ngủ

Ngoài ra, nó có thể cho phép bạn nhồi nhét số lượng hướng dẫn tối đa vào thời gian thức của bạn, thay vì quay sáu chu kỳ và chờ đợi mỗi lần viết.

Về lý do tại sao họ sử dụng nhiều chu kỳ đồng bộ hóa, có thể là hoang tưởng hoặc họ có thể đáp ứng một số tiêu chuẩn có độ tin cậy cao cho một trong những khách hàng của họ. Tôi không thể nói chắc chắn nhưng tôi biết tôi đã thấy khách hàng có nhu cầu như mọi ram sẽ có ecc và được tải sẵn đến một giá trị đã đặt, v.v.

Tôi đoán đó không phải là một câu trả lời dứt khoát nhưng đó là những suy nghĩ của tôi sau khi xem qua bảng dữ liệu một chút.


2
"Sáu chu kỳ" là sáu chu kỳ của đồng hồ ngoại vi; Nếu một bộ, ví dụ mô-đun đồng hồ thời gian thực được cung cấp ở tần số 1024Hz (dường như là khuyến nghị của Atmel) và xung nhịp CPU ở mức 48 MHz, sáu chu kỳ của đồng hồ ngoại vi sẽ là 281.250 chu kỳ của đồng hồ CPU, nó rất dài thời gian để quay, đặc biệt là nếu có bất kỳ ngắt cần phục vụ. Quay chỉ kinh khủng ở mức độ vừa phải nếu xung nhịp chậm là 8Mhz (nghĩa là quay vòng 36 CPU) nhưng lỗi cứng sẽ tốt hơn quay trên đồng hồ 1024Hz.
supercat
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.