วันจันทร์ที่ 14 พฤศจิกายน พ.ศ. 2559

LAB 4

แลปนี้ใช้ IC MCP4922 ซึ่งเป็น IC Digital-to-Analog สามารถใช้งานได้โดยการส่ง SPI ในแลปนี้จะใช้ IC MCP4922 เพื่อสร้างสัญญาณตามรูปข้างล่างโดยมีความถี่ 15Hz
 ซึ่งจากการใส่ใช้โค้ดข้างล่างกับ Nucleo f411re ก็สามารถสร้างสัญญาณได้ตามรูป

จะเห็นว่าสัญญาณมีจุดสูงสุดอยู่ที่ ประมาณ 3.3V และีคาบอยู่ที่ 68 ms หรือที่ความถี่ 14.7Hz ซึ่งไกล้เคียงกับที่โจทย์กำหนด


FRA221 LAB5

Lab 5

    เชื่อมต่อ Nucleo กับI2C EEPROM เพื่อเก็บและอ่านข้อมูล โดยให้สามารถทำงานได้2 mode คือ mode เก็บค่าสวิตช์ที่เปิดอยู่และอ่านค่าที่เก็บไว้ในตัว  และแสดงค่าที่เก็บไว้ผ่านทางหลอด LED


























FRA221 LAB3

Lab 3

    การส่งข้อมูลทาง serial port ไปยัง nucleo เพื่อกำหนดรูปแบบการกระพริบของหลอด LED หรือการอ่านค่าของ สวิตช์เป็นเลขฐานสอง จากบอร์ด NX-100
    เริ่มแรกจะแสดงเมนูมีสองตัวเลือกถ้ากด 1 จะเข้าสู่โหมดแสดง LED ถ้ากด a หรือdจะทำให้ได้แพทเทิร์น LED ที่ต่างกันสองแพทเทิร์น เมื่อกด s จะกลับไปสู่เมนูแรก และLEDทั้งหมดจะดับ
         จากเมนูแรกถ้ากด 2 จะเข้าสู่โหมดอ่านค่าสวิตซ์



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

วันพุธที่ 19 ตุลาคม พ.ศ. 2559

FRA221 LAB2

Lab 2

การทดลองใช้พอร์ต Analog in ของบอร์ด nucleo f411re ในการค่าแรงดันไฟฟ้า และแสดงผลได้สองรูปแบบ



เพื่ออ่านค่า analog ผ่านทาง พอร์ต A1 แรงดันที่ใช้มาจากบอร์ด NX-100 ซึ่งสามารถปรับค่าแรงดันได้ตั้งแต่ 0-3.3 V เมื่ออ่านค่าแรงดันได้ จะแสดงค่าแรงดันได้สองรูปแบบ 1. เป็นเกทแรงดัน ยิ่งแรงดันมีค่ามาก   เกทก็จะยาวขึ้น และสั้นลงเมื่อแรงดันลดลง 2. แสดงค่าแรงดันเป็นทศนิยมผ่านทาง 7segment โดยที่ตัวหน้าเป็นหลักหน่วย และตัวหลังเป็นตัวทศนิยม ( 7segment แสดง 24 หมายถึงแรงดันเป็น 2.4 ) 

จะแสดงค่าแรงดันรูปแบบใดรูปแบบหนึ่งเท่านั้น โดยสามารถเปลี่ยนโหมดการแสดงค่าแรงดัน ได้ด้วยการกดสัญญาณ pulse มุมขวาล่าง


เมื่ออยู่ในโหมดเลขทศนิยม จะสามารถอ่านค่าได้จาก 7segment


เมื่ออยู่ในโหมดเกทแรงดัน จะสามารถอ่านค่าได้จาก แถบ LED 8 ดวงด้านบน



FRA221 LAB1

Lab 1

การทดลองใช้พอร์ต GPIO ของบอร์ด nucleo f411re



ในคลิปใช้พอร์ต GPIO D5 D4 D3 เป็นขา Input และ D6-D13 เป็นขา Output เมื่อกดสวิตซ์ในรูปแบบต่างก็จะทำให้ Pattern ของ Output ต่างกันออกไป โดยจะแสดงให้เห็นผ่านหลอด LED  8 ทางด้านบน          การกดสวิตช์ในรูปแบบต่างๆ จะแสดงผ่าน 7 segment มุมบนขวา เช่น ถ้า D5 = 1, D4 = 0, D3 = 1  7 segment ก็แสดงค่าเป็น 5 ตามเลขฐานสอง (101 = 5) ดังนั้นการที่มี Input สามตัวก็จะทำให้สามารถเปลี่ยนรูปแบบไปได้ทั้งหมด 8 รูปแบบ (0-7 หรือ 000-111) 







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

ความรู้ที่ได้รับ (สัปดาห์ที่ 5)

    สัปดาห์ที่ 5 เรียนเรื่อง Sequential Logic และได้ทำความรู้จักกับ Flip-Flop ชนิดต่างด้วยกัน 4 ชนิด

1. SR Flip-flop


2. JK Flip-flop


3. T type Flip-flop


4. D type Flip-flop




และ ได้เรียนเรื่อง Finite state machine ซึ่งเป็นสิ่งที่ทำให้เราสามารถออกแบบวงจรได้ง่ายขึ้นโดยมีขั้นตอนดังนี้ 

1. สร้าง State แต่ละ State ลงเป็นวงกลมไว้ใน State space โดยมี Output ที่ต้องการอยู่ด้านล่าง

2. โยงลูกศรการเปลี่ยน State ซึ่งลูกศรหมายถึง Input ที่ใส่เข้าไป

3. แทนชื่อของแต่ละ State ด้วยเลขฐานสองโดยเรียงจาก State แรกไปยัง State สุด


ท้าย

4. สร้าง Truth table (ตามชนิดของ Flip-flop ที่เราจะใช้)

5. สร้าง Boolean function ของ Flip-flop และ Output ด้วยวิธี K-map หรือ Quine-Mccluskey

6. วาดวงจร





step 1




step 2




step 3




Current state Input    Next state Output1 Output2 Output3 flip-flop D type
A B A B Da Db
0 0 0 1 0 1 0 1 1 0
0 0 1 0 1 1 0 1 0 1
0 1 0 0 1 1 1 0 0 1
0 1 1 0 0 1 0 1 0 0
1 0 0 0 1 0 0 0 0 1
1 0 1 1 1 0 0 0 1 1
1 1 0 1 0 0 1 1 1 0
1 1 1 0 0 0 1 1 0 0





step 4

จาก state space ด้านบน ประกอบด้วย 4 state ได้แก่ start ,forward ,turn left ,turn right ซึ่งเส้นที่โยงระหว่าง state หมายถึง input ที่ใส่เข้ามาจะทำให้วงจรของเราไปอยู่ที่ state ใด เป็น state ต่อไป เช่น เมื่ออยู่ที่ state start จะมี output1 = 1 output2 = 0 output3 = 1 ถ้ามี input เป็น 1 จะทำให้วงจรไปอยู่ที่ state forward  ถ้ามี input เป็น 0 จะไปอยู่ที่ state turn left จาก diagram เราสามารถเขียน ตารางตามด้านล่าง ซึ่งจะบอก state ที่อยู่ตามด้วย input และ state ที่จะไปต่อเมื่อมี input นั้นๆเข้ามา ส่วนในช่องของ flip-flop เป็นค่า logic ที่ใส่เข้าไปในขา flip-flop แล้ว state จะเปลี่ยนไปตามนั้น เช่น ถ้า A เปลี่ยนจาก 0 เป็น 1 และใช้ D type จะต้องให้ขา D เป็น 1 ถ้า A เปลี่ยนจาก 1 เป็น 0 จะต้องให้ขา  D เป็น 0 
จากนั้นเขียน truth table ระหว่าง A B Input แล้วได้ผลลัพย์ออกมาเป้น Da และDb เพื่อนำไปต่อเข้าขาของflip-flopที่นำมาใช้  เช่น

A B Input Da
0 0 0 1
0 0 1 0
0 1 0 0
0 1 1 0
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 0

Truth table

A\Binput 0,0 0,1 1,1 1,0
0 1 0 0 0
1 0 1 0 1
K-map

สำหรับ Output นำ A B มาเขียนเพื่อใช้มาเป็น output เช่น
A B Output1
0 0 1
0 1 1
1 0 0
1 1 0




ความรู้ที่ได้รับ (สัปดาห์ที่ 4)

MUX (Multiplexer)
    
    Multiplexer หรือ ตัวเลือกข้อมูล(Data selector) คือตัวทำหน้าที่เลือกช่องสัญญาณที่มีมากกว่า 1 ช่องมาแสดงออกเป็นเอาต์พุตเดียวโดยจะสามารถเลือกได้ว่าจะนำอินพุตไหนออกมาแสดงเป็นเอาต์พุต

ตัวอย่างการทำงานของ Multiplexer

    โดยวิธีเลือกคือการเปลี่ยนสถานะของทาง Selector หาก output เป็น I0 อยู่แล้วอยากให้เป็น I1 ทำได้เพียงแค่สลับสถานะของ Selector



DeMUX(DeMultiplexer)

    DeMultiplexer นั้นจะมีการทำงานตรงกันข้ามกับ Multiplexer ตรงที่จะมี Input เพียง 1 ตัวและสามารถเลือกให้ออกมาได้หลายตัวเลือก
ตัวอย่างการทำงานของ DeMultiplexer

Encoder

    Encoder เป็น IC สำหรับเข้ารหัสโดยจะมี Input 8 ตัวและมีเอาต์พุต 3 ตัวซึ่งสามารถอ่านเป็นเลขฐาน 2 แบบ 3 บิตได้

ตัวอย่างและ Truth table ของตัว Encoder

Decoder

    Decoder จะมีการทำงานตรงข้ามกับ Encoder คือฝั่ง Input จะรับมาเป็นระบบเลขฐานสองและแสดง Output ของมาในระบบเลขฐาน 10

ตัวอย่างของ Encoder

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

ความรู้ที่ได้รับ (สัปดาห์ที่ 3)

Karnaugh map


    การใช้ Karnaugh map ในการช่วยลดรูปของ Boolean Expression ให้สั้นลงโดยมีความแม่นยำสูงและทำง่าย โดยข้อจำกัดของ Karnaugh map คือสามารถคำนวณได้มากสุดครั้งละ 4 ตัวแปร



ตัวอย่าง Karnaugh map และการแสดงค่าตัวแปร


    จำนวนช่องของ Karnaugh map นั้นจะมีจำนวนเป็นจำนวนของตัวแปรยกกำลังสอง เช่น 2 ตัวแปรจะมี 4 ช่อง, 3 ตัวแปรจะมี 8 ช่อง


ค่าของตัวแปรในรูปของ Minterm



ตาราง Karnaugh map 3 ตัวแปร



ตาราง Karnaugh map 4 ตัวแปร





การหา Boolean expression จาก Karnaugh map  ทำได้โดยการใส่ค่าความจริงลงในตารางของ Karnaugh map ตามที่เราต้องการ เช่น 
https://www.facstaff.bucknell.edu/mastascu/eLessonsHTML/Logic/Logic3A05.gif

Karnaught map ด้านบนนี้ เป็น Karnaught map ที่ใส่ค่าความจริงลงไปแล้ว จะเห็นได้ว่า เราต้องการให้ค่าความจริงออกมาเป็น 1 เมื่อ w=0, x=1, y=0, z=0 และเมื่อ w=0, x=1, y=0, z=1 การหา Boolean expression ทำโดย     การวง ช่องที่มีค่าเป็น 1 โดยมีเงื่อนใขว่า สามารถวงได้มากกว่าทีละ 1 ช่องแต่ว่า แต่ละช่องจะต้องเรียงติดกันในแนวตั้งหรือ แนวนอน และจำนวนที่วงได้ในหนึ่งวงจะต้องเป็น 2n โดยที่ n เป็นสมาชิกของ [0,)  ขอบบนและขอบล่างของ Karnaught map ถือว่าติดกัน เช่นเดียวกับขอบข้างซ้าย และขอบข้างขวาก็ติดกันเช่นเดียวกัน จากตัวอย่างด้านบนจะสามารถวงได้ดังนี้

https://www.facstaff.bucknell.edu/mastascu/eLessonsHTML/Logic/Logic3A05.gif

เมื่อวงได้ตามรูปนี้ จะเห็นอีกว่า ไม่ว่า z จะมีค่าความจริงเป็น 0 หรือ 1 ค่าความจริงในวงสีแดงก็ยังคงเป็น 1 ดังนั้น จะสามารถเขียน Boolean expression ได้ตามนี้ w ̅xy ̅  


ตัวอย่างการวงใน karnaught map




00
01
11
10
00

1
0
0
1
01
1

1
1
11
1


1
10
1


1




ที่มารูปภาพ : http://somyut.krutechnic.com/unit34.html

วันพฤหัสบดีที่ 25 สิงหาคม พ.ศ. 2559

ความรู้ที่ได้รับ (สัปดาห์ที่ 2)

- Sum of Product
 
   เป็นการออกแบบ Logic Gate ให้ได้ค่าความจริงตาทต้องการ โดยการคูณอินพุททั้งหมดที่ทำให้         ผลลัพท์ออกมาเป็น 1 จากนั้นเอาทั้งหมดมาบวกกัน

ตัวอย่าง


   

- คุณสมบัติต่างๆของการคำนวณ Logic
 
   ถูกใช้หลังจาก Product of Sum เพื่อทำให้วงจาร Logic gate มีความซับซ้อนน้อยลง โดยใช้สมบัติต่างๆของ ตรรกะศาสตร์มาประยุกต์ใช้ เช่น
   การบวก หมายถึง "หรือ" หรือ ˅ ,การคูณ หมายถึง "และ" หรือ ˄ และ ⊕ หมายถึง XOR(exclusive or) หรือมีค่าเท่ากับ นิเสธของก็ต่อเมื่อ เช่น A⊕B มีค่าความจริงเป็น ~(AB)



Assignment 2


    จากวิดีโอเราให้ Logic monitor D7 , D6 และ D5 เป็นตัวแสดงสถานะของ Input แต่ละตัวและ Logic monitor D1 เป็น Output ของโจทย์ข้อแรกซึ่งกำหนดให้ว่าถ้าหากมี Input อย่างน้อย 2 ตัวเป็น True Output ถึงจะเป็น True และ Logic monitor D0 เป็น Output ของโจทย์ข้อที่ 2 ซึ่งกำหนดว่า Output จะออกมาเป็น False ได้ก็ต่อเมื่อ Input เป็น True หรือ False ทั้งหมดเท่านั้น
     จากนั้นเขียนตารางค่าความจริง(Truth Table) และใช้ Product of Sum เพื่อเขียน Boolean expression ที่ได้ค่าความจริงตาม Truth table ดังนี้

ตารางค่าความจริงที่ได้จากข้อ 1 และข้อ 2

    จากตารางค่าความจริงจะสามารถหา Boolean expression จาก Sum of Product ตามภาพ


การลดรูปวงจรของข้อแรก



การลดรูปวงจรของข้อที่สอง



    เมื่อลดรูปเสร็จ จึงนำไปต่อวงจร ลอจิกเกต ตามภาพ


วันพุธที่ 17 สิงหาคม พ.ศ. 2559

Assignment 1 ความแตกต่างระหว่าง IC Gate 74HC04 กับ IC Gate 74HC14

1. IC Gate 74HC04 กับ 74HC14 มีการทำงานที่ต่างกันอย่างไร เพราะอะไร?


74HC04 เป็น inverter ธรรมดา แต่ 74HC14 เป็น Schmitt trigger inverter ซึ่งต่างจากแบบธรรมดาตรงค่า threshold ที่แบ่งว่า input ที่เข้ามาจะเป็น High หรือ Low ในแบบธรรมดาจะมี threshold ค่าหนึ่งแต่ Schmitt trigger จะใช้thresholdสองค่า ค่าหนึ่งจะแบ่งเมื่อvoltageเพิ่มจาก Low เป็น High ในdatasheetเรียกว่า positive-going threshold (vt+) อีกค่าจะแบ่งเมื่อvoltageลดจากlowเป็นhigh ในdatasheetเรียกว่า negative-going threshold (vt-) ซึ่ง positive-going threshold จะมีค่าสูงกว่า negative-going threshold

การที่ 74HC14 มีค่า threshold สองค่า ทำให้เมื่อสัญญาณ analog มี noise สัญญาณ digital ที่ได้จาก inverter จะไม่เปลี่ยนแปลงตาม noise ของสัญญาณ analog ที่ได้รับมา

ภาพแสดงสถานะของสัญญาณที่ออกจาก Gate แบบ Inverter ธรรมดา (A) และแบบ Schmitt trigger inverter (B) โดยที่ (U) เป็นสัญญาณเข้า 


2. อธิบายว่า Threshold ที่ใช้ในการแบ่งแรงดัน Analog เป็น Logic “Hi” หรือ “Low” ของ IC Digital ขึ้นอยู่กับอะไร?


                Threshold ของ gate แต่ละ gate จะขึ้นอยู่กับชนิดของgateแต่ละอัน Threshold ของ gate ทีไม่ใช่ Schmitt trigger จะไม่ถูกระบุใน Datasheet แต่จะบอกค่า VIH และVIL ซึ่งถ้าแรงดันขา Input มีค่าสูงกว่า VIH แล้วจะการันตีว่า Output จะออกมาเป็น High ถ้าต่ำกว่า VIL Output จะเป็น Low แต่มันจะมีช่วงระหว่างสองค่านี้ซึ่งเป็นช่วงที่ Threshold อยู่แต่จะไม่การันตีว่าเป็นค่าไหน ดังนั้นการที่มี Voltage Input ตกอยู่ช่วงนี้จะไม่สามารถบอกได้ว่า Output จะออกมาเป็น Low หรือ High ซึ่งค่า VIL และVIH มันจะไม่เหมือนกันตามชนิดของ Gate ตามกราฟด้านล่าง


ความรู้ที่ได้รับ (สัปดาห์ที่ 1)

- สัญญาณดิจิตอลมี 2 สถานะ คือ 0 (Low) และ 1 (High) ซึ่งต่างจาก อนาล็อก
- มี Logic gate อยู่มากมายหลายชนิด
- ได้ทดลองใช้บอร์ด Microcontroller NX-100
- ได้ทดลองใช้ Logic gate 74HC04 และ 74HC14 และได้เห็นความแตกต่างระหว่าง Logic gate ทั้ง 2 ชนิด