ดูต้นฉบับสำหรับ วงจรบวก
←
วงจรบวก
ไปยังการนำทาง
ไปยังการค้นหา
คุณไม่มีสิทธิแก้ไขหน้านี้ ด้วยเหตุต่อไปนี้:
ปฏิบัติการที่คุณขอนี้สงวนไว้เฉพาะผู้ใช้ในกลุ่ม:
ผู้ใช้
คุณสามารถดูและคัดลอกต้นฉบับของหน้านี้
'''วงจรบวก'''(Adder) เป็น[[วงจรเชิงผสม]] ที่ใช้บวก[[เลขฐาน2]] ซึ่งเป็น[[หน่วยคำนวณและตรรกะ]] ชนิดหนึ่ง มักใช้เป็นกรณีศึกษาของการออกแบบ[[วงจรเชิงผสม]] ==วงจรบวกหนึ่งบิต== วงจรบวกหนึ่งบิตมักแบ่งออกเป็นสองประเภทดังนี้ === วงจรบวกหนึ่งบิตครึ่งอัตรา === '''วงจรบวกหนึ่งบิตครึ่งอัตรา'''(Single bit Half-Adder)เป็นวงจรบวกมี[[อินพุต]]หนึ่งบิตสองค่า วงจรจะบวกเลขและให้ค่าสองค่าคือ ค่าผลรวม(Sum) และตัวทด(Carry) โดยวงจรนี้จะได้ค่าผลรวมและตัวทดตามตารางต่อไปนี้ <center> {|class="wikitable" | A || B || SUM || CARRY |- | 0 || 0 || 0 || 0 |- | 0 || 1 || 1 || 0 |- | 1 || 0 || 1 || 0 |- | 1 || 1 || 0 || 1 |} ตารางแสดงค่าของ Half-Adder</center> ลักษณะของการต่อวงจรแบบ Half-Adder คือดังต่อไปนี้ <center> [[ไฟล์:Half-adder.svg]] เป็นการต่อวงจร Half-Adder แบบการใช้ XOR-Gate </center> จากรูปทั้งสองจะเห็นได้ว่าการใช้ XOR-Gate ช่วยลดจำนวน Gate ที่ใช้ลงไปได้เป็นอย่างมากและยังช่วยลดความซับซ้อนของวงจรได้อีกด้วย ลักษณะของสมาการ Half-Adder คือ :<math>Sum = A \oplus B</math> :<math>Carry = A \cdot B</math> วงจรบวกนี้นอกจากจะใช้บวกเลขหนึ่งบิตสองอันแล้ว ยังใช้สำหรับหาผลบวกเลขโดดของเลขสองบิตหรือที่เรียกว่า<i>2:2 compressor</i> ===วงจรบวกหนึ่งบิตเต็มอัตรา=== วงจรบวกหนึ่งบิตเต็มอัตรา (Single bit Full-Adder) เป็นวงจรที่ใช้ในการบวกเลขฐานสองเช่นกันแต่จะสามารถบวกได้มากกว่า Half-Adder โดยจะมี[[อินพุต]]หนึ่งบิตสามค่า คือสองค่าที่จะบวก และ ตัวทดเข้า(Carry in) จากภายนอก เพื่อเชื่อมตัวกับวงจรตัวอื่น (เช่น 1<b>1</b>1<sub>2</sub>+1<b>0</b>1<sub>2</sub>=11<b>0</b>0<sub>2</sub> ตัว 1 และ 0 ที่เป็นตัวหนา ย่อมมีตัวทดจากหลักที่แล้วเข้ามา เป็นต้น)วงจรจะบวกเลขและให้ค่าสองค่าคือ ค่าผลรวม(Sum) และตัวทด(Carry) เช่นเดียวกับ Half-Adder ซึ่งแสดงได้ตามตารางค่าความจริงต่อไปนี้ <center> {|class="wikitable" | 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</center> ลักษณะสมการของวงจร Full-Adder คือ :<math>Sum = A \oplus B \oplus C_{in}</math> :<math>Carry_{out} = (A \cdot B)+ (C_{in} \cdot (A \oplus B))</math> ลักษณะของวงจร Full-Adder สามารถต่อได้หลายแบบ คือการนำ Half-Adder 2 ตัว และ OR-Gate 1 ตัวมาต่อรวมกัน หรือการใช้ XOR เพียง 2 ตัวต่อกันก็เป็น Full-Adder ได้เช่นกัน โดยมีลักษณะวงจรดังต่อไปนี้ <center> [[ไฟล์:Full Adder Modules.svg]] การต่อวงจร Full-Adder แบบใช้ Half-Adder 2 ชุดกับ OR-Gate 1 ตัว มาต่อรวมกัน [[ไฟล์:Full-adder.svg]] การใช้ XOR-Gate 2 ตัว มาต่อเป็นวงจร Full-Adder</center> จากรูปข้างต้นจะเห็นได้ว่าการต่อวงจร Full-Adder แบบใช้ XOR-Gate 2 ตัว นั้นจะไม่มี Output ของ Carry Out ออกมาด้วยซึ่งต่างกับแบบแรกที่มี Output เป็น Carry Out ออกมาด้วย แต่จะเห็นได้ว่ามีการใช้จำนวน Gate ต่างกันอย่างชัดเจน วงจรบวกนี้เราสามารถมองได้ว่ามันบวกเลขหนึ่งบิตสามอันได้ จึงใช้หาผลบวกเลขโดดของเลขสามบิตหรือที่เรียกว่า<i>3:2 compressor</i> ==วงจรบวกหลายบิตและหลักการการทด== วงจรบวกหลายบิต(Multiple-bit Adder) คือการสร้างวงจรบวกให้สามารถรับ[[อินพุต]]ได้มากขึ้น กล่าวคือบวกเลขได้หลายบิตนั้นเอง หลักการสร้างก็ง่ายๆคือการนำ Full-Adder หลายๆตัวมาต่อรวมๆกันเป็นวงจรใหญ่ๆ เพื่อที่จะได้คำนวณให้ได้หลายบิตมากขึ้นโดยเมื่อมีการต่อวงจรแบบนี้แล้วจะมีการคำนวณการทด ได้หลายแบบดังเช่นการทดแบบริปเปอร์ หรือ การทดแบบดูตัวทดล่วงหน้า เป็นต้น ===การทดแบบริปเปอร์=== การทดแบบริปเปอร์(Ripple Carry Adder) คือการทดโดย เมื่อมีการต่อวงจรบวกหลายๆตัวจะต้องมีการส่งตัวทด(Carry) ไปให้กับวงจรบวกตัวต่อไปเพื่อคำนวณด้วย (โดยคำว่า Ripple นั้นแปลว่า ระลอก) เพราะฉะนั้น Ripple Carry Adder คือวงจรบวกที่มีการส่งตัวทดเป็นระลอกนั้นเอง ลักษณะวงจรคือ <center> [[ไฟล์:4-Bit Full Adder.svg]] </center> การต่อวงจรลักษณะนี้มีข้อเสียคือ จะทำให้วงจรมีการทำงานที่ช้าลงเมื่อมีการต่อ[[ลอจิกเกต]]มากขึ้นเพราะว่าจากสมการ Carry ของ Full-Adder จะเห็นได้ว่าจำเป็นต้องมีการรอ Carry-in ก่อนที่จะคำนวณต่อไปได้ ===การทดแบบดูตัวทดล่วงหน้า=== การทดแบบดูตัวทดล่วงหน้า(Carry-look-Ahead)คือการทดโดยให้วงจรบวกสามารถคาดเดาก่อนได้ว่าจะมีตัวทดมาหรือไม่ โดยดูบิตการบวกคู่หลัง เพราะถ้ามีตัวทดอย่างแน่นอน(บิตหลังเป็น 1 กับ 1) หรือไม่มีตัวทดอย่างแน่นอน(บิตหลังเป็น 0 กับ 0)ก็จะได้คำตอบทันทีไม่ต้องรอตัวทดเข้า เช่นนี้ก็ไม่ต้องรอการส่งผ่านแบบ Ripple-Carry-Adder โดยในวิธีนี้จะช่วยเพิ่มความเร็วให้กับวงจรขนาดใหญ่ได้เพราะไม่จำเป็นต้องรอ Carry-in จาก Full-Adder ตัวข้างหลัง สามารถคำนวณ Carry ออกมาได้พร้อมกับการคำนวณ Sum ได้เลยลักษณะของสูตร Carry-look-Ahead คือ :<math>Carry_{out} = C_{g} + C_{p} \cdot C_{in} </math> :<math>C_{p} = A + B </math> :<math>C_{g} = A \cdot B </math> ลัษณะการนำไปใช้งาน ในกรณี Full-Adder แบบ 1 บิต <math>Carry_{out1} = C_{g1} + C_{p1} \cdot C_{in} </math> ในกรณี Full-Adder แบบ 2 บิต <math>Carry_{out2} = C_{g2} + C_{p2} \cdot C_{out1} </math> ในกรณี Full-Adder แบบ 3 บิต <math>Carry_{out3} = C_{g3} + C_{p3} \cdot C_{out2} </math> จะเห็นได้ว่าจะสมการสามารถนำสมการข้างบนลงไปแทนได้เรื่อยๆ จึงไม่มีข้อจำกัดของจำนวนบิตที่ต้องการ แต่ในกรณีที่จำนวนบิตมีมากเกินไปอาจจะทำให้วงจรยุ่งยากซับซ้อนได้ <center> {|class="wikitable" | 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 |} ตารางแสดงค่า Delay ระหว่าง Ripple-Carry และ Carry-look-Ahead </center> ===ส่วนการดูตัวทดล่วงหน้า=== ส่วนการดูตัวทดล่วงหน้า(Lookahead Carry Unit) เป็นวิธีการหนึ่งที่ลดปัญหาการคำนวณซ้ำๆของ Carry-look-Ahead เมื่อสร้างวงจรบวกบิตมากๆ โดยจะสร้างส่วนมาพิจารณาตัวทดโดยเฉพาะ โดยแบ่งเป็นบิตย่อยๆ เรียกส่วนนี้ว่า ส่วนการดูตัวทดล่วงหน้า [[ไฟล์: 64-bit lookahead carry unit.svg]] ==ดูเพิ่ม== *[[วงจรลบ]] [[หมวดหมู่:วงจรดิจิทัล]]
กลับไป
วงจรบวก
รายการนำทางไซต์
เครื่องมือส่วนตัว
เข้าสู่ระบบ
เนมสเปซ
หน้า
อภิปราย
ไทย
ดู
อ่าน
ดูต้นฉบับ
ดูประวัติ
เพิ่มเติม
ค้นหา
การนำทาง
หน้าหลัก
ปรับปรุงล่าสุด
สุ่มหน้า
ความช่วยเหลือเกี่ยวกับมีเดียวิกิ
หน้าพิเศษ
เครื่องมือ
หน้าที่ลิงก์มา
การเปลี่ยนแปลงที่เกี่ยวโยง
สารสนเทศหน้า