1.28k likes | 1.43k Views
Digital System Engineering. บทที่ 3. Sequential Logic Design. สัญญาณ Output ของ Sequential Logic จะขึ้นกับข้อมูลในปัจจุบันและอดีตที่ป้อนให้กับวงจร ดังนั้น Sequential Logic จึงเป็นวงจรที่มีความจำ Sequential Logic อาจจะนำเอาข้อมูลในอดีตทั้งหมดมาใช้ร่วมกัน
E N D
Digital System Engineering บทที่ 3. Sequential Logic Design
สัญญาณ Output ของ Sequential Logic จะขึ้นกับข้อมูลในปัจจุบันและอดีตที่ป้อนให้กับวงจร • ดังนั้น Sequential Logic จึงเป็นวงจรที่มีความจำ • Sequential Logic อาจจะนำเอาข้อมูลในอดีตทั้งหมดมาใช้ร่วมกัน • หรืออาจจะแบ่งข้อมูลในอดีตออกเป็นข้อมูลขนาดเล็กหลายๆข้อมูล ที่เรียกว่า State • State ในวงจรดิจิตอลคือเซ็ทของข้อมูล เรียกว่า State Variable ซึ่งเอาไว้ใช้กำหนดค่าของสัญญาณ Output ในอนาคต
3.2 LATCHES และ FLIP-FLOPS • อุปกรณ์พื้นฐานของหน่วยความจำคือ 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) วงจร Cross-Coupled Inverter
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
3.3 Synchronous Logic Design3.3.1 วงจรที่มีปัญหาบางวงจร • Astable Circuit โลจิกของ X, Y, Z มีค่าไม่เสถียร (Unstable) หรือเราเรียกว่า Astable
3.3 Synchronous Logic Design3.3.1 วงจรที่มีปัญหาบางวงจร • ตัวอย่างการเกิด Race Condition • ตัวอย่างเป็นการออกแบบวงจร D Flip-Flop แบบใหม่ โดยกำหนดให้มี Truth Table ดังแสดงในรูป • กำหนดให้ตอนเริ่มต้น A, B และ Output = 1 • จากนั้นจึงเปลี่ยน B ให้เป็น 0 จากTruth Table ค่า Q จะต้องคงค่าสถานะเดิมคือ 1 ไว้
3.3 Synchronous Logic Design3.3.1 วงจรที่มีปัญหาบางวงจร • ตัวอย่างการเกิด Race Condition • เมื่อ 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 Design3.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 • เราสามารถแก้ปัญหาของการเกิด Racing ในวงจร Sequential ได้โดยการใส่ Register เข้าไปใน Cyclic Path • เริ่มต้นกำหนดให้ Clkของ Register เป็น 0 ดังนั้นมันจึงกั้นไม่ให้ Q ย้อนกลับไปที่ Input • ดังนั้นเมื่อ B เปลี่ยนเป็น 0 แต่ /B ยังคงเป็น 0 อยู่ ถึงแม้ว่า Q จะเท่ากับ 0 ดังได้อธิบายไปก่อนหน้านี้
3.3.2 Synchronous Sequential Circuit • แต่ 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 วินาทีวงควบคุมจะตรวจสอบ SensorTAและ 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 แบบคือ • การเข้ารหัสเลขฐาน 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 • ตาราง State Transition และ Output ของรหัสเลขฐาน 2 แสดงได้ดังตาราง และสามารถเขียนเป็นสมการบูลีนได้ดังนี้ S’1 = /S1S0 S’0 = /S1/S0 Y = /S1/S0
3.4.2 State Encoding • ตาราง 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