Tại sao vi điều khiển cần đồng hồ


31

Tại sao các hướng dẫn cần phải được xử lý tại các khoảng thời gian đã đặt (nghĩa là sử dụng đồng hồ)? Chúng không thể được thực hiện tuần tự - ngay sau khi hướng dẫn trước hoàn thành?

Một sự tương tự cho sự cần thiết của đồng hồ trong vi điều khiển sẽ chứng minh đặc biệt hữu ích.


6
Có bộ xử lý không đồng bộ.
Leon Heller

6
Làm thế nào bạn sẽ xác định "khi hướng dẫn trước đã hoàn thành"? Nếu bạn nghĩ về nó, bạn cần biết khi nào "Đã hoàn thành hướng dẫn trước?" tính toán đã hoàn thành và khi tính toán "Đã hoàn thành" hướng dẫn trước đó chưa? ", và ........ Sẽ dễ dàng hơn nhiều khi chỉ nói" Phải mất 0,4 nano giây để hoàn thành một hướng dẫn ".
dùng253751

4
Cổng logic không nói khi nào chúng được thực hiện. Tín hiệu chỉ đơn giản là không xác định trong một khoảng thời gian trước khi giải quyết một giá trị ổn định. Về bản chất, đồng hồ cho phép thiết kế biết khi nào logic đã ổn định trên một giá trị chính xác. Các chiến lược nâng cao như vi mô giúp đỡ bằng cách chia các hướng dẫn máy thành các phần nhỏ hơn, do đó, ADD có thể mất 4 tích tắc đồng hồ, trong khi truy cập bộ nhớ có thể mất hàng trăm tích tắc.

Câu trả lời:


31

Một ví dụ minh họa hoặc hai có thể giúp đỡ ở đây. Hãy xem mạch giả thuyết sau:

sơ đồ

mô phỏng mạch này - Sơ đồ được tạo bằng CircuitLab

Giả sử để bắt đầu cả A và B đều cao (1). Do đó, đầu ra của AND là 1 và vì cả hai đầu vào của XOR đều là 1, nên đầu ra là 0.

Các phần tử logic không thay đổi trạng thái của chúng ngay lập tức - có độ trễ lan truyền nhỏ nhưng đáng kể khi thay đổi đầu vào được xử lý. Giả sử B xuống thấp (0). XOR nhìn thấy trạng thái mới trên đầu vào thứ hai của nó ngay lập tức, nhưng đầu vào đầu tiên vẫn nhìn thấy 'cũ' 1 từ cổng AND. Kết quả là, đầu ra nhanh chóng tăng cao - nhưng chỉ cho đến khi tín hiệu truyền qua cổng AND, làm cho cả hai đầu vào XOR thấp và khiến đầu ra xuống thấp trở lại.

Sự cố không phải là một phần mong muốn trong hoạt động của mạch, nhưng sự cố như vậy sẽ xảy ra bất cứ khi nào có sự khác biệt về tốc độ lan truyền qua các phần khác nhau của mạch, do lượng logic hoặc thậm chí chỉ là độ dài của dây .

Một cách thực sự dễ dàng để xử lý đó là đặt một flipflop được kích hoạt cạnh trên đầu ra của logic tổ hợp của bạn, như thế này:

sơ đồ

mô phỏng mạch này

Bây giờ, bất kỳ trục trặc nào xảy ra đều được flipflop ẩn khỏi phần còn lại của mạch, nó chỉ cập nhật trạng thái của nó khi đồng hồ chuyển từ 0 đến 1. Miễn là khoảng thời gian giữa các cạnh đồng hồ tăng đủ dài để tín hiệu truyền đi tất cả thông qua các chuỗi logic tổ hợp, kết quả sẽ có tính xác định đáng tin cậy và không có trục trặc.


6
Cảm ơn bạn đã thực sự đề cập đến sự chậm trễ lan truyền gần như ngay lập tức, đó có thể là 99% câu trả lời.

1
Một ví dụ hoạt động về vấn đề này có thể được quan sát trên các thiết bị ngoại vi I / O kỹ thuật số của vi điều khiển (và các loại khác). Nếu bạn sử dụng các thanh ghi PORT để cập nhật các đầu ra (chứ không phải LATCH) bằng cách sử dụng các hướng dẫn Đọc-Sửa đổi-Ghi liên tiếp, có thể đọc trạng thái của pin trong khi nó đang thay đổi trạng thái. Xem phần 10.2.2 của tài liệu DSPIC33E / 24E để biết thêm chi tiết.
Evil Dog Pie

Tôi có hiểu đúng rằng các mạch tuần tự cực kỳ cần đồng hồ không chỉ bởi vì chúng sẽ bị trục trặc, mà còn bởi vì trục trặc này, một số flip-flop cuối cùng có thể lưu trữ giá trị sai?
lakeare

20

Tôi cảm thấy rất nhiều câu trả lời không chính xác đánh vào câu hỏi cốt lõi. Bộ điều khiển vi mô có đồng hồ đơn giản vì nó thực thi (và được điều khiển bởi) logic tuần tự .

Trong lý thuyết mạch kỹ thuật số, logic tuần tự là một loại mạch logic có đầu ra không chỉ phụ thuộc vào giá trị hiện tại của tín hiệu đầu vào mà còn phụ thuộc vào chuỗi các đầu vào trong quá khứ, lịch sử đầu vào. Điều này trái ngược với logic tổ hợp, có đầu ra là một hàm chỉ của đầu vào hiện tại. Đó là, logic tuần tự có trạng thái (bộ nhớ) trong khi logic tổ hợp thì không. Hay nói cách khác, logic tuần tự là logic kết hợp với bộ nhớ.

Cũng:

Ưu điểm chính của logic đồng bộ là tính đơn giản của nó. Các cổng logic thực hiện các hoạt động trên dữ liệu đòi hỏi một lượng thời gian hữu hạn để đáp ứng các thay đổi đối với đầu vào của chúng. Điều này được gọi là trì hoãn lan truyền. Khoảng thời gian giữa các xung đồng hồ phải đủ dài để tất cả các cổng logic có thời gian đáp ứng với các thay đổi và đầu ra của chúng "giải quyết" các giá trị logic ổn định, trước khi xảy ra xung đồng hồ tiếp theo. Miễn là điều kiện này được đáp ứng (bỏ qua một số chi tiết khác), mạch được đảm bảo ổn định và đáng tin cậy. Điều này xác định tốc độ hoạt động tối đa của một mạch đồng bộ.


15

Câu trả lời ngắn gọn: các nhà quản lý muốn có một hàm PROOF đơn giản, có thể kiểm tra được trước khi cam kết hàng triệu (hoặc hơn) đô la cho một thiết kế. Các công cụ hiện tại, chỉ không đưa ra các thiết kế không đồng bộ những câu trả lời đó.

Máy vi tính và vi điều khiển thường sử dụng sơ đồ xung nhịp để đảm bảo kiểm soát thời gian. Tất cả các góc quá trình phải duy trì thời gian trên tất cả các hiệu ứng điện áp, nhiệt độ, quá trình, vv trên tốc độ truyền tín hiệu. Không cổng logic hiện tại thay đổi ngay lập tức: mỗi cổng chuyển đổi tùy thuộc vào điện áp được cung cấp, ổ đĩa được tải, tải mà ổ đĩa và kích thước của các thiết bị được sử dụng để tạo ra nó, (và dĩ nhiên là nút quá trình (kích thước thiết bị) nó được tạo ra và quá trình THAT thực sự diễn ra nhanh như thế nào --- NÀY vượt qua fab). Để chuyển sang "tức thời", bạn phải sử dụng logic lượng tử và giả định rằng các thiết bị lượng tử có thể chuyển đổi ngay lập tức; (Tôi không chắc).

Logic đồng hồ làm cho CUNG CẤP rằng thời gian trên toàn bộ bộ xử lý, hoạt động trên các biến điện áp, nhiệt độ và biến xử lý dự kiến. Có nhiều công cụ phần mềm có sẵn giúp đo thời gian này và quy trình ròng được gọi là "đóng thời gian". Đồng hồ có thể (và, theo kinh nghiệm của tôi, ) mất khoảng 1/3 đến 1/2 năng lượng được sử dụng trong bộ vi xử lý.

Vì vậy, tại sao không thiết kế không đồng bộ? Có rất ít, nếu có, các công cụ đóng thời gian để hỗ trợ phong cách thiết kế này. Có rất ít, nếu có, các công cụ định tuyến và định tuyến tự động có thể xử lý và quản lý, một thiết kế không đồng bộ lớn. Nếu không có gì khác, các nhà quản lý KHÔNG phê duyệt bất cứ thứ gì không có máy tính đơn giản, được tạo ra, PROOF của chức năng.

Nhận xét rằng thiết kế không đồng bộ đòi hỏi "một tấn" tín hiệu đồng bộ hóa, đòi hỏi "nhiều bóng bán dẫn hơn", bỏ qua các chi phí định tuyến và đồng bộ hóa đồng hồ toàn cầu và chi phí của tất cả các flip-flop mà hệ thống đồng hồ yêu cầu. Thiết kế không đồng bộ là, (hoặc nên), nhỏ hơn và nhanh hơn so với các đối tác đồng hồ của chúng. (Người ta chỉ cần lấy MỘT đường tín hiệu chậm nhất và sử dụng đường dẫn đó để đưa tín hiệu "sẵn sàng" trở lại logic trước đó).

Logic không đồng bộ nhanh hơn, bởi vì nó không bao giờ phải chờ đồng hồ phải được mở rộng cho một khối khác ở nơi khác. Điều này đặc biệt đúng trong các hàm đăng ký-logic-để-đăng ký. Logic không đồng bộ không có nhiều vấn đề "thiết lập" và "giữ", vì chỉ các cấu trúc chìm kết thúc (các thanh ghi) mới có các vấn đề đó, trái ngược với một bộ logic được đặt theo đường ống với các flip-flop xen kẽ vào không gian lan truyền logic chậm trễ. ranh giới.

Nó có thể được thực hiện? Chắc chắn, ngay cả trên một thiết kế bóng bán dẫn tỷ. Có khó hơn không? Có, nhưng chỉ vì CUNG CẤP rằng nó hoạt động trên toàn bộ chip (hoặc thậm chí cả hệ thống), có liên quan nhiều hơn. Lấy thời gian trên giấy là hợp lý trực tiếp cho bất kỳ một khối hoặc hệ thống phụ. Việc điều khiển thời gian đó được kiểm soát trong một hệ thống tuyến đường và địa điểm tự động, khó hơn nhiều, bởi vì công cụ KHÔNG được thiết lập để xử lý các ràng buộc thời gian tiềm năng lớn hơn nhiều.

Bộ vi điều khiển cũng có một tập hợp lớn các khối khác có khả năng giao tiếp với (tương đối) các tín hiệu bên ngoài chậm, được thêm vào tất cả sự phức tạp của bộ vi xử lý. Điều đó làm cho thời gian tham gia nhiều hơn một chút, nhưng không nhiều.

Đạt được một cơ chế tín hiệu "khóa đầu tiên" là "vấn đề thiết kế mạch", và có nhiều cách để đối phó với điều đó. Điều kiện cuộc đua là một dấu hiệu của 1). thực hành thiết kế kém; hoặc 2). tín hiệu bên ngoài đi vào bộ xử lý. Đồng hồ thực sự đưa ra một điều kiện chạy đua tín hiệu so với đồng hồ có liên quan đến vi phạm "thiết lập" và "giữ".

Cá nhân tôi không hiểu làm thế nào một thiết kế không đồng bộ có thể rơi vào tình trạng bị đình trệ hoặc bất kỳ điều kiện chủng tộc nào khác . Đó có thể là hạn chế của tôi , nhưng trừ khi nó xảy ra ở dữ liệu nhập vào bộ xử lý, thì KHÔNG BAO GIỜ có thể có trong một hệ thống logic được thiết kế tốt, và thậm chí sau đó, vì nó có thể xảy ra khi tín hiệu đi vào, bạn thiết kế để xử lý nó.

(Tôi hi vọng cái này giúp được).

Tất cả những gì đã nói, nếu bạn có tiền ...


Tất nhiên, nó phụ thuộc vào con chip bạn đang xây dựng - ví dụ, phần cứng mạng thần kinh có xu hướng không đồng bộ, bởi vì đó thực sự là điều dễ nhất - thứ mà chúng mô phỏng là không đồng bộ . Chúng tôi chủ yếu xây dựng phần cứng tuần tự đồng bộ, bởi vì phần mềm / phần sụn cũng chủ yếu là đồng bộ và tuần tự (đặc biệt là trên phần "tuần tự" - mã không đồng bộ được sử dụng ngày càng phổ biến). Trên thực tế, việc quấn đầu bạn xung quanh một hệ thống đồng bộ, tuần tự sẽ dễ dàng hơn rất nhiều, đặc biệt là khi hầu hết các chương trình được thực hiện bằng các ngôn ngữ khuyến khích mã tuần tự.
Luaan

Các sự kiện trong thế giới thực xảy ra vào thời điểm không thể đoán trước. Nếu một thiết bị có nút và được cho là thực thi một đường dẫn mã nếu nó được đẩy "đủ sớm" và thực thi một đường dẫn mã khác nếu không, thì trong trường hợp không có giới hạn cơ học lượng tử, trong một khoảnh khắc khi nhấn nút trong đó việc ấn nút sẽ xảy ra đủ sớm để kích hoạt đường dẫn mã thay thế và thời điểm nhấn nút sẽ là "quá muộn", sẽ có một thời điểm chính xác khi nhấn nút sẽ gây ra một số hành vi "giữa" hai người (ví dụ: khiến một số bit của bộ đếm chương trình bị thay đổi ...
supercat

... nhưng không phải ai khác). Trong trường hợp không có giới hạn cơ học lượng tử, thời gian giữa giây cuối cùng khi lực đẩy sẽ gây ra nhánh và khoảnh khắc đầu tiên khi một cú đẩy hoàn toàn không làm như vậy, có thể được làm nhỏ tùy ý nhưng không giảm xuống bằng không. Các giới hạn cơ học lượng tử có thể khiến cho bất kỳ lần nhấn nút nào xảy ra sớm hơn đủ để đăng ký hoặc đủ muộn để thất bại sạch sẽ, nhưng chứng minh rằng sẽ không bao giờ có trạng thái lượng tử cho phép nhấn nút trong thời gian trung gian chết người nói chung không khả thi
supercat

Sử dụng logic đồng bộ giúp đơn giản hóa rất nhiều việc phân tích các tình huống trong đó hệ thống sẽ cần ứng phó với sự kiện không đồng bộ thực sự bằng cách đảm bảo rằng các điều kiện cuộc đua sẽ có xác suất thoát khỏi một phần rất nhỏ của thiết bị tổng thể. Phân tích phần nhỏ của thiết bị để đảm bảo rằng các điều kiện cuộc đua khó có thể thoát ra là một vấn đề khó giải quyết hơn nhiều so với việc cho phép các điều kiện cuộc đua xảy ra ở hầu hết mọi nơi và cố gắng phân tích tác động của chúng để chứng minh rằng chúng không thể gây rắc rối.
supercat

10

Vi điều khiển cần sử dụng đồng hồ vì chúng cần có khả năng đáp ứng với các sự kiện có thể xảy ra bất cứ lúc nào, bao gồm gần như đồng thời với các sự kiện hoặc sự kiện bên ngoài khác do chính bộ điều khiển tạo ra và thường sẽ có nhiều mạch cần biết một sự kiện X xảy ra trước một sự kiện Y. Có thể không quan trọng việc tất cả các mạch như vậy quyết định rằng X có trước Y hay tất cả các mạch như vậy quyết định rằng X không đi trước Y, nhưng điều quan trọng là nếu bất kỳ mạch nào quyết định rằng X có trước Y, sau đó tất cả phải làm như vậy. Thật không may, thật khó để đảm bảo rằng các mạch trong thời gian giới hạn sẽ đạt được sự đồng thuận được bảo đảm về việc liệu X có trước Y hay thậm chí đạt được sự đồng thuận về việc chúng có đạt được sự đồng thuận hay không. Logic đồng bộ có thể giúp rất nhiều với điều đó.

Thêm đồng hồ vào mạch giúp đảm bảo rằng hệ thống con sẽ không gặp phải bất kỳ điều kiện đua nào trừ khi đầu vào của hệ thống thay đổi trong một cửa sổ rất nhỏ so với đồng hồ và cũng đảm bảo nếu đầu ra của một thiết bị được đưa vào một thiết bị khác , đầu ra của thiết bị thứ nhất sẽ không thay đổi trong cửa sổ quan trọng của thiết bị thứ hai trừ khi đầu vào của thiết bị thứ nhất thay đổi trong một cửa sổ quan trọng thậm chí nhỏ hơn. Thêm một thiết bị khác trước thiết bị đầu tiên đó sẽ đảm bảo rằng đầu vào của thiết bị đầu tiên sẽ không thay đổi trong cửa sổ nhỏ đó trừ khi đầu vào của thiết bị mới thay đổi trong một cửa sổ thực sự rất nhỏ. Từ góc độ thực tế, trừ khi người ta cố tình gây ra sự thất bại trong sự đồng thuận,

Chắc chắn có thể thiết kế các hệ thống không đồng bộ hoàn toàn chạy "nhanh nhất có thể", nhưng trừ khi một hệ thống cực kỳ đơn giản, sẽ khó tránh khỏi việc thiết kế bị vấp phải bởi một điều kiện cuộc đua. Mặc dù có nhiều cách để giải quyết các điều kiện cuộc đua mà không yêu cầu đồng hồ, điều kiện cuộc đua thường có thể được giải quyết nhanh chóng và dễ dàng hơn nhiều bằng cách sử dụng đồng hồ so với trường hợp không có chúng. Mặc dù logic không đồng bộ thường có thể giải quyết các điều kiện cuộc đua nhanh hơn logic xung nhịp, nhưng những trường hợp không thể thực hiện được một vấn đề lớn, đặc biệt là gặp khó khăn khi có các phần của hệ thống đạt được sự đồng thuận về việc chúng có đạt được sự đồng thuận hay không. Một hệ thống có thể chạy liên tục một triệu hướng dẫn trên mỗi phần sẽ hữu ích hơn một hệ thống đôi khi có thể chạy bốn triệu hướng dẫn mỗi giây, nhưng có khả năng bị đình trệ trong một phần nghìn giây (hoặc lâu hơn) tại một thời điểm vì điều kiện cuộc đua.


Điều đáng chú ý là các trạng thái được quyết định cũng có thể là các trạng thái nội bộ - chẳng hạn như kết quả của phép toán số học. Độ trễ do độ dài dòng có thể dẫn đến một phần của MCU nhìn thấy kết quả - và, không có đồng hồ, hành động trên nó - trước các phần khác.
Nick Johnson

@NickJohnson: Nếu chuỗi hoạt động được thực hiện không bao giờ phụ thuộc vào những thứ chưa được tính toán, những vấn đề đó có thể được giải quyết mà không gặp khó khăn nếu mỗi phần như ALU có đầu vào "hợp lệ" và đầu ra "hợp lệ" và mọi thứ có thể được sắp xếp để xảy ra theo trình tự xác định. Trường hợp các bánh xe rơi ra là khi thứ tự hoạt động xảy ra sẽ phụ thuộc vào thời gian (ví dụ: nếu một trong số đó có một số hoạt động song song cần sử dụng một bus bộ nhớ dùng chung và hai trong số chúng đưa ra các yêu cầu gần như đồng thời, phân xử một trong số đó nên đi đầu tiên ...
supercat

... Và cái nào nên chờ đợi có thể là khó chữa. Nếu một người quyết định trước cái nào sẽ đi trước, thì những vấn đề như vậy có thể tránh được, nhưng nếu nó chỉ ra rằng đơn vị được chỉ định đi trước sẽ không sẵn sàng cho đến khi sau đó, thì hiệu suất có thể bị ảnh hưởng nghiêm trọng. .
supercat

Đây là lý do tại sao đi vào không gian rất khó khăn, xác suất thay đổi bất lợi.
Khói ma thuật

6

MCU chỉ là một ví dụ rất phức tạp của mạch logic tuần tự đồng bộ. Dạng đơn giản nhất có lẽ là D-flip-flop (D-FF) có đồng hồ, tức là phần tử bộ nhớ 1 bit đồng bộ.

Có các phần tử bộ nhớ không đồng bộ, ví dụ như chốt D, nghĩa là (theo một nghĩa nào đó) tương đương không đồng bộ của D-FF. Một MCU không gì khác hơn là hàng triệu các yếu tố bộ nhớ cơ bản như vậy (D-FF) được dán cùng với hàng tấn cổng logic (tôi quá đơn giản).

Bây giờ chúng ta hãy đi đến điểm: tại sao MCU sử dụng D-FF thay vì D-chốt như các yếu tố bộ nhớ trong? Về cơ bản là độ tin cậy và dễ thiết kế: D-chốt phản ứng ngay khi đầu vào của chúng thay đổi và đầu ra của chúng được cập nhật nhanh nhất có thể. Điều này cho phép các tương tác không mong muốn khó chịu giữa các phần khác nhau của mạch logic (vòng lặp phản hồi ngoài ý muốn và các cuộc đua). Thiết kế một mạch tuần tự phức tạp bằng cách sử dụng các khối xây dựng không đồng bộ vốn đã khó khăn hơn và dễ bị lỗi hơn. Các mạch đồng bộ tránh các bẫy như vậy bằng cách hạn chế hoạt động của các khối xây dựng vào thời gian tức thì khi các cạnh đồng hồ được phát hiện. Khi cạnh đến một mạch logic đồng bộ thu được dữ liệu ở đầu vào của nó, nhưng chưa cập nhật đầu ra của nó. Ngay sau khi có được đầu vào, đầu ra được cập nhật. Điều này tránh nguy cơ tín hiệu đầu ra được đưa trở lại đầu vào chưa được thu nhận hoàn toàn và làm mọi thứ rối tung (nói đơn giản).

Chiến lược "tách" thu thập dữ liệu đầu vào từ cập nhật đầu ra cho phép các kỹ thuật thiết kế đơn giản hơn, dịch trong các hệ thống phức tạp hơn cho một nỗ lực thiết kế nhất định.


5

Những gì bạn đang mô tả được gọi là logic không đồng bộ . Nó có thể hoạt động và khi hoạt động thường nhanh hơn và sử dụng ít năng lượng hơn logic đồng bộ (đồng hồ). Thật không may, logic không đồng bộ có một số vấn đề ngăn nó được sử dụng rộng rãi. Cái chính tôi thấy là cần nhiều bóng bán dẫn hơn để thực hiện, vì bạn cần rất nhiều tín hiệu đồng bộ hóa độc lập. (Vi điều khiển thực hiện nhiều công việc song song, cũng như CPU.) Điều đó sẽ làm tăng chi phí. Việc thiếu các công cụ thiết kế tốt là một trở ngại lớn.

Vi điều khiển có thể sẽ luôn cần đồng hồ vì các thiết bị ngoại vi của chúng thường cần đo thời gian. Bộ hẹn giờ và PWM hoạt động theo các khoảng thời gian cố định, tốc độ lấy mẫu ADC ảnh hưởng đến băng thông của chúng và các giao thức truyền thông không đồng bộ như CAN và USB cần đồng hồ tham chiếu để phục hồi đồng hồ. Chúng ta thường muốn CPU chạy nhanh nhất có thể, nhưng điều đó không phải lúc nào cũng đúng với các hệ thống kỹ thuật số khác.


3

Trên thực tế Bạn đang xem MCU là một đơn vị hoàn chỉnh, nhưng sự thật là bản thân nó được tạo từ các cổng khác nhau và logic của TTL và RTL, tất cả đều cần tín hiệu đồng hồ riêng lẻ,

Để cụ thể hơn, hãy suy nghĩ đơn giản về việc truy cập địa chỉ từ bộ nhớ, tác vụ đơn giản này có thể tự nó bao gồm nhiều thao tác như làm cho BUS có sẵn cho các dòng dữ liệu và dòng địa chỉ.
Cách tốt nhất để nói là, hướng dẫn tự xảy ra trong các đơn vị nhỏ của hoạt động đòi hỏi phải có chu kỳ đồng hồ, những kết hợp cho chu kỳ máy , chiếm tính MCU khác nhau như tốc độ (flops ** trong phức tạp MCU), lót đường ống, vv

Response to Nhận xét của OP

Rất chính xác, tôi cho bạn một ví dụ có một con chip tên là ALE(Cho phép chốt địa chỉ) thường nhằm mục đích ghép kênh bus địa chỉ thấp hơn để truyền cả địa chỉ và dữ liệu trên cùng một chân, chúng tôi sử dụng bộ tạo dao động (intel 8051 sử dụng bộ tạo dao động cục bộ 11.059 MHz làm đồng hồ) để lấy địa chỉ và sau đó dữ liệu.

Như bạn có thể biết rằng các phần cơ bản của MCU là CPU, ALU và thanh ghi bên trong, v.v., CPU (điều khiển s / g) gửi địa chỉ đến tất cả các chân địa chỉ 16 trong trường hợp 8051, điều này xảy ra tại thời điểm tức thời T1 và sau địa chỉ là ma trận tương ứng của việc lưu trữ tụ điện (sạc dưới dạng tín hiệu) ( * ánh xạ bộ nhớ * ) được kích hoạt và chọn.

Sau khi chọn, tín hiệu ALE được kích hoạt, tức là chân ALE được đặt ở mức cao ở đồng hồ tiếp theo, nói là tín hiệu Cao ( thường là tín hiệu Cao nhưng thay đổi theo thiết kế của đơn vị xử lý ), sau đó, các bus địa chỉ thấp hơn hoạt động như các dòng dữ liệu và dữ liệu được ghi hoặc đọc (tùy thuộc vào đầu ra ở chân RD / WR - của MCU).
Bạn có thể thấy rõ rằng tất cả các sự kiện là tuần tự kịp thời

Điều gì sẽ xảy ra nếu chúng ta không sử dụng đồng hồ Sau đó, chúng ta sẽ phải sử dụng phương pháp đồng hồ không đồng bộ ASQC, điều này sau đó sẽ làm cho mỗi cổng phụ thuộc vào nhau và có thể dẫn đến lỗi phần cứng, Ngoài ra, điều này sẽ giết chết đường ống dẫn không thể, Phụ thuộc dài và không đều Thời gian hoàn thành nhiệm vụ.
Vì vậy, nó là một cái gì đó không mong muốn


Đó là loại có ý nghĩa. Nhưng tại sao các khoang khác nhau của MCU cần tín hiệu đồng hồ để hoạt động? Về mặt lý thuyết sẽ xảy ra nếu họ không sử dụng đồng hồ?
MR

1
@Martin, cổng logic thay đổi trạng thái ngay lập tức khi đầu vào của chúng thay đổi. Đồng hồ, logic tuần tự chỉ đánh giá đầu vào của nó trong một sự kiện đồng hồ. Đây là nguyên tắc cơ bản điều khiển các mạch nhớ kỹ thuật số. Nó cho chúng ta khả năng di chuyển có chọn lọc dữ liệu từ nơi này sang nơi khác với sự kiểm soát tuyệt đối, cho phép tạo ra phần cứng cho mục đích chung có thể được lập trình thông qua softwar để làm - tốt, bất cứ điều gì.
Sean Boddy

3
@SeanBoddy: Cổng logic không có trạng thái cơ hội ngay lập tức, có độ trễ ngắn có thể xem được trên máy hiện sóng. Nếu chúng ta không sử dụng đồng hồ, sự khác biệt về thời gian giữa các thành phần này có thể gây ra tình trạng chủng tộc tạo ra kết quả sai.
BlueRaja - Daniel Pflughoeft

@BlueRaja - kẹo cao su cũng tốt, làm thế nào về điều đó. Có lẽ tôi sẽ quay lại 4 năm ghi chú điện tử công suất và 8 năm huấn luyện hải quân để tìm ra nơi tôi đã bỏ lỡ điều đó.
Sean Boddy

2

Vấn đề cơ bản mà đồng hồ giải quyết là các bóng bán dẫn không thực sự là thiết bị kỹ thuật số: chúng sử dụng các mức điện áp tương tự trên các đầu vào để xác định đầu ra và mất một khoảng thời gian hữu hạn để thay đổi trạng thái. Trừ khi, như đã được đề cập trong một câu trả lời khác, bạn vào các thiết bị lượng tử, sẽ có một khoảng thời gian trong đó đầu vào chuyển từ trạng thái này sang trạng thái khác. Thời gian này bị ảnh hưởng bởi tải điện dung, sẽ khác nhau từ thiết bị này sang thiết bị tiếp theo. Điều này có nghĩa là các bộ chuyển đổi khác nhau tạo nên mỗi cổng logic sẽ đáp ứng tại các thời điểm hơi khác nhau. Đồng hồ được sử dụng để 'chốt' các đầu ra của các thiết bị thành phần một khi chúng đã ổn định.

Tương tự như vậy, hãy xem xét lớp vận chuyển truyền thông SPI (Giao diện ngoại vi nối tiếp). Một triển khai điển hình của việc này sẽ sử dụng ba dòng: Data In, Data Out và Clock. Để gửi một byte qua lớp vận chuyển này, chủ sẽ đặt dòng Data Out của nó và xác nhận dòng Clock để chỉ ra rằng dòng Data Out có giá trị hợp lệ. Thiết bị phụ sẽ chỉ lấy mẫu Dữ liệu trong dòng khi được hướng dẫn làm như vậy bằng tín hiệu Đồng hồ. Nếu không có tín hiệu đồng hồ, làm thế nào nô lệ biết khi nào lấy mẫu Dữ liệu trong dòng? Nó có thể lấy mẫu trước khi dòng được đặt bởi chủ hoặc trong quá trình chuyển đổi giữa các trạng thái. Các giao thức không đồng bộ, chẳng hạn như CAN, RS485, RS422, RS232, v.v ... giải quyết điều này bằng cách sử dụng thời gian lấy mẫu được xác định trước, tốc độ bit cố định và các bit khung (trên cao).

Nói cách khác, có một số loại Kiến thức chung cần thiết để xác định khi tất cả các bóng bán dẫn trong một bộ cổng đã đạt đến trạng thái cuối cùng và hướng dẫn hoàn tất. Trong câu đố (100 mắt xanh) được nêu trong liên kết ở trên, và được giải thích một số chi tiết trong câu hỏi này trên Maths Stack Exchange, 'orory' đóng vai trò là đồng hồ cho người dân trên đảo.

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.