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

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

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

โดยหลักแล้ว digital circuit มีด้วยกัน 2 แบบคือ

1. Combiration : Input และ Output สามารถคำนวณได้จากการใช้ Truth table มีความแน่นอน
2. Sequential    : การที่จะรู้ว่า Output จะออกมาเป็นเช่นไรขึ้นอยู่กับ state ก่อนว่า Output แบบใด Input แบบใด และขึ้นอยู่กับ Input ปัจจุบันด้วย สามารถนำไปประยุกต์ใช้เกี่ยวกับ memory และ counter ได้

- พูดถึง basic ของ Combiration ว่าต้องเป็น logic gate ดังนั้นถ้าพูดถึง Sequential เราต้องมองหา       Flip-Flop  เราจะมาดูกันว่ามันคืออะไร

Flip-Flop

 => อันที่จริงก็คือ logic gate นี่ละเพียงแต่ถูกต่อให้เกิด Truth table ที่ไม่แน่นอน และมีความสามารถในการ memory Output หรือ Input state ก่อนได้

เราสนใจ Flip-Flop 4 ประเภทคือ

1. RS Flip - Flop => มีด้วยกัน 4 state ตาม Truth table ไล่ทำความเข้าใจทีละ state
           - S เป็น logic 0 และ R เป็น logic 0 มันจะ No change ก็คือ hold วงจรไว้ที่ Output state ก่อนหน้านั่นเอง
          - S เป็น logic 0 และ R เป็น logic 1 หรือ S เป็น logic 1 และ R เป็น logic 0  อันนี้จะเป็น Output ที่แน่นอน ตายตัว
         - S เป็น logic 1 และ R เป็น logic 1 อันนี้ต้องบอกว่าเป็น state ที่ไม่สามารถประเมินได้ หรือ Undefined เราไม่รู้ว่าจะเกิดอะไรขึ้น ซึ่งจริงๆแล้วมันจะทำให้ทั้ง Q และ Q' ออกเป็น logic 0 ดังนั้นเราจะไม่นำเอามาใช้


2. JK Flip - Flop => อันนี้เป็น Flip-Flop ที่พัฒนามาจาก RS เนื่องจากเราไม่ต้องการ state "undefined" ดังนั้นความแตกต่างอย่างแรกคือ มีการต่อ NAND Gate เพิ่มเข้ามา 2 ตัว เพื่อเปลี่ยน state undefined ที่ไม่ต้องการ ให้กลายเป็น Toggle แทน ในตอนที่ S เป็น logic 1 และ R เป็น logic 1
           - หลักการทำงานเหมือนกับ RS flip-flop แต่ว่า บาง IC จะมีขา Reset แยกต่างหากมาด้วย อย่าง IC ที่อาจารย์นำมาให้ใช้ทดลอง ถ้ามีขา Reset หมายความว่า ให้ logic 0 ที่ Reset เมื่อไหร่ Output จะถูก Reset กลับไปเป็นค่าตามที่โรงงานผลิตออกมา
           - เมื่อเราทำให้ J เป็น logic 0 และ K เป็น logic 1 หรือ J เป็น logic 1 และ K เป็น logic 0  แล้ว เราต้องกดปุ่ม Clock เพื่อบันทึกค่าให้ Output แสดงออกมา ไม่เช่นนั้น ต่อให้เราสลับ switch แค่ไหน ก็ไม่ทำให้ Output เปลี่ยนไป
          - JK flip - flop นั้นก็มี state hold เหมือนกับ RS เมื่อเราให้ J เป็น logic 0 และ K เป็น logic 0 แม้ว่าเราจะกด Clock อย่างไร ก็จะไม่เกิดผลกับ Output เพราะ Clock จะดึง Output ของ state ก่อนมาแสดงวนไปเรื่อยๆ
*Toggle การที่เมื่อ Q เป็นlogic 0 พอ Toggle  1 ครั้ง จะสลับให้ Q เป็น logic 1


3. T-Type Flip-Flop => หมายถึง Flip-Flop ที่ถูกใช้ในการสร้าง Counter
           ลักษณะการทำงาน นำขา J และ ขา K ของ JK Flip-Flop มาต่อเข้าหากันเรียกว่าขา T เมื่อเราใส่ T เป็นแบบใด และ ขึ้นอยู่กับ Output ครั้งก่อนหน้าด้วย
                  - Output ครั้งก่อนเป็น 0 Input T เป็น 0 Output ปัจจุบันจะเป็น 0
                  - Output ครั้งก่อนเป็น 0 Input T เป็น 1 Output ปัจจุบันจะเป็น 1



เราสามารถแบ่ง Counter ออกได้ 2 รูปแบบคือ

1. Asynchronous Counters => แยกขา Clock  ของ JK Flip-Flop เป็นของใครของมัน ไม่ได้ต่อร่วมกัน
        - ทำให้เกิดการ Delay เวลาเปลี่ยน State จะทำงานช้ากว่า Synchronous
        - สร้างได้ง่าย
        - ความถี่ต่ำกว่า Synchronous Counter แน่อน

2.Synchronous Counter => ต่อขา Clock ของ JK Flip-Flop ไว้ร่วมกัน
        - ต่อได้ยาก ต้องมีการคำนวณว่าต้องเพิ่ม Logic gate แบบใด ต่อกันแบบไหนเพื่อให้ได้วงจรที่                   ทำงานได้ตามต้องการ
        
จากหลักการที่กล่าวมาข้างต้นเรานำมาสร้างเป็นวงจรAsynchronous  Counter ดังรูป


หลักการทำงานของวงจรคือ มี Output ทั้งหมด 4 ค่าคือ Q0 - Q3  signal ที่ส่งเข้าไปจะเริ่มจาก Clock ส่งหนึ่งครั้ง ดูที่ขอบขาขึ้น จะมีผลกับ Q0 ทำอย่างนี้ไล่ไปตั้งแต่ LSB ถึง MSB เราจะได้วงจรที่สามารถ Counter ค่าได้ ขึ้นอยู่กับ Clock Pulses ที่ส่งมาว่ากี่ครั้ง


4. D-Type Flip - Flop => หมายถึง Flip-Flop ที่ถูกใช้ในการสร้าง Shift Register
        ลักษณะการทำงาน
                - เมื่อขา Clock เป็น 0 ไม่ว่าขา D จะเป็นอะไรก็ตาม Q และ Q' จะขึ้นอยู่กับ Output state                              ก่อนหน้า
               - เมื่อขา Clock เป็น logic 1 จะมี 2 กรณี
                         - ขา D logic 0 : Q จะ Output logic 0
                         - ขา D logic 1 : Q จะ Output logic 1

Shift Register 

Shift Register หมายถึง การเลื่อน หลักการคือเมื่อเราต้องการส่งข้อมูลอย่างเช่น 1011  อย่างในภาพจะเป็น Input แบบSerial  Output แบบ Parallel  จะเห็นได้ว่าเราต้องกด Clock ทั้งหมด 4 ครั้งเพื่อให้ข้อมูลเราเข้ามาครบ 4 bit (clock ละ 1 bit) เพื่อให้ข้อมูลเข้าสู่ IC ครบ เป็นต้น หลักการนี้เราใช้เพื่อสร้างความสเถียรให้กับ Signal ที่เราจะนำไปใช้ต่อ หรือว่า ต้องการ Memory ค่าบางค่า เพื่อนำไปคำนวณก็ได้


มีด้วยกัน 4 แบบคือ
  • • Serial-in to Parallel-out (SIPO)  
  • • Serial-in to Serial-out (SISO)  
  • • Parallel-in to Serial-out (PISO) 
  • • Parallel-in to Parallel-out (PIPO)  

ปัญหาที่พบ

- เราต้องดูให้ดีว่า counter  circuits ที่เรานำมาต่อนั้น มี buffer หรือไม่ การมี buffer หรือ นิเสธ หมายถึง ต้องให้ logic 0 ที่ขานั้น วงจรจึงจะทำงาน
- เมื่อเราต่อวงจรจริง สิ่งที่มักผิดพลาดคือการอ่าน datasheet ได้ไม่ดีพอ เนื่องจาก datasheet มีทุกอย่างอยู่แล้ว ถ้าเราสามารถทำความเข้าใจได้อย่างถ่องแท้ จะทำให้เรานำอุปกรณ์นั้นๆไปใช้งานได้อย่างมีคุณภาพและเหมาะสมที่สุด

- ไม่จำเป็นที่ IC ทุกตัวที่เป็น JK Flip-Flop จะต้องมีขา Reset เหมือนกับ IC ที่เราใช้ในการทดลอง
- การที่เราจะload Input แบบ Parallel เข้าไปใน IC นั้นต้องทำให้ขา PE เป็น logic 0 ก่อนแล้วจึงกด Clock 1 ครั้ง เพื่อ upload เปลี่ยนขา PE มาเป็น logic 1 แล้วกด Clock 8 ครั้งเพื่อให้ Output ออกมาเป็น Serial 
- ขา CE ต้องเป็น logic 1 เสมอ เพื่อให้ CP ทำงาน ถ้าขา CE เป็น logic 0 ไม่ว่าขา CP จะเป็นอย่างไรก็จะไม่มีผล

อ้างอิง

http://sub.allaboutcircuits.com/images/04353.png
http://qph.is.quoracdn.net/main-qimg-8d6bb2ecf259a4d1d876de7b7c30ae22?convert_to_webp=truehttps://upload.wikimedia.org/wikipedia/commons/f/ff/JK-FlipFlop_(4-NAND).PNG
http://worldclassprogramme.com/images/RS-Flip-Flop.gif
http://worldclassprogramme.com/images/D-FlipFlop.gif
http://electronicspost.com/wp-content/uploads/2015/05/14.png
http://www.learnabout-electronics.org/Digital/images/register-SISO.gif
http://www.ee.usyd.edu.au/tutorials/digital_tutorial/part2/pics/regist05.jpg
http://fourier.eng.hmc.edu/e85_old/lectures/figures/T_flipflop.gif
http://www.ee.surrey.ac.uk/Projects/CAL/seq-switching/Graphics/operT.gif
http://www.ibiblio.org/kuphaldt/electricCircuits/Digital/04348.png
http://sub.allaboutcircuits.com/images/04347.png
http://www.electronics-tutorials.ws/counter/count_1.html
http://www.ubooks.pub/Books/B0/E77R7385/MAIN/images/04349.png

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

Class work #2


Multiplexer input 4 to 1


จากการบ้านให้นำ Mux input 2 to 1 แปลงเป็น Mux input 4  to 1
นั้นต้องใช้ Mux input 2 to 1 ทั้งหมด 3 ตัว ต่อดังภาพจึงได้เป็น Mux input 4 to 1 1 ตัว 

ทั้งนี้เราหา Truth table ของวงจร Mux input 4 to 1 ได้ และนำไปคำนวณเพื่อหาการต่อซึ่งสามารถได้ truth table หน้าตาแบบเดียวกัน 



การหาผลลัพธ์จากวิธีการ Sum of Products โดยใช้ร่วมกับ Don't care 

วันจันทร์ที่ 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