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

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

LED 7-Segment 

               ที่จริงแล้วก็คือ LED ต่อกัน 7ดวง และมี LED จุด 1 ดวง a-g และ DP คือ point หรือจุด


           ซึ่งหลักการจะให้มันโชว์ตัวเลข หรือว่าตัวอักษร นั้นก็ต่อเมื่อเราสั่ง LED 7ดวงนั้นให้อะไรดับ อะไรติด   ดังรูป


ทั้งนี้ 7-Segment จะมี 2 แบบ แบ่งตามขา common ดังรูป


        - Common Cathode คือการนำขา Common ไปต่อกับแรงดัน (Voltage) 0 V แล้วนำขั้วตรง a - g , DP ไปต่อเข้ากับแรงดัน +5 V เมื่อต้องการให้ LED ติด
        - Common Anode สลับกัน โดยนำขา Common ไปต่อกับแรงดัน (Voltage) +5 V แล้วนำขั้วตรง      a - g , DP ไปต่อเข้ากับแรงดัน 0 V เมื่อต้องการให้ LED ติด

Example เมื่อเราต้องการให้ 7-Segment Output เป็นเลข 0 เราต้องสั่งให้ a,b,c,d,e,f เป็นlogic 1 แต่ว่า g เป็น logic 0

Decoder 

จากตารางจะเห็นว่าเป็นการยากที่เราจะต้องมาสั่งแบบนี้ไปตลอด ดังนั้น จึงมีการสร้างวงจร Decoder หรือพูดง่ายๆก็คือ วงจรถอดรหัส เพื่อที่เราจะได้สั่งเพียงแค่  4 เส้น คือ 1s 2s 4s 8s ที่จริงก็คือเราสั่งแบบ binary เลขฐาน2 แล้วdecoder จะช่วยแปลงให้กลายเป็น logic 8 เส้นเพื่อควบคุม 7-Segment นั่นเอง


อันนี้คือตารางการแปลง binary เป็น HEX เพื่อ Display ที่ 7-segment ของ Decoder



BCD (Binary Coded Decimal)

เราสามารถแปลง เลขฐาน2 ไปเป็น เลขฐาน 16 จาก decoder แต่แล้วถ้าเราอยากจะแปลงเป็นเลขฐาน 10 ซึ่งมีตั้งแต่ 0-15 เราจะต้องใช้ 7-Segment ทั้งหมด 2 อัน , Decoder 2 ตัวและวงจร BCD ในการควบคุม
โดยต้องแปลง binary เป็น BCD เป็นขั้นแรก


แต่ก่อนจะรู้ว่าเราจะต้องสร้างวงจร BCD ยังไง เราก็ควรจะรู้ก่อนว่า truth table ของเราเป็นแบบไหน ซึ่งก็คือการนำเอา Input กับ Output ทั้งหมดมาสร้าง truth table ขึ้นได้ดังตาราง


ดังนั้นเมื่อเรานำไปสร้างเป็น digital circuit จึงได้เป็น
BCD to 9's complement circuit

Encoder

เมื่อเรามี Decoder เราก็มี Encoder เช่นเดียวกัน ซึ่งเป็นวงจรเข้ารหัสบางสิ่งบางอย่าง อย่างเช่นรูปด้านล่าง จะเห็นว่า เราใส่ D0 - D3 แต่ Output ออกมาแค่ Q0 , Q1  เท่านั้น ถือเป็นการเข้ารหัสอย่างหนึ่ง

หรือ

จากรูปเราใส่ Input เป็น D0 - D3 แต่ Output มีเพียง Y0 และ Y2 เท่านั้น เราสามารถนำไปประยุกต์ใช้กับสิ่งต่างๆได้

Multiplexer 

คือ วงจรที่มี Input เข้ามา  2 ตัวและเราสามารถเลือก Output ได้เพียงหนึ่ง ผ่าน logic ที่ให้กับขา Sel(Select) อย่างเช่น ถ้าเราให้ logic 0 กับขา Sel Output ของเราจะเป็น Input ตัวที่ 0 นั้นเอง



truth table Multiplexer 2 input


Multiplexer แบบ 4-input 2 select


เราสามารถเลือก ได้ว่าจะให้ Input ไหน Output ออกไป ผ่านขา Sel ดังตาราง



เรานำเอาวงจร Multiplexer ไปใช้อย่างเช่น การเลือกค่า R ในวงจร Integrate ที่เราเคยเรียน


การประยุกต์ใช้จากหัวข้อข้างต้น มีการใช้ BCD , Multiplexer , Decoder , 7-Segment ในการสร้างวงจรที่รับ Input มาเป็น BCD แล้ว Output Display ออกมาเป็นตัวเลขที่ 7-Segment

ปัญหาที่พบ

   จากการต่อวงจร BCD เพื่อแปลง binary เป็น BCD โดยใช้ 7-Segment 2 ตัว และตัว Decoder นั้นพบว่า ถ้าเราไม่ออกแบบการต่ออย่างเป็นระบบ มีการ mark จุดว่าเราได้ต่อจุดไหนไปแล้ว และมีความเข้าใจที่มากพอเกี่ยวกับ circuit ที่กำลังต่อ จะพบว่า เราจะผิดพลาดได้หลายจุด ผมผิดพลาด 2 จุดด้วยกัน คือ 
1. เสียบสาย Output กับ 7-Segment สลับขากัน ทำให้ Display ที่แสดงออกมาผิดไปจากที่ควร
2. เสียบ IC กลับหัว ทำให้5V เข้า GND และ 0V เข้า Vcc แต่ทั้งนี้จากการตรวจสอบ IC ยังไม่เสีย สามารถใช้งานได้ปกติครับ

วิธีการ Debug วงจร =>  นำ Output 8 เส้น ไปเสียบกับ LED ทีละเส้น แล้วcheck ว่าถ้าInput pattern นี้ Output ตรงกับ truth table หรือไม่

reference

http://dsearls.org/courses/C391OrgSys/Homework/Hmwk06e.gif
http://www.thelearningpit.com/lp/doc/7seg/7segLed.gif
http://www.tutorialspoint.com/computer_logical_organization/images/priorityencoder_logiccircuit.jpg
http://www.codeproject.com/KB/system/441038/7segtruth.PNG
http://www.robotroom.com/DebouncedCounter/Figure713.gif
http://cds.linear.com/image/164_circuit_1.jpg
http://fourier.eng.hmc.edu/e85_old/lectures/digital_logic/img167.png
http://www.electronics-tutorials.ws/combination/comb17.gif?81223b
http://www.knowelectronics.org/bcd-to-9s-complement-converter-circuit/

วันอังคารที่ 25 สิงหาคม พ.ศ. 2558

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

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

Krnaugh Map(k-map)

Krnaugh Map(k-map)  คือ วิธีการที่ทำให้เราสามารถแปลง truth table เป็น digital circuits ที่มีการใช้ Logic Gate ต่ำสุดเท่าที่จะทำได้
หลักการทำ k-map

  1. วงแค่ บน - ล่าง - ซ้าย - ขวา
  2. วงแบบ 2^n
  3.  Sum-Of-Products ต้องมี logic '1' อย่างเดียวอยู่ภายในวง ห้ามมีlogic '0' ขั้นอยู่
  4.  Sum-Of-Products ต้องวงจน logic Output '1' ถูกใช้ครบทุกตัว
  5.  Products-Of-Sum ต้องมี logic '0' อย่างเดียวอยู่ภายในวง ห้ามมีlogic '1' ขั้นอยู่
  6. Products-Of-Sum ต้องวงจน logic Output '0' ถูกใช้ครบทุกตัว
  7. ยิ่งเราสามารถวง Output เพื่อยุบได้มากเท่าไหร่ Logic Gate ที่ต้องใช้จะยิ่งลดลงเท่านั้น


8. รูปแบบที่สามารถวงได้ โดยมองเป็น สเฟียร์



k-map 2 input  จะสามารถสร้างเป็นตาราง 2 x 2 ได้ โดย Output ที่สามารถเกิดได้มีทั้งหมด 4 แบบ


k-map 3 input จะสามารถสร้างเป็นตาราง 2 x 4 ได้

มีข้อสังเกตว่า หัวของตาราง จะเรียง 00 01 11 10 ซึ่งไม่ใช่การเรียงแบบ Binary แต่เป็นการเรียงแบบ Gray Code

Gray Code คือ การที่ค่าที่เปลี่ยนไปต่างจากค่าตัวก่อนหน้า 1 bit เสมอ ที่นำมาใช้ใน krnaugh map เนื่องจาก k-map เป็นตารางที่เปลี่ยนแปลงค่าทีละ 1 bit ต่อ  1 ช่อง จึงสัมพันธ์กับ Gray code




Example K-map 3 Input แบบ Sum-Of-Products



Example K-map 3 Input แบบ Products-Of-Sum




k-map 4 input จะสามารถสร้างเป็นตาราง 4 x 4 ได้

Example K-map 4 Input แบบ Sum-Of-Products และ Products-Of-Sum




ส่วน K-map ที่มากกว่า 4 input นั้นส่วนใหญ่ไม่ค่อยได้รับความนิยม จะหันไปใช้ program computer ในการคำนวณจาก truth table ให้กลายเป็น digital circuit แทน อาทิเช่น program "Logic Friday" เป็นต้น

Example รวมของ K-map

Don't care 

คือ การที่เราไม่สนใจค่า Output ของ มันเพราะว่าเป็นกรณีที่ไม่สามารถเกิดขึ้นได้จริงจาก Input ที่เราต้องการมักใส่สัญลักษณ์ '*' ไว้ใน Krnaugh Mapเพื่อบอกว่าตัวนั้นคือตัวที่ไม่จำเป็นต้องสนใจ


เราสามารถนำ Output ที่ don't care ใส่เข้าไปในวงกลมของ k-map ได้เพื่อยุบรวม ถ้ามันจะทำให้ Output ที่ออกมา ใช้ Logic gate น้อยลง

DeMorgan's Theorem

คือ ทฤษฎีที่ช่วยให้เราสามารถยุบรวมตัว Output ที่มีนิเสธติดอยู่ทั้งก้อนนั้น ให้นิเสธเหลือน้อยลง และใช้ Logic gate ที่น้อยกว่าเดิม เราสามารถเปลี่ยน NAND ให้เป็น OR ที่ invert Input ทั้งสองตัว และเปลี่ยน NOR ให้เป็น invert Input ทั้งสองตัวของ AND

Example DeMorgan's








อ้างอิง

http://jpkc.njau.edu.cn/szdzjs/pic/eng_dzjc/clip_image073.jpg
http://www.ubooks.pub/Books/B0/E77R7385/MAIN/images/14155.png
http://www.ibiblio.org/kuphaldt/electricCircuits/Digital/14096.png
http://m.eet.com/media/1062047/max-gc-03.gif
http://sub.allaboutcircuits.com/images/14131.png
https://www.safaribooksonline.com/library/view/introduction-to-digital/9780470900550/images/ch006-f013.jpg
http://www.ee.surrey.ac.uk/Projects/Labview/minimisation/karrules.html
https://learn.digilentinc.com/Documents/319

วันอังคารที่ 18 สิงหาคม พ.ศ. 2558

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

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

                      เมื่อเราต้องการจะแปลง truth table ซึ่งเราคิดได้จากวิธีการทางคณิตศาสตร์ เปลี่ยนมาเป็นวงจร อิเล็กทรอนิกส์ นั้นในบทความนี้จะมีด้วยกัน 2 แบบ คือ SOP(Sum-Of-products) และ POS(Products-Of-Sum) โดยเมื่อผ่านการแปลงแล้วจะกลายเป็น วงจร digital ที่ต่อกันระหว่าง And gate กับ OR gate จนสามารถทำงานได้ตาม  truth table ที่เราวางไว้

Sum-Of-Products หมายถึง การนำเอาผลคูณมาบวกกัน 

 - เราสนใจว่า Output ของ truth table ที่เราสร้างนั้น มี logic เป็น 1 ที่ Input กลุ่มไหน เพื่อที่จะเอามาInput กลุ่มนั้นๆมาจัดรูป และ คำนวณจนได้ผลลัพธ์ 
- เปลี่ยนรูปผลลัพ์เป็น digital circuit โดยการให้ อะไรเป็น + นำไปต่อกับ OR Gate , อะไรเป็นคูณนำไปต่อกันกับ And Gate , ถ้าเป็นตัวที่มี bar อยู่จะต่อกับ Not Gate
- ส่วนใหญ่เราจะใช้ตอนที่ Output มีค่าเป็น logic 1 น้อยกว่า logic 0

ตัวอย่าง
                                   

         จากที่เราเห็นข้างต้นวิธีการนี้ เราสนใจแค่ logic Output ที่เป็น 1 เท่านั้น เราจะนำ Input ต่างๆในกลุ่มเดียวกันที่ทำให้เกิด Output logic 1 มาคูณกัน และนำ Input แต่ละกลุ่มมาบวกกัน 

ปล. Input ที่เป็น logic 0 จะมีการใส่ bar หรือว่าสัญลักณ์ " ' " เพื่อบ่งบอก ส่วนตัว Input ที่เหลือจะเป็น logic 1


Products-of-Sum หมายถึง การนำเอาผลบวกมาคูณกัน

- ข้อแตกต่างจาก SOP คือ 
            - เราสนใจแค่ logic 0 ของ Output อย่างเดียวที่จะนำมาคิด 
            - bar ที่เราใส่ให้กับตัว Input หมายความว่า Input นั้นเป็น logic 0 สลับกับ Sum-Of-Products 
          
- ส่วนใหญ่เราจะใช้ตอนที่  Output มีค่าเป็น logic 0 น้อยกว่า logic 1 ความยุ่งยากจะลดลง

ตัวอย่าง



        
            ทั้งนี้ วิธีการ POS หรือ SOP เราไม่รู้ว่า Output ที่ออกมาคือ digital circuit ที่เล็ก และใช้จำนวน IC ที่น้อยที่สุดหรือยัง ดังนั้นเราจึงสามารถนำผลลัพธ์ที่เราได้จากทั้งสองวิธี ไปผ่านกระบวนการลดรูป  (Boolean  Algebraic )

Boolean  Algebraic 
       ตารางข้างต้นทำให้เราสามารถจัดรูปของสมการ Output ให้เหลือน้อยลงได้ แต่ทั้งนี้แล้วแต่สมการ บางสมการอาจจะเป็นลดจากเดิมไม่ได้แล้ว 

ข้อสังเกต

- step การคิด จากปัญหา สู่ digital circuit ที่ต่อจาก Gate ต่างๆ
       - step1 สร้าง  truth table จากโจทย์ปัญหาที่เราพบเจอ ให้ครอบคลุม
       - step2 เลือกใช้วิธี POS หรือ SOP ให้เหมาะสมกับ truth table 
       - step3 ลดรูปผลลัพธ์ที่ได้จาก POS และ SOP ให้เหลือสมการตัวแปรที่น้อยสุด
       - step4 เปลี่ยนสมการให้กลายเป็น OR Gate , And Gate , Not Gate ที่ต่อกันอยู่
       - step5 check ว่า digital circuit ที่สร้าง ได้ผลลัพธ์ตรงตาม truth table 
- การจัดรูปจากวิธี SOP หรือ POS ถ้าเกิดทำการลดรูป อาจออกมาได้หลายรูปแบบ ลักษณะแตกต่างกัน แล้วแต่ step การคิดของคนแต่ละคน แต่ทั้งนี้ต้องอยู่ในขอบเขตที่ได้มี Truth Table แบบเดียวกัน
- ทุกๆข้อเราสามารถให้วิธี POS หรือ SOP ทำก็สามารถแปลงเป็น digital circuit ได้ แต่ความเหมาะสมจะไม่เท่ากัน
- มีสูตรที่ควรจดจำไว้คือ
สูตรที่1

สูตรที่2
สูตรที่3


ตัวอย่างการลดรูปด้วย Boolean  Algebraic 



ปัญหาที่พบ

- จากการต่อวงจรพบว่า แม้เราจะเข้าใจในทางทฤษฎี แต่การต่อจริงนั้นมีความยากที่มากกว่า ไม่ว่าจะเป็นการเลือกใช้ IC ให้ถูกตัว ต่อให้ถูกขา ต้องเข้าใจวงจรจริงๆ และสามารถ debug ได้เองว่าถ้า Output มาผิด มันควรจะผิดตรงไหน 



- โอกาสOutput จะผิดมีอยู่สองอย่างคือ 
      -  truth table ที่สร้างขึ้น รวมถึงสมการเรานั้นผิด
      - เราต่อวงจรผิดจากสมการที่สร้าง


อ้างอิง

http://goo.gl/vx8JMR
http://goo.gl/jDvu1R
http://goo.gl/YzwM0n
http://goo.gl/zfMqM7
http://goo.gl/Z7m9ar

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

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

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

การ บวก / ลบ เลขฐาน 2 ทาง math

- การทำ 2's Compliment เพื่อให้ได้ค่าติดลบ ของเลขฐาน 2 มีสอง ขั้นตอน
   ขั้นแรก : 1's Compliment  คือการแปลง 0 เป็น 1 , แปลง 1 เป็น 0
   ขั้นสอง : +1 เพิ่มเข้าไป เพื่อให้ได้ค่าติดลบของตัวเลขตั้งต้น

- standard Compliment คือ ค่าที่ช่วง data range เท่ากับ unsign long data แต่ว่า จะมี data ที่ติดลบอยู่ด้วยเช่นถ้าเป็น 8 bit จะมีdata ตั้งแต่ -128 ถึง 127 เป็นต้น
         
- ค่า maximum ของdata แต่ละบิต คิดจาก 2^n -1 เช่น 8 bit ก็จะมีค่าdata สูงสุดอยู่ที่ 256-1 = 255
- MSB : bitที่มีค่าประจำหลักมากที่สุด เวลาแปลงค่าจะให้ตัวนี้นี่แหละที่ติดลบตัวเดียว  ในถ้า standard Compliment MSB เป็น 0 แสดงว่าเป็นdata ค่า + แต่ถ้า MSB เป็น 1 แสดงว่าเป็น data ค่า -
- LSB : bit ที่มีค่าประจำหลักต่ำที่สุด

- ห้าม ทำการบวกค่าdata ที่มีฐานไม่เท่ากัน เด็ดขาด เพราะว่ามันจะทำให้ได้ผลลัพธ์ที่ผิดพลาด
- ผลลัพธ์ที่ได้จากการ + สมมุติว่าเป็นเลขฐาน2  4 bit บวกกัน ก็ต้องได้ 4 bit ถ้าเกิดว่าผลลัพธ์มันเกินต้องตัดทิ้งให้ bit เท่ากับตัวdataตั้งต้นที่นำมาบวก
-การที่เป็น standard Compliment มีข้อควรระวังเรียกว่า "Overflow" มันคือการที่ค่าผลลัพธ์จริงเกินจำนวน bit ที่สามารถแสดงได้ ทำให้ผลลัพธ์ที่เราเห็นนั้นผิดพลาดไปจากความเป็นจริง
     - วิธี Detect Overflow จากทฤษฎีที่ว่า
          data ค่าบวก สองตัว  + กันต้องได้ผลลัพธ์เป็น +
          data ค่าลบ สองตัว + กันต้องได้ผลลัพธ์เป็น -
          *ดังนั้นให้ดูค่าของ MSB ของผลลัพธ์ ถ้าMSB 2 ค่าที่นำมาบวกกันเป็น 0 ผลลัพธ์ต้องมี MSB เป็น 0 ด้วย แต่ถ้า MSB ของผลลัพธ์ ถ้าMSB 2 ค่าที่นำมาบวกกันเป็น 1 ผลลัพธ์ต้องมี MSB เป็น 1 ไม่เช่นนั้นแปลว่าเกิด "Overflow" !!
   
          ส่วนถ้าตัวนึงเป็นdataค่า - , อีกตัวเป็น data ค่า + แล้วนำมาบวกกัน จะไม่เกิด Overflow แน่นอนเพราะค่าลดลง

การต่อวงจร digital บวก / ลบเลขฐาน2

- Half-adder : การต่อ logic gate เพื่อให้สามารถบวกเลขฐาน2 ได้ขนาด 1 bit มีข้อเสียคือไม่สามารถคำนวณตัวทดได้ 
- จากข้อเสียของ "Half Adder" ทำให้เกิดการต่อแบบ "Full Adder" ซึ่งก็คือการนำ half adder ต่อกันสองชุด เพื่อให้สามารถบวกเลข 1 bit และ คำนวณตัวทด(Carry)จากตัวก่อนได้ ได้อย่างสมบูรณ์เมื่อเทียบกับทฤษฎีทางคณิตศาสตร์
ปัญหาที่พบเจอใน class

ทั้งนี้การต่อแบบ Half Adder หรือ Full Adder ไม่สามารถ ลบเลขฐาน 2 ได้ ดังนั้นจึงต้องออกแบบวงจรแบบใหม่ ที่ประกอบขึ้นจาก วงจรFull Adder ที่ทำงานกับ XOR gate กลายเป็นวงจรที่ + หรือ - เลขได้จากขา OP ที่ต่ออยู่กับ ขา A0,A1,A2,A3
  ผลการค้นหารูปภาพสำหรับ base 2 subtraction circuit

   ตัวอย่างการทำงานของวงจรบวก/ลบเลขฐาน
                    เมื่อ OP เป็น logic 0

         
                    เมื่อ OP เป็น logic 1
          
             ปล. ภายในวงจรนี้เราสามารถ Check การ Overflow ได้ด้วย จากการต่อ OR gate เพิ่มเข้าไป 1ตัวให้ขา A เชื่อมกับ C3 และ ขา B เชื่อมกับ C4 เราจะเรียกมันว่า "ขา Overflow" ถ้า logic เป็น 1 แปลว่า เกิดการ Overflow !!

ปัญหาที่พบ


- การต่อวงจรจาก Schematic มีความยากจากการที่เราต้องดูขาของ IC ที่เราหยิบมาด้วย เนื่องจากการเรียงขาไม่ได้เหมือนกันทุกตัว และแต่ละตัวก็มีคุณสมบัติที่ต่างกัน ต่อให้เป็น Gate ชนิดเดียวกัน

-เวลาคำนวณต้อง check ให้แน่ใจก่อนว่า data ที่เราต้องการคำนวณจะอยู่ในช่วงไม่เกินกับที่วงจรของเรารองรับได้ไม่งั้นจะเกิด Overflow

- มักจะมีคนลืมว่าการนำเลขฐานสองมาบวกกัน ต้องเป็น bit ที่เท่ากันเท่านั้น ไม่งั้นค่าจะคลาดเคลื่อนจากความเป็นจริง

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


อ้างอิง
http://goo.gl/BJqz3i
http://goo.gl/MFIduY
http://goo.gl/o69JpM