วิธีการทำความเข้าใจ SR Latch


14

ฉันไม่สามารถคาดศีรษะได้ว่า SR Latch ทำงานอย่างไร ดูเหมือนว่าคุณเสียบสายอินพุตจาก R และอีกสายจาก S และคุณควรได้ผลลัพธ์เป็น Q และ Q ′

อย่างไรก็ตามทั้ง R และ S ต้องการอินพุตจากเอาต์พุตของอีกอันและเอาต์พุตของอีกอันนั้นต้องการอินพุตจากเอาต์พุตของอีกอัน ไก่หรือไข่มาก่อนอะไร?

เมื่อคุณเสียบวงจรนี้ครั้งแรกมันเริ่มต้นอย่างไร

SR Latch


1
ในที่สุดฉันก็พบคำตอบที่ยอดเยี่ยมจริงๆในหนังสือแต่รู้ได้อย่างไร คุณสามารถดูได้ที่ลิงค์ในหน้า 24
CodyBugstein

เพื่อความเข้าใจที่ดีขึ้นเกี่ยวกับ SR Latch อย่างละเอียดและวิธีการทำงานของอินพุตที่แตกต่างกันเช่น 00, 01, 10 และ 11 ลองดูวิดีโอนี้ www.youtube.com/watch?v=VtVIDgilwlA

คำตอบ:


5

คำถามที่เข้าใจง่าย ในความเป็นจริงถ้าคุณสร้างสลักนี้ในโปรแกรมจำลองสถานการณ์มันจะแสดงให้คุณเห็นว่ามันไม่สามารถทำนายได้ว่าสถานะมันจะเริ่มต้นใน:

RS latch กับ NOR ประตูสัญญาณส่วนใหญ่มีสีแดงสำหรับ "ไม่ทราบ"

แต่ถ้าคุณตั้งค่าอินพุตหนึ่งค่าสูง (ซึ่งเป็นปุ่มกดด้านซ้าย) สัญญาณจะแพร่กระจายผ่าน (จำไว้ว่า 1 หรือ [อะไรก็ได้เท่ากับ 1) และวงจรจะสลักสถานะนั้น:

สลักเดียวกัน  อินพุตหนึ่งสูง  เส้นทั้งหมดเปิดไฟหรือสีเขียวเข้ม

เหล่านี้คือประตู NOR ดังนั้นเอาต์พุตกลับด้านจะต่ำเมื่ออินพุตทั้งสองมีค่าสูง โปรแกรมที่ฉันใช้คือ Logisim มันมีขนาดเล็กและฉันแนะนำให้ใช้สำหรับการเริ่มต้น ผู้รวบรวมลอจิก (FPGA และทุกอย่างอื่น) ชอบที่จะบ่นเกี่ยวกับสถานะที่ไม่ได้กำหนดค่าเริ่มต้น นี่เป็นตัวอย่างแรกที่ยอดเยี่ยม

ตอนนี้ฉันรู้แล้วว่าในชีวิตจริงวงจรจะสุ่มเข้าสู่สถานะหนึ่งหรืออีกรัฐหนึ่งด้วยตัวเอง คนอื่นหลายคนชี้ให้เห็นว่า แต่บางครั้งมันเป็นสิ่งสำคัญที่จะเริ่มต้นอย่างน่าเชื่อถือในสถานะหนึ่งหรืออีกรัฐและนั่นคือสิ่งที่คำเตือนทั้งหมดเกี่ยวกับ


ขอบคุณสำหรับคำอธิบายที่ยอดเยี่ยม .. ถ้าฉันเข้าใจถูกต้องเมื่อเสียบเข้ากับวงจรจะเริ่มทำงานในสถานะสุ่มบางอย่าง?
CodyBugstein

@Imray ฉันจะไม่ใช้วลี "random state" แต่ "state undefined" มันสุ่มเลือกมันอาจเป็นสิ่งเดียวกันทุกครั้งสิ่งสำคัญคือคุณไม่รู้และไม่สนใจ สิ่งที่คุณต้องทำคือรู้ว่าคุณต้องเริ่มต้นสลัก (โดยการเต้นเป็นจังหวะ R หรือ S สูงในเวลาสั้น ๆ ) ก่อนที่คุณจะเริ่มใช้งานเอาต์พุต
Scott Chamberlain

ฉันอ่านคำตอบของคุณและเข้าใจสิ่งที่ฉันพลาดไปก่อนหน้านี้ คำอธิบายที่ดี!
CodyBugstein

5

flip-flop ถูกนำมาใช้เป็นมัลติไวเบรเตอร์ที่เสถียร ดังนั้น Q และ Q 'รับประกันว่าจะเป็นอินเวอร์สซึ่งกันและกันสำหรับอินพุตทั้งหมดยกเว้น S = 1, R = 1 ซึ่งไม่ได้รับอนุญาต ตารางการกระตุ้นสำหรับ flip-fl SR มีประโยชน์ในการทำความเข้าใจว่าเกิดอะไรขึ้นเมื่อสัญญาณถูกนำไปใช้กับอินพุต

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

เอาต์พุต Q และ Q 'จะเปลี่ยนสถานะอย่างรวดเร็วและเข้าสู่สถานะคงที่หลังจากสัญญาณถูกใช้กับ S และ 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).

หากเราตรวจสอบการติดตั้งฟลิปฟล็อปที่ง่ายที่สุด (ดูhttp://en.wikipedia.org/wiki/File:Transistor_Bistable_interactive_animated_EN.svg ) เราจะค้นพบว่ามันประกอบไปด้วยทรานซิสเตอร์สองขั้วสองขั้ว (BJTs) และสี่ตัว ตัวต้านทาน (แทนที่สวิตช์สลับ SPST เป็นกราวด์ด้วยสวิตช์ SPDT ที่สามารถสลับการตั้งค่าและเส้นรีเซ็ตระหว่างศักย์ไฟฟ้ากราวด์และ V +) BJTs มีการกำหนดค่าเป็นอินเวอร์เตอร์อีซีแอลทั่วไป ตัวรวบรวม (เอาต์พุต) ของแต่ละทรานซิสเตอร์จะถูกป้อนกลับเข้าไปในฐาน (อินพุต) ของทรานซิสเตอร์ตรงกันข้าม อินพุต S เป็น wire-ORed พร้อมกับเอาต์พุตของ BJT ซึ่งการเชื่อมต่อตัวสะสมทำหน้าที่เป็นเอาต์พุต Q (ทางแยกของ R1 / R3) อินพุต R เป็นแบบ wire-ORed กับเอาต์พุต BJT ซึ่งการเชื่อมต่อตัวสะสมทำหน้าที่เป็นเอาต์พุต Q '(แยกของ R2 / R4)

เมื่อวงจรมีพลังขึ้นครั้งแรกไม่มีทรานซิสเตอร์ถูกส่งต่อไปยังพื้นที่อิ่มตัวสำหรับเสี้ยววินาทีซึ่งหมายความว่าทั้ง Q และ Q อยู่ที่ระดับลอจิก 1 แรงดันไฟฟ้าที่มีในแต่ละตัวสะสมจะถูกป้อนไปยังฐาน ของทรานซิสเตอร์ตรงข้ามซึ่งทำให้เกิดความเอนเอียงไปข้างหน้าในพื้นที่อิ่มตัว ทรานซิสเตอร์ที่กลายเป็นลำเอียงไปข้างหน้าก่อนจะเริ่มดำเนินการกระแสแรกซึ่งในทางกลับกันจะทำให้แรงดันไฟฟ้าตกที่จะเกิดขึ้นในตัวต้านทานสะสมของการตั้งค่าเอาท์พุทเป็นระดับตรรกะ 0 แรงดันไฟฟ้าสะสมลดลงนี้จะป้องกันทรานซิสเตอร์ตรงกันข้าม กลายเป็นลำเอียงไปข้างหน้า; ดังนั้นการตั้งค่าสถานะเริ่มต้นของ flip-flop มันเป็นเงื่อนไขการแข่งขันของฮาร์ดแวร์ที่นำไปสู่ผลลัพธ์ที่คาดเดาไม่ได้


คุณสามารถสร้างแอนิเมชั่นวงจรที่ลิงค์ที่ให้ไว้ แต่ในแง่ง่าย ๆ มากกว่านี้? ฉันกำลังเรียนหลักสูตรระดับปริญญาตรีเริ่มต้น
CodyBugstein

3

อย่างที่คุณพูดมันไม่ได้กำหนด ในทางปฏิบัติมี transients หรือนิสัยใจคอที่ควรใส่สลักเข้าไปในสถานะหนึ่ง แต่ไม่มีการรับประกันว่ามันจะอยู่ในสภาพนี้เกิดจากการที่ไม่ตรงกันในสองประตูซึ่งจะกำหนดสถานะเริ่มต้นที่กำหนด (โดยทั่วไปวงจรไม่ จะไม่ทำหน้าที่เป็นสลักดิจิตอล SR แต่เป็นวงจรอะนาล็อกที่ซับซ้อนเหมือนในชีวิตจริง) การส่งออกเริ่มต้นจะมีมากขึ้นหรือน้อยลงสุ่มอย่างใดอย่างหนึ่งหรือQ=1 and ~Q=0Q=0 and ~Q=1

ยกเว้นการกล่าวถึงอย่างชัดเจนจากแผ่นข้อมูลฉันจะไม่พึ่งพารัฐหนึ่งที่ได้รับเลือกอีกรัฐหนึ่งเนื่องจากสถานะ init ที่แท้จริงสามารถเปลี่ยนแปลงได้ระหว่างส่วนต่าง ๆ ในแบทช์ตำแหน่งบนกระดานปัจจัยสภาพแวดล้อม (อุณหภูมิ / ความชื้น / ฯลฯ ) และอายุ (ไม่ได้หมายถึงรายการปัจจัยทั้งหมด)

วิธีที่ดีที่สุดในการกำหนดสถานะคือหลังจากเริ่มต้นยืนยันชุดหรือรีเซ็ตเพื่อให้สลัก SR อยู่ในสถานะที่รู้จัก

ในฐานะที่เป็นบันทึกด้านข้างโดยทั่วไป SR latches asserting S และ R ในเวลาเดียวกันก็จะส่งผลให้พฤติกรรมที่ไม่ได้กำหนดและคุณพึ่งพาวูดูที่คล้ายกันเพื่อตั้งค่าเอาท์พุท (การใช้งานจริงอาจปิดทั้งสองเอาต์พุต สลับทั้งเปิดเอาท์พุท ฯลฯ ) ดังที่ Supercat แสดงความคิดเห็นหากมีการยืนยันขาเดียวก่อนที่สลักอื่น SR จะสามารถเข้าสู่สถานะที่ทราบได้เนื่องจากมีเพียงหนึ่งหมุดที่ถูกยืนยัน ประเภทอื่น ๆ ของ latches / flip flops อาจกำหนดลักษณะการทำงานที่แตกต่างกันเช่น JK flip-flop กำหนด asserting หมุดทั้งสองเพื่อสลับเอาต์พุต (Q = ~ Qprev, ~ Q = Qprev)


แต่คำถามของฉันคือจะตั้งค่าเป็นอย่างไรถ้าอินพุตทั้งสองพึ่งพาอินพุตที่ยังไม่มีอยู่ มันเหมือนกับกรณีของ "คุณยกฉันขึ้นไปในอากาศแล้วฉันจะยกคุณขึ้นมาและเราทั้งคู่จะลอยอยู่ในอากาศ"
CodyBugstein

2
@Imray - ด้านใดด้านหนึ่งของ flip-flop จะเต้นกันเสมอเมื่อขับเคลื่อนใหม่ มันมักจะให้พลังงานในลักษณะเดียวกันเสมอเนื่องจากไม่ตรงกันเวลาเล็กน้อย แต่ไม่มีการรับประกันกับอุปกรณ์ประเภทนี้
แอนดี้อาคา

1
เผง มันขึ้นอยู่กับปรากฏการณ์ที่ไม่ตรงกัน คุณต้องไม่คิดว่าทั้งสองฝ่ายเหมือนกัน พวกเขาไม่. หนึ่งในนั้นช้าลงเร็วขึ้นและสิ่งนี้จะทำให้หนึ่งของพวกเขาเปิดในตอนแรก
Gustavo Litovsky

ใช่ฉันจะพึ่งพาพฤติกรรมไม่ตรงกันนี้เพื่อให้แน่ใจว่าสถานะเริ่มต้นคือ "ถูกต้อง" (เราไม่ได้รับ Q = ~ Q) แต่ฉันจะไม่พึ่งพาพฤติกรรมนี้เพื่อให้แน่ใจว่า Q เป็นสถานะที่แน่นอนเมื่อเริ่มต้นตั้งแต่นี้ อาจแตกต่างกันระหว่างชิ้นส่วนในแบทช์หรือแม้กระทั่งเปลี่ยนชิ้นส่วนเดียวกันในช่วงอุณหภูมิ / เวลา แน่นอนว่าแผ่นข้อมูลอาจระบุเป็นอย่างอื่น แต่โดยทั่วไปฉันจะไม่ใช้มันเป็นอย่างอื่น
helloworld922

เป็นเรื่องธรรมดาที่พฤติกรรมของ latch จะถูกกำหนดเมื่ออินพุตทั้งสองอยู่ในสถานะ "active" [high สำหรับ latch NOR; ระดับต่ำสำหรับสลัก NAND] โดยมีเงื่อนไขว่าหนึ่งอินพุตจะไม่ทำงานอย่างเห็นได้ชัดต่อหน้าอีกอันหนึ่ง
supercat

2

โปรดทราบว่าประตูกำลังกลับหัวกลับหาง นี่เป็นการวนลูปตอบรับเชิงบวก สมมติว่าทั้ง S และ R เป็นศูนย์และเอาท์พุทหนึ่งเป็นหนึ่งอันนี้จะป้อนกลับเข้าไปในประตูอื่นเพื่อบังคับให้เอาท์พุทอื่นเป็นศูนย์ ด้วยวิธีนี้ประตูอยู่ในสถานะเสถียรสองสถานะ

ทันทีที่คุณตั้งค่า S หรือ R หนึ่งตัวสิ่งนี้จะบังคับให้เกตที่สอดคล้องกันส่งออกเป็นศูนย์ เสถียรอีกครั้ง

ตัวอย่างเช่นสถานะเริ่มต้น: S = 0, R = 0, Q = 0, Q # = 1 ตอนนี้คุณตั้งค่า S = 1 ซึ่งจะเปลี่ยนเอาท์พุตเกตล่าง (Q #) เป็น 0 0 ฟีดนี้ลงด้านบน เกตบังคับให้เอาต์พุต (Q) ถึง 1 1 ฟีดนี้กลับไปที่เกตด้านล่าง เมื่อคุณตั้งค่า S กลับเป็น 0 ประตูด้านล่างยังคงได้รับ 1 จากประตูอื่น สิ่งนี้จะทำให้ Q # output ที่ 0

ถ้า Q เป็น 1 แล้วและคุณตั้งค่า S เป็น 1 ทั้งอินพุตไปที่เกตล่างคือ 1 และดังนั้นจึงไม่มีการเปลี่ยนแปลง


ฉันไม่เข้าใจว่า Q 'จะเป็นหนึ่งได้อย่างไรถ้าไม่มีอินพุตที่สามารถดำเนินการได้จริง
CodyBugstein

อีกครั้งสถานะที่มั่นคงคือเมื่อหนึ่งใน Q และ Q # เป็นหนึ่ง หากไม่เช่น (เปิดเครื่อง) ประตูจะถือว่าหนึ่งในสองสถานะเสถียรอย่างรวดเร็วขึ้นอยู่กับความเร็วจริงของประตูทั้งสองและอื่น ๆ เมื่อประตูมีเสถียรภาพคุณสามารถใช้อินพุตทั้งสองเพื่อสลับระหว่างสถานะเสถียร
DoxyLover

1

ฉันคิดว่าสิ่งสำคัญที่คุณถามเกี่ยวกับความจริงที่ว่าสลักพลังขึ้นในสถานะที่ไม่รู้จักดังนั้นเราจะได้รับมันเข้าสู่สถานะที่รู้จักกันได้อย่างไร คุณต้องจำไว้ว่าหากอินพุตไปยังเกต NOR เป็น 1 ดังนั้นเอาต์พุตต้องเป็น 0 โดยไม่คำนึงถึงสถานะของอินพุตอื่น ดังนั้นการใช้ชุดการป้อนข้อมูล SET หรือ RESET จะบังคับให้สลักเข้าสู่สถานะที่ตั้งไว้หรือรีเซ็ตโดยไม่คำนึงถึงสถานะก่อนหน้าของสลัก


ใช่คุณเข้าใจคำถามของฉัน! อย่างไรก็ตามฉันยังไม่รู้สึกตอบในสิ่งที่คุณเขียน สมมติว่าสลักไม่เคยถูกเสียบเข้ามาและทันใดนั้นเป็นครั้งแรกที่ x และ y ถูกเสียบเข้าพวกเขาจะมีผลต่อ Q อย่างไรถ้าพวกเขาไม่สามารถผ่านประตูแรกได้?
CodyBugstein

ฉันสมมติว่าคุณหมายความว่าอินพุต R และ S ได้ค่าบางค่า X และ Y ถ้า X หรือ Y เป็นค่าใดค่าหนึ่งเอาต์พุตของเกต NOR นั้นต้องเป็น 0 ... นั่นคือวิธีที่ประตู NOR ทำงาน ดังนั้น 0 ดึงกลับไปที่ประตู NOR อื่นซึ่งสันนิษฐานว่ามี 0 สำหรับอินพุต (ถ้า X คือ 1 ดังนั้น Y คือ 0 หรือในทางกลับกัน) ดังนั้นตอนนี้ประตู NOR ที่สองมีสองอินพุตคือ 0 และเอาต์พุตต้องเป็น 1 สถานการณ์เดียวที่เราไม่สามารถพูดได้ว่าจะเกิดอะไรขึ้นกับ Q และ Q 'คือถ้าทั้ง X และ Y (หมายถึงทั้ง S และ R) ตั้งค่าเป็น 0 ทันทีหลังจากเปิดเครื่อง ดังที่คนอื่น ๆ สังเกตไว้นี่เป็นสถานะที่ไม่มั่นคง
Joe Hass
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.