ฟลิปฟลอป · 2016-11-15 · d flip flop...
TRANSCRIPT
308 ฟลปฟลอป
บทท 15 ฟลปฟลอป
ฟลปฟลอบ เปนอปกรณทท ำหนำทเกบขอมลเหมอนกบแลตซ ตำงกนทแลตซอำจจะ
มขำควบคมหรอไมมกได ถำมขำควบคม (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
ฟลปฟลอป 309
รปท 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
310 ฟลปฟลอป
จำกวงจรรปท 15.2 ถำ Set (S) = Reset (R) = เอำตพต QQ, ยงคงเหมอนเดม ถำ Set (S) = 0, Reset (R) = 1 ท ำใหเอำตพต Q เปน 0 Q เปน 1 ถำ Set (S) = 1, Reset (R) = 0 ท ำใหเอำตพต Q เปน 1 Q เปน 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
ฟลปฟลอป 311
รปท 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
312 ฟลปฟลอป
ตำรำงท 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 และ Q กจะเปนไปตำมเงอนไขทไดกลำวมำแลว ส ำหรบในขณะขอบขำลงของ CK จนกระทง CK เปน Logic 0 นน Output ของ AND gate ทงสองเปน Logic 0 นนคอ ไมมกำรเปลยนสภำวะ โดยสภำวะเตมกอนขอบขำลงเปนสภำวะใดเมอพนขอบขำลงของ CK แลว กจะเปนไปตำมนน (เครองหมำยลกศรชขนของชวง CK ตำมตำรำงท 15.1 หมำยควำมวำ Active ทขอบขำขนของ CK) เนองจำก Output และ Q จะเปลยนแปลงสภำวะตำมเงอนไขของ Input R และ S กตอ เมอ CK อยทสภำวะเปน Logic เทำนน หรอท เรำเรยกวำ Active high ถำหำก CK อยในสภำวะเปน Logic 0 เรำไมสำมำรถเปลยนแปลงสภำวะของ Output และ Q ใหเลย แตในบำงครง เรำจ ำเปน ตองให 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
Q
Q
Q
Q
Q
Q Q
Q
ฟลปฟลอป 313
ในบำงกรณ ถำเรำตองกำรให CK หรอ Preset หรอ Clear ท ำงำนแบบ Active Low เรำกสำมำรถท ำไดโดยกำรใส Inverter เขำไปทขำนน 15.2 JK Flip Flop R-S Flip Flop ทกลำวมำแลว มขอเสยทไมสำมำรถน ำไปใชงำนกรณ S = R = 1 จงมกำรดดแปลงไปเปน J-K Flip Flop ขำ J มคณสมบตเหมอนกบขำ S และขำ K มคณสมบตเหมอนกบ ขำ R กรณ J = K = 1 เอำตพตของฟลปฟลอป ( และQ ) จะมลอจกตรงขำมกบกคำเดม สวนกรณอนๆ มคณสมบตเหมอนกบ 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
Q
314 ฟลปฟลอป
จำกตำรำงควำมจรงน ำไปเขยนควำมสมพนธระหวำง Qn กบ Qn+1 เขยน KM เปน สมกำรลอจกและแผนภำพสเตจของ J-K Flip Flop ไดดงน
รปท 15.9 แสดงกำรน ำตำรำงควำมจรงไปเขยนควำมสมพนธ จำกตำรำงควำมจรงของ J-K Flip Flop ในรปท 15.8 เปนตำรำงแสดงคณสมบตทมองจำกอนพต ไปหำเอำตพตเปนกรณทรคำอนพตแลวจงหำคำเอำตพต ซงจะใชในกำรวเครำะหวงจร แตในกรณกำรออกแบบวงจรจะตองพจำรณำในทำงตรงกนขำม กลำวคอรผลของ เอำตพตกอนแลวจงไปหำอนพตทท ำใหเกดเอำตพตตำมตองกำร เรยกตำรำงคณสมบตทมองจำกเอำตพตไปหำอนพตนวำ Input Table ของฟลปฟลอบโดยแปลงมำจำกแผนภำพสเตจดงน
ตำรำงท 15.2 แสดง Input Table ของ J-K Flip Flop
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 ไดรบลอจก
ฟลปฟลอป 315
ตรงกนขำม เมอมสญญำณนำฬกำเขำมำ เอำตพต Q จะเหมอนกบลอจกขำ J และ K ใหท ำงำนทสถำนะลอจกตรงกนขำม (เพม Inverter ทขำ K) ดงรปท 15.10 (ก) ซงเปนฟลปฟลอบแบบ Positive Edge - Triggered
รปท 15.10 แสดงโครงสรำงและคณสมบตของ D Flip Flop จำกตำรำงควำมจรงน ำไปเขยนควำมสมพนธระหวำง Qn กบ Qn+1 เขยน KM เขยน สมกำรลอจกและแผนภำพสเตจของ D Flip Flop ไดดงน
รปท 15.11 แสดงกำรน ำตำรำงควำมจรงไปเขยนควำมสมพนธ จำกแผนภำพสเตจน ำไปเขยน Input Table ไดดงตำรำงท 15.3
ตำรำงท 15.3 แสดง Input Table ของ D Flip Flop
316 ฟลปฟลอป
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 จำกตำรำงควำมจรงน ำไปเขยนควำมสมพนธระหวำง Qn กบ Qn+1 เขยน KM เขยน สมกำรลอจก และ Input Table ไดดงน
ฟลปฟลอป 317
รปท 15.14 แสดงกำรน ำตำรำงควำมจรงไปเขยนควำมสมพนธ 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
318 ฟลปฟลอป
จำกรปท 15.15 เปน J-K Flip-Flop แบบ Master/Slave โครงสรำงภำยในประกอบดวยฟลปฟลอป 2 ตวคอ Master จะท ำงำนชวงทสญญำณนำฬกำเปน 1 และ Slaveจะท ำงำนเมอสญญำณ นำฬกำเปลยนไปเปน 0 เนองจำกฟลปฟลอปชนดน ไมไดท ำงำนทขอบสญญำณนำฬกำ ดงนน สญลกษณของฟลปฟลอบในรปท 15.15 (ข) จงไมมเครองหมำยสำมเหลยม (>) ทขำ Clock แตจะเขยนรปพลส หรออำจจะไมเขยนเครองหมำยใดๆ ทขำ Clock กได เนองจำกเอำตพตเปลยนสถำนะ ขณะทสญญำณนำฬกำเปลยนไปเปน 0 จงเขยน เครองหมำยก ำกบไวทเอำตพต Qและ Q ขอเสยของ 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 ไมมกำรเปลยนแปลง
ฟลปฟลอป 319
M/S D Flip-Flop ขณะ CK เปน 1 ขอมลจำกขำ D จะถกน ำไปเกบไวใน Master ถำ ขอมลทขำ D เกดกำรเปลยนแปลงขณะท CK เปน 1 Master จะเกบขอมลหลงสดเอำไว เมอ CK เปลยน เปน 0 ขอมลทเกบไวจะไปปรำกฏทเอำตพต Q M/S with Data Lockout D Flip-Flop ขอมลจำกขำ D จะถกน ำไปเกบไวใน Master เฉพำะขณะท CK เรมเปน 1 ในชวงเวลำสนๆ เทำนน ขอมลนจะสงไปยงเอำตพต Q เมอ CK เปลยนไปเปน 0
รปท 15.17 แสดงคณสมบตของ D Flip-Flop แตละแบบ 15.6 การแทนฟลปฟลอปดวย VHDL เรำสำมำรถทจะแทนวงจรของฟลปฟลอบดวยภำษำ VHDL ไดโดยสำมำรถออกแบบไดจำกสมกำรหรอโครงสรำงกำรท ำงำนของตวฟลปฟลอปกได ตวอยำงกำรแทนตว ฟลบฟลอปดวยภำษำ VHDL แสดงดงรปท 15.18 และ 15.19
320 ฟลปฟลอป
--------------------------------------------- -- 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
ฟลปฟลอป 321
-- 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;
รปท 15.19 กำรแทน JK Flip-Flop ดวย ภำษำ VHDL
322 ฟลปฟลอป
แบบฝกหดท 15 1. จงเขยนตำรำงควำมจรงของวงจรตอไปน แลวพจำรณำตำรำงควำมจรงของแตละวงจรวำม คณสมบตเหมอนฟลปฟลอปชนดใด
(ก)
(ข)
(ค)
(ง)
ฟลปฟลอป 323
2. จำกรปสญำณทก ำหนด น ำไปจำยใหกบอนพตของ J-K Flip-Flop จงเขยนสญญำณเอำตพต ของ Q เมอใชฟลปฟลอปตอไปน (ก) J-K Flip-Flop แบบ Positive Edge-Triggered (ข) J-K Flip-Flop แบบ Negative Edge-Triggered
3. จำกรปสญญำณทก ำหนด น ำไปจำยใหกบอนพตของ Clocked T Flip-Flop แบบ Negative Edge - Triggered จงเขยนสญญำณเอำตพต Q เมอคำเรมตนของ Q เปน 1