ในการเชื่อมต่อระหว่างระบบซึ่งใช้รหัสที่แตกต่างกันนั้น จำเป็นจะต้องมีการเปลี่ยนรหัสซึ่งปกติวงจรดิจิตอลนั้นจะใช้รหัสเป็นเลขฐานสองเสมอ เช่น
ถ้าหากต้องการเปลี่ยนเลขฐานสิบ 0 ถึง 9 ไปเป็นเลขฐานสองก็จะต้องมีวงจรเปลี่ยนรหัส ปกติการเปลี่ยนรหัสจากวงจรสวิตช์กดที่ใช้แทนเลข ฐานสิบ
ให้เป็นเลขฐานสองเรียกกันว่าวงจรเข้ารหัส หรือวงจรเอนโค้ดเดอร์(Encoder) แต่ขณะเดียว กัน ถ้าหากต้องการเปลี่ยนรหัสจากรหัสบีซีดีเป็นรหัส
อย่างอื่น เรียกวงจรนั้นว่า วงจรถอดรหัสหรือวงจรดีโค้ดเดอร์ (Decoder) ซึ่งจะได้กล่าวรายละเอียดต่อไป
|
13.1 การออกแบบวงจรเข้ารหัส
13.1.1 หลักการออกแบบวงจรเข้ารหัส
โครงสร้างของวงจรเข้ารหัส
|
รูปที่ 13.1 โครงสร้างของวงจรเข้ารหัส
|
วงจรเข้ารหัสที่จะกล่าวต่อไปนี้ เป็นวงจรเข้ารหัสที่เปลี่ยนเลขฐานสิบจากแป้นพิมพ์หรือสวิตซ์กดให้เป็นรหัสบีซีดี ในขณะเดียวกันราสามารถแปลง
ตัวอักษรหรือเครื่องหมายใดๆ เป็นรหัส เลขฐานสองจากคีย์บอร์ดที่ต้องการได้ โดยใช้วงจรลอจิกเข้ามาช่วย วงจรนั้นเรียกว่า วงจรเข้ารหัสเช่นเดียวกัน
ในที่นี้จะยกตัวอย่างวงจรเข้ารหัสที่ทำหน้าที่แปลงเลขฐานสิบให้เป็นเลขฐานสอง (รหัสบีซีดี) ซึ่งเป็นวงจรพื้นฐานที่สามารถทำความเข้าใจได้ง่าย
ดังแสดงในรูปที่ 13.1
|
การทำงานของวงจร
จากวงจรสถานะปกติทางอินพุตจะเป็นลอจิก “1” ขณะกดสวิตซ์จะทำให้อินพุตเป็นลอจิก “0” ทางด้านเอาต์พุตก็เช่นเดียวกันสถานะปกติจะเป็น
ลอจิก “0”แต่ขณะกดสวิตช์เอาต์พุตจะเป็นลอจิก “1” หรือ “0” นั้นขึ้นอยู่กับว่ากดสวิตซ์อันไหน ส่วนเอาต์พุตคีย์สโตรบ (Key Strobe = Ks)
จะทำหน้าที่ในการผลิตสัญญาณพัลส์ทุกๆ ครั้งที่กดสวิตช์ และใช้เป็นตัวควบคุมวงจรที่ต่อจากวงจรเข้ารหัสให้รับหรือเก็บสัญญาณที่ได้จากเอาต์พุต
A, B, C และ D นอกจากนี้ยังมีหน้าที่อีกอย่างหนึ่ง คือ จะป้องกันไม่ให้วงจรที่ต่อจากวงจรเข้ารหัสนั้นรับสัญญาณใหม่อีกหลังการกดสวิตช์ตัวใดไป
แล้วและยังคงถูกกดอยู่ โดยปกติวงจรที่ต่อจากวงจรเข้ารหัส จะใช้ดีฟลิปฟลอปต่อเป็นตัวเก็บสัญญาณอีกขั้นตอนหนึ่ง แล้วใช้เอาต์พุตคีย์สโตรบต่อ
ผ่านวงจรโมโนสเตเบิลมัลติไวเบรเตอร์เข้าไปยังอินพุตคล็อกของดีฟลิปฟลอป การทำงานของวงจรในรูปที่ 13.2 จะเป็นไปตามตารางที่ 13.1
|
รูปที่ 13.2 แสดงวงจรเข้ารหัสแปลงรหัสจากเลขฐานสิบเป็นรหัสบีซีดี
|
ตารางที่ 13.1 ตารางความจริงของวงจรควบคุมเอาต์พุตของวงจรเข้ารหัสเบื้องต้น
|
ในระบบดิจิตอลจะใช้ตัวเข้ารหัส (Encoder) แสดงในรูปที่ 13.3 เพื่อแปลงรหัสจากเลขฐานสิบให้เป็นรหัสบีชีดี 8421 ลักษณะ
ของตัวเข้ารหัสแบบนี้เรียกว่า 10-line-to-4-line priority Encoder หน้าที่ของตัวเข้ารหัส คือ ทำการแปลงรหัสของข้อมูล เพื่อให้
ระบบดิจิตอลสามารถนำข้อมูล ดังกล่าวนั้นไปทำงาน หรือไปประมวลผลการทำงานต่อได้อย่างถูกต้อง เช่น ตัวอย่างในรูปที่ 13.3 ตัวเข้ารหัส
จะแปลงรหัสเลขฐานสิบที่ได้รับจากแป้นพิมพ์ เพื่อแปลงรหัสเข้าในระบบเลขฐาน สอง เช่น รหัสบีซีดี 8421 เพื่อส่งข้อมูลดังกล่าวให
้หน่วยประมวลผลและหน่วยความจำ
|
รูปที่ 13.3 แสดงระบบดิจิตอลที่ประกอบไปด้วยตัวเข้ารหัสและตัวถอดรหัส
|
สำหรับตัว เข้ารหัสแบบ 10-1ine-to-4 line priority Encoder นั้น แสดงแผนภาพกรอบในรูปที่ 13.4 (ก) จะเห็นว่ามีอินพุต 1 ถึง 9
และเอาต์พุตเป็นรหัสบีซีดี 8421 จำนวน 4 เอาต์พุต คือ A, B, C และ D ตัวเข้ารหัสนี้ทำงานด้วยลอจิก “0” (Active Low) ดังนั้นเมื่อคุณ
ให้ลอจิก “0” (Low) ทางอินพุตขาที่ 3 เอาต์พุตบีซีดีจะมีค่า คือ นั่นเอง ลักษณะการจัดวางขาของแสดงในรูปที่ 13.4 (ข)
เป็นตัวเข้ารหัสเบอร์ 74147 (10-1ine-to-4 line priority Encoder) จะเห็นว่ามีอินพุต 1 ถึง 9 และเอาต์พุต A, B, C และ D มีขา
ที่ขา 14 และขา GND ที่ขา 8 สำหรับขา 15 เป็นขา NC ไม่ได้ใช้งานการทำงานของตัวเข้ารหัสเบอร์ 74147 แสดงดังตารางใน
รูปที่ 13.4 (ค) เนื่องจากตัวเข้ารหัสตัวนี้เป็นชนิดทำงานด้วยลอจิก “0” (Active Low Input) และเอาต์พุตเป็นแบบ (Active Low Output)
พิจารณาการทำงานของตัวเข้ารหัสจากตารางความจริงในรูปที่ 13.4 (ค) ในบรรทัดแรกจะเห็นว่าเมื่อไม่ป้อนลอจิก “0” ให้กับอินพุต 1 ถึง 9
เอาต์พุตจะเป็น “1” ทั้ง 4 บิต ต้องอินเวิร์ส ข้อมูลเอาต์พุตก่อนจึงจะถูกต้อง หรือการที่ป้อนลอจิก “0” เข้าที่ขา 9 เอาต์พุตจะแสดงข้อมูล 4 บิต
เป็น LH HL เท่ากับ 0110 ต้องอินเวิร์ส ข้อมูลเอาต์พุตก่อน จะได้ สำหรับโครงสร้างภายในของ 10-1ine-to-4 line
priority Encoder แสดงในรูปที่ 13.4 (ง)
|
รูปที่ 13.4 แสดงรายละเอียดของ 10-1ine-to-4 line priority Encoder เบอร์ 74147
|
|
เมื่อนำวงจรเข้ารหัสเบอร์ 74147 ต่อกับสวิตซ์อินพุต เพื่อป้อนค่ารหัสสวิตซ์ฐานสิบ (0 ถึง 9) และรหัสบีซีดี 8421 ด้านเอาต์พุตขนาด 4 บิต
ต่อผ่านนอตเกต 4 ตัว เพื่อให้แสดงผลได้อย่างถูกต้องเนื่องจากเอาต์พุตของ 74147 เป็นแบบ Active Low เอาต์พุต แสดงในรูปที่ 13.5
|
รูปที่ 13.5 วงจรเข้ารหัสเลขฐานสิบด้วยสวิตซ์เป็นรหัสบีซีดี 8421 ขนาด 4 บิต
|
13.1.2 วงจรเข้ารหัสเลขฐานสิบเป็นเลขฐานสอง
วงจรเข้ารหัสจากเลขฐานสิบเป็นเลขฐานสองแสดงดังรูปที่ 13.6 โดยสวิตซ์ T แต่ละตัวจะแทนค่าเลขฐานสิบ เช่น T1 แทนเลข 1, T2
แทนเลข 2 เป็นต้น ทางด้านเอาต์พุตเป็นเลขฐานสอง 4 บิต D, C, B, A เพื่อเปลี่ยนเอาต์พุตให้เป็นแบบ Active High จึงเพิ่ม นอตเกตเข้า
ที่เอาต์พุตดังรูปที่ 13.6
|
รูปที่ 13.6 แสดงวงจรเข้ารหัสเลขฐานสิบเป็นเลขฐานสอง
|
จากรูปที่ 13.6 ถ้ากดสวิตซ์ T1จะได้เอาต์พุต DBCA เป็น 0001 ถ้ากดสวิตซ์ T2 จะได้เอาต์พุต DCBA เป็น 0010 ในกรณีที่กด
สวิตซ์มากกว่า 1 ตัวพร้อมกัน วงจรจะเลือกทำงานตามสวิตซ์ที่มีลำดับความสำคัญสูงสุด เช่น กดสวิตซ์ T1, T3 และ T6 พร้อมกัน วงจร
จะเลือกทำงานตามสวิตซ์ T6 คือมีเอาต์พุต DCBA เป็น 0110
|
13.1.3 วงจรเข้ารหัสเลขฐานแปดเป็นเลขฐานสอง
วงจรเข้ารหัสเลขฐานแปดไปเป็นเลขฐานสองแสดงดังรูปที่ 13.7
|
รูปที่ 13.7 แสดงวงจรเข้ารหัสเลขฐานแปดเป็นเลขฐานสอง
|
13.1.4 วงจรเข้ารหัสเลขฐานสิบหกเป็นเลขฐานสอง
วงจรเข้ารหัสเลขฐานสิบหกไปเป็นเลขฐานสอง แสดงดังรูปที่ 13.8 ได้จากการนำไอซีเบอร์ 74148 2 ตัวมาต่อร่วมกัน โดยการต่อขา
EI ของ 74148 ตัวที่เป็นลอจิกค่านัยสำคัญน้อยเข้ากับขา EO ของ 74148 ตัวที่เป็นลอจิกค่านัยสำคัญมาก ถ้าเพิ่มแอนด์เกตเข้ามาที่อินพุต
จะได้เอาต์พุตแบบ Active Low ดังวงจรรูปที่ 13.8 (ก) ถ้าเพิ่มแนนด์เกต เข้ามาที่อินพุต จะได้เอาต์พุตแบบ Active High ดังวงจรรูปที่
13.8 (ข)
|
รูปที่ 13.8 แสดงวงจรเข้ารหัสเลขฐานสิบหกเป็นเลขฐานสอง
<< Go To Top
|
13.2 การออกแบบวงจรเข้ารหัสด้วย VHDL
จากโครงสร้างของวงจรเข้ารหัสเราสามารถนำมาออกแบบด้วยภาษา VHDL ได้ดังนี้
-------------------------------------------------
-- 4:2 Encoder
-------------------------------------------------
library ieee;
Use ieee.std_logic_1164.all;
-------------------------------------------------
Entity ENCODER is
Port( I: in std_logic_vector(3 downto 0);
O: out std_logic_vector(1 downto 0) );
End ENCODER ;
-------------------------------------------------
Architecture behv of ENCODER is
Begin
-- process statement
Process (I)
Begin
-- use case statement
Case I is
When "0001" => O <= "00";
When "0010" => O <= "01";
When "0100" => O <= "10";
When "1000" => O <= "11";
When others => O <= "XXXX";
End Case;
End Process;
End behv;
Architecture when_else of ENCODER is
Begin
-- use when..else statement
O <= "00" When I = "0001" Else
"01" When I = "0010" Else
"10" When I = "0100" Else
"11" When I = "1000" Else
"XXXX";
End when_else;
|
รูปที่ 13.9 ตัวอย่างการออกแบบวงจร 2-line-to-4-line Encoder ด้วยภาษา VHDL
<< Go To Top
|
13.3 การออกแบบวงจรถอดรหัส
วงจรถอดรหัสเป็นวงจรทำหน้าที่เปลี่ยนจากเลขฐานสองไปเป็นเลขในระบบอื่น โครงสร้างของวงจรถอดรหัสจะเหมือนกับ
DMUX โดยนำ Select Input ไปใช้เป็นอินพุตของวงจร และนำ Data Input ไปใช้เป็นขา Enable (E) หรือ
Strobe (G) แสดงดังรูปที่ 13.10
|
รูปที่ 13.10 แสดงโครงสร้างของวงจรถอดรหัส
|
เอาต์พุตของวงจรถอดรหัสจะเป็น Active Low ถ้าต้องการแบบ Active High ก็ต่อนอตเกตเข้าที่ขาเอาต์พุตขา Enable
อาจจะมีมากกว่า 1 ขา และอาจเป็นแบบ Active High หรือ Active Low แต่ละสถานะของอินพุตจะทำให้เอาต์พุต Active
เพียงครั้งละ 1 เอาต์พุตเท่านั้น ส่วนเอาต์พุตอื่นๆที่เหลือจะไม่ Active เอาต์พุตแบบ Active High จะสร้าง Minterm
ในขณะที่เอาต์พุตแบบ Active Low จะสร้าง Maxterm ขนาดของวงจรถอดรหัสกำหนดในรูป “จำนวนอินพุต : จำนวน
เอาต์พุต” หรือ “จำนวนอินพุต – to – จำนวนเอาต์พุต” หรือ “จำนวนอินพุต-line-to-จำนวนเอาต์พุต-line” หรือ
“1-of-จำนวนเอาต์พุต” (เพราะว่า Active เพียง 1 เอาต์พุต จากจำนวนเอาต์พุตทั้งหมด)
|
3.3.1 ไอซีที่เป็นวงจรถอดรหัส
74138 3-Line-to-8-line Decoder/Demultiplexer เป็นไอซี ทำหน้าที่เปลี่ยนจากเลขฐานสอง (Binary) ไปเป็นเลขฐานแปด
(Octal) บางครั้งเรียกว่า Binary-to-Octal Address Decoding
|
รูปที่ 13.11 แสดงสัญลักษณ์ไอซีเบอร์ 74138
|
74154 4-Line-to-16-line Decoder/Demultiplexer เป็นไอซีทำหน้าที่เปลี่ยนจากเลขฐานสอง (Binary)
ไปเป็นเลขฐานสิบหก (Hexadecimal) บางครั้งเรียกว่า Binary-to-Hexadecimal Address Decoding
|
รูปที่ 13.13 แสดงสัญลักษณ์ไอซีเบอร์ 74154
|
74159 4-line-to-16-line Decoder/Demultiplexer with Open-Collector Output มีคุณสมบัติ
เหมือนไอซีเบอร์ 74154
|
74139 Dual 2-line-to-4-line Decoder/Demultiplexer
รูปที่ 13.13 แสดงสัญลักษณ์ไอซีเบอร์ 74139
74155 Dual 2-line-to-4-line Decoder/Demultiplexer
รูปที่ 13.14 แสดงสัญลักษณ์ไอซีเบอร์ 74155
|
74156 Dual 2-line-to-4-line Decoder/Demultiplexer with Open-Collector Output มีคุณสมบัติเหมือนไอซีเบอร์ 74155
74137 3-line-to-8-line Decoder/Demultiplexer with Address Latch
7442 4-line BCD-to-10-line Decimal Decoder เป็นวงจรถอดรหัส ทำหน้าที่เปลี่ยนรหัส BCD 4 บิตไปเป็นเลขฐานสิบ ซึ่งมีการใช้
งานอินพุตในช่วง 0000 ถึง 1001 ส่วนกรณีอื่นๆ เอาต์พุตจะไม่ Active (เอาต์พุตเป็น 1)
|
รูปที่ 13.15 แสดงสัญลักษณ์ไอซีเบอร์ 7442
|
13.3.2 การเพิ่มจำนวนเอาต์พุตของวงจรถอดรหัส
การเพิ่มจำนวนเอาต์พุตทำได้โดยวิธีเดียวกับ DMUX เช่นในรูปที่ 13.16 เป็นการนำ 2 :4 Decoder 2 ตัวมาต่อเป็น 3 : 8 Decoder
|
รูปที่ 13.16 แสดงการต่อวงจร 2 : 4 Decoder ใช้งานเป็น 3 : 8 Decoder
|
ตัวอย่างที่ 13.1 จงใช้ไอซีเบอร์ 74138 3-line-to-8-line Decoder ออกแบบวงจรที่มีสมการลอจิกดังนี้
|
ตัวอย่างที่ 13.2 จงออกแบบวงจรคูณเลขฐานสองขนาด 2 บิต โดยใช้ 74154 4-line-to-16-line Decoder
วิธีทำ
|
ตารางความจริง
จากตารางความจริงเขียนสมการลอจิกได้เป็น
<< Go To Top
|
13.4 วงจรถอดรหัสเพื่อขับตัวแสดงผล
ตัวถอดรหัส (Decoder) ซึ่งแสดงในระบบดิจิตอลในรูปที่ 13.3 จะพบว่าตัวถอดรหัสจะรับข้อมูลจากที่หน่วยประมวลผล
และหน่วยความจำทำงานเสร็จแล้ว ข้อมูลดังกล่าวจะเป็นรหัสใดรหัสหนึ่งในระบบเลขฐานสอง ในรูปที่ 13.3 ข้อมูลที่เข้าสู่ตัว
ถอดรหัสคือรหัสบีซีดี 8421 ตัวถอดรหัสจะแปลงรหัสดังกล่าวให้เป็นเลขฐานสิบ และแสดงผลที่ตัวแสดงผลไดโอดเปล่งแสง 7
ส่วน ตัวถอด รหัสลักษณะนี้อาจเรียกได้ว่า BCD-to-seven -segment Decoder/Driver ลักษณะของตัวถอดรหัสบีซีดี
8421 ให้ไปแสดงผลที่ตัวเลข 7 ส่วนแสดงในรูปที่ 13.17 เมื่อนำข้อมูลรหัสบีชีดี 8421 4 บิตที่มีค่า 1001 เข้าที่อินพุตของ
ตัวถอดรหัส (อินพุต A, B, C และ D) ทางด้านเอาต์พุตของตัวถอดรหัสจะส่งสัญญาณลอจิกไปควบคุม ตัวแสดงผลไดโอดเปล่ง
แสง 7 ส่วนให้ตัดเป็นเลขฐานสิบเท่ากับ 9 จะสังเกตเห็นว่าเอาต์พุตของตัวถอดรหัสนี้ จะมี 7 ขา คือ a ถึง g เท่ากับจำนวนอินพุต
ของตัวแสดงผลไดโอดเปล่งแสง 7 ส่วน
|
รูปที่ 13.17 แสดงการต่อตัวถอดรหัสกับตัวแสดงผลไดโอดเปล่งแสง 7 ส่วน
|
ตัวถอดรหัสนอกเหนือจากที่แสดงในรูปที่ 13.17 แล้ว ยังมีอีกหลายชนิด เช่น ตัวถอดรหัสเบอร์ 7442 ถอดรหัสบีซีดีเป็นเลขฐานสิบ
(BCD-to-decimal) หรือตัวถอดรหัสเบอร์ 7443 ถอดรหัสเกิน 3 เป็นเลขฐานสิบ (Excess-3-to-decimal) หรือตัวถอดรหัสเกิน 3
และรหัสเกรย์เป็นเลขฐานสิบ (Excess-3-gray-to-decimal) มีลักษณะการจัดวางขาดังรูปที่ 13.18 (ก) และ ตารางความจริงแสดง
การทำงานของตัวถอดรหัสดังกล่าว ดังรูปที่ 13.18 (ข) และมีลักษณะโครงสร้างภายในของตัวถอด รหัสเบอร์ 7442, 7443 และ 7444
ดังรูปที่ 13.18 (ค)
|
รูปที่ 13.18 แสดงการวางขาตัวถอดรหัสเบอร์ 7442, 7443, 7444 และโครงสร้างภายใน
พร้อมทั้งตารางความจริงแสดงการทำงานของตัวถอดรหัส
|
13.4.1 ตัวแสดงผลไดโอเปล่งแสง 7 ส่วน
หลักการพื้นฐานในการแปลงรหัสที่เครื่องดิจิตอลทำงานได้มาสู่รหัสที่มนุษย์เข้าใจ คือ การแปลงระบบเลขฐานสอง
เช่น รหัสบีชีดี 8421 ดังในรูปที่ 13.3 ซึ่งผ่านการประมวลผลจากหน่วยประมวลผลกลาง และหน่วยความจำมาแล้วมา
แสดงผลเป็นเลขฐานสิบที่ตัวแสดงผลไดโอดเปล่ง แสง 7 ส่วน ลักษณะของไดโอดเปล่งแสง 7 ส่วน แสดงในรูปที่ 13.19
(ก) แต่ละส่วนมีชื่อเรียกตาม ลำดับอักษร a ถึง g เมื่อไดโอดเปล่งแสงทุกตัวติดสว่างจะเป็นเลข 8 ฐานสิบ จากรูปที่ 13.19
(ข) คือการแสดงผลเป็นตัวเลข 0-9 (ฐานสิบ) โดยตัวแสดงผลไดโอดเปล่งแสง 7 ส่วน ตัวที่ ทำหน้าแปลงรหัสที่เครื่องทำงาน
ได้มาสู่รหัสที่มนุษย์รู้จักเรียกว่า ตัวถอดรหัส (Decoder)
|
รูปที่ 13.19 แสดงตัวแสดงผลไดโอดเปล่งแสง 7 ส่วน และตัวเลขฐานสิบ (0-9)
|
ลักษณะภายนอกของตัวแสดงผลไดโอดเปล่งแสง 7 ส่วนมีหลายแบบ เช่น ในรูปที่ 13.20 (ก) เป็นตัวแสดงผล 1 หลัก
ตัวถังพลาสติกแบบ DIPปกติจะมี 14 ขา แบบที่สองแสดงในรูปที่ 13.20(ข) เป็นตัวแสดงผล 1 หลักเช่นกัน ตัวถังแบบ 10 ขา
(10-Pin single digit package) และแบบหลายหลัก (Multidigit package) แสดงในรูปที่ 13.20 (ค)
|
รูปที่ 13.20 แสดงลักษณะภายนอกของตัวแสดงผลไดโอดเปล่งแสง 7 ส่วนแบบต่างๆ
|
โครงสร้างภายในของไดโอดเปล่งแสง 7 ส่วนคือ อุปกรณ์รอยต่อพี-เอ็น โดยปกติแต่ละส่วนจะกินกระแสไม่เกิน 30 mA เมื่อต่อ
แหล่งจ่ายไบแอส 5 V จึงต้องมีตัวต้านทานจำกัดกระแส 150 ต่ออนุกรมอยู่ด้วย ดังรูปที่ 13.21 (ก) เพราะปกติจะทำงานที่แรงดัน
เพียง 1.7 – 2.1 V เท่านั้น เนื่อง จากไดโอด เปล่งแสงมี 2 ขั้วคือ แอโนด (A) และแคโทด (K) ดังนั้นจึงมีตัวแสดงผลไดโอดเปล่งแสง
7 ส่วน 2 ชนิดคือ ชนิดแอโนดร่วม ดังรูปที่ 13.21 (ข) และชนิดแคโทดร่วม ดังรูปที่ 13.21 (ค) เมื่อต้องการให้ตัวแสดงผลไดโอด
เปล่งแสง 7 ส่วนชนิดแอโนดร่วมทำงาน ต้องป้อนลอจิก “0” เข้าที่อินพุตของมัน และที่จุดร่วมต้องต่อกับแรงดัน +5 V ดังรูปที่ 13.21
(ง) ในทำนองเดียวกัน เมื่อต้องการให้ตัวแสดงผลไดโอดเปล่งแสง 7 ส่วนชนิดแคโทดร่วมทำงานต้องป้อนลอจิก “1” เข้าที่อินพุตและ
ที่จุดร่วมต้องต่อกับกราวด์ ดังรูปที่ 13.21 (จ)
|
รูปที่ 13.21 แสดงโครงสร้างภายในและการควบคุมตัวแสดงผลไดโอดเปล่งแสง 7 ส่วน ทั้งชนิดแอโนดร่วมและชนิดแคโทดร่วม
|
รูปที่ 13.21 (ต่อ)
|
13.4.2 ตัวถอดรหัสบีซีดีขับออกตัวแสดงผลเลข 7 ส่วน
ตัวถอดรหัสที่เป็นที่นิยมใช้กันอย่างมากคือ ตัวถอดรหัสบีชีดี 8421 ให้เป็นเลขฐานสิบโดยขับสัญญาณออกที่ตัวแสดง
ผลไดโอดเปล่งแสง 7 ส่วน คือ วงจรรวมทีทีแอล เบอร์ 7447 และเบอร์ 7448 ดังแสดงในรูปที่ 13.22 (ก) คือเบอร์ 7447
มีขาอินพุดรับข้อมูลรหัสบีซีดี 8421จำนวน4 บิต (คือ A, B, C และ D) และมีขาอินพุตควบคุมอีก 3 ขาคือ ขา Lamp test
(LT) และ Blanking (BI/RBO) และขา Zero blanking (RBI) สำหรับขาเอาต์พุตของมันมี 7 ขาคือ ขา a ถึง g
ที่จะนำไปต่อขับตัวเลข 7 ส่วนเพื่อแสดงผลเลขฐานสิบได้ สำหรับเบอร์ 7447 ใช้สำหรับขับตัวเลข 7 ส่วนชนิดแอโนดร่วม
เท่านั้น ตารางการทำงานของตัวถอดรหัสเบอร์ 7447 แสดงในรูปที่ 13.22 (ข) และรหัสเลขฐานสิบที่ตัวถอดรหัสนี้ถอด
ได้แสดงในรูปที่ 13.22 (ค)
|
(ข)
รูปที่ 13.22 แสดงลักษณะของตัวถอดรหัสเบอร์ 7447 และตารางแสดงการทำงานของตัวถอดรหัส
และเอาต์พุตที่ตัวถอดรหัสขับออกที่ตัวแสดงผลไดโอดเปล่งแสง 7 ส่วน
|
รูปที่ 13.22 (ต่อ)
|
สำหรับการทำงานของขา LT, BI/RBO และ RBI ให้ดูจากตารางในรูปที่ 13.22 (ข) ที่ข้อ 2, 3 และ 4 ของบันทึกท้ายตาราง
ตัวถอดรหัสตัวนี้เป็น ชนิดทำงานด้วยลอจิก “0” (Active Low Input) และแสดงผลแบบ Active Low Output หมายความว่า
เมื่อบีซีดีอินพุตเป็น 0001 เอาต์พุตที่ b และ c จะเป็น “0” (Low) ทำให้ตัวเลข 7 ส่วนชนิดแอโนดร่วมติดสว่างเฉพาะส่วน b และ c
ปรากฏเป็นเลข 1 ตามรูปที่ 13.22 (ค) ดังนั้นการต่อตัวถอดรหัสเบอร์ 7447 เพื่อขับตัวเลข 7 ส่วนชนิดแอโนดร่วมที่ ถูกต้อง ดังแสดง
ในรูปที่ 13.23
|
รูปที่ 13.23 การต่อวงจรตัวถอดรหัสเบอร์ 7447เพื่อขับตัวแสดงผลไดโอดเปล่งแสง 7 ส่วนชนิดแอโนดร่วม
|
โครงสร้างภายในของตัวถอดรหัสเบอร์ 7447 ในรูปที่ 13.24 จะเห็นว่าประกอบไปด้วยบีชีดีอินพุต 4 อินพุต และอินพุต
ควบคุม 3 อินพุต คือ LT, BI/RBO, RBI และเอาต์พุตจำนวน 7 เอาต์พุต คือ a - g
|
รูปที่ 13.24 แสดงโครงสร้างภายในของตัวถอดรหัสเบอร์ 7447
|
สำหรับตัวถอดรหัสเบอร์ 7448 เป็นตัวถอดรหัสที่ออกแบบมาเพื่อขับตัวแสดงผลไดโอด เปล่งแสง 7 ส่วน ชนิดแคโทดร่วม
เท่านั้น เป็นชนิด Active Low Input แต่ Active High Output ซึ่งเป็นเอาต์พุตชนิดตรงกันข้ามกับเบอร์ 7447 แต่อินพุตรับ
สัญญาณแบบเดียวกัน สำหรับการ จัดวางขาเหมือนกับ 7447 ในรูปที่ 13.25 (ก) และตารางการทำงานแสดงในรูปที่ 13.25 (ข)
สำหรับโครงสร้างภายในของตัวถอดรหัสเบอร์ 7448 แสดงในรูปที่ 13.25 (ค)
|
รูปที่ 13.25 แสดงโครงสร้างภายใน ลักษณะการจัดวางขาและตารางการทำงานของตัวถอดรหัสเบอร์ 7448
|
รูปที่ 13.25 (ต่อ)
|
รูปที่ 13.25 (ต่อ)
|
ตัวอย่างการใช้งานขา Blanking (BI/RBO) และขา Zero blanking (RBI) เช่น การแสดงผลของเครื่องมือวัดที่
แสดงตัวเลขฐานสิบด้วยตัวเลข 7 ส่วน จำนวน 6 หลัก ดังรูปที่ 13.26 สมมติว่าข้อมูลบีซีดี 8421 4 บิต ป้อนเข้าและหลักดังนี้
0000, 0000, 0011, 0110, 0001, 0101 ตัวแสดงผลทั้ง 6 หลักจะแสดงเฉพาะ 4 หลักเท่านั้นคือ 36.15 แต่ 2 หลักแรก
มีข้อมูลเป็น “0” ทุกบิต แต่ไม่แสดงผลเป็นเลขศูนย์ เพราะมีวงจรตรวจสอบลอจิกอินพุต 4 บิต ของหลักสูงสุดตามลำดับ และ
ส่งสัญญาณลอจิก “0” ไปควบคุมขา Zero blanking (RBI) ให้ได้รับลอจิก “0” จากตารางการทำงานในรูปที่ 13.22 (ข)
พบว่าตัวแสดงผลทุกส่วนจะดับหมด ดังนั้นตัวเลขสูงสุด 2 หลักซ้ายสุดจะไม่ติดสว่าง ดังรูปที่ 13.26
|
รูปที่ 13.26 การควบคุมขา Zero blanking เพื่อควบคุมการแสดงของตัวแสดงผลไดโอดเปล่งแสง 7 ส่วน
<< Go To Top
|
13.5 การออกแบบวงจรถอดรหัสด้วย VHDL
เราสามารถออกแบบวงจร Decoder โครงสร้างของวงจรด้วยภาษา VHDL ได้ดังรูปที่ 13.27 ซึ่งเป็นวงจร 2-line-to-4-line Decoder
|
-------------------------------------------------
-- 2:4 Decoder
-- decoder is a kind of inverse process
-- of multiplexer
-------------------------------------------------
library ieee;
Use ieee.std_logic_1164.all;
-------------------------------------------------
Entity DECODER is
Port( I: in std_logic_vector(1 downto 0);
O: out std_logic_vector(3 downto 0) );
End DECODER;
-------------------------------------------------
Architecture behv of DECODER is
Begin
-- process statement
Process (I)
Begin
-- use case statement
Case I is
When "00" => O <= "0001";
When "01" => O <= "0010";
When "10" => O <= "0100";
When "11" => O <= "1000";
When others => O <= "XXXX";
End Case;
End Process;
End behv;
Architecture when_else of DECODER is
Begin
-- use when..else statement
O <= "0001" When I = "00" Else
"0010" When I = "01" Else
"0100" When I = "10" Else
"1000" When I = "11" Else
"XXXX";
End when_else;
|
รูปที่ 13.27 ตัวอย่างการออกแบบวงจร 2-line-to-4-line Decoder ด้วยภาษา VHDL
|
ไม่มีความคิดเห็น:
แสดงความคิดเห็น