Tại sao kích hoạt cạnh được ưa thích hơn kích hoạt cấp?


18

Tôi đang cố gắng để hiểu tại sao kích hoạt cạnh được ưa thích hơn kích hoạt cấp. Trong cuốn sách của tôi nó không được giải thích rõ ràng. Sau khi tìm kiếm trực tuyến tôi đã biết rằng kích hoạt cạnh không nhạy cảm với các trục trặc trong khi kích hoạt cấp độ là nhạy cảm. Nó có nghĩa là gì?

Ngoài ra tôi không thể hiểu được những điều sau: "Nếu đồng hồ nhạy với mức độ, có thể lướt qua mạng logic và thay đổi đầu ra. Để tránh điều này, chúng ta cần một xung ngắn để bắt đầu ra và giữ nó không đổi. Nhưng xung ngắn như vậy không dễ tạo ra, do đó chúng tôi tiến hành kích hoạt cạnh. Vấn đề phản hồi được giải quyết vì không đủ thời gian để đầu ra mới chạy trở lại đầu vào trong thời gian của một cạnh tăng "Qn

Tôi không hiểu tại sao đầu ra sẽ không vội kích hoạt cấp độ và tại sao chúng ta cần một xung ngắn để giữ đầu ra.

Thứ hai, vấn đề phản hồi, vì thời lượng kích hoạt cấp độ dài so với kích hoạt cạnh, trong trường hợp trước, đầu ra sẽ được đưa trở lại đầu vào và nó sẽ tiếp tục làm điều đó miễn là đồng hồ hoạt động . Vấn đề phản hồi là gì?

Nhưng làm thế nào nó sẽ được giải quyết trong kích hoạt cạnh? Nếu thời gian giảm hoặc tăng rất ngắn, làm thế nào đầu ra có thể truyền qua tất cả các cổng? Có phải như vậy, một khi kích hoạt cạnh được áp dụng, đầu ra sẽ được truyền qua tất cả các cổng và đầu vào tiếp theo sẽ chỉ được xem xét ở cạnh đồng hồ tiếp theo?


1
"Một khi kích hoạt cạnh được áp dụng, đầu ra sẽ được truyền qua tất cả các cổng và đầu vào tiếp theo sẽ chỉ được xem xét ở cạnh đồng hồ tiếp theo" - bullseye !!
Wouter van Ooijen

Câu trả lời:


12

Mặc dù cạnh là một thời điểm được xác định rõ ràng trong thời gian, nhưng không đúng khi nói rằng kích hoạt cấp độ cũng không có thời điểm được xác định rõ về thời gian. Nó làm. Có một thời điểm được xác định rõ ràng về thời gian khi mức của đồng hồ giảm xuống, các đầu vào của mạch xung nhịp được lấy mẫu và những thay đổi tiếp theo trong đầu vào không còn được thừa nhận.

Vấn đề với kích hoạt cấp độ là trong khi mức xung nhịp cao, đầu vào thay đổi đầu ra. Trong các mạch có phản hồi (đầu ra được kết nối trở lại đầu vào) kích hoạt mức gây ra sự hỗn loạn, vì mức này đủ rộng (nửa chu kỳ đồng hồ) mà đầu ra có thể phản hồi lại đầu vào trong cùng khoảng thời gian.

tt+1

Giải pháp rõ ràng đầu tiên đề xuất chính nó rút ngắn mức độ đến mức không thể xảy ra phản hồi không mong muốn (và giữ mức "bật" ngắn, ngay cả khi chúng tôi tự ý làm chậm thời gian đồng hồ). Giả sử rằng chúng ta xung đồng hồ từ 0 đến 1 và quay lại 0 rất nhanh, để các thiết bị có đồng hồ chấp nhận đầu vào của chúng, nhưng đầu ra không có đủ thời gian để chạy qua vòng phản hồi để thay đổi các đầu vào đó. Vấn đề với điều này là các xung hẹp là không đáng tin cậy, và về cơ bản đòi hỏi một phản ứng có thể nhanh hơn vài bậc so với tần số xung nhịp. Chúng ta có thể thấy rằng chúng ta cần một xung có độ rộng nano giây, mặc dù hệ thống chỉ chạy ở mức 1 Mhz. Vì vậy, sau đó chúng ta có vấn đề phân phối các xung rộng, sắc nét, đủ rộng trên nano giây trên một chiếc xe buýt được thiết kế cho 1 Mhz.

Sau đó, bước logic tiếp theo là để các thiết bị tạo xung hẹp cho chính chúng như là đạo hàm thời gian của cạnh đồng hồ. Khi đồng hồ chuyển từ cấp này sang cấp khác, bản thân các thiết bị có thể tạo ra một xung ngắn khiến các đầu vào được lấy mẫu. Chúng ta không phải phân phối xung đó qua bus đồng hồ.

Và vì vậy, về cơ bản bạn có thể coi tất cả là kích hoạt cấp độ cuối cùng. Kích hoạt cạnh là một mẹo để cho phép các thiết bị tạo trình kích hoạt mức rất nhanh, nhanh hơn tất cả các vòng phản hồi bên ngoài, cho phép các thiết bị nhanh chóng chấp nhận đầu vào và sau đó đóng cửa ra vào kịp thời trước khi đầu ra thay đổi của chúng sẽ thay đổi giá trị của đầu vào .


Chúng ta cũng có thể tạo ra sự tương đồng giữa tín hiệu "cho phép" (đồng hồ kích hoạt mức) và một cánh cửa trên một chiếc máy giữ áp suất không khí. Kích hoạt cấp độ giống như mở một cánh cửa, cho phép không khí thoát ra. Tuy nhiên, chúng ta có thể xây dựng một khóa không khí bao gồm hai (hoặc nhiều) cửa, không mở đồng thời. Đây là những gì xảy ra nếu chúng ta chia đồng hồ cấp thành nhiều giai đoạn.

Ví dụ đơn giản nhất về điều này là flip-flop chính . Điều này bao gồm hai flip-flop D được kích hoạt xếp tầng với nhau. Nhưng tín hiệu đồng hồ bị đảo ngược, vì vậy đầu vào của một được bật trong khi đầu kia bị vô hiệu hóa và ngược lại. Điều này giống như một cánh cửa khóa không khí. Nhìn chung, flip flop không bao giờ mở để tín hiệu có thể tự do đi qua. Nếu chúng ta có phản hồi từ đầu ra của flip-flop trở lại đầu vào, thì không có vấn đề gì vì nó chuyển sang một pha đồng hồ khác. Kết quả cuối cùng là flip-flop chủ-nô thể hiện hành vi kích hoạt cạnh! Thật hữu ích khi nghiên cứu flip-flop chủ vì nó có điều gì đó để nói về mối quan hệ giữa mức độ và kích hoạt cạnh.


1
Đồng hồ đa pha nhạy cấp độ tránh được vấn đề "hỗn loạn" nếu không có đầu ra của chốt nào quay trở lại đầu vào của nó mà không đi qua chốt được lấy mẫu trên một pha đồng hồ khác. Những thiết kế như vậy có thể có một số lợi thế khi kết nối bộ xử lý với những thứ như bộ nhớ không đồng bộ, vì thời gian giữa cạnh đầu của một pha đồng hồ và cạnh kế tiếp có thể được phân chia tùy ý giữa thời gian cần thiết để định tuyến và xuất địa chỉ, truy cập thời gian của RAM và thời gian thiết lập cho đầu vào dữ liệu của bộ xử lý.
supercat

2
@supercat Là một ví dụ quen thuộc, flip-flop chính có thể được coi là một ví dụ về đồng hồ nhiều pha. Bậc thầy và nô lệ ở trên các pha ngược nhau, và do đó, cùng một điều kiện giữ nếu có phản hồi: nó đi đến một pha khác. Tôi nên thêm nó vào câu trả lời để làm tròn nó ra.
Kaz

2
Tương tự khóa không khí +1. Tôi chưa bao giờ nghe ai giải thích theo cách này nhưng nó có ý nghĩa hoàn hảo.
ajs410

@ ajs410: Một sự tương tự khác mà tôi thích là sự thoát ly của đồng hồ. Con lắc được nối với hai cánh tay, mỗi cánh tay có thể cho phép bánh răng thoát ra tự do hoặc chặn nó vào lần tiếp theo khi nó đạt đến một "pha" nhất định. Để vận hành đúng cách, các cánh tay phải được điều chỉnh sao cho không có thời gian khi cả hai cánh tay sẽ để bánh răng quay. Nếu không có sự ràng buộc đó, cơ chế sẽ quay cuồng ngoài tầm kiểm soát.
supercat

2

Kích hoạt cạnh là tốt cho đồng hồ, bởi vì nó cho phép đầu ra giá trị bằng một chốt để đáp ứng với một cạnh đồng hồ (ví dụ tăng) được sử dụng để tính toán những gì nó nên làm trên cạnh đồng hồ tăng tiếp theo. Nếu một người đang xây dựng một mạch tuần tự, chẳng hạn như bộ đếm sử dụng một số chốt được kích hoạt cạnh, người ta có thể tùy ý trộn các thành phần logic nhanh và chậm với điều kiện, đối với mọi đường dẫn có thể, thời gian lan truyền sẽ trừ đi số lượng mà đồng hồ của chốt nhận bị trễ người gửi, được đảm bảo lớn hơn thời gian giữ của người nhận và thời gian chu kỳ cộng với số tiền mà đồng hồ của chốt nhận bị trễ người gửi, trừ thời gian lan truyền, được đảm bảo lớn hơn thời gian thiết lập của người nhận.

Ngược lại, việc xây dựng một mạch để đếm xung trên một đầu vào mà không sử dụng các chốt kích hoạt cạnh sẽ yêu cầu một số đảm bảo nhất định về tốc độ tương đối của một số phần của mạch. Một cách tiếp cận phổ biến được sử dụng là chuyển đổi tín hiệu đồng hồ đến (ClkIn) thành tín hiệu đồng hồ cặp không chồng chéo (Phi1 và Phi2). Phi1 là đúng khi ClkIn cao và đã cao trong một thời gian tối thiểu được đảm bảo . Phi2 cao khi ClkIn thấp và ở mức thấp trong một thời gian tối thiểu được đảm bảo. Khi ClkIn chuyển từ thấp lên cao, Phi2 sẽ xuống thấp trước khi Phi1 lên cao; tương tự như vậy khi nó chuyển từ cao xuống thấp. Người ta có thể xây dựng một bộ đếm bằng cách có hai bộ chốt (mà tôi sẽ gọi là Count1 và Count2). Bất cứ khi nào Phi1 cao, Count1 sẽ chốt Count2. Bất cứ khi nào Phi2 cao, Count2 chốt (Count1 + 1). Nếu cả Phi1 và Phi2 đều tăng cao cùng một lúc hoặc có quá ít thời gian giữa chúng, giá trị bộ đếm sẽ trở nên không xác định, nhưng với điều kiện duy trì sự phân tách thích hợp, bộ đếm sẽ hoạt động rất độc đáo. Các hệ thống đồng hồ hai pha thường có lượng phân tách khá hào phóng được thiết kế; miễn là mọi thứ đủ nhanh, việc tách như vậy có thể tránh được các vấn đề với độ lệch của đồng hồ.

Trong nội bộ, nhiều chốt kích hoạt cạnh có thể được coi là một cặp chốt chính / nô lệ có dây để chủ chốt chốt đầu vào bất cứ khi nào đồng hồ ở trạng thái trước cạnh và nô lệ chốt chủ khi đồng hồ ở bang sau. Các tín hiệu cung cấp cho hai chốt cần phải có mối quan hệ phù hợp, nhưng nếu chúng được tạo ra trong cùng một vùng với các chốt, người ta không cần phải thiết kế quá mức độ phân tách gần như cần thiết nếu hai pha đồng hồ là gửi qua một khu vực rộng hơn.

Lưu ý rằng trong khi kích hoạt cạnh là tốt cho đồng hồ, có những mục đích khác mà nó ít tốt hơn. Đôi khi, thuận lợi cho các sự kiện định kỳ bị gián đoạn với điều kiện là không có hai sự kiện nào có chung tín hiệu kích hoạt cạnh. Kích hoạt cạnh là tệ hại cho các ngắt được chia sẻ và trong một số trường hợp có thể có vấn đề ngay cả với các ngắt không được chia sẻ trừ khi có cách để thăm dò trạng thái của dây ngắt. Kích hoạt mức cũng có thể thuận lợi trong trường hợp tín hiệu nhấp nháy sẽ hoạt động trên cùng một chu kỳ như một số thông tin cần được chốt, nhưng trong đó thông tin có đường tính toán dài hơn so với nhấp nháy. Nếu thông tin giống như một địa chỉ cho chip bộ nhớ không đồng bộ, đôi khi nó có sẵn trong chu kỳ đồng hồ có thể tốt hơn là đợi nó đến khi bắt đầu chu kỳ xung nhịp tiếp theo.


2

Để hiểu lý do tại sao kích hoạt cạnh được ưa thích, hãy tưởng tượng một bộ cộng 8 bit được nối với một thanh ghi, liên tục thêm 1 vào giá trị của thanh ghi, với một nút ấn được nối với chân kích hoạt của thanh ghi.

Nếu chân kích hoạt của thanh ghi nhạy với mức độ, thì nội dung của thanh ghi sẽ liên tục tăng trong suốt thời gian nhấn nút. Trạng thái tiếp theo của thanh ghi sẽ không được xác định cho một lần nhấn nút nhất định. Điều này là do trình bổ sung có thể tăng thanh ghi nhiều lần trước khi bạn có thể loại bỏ ngón tay của mình - nói cách khác, phản hồi rời khỏi thanh ghi và khiến nó quay trở lại trình bổ sung quá nhanh.

Thay vào đó, nếu pin cho phép nhạy với cạnh, nội dung của thanh ghi sẽ tăng chính xác một lần mỗi lần nhấn nút, bất kể nút được nhấn trong bao lâu (giả sử đầu vào được gỡ bỏ đúng cách). Đầu ra của thanh ghi sẽ không thể quay lại trình cộng kịp thời cho bất kỳ hành vi không xác định nào.


1

Giống như những người khác đã nói, cạnh là một thời điểm rất cụ thể. Chúng ta đều biết rằng các mạch kỹ thuật số có thể gặp trục trặc trong đó đầu ra của cổng bị sai do chỉ một vài đầu vào của nó chạm tới nó, các tín hiệu khác đang trên đường và mất nhiều thời gian hơn vì đường truyền dài hơn (điện truyền đi khá nhanh nhưng vẫn 3x10 ^ 8 m / s mất một chút thời gian để đi vòng quanh dây). Nếu chúng ta có một đơn vị cấp ba, đầu ra của nó sẽ bị ảnh hưởng bởi các trục trặc. Với việc làm cho mọi thứ bị kích hoạt, chúng ta có một cửa sổ rất hẹp trong thời gian "mọi thứ có thể xảy ra", nói cách khác, mạch sẽ chỉ thay đổi trạng thái của nó (các giá trị tại các dây khác nhau bên trong mạch, bao gồm cả đầu ra được xác định rõ thời gian. Xin lưu ý cụm từ "instants in time"

Tại thời điểm này, bạn sẽ không nhận thức được một cái gì đó gọi là "phân tích thời gian" nhưng tôi sẽ giải thích một chút. Khi chúng tôi tạo ra các mạch kỹ thuật số, chúng tôi muốn mô phỏng chúng để xem cách chúng hoạt động và nếu hành vi này phù hợp với những gì chúng tôi muốn nó làm. Trong phân tích thời gian, chúng tôi kiểm tra xem các tín hiệu có thể đạt đến một điểm nhất định trong mạch trong thời gian cần thiết hay không. Nếu chúng quá trễ thì mạch sẽ không hoạt động chính xác. Bằng cách sử dụng các khối mạch kích hoạt cạnh thay vì kích hoạt mức, phân tích thời gian trở nên rất dễ dàng vì chúng ta biết chính xác khi nào mọi thứ có thể xảy ra trong mạch. Điều này có nghĩa là thiết kế của mạch cũng trở nên dễ dàng hơn. Hãy nhớ rằng trong thế giới thực, bạn sẽ bắt gặp các chốt kích hoạt cấp độ rất hiếm khi xảy ra.


1

Mặc dù các câu trả lời khác đã bao gồm hầu hết mọi thứ cần nói về câu hỏi của bạn, để làm rõ hơn tôi đã thêm một vài sơ đồ và một lời giải thích ngắn.

Hãy tưởng tượng bạn muốn thiết kế một mạch bao gồm một số loại phản hồi. Nói A = A.B(về cơ bản là một cổng AND với một phản hồi). Nếu bạn thực hiện nó bằng cách sử dụng chốt nhạy cấp độ đơn giản lưu trữ giá trị của A, mạch của bạn sẽ trông giống như thế này nhập mô tả hình ảnh ở đây

Điều này có thể tạo ra một vấn đề. Khi đồng hồ ở mức cao, chốt sẽ trở nên trong suốt và cổng AND sẽ tính giá trị mới của A and B. Nhưng giá trị được đưa trở lại chốt và vì chốt vẫn trong suốt (CLK vẫn cao), giá trị mới của A AND Bđược tính toán. Đây là những gì thường được gọi là Điều kiện cuộc đua , tạo ra sự cố (mức cao và mức thấp bất ngờ trong đầu ra) mà bạn đã đề cập.

Một giải pháp cho vấn đề này là giữ cho xung CLK rất ngắn, đủ ngắn để một khi đầu ra của cổng AND được tạo ra, chốt được hủy kích hoạt trước khi giá trị được sao lưu trở lại đầu vào. Nó nên trực quan để xem tại sao điều này có thể khó đạt được. Nó sẽ phụ thuộc vào tốc độ chuyển đổi của chốt (cuối cùng, một chốt cũng được tạo ra từ các cổng tổ hợp), chiều dài của dây và hàng trăm thông số khác.

Một lựa chọn khả thi thứ hai là sử dụng một yếu tố nhạy cảm cạnh (lật trong trường hợp này), về cơ bản là một vài chốt được kết nối một cách rất thông minh.

nhập mô tả hình ảnh ở đây

Về cơ bản, khi CLKtín hiệu ở mức cao, chốt U1 trong suốt, sẽ mang giá trị logic ở đầu vào A đến đầu ra của chốt U1, khi CLKtín hiệu ở mức THẤP, chốt U2 trở nên trong suốt và tính giá trị mới A AND B. Nhưng giá trị này sẽ lan truyền đến đầu vào của cổng AND khi chốt U1 trở nên trong suốt (CLK là CAO) và do đó chốt U1 trở nên trong suốt (CLK là THẤP). Về cơ bản là tương đương với việc nói rằng mạch bây giờ có độ nhạy cạnh (giá trị đầu ra chỉ thay đổi ở cạnh âm của đồng hồ).

Điều này tránh được vấn đề về Điều kiện cuộc đua được giải thích trước đó và đó là lý do tại sao kích hoạt cấp độ được ưa thích hơn kích hoạt cạnh.

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.