บทที่ 4 การเข้ารหัสและถอดรหัส (Encodes and Decoder)

การเข้ารหัสและถอดรหัส (Encodes and Decoder)
     ในการเชื่อมต่อระหว่างระบบซึ่งใช้รหัสที่แตกต่างกันนั้น จำเป็นจะต้องมีการเปลี่ยนรหัส
ซึ่งปกติวงจรดิจิตอลนั้นจะใช้รหัสเป็นเลขฐานสองเสมอ เช่น 
ถ้าหากต้องการเปลี่ยนเลขฐานสิบ  0  ถึง  9   ไปเป็นเลขฐานสอง
ก็จะต้องมีวงจรเปลี่ยนรหัส ปกติการเปลี่ยนรหัสจากวงจรสวิตช์กดที่ใช้แทนเลข ฐานสิบ
ให้เป็นเลขฐานสองเรียกกันว่าวงจรเข้ารหัส หรือวงจรเอนโค้ดเดอร์(Encoder) แต่ขณะเดียวกัน 
ถ้าหากต้องการเปลี่ยนรหัสจากรหัสบีซีดีเป็นรหัส
อย่างอื่น เรียกวงจรนั้นว่า วงจรถอดรหัสหรือวงจรดีโค้ดเดอร์ (Decoder) ซึ่งจะได้กล่าวรายละเอียดต่อไป
การออกแบบวงจรเข้ารหัส
หลักการออกแบบวงจรเข้ารหัส
	                           โครงสร้างของวงจรเข้ารหัส
  
                                          

                                                        โครงสร้างของวงจรเข้ารหัส
      วงจรเข้ารหัสที่จะกล่าวต่อไปนี้    เป็นวงจรเข้ารหัสที่เปลี่ยนเลขฐานสิบจากแป้นพิมพ์หรือสวิตซ์กดให้เป็นรหัสบีซีดี
 ในขณะเดียวกันราสามารถแปลงตัวอักษรหรือเครื่องหมายใดๆ เป็นรหัส เลขฐานสองจากคีย์บอร์ดที่ต้องการได้ 
โดยใช้วงจรลอจิกเข้ามาช่วย วงจรนั้นเรียกว่า วงจรเข้ารหัสเช่นเดียวกัน	   
      ในที่นี้จะยกตัวอย่างวงจรเข้ารหัสที่ทำหน้าที่แปลงเลขฐานสิบให้เป็นเลขฐานสอง (รหัสบีซีดี)
 ซึ่งเป็นวงจรพื้นฐานที่สามารถทำความเข้าใจได้ง่าย

 การทำงานของวงจร
      จากวงจรสถานะปกติทางอินพุตจะเป็นลอจิก “1” ขณะกดสวิตซ์จะทำให้อินพุตเป็นลอจิก “0” ทางด้านเอาต์พุตก็เช่นเดียวกันสถานะปกติจะเป็น
ลอจิก “0”แต่ขณะกดสวิตช์เอาต์พุตจะเป็นลอจิก “1” หรือ “0” นั้นขึ้นอยู่กับว่ากดสวิตซ์อันไหน ส่วนเอาต์พุตคีย์สโตรบ (Key Strobe = Ks)
จะทำหน้าที่ในการผลิตสัญญาณพัลส์ทุกๆ ครั้งที่กดสวิตช์ และใช้เป็นตัวควบคุมวงจรที่ต่อจากวงจรเข้ารหัสให้รับหรือเก็บสัญญาณที่ได้จากเอาต์พุต 
A, B, C และ D นอกจากนี้ยังมีหน้าที่อีกอย่างหนึ่ง คือ จะป้องกันไม่ให้วงจรที่ต่อจากวงจรเข้ารหัสนั้นรับสัญญาณใหม่อีกหลังการกดสวิตช์ตัวใดไป
แล้วและยังคงถูกกดอยู่ โดยปกติวงจรที่ต่อจากวงจรเข้ารหัส จะใช้ดีฟลิปฟลอปต่อเป็นตัวเก็บสัญญาณอีกขั้นตอนหนึ่ง แล้วใช้เอาต์พุตคีย์สโตรบต่อ
ผ่านวงจรโมโนสเตเบิลมัลติไวเบรเตอร์เข้าไปยังอินพุตคล็อกของดีฟลิปฟลอป การทำงานของวงจรในรูปที่ 13.2 จะเป็นไปตามตารางที่ 13.1
                                   
                                                     แสดงวงจรเข้ารหัสแปลงรหัสจากเลขฐานสิบเป็นรหัสบีซีดี
                                                  

                                   ตารางความจริงของวงจรควบคุมเอาต์พุตของวงจรเข้ารหัสเบื้องต้น
           ในระบบดิจิตอลจะใช้ตัวเข้ารหัส (Encoder) แสดงในรูปที่ 13.3  เพื่อแปลงรหัสจากเลขฐานสิบให้เป็นรหัสบีชีดี  8421   ลักษณะ
ของตัวเข้ารหัสแบบนี้เรียกว่า   10-line-to-4-line priority Encoder หน้าที่ของตัวเข้ารหัส คือ  ทำการแปลงรหัสของข้อมูล   เพื่อให้
ระบบดิจิตอลสามารถนำข้อมูล ดังกล่าวนั้นไปทำงาน หรือไปประมวลผลการทำงานต่อได้อย่างถูกต้อง เช่น ตัวอย่างในรูปที่ 13.3 ตัวเข้ารหัส
จะแปลงรหัสเลขฐานสิบที่ได้รับจากแป้นพิมพ์ เพื่อแปลงรหัสเข้าในระบบเลขฐาน สอง เช่น รหัสบีซีดี 8421 เพื่อส่งข้อมูลดังกล่าวให
้หน่วยประมวลผลและหน่วยความจำ
                

                                      แสดงระบบดิจิตอลที่ประกอบไปด้วยตัวเข้ารหัสและตัวถอดรหัส
         สำหรับตัว เข้ารหัสแบบ 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
              
                         แสดงรายละเอียดของ 10-1ine-to-4 line priority Encoder เบอร์ 74147
                                                      
                                        
        เมื่อนำวงจรเข้ารหัสเบอร์ 74147 ต่อกับสวิตซ์อินพุต เพื่อป้อนค่ารหัสสวิตซ์ฐานสิบ (0 ถึง 9) และรหัสบีซีดี 8421 ด้านเอาต์พุตขนาด 4 บิต 
ต่อผ่านนอตเกต 4 ตัว เพื่อให้แสดงผลได้อย่างถูกต้องเนื่องจากเอาต์พุตของ 74147 เป็นแบบ Active Low เอาต์พุต 
                                          

                          รูปที่ 13.5 วงจรเข้ารหัสเลขฐานสิบด้วยสวิตซ์เป็นรหัสบีซีดี 8421 ขนาด 4 บิต
     วงจรเข้ารหัสเลขฐานสิบเป็นเลขฐานสอง
             วงจรเข้ารหัสจากเลขฐานสิบเป็นเลขฐานสองแสดงดังรูปที่ 13.6 โดยสวิตซ์ T แต่ละตัวจะแทนค่าเลขฐานสิบ   เช่น  T1   แทนเลข 1,  T2 
           แทนเลข 2 เป็นต้น ทางด้านเอาต์พุตเป็นเลขฐานสอง 4 บิต  D, C, B, A  เพื่อเปลี่ยนเอาต์พุตให้เป็นแบบ  Active High   จึงเพิ่ม นอตเกตเข้า
          ที่เอาต์พุต
                  

                                             แสดงวงจรเข้ารหัสเลขฐานสิบเป็นเลขฐานสอง
           จากรูปถ้ากดสวิตซ์ T1จะได้เอาต์พุต DBCA เป็น 0001 ถ้ากดสวิตซ์ T2 จะได้เอาต์พุต DCBA เป็น 0010 ในกรณีที่กด
สวิตซ์มากกว่า 1 ตัวพร้อมกัน วงจรจะเลือกทำงานตามสวิตซ์ที่มีลำดับความสำคัญสูงสุด เช่น กดสวิตซ์ T1, T3 และ T6 พร้อมกัน วงจร
จะเลือกทำงานตามสวิตซ์ T6 คือมีเอาต์พุต DCBA เป็น 0110
      วงจรเข้ารหัสเลขฐานแปดเป็นเลขฐานสอง
                    	วงจรเข้ารหัสเลขฐานแปดไปเป็นเลขฐานสองแสดง

                  

                                                                       แสดงวงจรเข้ารหัสเลขฐานแปดเป็นเลขฐานสอง
      วงจรเข้ารหัสเลขฐานสิบหกเป็นเลขฐานสอง
                     วงจรเข้ารหัสเลขฐานสิบหกไปเป็นเลขฐานสอง แสดงดังรูปที่ 13.8 ได้จากการนำไอซีเบอร์ 74148 2 ตัวมาต่อร่วมกัน โดยการต่อขา 
                EI ของ 74148 ตัวที่เป็นลอจิกค่านัยสำคัญน้อยเข้ากับขา EO ของ 74148 ตัวที่เป็นลอจิกค่านัยสำคัญมาก ถ้าเพิ่มแอนด์เกตเข้ามาที่อินพุต 
               จะได้เอาต์พุตแบบ Active Low ดังวงจรรูปที่ 13.8 (ก) ถ้าเพิ่มแนนด์เกต เข้ามาที่อินพุต จะได้เอาต์พุตแบบ Active High ดังวงจร

                                     
                                    

                                                     แสดงวงจรเข้ารหัสเลขฐานสิบหกเป็นเลขฐานสอง	
                                                                                                                       
การออกแบบวงจรเข้ารหัสด้วย 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 ENCODERis
      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;
                           ตัวอย่างการออกแบบวงจร 2-line-to-4-line Encoder ด้วยภาษา  VHDL
การออกแบบวงจรถอดรหัส
          วงจรถอดรหัสเป็นวงจรทำหน้าที่เปลี่ยนจากเลขฐานสองไปเป็นเลขในระบบอื่น โครงสร้างของวงจรถอดรหัสจะเหมือนกับ 
       DMUX โดยนำ Select Input ไปใช้เป็นอินพุตของวงจร และนำ Data Input  ไปใช้เป็นขา Enable (E) หรือ 
      Strobe  (G) 
       
                  
        
                                                       แสดงโครงสร้างของวงจรถอดรหัส
        เอาต์พุตของวงจรถอดรหัสจะเป็น 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 เอาต์พุต จากจำนวนเอาต์พุตทั้งหมด)
        ไอซีที่เป็นวงจรถอดรหัส
	74138 3-Line-to-8-line Decoder/Demultiplexer เป็นไอซี ทำหน้าที่เปลี่ยนจากเลขฐานสอง (Binary) ไปเป็นเลขฐานแปด 
                 (Octal) บางครั้งเรียกว่า Binary-to-Octal Address Decoding
                  

                                                                                  แสดงสัญลักษณ์ไอซีเบอร์ 74138
          74154   4-Line-to-16-line Decoder/Demultiplexer เป็นไอซีทำหน้าที่เปลี่ยนจากเลขฐานสอง (Binary) 
     ไปเป็นเลขฐานสิบหก (Hexadecimal) บางครั้งเรียกว่า Binary-to-Hexadecimal Address Decoding
                     

                                                                                  แสดงสัญลักษณ์ไอซีเบอร์ 74154
            74159 4-line-to-16-line Decoder/Demultiplexer with Open-Collector Output มีคุณสมบัติ
    เหมือนไอซีเบอร์ 74154
    74139 Dual 2-line-to-4-line Decoder/Demultiplexer
                   
                                                 
                                                                 แสดงสัญลักษณ์ไอซีเบอร์ 74139
   74155 Dual 2-line-to-4-line Decoder/Demultiplexer

                   

                                                                                         แสดงสัญลักษณ์ไอซีเบอร์ 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
    การเพิ่มจำนวนเอาต์พุตของวงจรถอดรหัส
	 การเพิ่มจำนวนเอาต์พุตทำได้โดยวิธีเดียวกับ DMUX เช่นในรูปที่ 13.16 เป็นการนำ 2 :4 Decoder 2 ตัวมาต่อเป็น 3 : 8 Decoder
                                                               

                                   แสดงการต่อวงจร 2 : 4 Decoder ใช้งานเป็น 3 : 8 Decoder
        ตัวอย่าง   จงใช้ไอซีเบอร์ 74138 3-line-to-8-line Decoder ออกแบบวงจรที่มีสมการลอจิกดังนี้

                                  
      ตัวอย่างที่  จงออกแบบวงจรคูณเลขฐานสองขนาด 2 บิต โดยใช้ 74154   4-line-to-16-line  Decoder

                                     วิธีทำ
                                                                       
                                                                      ตารางความจริง
                                           

                จากตารางความจริงเขียนสมการลอจิกได้เป็น
                                            

                                                                                                                            << Go To Top
  วงจรถอดรหัสเพื่อขับตัวแสดงผล
               ตัวถอดรหัส (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 ส่วน
                                      

                                            แสดงการต่อตัวถอดรหัสกับตัวแสดงผลไดโอดเปล่งแสง 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 (ค)
                                          
                                            แสดงการวางขาตัวถอดรหัสเบอร์ 7442, 7443, 7444 และโครงสร้างภายใน
                                                          พร้อมทั้งตารางความจริงแสดงการทำงานของตัวถอดรหัส

                                

                           

                                                                      

  ตัวแสดงผลไดโอเปล่งแสง 7 ส่วน
	                        หลักการพื้นฐานในการแปลงรหัสที่เครื่องดิจิตอลทำงานได้มาสู่รหัสที่มนุษย์เข้าใจ คือ การแปลงระบบเลขฐานสอง  
                 เช่น รหัสบีชีดี 8421 ดังในรูปที่ 13.3 ซึ่งผ่านการประมวลผลจากหน่วยประมวลผลกลาง และหน่วยความจำมาแล้วมา
                 แสดงผลเป็นเลขฐานสิบที่ตัวแสดงผลไดโอดเปล่ง แสง 7 ส่วน ลักษณะของไดโอดเปล่งแสง 7 ส่วน แสดงในรูปที่ 13.19
               (ก) แต่ละส่วนมีชื่อเรียกตาม ลำดับอักษร a ถึง g เมื่อไดโอดเปล่งแสงทุกตัวติดสว่างจะเป็นเลข 8 ฐานสิบ จากรูปที่ 13.19
               (ข) คือการแสดงผลเป็นตัวเลข 0-9 (ฐานสิบ) โดยตัวแสดงผลไดโอดเปล่งแสง 7 ส่วน ตัวที่ ทำหน้าแปลงรหัสที่เครื่องทำงาน
               ได้มาสู่รหัสที่มนุษย์รู้จักเรียกว่า ตัวถอดรหัส (Decoder)
                                             

                                      แสดงตัวแสดงผลไดโอดเปล่งแสง 7 ส่วน และตัวเลขฐานสิบ (0-9)
                        ลักษณะภายนอกของตัวแสดงผลไดโอดเปล่งแสง 7 ส่วนมีหลายแบบ เช่น ในรูปที่ 13.20 (ก) เป็นตัวแสดงผล 1 หลัก
          ตัวถังพลาสติกแบบ DIPปกติจะมี 14 ขา แบบที่สองแสดงในรูปที่ 13.20(ข) เป็นตัวแสดงผล 1 หลักเช่นกัน ตัวถังแบบ 10 ขา
           (10-Pin single digit package) และแบบหลายหลัก (Multidigit package) แสดงในรูปที่ 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” เข้าที่อินพุตและ
ที่จุดร่วมต้องต่อกับกราวด์ 

                                                                          
  แสดงโครงสร้างภายในและการควบคุมตัวแสดงผลไดโอดเปล่งแสง 7 ส่วน ทั้งชนิดแอโนดร่วมและชนิดแคโทดร่วม
                      

                                                                               รูปที่ 13.21 (ต่อ)
ตัวถอดรหัสบีซีดีขับออกตัวแสดงผลเลข 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  
                                                                     
                               

                                                                                                                      (ข)

                    แสดงลักษณะของตัวถอดรหัสเบอร์ 7447 และตารางแสดงการทำงานของตัวถอดรหัส
                                          และเอาต์พุตที่ตัวถอดรหัสขับออกที่ตัวแสดงผลไดโอดเปล่งแสง 7 ส่วน
                              
                                                                                                       
           สำหรับการทำงานของขา 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  ดังนั้นการต่อตัวถอดรหัสเบอร์ 7447 เพื่อขับตัวเลข 7 ส่วนชนิดแอโนดร่วมที่ ถูกต้อง 
                               

                   การต่อวงจรตัวถอดรหัสเบอร์ 7447เพื่อขับตัวแสดงผลไดโอดเปล่งแสง 7 ส่วนชนิดแอโนดร่วม
                  โครงสร้างภายในของตัวถอดรหัสเบอร์ 7447  จะเห็นว่าประกอบไปด้วยบีชีดีอินพุต 4 อินพุต และอินพุต
   ควบคุม 3 อินพุต คือ LT, BI/RBO, RBI และเอาต์พุตจำนวน 7 เอาต์พุต คือ a - g
                                                    

                                               แสดงโครงสร้างภายในของตัวถอดรหัสเบอร์ 7447
             สำหรับตัวถอดรหัสเบอร์ 7448 เป็นตัวถอดรหัสที่ออกแบบมาเพื่อขับตัวแสดงผลไดโอด เปล่งแสง 7 ส่วน ชนิดแคโทดร่วม
     เท่านั้น เป็นชนิด Active Low Input แต่ Active High Output ซึ่งเป็นเอาต์พุตชนิดตรงกันข้ามกับเบอร์ 7447 แต่อินพุตรับ
     สัญญาณแบบเดียวกัน สำหรับการ จัดวางขาเหมือนกับ 7447 และตารางการทำงาน
    สำหรับโครงสร้างภายในของตัวถอดรหัสเบอร์  7448 
                                                                

                  แสดงโครงสร้างภายใน ลักษณะการจัดวางขาและตารางการทำงานของตัวถอดรหัสเบอร์ 7448

 
         
         

                                                   

                                                                              
         ตัวอย่างการใช้งานขา 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” จากตารางการทำงานพบว่าตัวแสดงผลทุกส่วนจะดับหมด 
ดังนั้นตัวเลขสูงสุด 2 หลักซ้ายสุดจะไม่ติดสว่าง ดั
                      
                                                  

                การควบคุมขา Zero blanking เพื่อควบคุมการแสดงของตัวแสดงผลไดโอดเปล่งแสง 7 ส่วน

                                                                                                                              
การออกแบบวงจรถอดรหัสด้วย VHDL
         เราสามารถออกแบบวงจร Decoder โครงสร้างของวงจรด้วยภาษา VHDL  ซึ่งเป็นวงจร 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;

Leave a comment