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
สร้างสัญญาณ Sine Wave โดยกำหนด Amplitude และ ความถี่ขึ้นมา
https://drive.google.com/file/d/0B52rK8QZRwC4T0FSc0hxYkdpSlE/view?usp=sharing
Lab Week 9
วิดีโอการทำงาน
คำสั่ง : ใช้การส่งข้อมูลแบบ Serial ควบคุมการทำงานของบอร์ด โดยใช้คอมพิวเตอร์
คำสั่ง : ใช้การส่งข้อมูลแบบ Serial ควบคุมการทำงานของบอร์ด โดยใช้คอมพิวเตอร์
อธิบายโปรแกรม
https://drive.google.com/file/d/0B52rK8QZRwC4M0QwQzZvWFA1MlU/view?usp=sharing
Wednesday, 21 October 2015
Lab Week 8
คำสั่ง : กำหนดให้ใช้สวิทซ์ 3 ปุ่มเป็น Input และให้แสดงผลออกทางหลอดไฟ โดยแสดงผลในรูปแบบของการวิ่งของหลอดไฟที่แตกต่างกันออกไป
https://drive.google.com/file/d/0B52rK8QZRwC4UFlsdGhybXhIQVk/view?usp=sharing
คำสั่ง : แสดงผลของค่า analog ที่รับเข้ามา ในรูปแบบของหลอดไฟ (ยิ่งค่ามาก จำนวนหลอดไฟที่ติดไฟจะมากขึ้น)
https://drive.google.com/file/d/0B52rK8QZRwC4dzNXQWJIQ21NXzg/view?usp=sharing
คำสั่ง : แสดงผลของค่า 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 -เริ่มงงกับการออกแบบวงจรว่า มันสามารถประยุกต์ไปทำไรต่อได้บ้างนอกจากการนับเลข
- รู้จักวงจร 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 ที่ใช้แสดงผลเป็นตัวเลขและตัวอักษรต่างๆนั้น
ก็มีความซับซ้อนพอสมควร ที่ต้องจ่ายไฟเข้าตามขาต่างๆ
เพื่อที่จะให้เกิดเป็นตัวเลขหรือตัวอักษรที่เราต่างการออกมา
โดยปกติแล้วการต่อ 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
Subscribe to:
Posts (Atom)