ฟลิปฟลอบ เป็นอุปกรณ์ที่ทำหน้าที่เก็บข้อมูลเหมือนกับแลตซ์ ต่างกันที่แลตซ์อาจจะมีขาควบคุมหรือไม่มีก็ได้ ถ้ามีขาควบคุม (Enable) ก็จะ
ทำงานที่ระดับสัญญาณ (Level - Triggered) ส่วนฟลิปฟลอปจะทำงานที่ขอบสัญญาณ อาจจะเป็นขอบขึ้น (Positive Edge - Triggered)
ขอบลง(Negative Edge - Triggered) หรือทั้งสองกรณีรวมกันเป็นแบบพัลส์ (Pulse - Triggered) โดยเรียกสัญญาณควบคุมนี้ว่า
สัญญาณนาฬิกาหรือ Clock (CK, CLK, CP)อินพุตอื่นๆ จะมีผลกับฟลิบฟลอบก็ต่อเมื่อมีสัญญาณนาฬิกาเข้ามาเท่านั้น เรียกอินพุตเหล่านี้ว่า
Synchronous Input ลักษณะของฟลิบฟลอบแสดงดังรูปที่ 15.1
|
รูปที่ 15.1 แสดงลักษณะขา Clock ของฟลิบฟลอบ
|
เครื่องหมายสามเหลี่ยมที่ขานาฬิกา หมายถึงฟลิบฟลอบทำงานที่ขอบของสัญญาณนาฬิกาส่วนแบบพัลส์ (Pulse - Triggered) จะทำงานก็
ต่อเมื่อมีทั้งขอบขาขึ้นและขอบขาลงของสัญญาณนาฬิกาเข้ามา 1 พัลส์ นั่นเอง บางครั้งเรียกฟลิบฟลอบชนิดนี้ว่า Master/Slave Flip-Flop
|
15.1 R-S Flop – Flop (Reset – Set Flop - Flop)
R-S Flop – Flop หรือบางครั้งเรียกว่า C-S Flop – Flop (Clear – Set Flop - Flop) ประกอบด้วย Synchronous Input
2 อินพุต คือ Reset (R) หรือ Clear (C) และ Set (S)
Reset (R) หมายถึงทำให้เป็น 0 ถ้าขา R active ทำให้เอาต์พุต Q เป็น 0
Set (S) หมายถึงทำให้เป็น 1 ถ้าขา S active ทำให้เอาต์พุต Q เป็น 1
โครงสร้างภายในของ R-S Flop – Flop แสดงดังรูปที่ 15.2
|
รูปที่ 15.2 แสดงโครงสร้างของ R-S Flop – Flop
|
วงจร Edge Detector เป็นวงจรสร้างสัญญาณพัลส์ แคบๆ เมื่อสัญญาณนาฬิกา มีการเปลี่ยนระดับลอจิก โดยแบ่งเป็น 2 ชนิดคือ สร้างพัลส์ที่
ขอบขึ้นของสัญญาณนาฬิกา (สัญญาณนาฬิกาเปลี่ยนจาก 0 เป็น 1) และสร้างพัลส์ที่ขอบลงของสัญญาณนาฬิกา (สัญญาณนาฬิกาเปลี่ยนจาก 1 เป็น 0)
|
รูปที่ 15.3 แสดงวงจร Edge Detector
|
ความกว้างของพัลส์ของ CK ที่เกิดขึ้นมีค่าเท่ากับช่วงเวลาประวิงของ Inverter
วงจรสร้างพัลส์ที่ขอบขึ้นของสัญญาณนาฬิกาจะใช้กับฟลิปฟลอปแบบ Positive Edge - Triggered
วงจรสร้างพัลส์ที่ขอบลงของสัญญาณนาฬิกาจะใช้กับฟลิปฟลอปแบบ Negative Edge - Triggered
จากวงจรรูปที่ 15.2 ถ้า Set (S) = Reset (R) = เอาต์พุต ยังคงเหมือนเดิม
ถ้า Set (S) = 0, Reset (R) = 1 ทำให้เอาต์พุต เป็น 0 เป็น 1
ถ้า Set (S) = 1, Reset (R) = 0 ทำให้เอาต์พุต เป็น 1 เป็น 0
กรณี Set (S) = Reset (R) = 1 เป็นกรณีที่ไม่มีการใช้งาน
จากคุณสมบัติการทำงานของวงจรรูปที่ 15.2 นำไปเขียนแทนด้วยสัญลักษณ์และตารางความจริงได้ดังรูปที่ 15.4 โดยใช้วงจร Edge Detector
แบบสร้างพัลส์ที่ขอบขึ้นของสัญญาณนาฬิกา ดังนั้น ฟลิบฟลอบจึงทำงานที่ขอบขึ้นของสัญญาณนาฬิกา (Positive Edge - Triggered)
|
รูปที่ 15.4 แสดงสัญลักษณ์และคุณสมบัติของ R-S Flip - Flop
|
15.1.1 Clock pulse
Flip Flop ที่ได้กล่าวมาแล้วทั้งสองแบบ เป็น Flip Flop ที่เปลี่ยนสภาวะโดยระดับสัญญาณ Logic ที่ป้อนโดยตรง ในกรณีที่จะใช้
Flip Flop ต่อร่วมกันหลายๆ ภาค จะใช้วิธีการเช่นนี้จะทำให้ไม่สะดวกเพราะไม่สามารถจะทำให้เกิดการเปลี่ยนสกาวะพร้อมๆ กันได้วิธีการ
ที่จะทำให้Flip Flop แต่ละตัวเปลี่ยนสภาวะพร้อมๆ กันนั้น ต้องมีการให้สัญญาณการเปลี่ยนสภาวะ สัญญาณดังกล่าวเรียกว่า Clock pulse
(CK) ซึ่งมีรูปคลื่นและส่วนประกอบดังรูป
|
รูปที่ 15.5 Clock pulse
|
รูปที่ 15.5 (ต่อ)
|
รูปที่ 15.5 เป็นรูปคลื่นของ Clock pulse (CK) ซึ่งเขียนให้เห็นความชันทางด้านที่คลื่นเปลี่ยนสภาพจาก 0V เป็น + 5V หรือที่ เรียกว่า
ขอบขาขึ้น (Leading edge) กับส่วนที่เปลี่ยนจาก +5V เป็น 0V หรือที่เรียกว่าขอบขาลง (Trailing edge) แต่ในทางเป็นจริงแล้ว ทั้งขอบ
ขาขึ้น และขอบขาลงใช้เวลาสั้นมากเมื่อเทียบกับความกว้างของ pulse ดังนั้นเรามักเห็นเป็นเส้นตั้งฉาก
|
15.1.2 R-S Flip Flop ใช้ Clock pulse
R-S Flip Flop ทั้งสองชนิดสามารถใช้ Clock pulse เป็นตัวควบคุมได้โดยต่อแอนด์เกตไปในวงจรดังแสดงตามรูปที่ 15.6
|
รูปที่ 15.6 R-S Flip Flop with Clock pulse
|
ตารางที่ 15.1 Truth table ของ R-S Flip Flop เมื่อมี Clock pulse
|
จากรูปที่ 15.6 ปกติที่ขา CK เป็น Logic 0 Output ของ AND gate ทั้งสองตัวจะเป็น Logic 0ทั้งคู่ และทำให้ไม่เกิดการเปลี่ยน
สภาวะตามคุณสมบัติเดิมแต่ถ้า CK เปลี่ยนสภาวะจาก Logic 0 เป็น Logic 1 ในช่วงขอบขาขึ้นของ pulse ทำให้ Output ของ AND gate
เป็นไปตามข้อมูลของ R และ S นั่นคือ Output และ ก็จะเป็นไปตามเงื่อนไขที่ได้กล่าวมาแล้ว สำหรับในขณะขอบขาลงของ CK จน
กระทั่ง CKเป็น Logic 0 นั้น Output ของ AND gate ทั้งสองเป็น Logic 0 นั่นคือไม่มีการเปลี่ยนสภาวะ โดยสภาวะเติมก่อนขอบขาลง
เป็นสภาวะใดเมื่อพ้นขอบขาลงของ CK แล้ว ก็จะเป็นไปตามนั้น (เครื่องหมายลูกศรชี้ขึ้นของช่วง CK ตามตารางที่ 15.1 หมายความว่า Active
ที่ขอบขาขึ้นของ CK)
เนื่องจาก Output และ จะเปลี่ยนแปลงสภาวะตามเงื่อนไขของ Input R และ S ก็ต่อ เมื่อ CK อยู่ที่สภาวะเป็น Logic เท่านั้น
หรือที่ เราเรียกว่า Active high ถ้าหาก CK อยู่ในสภาวะเป็น Logic 0 เราไม่สามารถเปลี่ยนแปลงสภาวะของ Output และ ให้เลย
แต่ในบางครั้ง เราจำเป็น ต้องให้ Output เป็น Logic 0 หรือ 1โดยไม่ต้องการรอจังหวะจาก CK ดังนั้นเราต้องเพิ่มขา Clear (CLK) และ
Preset (PR) เข้าไป ปกติขา Clear และ Preset เราให้ Logic 0 ไว้ ถ้าต้องการให้ เป็นLogic 1 ในช่วงที่ CK ยังเป็น Logic 0 อยู่
เราก็เปลี่ยน Logic ที่ขา Preset จาก Logic 0 เป็น Logic 1 Output ก็จะเป็น Logic 1 โดยไม่สนใจว่า สภาวะเดิมเป็น Logic 0
หรือ Logic 1 ในทางกลับ กัน ถ้าต้องการให้ เป็น Logic 0 โดยไม่สนใจว่าสภาวะเดิมเป็นอะไร ก็ให้ขา Clear เป็น Logic 1ในบางกรณี
ถ้าเราต้องการให้ CK หรือ Preset หรือ Clear ทำงานแบบ Active Low เราก็สามารถทำได้โดยการใส่ Inverter เข้าไปที่ขานั้น
<< Go To Top
|
15.2 JK Flip Flop
R-S Flip Flop ที่กล่าวมาแล้ว มีข้อเสียที่ไม่สามารถนำไปใช้งานกรณี S = R = 1 จึงมีการดัดแปลงไปเป็น J-K Flip Flop
ขา J มีคุณสมบัติเหมือนกับขา S และขา K มีคุณสมบัติเหมือนกับ ขา R กรณี J = K = 1 เอาต์พุตของฟลิปฟลอป ( และ )
จะมีลอจิกตรงข้ามกับ ค่าเดิม ส่วนกรณีอื่นๆ มีคุณสมบัติเหมือนกับ R-S Flip Flop โครงสร้างภายในของ J-K Flip Flop แสดงดัง
รูปที่ 15.7
|
รูปที่ 15.7 แสดงโครงสร้างของ J-K Flip Flop
|
จากวงจรกรณี J = K = 1 เมื่อมีสัญญาณนาฬิกาเข้ามา ถ้าเดิม Q เป็น 0 ก็จะเปลี่ยนเป็น 1 ถ้าเดิม Q เป็น 1 ก็จะเปลี่ยนเป็น 0 เรียกการทำงาน
กรณีนี้ว่า Toggle
ถ้าวงจร Edge Detector เป็นแบบสร้างพัลส์ที่ขอบขึ้นของนาฬิกา จะได้ J-K Flip Flop แบบ Positive Edge – Triggered ซึ่งมี
สัญลักษณ์และตารางความจริงแสดงดังรูปที่ 15.8
|
รูปที่ 15.8 แสดงสัญลักษณ์และคุณสมบัติของ J-K Flip Flop
|
จากตารางความจริงนำไปเขียนความสัมพันธ์ระหว่าง กับ เขียน KM เป็นสมการลอจิกและแผนภาพสเตจของ J-K Flip Flop ได้ดังนี้
|
รูปที่ 15.9 แสดงการนำตารางความจริงไปเขียนความสัมพันธ์
|
จากตารางความจริงของ J-K Flip Flop ในรูปที่ 15.8 เป็นตารางแสดงคุณสมบัติที่มองจากอินพุต ไปหาเอาต์พุตเป็นกรณีที่รู้ค่าอินพุตแล้วจึง
หาค่าเอาต์พุต ซึ่งจะใช้ในการวิเคราะห์วงจร แต่ในกรณีการออกแบบวงจรจะต้องพิจารณาในทางตรงกันข้าม กล่าวคือรู้ผลของเอาต์พุตก่อนแล้วจึงไป
หาอินพุตที่ทำให้เกิดเอาต์พุตตามต้องการ เรียกตารางคุณสมบัติที่มองจากเอาต์พุต ไปหาอินพุตนี้ว่า Input Table ของฟลิปฟลอบ โดยแปลงมาจาก
แผนภาพสเตจดังนี้
|
ตารางที่ 15.2 แสดง Input Table ของ J-K Flip Flop
<< Go To Top
|
15.3 D Flip - Flop (Data Flip - Flop)
D Flip Flop เป็นฟลิปฟลอปที่ทำหน้าที่ส่งข้อมูลจากอินพุตไปยังเอาต์พุต โดยการควบคุมของสัญญาณนาฬิกา ขา Synchronous
Input ของ D Flip Flop มีเพียง 1 ขา คือขา Data (D)
จากตารางความจริงของ J-K Flip Flop ในรูปที่ 15.8 ในกรณีที่ขา J และ K ได้รับลอจิกตรงกันข้าม เมื่อมีสัญญาณนาฬิกาเข้ามา
เอาต์พุต Q จะเหมือนกับลอจิกขา J และ K ให้ทำงานที่สถานะลอจิกตรงกันข้าม (เพิ่ม Inverter ที่ขา K) ดังรูปที่ 15.10 (ก) ซึ่งเป็นฟลิปฟลอบ
แบบ Positive Edge - Triggered
|
รูปที่ 15.10 แสดงโครงสร้างและคุณสมบัติของ D Flip Flop
|
จากตารางความจริงนำไปเขียนความสัมพันธ์ระหว่าง กับ เขียน KM เขียนสมการลอจิกและแผนภาพสเตจของ D Flip Flop ได้ดังนี้
|
รูปที่ 15.11 แสดงการนำตารางความจริงไปเขียนความสัมพันธ์
|
จากแผนภาพสเตจนำไปเขียน Input Table ได้ดังตารางที่ 15.3
ตารางที่ 15.3 แสดง Input Table ของ D Flip Flop
<< Go To Top
|
15.4 T Flip Flop (Toggle Flip-Flop)
T Flip Flop เป็นฟลิปฟลอปที่ดัดแปลงมาจาก J-K Flip Flop โดยการออกแบบให้ทำงานเฉพาะช่วง Toggle เท่านั้น (J = K =1)
ลักษณะของ T Flip Flop แสดงดังรูปที่ 15.12 ซึ่งเป็นฟลิบฟลอบแบบ Negative Edge - Triggered
|
รูปที่ 15.12 แสดงโครงสร้างและคุณสมบัติของ T Flip Flop
|
T Flip Flop ในรูปที่ 15.12 เป็นแบบไม่มีขา Clock จึงไม่สามารถนำไปใช้ในวงจรแบบซิงโครนัสได้ถ้าต้องการใช้งานแบบมี Clock
ก็สามารถ ต่อวงจรได้ดังรูปที่ 15.13 ซึ่งเรียกว่า Clocked T Flip Flop
|
รูปที่ 15.13 แสดงโครงสร้างและคุณสมบัติของ Clocked T Flip Flop
|
จากตารางความจริงนำไปเขียนความสัมพันธ์ระหว่าง กับ เขียน KM เขียนสมการลอจิก และ Input Table ได้ดังนี้
|
รูปที่ 15.14 แสดงการนำตารางความจริงไปเขียนความสัมพันธ์
<< Go To Top
|
15.5 Master / Slave Flip - Flop (M/S Flip - Flop)
ฟลิปฟลอบที่เคยกล่าวถึงในตอนแรก จะทำงานที่ตำแหน่งขอบขึ้นหรือขอบลงของสัญญาณนาฬิกา เรียกว่าแบบ Edge – Triggered ยังมี
ฟลิปฟลอบอีกชนิดหนึ่งที่ทำงานเมื่อสัญญาณนาฬิกาเข้ามา 1 พัลส์ เรียกฟลิบฟลอบชนิดนี้ว่าเป็นแบบ Master / Slave Flip – Flop หรือแบบ
Pulse-Triggered
|
รูปที่ 15.15 แสดงลักษณะของ J-K Flip Flop แบบ Master / Slave
|
จากรูปที่ 15.15 เป็น J-K Flip-Flop แบบ Master/Slave โครงสร้างภายในประกอบด้วยฟลิปฟลอป 2 ตัวคือ Master
จะทำงานช่วงที่สัญญาณนาฬิกาเป็น 1 และ Slaveจะทำงานเมื่อสัญญาณ นาฬิกาเปลี่ยนไปเป็น 0 เนื่องจากฟลิปฟลอปชนิดนี้ ไม่ได้ทำงาน
ที่ขอบสัญญาณนาฬิกา ดังนั้นสัญลักษณ์ของฟลิปฟลอบในรูปที่ 15.15 (ข) จึงไม่มีเครื่องหมายสามเหลี่ยม (>) ที่ขา Clock แต่จะ
เขียนรูปพัลส์ ( ) หรืออาจจะไม่เขียนเครื่องหมายใดๆ ที่ขา Clock ก็ได้
เนื่องจากเอาต์พุตเปลี่ยนสถานะ ขณะที่สัญญาณนาฬิกาเปลี่ยนไปเป็น 0 จึงเขียนเครื่องหมาย กำกับไว้ที่เอาต์พุต และ
ข้อเสียของ M/S Flip-Flop ก็คือขา J และ K จะมีผลกับ Master ตลอดเวลาขณะที่สัญญาณนาฬิกาเป็น 1ดังนั้นในช่วงนี้ สัญญาณ
ที่ขา J และ K ต้องคงที่ ถ้าสัญญาณที่ขา J และ K เกิดการเปลี่ยนแปลงขณะที่สัญญาณนาฬิกาเป็น 1 จะทำให้ฟลิปฟลอปทำงานผิดพลาดได้
เพื่อแก้ไขปัญหานี้จึงได้มีการดัดแปลงเป็นฟลิปฟลอปแบบ Master/Slave with Data Lockout ซึ่งฟลิปฟลอปชนิดนี้ จะออกแบบให้ขา J
และ K มีผลกับ Master ในช่วงเวลาสั้นๆ เท่านั้น (ประมาณ 20-30 ns) นอกจาก นั้นเอาต์พุตของ Master จะไม่มีการเปลี่ยนแปลงอีก
ถึงแม้สัญญาณนาฬิกาจะเป็น 1 ก็ตาม สัญลักษณ์ของฟลิปฟลอปชนิดนี้ แสดงดังรูปที่ 15.16
|
รูปที่ 15.16 แสดงสัญลักษณ์ของ M/s with Data Lockout
|
ในรูปที่ 15.17 เป็นการเปรียบเทียบคุณสมบัติการทำงานของ D Flip-Flop แต่ละแบบดังนี้ D Latch ข้อมูลจากขา D จะส่งไปยัง Q
เมื่อขา G ได้รับลอจิก 1 เท่านั้น ถ้าขา G ได้รีบลอจิก 0เอาต์พุต Q จะไม่มีการเปลี่ยนแปลง
Positive Edge - Triggered D Flip-Flop ข้อมลจากขา D ส่งไปยังเอาต์พุต Q ที่ขอบขึ้นของสัญญาณนาฬิกาเท่านั้น ส่วนที่
ตำแหน่งอื่นเอาต์พุต Q ไม่มีการเปลี่ยนแปลง
Negative Edge -Triggered D Flip-Flop ข้อมูลจากขา D จะส่งไปยังเอาต์พุต Q ที่ขอบลงของสัญญาณนาฬิกาเท่านั้น
ส่วนที่ตำแหน่งอื่นเอาต์พุต Q ไม่มีการเปลี่ยนแปลง
M/S D Flip-Flop ขณะ CK เป็น 1 ข้อมูลจากขา D จะถูกนำไปเก็บไว้ใน Master ถ้าข้อมูล
|
รูปที่ 15.17 แสดงคุณสมบัติของ D Flip-Flop แต่ละแบบ
<< Go To Top
|
15.6 การแทนฟลิปฟลอปด้วย VHDL
เราสามารถที่จะแทนวงจรของฟลิปฟลอบด้วยภาษา VHDL ได้โดยสามารถออกแบบได้จากสมการหรือโครงสร้างการทำงานของตัว
ฟลิปฟลอปก็ได้ ตัวอย่างการแทนตัวฟลิบฟลอปด้วยภาษา VHDL แสดงดังรูปที่ 15.18 และ 15.19
|
---------------------------------------------
-- D Flip-Flop
--
-- Flip-flop is the basic component in
-- sequential logic design
-- we assign input signal to the output
-- at the clock rising edge
---------------------------------------------
library ieee ;
Use ieee.std_logic_1164.all;
Use work.all;
---------------------------------------------
Entity dff is
Port( data_in: in std_logic;
clock: in std_logic;
data_out: out std_logic
);
End dff;
----------------------------------------------
Architecture behv of dff is
Begin
Process(data_in, clock)
Begin
-- clock rising edge
If (clock='1' and clock'event) then
data_out <= data_in;
End if;
End Process;
End behv;
----------------------------------------------
|
รูปที่ 15.18 การแทน D Flip-Flop ด้วย ภาษา VHDL
----------------------------------------------
-- JK Flip-Flop with reset
-- the description of JK Flip-Flop is based
-- on functional truth table
-- concurrent statement and signal assignment
-- are using in this example
----------------------------------------------
library ieee;
Use ieee.std_logic_1164.all;
----------------------------------------------
Entity JK_FF is
Port ( clock: in std_logic;
J, K: in std_logic;
reset: in std_logic;
Q, Qbar: out std_logic );
End JK_FF;
-----------------------------------------------
Architecture behv of JK_FF is
-- define the useful signals here
signal state: std_logic;
signal input: std_logic_vector(1 downto 0);
Begin
-- combine inputs into vector
input <= J & K;
p: Process(clock, reset) is
Begin
If (reset='1') then
state <= '0';
Elsif (rising_edge(clock)) then
-- compare to the truth table
Case (input) is
when "11" =>
state <= not state;
when "10" =>
state <= '1';
when "01" =>
state <= '0';
when others =>null;
End case;
End if;
End Process;
-- concurrent statements
Q <= state;
Qbar <= not state;
End behv;
-------------------------------------------------
|
|
ไม่มีความคิดเห็น:
แสดงความคิดเห็น