Monday, 16 November 2015

Lab Week 11

การเก็บข้อมูลใน EEPROM (I2C)
https://drive.google.com/file/d/0B52rK8QZRwC4b0pJWHh3Nm5xTEk/view?usp=sharing

Wednesday, 4 November 2015

Lab Week 10

Sine Wave
สร้างสัญญาณ Sine Wave โดยกำหนด Amplitude และ ความถี่ขึ้นมา

https://drive.google.com/file/d/0B52rK8QZRwC4T0FSc0hxYkdpSlE/view?usp=sharing

Lab Week 9

วิดีโอการทำงาน
คำสั่ง :  ใช้การส่งข้อมูลแบบ Serial ควบคุมการทำงานของบอร์ด โดยใช้คอมพิวเตอร์
อธิบายโปรแกรม
https://drive.google.com/file/d/0B52rK8QZRwC4M0QwQzZvWFA1MlU/view?usp=sharing

Wednesday, 21 October 2015

Lab Week 8

FRA221 A0215 Digital Lab 1 12/10/2015
คำสั่ง : กำหนดให้ใช้สวิทซ์ 3 ปุ่มเป็น Input และให้แสดงผลออกทางหลอดไฟ โดยแสดงผลในรูปแบบของการวิ่งของหลอดไฟที่แตกต่างกันออกไป
https://drive.google.com/file/d/0B52rK8QZRwC4UFlsdGhybXhIQVk/view?usp=sharing

FRA221 A0215 Digital Lab 1 13/10/2015
คำสั่ง : แสดงผลของค่า analog ที่รับเข้ามา ในรูปแบบของหลอดไฟ (ยิ่งค่ามาก จำนวนหลอดไฟที่ติดไฟจะมากขึ้น)
https://drive.google.com/file/d/0B52rK8QZRwC4dzNXQWJIQ21NXzg/view?usp=sharing

FRA221 A0215 Digital Lab 2 13/10/2015
คำสั่ง : แสดงผลของค่า analog ที่รับเข้ามา ในรูปของ BCD ผ่านทาง 7segment
https://drive.google.com/file/d/0B52rK8QZRwC4WmQ2bmVUeFBVZ2c/view?usp=sharing

Friday, 2 October 2015

สรุปการเรียนรู้ week 7

สรุปการเรียนรู้ week 7
          -ได้เรียนรู้เรื่องการออกแบบวงจร Sequential logic เนื่องจาก Sequential logic เป็นวงจรในรูปแบบของการเก็บค่า เก็บ stage การทำงาน ดังนั้น เราควรจะกำหนดคุณลักษณะของการทำงานที่ชัดเจนก่อน โดยการแปลงคุณลักษณะดังที่กล่าวถึงให้อยู่ในรูป State Diagram ดังรูป


          โดยวงกลมคือ State ภายในวงกลมส่วนบนจะเป็นการระบุชื่อใช้อธิบาย State นั้นๆ และด้านล่างจะเป็นสถานะของ Output ที่เราต้องการให้เกิดขึ้น ส่วนลูกศรคือการบ่งบอกว่า ใน 1 ครั้งของการเปลี่ยน State หาก Input เป็นอะไร แล้ว State จะถูกเปลี่ยนไปที่ State ใด ซึ่งจะบ่งบอก Input โดยใช้ตัวเลขที่เห็นระหว่างลูกศร
          ซึ่งแผนภาพ State Diagram นั้นมี 2รูปแบบ คือรูปแบบนี้ เรียกว่า Moore และอีกรูปแบบคือ Mealy จะเปลี่ยนรูปแบบเล็กน้อย นั่นคือในวงกลมจะอธิบาย State และบนลูกศรจะบ่งบอกถึงสถานะของ Output แทน

          หลังจากวาด State Diagram เสร็จแล้วให้เราใส่ตัวเลขฐาน 2 แทนใน State แล้วนำไปเขียนตาราง State Table


          โดยในตาราง จะใส่ State ปกติ และ Input ลงไปก่อนตามรูปแบบการเขียนตารางทั่วไป และจากนั้นจึงนำส่วนแรกมาพิจารณาเพื่อหา State ถัดไป (next state) โดยจะดูจาก State Diagram ว่าลูกศรมี Input logic เป็นอะไร จะทำให้ State นั้นๆ เปลี่ยนไปที่ State ใดบ้าง เมื่อเสร็จแล้วจึงดู Output ว่า State ใดมี Output เป็นอย่างไร โดยอ้างอิงจาก Current State
เมื่อเสร็จแล้วจึงเริ่ม ใส่ logic ของ Flip-Flop ลงไปในในตาราง โดยเทียบตารางของ Flip-Flopเกี่ยวกับ Current State และ Next State ว่าการเปลี่ยนแปลงแบบนี้จะต้องให้ Logic ที่ขาของ D (ในกรณีที่ใช้D-type Flip-flop) และขาของ J K (ในกรณีที่ใช้ JK Flip-flop) เป็นอย่างไรบ้าง ดังสไลด์ ด้านล่าง



          หลังจากนั้นจึงสร้าง Boolean function สำหรับ Input ที่ขา D , JK โดยการนำ Current State + Input เป็นตัวตั้ง และให้ Output เป็นตาราง D-type , JK  โดยเมื่อได้ Boolean function แล้วก็นำมาเขียนวงจรตามสมการที่ได้ และต่อจริงก็เสร็จ ดังรูป



ปัญหา/สิ่งที่ไม่เข้าใจ
          -พอเริ่มทำอะไรที่มันเยอะขึ้นแล้วรูปสึกว่าสายไฟไม่ค่อยจะพอ ทำให้เสียเวลาในการยืมของจากเพื่อน และเวลาในการพยายามยุบอยู่บ้าง แต่ก็ยังสามารถต่อออกมาได้
****ความประทับใจ****

          -ผมเริ่มรู้สึกชอบวิชานี้มากขึ้นเนื่องจากการทำงานต่างๆของวงจรที่ได้รู้เจ๋งและน่าค้นหามากขึ้น มันดูสามารถต่อยอดและทำอะไรได้หลายอย่างดี ทำให้ตอนนี้รู้สึกตื่นเต้นทุกครั้งที่ได้เรียนวิชานี้มากกว่าวิชาอื่นๆ

สรุปการเรียนรู้ Week 6

สรุปการเรียนรู้ Week 6
- รู้จักวงจร Sequential Circuit เป็นวงจรที่เกี่ยวกับการนับจำนวนแบบ Binary โดยใช้วงจรไฟฟ้า ซึ่งจะต่างจากวงจร Logic ธรรมดาตรงที่ วงจรธรรมดา Output จะขึ้นอยู่กับ Input ในขณะนั้นๆ แต่ถ้าเป็นวงจร Sequential Logic Output จะขึ้นอยู่กับ3อย่างคือ Input ขณะนั้น , Input ก่อนหน้า และ Output ก่อนหน้า หรือพูดง่ายๆคือเป็นวงจรที่มี Memory ไว้สำหรับเก็บค่าเพื่อคำนวณต่อไปได้ (ใส่รูปความแตกต่างของ Logicธรรมดากับซีเควนเชี่ยว) - รู้จักกับFlip-Flop เป็นอุปกรณ์พื้นฐานของ Sequential Logic โดยด้านในของFlip-Flop เป็นเสมือนอุปกรณ์ Logic gate ต่อกันอยู่ โดยการ Hold สถานะ จะใช้หลักการคล้ายๆกับ Self Locking (มีการใช้ Output ต่อเข้ากับ Input เพื่อคงสถานะไว้) โดย Flip-Flop จะมีหลากหลายรูปแบบ และแต่ละรูปแบบก็จะมีส่วนประกอบ(Logic gate ภายใน) ที่แตกต่างกันออกไป มีทั้งหมด 4 แบบคือ 1. SR Flip-Flop
Input 2ขา(Set,Reset) และ Output 2ขา (Q,Qbar)โดยจากรูปจะมีการต่อ Output เข้าไปที่ Input ของLogic gate สลับตัวกัน เพื่อให้สถานะของ Output ทั้งสองสลับกันไปเรื่อยๆ เมื่อกดปุ่ม Set จะทำให้ Output ติดค้างเนื่องจากการ Hold Status และจะไม่เปลี่ยนจนกว่าจะมีการกด Reset
*Invalid จะเป็นกรณีที่ไม่สามารถเกิดขึ้นได้ / ไม่รู้ว่าOutput จะออกมาเป็นแบบไหน* 2.JK Flip-Flop
มีลักษณะการทำงานคล้ายๆกับ SR Flip-Flop (J = Set , K = Reset) แต่จะมีขา clk ขึ้นมาเพื่อการเปลี่ยนสถานะ ซึ่งสถานะจะเปลี่ยนตาม Input ที่อยู่ในขณะนั้น โดยขา clk สร้างขึ้นมาเพื่อแก้ปัญหากรณีที่ Invalid โดยจะกลายเป็นการ state toggle แทน
3. D-Type Flip-Flop
มีลักษณะเหมือนกับ JK แต่จะทำการรวบขา JK เข้าด้วยกันและให้สลับ Logic กันโดยจะไม่มี State Toggle เกิดขึ้น 4. T-Type Flip-Flop
เป็น JK Flip-Flop โดยรวบขา JK เข้าด้วยกันและเปลี่ยน State ของ Output โดยใช้ State Toggle ที่เกิดขึ้นเมื่อ Input ที่ขา JK เป็น1 เหมือนกัน - รู้จักกับ Asynchronous Counter และ Synchronous Counter เป็นวงจรสำหรับการนับเลขออกมาเป็นฐาน2 โดยทั้งสองแบบมีข้อดีข้อเสียต่างกันคือ Asynchronous Counter
ข้อดีคือสร้างง่าย เนื่องจากใช้แค่ Output ตัวก่อนหน้ามาควบคุมการ clk ถัดไปเฉยๆ ข้อเสีย คือจะเกิด propagation Delay จาก Gate แต่ละตัว เช่นเมื่อเราใส่ Input เข้าไป จะต้องใช้ความเร็วประมาณ 50 ns และถ้าเราต่อยาวไปหลายๆตัว ก็จะยิ่งทำให้เวลาเพิ่มมากขึ้น และกว่า Output จะแสดงครบใน 1 ครั้งของการสั่งงานก็ใช้เวลานานขึ้น อาจทำให้เกิดข้อผิดพลาดได้ Synchronous Counter
ใช้ Logic เดียวกันคือ Output ตัวถัดไปจะเปลี่ยนสถานะเมื่อ Input ทั้งหมดก่อนหน้ามีสถานะเป็น1 โดยใช้ Output คุม Logic ที่ ขา JK ในตัวถัดๆไป แต่ใช้clk ร่วมกันเพื่อให้มีการเปลี่ยนสถานะพร้อมๆกัน ปัญหา / สิ่งที่ไม่เข้าใจ week6 -เริ่มงงกับการออกแบบวงจรว่า มันสามารถประยุกต์ไปทำไรต่อได้บ้างนอกจากการนับเลข

Sunday, 6 September 2015

สรุปการเรียนรู้ Week 5

สรุปการเรียนรู้ Week 5
          -ได้เรียนรู้ว่าเจ้าหลอด LED ที่ใช้แสดงผลเป็นตัวเลขและตัวอักษรต่างๆนั้น ก็มีความซับซ้อนพอสมควร ที่ต้องจ่ายไฟเข้าตามขาต่างๆ เพื่อที่จะให้เกิดเป็นตัวเลขหรือตัวอักษรที่เราต่างการออกมา

          อย่างเช่นดังในภาพนี้ ซึ่งหลักการใช้ตัว 7 segment นั้นสร้างได้ด้วยการใช้ logic gate มาคุมโดยผ่านหลักการของเลขฐาน 2 โดยการมี Input เป็นทั้งหมด 4 ตัว เพื่อจำลองเป็นเลขฐาน 2 ทั้งหมด 4 bits เพื่อให้มีค่า Output ได้เพียงพอต่อการแสดงค่าทั้งหมด10 ตัวเลข (0-9) ซึ่งเราจะเรียกวงจรที่ควบคุม 7 segment นี้ว่า Decoder หรือเป็นวงจรถอดรหัสเลขฐาน 2 เพื่อมาแสดงค่าตัวเลขบน 7 segment นี้

          โดยปกติแล้วการต่อ Input 4 ตัวเพื่อให้ได้ทั้งหมด 4 bits นั้นสามารถสร้างสรรค์ Output ได้ถึง 16 ตัว ดังนั้น ในหนึ่ง 7 segment จะแสดงได้ถึง 16 ตัว นั่นก็คือเลขฐาน 16(0-9,A-F) ดังนั้นการจะต้องแสดงเป็นเลขฐาน 10 จึงต้องใช้ความรู้เรื่อง BCD(Binary Coded Decimal) ซึ่งจะกล่าวถึงในหัวข้อถัดไป
          -ได้รับความรู้เรื่อง BCD ‐ Binary Coded Decimalเป็นวงจรเข้ารหัส ที่ทำหน้าที่แปลงเลขฐานสิบ เป็นเลข BCD (Binary-Coded-Decimal) ดังในรูป

          โดยจากในรูปสามารถอธิบายได้ว่า Input ที่ได้มาไม่สามารถใช้โดยตรงได้หากต้องการแสดงผลเป็นเลขฐาน 10 เนื่องจาก 7 segment 1ตัวจะแสดงค่าได้ถึงฐาน 16 ดังนั้นเราจึงต้องนำ Input มาเปลี่ยน logic และเพิ่ม Output มากขึ้นเป็น 8 ตัว จะเปรียบเสมือนตัวทด นั่นคือเมื่อเลข4 bitsหลังถึง 10 จะทดเลขหลักนั้นขึ้นมาที่ 4bits หน้า และแสดงผลที่ 7 segment ตัวหน้าแทน ทำให้การแสดงค่าใน 7 segment แต่ละตัว ไม่เกินเลขฐาน 10
          โดยวิธีการทำตามตารางที่อาจารย์ได้ให้ไว้เมื่อสัปดาห์ที่แล้วเกี่ยวกับการคำนวณลดรูป logic gate เพื่อใช้ในการต่อนั้น การจะทำวงจรเลขฐาน 10 นั้น ต้องมี Input 4 ตัว และ Output 8 ตัว ซึ่งลำบากแน่ๆต่อการคำนวณมือ ดังนั้นจึงต้องใช้โปรแกรมในการคำนวณสมการเพื่อหาวิธีการต่อ logic gate ที่ดีที่สุดออกมา โดยการป้อน Input คือตารางช่อง Binary และ Output เป็นตารางช่อง BCD จะทำให้ได้วงจรดังรูป


          - ได้ความรู้เรื่องการใช้ Encoder นั่นก็คือ วงจรลอจิกซึ่งทำหน้าที่เปลี่ยนจำนวน/ตำแหน่ง Input ที่ใส่เข้าไป (ตั้งแต่ 0-N) ให้เป็นOutput เป็นรหัสฐาน 2 จำนวน M bits(ขึ้นอยู่กับตัววงจรว่าจะมีจำนวน Input ทั้งหมดกี่ตัว , Input 4 ตัว Output 2ตัว(แสดงได้ทั้งหมด 4กรณี),Input 8ตัว Output 3ตัว(แสดงได้ทั้งหมด 8กรณี))

           โดยตำแหน่งของ Input เราจะเป็นคนกำหนดเอง และ Output ที่ได้จะเป็น Output จากตำแหน่งที่มากที่สุดของ Input โดยไม่สนใจ Input ที่ตำแหน่งน้อยกว่า

** x แสดง Input ที่ไม่ต้องสนใจก็ได้ **
          - รู้จัก Multiplexer(Mux) และ Demultiplexer(Demux) ซึ่งเปรียบเสมือน Relay ในทาง logic gate ไว้คอยเลือกทางเข้า /ออก ของ Input โดย Mux จะอยู่ในรูปแบบของการเลือก Input ที่จะออกมาทาง Output และแบบ Demux จะเป็นรูปแบบการเลือก Output ที่จะให้ Input ออกไป
 Mux                                                                           







Demux
          โดยวิธีการเลือก Input / Output นั้น จะเป็นการป้อน logic เข้าไปที่ Selector(a,b) ช่อง A จะเป็น 00 , B 01 , C 10 , D 11 ดังนั้น ช่องทุกช่องจะเกิดการปิดวงจรเมื่อมีการป้อน Logic เข้าไปที่ Selector ตามที่เขียนไว้ข้างต้น และทุกๆช่องจะไม่มีทางเปิดได้พร้อมกัน
          สรุปในอีกความเข้าใจหนึ่งคือให้มอง A-D เป็นเลขฐานสิบ นั่นคือ 0-3 หากต้องการจะเปิดช่องไหนให้จ่าย logic เข้าไปที่ a ,b เป็นรหัสฐาน2 โดย b เป็น bit ที่ 2 และ a เป็น bit ที่ 1 โดยรหัสเลขฐาน2 ตรงกับเลขฐาน 10 ช่องไหน ก็จำทำการเปิดช่องนั้นๆ




ปัญหาที่เกิดขึ้น

          -ปัญหาที่เกิดขึ้นก็คือ ใบนางทีที่ต่อสายไฟระโยงระยางเต็มไปหมด จะเกิดการสับสนเกิดขึ้นว่า สายนี้ต่อเข้าที่ไหน ทำให้ตาลายมากๆ จนต่อผิดบ้างถูกบ้าง สุดท้าย เราต้องมานั่งวาดเป็นวงจรลงในแผ่นกระดาษทำให้เราเริ่มต่อถูกมากขึ้น จนสำเร็จในที่สุด :D