วันอังคารที่ 29 กันยายน พ.ศ. 2558

บทสรุปการเรียน week7


การออกแบบวงจร sequential logic

-  ในการออกแบบเราต้องระบุให้แน่นอนว่าต้องการที่จะให้วงจรของเราทำงานอย่างไร เมื่อระบุได้แล้ว
ก็ทำการแปลงรูปแบบดังกล่าวให้เป็น State diagram



Finite State Machine


                              เรานำรูปแบบที่เราต้องการมาแปลงเป็น State แบบรูปข้างบน โดย ในวงกลมครึ่งบนแต่ละวงกลมคือ ชื่อของ state การทำงาน ครึ่งล่างคือ out put ว่าใน state นั้นๆ output คืออะไร  และเส้นตรงที่มีปลายเป็นลูกศรพร้อมมีตัวเลขกำกับก็คือ ถ้าเรา ใส่ input  (ตัวเลขกำกับลูกศร) เป็นค่าอะไร state จะเปลี่ยนเป็นอะไร
จากนั้นเราก็ทำการเปลี่ยนชื่อ state ให้อยู่ในระบบเลขฐานสอง เรียงไปเรื่อยๆ 00 01 10 .... จนครบทุก state ดังรูป


จากนั้นเราก็จะนำ State ที่ได้มาสร้างตาราง โดยในช่อง output เป็น outputของ current state(สเตทปัจจุบัน)

 


จากนั้นเราก็จะทำเพิ่มตารางของ Flip Flop เข้าไป จำนวนFlip Flop ที่ใส่เข้าไปจะเท่ากับ bit ของ current state โดยตัวอย่างแรกนี้จะเป็น D Flip Flop ในการใส่ค่าลงในตารางของ Flip Flop เราจะดูค่า ในช่อง A และ A next และจะใช้คุณสมบัติของ D Flip Flop ว่าต้อง input อะไรให้ Flip Flop A ถึงจะเปลี่ยนเป็น A next
แล้วก็ทำเช่นกันกับ B และ B next                ดังรูป

ถ้าดูดีๆ จะพบว่า ค่าในตารางFlip Flop  จะเหมือนค่าใน Next state เด๊ะๆ นั่นละครับ ก็อป Next state มาใส่ จบปิ๊ง

ในกรณีที่ เรา ใช้ jk Flip Flop ก็ทำเหมือนเดิมครับสร้างตาราง จำนวน Flip Flop ที่ใช้ก็ยังเท่า bit ของ Current state เหมือนเดิม เพียงแต่ว่า input ของ jk Flip Flop มีสองตัวก็คือ ขา JและK เราก็ต้องมีตารางเพิ่ม จากนั้นก็ใช้คุณสมบัติของ jk Flip Flop ใส่ค่าเหมือนเดิม โดยจะมีตารางช่วยในการใส่ค่าที่ง่ายขึ้น
ตารางนั้นคือ

เมื่อเราก็ทำการใส่ค่าตามตารางนี้  แล้วเราก็จะสามารถสร้างตาราง JA , KA , JB , KB แบบนี้ออกมา


หลังจากได้ตารางแล้ว ขั้นต่อไปที่เราต้องทำนั้นก็คือ สร้างตาราง karnaugh map ของ A B และ Input โดยในตารางจะใส่ค่าของ Flip Flop

จะเห็นว่าเป็น ตาราง ของ A BและInput ค่าในตารางคือ Flip Flop  A

เราก็จะทำแบบนี้จนครบ Flip Flop ทุกตัว แต่สำหรับ jk Flip Flop สำหรับ Flip Flop 1ตัว สร้าง karnaugh map สองตาราง เพราะมันมีinput สองตัว คือ j และ k



ขั้นต่อไปคือ ทำ karnaugh map ของ output  โดยสร้างจาก Aและ B

ขั้นตอนสุดท้ายคือเรานำ k-map ที่ได้มานั้นไปต่อเป็นวงจรที่มี And gate , OR gate , D-type Flip - Flop

Reference 

http://fls.fibo.kmutt.ac.th/pluginfile.php/1200/mod_resource/content/1/LN7-Finite%20State%20Machines-Fullslide.pdf









วันอังคารที่ 8 กันยายน พ.ศ. 2558

บทสรุปการเรียน week6

ความรู้ที่ได้รับ

โดยหลักแล้ว digital circuit มีด้วยกัน 2 แบบคือ

1. Combiration : Input และ Output สามารถคำนวณได้จากการใช้ Truth table มีความแน่นอน
2. Sequential    : การที่จะรู้ว่า Output จะออกมาเป็นเช่นไรขึ้นอยู่กับ state ก่อนว่า Output แบบใด Input แบบใด และขึ้นอยู่กับ Input ปัจจุบันด้วย สามารถนำไปประยุกต์ใช้เกี่ยวกับ memory และ counter ได้

- พูดถึง basic ของ Combiration ว่าต้องเป็น logic gate ดังนั้นถ้าพูดถึง Sequential เราต้องมองหา       Flip-Flop  เราจะมาดูกันว่ามันคืออะไร

Flip-Flop

 => อันที่จริงก็คือ logic gate นี่ละเพียงแต่ถูกต่อให้เกิด Truth table ที่ไม่แน่นอน และมีความสามารถในการ memory Output หรือ Input state ก่อนได้

เราสนใจ Flip-Flop 4 ประเภทคือ

1. RS Flip - Flop => มีด้วยกัน 4 state ตาม Truth table ไล่ทำความเข้าใจทีละ state
           - S เป็น logic 0 และ R เป็น logic 0 มันจะ No change ก็คือ hold วงจรไว้ที่ Output state ก่อนหน้านั่นเอง
          - S เป็น logic 0 และ R เป็น logic 1 หรือ S เป็น logic 1 และ R เป็น logic 0  อันนี้จะเป็น Output ที่แน่นอน ตายตัว
         - S เป็น logic 1 และ R เป็น logic 1 อันนี้ต้องบอกว่าเป็น state ที่ไม่สามารถประเมินได้ หรือ Undefined เราไม่รู้ว่าจะเกิดอะไรขึ้น ซึ่งจริงๆแล้วมันจะทำให้ทั้ง Q และ Q' ออกเป็น logic 0 ดังนั้นเราจะไม่นำเอามาใช้


2. JK Flip - Flop => อันนี้เป็น Flip-Flop ที่พัฒนามาจาก RS เนื่องจากเราไม่ต้องการ state "undefined" ดังนั้นความแตกต่างอย่างแรกคือ มีการต่อ NAND Gate เพิ่มเข้ามา 2 ตัว เพื่อเปลี่ยน state undefined ที่ไม่ต้องการ ให้กลายเป็น Toggle แทน ในตอนที่ S เป็น logic 1 และ R เป็น logic 1
           - หลักการทำงานเหมือนกับ RS flip-flop แต่ว่า บาง IC จะมีขา Reset แยกต่างหากมาด้วย อย่าง IC ที่อาจารย์นำมาให้ใช้ทดลอง ถ้ามีขา Reset หมายความว่า ให้ logic 0 ที่ Reset เมื่อไหร่ Output จะถูก Reset กลับไปเป็นค่าตามที่โรงงานผลิตออกมา
           - เมื่อเราทำให้ J เป็น logic 0 และ K เป็น logic 1 หรือ J เป็น logic 1 และ K เป็น logic 0  แล้ว เราต้องกดปุ่ม Clock เพื่อบันทึกค่าให้ Output แสดงออกมา ไม่เช่นนั้น ต่อให้เราสลับ switch แค่ไหน ก็ไม่ทำให้ Output เปลี่ยนไป
          - JK flip - flop นั้นก็มี state hold เหมือนกับ RS เมื่อเราให้ J เป็น logic 0 และ K เป็น logic 0 แม้ว่าเราจะกด Clock อย่างไร ก็จะไม่เกิดผลกับ Output เพราะ Clock จะดึง Output ของ state ก่อนมาแสดงวนไปเรื่อยๆ
*Toggle การที่เมื่อ Q เป็นlogic 0 พอ Toggle  1 ครั้ง จะสลับให้ Q เป็น logic 1


3. T-Type Flip-Flop => หมายถึง Flip-Flop ที่ถูกใช้ในการสร้าง Counter
           ลักษณะการทำงาน นำขา J และ ขา K ของ JK Flip-Flop มาต่อเข้าหากันเรียกว่าขา T เมื่อเราใส่ T เป็นแบบใด และ ขึ้นอยู่กับ Output ครั้งก่อนหน้าด้วย
                  - Output ครั้งก่อนเป็น 0 Input T เป็น 0 Output ปัจจุบันจะเป็น 0
                  - Output ครั้งก่อนเป็น 0 Input T เป็น 1 Output ปัจจุบันจะเป็น 1



เราสามารถแบ่ง Counter ออกได้ 2 รูปแบบคือ

1. Asynchronous Counters => แยกขา Clock  ของ JK Flip-Flop เป็นของใครของมัน ไม่ได้ต่อร่วมกัน
        - ทำให้เกิดการ Delay เวลาเปลี่ยน State จะทำงานช้ากว่า Synchronous
        - สร้างได้ง่าย
        - ความถี่ต่ำกว่า Synchronous Counter แน่อน

2.Synchronous Counter => ต่อขา Clock ของ JK Flip-Flop ไว้ร่วมกัน
        - ต่อได้ยาก ต้องมีการคำนวณว่าต้องเพิ่ม Logic gate แบบใด ต่อกันแบบไหนเพื่อให้ได้วงจรที่                   ทำงานได้ตามต้องการ
        
จากหลักการที่กล่าวมาข้างต้นเรานำมาสร้างเป็นวงจรAsynchronous  Counter ดังรูป


หลักการทำงานของวงจรคือ มี Output ทั้งหมด 4 ค่าคือ Q0 - Q3  signal ที่ส่งเข้าไปจะเริ่มจาก Clock ส่งหนึ่งครั้ง ดูที่ขอบขาขึ้น จะมีผลกับ Q0 ทำอย่างนี้ไล่ไปตั้งแต่ LSB ถึง MSB เราจะได้วงจรที่สามารถ Counter ค่าได้ ขึ้นอยู่กับ Clock Pulses ที่ส่งมาว่ากี่ครั้ง


4. D-Type Flip - Flop => หมายถึง Flip-Flop ที่ถูกใช้ในการสร้าง Shift Register
        ลักษณะการทำงาน
                - เมื่อขา Clock เป็น 0 ไม่ว่าขา D จะเป็นอะไรก็ตาม Q และ Q' จะขึ้นอยู่กับ Output state                              ก่อนหน้า
               - เมื่อขา Clock เป็น logic 1 จะมี 2 กรณี
                         - ขา D logic 0 : Q จะ Output logic 0
                         - ขา D logic 1 : Q จะ Output logic 1

Shift Register 

Shift Register หมายถึง การเลื่อน หลักการคือเมื่อเราต้องการส่งข้อมูลอย่างเช่น 1011  อย่างในภาพจะเป็น Input แบบSerial  Output แบบ Parallel  จะเห็นได้ว่าเราต้องกด Clock ทั้งหมด 4 ครั้งเพื่อให้ข้อมูลเราเข้ามาครบ 4 bit (clock ละ 1 bit) เพื่อให้ข้อมูลเข้าสู่ IC ครบ เป็นต้น หลักการนี้เราใช้เพื่อสร้างความสเถียรให้กับ Signal ที่เราจะนำไปใช้ต่อ หรือว่า ต้องการ Memory ค่าบางค่า เพื่อนำไปคำนวณก็ได้


มีด้วยกัน 4 แบบคือ
  • • Serial-in to Parallel-out (SIPO)  
  • • Serial-in to Serial-out (SISO)  
  • • Parallel-in to Serial-out (PISO) 
  • • Parallel-in to Parallel-out (PIPO)  

ปัญหาที่พบ

- เราต้องดูให้ดีว่า counter  circuits ที่เรานำมาต่อนั้น มี buffer หรือไม่ การมี buffer หรือ นิเสธ หมายถึง ต้องให้ logic 0 ที่ขานั้น วงจรจึงจะทำงาน
- เมื่อเราต่อวงจรจริง สิ่งที่มักผิดพลาดคือการอ่าน datasheet ได้ไม่ดีพอ เนื่องจาก datasheet มีทุกอย่างอยู่แล้ว ถ้าเราสามารถทำความเข้าใจได้อย่างถ่องแท้ จะทำให้เรานำอุปกรณ์นั้นๆไปใช้งานได้อย่างมีคุณภาพและเหมาะสมที่สุด

- ไม่จำเป็นที่ IC ทุกตัวที่เป็น JK Flip-Flop จะต้องมีขา Reset เหมือนกับ IC ที่เราใช้ในการทดลอง
- การที่เราจะload Input แบบ Parallel เข้าไปใน IC นั้นต้องทำให้ขา PE เป็น logic 0 ก่อนแล้วจึงกด Clock 1 ครั้ง เพื่อ upload เปลี่ยนขา PE มาเป็น logic 1 แล้วกด Clock 8 ครั้งเพื่อให้ Output ออกมาเป็น Serial 
- ขา CE ต้องเป็น logic 1 เสมอ เพื่อให้ CP ทำงาน ถ้าขา CE เป็น logic 0 ไม่ว่าขา CP จะเป็นอย่างไรก็จะไม่มีผล

อ้างอิง

http://sub.allaboutcircuits.com/images/04353.png
http://qph.is.quoracdn.net/main-qimg-8d6bb2ecf259a4d1d876de7b7c30ae22?convert_to_webp=truehttps://upload.wikimedia.org/wikipedia/commons/f/ff/JK-FlipFlop_(4-NAND).PNG
http://worldclassprogramme.com/images/RS-Flip-Flop.gif
http://worldclassprogramme.com/images/D-FlipFlop.gif
http://electronicspost.com/wp-content/uploads/2015/05/14.png
http://www.learnabout-electronics.org/Digital/images/register-SISO.gif
http://www.ee.usyd.edu.au/tutorials/digital_tutorial/part2/pics/regist05.jpg
http://fourier.eng.hmc.edu/e85_old/lectures/figures/T_flipflop.gif
http://www.ee.surrey.ac.uk/Projects/CAL/seq-switching/Graphics/operT.gif
http://www.ibiblio.org/kuphaldt/electricCircuits/Digital/04348.png
http://sub.allaboutcircuits.com/images/04347.png
http://www.electronics-tutorials.ws/counter/count_1.html
http://www.ubooks.pub/Books/B0/E77R7385/MAIN/images/04349.png

วันอังคารที่ 1 กันยายน พ.ศ. 2558

Class work #2


Multiplexer input 4 to 1


จากการบ้านให้นำ Mux input 2 to 1 แปลงเป็น Mux input 4  to 1
นั้นต้องใช้ Mux input 2 to 1 ทั้งหมด 3 ตัว ต่อดังภาพจึงได้เป็น Mux input 4 to 1 1 ตัว 

ทั้งนี้เราหา Truth table ของวงจร Mux input 4 to 1 ได้ และนำไปคำนวณเพื่อหาการต่อซึ่งสามารถได้ truth table หน้าตาแบบเดียวกัน 



การหาผลลัพธ์จากวิธีการ Sum of Products โดยใช้ร่วมกับ Don't care