วงจรบวก

จากวิกิพีเดีย สารานุกรมเสรี

บทความนี้ได้รับแจ้งว่ามีลักษณะไม่เป็นสารานุกรม
เนื่องด้วยการใช้ถ้อยคำ รูปแบบการเขียน เนื้อหา หรือมีลักษณะคล้ายคู่มือ หรือเอกสารต้นฉบับ ซึ่งไม่ตรงตามนโยบายของวิกิพีเดีย
คุณสามารถช่วยแก้ไขปัญหานี้ได้ด้วยการกดที่ปุ่ม แก้ไข หรือย้ายบทความนี้ไปยังโครงการพี่น้องที่เหมาะสม
ดูรายละเอียดเพิ่มเติมได้ที่ เงื่อนไขในการนับว่าเป็นสารานุกรม อะไรที่ไม่ใช่วิกิพีเดีย โครงการพี่น้อง บทความคัดสรร และ นโยบายวิกิพีเดีย

Adder ที่จะกล่าวถึงต่อไปนี้เป็น Adder ของ วงจรทางดิจิตอล คือการบวกกันของเลขฐาน2 นั่นเอง Adder ที่จะกล่าวถึงมี 2 ประเภท คือ Half-Adder และ Full-Adder โดยในเรื่อง Adder นี้จะรวมไปถึงการทำ Carry-look-Ahead ด้วย

สารบัญ

[แก้] Types of adders

[แก้] Half-Adder

Half-Adder เป็นวงจรที่ทำหน้าที่ในการบวกเลขฐานสองขนาด 2 bit เข้าด้วยกัน โดยมี Output ออกมาเป็นเลขฐานสอง 2 ค่า คือ ค่าผลรวม(sum) และตัวทด(Carry) นั่นเอง โดยวงจรนี้จะได้ค่าผลรวมและตัวทดตามตารางต่อไปนี้

A B SUM CARRY
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
ตารางแสดงค่าของ Half-Adder

ลักษณะของการต่อวงจรแบบ Half-Adder คือดังต่อไปนี้

ภาพ:HALF-ADDER_NOT_USE_XOR.GIF

ลักษณะนี้การต่อ Half-Adder แบบไม่ใช่ XOR-Gate ในการต่อวงจร

ภาพ:HALF-ADDER_USE_XOR.GIF

เป็นการต่อวงจร Half-Adder แบบการใช้ XOR-Gate

จากรูปทั้งสองจะเห็นได้ว่าการใช้ XOR-Gate ช่วยลดจำนวน Gate ที่ใช้ลงไปได้เป็นอย่างมากและยังช่วยลดความซับซ้อนของวงจรได้อีกด้วย ลักษณะของสมาการ Half-Adder คือ

Sum = A \oplus B
Carry = A \cdot B

[แก้] Full-Adder

Full-Adder เป็นวงจรที่ใช้ในการบวกเลขฐานสองเช่นกันแต่จะสามารถบวกได้มากกว่า Half-Adder อยู่ 1 bit คือ เป็นเลข 2 bit และตัวทด(Carry in) 1 bit รวมเป็น 3 bit โดยจะมี Output เหมือนกับ Half-Adder คือ ผลรวม(Sum) และ ตัวทด(Carry out) โดยวงจรนี้จะให้ค่าผลรวมและตัวทดตารางต่อไปนี้

A B Carry in Sum Carry Out
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
ตารางแสดงค่าของ Full-Adder

ลักษณะสมการของวงจร Full-Adder คือ

Sum = A \oplus B \oplus C_{in}
Carry_{out} = (A \cdot B)+ (C_{in} \cdot (A \cdot B))

ลักษณะของวงจร Full-Adder สามารถต่อได้หลายแบบ คือการนำ Half-Adder 2 ตัว และ OR-Gate 1 ตัวมาต่อรวมกัน หรือการใช้ XOR เพียง 2 ตัวต่อกันก็เป็น Full-Adder ได้เช่นกัน โดยมีลักษณะวงจรดังต่อไปนี้

ภาพ:FULL-ADDER_WITH_CARRY_OUT2.GIF‎

การต่อวงจร Full-Adder แบบใช้ Half-Adder 2 ชุดกับ OR-Gate 1 ตัว มาต่อรวมกัน

ภาพ:FULL-ADDER_NOT_CARRY_OUT.GIF

การใช้ XOR-Gate 2 ตัว มาต่อเป็นวงจร Full-Adder

จากรูปข้างต้นจะเห็นได้ว่าการต่อวงจร Full-Adder แบบใช้ XOR-Gate 2 ตัว นั้นจะไม่มี Output ของ Carry Out ออกมาด้วยซึ่งต่างกับแบบแรกที่มี Output เป็น Carry Out ออกมาด้วย แต่จะเห็นได้ว่ามีการใช้จำนวน Gate ต่างกันอย่างชัดเจน

[แก้] Multiple-bit-Adders

เป็นการนำ Full-Adder หลายๆตัวมาต่อรวมๆกันเป็นวงจรใหญ่ๆ เพื่อที่จะได้คำนวณได้หลายบิตมากขึ้นนั่นเองโดยเมื่อมีการต่อวงจรแบบนี้แล้วจะมีการคำนวณ Carry ได้หลายแบบดังเช่น Ripple-Carry-Adder หรือ Carry-look-Ahead เป็นต้น

[แก้] Ripple-Carry-Adder

คำว่า Ripple แปลว่า ระลอก เพระฉะนั้น Ripple-Carry-Adder คือ Adder ที่มีการส่งตัวทดเป็นระลอกกล่าวคือ เมื่อมีการต่อ Adder หลายๆตัวจะต้องมีการส่งตัวทด(Carry) ไปให้กับ Adder ตัวต่อไปเพื่อคำนวณด้วย ลักษณะวงจรคือ

ภาพ:FULL-ADDER_CARRY_RIPPLE.GIF

การต่อวงจรลักษณะนี้จะทำให้วงจรมีการทำงานที่ช้าลงเมื่อมีการต่อ Gate มากขึ้นเพราะว่าจากสมการ Carry ของ Full-Adder จะเห็นได้ว่าจำเป็นต้องมีการรอ Carry-in ก่อนที่จะคำนวณต่อไปได้

[แก้] Carry-look-Ahead

เป็นลักษณะของวงจรที่นำ Carry มาคำนวณเลยโดยไม่ต้องรอการส่งผ่านแบบ Ripple-Carry-Adder โดยในวิธีนี้จะช่วยเพิ่มความเร็วให้กับวงจรขนาดใหญ่ได้เพราะไม่จำเป็นต้องรอ Carry-in จาก Full-Adder ตัวข้างหน้า สามารถคำนวณ Carry ออกมาได้พร้อมกับการคำนวณ Sum ได้เลยลักษณะของสูตร Carry-look-Ahead คือ

Carry_{out} = C_{g} + C_{p} \cdot C_{in}
Cp = A + B
C_{g} = A \cdot B

ลัษณะการนำไปใช้งาน

ในกรณี Full-Adder แบบ 1 บิต Carry_{out1} = C_{g1} + C_{p1} \cdot C_{in}

ในกรณี Full-Adder แบบ 2 บิต Carry_{out2} = C_{g2} + C_{p2} \cdot C_{out1}

ในกรณี Full-Adder แบบ 3 บิต Carry_{out3} = C_{g3} + C_{p3} \cdot C_{out2}

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

[แก้] Gate-Delay

คือเมื่อมีการต่อ Gate มากขึ้นเรื่อยๆจะส่งผลให้วงจรทำงานช้าลงโดยมีการเทียบระหว่าง Ripple-Carry-Adder และ Carry-look-Ahead ดังตารางต่อไปนี้

Bits Ripple-Carry Carry-look-Ahead
1 2 2
4 8 6
8 16 10
12 24 10
16 32 10
20 40 14
24 48 14
32 64 14
64 128 14

ตารางแสดง Daley ระหว่าง Ripple-Carry และ Carry-look-Ahead