Làm thế nào để hiểu chốt SR


14

Tôi không thể quấn đầu xung quanh cách SR Latch hoạt động. Dường như, bạn cắm một dòng đầu vào từ R và một dòng khác từ S, và bạn có nghĩa vụ phải nhận kết quả trong Q và Q.

Tuy nhiên, cả R và S đều yêu cầu đầu vào từ đầu ra của nhau và đầu ra của đầu kia yêu cầu đầu vào từ đầu ra của nhau. Cái gì đến đầu tiên gà hay trứng ??

Khi bạn lần đầu tiên cắm mạch này vào, làm thế nào để nó bắt đầu?

Chốt SR


1
Cuối cùng tôi đã tìm thấy một câu trả lời thực sự tuyệt vời trong cuốn sách Nhưng làm thế nào để biết . Bạn có thể thấy nó ở liên kết trên trang 24.
CodyBugstein

Để hiểu rõ hơn về SR Latch một cách kỹ lưỡng và cách nó hoạt động cho các đầu vào khác nhau như 00, 01, 10 và 11, hãy xem video này. www.youtube.com/watch?v=VtVIDgilwlA

Câu trả lời:


5

Một câu hỏi nhận thức. Trên thực tế, nếu bạn xây dựng chốt này trong một chương trình mô phỏng, nó thực sự sẽ cho bạn thấy rằng nó không thể dự đoán trạng thái nào sẽ bắt đầu trong:

Chốt RS có cổng NOR, hầu hết các tín hiệu được tô màu ĐỎ cho "không xác định"

Nhưng nếu bạn đặt một trong các đầu vào ở mức cao (đó là các nút ấn ở bên trái), tín hiệu sẽ truyền qua (hãy nhớ, 1 HOẶC [bất cứ thứ gì] bằng 1) và mạch sẽ chốt trạng thái đó:

Cùng chốt;  một đầu vào cao;  tất cả các dòng chuyển sang màu sáng hoặc màu xanh đậm

Đây là các cổng NOR, do đó đầu ra đảo ngược xuống thấp khi đầu vào ở mức cao. Chương trình tôi đã sử dụng là Logisim. Nó là nhỏ, và tôi khuyên bạn nên bắt đầu. Trình biên dịch logic (FPGA và mọi thứ khác) thích phàn nàn về các trạng thái chưa được khởi tạo. Đây là một ví dụ tuyệt vời đầu tiên.

Bây giờ, tôi biết rằng trong cuộc sống thực, mạch sẽ ngẫu nhiên tự khóa vào một hoặc trạng thái khác. Nhiều người khác đã chỉ ra rằng. Nhưng đôi khi, điều quan trọng là nó đáng tin cậy bắt đầu ở trạng thái này hay trạng thái khác, và đó là những gì tất cả các cảnh báo là về.


Cảm ơn lời giải thích tuyệt vời .. Nếu tôi hiểu đúng về bạn, khi cắm điện, mạch bắt đầu ở trạng thái ngẫu nhiên nào đó?
CodyBugstein

@Imray Tôi sẽ không sử dụng cụm từ "trạng thái ngẫu nhiên" mà là "trạng thái không xác định". Nó có thể chọn ngẫu nhiên, nó có thể là điều tương tự mọi lúc, điều quan trọng là bạn không biết và không quan tâm. Tất cả những gì bạn cần làm là nhận ra rằng bạn phải khởi tạo chốt (bằng cách đập nhanh R hoặc S cao) trước khi bạn bắt đầu dựa vào đầu ra.
Scott Chamberlain

Tôi chỉ đọc lại câu trả lời của bạn và hiểu những điều mà trước đây tôi đã bỏ lỡ. Giải thích tuyệt vời!
CodyBugstein

5

Một flip-flop được thực hiện như là một multivibrator bi-ổn định; do đó, Q và Q 'được đảm bảo là nghịch đảo của nhau cho tất cả các đầu vào ngoại trừ S = 1, R = 1, không được phép. Bảng kích thích cho flip-flop SR rất hữu ích trong việc tìm hiểu những gì xảy ra khi tín hiệu được áp dụng cho đầu vào.

S R  Q(t) Q(t+1)   
----------------
0 x   0     0       
1 0   0     1   
0 1   1     0   
x 0   1     1   

Đầu ra Q và Q 'sẽ nhanh chóng thay đổi trạng thái và dừng lại ở trạng thái ổn định sau khi tín hiệu được áp dụng cho S và R.

Example 1: Q(t) = 0, Q'(t) = 1, S = 0, R = 0. 

State 1: Q(t+1 state 1)  = NOT(R OR Q'(t)) = NOT(0 OR 1) = 0
         Q'(t+1 state 1) = NOT(S OR Q(t)) =  NOT(0 OR 0) = 1

State 2: Q(t+1 state 1)  = NOT(R OR Q'(t+1 state 1)) = NOT(0 OR 1) = 0
         Q'(t+1 state 2) = NOT(S OR Q(t+1 state 1))  =  NOT(0 OR 0) = 1     

Since the outputs did not change, we have reached a steady state; therefore, Q(t+1) = 0, Q'(t+1) = 1.


Example 2: Q(t) = 0, Q'(t) = 1, S = 0, R = 1

State 1: Q(t+1 state 1)  = NOT(R OR Q'(t)) = NOT(1 OR 1) = 0
         Q'(t+1 state 1) = NOT(S OR Q(t))  = NOT(0 OR 0) = 1


State 2: Q(t+1 state 2)  = NOT(R OR Q'(t+1 state 1)) = NOT(1 OR 1) = 0
         Q'(t+1 state 2) = NOT(S OR Q(t+1 state 1))  =  NOT(0 OR 0) = 1     


We have reached a steady state; therefore, Q(t+1) = 0, Q'(t+1) = 1.


Example 3: Q(t) = 0, Q'(t) = 1, S = 1, R = 0

State 1: Q(t+1 state 1)  = NOT(R OR Q'(t)) = NOT(0 OR 1) = 0
         Q'(t+1 state 1) = NOT(S OR Q(t)) =  NOT(1 OR 0) = 0

State 2: Q(t+1 state 2)  = NOT(R OR Q'(t+1 state 1)) = NOT(0 OR 0) = 1
         Q'(t+1 state 2) = NOT(S OR Q(t+1 state 1))  = NOT(1 OR 0) = 0     

State 3: Q(t+1 state 3)  = NOT(R OR Q'(t+1 state 2)) = NOT(0 OR 0) = 1
         Q'(t+1 state 3) = NOT(S OR Q(t+1 state 2))  = NOT(1 OR 1) = 0     

We have reached a steady state; therefore, Q(t+1) = 1, Q'(t+1) = 0.


Example 4: Q(t) = 1, Q'(t) = 0, S = 1, R = 0

State 1: Q(t+1 state 1)  = NOT(R OR Q'(t)) = NOT(0 OR 0) = 1
         Q'(t+1 state 1) = NOT(S OR Q(t)) =  NOT(1 OR 1) = 0

State 2: Q(t+1 state 2)  = NOT(R OR Q'(t+1 state 1)) = NOT(0 OR 0) = 1
         Q'(t+1 state 2) = NOT(S OR Q(t+1 state 1))  = NOT(1 OR 1) = 0     

We have reached a steady state; therefore, Q(t+1) = 1, Q'(t+1) = 0.


Example 5: Q(t) = 1, Q'(t) = 0, S = 0, R = 0

State 1: Q(t+1 state 1)  = NOT(R OR Q'(t)) = NOT(0 OR 0) = 1
         Q'(t+1 state 1) = NOT(S OR Q(t)) =  NOT(0 OR 1) = 0

State 2: Q(t+1 state 2)  = NOT(R OR Q'(t+1 state 1)) = NOT(0 OR 0) = 1
         Q'(t+1 state 2) = NOT(S OR Q(t+1 state 1))  = NOT(0 OR 1) = 0     

We have reached a steady; state therefore, Q(t+1) = 1, Q'(t+1) = 0.


With Q=0, Q'=0, S=0, and R=0, an SR flip-flop will oscillate until one of the inputs is set to 1.

    Example 6: Q(t) = 0, Q'(t) = 0, S = 0, R = 0

    State 1: Q(t+1 state 1)  = NOT(R OR Q'(t)) = NOT(0 OR 0) = 1
             Q'(t+1 state 1) = NOT(S OR Q(t)) =  NOT(0 OR 0) = 1

    State 2: Q(t+1 state 2)  = NOT(R OR Q'(t+1 state 1)) = NOT(0 OR 1) = 0
             Q'(t+1 state 2) = NOT(S OR Q(t+1 state 1))  = NOT(0 OR 1) = 0     

    State 3: Q(t+1 state 3)  = NOT(R OR Q'(t+1 state 2)) = NOT(0 OR 0) = 1
             Q'(t+1 state 3) = NOT(S OR Q(t+1 state 2)) =  NOT(0 OR 0) = 1

    State 4: Q(t+1 state 4)  = NOT(R OR Q'(t+1 state 3)) = NOT(0 OR 1) = 0
             Q'(t+1 state 4) = NOT(S OR Q(t+1 state 3))  = NOT(0 OR 1) = 0     
    ...


As one can see, a steady state is not possible until one of the inputs is set to 1 (which is usually handled by power-on reset circuitry).

Nếu chúng tôi kiểm tra việc triển khai đơn giản nhất của SR flip-flop (xem http://en.wikipedia.org/wiki/File:Transistor_Bistable_interactive_animated_EN.svg ), chúng tôi phát hiện ra rằng nó bao gồm hai bóng bán dẫn tiếp giáp hai cực (BJTs) và bốn điện trở (thay thế các công tắc chuyển đổi SPST xuống đất bằng các công tắc SPDT có thể chuyển đổi các đường đặt và đặt lại giữa điện thế đất và V +). Các BJT được cấu hình như các bộ biến tần phát chung. Bộ thu (đầu ra) của mỗi bóng bán dẫn được đưa trở lại vào đế (đầu vào) của bóng bán dẫn đối diện. Đầu vào S được nối dây với đầu ra của BJT có kết nối bộ thu đóng vai trò là đầu ra Q (đường giao nhau của R1 / R3). Đầu vào R được nối dây với đầu ra là BJT có kết nối bộ thu đóng vai trò là đầu ra Q '(đường giao nhau của R2 / R4).

Khi mạch đầu tiên bật nguồn, không bóng bán dẫn nào bị lệch về phía trước trong vùng bão hòa trong một phần rất nhỏ của giây, điều đó có nghĩa là cả Q và Q 'đều ở mức logic 1. Điện áp có sẵn ở mỗi bộ thu được đưa vào cơ sở của bóng bán dẫn ngược lại, khiến nó trở nên lệch về phía trước trong vùng bão hòa. Transitor trở thành phân cực thuận trước sẽ bắt đầu dẫn dòng trước, do đó sẽ gây ra sụt áp xảy ra trên điện trở collector của nó, đặt đầu ra của nó thành mức logic 0. Việc giảm điện áp collector này sẽ ngăn bóng bán dẫn ngược lại trở nên thiên về phía trước; do đó, thiết lập trạng thái ban đầu của flip-flop. Về cơ bản, đó là một điều kiện chạy đua phần cứng dẫn đến một kết quả không thể đoán trước.


Bạn có thể hoạt hình mạch tại liên kết được cung cấp, nhưng trong điều kiện đơn giản hơn? Tôi đang tham gia khóa học dành cho người mới bắt đầu
CodyBugstein

3

Như bạn đã nói, nó không được xác định. Trong thực tế, có các quá độ hoặc các quirks sẽ đặt chốt vào một trạng thái nhất định, nhưng không có gì đảm bảo nó sẽ ở trạng thái nào. Điều này được gây ra bởi sự không khớp trong hai cổng sẽ xác định trạng thái ban đầu nhất định (về cơ bản là mạch không Nó hoạt động như một chốt SR kỹ thuật số thực sự nhưng là một mạch tương tự phức tạp như trong đời thực). Đầu ra ban đầu sẽ ít nhiều ngẫu nhiên, Q=1 and ~Q=0hoặc Q=0 and ~Q=1.

Chặn rõ ràng được đề cập bởi một biểu dữ liệu Tôi sẽ không dựa vào một trạng thái được chọn so với trạng thái khác vì trạng thái init thực tế có thể thay đổi giữa các phần khác nhau trong lô, vị trí trên bảng, các yếu tố môi trường (nhiệt độ / độ ẩm / v.v.) và lão hóa (không có nghĩa là một danh sách đầy đủ các yếu tố).

Cách tốt nhất để xác định trạng thái là sau khi khởi động xác nhận cài đặt hoặc đặt lại để đặt chốt SR vào trạng thái đã biết.

Một lưu ý phụ, nói chung, các chốt SR khẳng định S và R cùng một lúc cũng sẽ dẫn đến hành vi không xác định và bạn đang dựa vào voodoo tương tự để đặt đầu ra (một triển khai thực tế có thể tắt cả hai đầu ra, ngẫu nhiên chuyển đổi hai đầu ra, chuyển đổi cả hai đầu ra, v.v.). Như supercat đã nhận xét nếu một pin không được xác nhận trước khi chốt kia có thể vào trạng thái đã biết vì chỉ có một pin được xác nhận. Các loại chốt / lật khác có thể xác định một hành vi khác, ví dụ: flip-flop xác định xác nhận cả hai chân để chuyển đổi đầu ra (Q = ~ Qprev, ~ Q = Qprev).


Nhưng câu hỏi của tôi là, làm thế nào nó có thể được đặt thành bất cứ điều gì nếu cả hai đầu vào đều dựa vào đầu vào chưa tồn tại? Nó giống như một trường hợp "bạn nâng tôi lên không trung, sau đó tôi sẽ nâng bạn và cả hai chúng tôi sẽ lơ lửng trong không trung"
CodyBugstein

2
@Imray - Một mặt của flip-flop luôn đánh bại mặt kia khi được cung cấp năng lượng mới. Nó thường luôn tăng sức mạnh theo cùng một cách do sự không phù hợp về thời gian nhưng không có gì đảm bảo cho loại thiết bị này.
Andy aka

1
Chính xác. Nó phụ thuộc vào một hiện tượng không phù hợp. Bạn không cần nghĩ cả hai bên đều giống hệt nhau. Họ không phải. Một trong số chúng chậm hơn, cái còn lại nhanh hơn và điều này sẽ khiến một trong số chúng bật lên ban đầu.
Gustavo Litovsky

Có, tôi sẽ dựa vào hành vi không khớp này để đảm bảo trạng thái ban đầu là "hợp lệ" (chúng tôi không nhận Q = ~ Q), nhưng tôi sẽ không dựa vào hành vi này để đảm bảo Q luôn là trạng thái nhất định khi khởi động vì điều này có thể khác nhau giữa các phần trong một lô hoặc thậm chí thay đổi cho cùng một phần theo nhiệt độ / thời gian. Tất nhiên bảng dữ liệu có thể nói khác, nhưng nói chung tôi sẽ không dựa vào nó.
hellowworld922

Một điều khá phổ biến là hành vi của một chốt sẽ được xác định khi cả hai đầu vào ở trạng thái "hoạt động" [cao cho một chốt NOR; thấp cho một chốt NAND], với điều kiện là một trong những đầu vào không hoạt động đáng chú ý trước đầu kia.
supercat

2

Hãy nhớ rằng các cổng đang đảo ngược. Điều này cung cấp một vòng phản hồi tích cực. Giả sử rằng cả S và R đều bằng 0 và một đầu ra là một, đầu ra này sẽ quay trở lại vào cổng khác để buộc đầu ra khác về 0. Bằng cách này, các cổng ở một trong hai trạng thái ổn định.

Ngay khi bạn đặt một trong S hoặc R thành một, điều này sẽ buộc cổng tương ứng thành đầu ra bằng 0, đến lượt nó, sẽ buộc cổng kia thành đầu ra 0. Một lần nữa, ổn định.

Ví dụ: trạng thái ban đầu: S = 0, R = 0, Q = 0, Q # = 1. Bây giờ bạn đặt S = 1. Điều này sẽ thay đổi đầu ra cổng dưới (Q #) thành 0. Điều này 0 cấp vào phía trên cổng, buộc đầu ra đó (Q) thành 1. Điều này 1 đưa trở lại cổng dưới. Khi bạn đặt S trở về 0, cổng dưới vẫn nhận được 1 từ cổng khác. Điều này sẽ giữ đầu ra Q # ở mức 0.

Nếu Q đã là 1 và bạn đặt S thành 1, cả hai đầu vào cho cổng dưới là 1 và do đó không có thay đổi.


Tôi không hiểu làm thế nào Q 'có thể trở thành một nếu không có đầu vào nào thực sự có thể thực thi.
CodyBugstein

Một lần nữa, trạng thái ổn định chỉ khi MỘT CỦA Q và Q # là một. Nếu không, (ví dụ khi bật nguồn), các cổng sẽ nhanh chóng đảm nhận một trong hai trạng thái ổn định, tùy thuộc vào tốc độ thực tế của hai cổng và như vậy. Khi các cổng ổn định, bạn có thể sử dụng hai đầu vào để chuyển giữa các trạng thái ổn định.
DoxyLover

1

Tôi nghĩ rằng điều quan trọng mà bạn đang hỏi phải liên quan đến thực tế là chốt tăng sức mạnh ở trạng thái không xác định, vậy làm thế nào để chúng ta đưa nó vào trạng thái đã biết. Bạn cần nhớ rằng nếu đầu vào của cổng NOR là 1 thì đầu ra phải là 0, bất kể trạng thái của đầu vào khác. Vì vậy, áp dụng các kết hợp đầu vào SET hoặc RESET sẽ luôn buộc chốt vào trạng thái đặt hoặc đặt lại, bất kể trạng thái trước đó của chốt.


Có bạn hiểu câu hỏi của tôi! Tuy nhiên, tôi vẫn không cảm thấy được trả lời với những gì bạn đã viết. Giả sử chốt chưa bao giờ được cắm, và đột nhiên, lần đầu tiên, x và y được cắm vào. Làm thế nào họ có thể có bất kỳ ảnh hưởng nào đến Q nếu họ không thể vượt qua cổng ban đầu ??
CodyBugstein

Tôi giả sử rằng bạn có nghĩa là các đầu vào R và S nhận được một số giá trị X và Y. Nếu X hoặc Y là một, thì đầu ra của cổng NOR đó phải là 0 ... đó là cách các cổng NOR hoạt động. Vì vậy, 0 nguồn cấp dữ liệu trở lại cổng NOR khác, có lẽ có 0 cho đầu vào của nó (nếu X là 1 thì Y là 0 hoặc ngược lại). Vì vậy, bây giờ cổng NOR thứ hai có hai đầu vào là 0 và đầu ra của nó phải là 1. Tình huống duy nhất mà chúng ta không thể nói điều gì sẽ xảy ra với Q và Q 'là nếu cả X và Y (có nghĩa là cả S và R) đặt thành 0 ngay sau khi bật nguồn. Như những người khác đã lưu ý, đây là một trạng thái không ổn định.
Joe Hass
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.