การนำฟลิปฟล็อปมาสร้างตรรกะ
10. การนำฟลิปฟล็อปมาสร้างตรรกะ
แนะนำบทเรียน
วงจรฟลิปฟล็อปมีหลายแบบ การเข้าใจวงจรจะสามารถนำไปประยุกต์ใช้สำหรับการเรียนที่สูงขึ้นได้
ฟลิปฟล็อป (Flip-flop) หรือ แลตช์ (Latch) เป็นวงจรอิเล็กทรอนิกส์ที่มี Output คงที่อยู่ 2 สถานะ ซึ่งมีค่าทางลอจิกตรงข้ามกัน (Opposite) แล้วฟลิปฟล็อปยังเป็นอุปกรณ์ทางลอจิก (Logic) ซึ่งมีหน่วยความจำขนาดหนึ่งบิต บางครั้งอาจเรียกว่า อุปกรณ์ที่มีเสถียรภาพแบบสองสถานะ คือ ฟลิปฟล็อปหนึ่งตัวสามารถใช้เก็บค่า 0 หรือ 1 ได้ และฟลิปฟล็อปจะทำงานเมื่อสัญญาณนาฬิกามีการเปลี่ยนแปลงค่า สำหรับช่วงเวลาอื่น ๆ ฟลิปฟล็อปจะคงค่าหรือจำค่าเดิมไว้ได้
ดังนั้น ฟลิปฟล็อป จึงเป็นส่วนประกอบพื้นฐานในการสร้างตัวนับ เรจิสเตอร์ และหน่วยความจำ เพื่อเก็บข้อมูลในรูปของเลขฐานสอง ซึ่งในปัจจุบันเราใช้ ฟลิปฟล็อป กันอย่างกว้างขวาง ในอุปกรณ์ดิจิตอล เหมือนเป็นชิ้นส่วนความจำ
สัญญาณนาฬิกา (Clock pulse) เป็นวิธีการที่ทำให้ฟลิปฟล็อปแต่ละตัวสามารถเปลี่ยนสภาวะไปพร้อม ๆ กันได้ โดยต้องมีการให้สัญญาณการเปลี่ยนสภาวะ สัญญาณนี้เรียกว่า Clock pulse (CK) ส่วนนี้เองที่ทำให้ไม่ต้องใช้ฟลิปฟล็อปต่อร่วมกันหลาย ๆ อัน
ฟลิปฟล็อป ประกอบด้วย 4 ประเภท คือ เอสอาร์ฟลิปฟล็อป (RS Flip Flop) ดีฟลิปฟล็อป (D Flip Flop) ทีฟลิปฟล็อป (T Flip Flop) และ เจเคฟลิปฟล็อป (JK Flip Flop)
http://www.thaiall.com/printer

แลตซ์ (Latch) เป็นกลุ่มวงจรที่มีขา enable จะกระตุ้นด้วย ระดับของสัญญาณนาฬิกา แทนที่จะเป็น ขอบของสัญญาณนาฬิกา เหมือน ฟลิปฟล็อป จะใช้ขา enable แบ่งเป็นสองประเภท คือ 1) จะทำงานเมื่อสัญญาณนาฬิกาเป็นหนึ่ง (high enable) กับ 2) ทำงานเมื่อสัญญาณนาฬิกาเป็นศูนย์ (low enable)
+ wiki : ฟลิปฟล็อป
+ wiki : แลตช์_(อิเล็กทรอนิกส์)
+ Animation Bistable
เอกสารประกอบ
Slides : flip_flop.pptx
การนำฟลิปฟล็อปมาสร้างตรรกะ (logic implementation with flip flop)
Flip Flop เป็น Multivibrator ชนิด Bistable คือ มี Output คงที่ 2 สภาวะ
คำว่าคงที่ คือ คงอยู่ในสภาวะใดสภาวะหนึ่งโดยไม่จำกัดเวลา จนกว่าจะมี input เข้ามากระตุ้น
Flip Flop คือ หน่วยความจำประเภทหนึ่ง ที่สามารถเก็บรักษาข้อมูล หรือสภาวะ (state) ทางตรรกไว้ได้ และจะรักษาจนกว่า input เข้าใหม่ และเปลี่ยนสัญญาณ clock จึงจะทำให้ output มีการเปลี่ยนแปลง
- RS Flip Flop
- D Flip Flop
- T Flip Flop
- JK Flip Flop
RS Flip Flop


+ brighthubengineering.com

+ electronicshub.org
+ อ้างอิง equation จาก usyd.edu.au
อาร์เอสฟลิปฟล็อป (R-S flip-flop) เป็นฟลิปฟล็อปสมมติ เพราะอินพุตแบบอาร์เอสมักเป็น แลตซ์ (Latch) ไม่ใช่ฟลิปฟล็อป ซึ่งจะมีอินพุตสามตัว คือ S (set), R (reset) และ C (clock)
- S ใช้ในการ set ค่าของฟลิปฟล็อป คือ ทำให้ฟลิปฟล็อปมีค่าเป็น 1 ดังนั้นถ้า S=1 และ R=0 แล้ว Q จะเท่ากับ 1
- R ใช้ในการ reset ค่าของฟลิปฟล็อป คือ ทำให้ฟลิปฟล็อปมีค่าเป็น 0 ดังนั้นถ้า R=1 และ S=0 แล้ว Q จะเท่ากับ 0
- ถ้า S และ R เป็น 0 ทั้งคู่ ฟลิปฟล็อปจะคงค่าเดิมไว้
- ถ้า S และ R เป็น 1 ทั้งคู่ ถือเป็นกรณีที่ผิดปรกติ เพราะว่าเอาต์พุตของฟลิปฟล็อปไม่ได้ถูกกำหนดไว้ในกรณีนี้ (ภาวะแข่งขัน)
Q(next) = S + R'Q
D Flip Flop


+ wearcam.org
ดีฟลิปฟล็อป (D flip-flop) จะมีการทำงานเมื่อถูกกระตุ้นด้วยสัญญาณนาฬิกาหรือ clock (CLK) ซึ่งสัญญาณนาฬิกาจะเปลี่ยนแปลงจาก 0>1>0>1>... เช่นนี้เรื่อยไป การกระตุ้นด้วยสัญญาณนาฬิกามีสองแบบ
- ขอบขาขึ้น (positive หรือ rising edge) คือ จะมีการเปลี่ยนแปลงจาก 0 เป็น 1
- ขอบขาลง (negative หรือ falling edge) คือ จะมีการเปลี่ยนแปลงจาก 1 เป็น 0
Q(next) = D
T Flip Flop


+ wearcam.org
ทีฟลิปฟล็อปหรือท๊อกเกิลฟลิปฟล็อป (T flip-flop หรือ Toggle flip-flop) จะมีอินพุตสองตัว คือ T (toggle) และ C (clock) อินพุต T ใช้เพื่อ toggle หรือกลับค่า output ของฟลิปฟล็อป
- T มีค่า 1 ค่าของ Q จะถูก toggle นั่นคือกลับค่าจาก 0 เป็น 1 หรือ 1 เป็น 0
- T มีค่า 0 ค่าของ Q จะไม่เปลี่ยนแปลง
Q(next) = TQ' + T'Q
JK Flip Flop


+ wearcam.org
เจเคฟลิปฟล็อป (JK flip-flop) จะมีอินพุตสามตัว คือ J, K และ C (clock)
- J ใช้ในการ set ค่าของฟลิปฟล็อป คือ ทำให้ฟลิปฟล็อปมีค่าเป็น 1
ดังนั้นถ้า J=1 และ K=0 แล้ว Q จะเท่ากับ 1
- K ใช้ในการ reset ค่าของฟลิปฟล็อป คือ ทำให้ฟลิปฟล็อปมีค่าเป็น 0
ดังนั้นถ้า K=1 และ J=0 แล้ว Q จะเท่ากับ 0
- ถ้า J และ K เป็น 0 ทั้งคู่ ฟลิปฟล็อปจะคงค่าเดิมไว้ (ถ้าเป็น RS จะไม่เปลี่ยนแปลง)
- ถ้า J และ K เป็น 1 ทั้งคู่ ฟลิปฟล็อปจะกลับค่าเดิม (ถ้าเป็น RS จะไม่ใช้งาน เพราะถือว่าไม่ปกติ)
Q(next) = JQ' + K'Q
เอกสารอ้างอิง [1] น.อ.ธวัชชัย เลื่อนฉวี และพ.ต.อนุรักษ์ เถื่อนศิริ, "ดิจิทอลเทคนิค เล่ม 1", มิตรนราการพิมพ์, 2543. ?
[2] น.อ.ธวัชชัย เลื่อนฉวี, "ดิจิทอลเทคนิค เล่ม 2", มิตรนราการพิมพ์, 2543. ?
[3] ศักดิ์ วาสิกะสิน และชนก หงส์น้อย, "ดิจิตอลคอมพิวเตอร์อิเล็กทรอนิกส์", บริษัท ซีเอ็ดยูเคชั่น จำกัด (มหาชน), 2540.
[4] ธนันต์ ศรีสกุล, "การวิเคราะห์วงจรและอุปกรณ์อิเล็กทรอนิกส์ด้วยโปรแกรม PSpice", กรุงเทพฯ: วิตตี้ กรุ๊ป, 2550.
[5] Steven D. Johnson, "Digital Hardware Design : Chapter 1", indiana.edu, 2004.
http://goo.gl/72BPC