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

ตารางสถานะถัดไปของเจเคฟลิปฟล็อป
     ปัจจุบัน สภาวะ 0  0  ก่อนหน้านี้ คงที่ (hold) 0  1  ล้างค่า (reset) 1  0  ตั้งค่า (set) 1  1  ก่อนหน้านี้  เปลี่ยนค่า (toggle)
ตารางสภาวะกระตุ้น
  0  0 0  0  1 1 1  0  1 1  1    0

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

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

frame|none|รูปที่ 1 วงจรและสัญลักษณ์ของ JK-FlipFlop

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

frame|none|รูปที่ 2 ตารางแสดงสถานะของสัญญาณต่างของ JK-Flipflop

 มาสเตอร์-สเลฟ เจเคฟลิปฟล็อบ 
เนื่องจากวงจรของ 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 เนื่องจากเวลาหน่วงภายในฟลิปฟล็อปเอง