ในทางดิจิตอลอีเลคโทรนิคส์ ระดับแรงดัน (Voltage) จะมีเพียงสองค่า คือระดับแรงดัน Low กับ High มันคือการเปลี่ยนสถานะหรือระดับแรงดันของวงจร ไม่มีความเกี่ยวข้องกับตัวเลขแต่อย่างไร แต่เราสามารถประยุกต์ให้มันทำงานในลักษณะเลขฐานสอง หรือแก้ปัญหาในระบบเลขฐานสองได้ โดยเปรียบเทียบเป็นตัวเลขก็คือ 0 และ 1และทางตรรกะ(logic) ก็คือ False และ True หรือ
วงจรบวก (Addition circuit)
ในระบบเลขฐานสอง ถ้าเรานำตัวเลข 1 + 1 จะมีค่า = 102 (ฐาน2) แต่ถ้าเรานำ output ของวงจรดิจิตอล 2 วงที่มีระดับแรงดัน 1มารวมกันหรือต่อกันตรงๆ 1 + 1 อาจจะเท่ากับพัง เพราะมันไม่ใช่ตัวเลข แต่ เราสามารถใช้ logic gate มาต่อกันเพื่อให้มันแสดงคำตอบของการบวกเลขฐานสอง เช่น ใช้ วงจร Half adderรูปที่ 1 วงจรบวกแบบไม่มีตัวทด Half adder |
โดยที่ X = A XOR B Co = A AND B และผลลัพท์ของการบวกได้จากการนำ Co และ X มาเรียงกัน เช่น
ถ้า A = 1, B =1 แล้ว X = 0 และ Co = 1 คำต้อบ คือ Co X หรือ 1 02 = 210 (ในระบบฐาน10)
ย้อนกลับมา การบวกเลขฐานสอง แบบ 1บิท
A , B = ค่าที่จะนำมาบวก X = A + B = ผลลัพท์ที่ได้จากการบวก
ถ้า A = 1, B = 1 แล้ว A + B = 1 02 เกิดตัวเลขขนาด 2 บิท โดยที่ 1 เป็นตัวทดไปยังบิทต่อไป
ค่าที่เป็นไปได้ทั้งหมด ของ X ตามการเปลี่ยนค่า ของ A และ B เป็นไปตาม Truth table ในรูปที่ 1 โดยให้ Co (Carry out) แทนตัวทดไปยังบิทต่อไป เมื่อเทียบกับ Truth Table ของเกจท์ ต่างๆ ในตอนที่แล้ว….คลิ๊กที่นี่
เราจะเห็นว่า เราสามารถใช้ XOR เกจท์ แทน X ที่เปลี่ยนไปตามค่าของ A และ Bได้ และ ใช้ AND เกจท์ แทน Co ที่เปลี่ยนไปตามค่าของ A และ Bได้
ที่นี้หากเราต้องการบวกเลขฐานสอง 1 บิทแบบมีตัวทดมาจากบิทก่อนหน้า หรือมี Carry in เราจะเขียนเป็นสมการดังนี้
X = A+B+Ci โดยที่
Ci = Carry in หรือตัวทดจากบิทก่อนหน้า และCo = Carry out หรือตัวทดไปยังบิทถัดไป
สมมุติเรากำลังบวกเลขในบิทที่ 2 และมีตัวทดมาจากบิทที่1 โดยที่
A = 1 B = 0 และตัวทด Ci= 1 เราจะได้ผลลัพท์
X = 0 ในบิทที่ 2 และมีตัวทด Co = 1ไปยังบิทที่ 3
ถ้าเขียน ค่าที่เป็นไปได้ทั้งหมดของการบวก จะได้ Truth table ตามรูปที่ 2 และสามารถใช้วงจร Full adder ในการแก้คำตอบ
โดยที่ output X = A XOR B XOR Ci และ Co = (A XOR B) .Ci + (A .B)
+ ในที่นี้แทนการ OR และ . แทนการ AND
ผลลัพท์เมื่อเทียบกับการบวกทางคณิตได้จากการนำ Co และ X มาเรียงกัน
หมายเหตุ:
ระวังการใช้เครื่องหมาย “+ “ ในสมการทางคณิตสาตร์ มันคือการบวก ในทางตรรกะมันคือการ OR
X = A + B + Ci ← สมการคนิตศาสตร์ หรือ ตรรกะ บอกไม่ได้ ขึ้นอยู่กับสถานะการณ์ที่ใช้
แต่ในวงจรดิจิตอล มันจะมีแต่สมการทางตรรกะ
รูปที่ 2 วงจรบวกแบบมีตัวทด Full adder |
A , B = ค่าที่จะนำมาบวก และ Ci = ตัวทดจากบิทก่อนหน้า
X = A + B + Ci = ผลลัพท์ที่ได้จากการบวก
เราสามารถแก้สมการนี้ได้ด้วยตัวเอง คื อ เอา A บวกB ก่อน แล้ว เอามาผลลัพท์มาบวก Ci อีกครั้ง
ให้ Y = A+ B และ X = Y + Ci
Y = A + B กลายเป็นการบวกแบบไม่มีตัวทดแล้ว ส่วน
X = Y + Ci ก็กลายเป็นการบวกแบบไม่มีตัวทดแล้ว
ตรงนี้แสดง ว่า เราสามารถใช้ Half adder 2 ตัว มาแก้ปัญหา Y = A+ B และ X = Y + Ci ได้
ถ้าต้องการผลลัพท์ X = A + B + Ci ก็คือการเอาHalf adder ทั้งสองตัวมาต่ออนุกรมกัน
แต่มีความเป็นไปได้ที่
Y = A + B แล้วเกิดตัวทด หรือ Carry out ได้ เช่นเดียวกัน
X = Y + Ci แล้วเกิดตัวทด หรือ Carry out
เช่น A = 1 , B =1 มีตัวทดจากบิทก่อนหน้าเป็น Ci = 1
Y = A + B = 1 +1 = 0 และมีตัวทด = 1
X = Y + Ci = 0 +1 = 1 และมีตัวทด = 0 คือไม่มีตัวทด
เราจะต้องนำตัวทดทั้ง 2 มา OR กัน คือ Half Adder ตัวใดๆ ตัวนึงเกิดตัวทด มันจะส่งผลให้เกิดตัวทดในระบบ จะได้สมการตรรกะดังนี้
X = Y XOR Ci , Co = Y AND Ci
X = A XOR B XOR Ci และ Co = (A XOR B) .Ci + (A .B) ← Carry out ของวงจรแรก
การบวกเลขหลายบิท โดยทั่วๆ ไป (มีหลายวิธีในทางคณิตศาสตร์) ก็คือการบวกเลขทีละบิทโดยเริ่มจากบิทต่ำสุดไปยังบิทสูงสุด (Least significant bit to most significant bit) เช่น เราจะบวกเลขฐานสอง 2จำนวน เช่น A = 10102 กับ B = 01112
บิทต่ำสุด คือบิท 0 และสูงสุดคือ บิท 3 กรณี ตัวเลข 4 บิท
ให้ A[0] = ค่าของ A ในบิท 0 A[n] = ค่าของ A ในบิท n
ดังนัน X = A +B +Ci เขียนเป็นบิทได้ดังนี้
X[n] = A[n] + B[n] + Ci[n] หรือ
X[n] = A[n] + B[n] + Co[n-1] ( Ci[n] = Co[n-1])
ตัวอย่างบวกเลขในบิท2 X[2] = A [2]+ B[2] + Co[1] = 0 + 1 +1 = 0 และมี Co[2] หรือ Ci[3] = 1
เราสามารถแก้ปัญหาการบวกเลขหลายๆ บิทได้โดยการใช้วงจร Full adder แบบ 1 bit มาต่อรวมกันตามรูปที 3 โดยตัวทดในบิทแรก (บิท 0) ไม่มี ให้ป้อนด้วยระดับแรงดัน Low หรือ 0 สะดวกที่สุดก็คือการต่อลง ground ในวงจร
รูปที่ 3 วงจรบวกแบบ 4 bit สร้างจาก 1 bit Full adder |
ต่อไปเราจะทดลองวงจร Half adder และ Full Adder ด้วย
Logisim
0 comments:
Post a Comment