วันอังคารที่ 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