570 likes | 599 Views
SR Latch. SR Latch. Latch. Flip-flop. เริ่มทำงานที่ positive edge. ต้องรอถึง negative edge ถึงจะได้ Q. Y = D. Q = Y. D ต้อง stable ในช่วงนี้. เริ่มทำงานที่ positive edge Q = D ทันที. D ต้อง stable ในช่วงนี้ ( แคบกว่า master-slave flip-flop มาก ดีกว่า แต่เปลืองเกตมากกว่า ).
E N D
Latch Flip-flop
เริ่มทำงานที่ positive edge ต้องรอถึง negative edge ถึงจะได้Q Y = D Q = Y D ต้อง stable ในช่วงนี้
เริ่มทำงานที่ positiveedgeQ = D ทันที D ต้อง stable ในช่วงนี้ (แคบกว่า master-slave flip-flop มาก ดีกว่า แต่เปลืองเกตมากกว่า)
D ถ้า Clk = 0 แล้ว S = R = 1 รักษาค่า Q, Q’ ไว้ค่า D ไม่มีผลอะไร 1 0 1 D’
Output ไม่เปลี่ยน 0 1 1 0 0 1 1 1 1 0 0 1 D= 0 D= 1 1 0 ถ้า D ไม่ stable เปลี่ยนจาก 1 เป็น 0output ตรงนี้จะเปลี่ยนเป็น 1แต่ไม่เปลี่ยน output ของ NAND ข้างบนดังนั้น Q จะไม่เปลี่ยน ถ้า D ไม่ stable เปลี่ยนจาก 0 เป็น 1output ตรงนี้จะไม่เปลี่ยนดังนั้น Q จะไม่เปลี่ยน
ตัวอย่างว่าทำไมใช้ Latch ไม่ได้ ต้องใช้ Flip-flop Tdelay (CLK) ในเอกสารผมเรียกขานี้ว่า write enable วงจรนี้จะทำงานถูกต้อง คือนับ +1 ทุกๆ clock cycle ถ้า Tclock< Tdelay(เพื่อปิด D latch ให้ทัน ก่อนที่ Q จะวนกลับมา) ต้องใช้ clock ความถี่สูงๆ เพื่อให้ Tclockน้อยๆ แต่ถ้าใช้ Flip-flip จะใช้ความถี่ต่ำเท่าใดก็ได้ ไม่จำเป็นต้องใช้ความถี่สูงมาก จะใช้ Master-slave D flip-flop หรือD-typepositive-edge-triggered flip-flop ก็ได้ Tclock
Odd function รับ input ทีละ 2 บิต แบบ Moore มี 1 เป็นจำนวนคู่ มี 1เป็นจำนวนคี่
input ไม่ stable แล้วinput สุดท้ายคือ 0 input เปลี่ยนที่ negative edge ทำงานครั้งแรก หา 0 ตัวแรกที่ตามหลัง 1+ Asynchronous reset(ไม่รอ clock) Input ไม่ stable, input ที่ stable คือก่อน active edge เล็กน้อย รีเซ็ต 1 0 1 1 0 1 1 Figure 5.16
ไม่มี glitch Figure 5.19
ในเอกสารคำสอนinput เปลี่ยนที่positive edge ดังนั้น input จะมาหลัง positive edge เล็กน้อยเนื่องจาก delayinput ที่วงจรรับไปเปลี่ยน state คือ input ที่อยู่หน้า positive edge ต้อง hold ค่า input ไว้ตลอดเวลาที่จะใช้ output
2 output จะ stableคือเปลี่ยนที่ positive edge เท่านั้นไม่เปลี่ยนทันทีตาม input
1 1
ปั๊มน้ำ: ลองเขียน FSM แบบ Moore และ Merely เพื่อควบคุมการทำงานของปั๊มน้ำ ให้ปั๊มทำงานต่อเนื่อง ไม่ติดๆ ดับๆ มีน้ำ sensor = 1ไม่มีน้ำ sensor = 0 1 ปั๊มทำงาน0 ปั๊มหยุดทำงาน ดูเฉลยในเอกสารคำสอน
เช็คว่ามี subsequence 111 ใน input หรือไม่? IN 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 1 1 0 1 0 1OUT 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 10 0 0 0
ถ้าไม่ใช้ D flip-flip ? JK และ T ทำได้แค่ set, reset, ฟังก์ชันที่ relative กับ previous stateไม่เหมือน D ที่เราสร้างฟังก์ชัน next state ได้ตามใจ