วันศุกร์ที่ 25 กันยายน พ.ศ. 2558

Digital Weekly Jurnal#7 :: DESIGN SEQUENTIAL CIRCUITS

  จาก Ep.6 -> Ep.7 ในบทความนี้จะเป็นบทความที่ต่อจากของเดิมในบทความที่แล้ว ซึ่งในบทความนี้จะพูดในส่วนที่สำคัญที่สุดของ Sequential Circuits นั่นคือ
        "การออกแบบวงจรเพื่อนำไปใช้งาน" นั่นเอง 
        ซึ่งในการออกแบบวงจรนั้นมีขั้นตอนเป็นดังนี้
   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
 --------------------------------------------------------------------------------------------------
    เมื่อสร้าง 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 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 แต่ตอนนี้เข้าใจแล้ว >< 

ไม่มีความคิดเห็น:

แสดงความคิดเห็น