Digital System Engineering บทที่ 3

Download Report

Transcript Digital System Engineering บทที่ 3

Digital System Engineering
บทที่ 3.
Sequential Logic Design
• สัญญาณ Output ของ Sequential Logic จะขึ้นกับข้อมูลในปั จจุบนั
และอดีตที่ป้อนให้กบั วงจร
• ดังนั้น Sequential Logic จึงเป็ นวงจรที่มีความจา
• Sequential Logic อาจจะนาเอาข้อมูลในอดีตทั้งหมดมาใช้ร่วมกัน
• หรื ออาจจะแบ่งข้อมูลในอดีตออกเป็ นข้อมูลขนาดเล็กหลายๆข้อมูล ทีเ่ รี ยกว่า
State
• State ในวงจรดิจิตอลคือเซ็ทของข้อมูล เรี ยกว่า State Variable ซึ่ งเอาไว้
ใช้กาหนดค่าของสัญญาณ Output ในอนาคต
3.2 LATCHES และ FLIP-FLOPS
วงจร Cross-Coupled Inverter
• อุปกรณ์พ้นื ฐานของหน่วยความจาคือ Bistable ซึ่ งมีค่า Stable State 2
ค่า (Q=0, /Q=1 หรื อ Q=1, /Q=0)
• วงจร Bistable แตกต่างจากวงจร Combinational ตรงที่มนั มีลกั ษณะ
Cyclic (ค่าของ Q ขึ้นกับค่า /Q และค่าของ /Q ขึ้นกับค่า Q)
• กรณี ที่ Q=0 ป้ อนเป็ น Input ของ I2 ทาให้ /Q=1 และ /Q=1 ป้ อนเป็ น
Input ให้กบั I1 ทาให้ Q=0
• กรณี ที่ Q=1 ป้ อนเป็ น Input ของ I2 ทาให้ /Q=0 และ /Q=0 ป้ อนเป็ น
Input ให้กบั I1 ทาให้ Q=1
• ดังนั้นสถานะของ Q และ /Q จึงเสถียร (Bistable)
3.2 LATCHES และ FLIP-FLOPS
• อุปกรณ์ที่มี N Stable State จะมีข่าวสารทั้งหมด log2N bits
• เราสามารถใช้ Bistable ในการเก็บข้อมูลแต่ละบิท
• ข้อมูลทุกอย่างจะถูกเก็บไว้ใน Q ถ้าในอดีต Q=0 มันจะมีค่าเป็ น 0 ไปตลอด
หรื อถ้ามันเคยมีค่าเป็ น 1 มันจะมีค่าเป็ น 1 ไปตลอด
• ส่ วน /Q จะมีค่าตรงกันข้ามกับ Q เสมอ ดังนั้น /Q จึงไม่ได้เก็บข่าวสารใดๆ
3.2 LATCHES และ FLIP-FLOPS
• ปัญหาของการใช้วงจร Cross-Coupled Inverter คือตอนที่จ่ายไฟ
ให้กบั วงจร เราไม่สามารถทานายได้วา่ สถานะของ Q และ /Q จะเป็ นเช่นไร มัน
จะเปลี่ยนค่าไปเรื่ อยๆ เมื่อมีการเปิ ดเครื่ องครั้งต่อไป
• ถึงแม้วา่ Cross-Coupled Inverter จะสามารถเก็บบิทของข่าวสารได้
แต่เนื่องจากมันไม่มีสัญญาณ Input ทาให้ผใู ้ ช้ไม่สามารถป้ อนข่าวสารที่ตอ้ งการ
เก็บเข้าไปในวงจรได้
3.2.1 SR Latch
• กรณี ที่ 1. R=1, S=0
Input ของ N1 อย่างน้อย 1 เส้นเป็ น 1 (R=1) ทาให้ Q=0 และ Q=0
ถูกป้ อนเป็ น Input ให้กบั N2 เนื่องจาก Input ของ N2 คือ Q=0 และ
S=0 ดังนั้น /Q=1
• กรณี ที่ 2. R=0, S=1
Input ของ N2 อย่างน้อย 1 เส้นเป็ น 1 (S=1) ทาให้ /Q=0 และ
/Q=0 ถูกป้ อนเป็ น Input ให้กบั N1 เนื่องจาก Input ของ N1 คือ
/Q=0 และ R=0 ดังนั้น Q=1
3.2.1 SR Latch
• กรณี ที่ 3. R=1, S=1
เนื่องจาก Input ของ N1 และ N2 อย่างน้อย 1 เส้นเป็ น 1 ดังนั้น Q=0,
/Q=0
• กรณี ที่ 4. R=0, S=0
เนื่องจาก 0 NOR x = /x ดังนั้นในกรณี น้ ี N1 และ N2 ทางานเป็ น
NOT gate ดังนั้นในกรณี น้ ีวงจร RS Latch จึงทางานเหมือนกับวงจร
Cross-Coupled Inverter ซึ่ งทาหน้าที่เก็บข่าวสารเดิมของ Q และ
/Q
3.2.1 SR Latch
• จากตาราง Truth Table
•
•
•
•
ถ้า S=1 R=0 Q จะถูกเซ็ทให้เป็ น 1
ถ้า S=0 R=1 Q จะถูกรี เซ็ทให้เป็ น 0
ถ้า S=0 R=0 Q จะไม่ถูกเซ็ทหรื อรี เซ็ท มันจะเก็บคาเดิ
่ มไว้
ถ้า S=1 R=1 Q จะถูกเซ็ทและรี เซ็ทพร้อมกัน ซึ่งทาให้ Q และ /Q = 0 ซึ่ง
เป็ นสถานะต้องห้ามของ Latch
3.2.2 D Latch
• ปัญหาของ RS Latch คือเราไม่สามารถควบคุมว่าจะให้ Q ของ RS Latch
เปลี่ยนค่าเมื่อไหร่
• D Latch ถูกออกแบบมาให้สามารถเปลี่ยนค่าของ Q ได้เฉพาะตอนที่ Clk
= 1 และค่าของ Q = D
• ถ้า Clk=0 ค่าของ Q จะคงโลจิกเดิมไว้
3.2.3 D Flip-Flop
• L1 ถูกเรี ยกว่า Master และ L2 เรี ยกว่า Slave
• เมื่อ Clk = 0 ทาให้ Clk ของ L1 เป็ น 1 ดังนั้น L1 จะรับข้อมูลค่าใหม่จาก
D มาเก็บไว้ที่ขา Q ของมัน แต่ไม่สามารถส่ งไปยัง Q ของ L2 ได้เนื่องจาก
Clk ของ L2 เป็ น 0
• เมื่อ Clk = 1 ทาให้ Clk ของ L1 เป็ น 0 ดังนั้น L1 จะหยุดรับข้อมูลใหม่
ดังนั้น Q ของ L1 จึงเป็ นค่าของ D ขณะที่ Clk เปลี่ยนจาก 0 เป็ น 1 และ
Clk ของ L2 เป็ น 1 ดังนั้น Q ของ L2 จึงเป็ นค่าของ D ขณะที่ Clk
เปลี่ยนจาก 0 เป็ น 1
3.2.3 D Flip-Flop
• ดังนั้น D Flip-Flop จึงทาการส่ งค่าของ D ไปยังค่า Q เมื่อสัญญาณ Clk
เปลี่ยนจาก 0 เป็ น 1 (Rising Edge)
• D Flip-Flop มีชื่อเรี ยกหลายชื่อคือ Master-Slave Flip-Flop,
Edge-Triggered Flip-Flop หรื อ Positive Edge-Triggered
Flip-Flop
3.2.4 Register
• N bit Register เป็ นการนาเอา D
Flip-Flop จานวน N ตัวมาต่อขา Clk
ร่ วมกัน
3.2.5 Enable Flip-Flop
• En=0 D Flip-Flop จะไม่สามารถ Latch ข้อมูลได้
• En=1 D Flip-Flop สามารถ Latch ข้อมูลได้
3.2.6 Resettable Flip-Flop
• Resettable Flop-Flop เป็ น Flip-Flop ที่เรา
สามารถบังคับให้มนั ถูกรี เซ็ทโดยไม่สนใจค่าของ D นิยม
ใช้ในการกาหนดค่าเริ่ มต้นให้กบั Flip-Flop
• Resettable Flip-Flop สามารถทาได้ 2 แบบคือ
• Synchronously Resettable
Flip-Flop จะถูกรี เซ็ทเมื่อมีสญ
ั ญาณขอบขาขึ้นของ
Clk
• Asynchronously Resettable
Flip-Flop จะถูกรี เซ็ททันทีที่มีสัญญาณ Reset
Timing Diagram ของ D Latch และ D
Flip-Flop
3.3 Synchronous Logic Design
3.3.1 วงจรที่มีปัญหาบางวงจร
• Astable Circuit
โลจิกของ X, Y, Z มีค่าไม่เสถียร (Unstable) หรื อเราเรี ยกว่า Astable
3.3 Synchronous Logic Design
3.3.1 วงจรที่มีปัญหาบางวงจร
• ตัวอย่างการเกิด Race Condition
A
B
A
B
N1
N2
Q
B
B
N1
Q
N2
• ตัวอย่างเป็ นการออกแบบวงจร D Flip-Flop แบบใหม่ โดยกาหนดให้มี
Truth Table ดังแสดงในรู ป
• กาหนดให้ตอนเริ่ มต้น A, B และ Output = 1
• จากนั้นจึงเปลี่ยน B ให้เป็ น 0 จากTruth Table ค่า Q จะต้องคงค่า
สถานะเดิมคือ 1 ไว้
3.3 Synchronous Logic Design
3.3.1 วงจรที่มีปัญหาบางวงจร
• ตัวอย่างการเกิด Race Condition
A
B
A
B
N1
N2
Q
B
B
N1
Q
N2
• เมื่อ B เปลี่ยนเป็ น 0 ทาให้ N1= A(1) and B(0) = 0
• แต่ถา้ Propagation Delay ของ Not Gate มีค่ามากเกินไป โดยทา
ให้ /B=0 หลังจากที่ N1=0 ดังแสดงใน Timing Diagram ดังนั้น
ในขณะที่สถานะของ /B ยังไม่เปลี่ยนค่าของ N2 = /B(0) and Q(1) =
0 ดังนั้น Q = N1(0) or N2(0) = 0
• และเมื่อ /B เปลี่ยนเป็ น 1 จะทาให้ N2 = /B(1) and Q(0) = 0 และ
Q = N1(0) or N2(0) = 0
3.3 Synchronous Logic Design
3.3.1 วงจรที่มีปัญหาบางวงจร
• จะเห็นว่าวงจร D Flip-Flop ที่ออกแบบใหม่น้ ี ถ้า Not Gate มี
Propagation Delay มากเกินไป จะทาให้ไม่สามารถเก็บสถานะเดิมของ
Q ได้เมื่อ B เปลี่ยนเป็ น 0
• การที่วงจรทางานผิดพลาดเนื่องจาก Propagation Delay ในบางเส้นทางมี
ค่ามากเกินไปนี้ เราเรี ยกว่าการเกิด Race Condition ซึ่ งจะเกิดกับวงจรที่
มีการป้ อนสัญญาณ Output กลับไปที่ Input
• วงจรที่ออกแบบเหมือนกันทุกอย่าง วงจรหนึ่งอาจจะทางานปกติ แต่อีกวงจร
อาจจะไม่ทางานเนื่องจากในกระบวนการผลิต อาจจะมีบางเส้นทางที่มีค่า Delay
ต่างออกไปเล็กน้อย
• หรื อในกรณี ที่อุณหภูมิสุงขึ้นอาจจะทาให้ Propagation Delay ของแต่ละ
เส้นทางเปลี่ยนไป ดังนั้นการทางานของวงจรจึงขึ้นกับอุณหภูมิดว้ ย
3.3.2 Synchronous Sequential Circuit
• วงจร Sequential เป็ นวงจรที่มีเส้นทางแบบ Cyclic Path หรื อเส้นทางที่
ป้ อน Output ย้อนกลับไปให้ Input
• Cyclic Path จะทาให้เกิดปั ญหา Race Condition และ Astable
• วงจร Combinational ซึ่ งไม่มี Cyclic Path จะไม่มีปัญหา Race
Condition และ Astable
• และถ้ามีเวลามากพอ ผลของ Glitch จะหายไป และทาให้ Output ของ
วงจร Combinational จะมี Logic ที่ถกู ต้องเสมอ
3.3.2 Synchronous Sequential Circuit
A
B
Q
N1
B
B
N2
N1
Q
SET
D
Clk
Q
N2
CLR
Q
Clk
• เราสามารถแก้ปัญหาของการเกิด Racing ในวงจร Sequential ได้โดยการ
ใส่ Register เข้าไปใน Cyclic Path
• เริ่ มต้นกาหนดให้ Clk ของ Register เป็ น 0 ดังนั้นมันจึงกั้นไม่ให้ Q
ย้อนกลับไปที่ Input
• ดังนั้นเมื่อ B เปลี่ยนเป็ น 0 แต่ /B ยังคงเป็ น 0 อยู่ ถึงแม้วา่ Q จะเท่ากับ 0
ดังได้อธิ บายไปก่อนหน้านี้
3.3.2 Synchronous Sequential Circuit
A
B
Q
N1
B
B
N2
N1
Q
SET
D
Clk
Q
N2
CLR
Q
Clk
• แต่ Output ของ Register ยังคงเป็ น 1 อยู่
• และเมื่อ /B เปลี่ยนเป็ น 1 จึงทาให้ N2=1 และทาให้ Q เปลี่ยนกลับเป็ น 1
ซึ่ งเป็ นสถานะที่ถกู ต้อง
• จากนั้นจึงป้ อน Clk = 1 เพื่อให้ Register ปล่อยให้ค่า Q ที่ถกู ต้อง
ย้อนกลับไปหา Input ได้
3.3.2 Synchronous Sequential Circuit
• Register ทาหน้าที่ก้ นั ไม่ให้ Q ที่ยงั มีสถานะที่ไม่ถกู ต้องย้อนกลับไปที่
Input ซึ่ งจะทาให้เกิด Race Condition ได้
• วงจรจะต้องรอจนกระทัง่ Q เปลี่ยนเป็ นสถานะที่ถกู ต้องแล้ว จึงป้ อน Clk = 1
เพื่อให้ Register ปล่อยให้ค่า Q ที่ถกู ต้องย้อนกลับไปที่ Input
• ดังนั้นการออกแบบวงจร Sequential จะต้องใส่ Register ใน Cyclic
Path
• และถ้าสัญญาณ Clk ของ Register มีความถี่ต่าพอ จนทาให้สัญญาณ
Output ของ Sequential เปลี่ยนเป็ นสถานะที่ถกู ต้องแล้ว วงจร
Sequential นั้นจะไม่เกิด Race Condition
3.3.2 Synchronous Sequential Circuit
• เราจะเรี ยกค่าที่เก็บไว้ใน Register (ค่า Q ของ Register) ว่า State
• State ของวงจร Sequential จะเปลี่ยนเมื่อมีสัญญาณ Clock ป้ อนให้กบั
Register เท่านั้น หรื อเราเรี ยกว่า State ถูก Synchronized กับ
สัญญาณ Clock
• ถ้า Clock ช้าพอจนกระทัง่ สัญญาณ Input ที่ป้อนให้กบั Register ทุกตัว
เปลี่ยนเป็ นค่าที่ถกู ต้องก่อนที่สัญญาณ Clock ลูกต่อไปจะมา ก็จะทาให้ไม่เกิด
Race Condition
• การแก้ Race ในวงจร Sequential โดยการใส่ Register เข้าไปใน
Feedback Path จะทาให้วงจร Sequential ทางาน
Synchronous กับสัญญาณ Clock
3.3.2 Synchronous Sequential Circuit
• วงจร Sequential ประกอบด้วย State จานวน k ตัว {S0,S1,…,Sk-1}
• มีสัญญาณ Clock เป็ นตัวกาหนดการ Synchronous โดยที่ขอบขาขึ้น
ของสัญญาณ Clock เป็ นตัวกาหนดเวลาการเปลี่ยนแปลงของ State
• เราจะใช้ Current State (ใช้สัญลักษณ์ S) และ Next State (ใช้
สัญลักษณ์ S’) เป็ นตัวกาหนดค่าของ State ปัจจุบนั และ State ของ Clock
ลูกต่อไป
• Functional Specification จะเป็ นตัวกาหนดค่าของ Next State
และค่าของ Output ที่ได้จากการรวมกันของ Current State และ
Next State
• Timing Specification ประกอบด้วยระยะเวลาสู งสุ ด (tpcq) และ
ระยะเวลาต่าสุ ด (tccq) ของช่วงเวลาตั้งแต่ขอบขาขึ้นของ Clock ไป
จนกระทัง่ เวลาที่ Output มีการเปลี่ยนแปลง
3.3.2 Synchronous Sequential Circuit
• และเวลา Setup (tsetup) และ Hold (thold) คือเวลาที่สัญญาณ
Input จะต้องคงที่เมื่อเปรี ยบเทียบกับเวลาที่จะต้องป้ อนขอบขาขึ้นของสัญญาณ
Clock
3.3.2 Synchronous Sequential Circuit
• กฎของการออกแบบวงจร Synchronous Sequential คือ
•
•
•
•
วงจรจะต้องประกอบด้วย Register และวงจร Combinational
จะต้องมี Register อย่างน้อย 1 ตัว
Register ทุกตัวจะต้องใช้สัญญาณ Clock ตัวเดียวกัน
Cyclic Path ทุกเส้นทางจะต้องมี Register อย่างน้อย 1 ตัว
• วงจร Sequential ที่ไม่ได้ทางานแบบ Synchronous จะเรี ยกว่าวงจร
Asynchronous Sequential
3.3.3 วงจร Sequential แบบ Synchronous และแบบ
Asynchronous
• วงจร Synchronous Sequential ออกแบบได้ง่ายกว่าวงจร
Asynchronous Sequential
• แต่วงจร Synchronous Sequential ยังมีความจาเป็ นในบางกรณี เช่นใน
กรณี ที่มีการสื่ อสารระหว่างวงจร Sequential 2 วงจรที่ใช้ Clock คนละตัว
หรื อใช้ความถี่คนละความถี่เป็ นต้น
3.4 Finite State Machines
• วงจร Synchronous Sequential สามารถเขียนอยูใ่ นรู ปของ Finite
State Machine (FSM) ดังแสดงในรู ป
• FSM ประกอบด้วย
• Register จานวน k ตัวซึ่งทาให้มี State ทั้งหมด 2k state
• Input จานวน M ตัว
• Output จานวน N ตัว
3.4 Finite State Machines
• สัญญาณ Clock
• และบางวงจรอาจจะมีสัญญาณ Reset
• FSM สามารถแบ่งออกเป็ น 2 ชนิดคือ
• Moore Machine สัญญาณ Output จะขึ้นกับค่า Current State
เท่านั้น
• Mealy Machine สัญญาณ Output จะขึ้นกับค่า Current State
และสัญญาณ Input
3.4.1 ตัวอย่างการออกแบบ FSM
• จงพิจารณาการออกแบบ FSM เพื่อควบคมไฟ
จราจร
• ในการออกแบบวงจรควบคุมไฟจราจรมีการ
ติดตั้ง Sensor TA บนถนน Academic
และ TB บนถนน Bravado
• Output ของ Sensor จะเป็ น TRUE
ถ้ามีรถบนถนน และ FALSE ถ้าไม่มีรถ
• สัญญาณไฟจราจร LA และ LB โดยสามารถ
ควบคุมให้มนั เป็ นไฟสี แดง เหลือง และเขียวได้
3.4.1 ตัวอย่างการออกแบบ FSM
• วงจรควบคุมสัญญาณไฟจราจรสามารถเขียนเป็ น
Block Diagram ได้ดงั รู ป
• โดยกาหนให้
• Clk แต่ละลูกห่างกัน 5 วินาที
• ที่ขอบขาขึ้นของ Clk แต่ละลูก สี ของสัญญาณไฟจราจร
LA และ LB จะเปลี่ยนไปตามค่า TA และ TB ที่วดั ได้
• สัญญาณ Reset เอาไว้ใช้กาหนดค่าเริ่ มต้นของวงจร
ควบคุม
3.4.1 ตัวอย่างการออกแบบ FSM
• ทุกๆ 5 วินาทีวงควบคุมจะตรวจสอบ Sensor TA
และ TB และส่ งสัญญาณไปควบคุมไฟจราจร LA และ
LB โดยสามารถเขียน State Transition ได้ดงั
แสดงในรู ป ซึ่ งสามารถอธิ บายได้ดงั นี้
• เมื่อกดปุ่ ม Reset จะให้ LA เขียวและ LB แดง
(S0) และตราบใดที่ยงั มีรถบนถนน Academic
สัญญาณไฟจะไม่เปลี่ยน
• แต่ถา้ ไม่มีรถบนถนน Academic จะให้ LA เหลือง
และ LB แดง (S1) 5 วินาที
• แล้วเปลี่ยนเป็ น LA แดงและ LB เขียว (S2)
3.4.1 ตัวอย่างการออกแบบ FSM
• จากนั้นถ้ามีรถบนถนน Bravado สัญญาณไฟจะไม่
เปลี่ยน
• แต่ถา้ ไม่มีรถบนถนน Bravado จะให้ LA แดงและ
LB เหลือง (S3) 5 วินาที
• จากนั้นจะให้ LA เขียวและ LB แดง (S1)
3.4.1 ตัวอย่างการออกแบบ FSM
• จากนั้นจึงนาเอาข้อมูลทั้งหมดมาเขียนเป็ น State Table ในตารางที่ 3.1
• State S0, S1, S2 และ S3 สามารถแสดงเป็ นเลขฐาน 2 ขนาด 2 bit
(S1:0) ดังตารางที่ 3.2
• และสัญญาณไฟจราจรเขียว เหลืองและแดงสามารถเป็ นเลขฐาน 2 ขนาด 2 bit
(L1:0) ดังตารางที่ 3.3
3.4.1 ตัวอย่างการออกแบบ FSM
• นาเอาเลขฐาน 2 ของ State ในตารางที่
3.2 ไปแทนที่ใน State ของตารางที่
3.1 แล้วเขียนใหม่ได้ดงั ตารางที่ 3.4
• จากตารางที่ 3.4 เราสามารถเขียนสมการ
บูลีนของ Next State S1’ และ S0’
ได้ดงั นี้
S1’=/S1S0+S1/S0/TB+S1/S0TB
เราสามารถยุบสมการ S1’ ได้เป็ น
S1’=S1 XOR S0
S0’=/S1/S0/TA+S1/S0/TB
3.4.1 ตัวอย่างการออกแบบ FSM
• ในทานองเดียวกันเราสามารถสร้างตาราง
ความสัมพันธ์ระหว่าง State และ
สัญญาณไฟจราจร LA และ LB ได้ดงั
ตารางที่ 3.5
• และเขียนสมการบูลีนได้ดงั นี้
LA1=S1
LA0=/S1S0
LB1=/S1
LB0=S1S0
3.4.1 ตัวอย่างการออกแบบ FSM
• จากนั้นจึงเขียน Block Diagram ของ Moore FSM ดู
ตัวอย่างในรู ปที่ 3.22 (a)
• เริ่ มจากการเขียน 2-bit state register
• ในแต่ละขอบขาขึ้น หรื อทุกๆ 5 วินาที State Register จะ
ก็อปปี้ ค่าของ Next State S’1:0 ไปให้กบั Current State
S1:0
• ในตอนเริ่ มต้น State Register จะรับสัญญาณ Reset แบบ
Synchronous หรื อ Asynchronous เพื่อกาหนดค่า
เริ่ มต้นของ S1:0
3.4.1 ตัวอย่างการออกแบบ FSM
• จากนั้นจึงเขียนวงจรของ Next State จากสมการบูลีนของ S’1 และ S’0
3.4.1 ตัวอย่างการออกแบบ FSM
• สุ ดท้ายเขียนวงจรสร้างสัญญาณ Output จากสมการบูลีนของ LA1, LA0,
LB1, LB0
3.4.1 ตัวอย่างการออกแบบ FSM
• Timing Diagram ของวงจรควบคุมไฟจราจร
3.4.2 State Encoding
• จากตัวอย่างข้างบนเราใช้การเข้ารหัสแบบเลขฐาน 2 เพื่อแทนที่ State และ
สัญญาณไฟจราจรสี ต่างๆ
• ปัญหาคือเราควรจะใช้การเข้ารหัสแบบใดเพื่อให้ได้วงจรที่เล็กที่สุด หรื อวงจรที่มีค่า
Propagation Delay น้อยที่สุด
• ในปั จจุบนั ยังไม่มีทฤษฎีที่ใช้เลือกการเข้ารหัสที่ดีที่สุด แต่ในทางปฏิบตั ินิยมใช้การ
เข้ารหัส 2 แบบคือ
1. การเข้ารหัสเลขฐาน 2 ดังในตัวอย่างด้านข้างบน
2. การเข้ารหัสแบบ One Hot การเข้ารหัสแบบนี้จะใช้ 1 bit เพื่อแทน 1
State ถ้ามี 3 State ก็ตอ้ งใช้ 3 bit และที่เรี ยกว่า One Hot ก็เพราะว่า
จะต้องมี 1 bit ที่มีค่าเป็ น 1 เสมอ ตัวอย่างการเข้ารหัสแบบ One Hot ของ
3 State คือ 001, 010, 100
3.4.2 State Encoding
• จะเห็นได้วา่ การเข้ารหัสแบบ One Hot จะใช้ Register มากกว่าการ
เข้ารหัสเลขฐาน 2 แต่ขอ้ ดีของการเข้ารหัสแบบ One Hot คือการออกแบบ
วงจร Next State และ Output จะง่ายกว่าและใช้อุปกรณ์นอ้ ยกว่าการ
เข้ารหัสเลขฐาน 2
3.4.2 State Encoding
• ตัวอย่างวงจร Counter หาร N เป็ นวงจรนับสัญญาณ Clock โดยที่
Output Y จะมีค่าเป็ น เมื่อนับ Clock ได้ N ลูก รู ป (a) เป็ น Timing
Diagram ของวงจรนับ 3 และมี State Transition Diagram
แสดงรู ป (b)
• ตาราง State Transition
และตาราง Output แสดงใน
ตารางที่ 3.6 และ 3.7
3.4.2 State Encoding
• ตัวอย่างวงจร Counter หาร N เป็ นวงจรนับสัญญาณ Clock โดยที่
Output Y จะมีค่าเป็ น เมื่อนับ Clock ได้ N ลูก รู ป (a) เป็ น Timing
Diagram ของวงจรนับ 3 และมี State Transition Diagram
แสดงรู ป (b)
• ตาราง State Transition
และตาราง Output แสดงใน
ตารางที่ 3.6 และ 3.7
3.4.2 State Encoding
Current
State
S1 S0
0
0
0
1
1
0
Next
State
S’1 S’0
0
1
1
0
0
0
Current
State
S1 S0
0
0
0
1
1
0
Output
Y
1
0
0
• ตาราง State Transition และ Output ของรหัสเลขฐาน 2 แสดงได้ดงั
ตาราง และสามารถเขียนเป็ นสมการบูลีนได้ดงั นี้
S’1 = /S1S0
S’0 = /S1/S0
Y = /S1/S0
3.4.2 State Encoding
Current
State
S2 S1 S0
0
0
1
0
1
0
1
0
0
S’2
0
1
0
Next
State
S’1
1
0
0
S’0
0
0
1
Current
State
S2 S1 S0
0
0
1
0
1
0
1
0
0
Output
Y
1
0
0
• ตาราง State Transition และ Output ของรหัส Hot One แสดง
ได้ดงั ตาราง และสามารถเขียนเป็ นสมการบูลีนได้ดงั นี้
S’2 = S1
S’1 = S0
S’0 = S2
Y = S0
3.4.3 Moore และ Mealy Machine
• เนื่องจาก Output ของ Moore Machine จะขึ้นกับค่าของ Current
State เท่านั้น ดังนั้นใน State Transition Diagram จึงเขียน
Output ไว้ในวงกลมของ State
• แต่เนื่องจาก Output ของ Mealy Machine จะขึ้นกับค่าของ Current
State และ Input ดังนั้น Output จึงถูกเขียนไว้ตรงลูกศร
3.4.3 Moore และ Mealy Machine
• ตัวอย่างการออกแบบวงจร Sequential แบบ Mealy
Machine
• หุ่นยนต์หอยทากตัวหนึ่ งถูกออกแบบให้คลานอยูบ่ นเทป
กระดาษจากซ้ายไปขวา โดยในทุกๆ 1 Clock หุ่นยนต์จะ
อ่านข้อมูล 0 หรื อ 1 ที่อยูบ่ นเทป
• หุ่นยนต์จะยิม้ เมื่อข้อมูลที่อ่าน 4 bit สุ ดท้ายโดยอ่านจาก
ซ้ายไปขวาเป็ น 1101
• กาหนดให้ A เป็ นข้อมูล Input ที่อ่านได้จากเทปกระดาษ
• Y เป็ น Output เพื่อสั่งให้หุ่นยนต์ยมิ้ มีค่าเป็ น TRUE
ถ้าต้องการให้ยมิ้ และ FALSE ถ้าไม่ตอ้ งการ
3.4.3 Moore และ Mealy Machine
• เราสามารถออกแบบ State
Transition Diagram ของ
Moore Machine ได้ดงั รู ป
• ตารางของ State Transition
และ Output สามารถแสดงได้ดงั
ตารางที่ 3.11 และ 3.12
• เนื่องจากมี State ทั้งหมด 5
State เราสามารถเขียนเป็ นรหัสเลข
ฐาน 2 ดังนี้
S0=000, S1=001, S2=010,
S3=011,S4=100
3.4.3 Moore และ Mealy Machine
• เราสามารถเขียนตาราง State Transition และ Output ใหม่ได้ดงั ตาราง
ที่ 3.13 และ 3.14
S2’=S1S0A, S1’=/S1S0A + S1/S0+ S2A,
S0’=/S2/S1/S0+S1/S0/A, Y=S2
3.4.3 Moore และ Mealy Machine
• วงจรควบคุมหุ่นยนต์หอยทากออกแบบโดยใช้ Moore Machine
3.4.3 Moore และ Mealy Machine
• เราสามารถออกแบบ State
Transition Diagram ของ
Mealy Machine ได้ดงั รู ป
• บนลูกศรแต่ละเส้นมีค่าของ A/Yโดย
ที่ A เป็ น Input ที่ทาให้เกิดการ
เป็ น State และ Y คือค่า
Output
• ตารางรวมของ State
Transition และ Output
สามารถแสดงได้ดงั ตารางที่ 3.15
3.4.3 Moore และ Mealy Machine
• เราสามารถเขียนเป็ นรหัสเลขฐาน 2
ดังนี้
S0=00, S1=01, S2=10,
S3=11
• เราสามารถเขียนตารางรวมใหม่ของ
State Transition และ
Output ได้ดงั ตารางที่ 3.16
S1’=S1/S0 + /S1S0A,
S0’=/S1/S0A + S1/S0/A +
S1S0A, Y=S1S0A
3.4.3 Moore และ Mealy Machine
• วงจรควบคุมหุ่นยนต์หอยทากออกแบบโดยใช้ Mealy Machine
3.43 Moore และ Mealy Machine
• Timing diagram ของ Moore และ Mealy machine แสดงได้
ดังรู ป
3.43 Moore และ Mealy Machine
• จากรู ปจะเห็นว่าสัญญาณ Output ของ Mealy เกิดก่อนของ Moore
เนื่องจากมันตอบสนองต่อสัญญาณ Input มากกว่ารอการเปลี่ยน State
3.43 Moore และ Mealy Machine
• ถ้า Output ของ Mealy โดยใช้ flip-flop มันจะตรงกับ Output
ของ Moore
• ดังนั้นการเลือกชนิดของ FSM ให้พิจารณาว่าต้องการให้สัญญาณ Output
ตอบสนองต่อการเปลี่ยน State หรื อสัญญาณ Input
3 .4.4 Factoring State Machines
• ในระบบ FSM ที่มีความซับซ้อนเราสามารถทาให้การออกแบบได้ง่ายขึ้น ได้โดย
การแบ่งเป็ นหลายๆวงจรที่ทางานร่ วมกัน
• โดยการต่อ Output เข้ากับ Input ของวงจรถัดไป
• การออกแบบลักษณะนี้เรี ยกว่าการทา Factoring ของวงจร State
Machine
3 .4.4 Factoring State Machines
• ตัวอย่างที่ 3.8 การทา Unfactored และ Factored State
Machine
• จงดัดแปลงวงจรควบคุมไฟจราจรจากหัวข้อที่ 3.4.1 ให้มีโหมดพาเหรด ใน
โหมดนี้ไฟจราจรบนถนน Bravado จะเป็ นสี เขียวในขณะที่มีขบวนพาเหรดซึ่ ง
มีการเดินแบบเป็ นกลุ่มๆแยกจากกัน
• วงจรควบคุมมีสัญญาณ Input เพิ่มขึ้นมาอีก 2 สัญญาณคือ P และ R
• ป้ อน P อย่างน้อย 1 Clock เพื่อเข้าสู่ โหมดพาเหรด
• ป้ อน R อย่างน้อย 1 Clock เพื่อออกจากโหมดพาเหรด
• เมื่ออยูใ่ นโหมดพาเหรด วงจรควบคุมจะทางานตามปกติจนกระทัง่ LB เปลี่ยนเป็ น
สี เขียว จากนั้น LB จะเป็ นสี เขียวไปจนกว่าจะออกจากโหมดพาเหรด
3 .4.4 Factoring State Machines
• เริ่ มจากการเขียน Block Diagram สาหรับ FSM วงจร
เดียว ดังแสดงในรู ป (a)
• จากนั้นจึงเขียน Block Diagram สาหรับ FSM 2
วงจรดังแสดงในรู ป (b)
• วงจร Mode FSM จะส่ งสัญญาณ M เมื่อมันอยูใ่ นโหมด
พาเหรด
• วงจร Light FSM จะควบคุมไฟจราจรโดยขึ้นกับสัญญาณ
M และสัญญาณจากเซนเซอร์ TA และ TB
3 .4.4 Factoring State Machines
• State Transition Diagram ของวงจรควบคุมแบบ Single FSM
• S0 ถึง S3 เป็ น State ของโหมดปกติ และ S4 ถึง S7 เป็ นโหมดพาเหรด
3 .4.4 Factoring State Machines
• จะเห็นได้วา่ State Transition Diagram ของทั้ง 2 ส่ วนคล้ายกันมาก
• แต่ในโหมดพาเหรด FSM จะอยูใ่ น S6 เพื่อทาให้ไฟบนถนน Bravado เป็ น
สี เขียว
3 .4.4 Factoring State Machines
• สัญญาณ P และ R เป็ นตัวควบคุมการย้ายจากโหมดปกติไปโหมดพาเหรด
• การออกแบบวงจร FSM แบบ Single จะยุง่ ยากมาก
3 .4.4 Factoring State Machines
• รู ปด้านขวามือแสดงการทา Factored FSM
• Mode FSM มี 2 State ในการตรวจสอบว่า
สัญญาณไฟอยูใ่ นโหมดปกติหรื อโหมดพาเหรด
• Light FSM ถูกดัดแปลงให้อยูใ่ น S2 ในขณะที่ M
เป็ น TRUE
3 .4.4 Factoring State Machines
• ตาราง State Transition ของ Light FSM
Current
Next
Input
State
State
S1 S0 TA TB M S’1 S’0
0
0
1
x
x
0
0
0
0
0
x
x
0
1
0
1
x
x
x
1
0
1
0
x
1
1
1
0
1
0
x
0
0
1
1
1
1
x
x
x
0
0
• ส่ วนตาราง Output สามารถดูได้จากตารางที่ 3.5
3 .4.4 Factoring State Machines
• ตาราง State Transition ของ Mode FSM
Current
Next
Input
State
State
S
P
R
S’
0
0
x
0
0
1
x
1
1
x
0
1
1
x
1
0
• สมการบูลีนของ Output M คือ
M=S
3.4.5 FSM Review
• การออกแบบวงจร Sequential โดยใช้วิธี FSM มีข้ นั ตอนดังต่อไปนี้
1. กาหนดสัญญาณ Input และ Output
2. เขียน State Transition Diagram
3. ในกรณี ที่ตอ้ งการออกแบบ Moore Machine
1. เขียนตาราง State Transition
2. เขียนตาราง Output
4. ในกรณี ที่ตอ้ งการออกแบบ Mealy Machine
1. เขียนตารางรวมของ State Transition และ Output
5. เลือกวิธีการเข้ารหัส รหัสที่ถูกเลือกจะมีผลกับการออกแบบวงจร
6. เขียนสมการบูลีนสาหรับ Next State และ Output
7. เขียนวงจร Sequential
3.5 Timing ของ Sequential Logic
• เราเรี ยกกระบวนการที่ Flip-Flop ก๊อปปี้ อินพุท D ไปยังเอาท์พทุ Q ที่ขอบ
ขาขึ้นของ Clock ว่าการสุ่ มสัญญาณ D ที่ขอบของ Clock
• ถ้า D มีโลจิกคงที่ที่ 0 หรื อ 1 เมื่อตอนขอบขาขึ้นของ Clock เราสามารถบอก
ได้วา่ โลจิกของ Q จะเป็ นค่าอะไร
• แต่ถา้ D มีการเปลี่ยนแปลงในเมื่อตอนขอบขาขึ้นของ Clock จะเกิดอะไรขึ้น
• สถานการณ์น้ ีจะคล้ายกับการถ่ายรู ปกบกาลังกระโดดลงสระน้ า
• ถ้าเราถ่ายรู ปก่อนที่กบจะกระโดด เราจะได้รูปกบบนขอบสระ
• แต่ถา้ เราถ่ายรู ปกบหลังจากกระโดด เราจะเห็นเพียงแค่น้ าในสระที่กระเพื่อม
• แต่ถา้ เราถ่ายรู ปขณะที่กบกาลังกระโดด เราจะเห็นภาพเบลอของกบที่กาลัง
กระโดดลงสระน้ า
3.5 Timing ของ Sequential Logic
• จะเห็นได้วา่ การทางานของกล้องถูกกาหนดโดย Aperture Time ซึ่ งคือ
ระยะเวลาที่วตั ถุที่ถกู ถ่ายรู ปจะต้องอยูน่ ิ่ งเพื่อให้ได้ภาพทีค่ มชัด
• เช่นเดียวกันวงจร Sequential ก็มี Aperture Time ในช่วงขอบขาขึ้น
ของ Clock เพื่อให้ได้สัญญาณ Output ที่ถกู ต้อง
• Aperture Time ของวงจร Sequential ถูกกาหนดโดย Setup
Time และ Hold Time ซึ่ งคือเวลาก่อนและหลังขอบขาขึ้นตามลาดับ
• เช่นเดียวกับการที่เราไม่สามารถใช้ค่าโลจิกที่มีแรงดันอยูใ่ น Forbidden
Zone เราก็ไม่สามารถที่จะใช้สัญญาณ Output ที่อยูใ่ นช่วงเลา
Aperture Time
• ดังนั้นในวงจร Sequential เราจึงต้องพิจารณาเวลาเป็ นแบบ Discrete ที่
เรี ยกว่า Clock Cycle ดังเช่นกับที่เราพิจารณาว่าสัญญาณมีค่าเป็ น
Discrete 1 และ 0
3.5 Timing ของ Sequential Logic
• สัญญาณอาจจะเกิด Glitch และ Oscillate ในช่วง Aperture Time
• เราจะพิจารณาเฉพาะโลจิกสุ ดท้ายซึ่ งมีค่าคงที่ ตอนที่สิ้นสุ ดของ Clock
Cycle เท่านั้น
• ดังนั้นเราสามารถเขียน A[n] คือค่าของสัญญาณ A ที่เวลาสิ้ นสุ ดของ Clock
Cycle ที่ n โดยที่ n เป็ นเลขจานวนเต็ม
• ระยะเวลาของ Clock Cycle จะต้องนานพอที่จะทาให้สัญญาณทุกสัญญาณมี
ค่าคงที่ ซึ่ งเป็ นการจากัดความเร็ วของระบบ
• นอกจากนี้ในวงจรจริ ง Flip-Flop ทุกตัวไม่ได้รับสัญญาณ Clock พร้อม
กัน
• เราเรี ยกช่วงเวลาที่ผนั ผวนนี้วา่ Clock Skew ซึ่ งจะทาให้ตอ้ งเพิ่มคาบเวลา
ของสัญญาณ Clock ให้มากขึ้น
3.5 Timing ของ Sequential Logic
ในการใช้งานจริ งสถานการณ์อาจจะยุง่ ยากมากขึ้นยกตัวอย่างเช่น
พิจารณาวงจร Sequential ที่ได้รับสัญญาณ Input จากปุ่ มกด
มีความเป็ นไปได้ที่ผใู้ ช้อาจจะกดปุ่ มตอนที่ Clock เป็ นขอบขาขึ้นพอดี
เราเรี ยกเหตุการณ์แบบนี้วา่ Metastability ซึ่ ง Flip-Flop จะได้รับค่าที่อยู่
ระหว่าง 0 และ 1
• เราสามารถแก้ปัญหาลักษณะนี้ได้โดยใช้วงจร Synchronizer ซึ่ งเป็ นวงจรที่
มีโอกาสน้อยมากที่จะสร้างสัญญาณ Output ที่มีโลจิกผิดปกติ
• ในหัวข้อนี้จะพูดถึงวิธีการแก้ปัญหาเหล่านี้ท้ งั หมด
•
•
•
•
3.5.1 Dynamic Discipline
• วงจร synchronous sequential เช่น
Flip-Flop หรื อ FSM มีขอ้ กาหนดทางเวลาดัง
แสดงในรู ปด้านขวามือ
• เมื่อเกิดขอบขาขึ้น สัญญาณ Output จะเริ่ มต้น
เปลี่ยนค่าหลังจาก Clock-to-Q Contamination Delay (tccq)
และจะได้ค่าสุ ดท้ายที่ถกู ต้อง ณ เวลา Clock-to-Q Propagation
Delay (tpcq)
• ค่า Delay 2 ค่านี้ใช้บอกค่า Delay ที่เร็ วที่สุดและช้าที่สุด
• เพื่อให้วงจรสุ่ มสัญญาณ Input ที่ถกู ต้อง สัญญาณ Input จะต้องมีค่าที่ถกู ต้อง
เป็ นเวลา tsetup ก่อนขอบขาขึ้น และต้องคงค่านั้นไปจนหลังจากขอบขาขึ้นเป็ น
เวลา thold
3.5.1 Dynamic Discipline
• tsetup + thold เรี ยกว่า Aperture Time
• หลักการของ Dynamic Discipline กาหนดว่า
สัญญาณ Input ของวงจร Asynchronous
Sequential จะต้องมีค่าที่เสถียรคงที่ในระหว่าง
เวลา Setup และ Hold ของ Aperture Time
3.5.2 System Timing
• Clock Period หรื อ Cycle Time (tc) คือเวลาระหว่างขอบขาขึ้นของ
สัญญาณ Clock 2 ลูกที่อยูต่ ิดกัน
• ความถี่ของสัญญาณ Clock สามารถคานวณได้จาก 1/ tc
• ถ้าความถี่ Clock เพิ่มขึ้นก็จะทาให้วงจร Sequential ทางานได้เร็ วขึ้น
• รู ป (a) แสดงเส้นทางทัว่ ไปของวงจร Synchronous Sequential ที่เรา
ต้องการคานวณหา Clock Period
3.5.2 System Timing
• Register R1 จะสร้างสัญญาณ Output Q1 ตอนขอบขาขึ้นของ
Clock
• Q1 ถูกป้ อนให้วงจร Sequential ซึ่ งจะสร้างสัญญาณ D2 ให้กบั
Register R2
• Timing Diagram ในรู ป (b) แสดงให้เห็นว่าสัญญาณ Q1 จะคงที่
หลังจาก Contamination Delay Output
• Q1 ที่คงที่จะถูกป้ อนให้กบั วงจร Combinational และ Output D2
จะคงที่หลังจากระยะเวลา Propagation Delay
3.5.2 System Timing
• ลูกศรสี เทาแสดง Contamination Delay ของ R1 และวงจร
Combinational
• ลูกศรสี น้ าเงินแสดง Propagation Delay ของ R1 และวงจร
Combinational
3.5.2 System Timing : Setup Time Constraint
• Timing Diagram ของรู ปด้านขวามือแสดง
Maximum Delay ซึ่ งแสดงโดยลูกศรสี น้ าเงิน
• เพื่อให้ตรงตามเงื่อนไข Setup Time ของ R2
สัญญาณ D2 จะต้องมีค่าคงที่ก่อนเวลา Setup ของ
Clock ลูกต่อไป
• ดังนั้นเราสามารถเขียนสมการสาหรับ Clock
Period ต่าสุ ดได้ดงั นี้
Tc >= tpcq+tpd+tsetup
3.5.2 System Timing : Setup Time Constraint
• ในทางการค้า Clock Period ถูกกาหนดโดยหัวหน้าวิศวกร หรื อแผนก
การตลาด
• นอกจากนี้ค่า tpcq และ tsetup ถูกกาหนดโดยโรงงาน
• ดังนั้นเราสามารถแก้สมการเพื่อหาค่า Propagation Delay สูงสุ ดของ
วงจร Combinational ซึ่ งส่ วนใหญ่จะเป็ นตัวแปรเพียงตัวเดียวที่สามารถ
ควบคุมได้โดยวิศวกรผูอ้ อกแบบได้ดงั นี้
tpd <= Tc-(tpcq+tsetup)
• tpcq+tsetup เรี ยกว่าค่า Sequencing Overhead
• ในทางอุดมคติค่า tpd ควรจะเท่ากับ Tc
• แต่ในทางปฏิบตั ิค่าดังกล่าวจะถูกลดทอนลงไปโดย Sequencing
Overhead ของ Flip-Flop
3.5.2 System Timing : Setup Time Constraint
• สมการของ tpd เรี ยกว่า Setup Time Constraint เพราะมันขึ้นกับค่า
Setup Time ซึ่ งเป็ นตัวจากัดค่าสู งสุ ดของ tpd
• นอกจากนี้ค่า tpcq และ tsetup ถูกกาหนดโดยโรงงาน
• ถ้า tpd มีค่ามากเกินไป ค่า D2 จะไม่คงที่ในเวลาที่ R2 ต้องการสุ่ มค่า ดังนั้น
R2 ก็จะสุ่ มค่าที่ไม่ถกู ต้อง ทาให้วงจรทางานผิดพลาด
• เราสามารถแก้ปัญหาได้โดยการเพิ่ม Clock Period หรื อออกแบบวงจร
Combinational ใหม่ให้มีค่า Propagation Delay น้อยลง
3.5.2 System Timing : Hold Time Constraint
• ในกรณี ของ Hold Time Constraint นั้น
สัญญาณ D2 จะต้องมีค่าคงที่จนถึงเวลา Thold
หลังจากขอบขาขึ้นของ Clock
• จาก Timing Diagram สัญญาณ D2 อาจจะ
เปลี่ยนทันที่หลังจาก tccq+tcd หลังจากขอบขาขึ้น
ของสัญญาณ clock.
• ดังนั้นเราสามารถเขียนเป็ นสมการดังนี้
tccq+tcd>=thold
3.5.2 System Timing : Hold Time Constraint
• เนื่องจาก tccq และ thold เป็ นคุณสมบัติของ
Flip-Flop ซึ่ งผูอ้ อกแบบวงจรไม่สามารถควบคุมได้
ดังนั้นเขียนสมการใหม่เพื่อหาค่า
Contamination Delay จากวงจร Combinational ดังนี้
tcd>=thold-tccq
• เราเรี ยกสมการดังกล่าวว่า min-delay
constraint เนื่องจากมันกาหนดค่า Delay ต่าสุ ดของวงจร
Combinational
3.5.2 System Timing : Hold Time Constraint
• โดยทัว่ ไปเราจะสันนิษฐานว่าโลจิกเกทใดๆสามารถที่จะเชื่อมต่อกันได้
โดยไม่มีปัญหาเรื่ อง Timing
• ตัวอย่างเช่นเราคาดหวังว่าเราสามารถต่อ Flip-Flop 2 ตัวเข้าด้วยกัน
ได้ดงั รู ปโดยไม่มีปัญหา Hold Time
• ตัวอย่างนี้ tcd=0 เนื่องจากไม่มีวงจร Combinational ระหว่าง
Flip-Flop ทั้ง 2
• ดังนั้นเราสามารถเขียนสมการได้ดงั นี้
thold<=tccq
• ดังนั้น Flip-Flop ที่ดีจะต้องมี Hold Time สั้นกว่า
Contamination Delay
3.5.2 System Timing : Hold Time Constraint
• ปกติ Flip-Flop จะถูกออกแบบมาให้ thold=0 ดังนั้นถ้าไม่มีการกาหนดค่า
thold ก็ให้ใช้ thold=0 และไม่ตอ้ งพิจารณา Hold Time Constraint
• แต่ถา้ thold!=0 จะต้องแก้ปัญหาโดยการเพิ่ม Contamination Delay
ของวงจร Combinational ซึ่ งจาเป็ นจะต้องออกแบบวงจรใหม่
• ปัญหาของ Hold Time Constraint แตกต่างจาก Setup Time
Constraint ตรงที่เราไม่สามารถแก้ปัญหาได้โดยการเปลี่ยนค่า Clock
Period
• การออกแบบวงจรเพื่อแก้ปัญหา Hold Time Constraint อาจจะใช้เวลา
หลายเดือนและใช้เงินเป็ นจานวนมาก ดังนั้นมันจึงเป็ นปั ญหาที่สาคัญมาก
3.5.2 System Timing : รวมทุกอย่างเข้าด้วยกัน
• ปัญหา Setup และ Hold Time Constraint เป็ นตัวกาหนดค่า
Delay สูงสุ ดและต่าสุ ดของวงจร Combinational ที่อยูร่ ะหว่าง FlipFlop
• ในปั จจุบนั ค่า Minimum Delay จะถูกออกแบบให้มีค่าเท่ากับ 0 ดังนั้นเรา
สามารถที่จะต่อ Flip-Flop 2 ตัวเข้าด้วยกันได้อย่างไม่มีปัญหา
• จานวนเกทสู งสุ ดที่สามารถนามาต่อเรี ยงกันใน Critical Path ของวงจร
ความเร็ วสู งถูกกาหนดโดย Maximum Delay Constraint เนื่องจาก
วงจรที่ใช้ Clock ความถี่สูงจะทาให้ Clock Period สั้นลง
3.5.2 System Timing : รวมทุกอย่างเข้าด้วยกัน
• ตัวอย่างที่ 3.9 Timing Analysis
• กาหนดให้ Flip-Flop มีค่า clock-to-Q
contamination delay เท่ากับ 30ps
และ Propagation Delay เท่ากับ 80ps
และมี Setup Time เท่ากับ 50ps
และ Hold Time เท่ากับ 60ps
• โลจิกเกททุกตัวมีค่า Propagation Delay เท่ากับ 40ps และ
Contamination Delay เท่ากับ 25psd
• จงหาค่า Maximum Clock frequency และจะเกิด Hold Time
Violation หรื อไม่
3.5.2 System Timing : รวมทุกอย่างเข้าด้วยกัน
• รู ป (a) แสดง waveform เมื่อสัญญาณมีการ
เปลี่ยนแปลง
• สัญญาณ A ถึง D เป็ น Output ของ
Register ดังนั้นพวกมันจึงเปลี่ยนหลังจากขอบ
ขาขึ้นของ Clock ไม่นาน
• Critical Path จะเกิดขึ้นเมื่อ B=1, C=0,
D=0 และ A เปลี่ยนจาก 0 เป็ น 1
• ทาให้ N1 และ X’ เปลี่ยนจาก 0 เป็ น 1 และ
Y’ เปลี่ยนจาก 1 เป็ น 0 ดังแสดงในรู ป (b)
3.5.2 System Timing : รวมทุกอย่างเข้าด้วยกัน
• เส้นทางนี้มี Propagation Delay ของเกท
3 ตัว
• สัญญาณ Y’ จะต้องเปลี่ยนจาก 1 เป็ น 0 ก่อน
ขอบขาขึ้นของ Clock ลูกต่อไป
• ดังนั้น Minimum Cycle Time คานวณ
ได้จาก
Tc>=tpcq+3tpd+tsetup
=80+3*40+50=250ps
• ดังนั้น Maximum Clock Frequency
เท่ากับ 1/Tc = 4GHz
3.5.2 System Timing : รวมทุกอย่างเข้าด้วยกัน
• Short Path เกิดขึ้นเมื่อ A=0 และ C
เปลี่ยนจาก 0 เป็ น 1 ทาให้ X’ เปลี่ยนจาก 0
เป็ น 1 ดังแสดงในรู ป (c)
• ในกรณี ของ Short Path เราสมมติวา่
Output ของเกททุกตัวจะเปลี่ยนหลังจาก
Contamination Delay
• เนื่องจากเส้นทางนี้มีเกทเพียงตัวเดียวดังนั้น X’
จะเปลี่ยนหลังจาก
tccq+tcd=30+25=55ps
3.5.2 System Timing : รวมทุกอย่างเข้าด้วยกัน
• แต่เนื่องจาก Flip-Flop มีค่า Hold Time
เท่ากับ 60ps หมายความว่า X’ จะต้องมีค่าคงที่
เป็ นเวลา 60ps หลังจากขอบขาขึ้น เพื่อให้
Flip-Flop สุ่ มค่าที่ถกู ต้อง
• ในกรณี น้ ี X’=0 ที่ขอบขาขึ้นของ Clock ลูก
แรก ดังนั้นเราจึงต้องการให้ Flip-Flop ทาการ
สุ่ มค่า X=0
• เนื่องจาก X’ ไม่ได้มีค่าคงที่นานพอ ดังนั้นค่า X
ที่ถกู สุ่ มจึงไม่สามารถคาดการณ์ได้ ดังนั้นวงจรนี้
จึงเกิด Hold Time Violation
• และอาจเกิดความผิดพลาดขึ้นที่ความถี่ Clock
เท่าใดก็ได้
3.5.2 System Timing : รวมทุกอย่างเข้าด้วยกัน
• ตัวอย่างที่ 3.10 การแก้ Hold Time
Violation
• เราสามารถแก้ปัญหา Hold Time Violation
ของวงจรในตัวอย่างที่ 3.9 ได้โดยการใส่ Buffer
เข้าไปเพื่อทาให้ Short Path ช้าลงดังแสดงใน
รู ป
• กาหนดให้ Buffer มี Propagation Delay
เท่ากับเกทตัวอื่นๆ
• เราสามารถหาค่า Maximum Clock
Frequency และตรวจสอบว่าเกิด Hold
Time Violation ขึ้นหรื อไม่ดงั ต่อไปนี้
3.5.2 System Timing : รวมทุกอย่างเข้าด้วยกัน
• Timing Diagram แสดง Waveform
ของการเปลี่ยนแปลงของสัญญาณต่างๆในวงจร
• Critical Path จาก A ไปยัง Y ไม่มีการ
เปลี่ยนแปลงเนื่องจากเป็ นเส้นทางที่ไม่ได้ใส่
Buffer เพิ่มเข้าไป
• ดังนั้น Maximum Clock Frequency
ยังคงเป็ น 4 GHz เท่าเดิม
• แต่ Short Path ช้าลงเนื่องจาก
Contamination Delay ของ Buffer
3.5.2 System Timing : รวมทุกอย่างเข้าด้วยกัน
• ตอนนี้ X’ จะไม่เปลี่ยนแปลงจนกระทัง่
tccq+2tcd=30+2*25=80ps
• เวลาดังกล่าวเกิดหลังจาก 60ps ของ Hold
Time has elapsed ดังนั้นวงจรนี้จึงทางานได้
ถูกต้อง
• ตัวอย่างนี้ใช้ค่า Hold Time ที่ไม่ถกู ต้องเพื่อ
แสดงถึงปัญหาของ Hold Time
• Flip-Flop ส่ วนใหญ่จะถูกออกแบบให้
thold<tccq เพื่อหลีกเลี่ยงปัญหา Hold Time
3.5.2 System Timing : รวมทุกอย่างเข้าด้วยกัน
• แต่ใน Microprocessor หลายตัวซึ่ งรวมถึง Pentium 4 จะใช้อุปกรณ์
ที่เรี ยกว่า Pulsed Latch แทนการใช้ Flip-Flop
• Pulsed Latch ทางานคล้ายกับ Flip-Flop แต่มี Clock-To-Q ที่ส้ นั
และมีค่า Hold Time ที่ยาว
• โดยปกติเราสามารถแก้ปัญหาได้โดยการเพิม่ Flip-Flop
• แต่ส่วนใหญ่แล้วการแก้ปัญหา Hold Time จะทาให้ Critical Path ช้า
ลงซึ่ งจะทาให้ Maximum Clock Frequency ลดลงเช่นกัน
3.5.3 Clock Skew
• ในการวิเคราะห์ก่อนหน้านี้ เราสมมติฐานว่าสัญญาณ Clock มาถึง Register
ทุกตัวพร้อมกัน แต่ในทางปฏิบตั ิ Register แต่ละตัวจะได้รับสัญญาณ Clock
ไม่พร้อมกัน
• ตัวอย่างเช่นสายสัญญาณ Clock ที่ต่อกับ Register
แต่ละตัวยาวไม่เท่ากันทาให้สัญญาณ Clock เกิดการ Delay ที่ไม่เท่ากัน
• การที่สัญญาณ Clock ถูกจ่ายให้กบั เกทก่อนที่จะจ่ายให้กบั Flip-Flop ดังใน
หัวข้อที่ 3.5.2 ก็ทาให้เกิดการ Delay ได้ ดังนั้นถ้า Flip-Flop บางตัวมี
การต่อเกทตรงขา Clock และบางตัวไม่ได้ต่อเกท ก็จะทาให้เกิดการ Delay
ไม่เท่ากันได้
• เราเรี ยกการเหตุการณ์น้ ี วา่ Clock Skew
3.5.3 Clock Skew
• จากรู ปตัวอย่างจะเห็นว่า Clk2 มาก่อน Clk1 เนื่องจากสายของสัญญาณ
Clock ยาวไม่เท่ากัน
• ถ้ามีการออกแบบสายของ Clk1 ใหม่กอ็ าจจะทาให้ Clk1 มาถึงก่อน Clk2
ได้
• ในการวิเคราะห์ Timing เราจะพิจารณากรณี ที่แย่ที่สุด เพื่อรับประกันว่าวงจร
ยังคงทางานได้ในกรณี ที่แย่ที่สุด
3.5.3 Clock Skew
• รู ปด้านบนเป็ น Timing Diagram ของวงจร Sequential ที่รวม
Clock Skew เข้าไปด้วย
• เส้นทึบแสดง Clock ที่ชา้ ที่สุดที่อาจจะมาถึง Register ตัวใดก็ได้
• เส้นบางแสดง Clock ที่อาจจะมาถึง Register ณ เวลาใดก็ได้ในช่วงเวลา
tskew
3.5.3 Clock Skew
• เริ่ มจากพิจารณา Setup Time Constraint
• ในกรณี ที่แย่ที่สุด R1 ได้รับ Clock ลูกที่ชา้ ที่สุด
กาหนดให้เป็ น Clk1 แต่ R2 ได้รับ Clock ลูก
ที่เร็ วที่สุด กาหนดให้เป็ น Clk2
• ทาให้เหลือเวลาน้อยที่สุดที่ขอ้ มูลสามารถที่จะจาก
R1 ไปยัง R2
• ข้อมูลส่ งผ่านจาก R1 ไปยังวงจร Combinational และต้องถึง R2 ก่อน
เวลา Setup
3.5.3 Clock Skew
• ดังนั้นจึงสรุ ปได้วา่
Tc>=tpcq+tpd+tsetup+tskew
tpd<=Tc-(tpcq+tsetup+tskew)
3.5.3 Clock Skew
• จากนั้นพิจารณา Hold Time Constraint
• ในกรณี ที่แย่ที่สุดคือ R1 ได้รับ Clock ลูกที่เร็ วที่
สุ ด แต่ R2 ได้รับลูกที่ชา้ ที่สุด
• ข้อมูลที่ส่งผ่าน Register และวงจร
Combinational จะต้องมาถึง Register
หลังจากเวลา Hold Time ของ Clock ลูกที่
ช้าที่สุด
• เราสามารถเขียนเป็ นสมการได้ดงั นี้
tccq+tcd>=thold+tskew
tcd>=thold+tskew-tccq
3.5.3 Clock Skew
• จะเห็นได้วา่ Clock Skew จะทาให้ระยะเวลาของ Setup Time และ
Hold Time เพิ่มขึ้น
• ระยะเวลา Setup Time ที่เพิ่มขึ้นจะทาให้เวลาการทางานของวงจร
Combinational สั้นลง
• ระยะเวลา Hold Time ที่เพิม่ ขึ้นจะทาให้ค่า Delay ต่าสุ ดของวงจร
Combinational เพิ่มขึ้น
• ถึงแม้วา่ ค่า thold ของ Flip-Flop ที่เลือกใช้มีค่าเท่ากับ 0 ก็ตาม แต่ถา้
tskew>tccq อาจจะทาให้เกิดปั ญหาเวลาเอา Flip-Flop 2 ตัวมาต่อเข้าด้วยกัน
ได้
• เพื่อไม่เกิดปั ญหามาเกินไป ผูอ้ อกแบบจะต้องป้ องกันไม่ให้ค่า Clock Skew
มากเกินไป
3.5.3 Clock Skew
• ตัวอย่างที่ 3.11 จากวงจรในตัวอย่างที่ 3.9 จง
หาค่าความถี่สูงสุ ด และตรวจสอบว่าเกิด Hold
Time Violation หรื อไม่ กาหนดให้ค่า
Clock Skew เท่ากับ 50ps
• Clock Skew ไม่ทาให้ Critical Path
เปลี่ยน แต่จะทาให้ Setup Time เพิ่มขึ้น ดังนั้น
Tc>=tpcq+3tpd+tsetup+tskew
= 80+3*40+50+50=300ps
• ดังนั้นความถี่สูงสุ ดคือ fc=1/Tc=3.33 GHz
3.5.3 Clock Skew
• Clock Skew จะทาให้ค่า Hold Time
เพิ่มขึ้น เท่ากับ 60+50=110ps
• Clock Skew ไม่ทาให้ Critical Path
เปลี่ยน แต่จะทาให้ Setup Time เพิ่มขึ้น ดังนั้น
Tc>=tpcq+3tpd+tsetup+tskew
= 80+3*40+50+50=300ps
• ดังนั้นความถี่สูงสุ ดคือ fc=1/Tc=3.33 GHz
• Short Path ยังคงมีค่าเท่าเดิมคือ 55ps
• ดังนั้นค่า Hold Time เพิ่มขึ้นเท่ากับ 60+500 = 110ps ซึ่ งมีค่า
มากกว่า 55ps มาก ดังนั้นวงจรจึงมีปัญหาเรื่ อง Hold Time Violation
3.5.4 Metastability
• เมื่อมีการติดต่อกับผูใ้ ช้ มันไม่สามารถรับประกันได้สัญญาณ
Input ของวงจร Sequential จะมีค่าคงที่ที่ช่วงเวลา
Aperture Time
• จากวงจรตัวอย่าง เมื่อไม่มีการกดปุ่ ม D=0 และเมื่อกดปุ่ ม
D=1
• เนื่องจากผูใ้ ช้อาจจะกดปุ่ มที่เวลาใดก็ได้ ดังนั้นสถานการณ์ที่
เป็ นไปได้ 3 อย่างคือ
• Case I ผูใ้ ช้กดปุ่ มก่อนขอบขาขึ้น ดังนั้น Q=1
• Case II ผูใ้ ช้กดปุ่ มหลังจากขอบขาขึ้น ดังนั้น Q=0
• Case III ผูใ้ ช้กดปุ่ มระหว่าง tsetup ถึง thold ทาให้ค่า Q
ไม่แน่นอน
3.5.4 Metastability
• Metastในทางปฏิบตั ิเมื่อ Flip-Flop ทาการสุ่ มสัญญาณ Input ที่มีการ
เปลี่ยนแปลงค่าระหว่างเวลา Aperture Time จะทาให้ Q มีแรงดัน
ระหว่าง 0 และ VDD ซึ่ งอยูใ่ นช่วง Forbidden Zone อยูช่ วั่ ขณะ
• เราเรี ยกสถานะของ Q แบบนี้วา่ Metastability State
• และ Q จะเปลี่ยนเป็ นโลจิก 0 หรื อ 1 (Stable State) ในที่สุด
• ระยะเวลาที่ Q ใช้เปลี่ยนเป็ น Stable State เรี ยกว่า Resolution
Time
3.5.4 Metastability
• Resolution Time
• ถ้า Input ของ Flip-Flop มีการเปลี่ยนค่า ณ เวลาใดก็ได้ระหว่าง Clock
Cycle จะทาให้ Resolution Time (tres) มีค่าไม่แน่นอน
• ถ้า Input เปลี่ยนภายนอกเวลา Aperture Time จะทาให้ tres=tpcq
• แต่ถา้ ภายในเวลา Aperture Time จะทาให้ tres ใช้เวลานานมากขึ้นมาก
• จากทฤษฎีและการทดลองแสดงให้เห็นว่าค่าความน่าจะเป็ นที่ tres จะมีค่ามากกว่า
เวลา t จะลดลงแบบ Exponential ตามเวลา t
P(tres>t) = T0/Tc e-t/t
โดยที่ Tc เป็ น Clock Period และ T0 และ t เป็ นคุณสมบัติของ FlipFlop
• สมการนี้จะใช้ได้กต็ ่อเมื่อ t มีค่ามากกว่า tpcq มากๆ
3.5.4 Metastability
• จากสมการจะเห็นได้วา่ ค่า T0/Tc เป็ นตัวกาหนดค่าความน่าจะเป็ นที่ Input จะ
เปลี่ยนค่าภายในเวลา Aperture Time
• ค่าความน่าจะเป็ นนี้จะลดลงถ้า Clok Period Tc เพิ่มขึ้น
• t เป็ นค่า Time Constant ใช้กาหนดความเร็ วที่ Flip-Flop จะออกจาก
Metastability State
• ค่าของ t ขึ้นกับค่า Delay ของ Gate ที่อยูใ่ น Flip-Flop
3.5.4 Metastability
• สรุ ปคือถ้า Input ขอวงจร Bistable อย่างเช่น Flip-Flop มีการ
เปลี่ยนแปลงในช่วง Aperture Time จะทาให้ Output อยูใ่ นสถานะ
Metastabilit State เป็ นเวลานาน ก่อนที่จะกลับไปเป็ น Stable State
• เราไม่สามารถบอกค่าสู งสุ ดของ tres ว่าเป็ นเท่าใด
• แต่ค่าความน่าจะเป็ นที่จะเกิด tres มีค่าสู ง จะลดลงแบบ Exponential
• ดังนั้นถ้าเรารอจนนานกว่าเวลา tpcq ก็มีความเป็ นไปได้สูงที่ Output ของ
Flip-Flop จะเข้าสู่ Stable State
3.5.5 Synchronizers
• การรับสัญญาณ Input จากภายนอกเช่นผูใ้ ช้ เป็ นสิ่ งที่หลีกเลี่ยงไม่ได้ และ
สัญญาณเหล่านี้จะเป็ นสัญญาณแบบ Asynchronous เสมอ
• ถ้าวงจร Sequential ไม่สามารถจัดการกับสัญญาณเหล่านี้อย่างถูกต้องจะทา
ให้แรงดันของสัญญาณภายในวงจรอยูใ่ นสถานะ Metastability State
และทาให้การทางานของวงจรผิดพลาดได้
• ผูอ้ อกแบบวงจรจะต้องออกแบบวงจรให้มีความเป็ นไปได้นอ้ ยที่สุดที่วงจรจะเข้าสู่
สถานะ Metastability State เมื่อวงจรได้รับสัญญาณ Input แบบ
Asynchronous จากภายนอก
• การลดค่าความเป็ นไปได้จะขึ้นกับลักษณะของการนาไปใช้งาน เช่นผูใ้ ช้สามารถ
ยอมรับได้ถา้ โทรศัพท์มือถือทางานผิดพลาด 1 ครั้งใน 10 ปี เพราะปกติผใู้ ช้จะ
ปิ ดโทรศัพท์และเปิ ดใหม่ถา้ โทรศัพท์มีปัญหา
3.5.5 Synchronizers
• แต่สาหรับเครื่ องมือแพทย์ซ่ ึ งมีความสาคัญมากต่อชีวติ มนุษย์ เราอาจจะยอมรับให้
มีโอกาสที่จะเกิดความผิดพลาด 1 ครั้งที่เวลา 1010 ปี
• เพื่อป้ องกันไม่ให้วงจรทางานผิดพลาด จะต้องป้ อน Input แบบ
Asynchronous ทุกสัญญาณผ่านวงจร Synchronizer เพื่อให้สัญญาณ
มีโลจิกที่ถกู ต้อง
3.5.5 Synchronizers
• วงจร Synchronizer มีสัญญาณ Input อยู่ 2 สัญญาณคือ สัญญาณ
Input D ซึ่ งเป็ นสัญญาณแบบ Asynchronous และ Clock
• วงจร Synchronizer จะสร้างสัญญาณ Output Q ที่มีโลจิกที่ถกู ต้อง
ภายในระยะเวลาที่จากัด
• ถ้า D มีค่าคงที่ในระหว่าง Aperture Time จะทาให้ Q มีโลจิกตรงกับ
โลจิกของ D
• แต่ถา้ D มีค่าไม่คงที่ในระหว่าง Aperture Time โลจิกของ Q อาจจะ
เป็ น 0 หรื อ 1 ก็ได้
3.5.5 Synchronizers
• เราสามารถสร้างวงจร Synchronizer แบบ
ง่ายๆโดยใช้ Flip-Flop 2 ตัว
• F1 จะสุ่ ม D ตอนขอบขาขึ้นของ Clk
• ถ้า D มีค่าไม่คงที่จะทาให้ D2 มีสถานะ
Metastability State ชัว่ ขณะ
• ถ้า Clock Period นานพอ จะทาให้มีความ
เป็ นไปได้สูงที่ D2 จะมีสถานะ Stable
State ก่อนจบ Clock Period
• จากนั้น F2 ก็จะสุ่ ม D2 ที่มีสถานะ Stable ทาให้โลจิกของ Q คงที่
3.5.5 Synchronizers
• ถ้า Q มีสถานะ Metastability State แสดงว่าวงจร Synchronizer
ทางานผิดพลาด
• วงจรจะทางานผิดพลาดได้ในกรณี ที่ D2 ไม่ได้มีสถานะคงที่ ก่อนเวลา Setup
ของ F2 นัน่ คือค่า tres>Tc-tsetup
• เราสามารถคานวณหาความเป็ นไปได้ที่วงจรทางานผิดพลาดได้จาก
P(failure) = T0/Tc e-(Tc-tsetup)/t
• สมการนี้ใช้คานวณหาค่าความเป็ นไปได้ที่จะทางานผิดพลาดในกรณี ที่ D มีการ
เปลี่ยนค่าเพียงครั้งเดียว
• แต่ถา้ D มีการเปลี่ยนค่า N ครั้งต่อวินาที ความน่าจะเป็ นที่วงจรจะทางาน
ผิดพลาดใน 1 วินาทีคือ
P(failure)/sec = N*T0/Tc e-(Tc-tsetup)/t
3.5.5 Synchronizers
• ความน่าเชื่อถือ (Reliability) ของวงจรวัดจากค่า Mean Time
between failure (MTBF)
MTBF = 1/P(failure)/sec = T0*eTc-tsetup/t/(N*T0)
• สมการแสดงให้เห็นว่าค่า MTBF เพิ่มขึ้นแบบ Exponential เมื่อเราเพิ่มค่า
Tc
3.5.5 Synchronizers
• ตัวอย่างที่ 3.13 วงจร Synchronizer สาหรับวงจร FSM
• จากตัวอย่างวงจรควบคุมไฟจราจร วงจรจะได้รับสัญญาณ Input แบบ
Asynchronous จาก Sensor ที่อยูบ่ นถนน
• ถ้าวงจร Synchronizer ถูกใส่ เข้าไปเพื่อให้วงจรควบคุมไฟจราจรทางานได้
อย่างถูกต้อง
• สมมติให้สัญญาณ Input ถูกป้ อนให้วงจรเป็ นจานวน 0.2 ครั้งต่อวินาที และ
Flip-Flop ของวงจรควบคุมไฟจราจรมีคุณสมบัติดงั ต่อไปนี้ t=200ps,
T0=150ps และ tsetup=500ps จงคานวณหา Clock Period ของ
วงจร Synchronizer เพื่อให้ค่า MTBF มีค่าเกิน 1 ปี
3.5.5 Synchronizers
• เนื่องจาก 1 ปี มีค่าประมาณ p*107 วินาที ดังนั้น
Tc 5001012
12
Tc e 20010
7
p 10 
0.2 150 1012
• เราสามารถคานวณหาค่าของ Tc ได้โดยใช้วิธีทาง Numerical ซึ่ งจะได้
ค่าประมาณ Tc=3.036 ns
3.6 Parallelism
• เราสามารถวัดความเร็ วของวงจรดิจิตอลได้จากค่า Latency และ
Throughput ของ Token
• Token หมายถึงกลุ่มของ Input ที่ถกู ป้ อนให้วงจรเพื่อให้ได้ Output
ออกมา
• Latency หมายถึงระยะเวลาที่ Token 1 อันถูกส่ งผ่านวงจรจนได้
Output ออกมา
• Throughput หมายถึงปริ มาณ Token ทั้งหมดใน 1 หน่วยเวลา
3.6 Parallelism
• ตัวอย่างที่ 3.14 Throughput และ Latency ของร้านคุกกี้ การทาคุกกี้
ประกอบด้วย 2 ขั้นตอนคือ การคลึงคุกกี้ซ่ ึ งใช้เวลา 5 นาที จากนั้นจึงวางคุกกี้ใน
ถาด และนาไปอบคุกกี้ซ่ ึ งใช้เวลา 15 นาที เนื่องจากเจ้าของร้านคุกกี้มีถาดและเตา
อบเพียงอย่างละ 1 ดังนั้นเขาจึงต้องรอให้อบคุกกี้ได้ 1 ถาดแล้วจึงสามารถทา
คุกกี้ถาดต่อไป จงคานวณ Latency และ Throughput ของการทาคุกกี้
• ในตัวอย่างนี้ Token คือคุกกี้ 1 ถาด Latency คือระยะเวลาในการทาคุกกี้
1 ถาด ซึ่ งคือ 1/3 ชัว่ โมง
• Throughput ของการทาคุกกี้คือจานวนถาดคุกกี้ที่ทาได้ใน 1 ชัว่ โมง ซึ่ งจะ
ได้ 3 ถาดต่อชัว่ โมง
3.6 Parallelism
• เราสามารถเพิม่ Throughput ได้โดยการประมวลผล Token หลายๆอัน
พร้อมๆกัน
• เราเรี ยกการทางานแบบนี้วา่ การทางานแบบขนาน (parallelism) ซึ่ งสามารถ
ทาได้ 2 วิธีคือ
1. Spatial Parallelism เป็ นการใส่ วงจรหลายๆวงจรเข้าไปเพื่อให้สามารถ
ประมวลผล Token หลายๆอันได้พร้อมกันในเวลาเดียวกัน
2. Temporal Parallelism เป็ นการแบ่ง Token ออกเป็ นหลายๆ ส่ วน
(Stage) คล้ายกับสายการผลิต ยกตัวอย่างเช่นแบ่งการประมวลผลออกเป็ น 6
ส่ วน ถึงแม้วา่ Token ทุกอันจะต้องถูกประมวลผลทั้ง 6 ส่ วนแต่เนื่องจากแต่
ละส่ วนการประมวลผลสามารถทางานได้พร้อมกัน ดังนั้นเราสามารถประมวผล
Token ได้พร้อมกัน 6 อัน
3.6 Parallelism
• ตัวอย่างที่ 3.15 การทาคุกกี้แบบขนาน
• ถ้าเจ้าของร้านต้องการทาคุกกี้ให้เร็ วขึ้น เข้าอาจจะเลือกได้ 2 วิธีคือ
1. วิธี Spatial Parallelism เขาขอให้เพื่อนที่มีถาดและเตาอบมาช่วยทาคุกกี้
2. วิธี Temporal Parallelism เขาซื้ อถาดเพิ่มอีก 1 ถาด ดังนั้นในระหว่าง
ที่รออบคุกกี้ เขาสามารถที่จะคลึงคุกกี้ของถาดต่อไปได้ทนั ที
• ค่า Latency และ Throughput ของวิธี Spatial Parallelism,
Temporal Parallelism และใช้ท้ งั 2 วิธีพร้อมกัน
3.6 Parallelism
• Latency คือระยะเวลาที่ใช้อบคุกกี้ 1 ถาด ซึ่ งไม่วา่ จะใช้วธิ ี แบบ Spatial
หรื อ Temporal หรื อทั้ง 2 วิธีพร้อมกัน ค่า Latency ของการทาคุกกี้ 1
ถาดคือ 1/3 ชัว่ โมง
• Throughput คือจานวนถาดคุกกี้ที่ทาได้ใน 1 ชัว่ โมง ถ้าเจ้าของร้านเลือกวิธี
Spatial Parallelism ซึ่ งเขาและเพื่อนช่วยกันทาคุกกี้ ดังนั้น
Throughput ของวิธีน้ ีคือ 6 ถาดต่อชัว่ โมง
3.6 Parallelism
• ถ้าใช้วิธี Temporal Parallelism เจ้าของร้านจะใส่ คุกกี้ถาดใหม่ในเตาอบ
ทุกๆ 15 นาที ดังนั้นใน 1 ชัว่ โมงเขาจะอบคุกกี้ได้ 4 ถาด
• ถ้าเขาและเพื่อนใช้วิธี Spatial และ Temporal Parallelism พร้อมกัน
เขาจะทาคุกกี้ได้ 8 ถาดต่อชัว่ โมง
3.6 Parallelism
• จงพิจารณางานที่มีค่า Latency เท่ากับ L ในระบบที่ไม่ได้ทางานแบบขนาน ค่า
Throughput เท่ากับ 1/L
• ในระบบที่ทางานแบบ Spatial Parallelism ที่มีวงจรทั้งหมด N วงจร
ทางานพร้อมกัน จะได้ค่า Throughput เท่ากับ N/L
• ในระบบที่ทางานแบบ Temporal Parallelism ที่วงจรสามารถแบ่ง
ออกเป็ นทั้งหมด N ส่ วนโดยที่แต่ละส่ วนใช้เวลาในการทางานเท่ากัน ค่า
Throughput จะเท่ากับ N/L และใช้เพียงแค่วงจรเดียวเท่านั้น
• แต่เนื่องจากในความเป็ นจริ งมันยากที่จะแบ่งวงจรออกเป็ นหลายๆส่ วนทีใ่ ช้เวลาใน
การทางานเท่ากัน และส่ วนที่ทางานนานที่สุดใช้เวลาเท่ากับ L1 ดังนั้นค่า
Throughput เท่ากับ 1/L1
3.6 Parallelism
• ในทางปฏิบตั ิเรานิยมใช้การทางานแบบ Temporal Parallelism มากกว่า
เนื่องจากสามารถเพิ่มค่า Throughput ให้มากขึ้นโดยใช้วงจรเพียงชุดเดียว
เท่านั้น
• การออกแบบวงจร Sequential ที่ทางานแบบ Temporal
Parallelism สามารถทาได้โดยการแบ่งวงจร Combinational ออกเป็ น
N ส่ วน
• แต่ละส่ วนจะเชื่อมต่อกันผ่าน Register
• เนื่องจากแต่ละส่ วนมีวงจรขนาดเล็กลง ดังนั้นค่า tpd ของแต่ละวงจรจึงน้อยลงทา
ให้ใช้สัญญาณ Clock ที่มีความถี่มากขึ้นได้
• Register ทาหน้าที่ป้องกันไม่ให้ Token ของวงจร Combinational
ไปรบกวน Token ของวงจร Combinational ถัดไป
3.6 Parallelism
• วงจร Sequential ตัวอย่าง
เป็ นวงจรที่ไม่ได้ออกแบบให้ทางาน
แบบ Parallelism
• โดยประกอบด้วยวงจร
Combinational ทั้งหมด 4 วงจร Critical คือเส้นทางที่ผา่ นวงจรที่ 2,
3, และ 4 สมมติวา่ Register ที่ใช้มีค่า tpcq=0.3ns และ
tsetup=0.2ns
• ดังนั้น Tc=0.3+3+2+4+0.2=9.5ns
• วงจรนี้มีค่า Latency=9.5ns
• มีค่า Throughput=1/9.5ns=105MHz
3.6 Parallelism
• ทาการดัดแปลงวงจรเดิมให้มีการ
ทางานแบบ Parallelism โดย
แบ่งวงจรออกเป็ น 2 ส่ วน ดังรู ป
• วงจรส่ วนแรกมีค่า
•
•
•
•
Tc=0.3+3+2+0.2=5.5ns
และวงจรส่ วนที่ 2 มีค่า Tc=0.3+4+0.2=4.5ns
เนื่องจาก Clock จะต้องช้าพอที่จะทาให้วงจรทุกส่ วนทางานได้ ดังนั้น Tc ของ
วงจร Sequential คือ 5.5ns
ค่า Latency เท่ากับ 2 Clock หรื อ 11ns
และ Throughput เท่ากับ 1/5.5ns = 182MHz
3.6 Parallelism
• ถ้าแบ่งวงจรเดิมออกเป็ น 3 ส่ วน
ดังรู ป
• Tc ของวงจร Sequential
เท่ากับ 4.5ns
• Latency เท่ากับ 3 Clock หรื อ 13.5ns
• Throughput=1/4.5ns = 222MHz
• จากตัวอย่างทั้ง 2 จะเห็นว่าการแบ่งวงจร Sequential ออกเป็ นหลายๆส่ วนจะ
ทาให้ค่า Latency เพิม่ ขึ้น แต่จะทาให้ค่า Throughput เพิม่ ขึ้น
3.6 Parallelism
• ในทางปฏิบตั ิเราไม่สามารถแบ่งวงจร Sequential ออกเป็ นหลายๆส่ วนได้
เสมอไป
• เช่นถ้าวงจร Sequential มีการทางานที่ข้ ึนกับ Output ของการทางานก่อน
หน้านี้ แทนที่จะขึ้นกับ Output แต่ละส่ วนของการทางานปั จจุบนั
• ตัวอย่างเช่นถ้าเจ้าของร้านไม่สามารถทาคุกกี้แบบขนานได้ ถ้าเขาต้องการชิม
รสชาติของคุกกี้ที่อบเสร็ จแล้ว เพื่อจะได้ปรับปรุ งรสชาติของคุกกี้ในครั้งถัดไป