"การออกแบบวงจรเพื่อนำไปใช้งาน" นั่นเอง
ซึ่งในการออกแบบวงจรนั้นมีขั้นตอนเป็นดังนี้
1. ระบุคุณลักษณะให้ชัดเจนว่าต้องการให้วงจรเรานั้นทำงานอย่างไร
2.แปลงคุณลักษณะดังกล่าวให้อยู่ในรูปของ State Diagram
3.แปลงชื่อ State ให้กลายเป็น Binary Number
4.สร้าง State Table ขึ้นมา
5.เลือก Flip - Flop ขึ้นมาพร้อมกับสร้างตาราง Input ของ Flip - Flop ขึ้นมาด้วย
6.ทำการ Boolean function ระหว่าง Current State กับ Flip - Flop แต่ละตัว และก็ Boolean function ระหว่าง Current State กับ Output ด้วย
7.ทำการร่างวงจรขึ้นมา เป็นอันเสร็จสิ้น....
พูดอย่างนี้อาจจะงง งั้นลองมาดูตัวอย่างกันเถอะ ->>>>>>>
Case Study
"ต้องการวงจรที่ส่งสัญญาณ Pulse ที่เป็น Logic 1 เพียง 1 ลูกเมื่อสวิตซ์ถูกกด และจะไม่มีการให้ Pulse Logic 1 ออกมาอีกจนกว่าจะมีการปล่อยสวิตซ์และกดใหม่อีกครั้ง"
จากนั้นแปลงคุณสมบัตินี้ให้กลายเป็น State Diagram
State Diagram เป็นวิธีการอธิบายการทำงานของวงจร Sequential Logic ด้วยแผนผัง โดยหลักการเขียนจะมีดังนี้
วงกลม :: State
ส่วนบนภายในวงกลม :: ระบุชื่อที่อธิบาย State นั้นๆ
ส่วนล่างภายในวงกลม :: ระบุ Output ของ State นั้นๆ
ลูกศร :: การ Transition จาก State หนึ่งสู่ State หนึ่ง ซึ่งการ Transition จะเกิดขึ้นทุกๆ Clock
ตัวเลขบนลูกศร :: Logic ของ Input ที่ทำให้เกิด Transition นั้นๆ
--------------------------------------------------------------------------------------------------
เสริมเพิ่มเติมเกี่ยวกับ State Diagram ..
Moore And Mealy Machine
Moore :: ระบบจะรอรับ Input ที่ต้องการ แล้วให้ Output ออกมา จากนั้นโยนไปยัง State ตามเงื่อนไข
Mealy :: ระบบจะคง Output ไว้จนกว่าจะกด input ใหม่ จากนั้นมันจะย้าย State
ขอขอบคุณ Ref :: http://www.cpsk69.com/lecture/lecturefile/digital.htm
--------------------------------------------------------------------------------------------------
เมื่อสร้าง State Diagram เสร็จแล้ว จากนั้นเราก็ทำการ แทนเลข Binary ไปยังชื่อ State นั้น (คือเปลี่ยนจากชื่อ State ให้กลายเป็น Binary Number )
จากนั้น ทำการสร้าง State Table
หลักการเติมค่านั้น
Current State :: เปรียบเสมือน Input ทัวไปในแบบ Truth Table
Input คือ ตัวตัดสินว่าจะเกิดการย้าย State หรือไม่ (0 หรือ 1)
Next State :: เป็นการย้าย State จาก State เดิม ไปยัง State ถัดไป หรือคง State เดิม ขึ้นอยู่กับ Input
Output :: ก็เติมลงไปตามที่เราต้องการ โดยไม่เกี่ยวกับ Next State ทั้งสิ้น
และเมื่อเติมค่า State Table เรียบร้อยแล้วนั้น ก็ทำการเพิ่ม Flip-Flops ลงไปในตาราง
Assigning Flip-Flops To the Table
- กรณี D Type Flip-Flops
การ Assign ค่าของ D Type Flip-Flop นั้น จะเหมือนกับค่าของ Next State ทุกประการ
- กรณี JK Flip-Flops
การ Assign ค่าของ JK Flip-Flop นั้น จะอิงค่า Truth Table ของ JK Flip-Flop กับ Next State และ Current State ด้วย
ไม่ว่าจะใช้ D Type Flip-Flop หรือ JK Flip-Flop นั้น ทั้งสองมีสิ่งที่เหมือนกันอยู่นั่นก็คือ
- จำนวน Flip-Flop นั้นจะเท่ากับจำนวน Bit ของ Current State ไม่รวมกับ Input
- ค่าที่ Assign ใน Flip-Flop Input พิจารณาจากว่า Input อะไรจะทำให้เปลี่ยนจาก Current State ไปสู่ Next State ตามที่ถูก Assign มา
และเมื่อได้ State Table ที่สมบูรณ์แบบแล้ว จากนั้น เราจะทำการ Boolean Function ระหว่าง Current State กับ Flip-Flop Input ของแต่ละตัว
- กรณี D Type Flip-Flops
- กรณี JK Flip-Flops
เมื่อทำการ Boolean Function ระหว่าง Current State กับ Flip-Flop Input ของแต่ละตัวเสร็จแล้ว เราก็มา Boolean Function ระหว่าง Current State กับ Output ด้วย
และสุดท้าย ทำการร่าง Schematic ออกมา
- กรณี D Type Flip-Flops
- กรณี JK Flip-Flops
เป็นอันเสร็จสิ้น........
-------------------------------------------------------------------------------------------------------------
Class Work
โจทย์ "ออกแบบและสร้างวงจรนับขึ้นและลงเลข 0-3 แสดงบน 7-Segment โดยสามารถเลือก Set ได้ว่าจะนับขึ้นหรือลง"
เมื่อ Input X=0 วงจรจะนับขึ้น : 0,1,2,3,0,1,2,3,etc.
เมื่อ Input X=1 วงจรจะนับขึ้น : 0,3,2,1,0,3,2,1,etc.
โดยที่แต่ละ State จะมี OUTPUT 2 Bits
00 , 01 , 10 , 11
โดยที่แต่ละ State จะมี OUTPUT 2 Bits
00 , 01 , 10 , 11
----------------------------------------------------------------
ขั้นตอนคือ ทำการแปลงโจทย์ ให้เป็น State Diagram
ทำการสร้าง State Table
เลือกใช้ D Type Flip-Flop เพราะง่ายต่อการคิด Input Flip-Flop
ทำการ Boolean Function Current State กับ Flip-Flop Input และ Boolean Function Current State กับ Output
จากนั้น ร่างวงจร ขึ้นมา
ผลปรากฎว่า วงจรทำงานค้างที่ State 11 เวลา เปลี่ยน State ก็ไม่ได้ นั่งแก้วงจรไปประมาณ 3 รอบ ต่อตาม Datasheet ก็แล้ว วงจรก็ค้างที่ State 11 เหมือนเดิม
และหลังจากนั้น วันรุ่งขึ้น
กลับมาลองต่อวงจรอีกรอบ เลขลองเป็นตำแหน่งขา S กับ R จากเดิมจิ้ม GND ลองมาจิ้มที่ Logic Switch อ่าฮะ พบ วงจรทำงานตาม State แล้ว (รู้สึกดีใจสุดซึ้ง)
สุดท้ายแล้ว ปัญหาก็เกิดจาก D-Type Flip-Flop นั้นมันค้างที่ State No Chang เลยทำให้ไม่สามารถป้อน Input ได้ สัมผัสมาจากตอนลองกับ Logic Switch.
-------------------------------------------------------------------------------------------------------------
ปัญหาที่เกิดขึ้นกับการเรียน
- แยกการใส่ค่า OUTPUT ระหว่าง Moore AND Mealy ยังไม่คล่อง
- คู่เมทไม่ได้มาเรียนด้วย เลยไม่รู้จะอธิบายคู่เมทยังไงให้เข้าใจ
- ตอนแรกยังงงกับการใส่ Input JK Flip-Flop แต่ตอนนี้เข้าใจแล้ว ><
แล้วทำการต่อวงจรจริง
และหลังจากนั้น วันรุ่งขึ้น
กลับมาลองต่อวงจรอีกรอบ เลขลองเป็นตำแหน่งขา S กับ R จากเดิมจิ้ม GND ลองมาจิ้มที่ Logic Switch อ่าฮะ พบ วงจรทำงานตาม State แล้ว (รู้สึกดีใจสุดซึ้ง)
วีโอประกอบการทดลอง
-------------------------------------------------------------------------------------------------------------
ปัญหาที่เกิดขึ้นกับการเรียน
- แยกการใส่ค่า OUTPUT ระหว่าง Moore AND Mealy ยังไม่คล่อง
- คู่เมทไม่ได้มาเรียนด้วย เลยไม่รู้จะอธิบายคู่เมทยังไงให้เข้าใจ
- ตอนแรกยังงงกับการใส่ Input JK Flip-Flop แต่ตอนนี้เข้าใจแล้ว ><