วันพฤหัสบดีที่ 3 กันยายน พ.ศ. 2558

COMBINATIONAL LOGIC FUNCTIONS [WEEK 5]

     สำหรับในสัปดาห์นี้นะครับ อย่างแรกเราก็ได้เรียนการทำ 7segments ที่หลายๆคนน่าจะรู้จักกันดีมันคือหน้าจอแสดงตัวเลขที่น่าจะพบเจอกันบ่อยจากแวดล้อมรอบตัว มาดูกันเลยดีกว่า

(1) 7-Segments
     มันเป็นอะไรที่หลายๆคนอาจจะยังสงสัยว่า เอ๊ะทำไมมันถึงแยกตัวเลขแต่ละตัวได้ จริงๆแล้วนะครับ มันมีแค่ไฟ 7 ดวงที่วางเป็นลักษณะที่เราเห็น มันไม่ได้แสดงได้แค่ตัวเลขเท่านั้น มันสามารถแสดงเป็นอะไรก็ได้ที่เราอยากให้เป็นครับ โดยมีขอบเขตของสิ่งที่แสดงได้เป็นตำแหน่งของไฟมันนั่นเอง
รูปที่ 1 ตัวอย่าง 7-segments

      โดยหลักการทำงานของมันจะเป็นแบบนี้ครับ

รูปที่ 2 หลักการทำงานของ 7-segments

     ซึ่งเราจะเห็นว่ามันคือการเอาไฟทั้ง 7 ดวงมาต่อแบบ Pull-up หรือไม่ก็ Pull-down ครับ ไฟเข้าดวงไหนดวงนั้นก็ติด #ง่อวธรรมดาชะมัดดด แต่ที่พิเศษของอาทิตย์นี้คือ เราจะใช้ input แบบเลขฐานสองมาสั่งให้ไฟเปิดเป็นตัวเลขนั้นๆในฐาน16บนหน้าจอ 7-Segments ครับ โดยเราจะใช้ Decoder ในการแปลงรูปแบบของ input รอบแรกมาขึ้นแค่ไฟ 1 ดวงครับโดยจะเป็นตามรูป

รูปที่ 3 ผ่าน decoder
   
Class Work 1
     ทีนี้อาจารย์ก็ให้เราลองเขียนสมการที่ทำให้ input เข้าไปเท่าเดิมแต่ปกติเลขหลัง 10 มันออกเป็น A B C d ใช่ไหมครับ เราก็อยากให้มันออกเป็น 10 11 12 13 โดยใช้ 7-segments เพิ่มขึ้นอีกตัวครับ เราก็จะต้องทำ logic ขึ้นมาได้ดังนี้ครับ

รูปที่ 4 Logic ที่ทำผ่าน 7-Segments

     ต่อเสร็จแล้วจะได้เป็นความอลังการงานสร้างมากครับ

รูปที่ 5 ผลงานที่ได้ตอน input เป็น 1001 ครับ (=9ในฐาน168ครับ) 

     สวยสุดๆไปเลย ซึ่งวิธีการทำ Logic ก็สามารถดูได้จาก Week 3-4 ครับ หรือถ้าอยากสะดวกรวดเร็วใช้โปรแกรมช่วยได้เลยครับผม
.
(2) Multiplexer (MUX)
     Multiplexer คืออุปกรณ์ที่ทำหน้าที่เหมือนสวิตช์ ลักษณะเหมือนสับรางรถไฟให้ตรงกันจากสวิตช์ตัวเดียว  ลองมาดูกันเลยครับ

รูปที่ 6 แสดงลักษณะการทำงานของ Multiplexer


รูปที่ 7 Truth Table ของ Multiplexer แบบ 2 input


Class Work 2
     ทำ Multiplexer แบบ 4 input จาก Multiplexer แบบ 2 input

รูปที่ 8 ตัวอย่างการทำ Multiplexer แบบ 4 input จาก Multiplexer แบบ 2 input

รูปที่ 9 ตัวอย่างการทำ Multiplexer แบบ 4 input จาก Multiplexer แบบ 2 input





Read More

วันศุกร์ที่ 28 สิงหาคม พ.ศ. 2558

KARNAUGH MAPS [WEEK4]

     ชื่อเรื่องของสัปดาห์นี้ก็กินใจแล้วครับบ คาร์โนห์แมพ #อึ้งครับอ่านไม่ออกT_T มันคืออีกวิธีหนึ่งที่สามารถลดรูปสมการ logic ได้ด้วยวิธีการที่ง่ายกว่ามากๆ เรามาลองดูตัวอย่างสักสองสามหลักกันดีกว่านะครับ

วิธีการทำ Karnaugh Maps


รูปที่ 1 ตัวอย่างการทำตาราง K-Maps

     ดูจากตารางข้างซ้ายเราจะมาเขียนคานูแมพแบบรูปด้านขวาครับ โดยจะแบ่ง A กับ B แล้วก็เรียงค่า 0 กับ 1 ใช่ไหมครับสำหรับกรณีมี input 2 ตัว ครับ ทีนี้ สิ่งที่เราจะมาสังเกตคือเลข 1 ที่ติดกันครับ #งงเลยสิเป็นไงหว่า ครับผมโดยวิธีการสังเกตมันจะมีกฎอยู่ครับ 3 ข้อ คือ
     1 - ตัวเลข 1 ที่ติดกันต้องเป็นจำนวน 2 ยกกำลัง n คือ 2 4 8 16 ... ตัว ครับ
     2 - ห้ามวงแนวทะแยงเฉียง
     3 - วงให้ครบทุกจุดที่สามารถวงได้ โดยสามารถวงเลขที่ถูกวงไปแล้วไปอีกกลุ่มได้
     ซึ่งเราจะได้ผลลัพธ์แบบนี้ครับ

รูปที่ 2 คำตอบของ K-Maps

      จากรูปข้อก่อนหน้าเราจะเห็นว่าเราวง 1 ได้ในช่องที่ B ต้องเป็น 1 โดย A จะเป็น 1 หรือ 0 ก็ได้ใช่ไหมครับ ถ้าลดตามสมการบูลีนจะได้ตามตรงกลางของรูปเราจะเห็นว่ามันเต็มไปตามรูปแบบคำตอบที่อยู๋ในรูปด้านขวาเลย เราวง 1 ตรงไหนก็ได้ตามนั้น #มันง่ายกว่าจริงๆเล้ยยย คำถามต่อไปคือ ถ้า input มากว่า 2 ตัวทำไงดี ... อึ้งเล้ยยย

     ก็จะเป็นแบบตารางฝั่งขวาครับ หลักการทำงานจะคล้ายๆกันคือวงตามกฏทั้ง 3 ข้อของเรา แต่สังเกตแถวแนวตั้งนะครับ การเรียงจะเป็นแบบขึ้นทีละบิตตามลักษณะของ Gray Code คือ  00 01 11 10 เสมอนะ #เรียกว่าเสมอจริงๆห้ามลืมมมม แต่เมื่อลักษณะของมิติที่มากขึ้น เราจึงมีวิธีการที่มากขึ้นครับ ลองสังเกตดูจากรูปต่อไปได้เลย
รูปที่ 3 K-Maps แบบ 3 input
   
รูปที่ 4 ตัวอย่างการทำ K-Maps แบบ 3 input
   
     จากรูปด้านบนก็ยังดูเป็นปกติเหมือนสองมิติ+กฎ3ข้อใช่ไหมครับ แต่ดูข้างล่างสิครับ #โอ้โหหห มันงอได้ด้วย ระวังกันดีๆนะะ

     อีกเรื่องของสัปดาห์นี้ที่เราได้ลิ้มลองกันก็จะเป็น ทฤษฏีบทเดอร์มอร์แกน ครับมันคือวิธีการตัดบาร์ซ้อนบาร์นั่นเองโดยจะมีสูตรดังนี้ครับ

DeMorgan's Theorems


รูปที่ 5 DeMorgan's Theorems

Read More

วันเสาร์ที่ 22 สิงหาคม พ.ศ. 2558

CONVERTING TRUTE TABLES INTO BOOLEAN EXPRESSIONS [WEEK3]

     สัปดาห์นี้เนื้อหาที่เรียนของเราก็จะแอดวานซ์ขึ้นครับ เราจะได้เริ่มรู้จักตารางอะไรทรู๊ดๆ กับบวกคูณตัวอักษรภาษาอังกฤษที่ใส่บลาๆ ทั้งหลายแหล่ แบบจัดรูปให้มันง่ายต่อการต่อวงจร Logic Gate นั่นเอง มาๆลองศึกษากันดีกว่า

1) Trute Table ตางรางแสดงค่าการทำงานของ System ใดๆ
     ก่อนอื่นคงต้องมารู้จักตัวเลขของระบบในโรงงงโรงงานทั้งหลาย หรือที่เห็นชัดๆก็แบบคอมพิวเตอร์รัยเงี้ยย ใช่มะ ก็นะครับ 1 คือ ระบบปิด ไฟเปิด กระแสไหล หรืออะไรก็ตามที่มีความหมายเชิง Active และ 0 ก็ตรงข้ามนะครับ ความหมายเชิง Off ทั้งหมดนั่นเอง มาดูตัวอย่างเพื่อการอธิบายที่ Full Option กันดีกว่า

รูปที่ 1 ตัวอย่างแสดง Trute Table ของ OR Gate
     ดูจากตารานะครับ เราน่าจะเคยเรียนคณิตศาสตร์ตรรกศาสตร์การใช้ "หรือ" มาแล้วใช่ไหมครับ ลองให้ 1 แทน ถูก แล้ว 0 แทน ผิด แล้วท่องตามที่เรียนมาสิครับ "ถูก หรือ ถูกเป็นนนน...." "ถูก!" นั่นเองงง #เก่งมากปรบมือออ นี่คือ Trute Table นั่นเอง ตารางที่แสดงค่าความจริงของ System output ที่มีค่าใดๆเปลี่ยนแปลงไปต่างๆกันนั่นเอง

2) Boolean Algebra 
   เป็นหลักการทางคณิตศาสตร์ #อีกละ ที่ใช้ในการออกแบบวงจร Logic Gate แบบให้ง่ายลง โดยใช้เลข 1 กับ 0 เป็นระดับของ logic แทนเป็นตัวแปรในแบบต่างๆมาบวกๆคูณๆให้ได้รูปที่งดงาม และลดวงจรยืดเยื้อให้สั้นลงเวลาไปต่อจะได้ชิลๆมากขึ้น

     Sum Of Products (SOP) คือการเขียน Boolean Expression ออกมาในรูปของการบวกกันของผลคูณ โดยให้เขียน Boolean Expression ในรูปของผลคูณของ Input ใดๆที่ทำให้ Output เป็น 1 จากนั้นเขียน Boolean Expression ในรูปของการบวกกันของผลคูณเหล่านั้น ตามตัวอย่างในรูปที่ 2

รูปที่ 2 ตัวอย่างการทำ SOP

     Product Of Sum (POS) คือการเขียน Boolean Expression ออกมาในรูปของการคูณกันของผลบวก โดยให้เขียน Boolean Expression ในรูปของผลบวกของ Input ใดๆที่ทำให้ Output เป็น 0 จากนั้นเขียน Boolean Expression ในรูปของการคูณกันของผลบวกเหล่านั้น ตามตัวอย่างในรูปที่ 3

รูปที่ 3 ตัวอย่างการทำ POS

   

3) การลดรูปของสมการบูลลีน
 
รูปที่ 4 ตัวอย่างการลดรูปโดยพีชคณิตบูลีนโดยใช้หลักการลดรูปแบบหนึ่ง  
     จากรูปที่เราเหนฝั่งซีกขวาก็จะเป็นการลดรูปมันลงเรื่อยโดยใช้หลักการทางซีกซ้ายครับ เราจะเห็นว่า A+AB จะเท่ากับ A เลยเพราะมันมีหลักการต่างๆมากมาย ซึ่งเราจะพูดในส่วนต่อไปครับ
     สำหรับคณิตศาสตร์ สมการมีการจัดรูป ก็ต้องมีพวกเอกลักษณ์ หรือสมบัติต่างๆใช่ไหมครับ ของบูลีนก็เช่นกันมาดูกันดีกว่าว่ามันมีอะไรบ้าง

     Boolean Algebraic Identities (เอกลักษณ์ของบูลีน)


     Boolean Algebraic Properties (คุณสมบัติของบูลีน)


     การลดรูปโดยใช้กฏของบูลีน


Read More

วันอาทิตย์ที่ 16 สิงหาคม พ.ศ. 2558

NUMBER SYSTEMS [WEEK2]

     สำหรับการเรียนในสัปดาห์ที่ 2 นั้น ว่าด้วยเรื่องของ "การบวกลบระบบเลขฐานสองและการต่อวงจร logic gate" ซึ่งคาบเรียนนี้ก็ทำให้แปลกใจได้ไม่น้อย ใครจะไปรู้ว่าเลขฐานสองที่มีแค่ 0 กับ 1 สามารถบวกลบให้ค่าของเลขนั้นในฐานสิบเท่ากันได้ด้วย!? #ตื่นเต้นหละสิ้ ใช่เลยเราก็เช่นกัน ที่สำคัญยิ่งกว่าคือ กระแสไฟฟ้าบนแผงวงจรที่ต่อสายพันกันไปหมด ก็ดันสามารถแสดงค่าบวกลบเลขฐานนี่ได้ในแบบของมันด้วย #โอ้โห ไปดูสิ่งที่ได้เรียนรู้กันเลยดีกว่าา :D (ผิดพลาดประการใดขออภัยครูผู้สอนและผู้ตรวจด้วยนะค้าบ)

1) "การบวก" เลขฐานสอง
     อย่างที่หลายๆคนรู้กัน เลขฐาน 2 มันก็มีแค่ตัวเลข 0 กับ 1 ใช่ไหมครับ แล้วเลขฐานสองที่แปลมาจากเลขฐานสิบทั้งหลายนี่ยาวเป็นพรืดด อย่างเช่น 01101 จะมีค่าเท่ากับ 13 ใช่ไหมครับ ถ้าเอามา + กับ 01010 (ในฐานสิบมันคือเลข 10) ผลที่ได้มันจะต้องเป็นเลขฐานสองที่มีค่าฐานสิบเท่ากับ 23 พอดีเป๊ะๆ #อึ้งชิมิล่ะะะ (ในที่นี้เป็นเลข 5 บิตนะ...ทำไมหนะเหรอ มันมีเหตุผล*) วิธีการบวกก็ไม่ยากครับ
    0 + 0 เท่ากับ 0
    1 + 0 หรือ 0 + 1 เท่ากับ 1
    1 + 1 จะเท่ากับ 10 (ไม่ใช่เลขสิบแต่อย่างใด มันคือหนึ่งศูนย์นะ ใส่ศูนย์ทดหนึ่งไปบวกตัวหน้า)
    **แล้วถ้ากรณีมันเป็น 1 + 1 แต่ดันมีเศษมา + อีก 1 หละ จะได้ว่า 1 + 1 + 1 เท่ากับ 11 (หนึ่ง ทด หนึ่ง) นั่นเอง มาสองกันเถอะๆ
1               
0 1 1 0 1 +
0 1 0 1 0   
 1 0 1 1 1   
10111 มันเท่ากับ 23 ในฐานสิบเป๊ะๆ #ไม่ธรรมดาา
พอได้การบวกแล้วการลบก็ไม่ยากแล้วหละครับ..

2) "การลบ" เลขฐานสอง
     ในระบบเลขฐานสองเราจะถือการลบเป็น "บวกด้วยเลขค่าลบ" เช่น 13+(-10) นั่นเอง โดยเราจะทำให้ 10 ในเลขฐานสองเป็น -10 ด้วยวิธีที่ง้ายง่ายแต่ก็ยาก #เอ๊ะยังไง มาดูกันครับ
เราเรียกวิธีการนี้ว่า Compliment ครับ (ในความเป็นจริงมันคงจะยากกว่านี้ อันนี้เป็นเพียงวิธีที่ผมเข้าใจนะครับ) มันคือการเอาเลขฐานสองที่อยากให้เป็นลบของเรามาผ่านกระบวนการ 2 ขั้นตอน ได้แก่
1's Compliment = กลับเลข 1 เป็น 0 และ 0 เป็น 1 ให้หมด เช่น เลข 10 ของเรา 01010 เป็น 10101
2's Compliment = จับ + 1 เพิ่มเข้าไปจากตัวที่กลับเลขแล้ว จะได้เป็น 10110 << คือ -10 ของเราแล้วครับ
แล้วเราก็เอา -10 (10110) ของเราเนี่ยไป + กับ 13 ในระบบการบวกฐานสอง ก็จะได้ 
01101+10110 = 00011 โดยมีทด 1 อยู่หน้าสุด ในที่นี้เป็นเลข 5 บิต ตัวที่เกินจาก 5 หลักไปจะเรียกว่า extra bit ซึ่งเราจะทอดทิ้งมันไป #ฮ่าๆหัวเราะอย่างสะใจเหมือนคะแนนที่กำลังจะหายไปของบล็อคเกอร์T_T  ซึ่ง 00011 คือ 3 ในฐานสิบนั่นเอง #ปรบมือออ

    *ทำไมต้อง 5 บิต...นั่นไงง ก็เพราะว่า จำนวนตัวเลขที่สามารถปรากฏกายออกมาได้ใน 4 บิตนั้นมันมีแค่ (2กำลัง4) 16 จำนวนซึ่งไม่ถึง 23 ของเราในค่าบวก ถ้าเราบวกๆกันไปใช่ไหมครับ เลขตัวหน้าจะโดนตัดทิ้งในหลักที่ 5 ทำให้ค่าที่ได้มัน "OVERFLOW" #เขาเรียกมาแบบนี้จริงๆเชื่อผมสิ หรือก็คือบวกมาแล้วค่าที่ได้ผิดพลาดนั่นเอง **ในที่นี้ยังไม่ได้อธิบายถึง ค่า unsigned อย่างการบวกในข้อ 1 เลย (หรือผมเข้าใจผิดขอให้จุดนี้เป็น ปัญหา ที่อาจจะเข้าใจไม่ท่องแท้ครับ)

3) การ OVERFLOW ของการบวกลบเลข
     การจะตรวจสอบวงจรของเราว่ามีการบวกลบแล้ว overflow หรือไม่นั้น
     3.1) ผลลัพธ์ที่เกิดจาก จำนวนบวก มาบวกกันต้องมีค่าเป็น บวก
     3.2) ผลลัพธ์ที่เกิดจาก จำนวนลบ มาบวกกันต้องมีค่าเป็น ลบ
     3.3) ในกรณีที่ จำนวนบวก บวกกับ จำนวนลบ จะไม่มีทาง overflow

4) การต่อ LOGIC GATE : Half Adder (บวกลบบิตเดียวได้)
     เทียบกับการเรียนรู้ที่ 1 การต่อวงจรจะเป็นแบบที่ใช้ XOR Gate และ AND Gate ให้ได้ผลรวม 1 บิต และเลขที่ทดออกทาง Cout

รูปที่ 1 ต่อ Logic Gate แบบ Half Adder

     ดูจาภาพซ้ายบนคือ input 0+0 ขวาบน 0+1 ซ้ายล่าง 1+0 ขวาล่าง 1+1 จะได้ output ไฟดวงขวาเป็นผลรวม ดวงซ้ายเป็นเลขทด (Cout) นั่นเอง จะพบว่ายังมีปัญหาอยู่ที่ เราคำนวนตัวทดต่อไม่ได้ #ทำไงหละทีนี้ จึงเกิดเป็นข้อถัดไปนั่นเอง

5) การต่อ LOGIC GATE : Full Adder (แบบ 1 บิตที่สามารถคำนวนเลขทดได้)
     จะเป็นการเอา Half Adder 2 ตัวมาต่อกันโดย Cout จาก Half ที่ 1 ไปเป็น Cin เทียบกับค่า input อีกตัว (การคำนวนเลขทดมาบวกกับบิตต่อไปนั่นเอง) ผลที่ได้ออกมาจะเป็น ผลรวมของแต่ละบิต แล้ว Cout สุดท้ายซึ่งเป็นตัวทดไว้ไปคำนวนกับ Full Adder อีกตัวนั่นเอง

รูปที่ 2 แบบการต่อแบบ Full Adder
   
รูปที่ 3 Full Adder 1 Bit
     โดยมี 3 input คือ A B และ Cin ที่ในกรณีจริงจะเป็น Cout จากบิตก่อนหน้า นั่นเอง

5) การต่อ LOGIC GATE : Full Adder (มากกว่า 1 บิต)
     เป็นการเอา Full Adder มาต่อกันตามจำนวนบิตที่ได้ ในกรณีนี้สามารถทำ Compliment หรือ Detect Overflow ได้ด้วยการต่อ Gate เพิ่มตามตำแหน่งต่างๆ ตามภาพ

รูปที่ 4 การต่อ Full Adder แบบ 4 บิตที่สามารถทำ Compliment
ผ่าน XOR Gate 4 ตัวด้านบน กับ Detect Overflow ด้วย SOR Gate ตัวซ้ายล่าง

รูปที่ 5 การเรียนรู้ที่ 3 Full Adder 2 บิต
**ในรูปที่ 5 นี้ไม่สามารถแสดงผลได้มากกว่า 2 ยกกำลัง 2 คือ 4 จำนวน (-1 ถึง 2) ดังนั้นค่า input อื่นๆที่มากกว่าในภาพ (01+01) จะ overflow ค้าบ

Read More