เจเคฟลิปฟล็อป

เจเคฟลิปฟล็อป () เป็นฟลิปฟล็อปที่ทำงานตามตารางสถานะถัดไปด้านล่าง จุดประสงค์สำคัญคือ การใช้แทนอาร์เอสฟลิปฟล็อปซึ่งใช้ค่า R=1 S=1 ไมได้เพราะเกิดภาวะแข่งขัน เจเคฟลิปฟล็อป จึงใช้ช่องว่างนี้ขยายให้เกิดการเปลี่ยนสถานะแบบใหม่นั่นคือ การแกว่งค่า (toggle) แทน เจเคฟลิปฟล็อป ถูกนำไปต่อสร้าง ฟลิปฟล็อปอื่นๆมาก และสร้างวงจร (implement) ได้ง่าย เพราะมีDon't Care ในตารางสภาวะกระตุ้นมาก

ตารางสถานะถัดไปของเจเคฟลิปฟล็อป

ตารางสภาวะกระตุ้น

J-K ฟลิปฟล็อป จะทำโดยนำ R-S ฟลิปฟล็อปและเพิ่มวงจรลอจิกเข้าไปบางส่วนนอกจากนี้ J-K ฟลิปฟล็อปยังเป็นฟลิปฟล็อปที่สามารถนำไปสร้างเป็นฟลิปฟล็อปประเภทอื่น ๆ ได้อีกด้วย

ในรูปที่1 จะนำเอาเกดแบบ AND สองตัวมาต่อกับ R-S ฟลิปฟล็อปแบบใช้สัญญาณกระตุ้นโดยนำเอาต์พุต Q และ Q- มาป้อนกลับให้เกตแต่ละตัว การป้อนกลับนี้จะทำให้สภาวะที่ Q และ Q- มีค่าเท่ากันนั้นหายไป วงจรนี้จะเรียกว่า J-K ฟลิปฟล็อป โดยมีสัญญาณเข้าสองขาคือ J และ K

ฟลิปฟล็อปตามรูป เมื่อสัญญาณกระตุ้น CLK เป็นลอจิก "1" จะเกิดการทำงาน ถ้าเป็นลอจิก "0" จะอยู่ในสภาวะแลตช์ข้อมูล จากรูปจะพบอินพุต J และ K จะมีค่าเป็นไปได้ทั้งหมด 4 รูปแบบ โดยพิจารณาได้ดังต่อไปนี้ (ดูที่รูปประกอบ)
กรณีนี้จะทำให้ขา S และ R ของ R-S ฟลิปฟล็อปเป็นลอจิก "0" ทั้งคู่ ทำให้ฟลิปฟล็อปอยู่ในสภาวะคงค่าข้อมูล (latch) โดย Q และ Q- จะเก็บค่าเดิมเอาไว้
กรณีนี้ขา S จะเป็น "0" ถ้าภาวะเดิมของฟลิปฟล็อปมี Q = "1" และ Q- = "0" จะทำให้อินพุต R เป็น "1" ดังนั้น S = "0" และ R = "1" หมายความว่าฟลิปฟล็อปอยู่ในสถานะล้างค่า (reset) และถ้าภาวะเดิมของฟลิปฟล็อปมี Q = "0" และ Q- = "1" จะทำให้ขา R เป็น "0" ดังนั้น เมื่อ S = "0" (J = "0") ฟลิปฟล็อปจะคงค่าข้อมูล (latch) ทำให้ Q = "0" และ Q- = "1" ตามเดิม
สรุปได้ว่า ถ้า J = "0" และ K = "1" จะทำให้ J-K ฟลิปฟล็อป อยู่ในสภาวะถูกล้างค่า (reset)
กรณีนี้อาศัยหลักการวิเคราะห์ตามแบบที่สอง จะพบว่าจะทำให้ฟลิปฟล็อปอยู่ในสภาวะตั้งค่า (set)
กรณีนี้ถ้าภาวะเดิม Q = "1" และ Q- = "0" ทำให้อินพุต S เป็น "0" และ R เป็น "1" จะทำให้ฟลิปฟล็อปถูกล้างค่า (reset) โดย Q จะเปลี่ยนเป็นลอจิก "0" 
ถ้าภาวะเดิม Q = "0" และ Q- = "1" ทำให้อินพุต S เป็น "1" และ R เป็น "0" จะทำให้ฟลิปฟล็อปถูกตั้งค่าใหม่ (set) โดย Q จะเป็นลอจิก "1" 
ดังนั้นสรุปได้ว่าถ้า J = "1" และ K = "1" เมื่อมีสัญญาณพัลส์เข้ามา เอาต์พุตของฟลิปฟล็อปจะเปลี่ยนเป็นค่าตรงกันข้ามจากสภาวะเดิม เราเรียกการเปลี่ยนแปลงนี้ว่า Toggle Action หรือการกลับค่าของสัญญาณ การทำงานของ J-K ฟลิปฟล็อป เมื่อมีสัญญาณกระตุ้นเข้ามาสามารถสรุปได้ดังตารางต่อไปนี้

เนื่องจากวงจรของ J-K ฟลิปฟล็อป จะต้องนำสัญญาณทางเอาต์พุตป้อนกลับมาทางอินพุต การใช้งานบางประเภทจะทำให้ฟลิปฟล็อปทำงานผิดพลาดได้ ถ้าหากมีการใช้ J-K ฟลิปฟล็อป แบบมีสัญญาณพัลส์ควบคุม (Cp) จะนำ J-K ฟลิปฟล็อป สองตัวมาต่อกัน เรียกว่า Master-Slave J-K ฟลิปฟล็อป โดยตัวแรก เรียกว่า Master ตัวที่สอง เรียกว่า Slave ดังรูป โดยให้ขา Q ของ Master ต่อกับขา J ของ Slave และ Q- ของ Master ต่อกับขา K ของ Slave

จากรูป จะพบว่าถ้าให้สัญญาณควบคุมเป็น "1" จะทำให้เกตแบบ AND ตัวที่ 1 และ 2
ส่งข้อมูลจาก J,K เข้าไปใน Master และขณะนั้นตัว Slave จะอยู่ในสภาวะคงค่าข้อมูล (latch) แต่ถ้าสัญญาณควบคุมเป็น "0" จะทำให้ตัว Master อยู่ในสภาวะคงค่าข้อมูล ส่วนตัว Slave จะรับข้อมูลจาก Q และ Q- ของ Master เข้ามา และทำงานตามที่ตัว Master ได้คงค่าข้อมูลเอาไว้ สำหรับสัญลักษณ์ของ Master –Slave J-K ฟลิปฟล็อป จะเหมือนกับ J-K ฟลิปฟล็อป ธรรมดา

ฟลิปฟล็อปประเภทนี้ถ้ามีข้อมูลเข้ามาทางขา J และ K เอาต์พุตจะเปลี่ยนแปลงเมื่อมีสัญญาณเข้ามาทาง Cp (เปลี่ยนจากลอจิก "1" เป็นลอจิก "0" หรือเปลี่ยนจากลอจิก "0" เป็นลอจิก "1") สัญลักษณ์ของ J-K ฟลิปฟล็อปแบบกระตุ้นด้วยขอบขาขึ้นและขาลงแสดงได้ดังรูป

ในรูป (ก) ค่าเอาต์พุต Q ของฟลิปฟล็อปจะเปลี่ยนแปลงเมื่อมีขอบขาขึ้นเข้ามาหรืออินพุต Cp เปลี่ยนจากลอจิก "0" เป็นลอจิก "1" ส่วนรูป (ข) จะเป็นการกระตุ้นด้วยขอบขาลง เอาต์พุต Q จะเปลี่ยนแปลงเมื่ออินพุต Cp เปลี่ยนจากลอจิก "1" เป็นลอจิก "0" ในขาของไอซีประเภทนี้จะเขียนลาเบลเป็น Cp การทำงานของ J-K ฟลิปฟล็อปที่กระตุ้นด้วยขอบขาลงแสดงได้ดังรูป (ข)

ไอซีเบอร์ 7476 และ 74LS76 เป็นไอซี J-K ฟลิปฟล็อปที่นิยมใช้กันมาก โดยภายในไอซีจะประกอบด้วย J-K ฟลิปฟล็อปสองตัว และมีขาอินพุตอะซิงโครนัสสองขา (RD และ SD) ขาอินพุตซิงโครนัสสามขา (Cp , J , K) ไอซีเบอร์ 7476 จะกระตุ้นด้วยขอบขาขึ้น และภายในฟลิปฟล็อปแต่ละตัวจะมีโครงสร้างแบบ Master – Slave ส่วนเบอร์ 74LS76 จะกระตุ้นด้วยขอบขาลง ดังรูป เป็นสัญลักษณ์และลักษณะขาของ 74LS76 ในรูป (ก) และค่าในตารางจะเห็นว่า ขาอินพุตอะซิงโครนัส RD และ SD จะแอกทีฟลอจิก "0" โดยถ้าขา SD ถูกเซตเป็นลอจิก "0" จะทำให้เอาต์พุต Q เป็นลอจิก "1" และถ้าขา RD เป็นลอจิก "0" จะทำให้ฟลิปฟล็อปถูกรีเซตเอาต์พุต Q จะเป็นลอจิก "0"

ในการใช้งานแบบซิงโครนัสจะใช้ขาอินพุต J , K และ Cp และให้ลอจิก "1" กับขาอะซิงโครนัส RD และ SD โดยอินพุต J-K จะถูกอ่านเข้าไปในฟลิปฟล็อปหลังจากที่ขอบขาลงเข้ามายัง Cp เป็นเวลา 20 ns ดังนั้นในการใช้งานเราต้องอินพุตข้อมูลกับ J-K ก่อนเป็นเวลา 20 ns เนื่องจากเวลาหน่วงภายในฟลิปฟล็อปเอง