1 / 47

Digital System Engineering

Digital System Engineering. บทที่ 3. Sequential Logic Design. สัญญาณ Output ของ Sequential Logic จะขึ้นกับข้อมูลในปัจจุบันและอดีตที่ป้อนให้กับวงจร ดังนั้น Sequential Logic จึงเป็นวงจรที่มีความจำ Sequential Logic อาจจะนำเอาข้อมูลในอดีตทั้งหมดมาใช้ร่วมกัน

morey
Télécharger la présentation

Digital System Engineering

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Digital System Engineering บทที่ 3. Sequential Logic Design

  2. สัญญาณ Output ของ Sequential Logic จะขึ้นกับข้อมูลในปัจจุบันและอดีตที่ป้อนให้กับวงจร • ดังนั้น Sequential Logic จึงเป็นวงจรที่มีความจำ • Sequential Logic อาจจะนำเอาข้อมูลในอดีตทั้งหมดมาใช้ร่วมกัน • หรืออาจจะแบ่งข้อมูลในอดีตออกเป็นข้อมูลขนาดเล็กหลายๆข้อมูล ที่เรียกว่า State • State ในวงจรดิจิตอลคือเซ็ทของข้อมูล เรียกว่า State Variable ซึ่งเอาไว้ใช้กำหนดค่าของสัญญาณ Output ในอนาคต

  3. 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

  4. 3.2 LATCHES และ FLIP-FLOPS • อุปกรณ์ที่มี N Stable State จะมีข่าวสารทั้งหมด log2N bits • เราสามารถใช้ Bistableในการเก็บข้อมูลแต่ละบิท • ข้อมูลทุกอย่างจะถูกเก็บไว้ใน Q ถ้าในอดีต Q=0 มันจะมีค่าเป็น 0 ไปตลอด หรือถ้ามันเคยมีค่าเป็น 1 มันจะมีค่าเป็น 1 ไปตลอด • ส่วน /Q จะมีค่าตรงกันข้ามกับ Q เสมอ ดังนั้น /Q จึงไม่ได้เก็บข่าวสารใดๆ

  5. 3.2 LATCHES และ FLIP-FLOPS • ปัญหาของการใช้วงจร Cross-Coupled Inverter คือตอนที่จ่ายไฟให้กับวงจร เราไม่สามารถทำนายได้ว่าสถานะของ Q และ /Q จะเป็นเช่นไร มันจะเปลี่ยนค่าไปเรื่อยๆ เมื่อมีการเปิดเครื่องครั้งต่อไป • ถึงแม้ว่า Cross-Coupled Inverter จะสามารถเก็บบิทของข่าวสารได้ แต่เนื่องจากมันไม่มีสัญญาณ Input ทำให้ผู้ใช้ไม่สามารถป้อนข่าวสารที่ต้องการเก็บเข้าไปในวงจรได้

  6. 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

  7. 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

  8. 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

  9. 3.2.2 D Latch • ปัญหาของ RS Latch คือเราไม่สามารถควบคุมว่าจะให้ Q ของ RS Latch เปลี่ยนค่าเมื่อไหร่ • D Latch ถูกออกแบบมาให้สามารถเปลี่ยนค่าของ Q ได้เฉพาะตอนที่ Clk = 1 และค่าของ Q = D • ถ้า Clk=0 ค่าของ Q จะคงโลจิกเดิมไว้

  10. 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

  11. 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

  12. 3.2.4 Register • N bit Register เป็นการนำเอา D Flip-Flop จำนวน N ตัวมาต่อขา Clkร่วมกัน

  13. 3.2.5 Enable Flip-Flop • En=0 D Flip-Flop จะไม่สามารถ Latch ข้อมูลได้ • En=1 D Flip-Flop สามารถ Latch ข้อมูลได้

  14. 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

  15. Timing Diagram ของ D Latch และ D Flip-Flop

  16. 3.3 Synchronous Logic Design3.3.1 วงจรที่มีปัญหาบางวงจร • Astable Circuit โลจิกของ X, Y, Z มีค่าไม่เสถียร (Unstable) หรือเราเรียกว่า Astable

  17. 3.3 Synchronous Logic Design3.3.1 วงจรที่มีปัญหาบางวงจร • ตัวอย่างการเกิด Race Condition • ตัวอย่างเป็นการออกแบบวงจร D Flip-Flop แบบใหม่ โดยกำหนดให้มี Truth Table ดังแสดงในรูป • กำหนดให้ตอนเริ่มต้น A, B และ Output = 1 • จากนั้นจึงเปลี่ยน B ให้เป็น 0 จากTruth Table ค่า Q จะต้องคงค่าสถานะเดิมคือ 1 ไว้

  18. 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

  19. 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 ของแต่ละเส้นทางเปลี่ยนไป ดังนั้นการทำงานของวงจรจึงขึ้นกับอุณหภูมิด้วย

  20. 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 ที่ถูกต้องเสมอ

  21. 3.3.2 Synchronous Sequential Circuit • เราสามารถแก้ปัญหาของการเกิด Racing ในวงจร Sequential ได้โดยการใส่ Register เข้าไปใน Cyclic Path • เริ่มต้นกำหนดให้ Clkของ Register เป็น 0 ดังนั้นมันจึงกั้นไม่ให้ Q ย้อนกลับไปที่ Input • ดังนั้นเมื่อ B เปลี่ยนเป็น 0 แต่ /B ยังคงเป็น 0 อยู่ ถึงแม้ว่า Q จะเท่ากับ 0 ดังได้อธิบายไปก่อนหน้านี้

  22. 3.3.2 Synchronous Sequential Circuit • แต่ Output ของ Register ยังคงเป็น 1 อยู่ • และเมื่อ /B เปลี่ยนเป็น 1 จึงทำให้ N2=1 และทำให้ Q เปลี่ยนกลับเป็น 1 ซึ่งเป็นสถานะที่ถูกต้อง • จากนั้นจึงป้อน Clk = 1 เพื่อให้ Register ปล่อยให้ค่า Q ที่ถูกต้องย้อนกลับไปหา Input ได้

  23. 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

  24. 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

  25. 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 มีการเปลี่ยนแปลง

  26. 3.3.2 Synchronous Sequential Circuit • และเวลา Setup (tsetup) และ Hold (thold) คือเวลาที่สัญญาณ Input จะต้องคงที่เมื่อเปรียบเทียบกับเวลาที่จะต้องป้อนขอบขาขึ้นของสัญญาณ Clock

  27. 3.3.2 Synchronous Sequential Circuit • กฎของการออกแบบวงจร Synchronous Sequential คือ • วงจรจะต้องประกอบด้วย Register และวงจร Combinational • จะต้องมี Register อย่างน้อย 1 ตัว • Register ทุกตัวจะต้องใช้สัญญาณ Clock ตัวเดียวกัน • Cyclic Path ทุกเส้นทางจะต้องมี Register อย่างน้อย 1 ตัว • วงจร Sequential ที่ไม่ได้ทำงานแบบ Synchronous จะเรียกว่าวงจร Asynchronous Sequential

  28. 3.3.3 วงจร Sequential แบบ Synchronous และแบบ Asynchronous • วงจร Synchronous Sequential ออกแบบได้ง่ายกว่าวงจร Asynchronous Sequential • แต่วงจร Synchronous Sequential ยังมีความจำเป็นในบางกรณีเช่นในกรณีที่มีการสื่อสารระหว่างวงจร Sequential 2 วงจรที่ใช้ Clock คนละตัว หรือใช้ความถี่คนละความถี่เป็นต้น

  29. 3.4 Finite State Machines • วงจร Synchronous Sequential สามารถเขียนอยู่ในรูปของ Finite State Machine (FSM) ดังแสดงในรูป • FSM ประกอบด้วย • Register จำนวน k ตัวซึ่งทำให้มี State ทั้งหมด 2k state • Input จำนวน M ตัว • Output จำนวน N ตัว

  30. 3.4 Finite State Machines • สัญญาณ Clock • และบางวงจรอาจจะมีสัญญาณ Reset • FSM สามารถแบ่งออกเป็น 2 ชนิดคือ • Moore Machine สัญญาณ Output จะขึ้นกับค่า Current State เท่านั้น • Mealy Machine สัญญาณ Output จะขึ้นกับค่า Current State และสัญญาณ Input

  31. 3.4.1 ตัวอย่างการออกแบบ FSM • จงพิจารณาการออกแบบ FSM เพื่อควบคมไฟจราจร • ในการออกแบบวงจรควบคุมไฟจราจรมีการติดตั้ง Sensor TAบนถนน Academic และ TBบนถนน Bravado • Output ของ Sensor จะเป็น TRUE ถ้ามีรถบนถนน และ FALSE ถ้าไม่มีรถ • สัญญาณไฟจราจร LAและ LBโดยสามารถควบคุมให้มันเป็นไฟสีแดง เหลือง และเขียวได้

  32. 3.4.1 ตัวอย่างการออกแบบ FSM • วงจรควบคุมสัญญาณไฟจราจรสามารถเขียนเป็น Block Diagram ได้ดังรูป • โดยกำหนให้ • Clkแต่ละลูกห่างกัน 5 วินาที • ที่ขอบขาขึ้นของ Clkแต่ละลูก สีของสัญญาณไฟจราจร LAและ LBจะเปลี่ยนไปตามค่า TAและ TBที่วัดได้ • สัญญาณ Reset เอาไว้ใช้กำหนดค่าเริ่มต้นของวงจรควบคุม

  33. 3.4.1 ตัวอย่างการออกแบบ FSM • ทุกๆ 5 วินาทีวงควบคุมจะตรวจสอบ SensorTAและ TBและส่งสัญญาณไปควบคุมไฟจราจร LAและ LB โดยสามารถเขียน State Transition ได้ดังแสดงในรูป ซึ่งสามารถอธิบายได้ดังนี้ • เมื่อกดปุ่ม Reset จะให้ LAเขียวและ LBแดง (S0) และตราบใดที่ยังมีรถบนถนน Academic สัญญาณไฟจะไม่เปลี่ยน • แต่ถ้าไม่มีรถบนถนน Academic จะให้ LAเหลืองและ LBแดง (S1)5 วินาที • แล้วเปลี่ยนเป็น LAแดงและ LBเขียว (S2)

  34. 3.4.1 ตัวอย่างการออกแบบ FSM • จากนั้นถ้ามีรถบนถนน Bravado สัญญาณไฟจะไม่เปลี่ยน • แต่ถ้าไม่มีรถบนถนน Bravado จะให้ LAแดงและ LBเหลือง (S3)5 วินาที • จากนั้นจะให้ LAเขียวและ LBแดง (S1)

  35. 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

  36. 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

  37. 3.4.1 ตัวอย่างการออกแบบ FSM • ในทำนองเดียวกันเราสามารถสร้างตารางความสัมพันธ์ระหว่าง State และสัญญาณไฟจราจร LA และ LBได้ดังตารางที่ 3.5 • และเขียนสมการบูลีนได้ดังนี้ LA1=S1 LA0=/S1S0 LB1=/S1 LB0=S1S0

  38. 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

  39. 3.4.1 ตัวอย่างการออกแบบ FSM • จากนั้นจึงเขียนวงจรของ Next State จากสมการบูลีนของ S’1และ S’0

  40. 3.4.1 ตัวอย่างการออกแบบ FSM • สุดท้ายเขียนวงจรสร้างสัญญาณ Output จากสมการบูลีนของ LA1, LA0, LB1, LB0

  41. 3.4.1 ตัวอย่างการออกแบบ FSM • Timing Diagram ของวงจรควบคุมไฟจราจร

  42. 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

  43. 3.4.2 State Encoding • จะเห็นได้ว่าการเข้ารหัสแบบ One Hot จะใช้ Register มากกว่าการเข้ารหัสเลขฐาน 2 แต่ข้อดีของการเข้ารหัสแบบ One Hot คือการออกแบบวงจร Next State และ Output จะง่ายกว่าและใช้อุปกรณ์น้อยกว่าการเข้ารหัสเลขฐาน 2

  44. 3.4.3 Moore และ Mealy Machine • เนื่องจาก Output ของ Moore Machine จะขึ้นกับค่าของ Current State เท่านั้น ดังนั้นใน State Transition Diagram จึงเขียน Output ไว้ในวงกลมของ State • แต่เนื่องจาก Output ของ Mealy Machine จะขึ้นกับค่าของ Current State และ Input ดังนั้น Output จึงถูกเขียนไว้ตรงลูกศร

  45. 3.4.3 Moore และ Mealy Machine • ตัวอย่างการออกแบบวงจร Sequential แบบ Mealy Machine • หุ่นยนต์หอยทากตัวหนึ่งถูกออกแบบให้คลานอยู่บนเทปกระดาษจากซ้ายไปขวา โดยในทุกๆ 1 Clock หุ่นยนต์จะอ่านข้อมูล 0 หรือ1 ที่อยู่บนเทป • หุ่นยนต์จะยิ้มเมื่อข้อมูลที่อ่าน 4 bit สุดท้ายโดยอ่านจากซ้ายไปขวาเป็น 1101 • กำหนดให้ A เป็นข้อมูล Input ที่อ่านได้จากเทปกระดาษ • Y เป็น Output เพื่อสั่งให้หุ่นยนต์ยิ้ม มีค่าเป็น TRUE ถ้าต้องการให้ยิ้มและ FALSE ถ้าไม่ต้องการ

  46. 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

  47. 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

More Related