วงจรบวก(Adder) เป็นวงจรเชิงผสม ที่ใช้บวกเลขฐาน2 ซึ่งเป็นหน่วยคำนวณและตรรกะ ชนิดหนึ่ง มักใช้เป็นกรณีศึกษาของการออกแบบวงจรเชิงผสม
วงจรบวกหนึ่งบิต
วงจรบวกหนึ่งบิตมักแบ่งออกเป็นสองประเภทดังนี้
วงจรบวกหนึ่งบิตครึ่งอัตรา
วงจรบวกหนึ่งบิตครึ่งอัตรา(Single bit Half-Adder)เป็นวงจรบวกมีอินพุตหนึ่งบิตสองค่า วงจรจะบวกเลขและให้ค่าสองค่าคือ ค่าผลรวม(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 แบบการใช้ XOR-Gate
จากรูปทั้งสองจะเห็นได้ว่าการใช้ XOR-Gate ช่วยลดจำนวน Gate ที่ใช้ลงไปได้เป็นอย่างมากและยังช่วยลดความซับซ้อนของวงจรได้อีกด้วย ลักษณะของสมาการ Half-Adder คือ
วงจรบวกนี้นอกจากจะใช้บวกเลขหนึ่งบิตสองอันแล้ว ยังใช้สำหรับหาผลบวกเลขโดดของเลขสองบิตหรือที่เรียกว่า2:2 compressor
วงจรบวกหนึ่งบิตเต็มอัตรา
วงจรบวกหนึ่งบิตเต็มอัตรา (Single bit Full-Adder) เป็นวงจรที่ใช้ในการบวกเลขฐานสองเช่นกันแต่จะสามารถบวกได้มากกว่า Half-Adder โดยจะมีอินพุตหนึ่งบิตสามค่า คือสองค่าที่จะบวก และ ตัวทดเข้า(Carry in) จากภายนอก เพื่อเชื่อมตัวกับวงจรตัวอื่น (เช่น 1112+1012=11002 ตัว 1 และ 0 ที่เป็นตัวหนา ย่อมมีตัวทดจากหลักที่แล้วเข้ามา เป็นต้น)วงจรจะบวกเลขและให้ค่าสองค่าคือ ค่าผลรวม(Sum) และตัวทด(Carry) เช่นเดียวกับ Half-Adder ซึ่งแสดงได้ตามตารางค่าความจริงต่อไปนี้
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 สามารถต่อได้หลายแบบ คือการนำ Half-Adder 2 ตัว และ OR-Gate 1 ตัวมาต่อรวมกัน หรือการใช้ XOR เพียง 2 ตัวต่อกันก็เป็น Full-Adder ได้เช่นกัน โดยมีลักษณะวงจรดังต่อไปนี้
การต่อวงจร Full-Adder แบบใช้ Half-Adder 2 ชุดกับ OR-Gate 1 ตัว มาต่อรวมกัน
การใช้ XOR-Gate 2 ตัว มาต่อเป็นวงจร Full-Adder
จากรูปข้างต้นจะเห็นได้ว่าการต่อวงจร Full-Adder แบบใช้ XOR-Gate 2 ตัว นั้นจะไม่มี Output ของ Carry Out ออกมาด้วยซึ่งต่างกับแบบแรกที่มี Output เป็น Carry Out ออกมาด้วย แต่จะเห็นได้ว่ามีการใช้จำนวน Gate ต่างกันอย่างชัดเจน วงจรบวกนี้เราสามารถมองได้ว่ามันบวกเลขหนึ่งบิตสามอันได้ จึงใช้หาผลบวกเลขโดดของเลขสามบิตหรือที่เรียกว่า3:2 compressor
วงจรบวกหลายบิตและหลักการการทด
วงจรบวกหลายบิต(Multiple-bit Adder) คือการสร้างวงจรบวกให้สามารถรับอินพุตได้มากขึ้น กล่าวคือบวกเลขได้หลายบิตนั้นเอง หลักการสร้างก็ง่ายๆคือการนำ Full-Adder หลายๆตัวมาต่อรวมๆกันเป็นวงจรใหญ่ๆ เพื่อที่จะได้คำนวณให้ได้หลายบิตมากขึ้นโดยเมื่อมีการต่อวงจรแบบนี้แล้วจะมีการคำนวณการทด ได้หลายแบบดังเช่นการทดแบบริปเปอร์ หรือ การทดแบบดูตัวทดล่วงหน้า เป็นต้น
การทดแบบริปเปอร์
การทดแบบริปเปอร์(Ripple Carry Adder) คือการทดโดย เมื่อมีการต่อวงจรบวกหลายๆตัวจะต้องมีการส่งตัวทด(Carry) ไปให้กับวงจรบวกตัวต่อไปเพื่อคำนวณด้วย (โดยคำว่า Ripple นั้นแปลว่า ระลอก) เพราะฉะนั้น Ripple Carry Adder คือวงจรบวกที่มีการส่งตัวทดเป็นระลอกนั้นเอง ลักษณะวงจรคือ
การต่อวงจรลักษณะนี้มีข้อเสียคือ จะทำให้วงจรมีการทำงานที่ช้าลงเมื่อมีการต่อลอจิกเกตมากขึ้นเพราะว่าจากสมการ Carry ของ Full-Adder จะเห็นได้ว่าจำเป็นต้องมีการรอ Carry-in ก่อนที่จะคำนวณต่อไปได้
การทดแบบดูตัวทดล่วงหน้า
การทดแบบดูตัวทดล่วงหน้า(Carry-look-Ahead)คือการทดโดยให้วงจรบวกสามารถคาดเดาก่อนได้ว่าจะมีตัวทดมาหรือไม่ โดยดูบิตการบวกคู่หลัง เพราะถ้ามีตัวทดอย่างแน่นอน(บิตหลังเป็น 1 กับ 1) หรือไม่มีตัวทดอย่างแน่นอน(บิตหลังเป็น 0 กับ 0)ก็จะได้คำตอบทันทีไม่ต้องรอตัวทดเข้า เช่นนี้ก็ไม่ต้องรอการส่งผ่านแบบ Ripple-Carry-Adder โดยในวิธีนี้จะช่วยเพิ่มความเร็วให้กับวงจรขนาดใหญ่ได้เพราะไม่จำเป็นต้องรอ Carry-in จาก Full-Adder ตัวข้างหลัง สามารถคำนวณ Carry ออกมาได้พร้อมกับการคำนวณ Sum ได้เลยลักษณะของสูตร Carry-look-Ahead คือ
ลัษณะการนำไปใช้งาน
ในกรณี Full-Adder แบบ 1 บิต
ในกรณี Full-Adder แบบ 2 บิต
ในกรณี Full-Adder แบบ 3 บิต
จะเห็นได้ว่าจะสมการสามารถนำสมการข้างบนลงไปแทนได้เรื่อยๆ จึงไม่มีข้อจำกัดของจำนวนบิตที่ต้องการ แต่ในกรณีที่จำนวนบิตมีมากเกินไปอาจจะทำให้วงจรยุ่งยากซับซ้อนได้
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
ส่วนการดูตัวทดล่วงหน้า
ส่วนการดูตัวทดล่วงหน้า(Lookahead Carry Unit) เป็นวิธีการหนึ่งที่ลดปัญหาการคำนวณซ้ำๆของ Carry-look-Ahead เมื่อสร้างวงจรบวกบิตมากๆ โดยจะสร้างส่วนมาพิจารณาตัวทดโดยเฉพาะ โดยแบ่งเป็นบิตย่อยๆ เรียกส่วนนี้ว่า ส่วนการดูตัวทดล่วงหน้า
ดูเพิ่ม
wikipedia, แบบไทย, วิกิพีเดีย, วิกิ หนังสือ, หนังสือ, ห้องสมุด, บทความ, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม, มือถือ, โทรศัพท์, Android, iOS, Apple, โทรศัพท์โมบิล, Samsung, iPhone, Xiomi, Xiaomi, Redmi, Honor, Oppo, Nokia, Sonya, MI, PC, พีซี, web, เว็บ, คอมพิวเตอร์
wngcrbwk Adder epnwngcrechingphsm thiichbwkelkhthan2 sungepnhnwykhanwnaelatrrka chnidhnung mkichepnkrnisuksakhxngkarxxkaebbwngcrechingphsmwngcrbwkhnungbitwngcrbwkhnungbitmkaebngxxkepnsxngpraephthdngni wngcrbwkhnungbitkhrungxtra wngcrbwkhnungbitkhrungxtra Single bit Half Adder epnwngcrbwkmixinphuthnungbitsxngkha wngcrcabwkelkhaelaihkhasxngkhakhux khaphlrwm Sum aelatwthd Carry odywngcrnicaidkhaphlrwmaelatwthdtamtarangtxipni A B SUM CARRY0 0 0 00 1 1 01 0 1 01 1 0 1 tarangaesdngkhakhxng Half Adder lksnakhxngkartxwngcraebb Half Adder khuxdngtxipni epnkartxwngcr Half Adder aebbkarich XOR Gate cakrupthngsxngcaehnidwakarich XOR Gate chwyldcanwn Gate thiichlngipidepnxyangmakaelayngchwyldkhwamsbsxnkhxngwngcridxikdwy lksnakhxngsmakar Half Adder khux Sum A B displaystyle Sum A oplus B Carry A B displaystyle Carry A cdot B wngcrbwkninxkcakcaichbwkelkhhnungbitsxngxnaelw yngichsahrbhaphlbwkelkhoddkhxngelkhsxngbithruxthieriykwa2 2 compressor wngcrbwkhnungbitetmxtra wngcrbwkhnungbitetmxtra Single bit Full Adder epnwngcrthiichinkarbwkelkhthansxngechnknaetcasamarthbwkidmakkwa Half Adder odycamixinphuthnungbitsamkha khuxsxngkhathicabwk aela twthdekha Carry in cakphaynxk ephuxechuxmtwkbwngcrtwxun echn 1112 1012 11002 tw 1 aela 0 thiepntwhna yxmmitwthdcakhlkthiaelwekhama epntn wngcrcabwkelkhaelaihkhasxngkhakhux khaphlrwm Sum aelatwthd Carry echnediywkb Half Adder sungaesdngidtamtarangkhakhwamcringtxipni A B Carry in Sum Carry Out0 0 0 0 00 0 1 1 00 1 0 1 00 1 1 0 11 0 0 1 01 0 1 0 11 1 0 0 11 1 1 1 1 tarangaesdngkhakhxng Full Adder lksnasmkarkhxngwngcr Full Adder khux Sum A B Cin displaystyle Sum A oplus B oplus C in Carryout A B Cin A B displaystyle Carry out A cdot B C in cdot A oplus B lksnakhxngwngcr Full Adder samarthtxidhlayaebb khuxkarna Half Adder 2 tw aela OR Gate 1 twmatxrwmkn hruxkarich XOR ephiyng 2 twtxknkepn Full Adder idechnkn odymilksnawngcrdngtxipni kartxwngcr Full Adder aebbich Half Adder 2 chudkb OR Gate 1 tw matxrwmkn karich XOR Gate 2 tw matxepnwngcr Full Adder cakrupkhangtncaehnidwakartxwngcr Full Adder aebbich XOR Gate 2 tw nncaimmi Output khxng Carry Out xxkmadwysungtangkbaebbaerkthimi Output epn Carry Out xxkmadwy aetcaehnidwamikarichcanwn Gate tangknxyangchdecn wngcrbwknierasamarthmxngidwamnbwkelkhhnungbitsamxnid cungichhaphlbwkelkhoddkhxngelkhsambithruxthieriykwa3 2 compressorwngcrbwkhlaybitaelahlkkarkarthdwngcrbwkhlaybit Multiple bit Adder khuxkarsrangwngcrbwkihsamarthrbxinphutidmakkhun klawkhuxbwkelkhidhlaybitnnexng hlkkarsrangkngaykhuxkarna Full Adder hlaytwmatxrwmknepnwngcrihy ephuxthicaidkhanwnihidhlaybitmakkhunodyemuxmikartxwngcraebbniaelwcamikarkhanwnkarthd idhlayaebbdngechnkarthdaebbripepxr hrux karthdaebbdutwthdlwnghna epntn karthdaebbripepxr karthdaebbripepxr Ripple Carry Adder khuxkarthdody emuxmikartxwngcrbwkhlaytwcatxngmikarsngtwthd Carry ipihkbwngcrbwktwtxipephuxkhanwndwy odykhawa Ripple nnaeplwa ralxk ephraachann Ripple Carry Adder khuxwngcrbwkthimikarsngtwthdepnralxknnexng lksnawngcrkhux kartxwngcrlksnanimikhxesiykhux cathaihwngcrmikarthanganthichalngemuxmikartxlxcikektmakkhunephraawacaksmkar Carry khxng Full Adder caehnidwacaepntxngmikarrx Carry in kxnthicakhanwntxipid karthdaebbdutwthdlwnghna karthdaebbdutwthdlwnghna Carry look Ahead khuxkarthdodyihwngcrbwksamarthkhadedakxnidwacamitwthdmahruxim odydubitkarbwkkhuhlng ephraathamitwthdxyangaennxn bithlngepn 1 kb 1 hruximmitwthdxyangaennxn bithlngepn 0 kb 0 kcaidkhatxbthnthiimtxngrxtwthdekha echnnikimtxngrxkarsngphanaebb Ripple Carry Adder odyinwithinicachwyephimkhwamerwihkbwngcrkhnadihyidephraaimcaepntxngrx Carry in cak Full Adder twkhanghlng samarthkhanwn Carry xxkmaidphrxmkbkarkhanwn Sum idelylksnakhxngsutr Carry look Ahead khux Carryout Cg Cp Cin displaystyle Carry out C g C p cdot C in Cp A B displaystyle C p A B Cg A B displaystyle C g A cdot B lsnakarnaipichngan inkrni Full Adder aebb 1 bit Carryout1 Cg1 Cp1 Cin displaystyle Carry out1 C g1 C p1 cdot C in inkrni Full Adder aebb 2 bit Carryout2 Cg2 Cp2 Cout1 displaystyle Carry out2 C g2 C p2 cdot C out1 inkrni Full Adder aebb 3 bit Carryout3 Cg3 Cp3 Cout2 displaystyle Carry out3 C g3 C p3 cdot C out2 caehnidwacasmkarsamarthnasmkarkhangbnlngipaethnideruxy cungimmikhxcakdkhxngcanwnbitthitxngkar aetinkrnithicanwnbitmimakekinipxaccathaihwngcryungyaksbsxnid Bits Ripple Carry Carry look Ahead1 2 24 8 68 16 1012 24 1016 32 1020 40 1424 48 1432 64 1464 128 14 tarangaesdngkha Delay rahwang Ripple Carry aela Carry look Ahead swnkardutwthdlwnghna swnkardutwthdlwnghna Lookahead Carry Unit epnwithikarhnungthildpyhakarkhanwnsakhxng Carry look Ahead emuxsrangwngcrbwkbitmak odycasrangswnmaphicarnatwthdodyechphaa odyaebngepnbityxy eriykswnniwa swnkardutwthdlwnghnaduephimwngcrlb