ครั้งที่ 5 รหัสไบนารี (Binary Codes) และ วงจร Combinational
รหัสไบนารี (Binary Codes) ในการใช้งานข้อมูลข่าวสารในระบบดิจิตอลนั้น เราใช้รหัสในการแทนตัวเลขและอักขระ โดยรหัสบางชนิดใช้ในการแทนค่าทางตัวเลขเพียงอย่างเดียว เช่น รหัส BCD แต่เนื่องจากข้อมูลข่าวสารที่ใช้กับคอมพิวเตอร์นั้นมีทั้ง ตัวอักษร ตัวเลข และสัญญลักษณ์ต่าง ๆ รหัสที่ใช้ในการแทนอักขระ ที่อาจจะเป็นตัวอักษร ตัวเลข สัญญลักษณ์ และคำสั่ง ต่าง ๆ มีหลายชนิด แต่ที่ได้รับความนิยมคือ รหัสอัสกี (ASCII)
รหัสไบนารี (Binary Codes) ตัวเลขที่เราใช้งานในชีวิตประจำวันคือ ระบบเลขฐานสิบ (Decimal Number Systems) แต่ตัวเลขที่ใช้ในระบบคอมพิวเตอร์คือ เลขฐานสองที่เราไม่คุ้นเคยมากนัก ในการใช้งานนั้น บ่อยครั้งที่เรามักต้องทำการเปลี่ยนระหว่างระบบตัวเลขทั้งสอง ซึ่งต้องเสียเวลามากหากตัวเลขมีขนาดใหญ่ จึงได้มีการคิดค้นหาระบบตัวเลขที่จะนำมาช่วยในการใช้งานระหว่างระบบเลขทั้งสองให้เกิดความสะดวกขึ้น ระบบตัวเลขที่มีผู้คิดขึ้นมาและนิยมใช้กันคือ รหัส BCD (Binary Coded Decimal)
รหัส BCD (Binary Coded Decimal) ในกรณีที่มีเลขฐานสิบหลายหลัก เราก็จะแบ่งออกเป็นแต่ละหลักแล้วนำเอาค่า BCD ที่แทนค่าในแต่ละหลักมาเขียนเรียงกัน ก็จะได้ค่า BCD ของเลขฐานสิบนั้น
รหัส 8421 BCD รหัส 8421 BCD เป็นการนำเอาตัวเลขไบนารีขนาด 4 บิตมาเขียนแทนเลขฐานสิบหนึ่งหลักจาก 0 ถึง 9 โดยเลข 8421 แสดงถึงค่าตัวคูณประจำหลักของรหัส ซึ่งเท่ากับตัวคูณประจำหลักของเลขฐานสอง เราจึงอาจกล่าวได้ว่า รหัส 8421 BCD สำหรับค่า 0 ถึง 9 นั้นมีค่าเช่นเดียวกับค่าในเลขฐานสอง เพียงเขียนให้เต็ม 4 หลัก โดยการเติม 0 เข้าไปข้างหน้า ในกรณีที่มีเลขฐานสิบหลายหลัก เราก็จะแบ่งออกเป็นแต่ละหลักแล้วนำเอาค่า 8421 BCD ที่แทนค่าในแต่ละหลักมาเขียนเรียงกัน ก็จะได้ค่า 8421 BCD ของเลขฐานสิบนั้น
รหัส 8421 BCD ตัวอย่างการแปลงค่าเลขฐานสิบเป็น BCD
รหัส 8421 BCD ตัวอย่างการแปลงค่าเลขฐานสิบเป็น BCD
รหัส 8421 BCD เราพบว่า การใช้เลขฐานสองจำนวน 4 บิตนั้น สามารถแทนตัวเลขต่าง ๆ ได้ถึง 16 ค่า แต่ในการนำ 8421 BCD มาใช้เพื่อแทนต่าเลขฐานสิบนั้น เรานำมาเพียง 10 ค่า สำหรับแทนค่าเลขฐานสิบหนึ่งหลัก ยังมีค่าเหลือที่ไม่ได้ใช้อีก 6 ค่า คือ 1010 1011 1100 1101 1110 1111 ซึ่งค่าทั้ง 6 นี้จะไม่ปรากฎในการใช้งานในระบบ 8421BCD ค่าในลักษณะนี้เรามักเรียกกันว่าป็นค่า don’t care ที่เราไม่สนใจว่าจะส่งผลให้output มีค่า 1 หรือ 0
รหัส BCD อื่น ๆ รหัส BCD นั้น นอกจาก 8421 BCD แล้ว ยังมีรหัส BCD อื่น ๆ ที่มีค่าน้ำหนักของตัวคูณในแต่ละตำแหน่งๆม่เท่ากัน และมีบางชนิดใช้เลขไบนารีมากกว่า 4 บิต รหัสที่ได้รับความนิยมคือ 8421 BCD ทำให้บางครั้งเรียกกันสั้น ๆ เพียง BCD แต่มีความหมายถึง 8421 ฉฏ
การบวก BCD BCD เป็นรหัสทางตัวเลขที่เราสามารถนำมาคำนวณได้ เราจะกล่าวถึง การบวกเลข BCD การบวกเป็นวิธีการพื้นฐานที่สำคัญมาก เพราะการคำนวณพื้นฐานอื่น ๆ ก็ได้จากการบวก การบวก BCD นั้นมีวิธีการที่แตกต่างจากการบวกเลขฐานสอง จากคุณสมบัติของ BCD สำหรับค่า 0 –9 ในฐานสิบที่เหมือนกับเลขฐานสองที่เราแทนเลขฐานสิบนั้น เพียงเขียนให้เต็ม 4 หลักเท่านั้น แต่หากค่าของเลขฐานสิบที่ได้มากกว่าค่า 9 ค่า BCD จะแตกต่างไปจากเลขฐานสองสำหรับค่าฐานสิบนั้น ๆ
การบวก BCD ขั้นตอนการบวกเลข BCD 2. หากผลบวกที่ได้มีขนาดเท่ากับหรือน้อยกว่า 9 ผลลบวกที่ได้คือคำตอบ 3. แต่หากผลบวกมีค่ามากกว่า 9 หรือมีบิตที่ 5 อันเป็นบิตตัวทดที่เกิดจากการบวกบิตที่ 4 ผลลัพธ์ที่ได้จะยังไม่ใช่ BCD ที่ถูกต้อง ให้นำ 6 (0110) มาบวกเข้ากับผลลัพธ์ที่ได้ จะทำให้ได้คำตอบเป็น BCD ที่ถูกต้อง ในกรณีที่มีตัวทดจากการบวกให้นำตัวทดไปบวกกับการบวก 4 บิตชุดต่อไป
การบวก BCD ตัวอย่างการบวก BCD
การบวก BCD ตัวอย่างการบวก BCD
การบวก BCD ตัวอย่างการบวก BCD
รหัสอัสกี (ASCII) มีผู้กำหนดรหัสในการใช้แทนอักขระที่จะใช้กับคอมพิวเตอร์หลายมาตรฐาน แต่ที่นิยมใช้กันในปัจจุบันคือรหัสที่ชื่อว่า รหัสอัสกี (ASCII : American Standard Coded for Information Interchange) ที่ประกอบขึ้นจากบิตทางไบนารีจำนวน 7 บิต
รหัสอัสกี (ASCII) รหัส ASCII นี้สามารถแทนได้ทั้งหมด 128 อักขระ เมื่อเขียนแทนด้วยเลขฐานสิบหกจะไดค่า 00 ถึง 7F โดยมีรายละเอียดดังนี้ 32 ตัวแรกจะเป็นรหัสสำหรับคำสั่งค่าง ๆ ที่ใช้ในวัตถุประสงค์การควบคุมโดยไม่มีการพิมพ์ออกมาบนเครื่องพิมพ์หรือกระดาษ เช่น “null” “line feed” start of text” เป็นต้น สำหรับรหัสที่เหลือเป็นรหัสกราฟฟิกที่ใช้แทนอักขระต่าง ๆ ที่พิมพ์และแสดงออกมาทางจอภาพ โดยประกอบขึ้นจากรหัสสำหรับตัวอักษร ทั้งตัวเล็ก ตัวใหญ่ เลขฐานสิบ จ ตัว เครื่องหมายวรรคตอน และสัญญลักษณ์อื่น ๆ ที่ใช้กันทั่วไป
รหัสอัสกี
บิตพาริตี้ ในการใช้งานรหัสต่าง ๆ ที่ใช้แทนอักขระในคอมพิวเตอร์นั้น เราแทนค่าทางไบนารีด้วยสัญญาณทางไฟฟ้า ซึ่งอาจจะมีการรบกวนจากสัญญาณไฟฟ้าอื่น โดยเฉพาะเมื่อมีการส่งสัญญาณ ไฟฟ้าจากที่หนึ่งไปยังอีกที่หนึ่ง ซึ่งอาจทำให้สัญญาณไฟฟ้าที่แทนค่า 0 มีค่าทางสัญญาณเหมือนกับที่แทนค่า 1 ทำให้ข้อมูลผิดไปจากเดิม
บิตพาริตี้ มีการใช้หลักการของบิตพาริตี้ (Parity Bit) เพื่อการตรวจสอบความผิดพลาดระหว่างการใช้งาน บิตพาริตี้ เป็นบิตที่เพิ่มเข้าไปในกลุ่มของบิตที่แทนรหัสแล้วทำให้จำนวนบิตโดยรวมทั้งหมดมีคุณสมบัติเฉพาะ โดยทำให้จำนวนเลข 1 ในกลุ่มของบิตนั้น (รวมทั้งบิตพาริตี้ด้วย) มีจำนวนเป็นคู่เสมอ หรือเป็นคี่เสมอ ตามวิธีการที่เลือกว่าจะเลือกวิธีการของ พาริตี้คู่ (Even Parity) หรือ พาริตี้คี่ (Odd Parity) ตาม ลำดับ
บิตพาริตี้ ตัวอย่างรหัส BCD ที่มีบิตพาริตี้
บิตพาริตี้สำหรับตรวจสอบความผิดพลาด บิตพาริตี้ใช้ในการตรวจความผิดพลาดที่เกิดกับบิตเพียงบิตเดียว (หรือบิตที่ผิดพลาดมีจำนวนคี่) แต่ไม่สามารถใช้ครวจสอบความผิดพลาดที่เกิดกับบิต 2 บิตในกลุ่มเดียวกัน ตัวอย่างเช่น การส่ง BCD Code ค่า 0101 โดยมีบิตพาริตี้คู่ที่เขียนไว้ทางซ้ายสุดเป็น 0 ดังนี้
บิตพาริตี้สำหรับตรวจสอบความผิดพลาด สมมติว่ามีความผิดพลาดเกิดขึ้นที่บิตที่สามนับจากทางซ้าย (ค่า 1 เปลี่ยนเป็น 0) ดังนี้ เมื่อผู้รับได้รับรหัสนี้ก็จะทำการตรวจสอบพาริตี้ พบว่ามีจำนวนของ 1 อยู่เพียงตัวเดียวซึ่งไม่เป็นจำนวนคู่ แสดงว่าเป็นพาริตี้คี่ ซึ่งไม่ตรงกับที่ผู้ส่งส่งมา แสดงว่าข้อมูลนี้มีความผิดพลาด
บิตพาริตี้สำหรับตรวจสอบความผิดพลาด ในกรณีที่มีบิตผิดพลาดในรหัส 2 บิต (หรือผิดพลาดเป็นจำนวนคู่) บิตพาริตี้ที่เติมในลักษณะนี้ไม่สามารถตรวจสอบหาความผิดพลาดได้ จึงต้องเพิ่มกระบวนการสร้างพาริตี้ในแนวตั้งเข้าไปอีก โดยนำเอารหัสของอักขระที่เติมพาริตี้บิต(ในแนวนอน)มาแล้วมาเติมในแนวตั้ง โดยพิจารณาจากบิตตำแหน่งเดียวกันของทุกอักขระแล้วสร้างบิตพาริตี้คู่หรือคี่จำนวน 1 บิต ทำเช่นนี้กับทุก ๆ บิต ก็จะได้บิตพาริตี้มาจำนวนเท่ากับจำนวนบิตของอักขระนั้น (รวมบิตพาริตี้ในแต่ละอักขระด้วย)
การแสดงค่าในฐานสิบ ตัวเลขที่ใช้ในคอมพิวเตอร์คือเลขฐานสอง แต่มนุษย์เราคุ้นเคยกับระบบเลขฐานสิบ ฉะนั้นเมื่อคอมพิวเตอร์ประมวลผลเสร็จและนำมาแสดงให้มนุษย์ทราบนั้น ต้องแสดงในรูปฐานสิบ วิธีการแสดงผลในรูปของเลขฐานสิบที่เรามักพบทั่วไป คือการแสดงผ่าน หลอดแสดงผลแบบ 7 ขั้ว ที่เรียก 7 segment display
7 segment Display Arrangment of segment
7 segment Display Display of decimal digits with 7-segment device
7 segment Display Arrangement of 7-segment LED displays
7 segment Display Active segments for each decimal digit
7 segment Display Block diagram of 7-segment logic and display
7 segment Display Truth table for 7-segment logic
PULSE WAVEFORM The operation of any gate is the same regardless of whether its inputs are pulsed or constant levels The nature of the inputs (pulsed or constant-levels) does not alter the truth table of a circuit
PULSE WAVEFORM
PULSE WAVEFORM
PULSE WAVEFORM
PULSE WAVEFORM
วงจร Combinational วงจร combinational เป็นวงจรที่ประกอบขึ้นจาก gate ตัวเดียวหรือหลายตัวต่อกันเพื่อสร้างเอาท์พุตตามฟังชั่นบูลลีน โดยวงจรจะไม่มีอุปกรณ์ความจำประกอบอยู่ด้วย
Parallel Binary Adders ในการบวกเลขไบนารีหลายหลักเข้าด้วยกันนั้น เราสามารถใช้วงจรบวกเลข (Full Adder) หลาย ๆตัวมาต่อเข้าด้วยกัน ดังตัวอย่าง
Parallel Binary Adders วงจร
Parallel Binary Adders ตัวอย่าง
Parallel Binary Adders 4-bit parallel Binary Adder
Adder Expansion Cascading of two 4-bit adders to form an 8-bit adders
วงจรเปรียบเทียบ (Comparators) ความสามารถพื้นฐานของวงจรเปรียบเทียบก็เพื่อเปรียบเทียบขนาดของจำนวนทางไบนารี่ 2 จำนวนเพื่อหาความสัมพันธ์ระหว่างตัวเลขทั้งสอง รูปแบบที่ง่ายที่สุดก็คือการเปรียบเทียบว่าเลขทั้งสองจำนวนมีขนาดเท่ากันหรือไม่
วงจรเปรียบเทียบ (Comparators) การเปรียบเทียบระหว่างบิต
วงจรเปรียบเทียบ (Comparators) วงจรเปรียบเทียบเลขขนาด 2 บิตสองจำนวนว่าเท่ากันหรือไม่
วงจรเปรียบเทียบ (Comparators) ตัวอย่าง
วงจรเปรียบเทียบ (Comparators) ตัวอย่างวงจรเปรียบเทียบขนาด 4-bit
วงจรเปรียบเทียบ (Comparators) ตัวอย่าง จากรูป จงหาว่า A = B, A>B sinv A< B จากรูป A= 0110 และ B = 0011 ค่า เอาท์พุต A>B มีค่า = 1
วงจรถอดรหัส (Decoders) ความสามารถพื้นฐานของวงจรถอดรหัสก็คือวงจรที่มำการตรวจหาการปรากฎของการประกอบกันที่กำหนดของบิตที่เข้ามาที่อินพุต และเพื่อแสดงการปรากฏของรหัสนั้น ๆ โดยค่าระดับเอาท์พุตที่กำหนด
1011 decoder
BCD to Decimal Decoder The BCD to Decimal Decoder converts each BCD code (8421 BCD) into one of ten possible decimal digit indications It is frequently referred as a 4-line-to-10-line decoder or a 1-of-10-decoder
BCD to Decimal Decoder Truth table
BCD to 7-segment Decoder The BCD to 7-segment decoder accepts the BCD code on its inputs and provides outputs to drive 7-segment display devices to produce a decimal readout
BCD to 7-segment Decoder Logic diagram for 7-segment decoder
BCD to 7-segment Decoder Pin diagram and logic symbol for the 74LS47 IC
ENCODER An encoder is a combinational logic circuit that essential performs a “reverse” decoder function. It accepts an active level on one of its inputs representing a digit, such as a decimal or octal digit, and convert it to a coded output such as a BCD or Binary
Decimal-to-BCD Encoder Logic symbol for a decimal-to-BCD encoder
Decimal-to-BCD Encoder Truth table
Decimal-to-BCD Encoder Logic diagram of a decimal-to-BCD encoder
Decimal-to-BCD Encoder Pin diagram and logic symbol for the 74HC147 IC
Code Converter A combinational logic circuits to convert from one code to another BDC-to-Binary Conversion The value, or weight, of each bit in the BCD number is represented by a binary number All of the binary representations of the weights of bits that are 1s in the BCD number are added The result of this addition is the binary equivalent of the BCD number
Code Converter BDC-to-Binary Conversion
Code Converter BDC-to-Binary Conversion
MULTIPLEXER A multiplexer (MUX) is a device that allows digital information from several sources to be routed onto a single line for transmission over that line to a common destination The basic multiplexer has several data-input lines and a single output line. It also has data-select inputs, which permit digital data on any one of the inputs to be switched to the output line
MULTIPLEXER Logic symbol for a 1-to-4 data selector/multiplexer
MULTIPLEXER Data selection for a 1-to-4-multiplexer
MULTIPLEXER Logic diagram for a 4-input multiplexer
DEMULTIPLEXER A demultiplexer (DEMUX) basically reversed the multiplexing function It takes a digital information from one line and distributed it to a given number of output lines Also known as a data distributor
DEMULTIPLEXER A 1-to-4 line demultiplexer
DEMULTIPLEXER Output waveform on D0 through D3
PARITY GENERATOR/CHECKER Error can occur as a digital codes are being transferred from one point to another within a digital system or while codes are being transmitted from one system to another The error take the form of undesired in the bits that make up the code information; that is a 1 can change to a 0, or a 0 to a 1 because of the component malfunction or electrical noise
PARITY GENERATOR/CHECKER In most digital systems, the probability that even a single bit error will occur is very small, and the likelihood that more than one will occur is even smaller Nevertheless, when an error occurs undetected, it can cause serious problems in a digital system
PARITY GENERATOR/CHECKER Basic parity logic 1 parity bit indicates if the number of 1s in a code is even or odd for the purpose of error detection In order to check for or to generate the proper parity in a given code, a basic principle can be used The sum (disregarding carries) of an even number of 1s is always 0, and the sum of an odd number of 1s is always 1
PARITY GENERATOR/CHECKER Basic parity logic Therefore to determine if a given code has even parity or odd parity, all the bits in that code are summed
PARITY GENERATOR/CHECKER A 9-bit parity generator/checker