วันอังคารที่ 8 กรกฎาคม พ.ศ. 2557

บทที่ 17 วงจรนับ (Counter)

บทที่ 17 ::
วงจรนับ (Counter)

<<   17.1 การออกแบบวงจรนับแบบอะซิงโครนัส     
<<   17.2 การออกแบบวงจรนับแบบซิงโครนัส
<<   17.3 การออกแบบวงจรนับที่เป็นวงจรรวม
<<   17.4 การออกแบบวงจรนับด้วย VHDL








          วงจรนับเป็นวงจรลอจิกเชิงลำดับวงจรหนึ่ง  ที่มีความสำคัญในระบบดิจิตอลทำงานโดยหลักการนับจำนวนพัลส์สี่เหลี่ยมที่ป้อนเข้าทางอินพุต
 และแสดงผลออกเป็นเลขฐานสองหรือเลขฐาน สิบ อุปกรณ์สำคัญสำรับวงจรนับคือ   ฟลิปฟลอป    และอาจมีเกตบ้างสำหรับวงจรนับชนิดพิเศษเมื่อ
แบ่งวงจรนับออกตามโครงสร้างของการต่อสัญณาณอินพุตพัลส์     แบ่งได้ 2 ชนิดคือ   วงจรนับแบบซิงโครนัสและวงจรนับแบบอะซิงโครนัส 
วงจรนับทั้งสองชนิดสามารถออกแบบและสร้างได้โดยใช้ฟลิปฟลอปดังที่กล่าวมาแล้วข้างต้น  นอกจากนี้ยังมีผู้ผลิตออกแบบวงจรนับดังกล่าวบรรจุไว้ใน
วงจรรวมชนิดทีทีแอลและซีมอสหลายแบบ          เช่น    วงจรนับเลขฐานสอง  ขนาด 4 บิต   วงจรนับ 10วงจรนับเลขฐานสองชนิดนับขึ้นลง และอื่นๆ 
 เป็นต้น    ซึ่งวงจรดังกล่าวเป็นวงจรนับที่ใช้กันอย่างแพร่หลาย จึงควรศึกษาฟังก์ชันการทำงานให้เข้าใจ เพื่อจะนำไปใช้งานได้อย่างมีประสิทธิภาพรวม
ทั้งการออกแบบวงจรนับแบบซิงโครนัสและแบบอะซิงโครนัสด้วย เพื่อจะสามารถออกแบบวงจรนับรูปแบบต่างๆ ได้อย่างถูกต้องและสามารถประยุกต์
 ใช้งานได้เป็นอย่างดี
 17.1 การออกแบบวงจรนับแบบอะซิงโครนัส 
            17.1.1 วงจรนับขึ้น
                          คือวงจรนับที่ฟลิปฟลอปแต่ละตัวทำงานเรียงลำดับกัน กล่าวคือ    ถ้าวงจรนับนั้นประกอบด้วยฟลิปฟลอป 4 ตัว ฟลิปฟลอปตัวแรกคือ 
                   FF1 ตัวถัดไปคือ FF2 FF3 และ FF4 ตามลำดับดังแสดงในรูปที่ 17.1 (ก) ฟลิปฟลอปตัวแรกคือ FF1 จะได้รับสัญญาณนาฬิกาจากวงจร
                   ภายนอก ฟลิปฟลอป FF1 นี้เป็นชนิดทำงานด้วยขอบหลังของพัลส์ ดังนั้นจึงทำงานทุกๆ ขอบหลังของพัลส์นาฬิกาตามลำดับพัลส์ที่ 1
                   พัลส์ที่ 2 และพัลส์ที่ 3 ในทำนองเดียวกัน ฟลิปฟลอป FF2 จะได้รับสัญญาณนาฬิกาที่ออกจาก Q ของ FF1 ดังนั้นฟลิปฟลอป FF2 จึง
                   ทำงานทุกครั้งที่พัลส์นาฬิกาที่ออกจาก Q ของ FF1 ปรากฏขอบหลังของพัลส์ และฟลิปฟลอป FF3 จะรับสัญญาณพัลส์จาก Q ของ FF2
                   จึงทำงานทุกครั้งที่ Q ของ FF2 ปรากฏขอบหลังของพัลส์ และฟลิปฟลอป FF4 จะรับสัญญาณพัลส์จาก Q   ของ FF3   และทำงานที่ขอบ
                  หลังของพัลส์  Q   จาก FF3 เช่นกัน ฟลิปฟลอปทุกตัวเป็นชนิด เจ-เค ทำงานในโมดท็อกเกิล ดังนั้นต้องควบคุม ให้เจและเคของฟลิปฟลอป
                  ทุกตัวเป็น “1” เมื่อ สังเกตรูปคลื่นของสัญญาณนาฬิกา และรูปคลื่นพัลส์เอาต์พุต Q ของ FF1 FF2 FF3 และ FF4 ตามลำดับ จะปรากฏ
                   ดังรูปที่ 17.1 (ก)


               

    รูปที่ 17.1 วงจรนับอะซิงโครนัสขนาด 4 บิต (นับขึ้น) และรูปคลื่นพัลส์ของสัญญาณนาฬิกาและเอาต์พุตของฟลิปฟลอปแต่ละตัว
     วงจรนับอะซิงโครนัสที่ต่อ Q ของฟลิปฟลอปตัวหน้าให้กับอินพุต CLK ของฟลิปฟลอปตัวถัดไปตามลำดับ ดังแสดงในรูปที่ 17.1 (ก) เรียกว่าวงจร
นับขึ้น เมื่อพิจารณาคำถามที่ว่าวงจรนับขึ้นนับได้อย่างไร ให้พิจารณาที่เอาต์พุตฐานสองที่ Q ของฟลิปฟลอปแต่ละตัว ดังตัวอย่างในรูปที่ 17.1 (ข) เมื่อ
พิจารณาเอาต์พุตฐานสองที่ Q ของ FF1 FF2 FF3 และ FF4 โดยให้ฟลิปฟลอปตัวที่รับสัญญาณพัลส์นาฬิกาเป็นบิตที่มีนัยสำคัญต่ำสุด ในรูปที่ 17.1
 (ก) คือ FF1 = A, FF2 = B, FF3 = C และ FF4 = D ลำดับการนับจำนวนพัลส์ที่อินพุตของ FF1 จะแสดงที่ Q ทั้ง DCBA รวมเป็นเอาต์พุตฐาน
สอง ขนาด 4 บิด เมื่อมีฟลิปฟลอปในวงจรนับ 4 ตัว จะนับเลขฐานสองได้เท่ากับ 16 (0 ถึง 15)หรือเท่ากับ  เมื่อ n คือจำนวนฟลิปฟลอปในวงจร
 เมื่อลำดับผลการนับเลขฐานสองของวงจรในรูปที่ 17.1 (ก) จะได้ดังตารางแสดงผลการนับในรูปที่ 17.2

                                                               

                               รูปที่ 17.2 ตารางแสดงผลการนับขอวงจรนับอะซิงโครนัสนับขึ้นขนาด 4 บิต
             ในทำนองเดียวกัน เมื่อต่อฟลิปฟลอปที่ทำงานในสถานะท็อกเกิลจำนวน 3 ตัว (3 บิต) ให้นับขึ้นดังแสดงในรูปที่ 17.3 (ก) ผลการนับของ
วงจรที่แสดงเป็นเลขฐานสองที่เอาต์พุตทั้ง 3 บิต (CBA) นั้นจะแสดงในตารางรูปที่ 17.3 (ข)

                            

                             รูปที่ 17.3 แสดงวงจรนับอะซิงโครนัสนับขึ้น 3 บิต และตารางแสดงผลการนับของวงจร

                                                                            

                                                                             รูปที่ 17.3 (ต่อ)
             จะเห็นว่าวงจรนับอะซิงโครนัส 3 บิต นับได้ 8 ครั้ง (0 - 7) ตามลำดับ เท่ากับ ดังแสดงผลในตารางรูปที่ 17.3 (ข)
 และเมื่อนับพัลส์อินพุตพัลส์ที่ 9 เอาต์พุตทั้งสามจะวนกลับไปเลข 0 อีกครั้ง และนับเลข 1 2 3 เพิ่มขึ้นตามลำดับของจำนวนพัลส์อื่นๆ ต่อไป
      17.1.2 วงจรนับลง  
                        วงจรนับอะซิงโครนัสสามารถนับจำนวนพัลส์ทางอินพุตในลักษณะนับลง หมายถึง วงจรนับที่แสดงผลทางเอาต์พุตฐานสอง 
                      จากเลขลำดับสูงสุดมายังเลขต่ำสุด เช่น วงจรนับลง 3 บิต จะนับเลข ฐานสองจากเลข 7 6 5 4 3 2 10 เป็นต้น การทำให้วงจร
                       นับอะซิงโครนัสนับลงทำได้โดยนำสัญญาณ เอาต์พุต   จากฟลิปฟลอปตัวแรกป้อนเข้าอินพุต CLK ของฟลิปฟลอปลำดับถัดไป
                       ดังแสดงในรูปที่ 17.4 (ก) เป็นวงจรนับอะซิงโครนัสนับลงขนาด 3 บิต จะเห็นว่าฟลิปฟลอปทั้ง 3 ตัวยังคงทำงานในสถานะ
                      ท็อกเกิล และตารางแสดงผลการนับของวงจรนับลงขนาด 3 บิต แสดงในรูปที่ 17.4 (ข) และรูปคลื่นพัลส์ที่เอาต์พุตของฟลิปฟลอบ
                       แต่ละตัวเทียบกับสัญญาณนาฬิกา แสดงในรูปที่ 17.4 (ค)

                                      

   รูปที่ 17.4 แสดงวงจรอะซิงโครนัสนับลงขนาด 3 บิต และตารางแสดงผลการนับและรูปคลื่อนเอาต์พุตของฟลิปฟลอปแต่ละตัว

                                                     
                                   

                                                                       รูปที่ 17.4 (ต่อ)
              เมื่อต่อฟลิปฟลอปให้เป็นวงจรนับอะซิงโครนัสขนาด 4 บิตนับลง ต้องใช้ฟลิปฟลอปจำนวนn = 4 ตัว คือ จะสามารถ
 นับเลขฐานสองได้ 16 ครั้ง เริ่มต้นจากหมายเลข 15 และลดลงครั้งละ 1 ตามจำนวนพัลส์ตามลำดับดังนี้ 15 14 13 12 11 10 9 8 7 6 5 4 3 
2 1 0 และจะนับวนกลับ มาตัวเลขเริ่มต้นทุกรอบการนับเมื่อพัลส์อินพุตยังปรากฏเข้าที่อินพุตของฟลิปฟลอปตัวแรกในวงจรลักษณะวงจรนับอะซิง-
 โครนัส 4 บิตนับลง แสดงในรูป ที่ 17.5 (ก) และตารางแสดงผลการนับในรูปที่ 17.5 (ข)

                   

                                                        

                       รูปที่ 17.5 แสดงวงจรนับอะซิงโครนัสนับลง 4 บิต และตารางแสดงผลการนับของวงจร

           17.1.3 การออกแบบวงจรนับแบบอะซิงโครนัส
                        วงจรนับอะชิงโครนัสมีชื่อเรียกอีกชื่อหนึ่งว่า วงจรนับแบบริปเปิล (Ripple Counter) ดังนั้นอาจพบวงจรนับดังกล่าวได้ในชื่อทั้งสอง
               ที่ได้กล่าวมาแล้ว การออกแบบวงจรนับอะชิงโครนัสเพื่อสร้างวงจรลอจิกเกตที่จะควบคุมผลการนับ หรือจำนวนครั้งของการนับตามตัวเลขที่
                กำหนด ซึ่งต้องเข้าใจเกี่ยวกับตัวเลขม็อดหรือตัวเลขมอดูลัส (Modulus Number) ตัวเลขม็อด หมายถึง จำนวนครั้งของการนับ หรือ
                จำนวนสถานะของการนับ   เช่น   วงจรนับอะซิงโครนัสที่นับเลขขนาด 4 บิต อาจเรียกอีกชื่อหนึ่งว่าวงจรนับม็อด 16 (Mod -16 Counter)
                เป็นต้น โดยทั่วไปค่าของตัวเลขมอดจะเท่ากับ  เมื่อ n = จำนวนตัวของฟลิปฟลอปในวงจรนับ เช่น วงจรนับม็อด 8 (Mod - 8 Counter)
               คือวงจรนับที่มีฟลิปฟลอป n = 3 ตัว เป็นต้น สำหรับวงจรนับที่มีตัวเลขม็อดน้อยกว่า 2n สามารถสร้างได้เช่นกัน โดยใช้วงจรเกตมา
               ควบคุมการนับดังตัว อย่างต่อไปนี้

     ตัวอย่างที่ 17.1 จงออกแบบเพื่อสร้างวงจรนับม็อด 6 (Mod – 6 - Counter) ให้นับเลขขึ้นตามลำดับ 0 1 2 3 4 และ 5
                            วิธีทำ      (1)  จำนวนฟลิปฟลอป = 3 ตัว เพราะ 23 = 8 จะสร้างวงจรนับม็อด 6 ต้องใช้ฟลิปฟลอป 3 ตัว
                                           (2)  การนับม็อด 6 จาก 0 ถึง 5 ต้องใช้วงจรนับอะซิงโครนัส 3 บิต แต่ใช้วงจรเกตควบ คุมผลการนับ 
                                                  ให้แสดงเฉพาะเลข 0 ถึง 5 เท่านั้น โดยวงจรเกตดังกล่าวจะส่ง เอาต์พุต “L” มาควบคุมขาเคลียร์
                                                  ของฟลิปฟลอปทุกตัว เมื่อผลการนับเกินกว่า 5 ดังรูปที่ 17.6

                            

                                                                  รูปที่ 17.6 แสดงวงจรนับม็อด 6
                          
                       (3) เขียนตารางความจริงเพื่อหาวงจรเกตที่ให้เอาต์พุต Y ตามเงื่อนไขที่ผู้ออกแบบต้องการ ดังนี้
                              
                                                                                            ตารางความจริงวงจรม็อด 6

                                    

                   (4) จากตารางความจริงลดรูปสมการของวงจรเกต Y ได้ดังนี้

                                                                             

                 (5) จากสมการ   วงจรเกต คือ                     

                                                                             

                   ในทำนองเดียวกันสามารถออกแบบวงจรนับตัวเลขม็อดใดๆ ได้โดยใช้วงจรเกตมาควบคุมตัวฟลิปฟลอป แต่ต้องพิจารณาเงื่อนไขของการ
ควบคุมให้ถูกต้อง เนื่องจากขาควบคุมที่ฟลิปฟลอป ชนิด เจ – เค นั้นมี 2 ขาคือ ขาเคลียร์และขาพรีเซต
                                                                                                                                                                    << Go To Top
17.2 การออกแบบวงจรนับแบบซิงโครนัส
               วงจรนับแบบซิงโครนัส คือวงจรนับที่ต่อขาสัญณาณนาฬิกาควบคุมฟลิปฟลอปทุกตัวในวงจรให้ทำงานพร้อมกัน เเต่การควบคุมให้วงจรนับ
          แสดงผลการนับเลขใดๆ นั้นขึ้นอยู่กับการออกแบบวงจรควบคุมอินพุต เจ และ เค ของฟลิปฟลอปเเต่ละตัว ดังนั้น วงจรนับแบบซิงโครนัสจึง
          สามารถออกแบบให้นับขึ้นหรือนับลงได้ตามที่ผู้ออกแบบต้องการ จำนวนครั้งของการนับสำหรับวงจรนับแบบซิงโครนัสเหมือนกันกับวงจรนับแบบ
         อะซิงโครนัส กล่าวคือ เท่ากับ  เมื่อ n คือจำนวนฟลิปฟลอปของจำนวนนับ ตัวอย่างเช่น วงจรนับซิงโครนัสที่มีฟลิปฟลอป 3 ตัว สามารถออกแบบ
         วงจรให้นับ เลขได้ระหว่าง 0 – 7 โดยกำหนดให้วงจรนับขึ้นหรือนับลงก็ได้ ลักษณะของวงจรนับซิงโครนัสขนาด 3 บิต และวงจรควบคุมอินพุต
          เจ  และ เค แสดงดังรูปที่ 17.7

                                     

                         รูปที่ 17.7 แสดงวงจรนับซิงโครนัสขนาด 3 บิต และวงจรเกตควบคุมอินพุต เจและเค
         การออกแบบวงจรควบคุมอินพุต เจ และเค ของฟลิปฟลอปแต่ละตัวต้องใช้ตาราง Excitation ประกอบการออกแบบวงจรเกตดังกล่าว
ลักษณะของตาราง Excitation แสดงในรูปที่ 17.8

                                                                                       

                                                          รูปที่ 17.8 แสดงตาราง Excitation
    สำหรับลำดับขั้นและวิธีการออก แบบวงจรนับซิงโครนัสให้ศึกษาโดยละเอียดจากตัวอย่างที่ 17.2 และ 17.3 ต่อไปนี้
          ตัวอย่างที่ 17.2   จงออกแบบวงจรนับแบบซิงโครนัส ให้นับเลขได้ตามลำดับดังนี้

                                                        
                                วิธีทำ  (1) เขียน State Transition Diagram ของลำดับขั้นการนับเลขตามโจทย์ดังต่อไปนี้

                                                                                         

                                          (2) ออกแบบวงจรควบคุม  และ  โดยลำดับผลการนับตามโจทย์กำหนด และหาสภาวะของ J
                                                 และ K จากตาราง Excitation ตามลำดับดังนี้

                                                         

                                       หาสมการ  และ  โดยนำค่าของ  และ มาลดรูปใน KM ได้ดังนี้

                                                            

                       (3) ออกแบบวงจรควบคุม JB และ KB ตามลำดับขั้นการนับที่โจทย์กำหนด และหา สภาวะของ J และ K จากตาราง Excitation
                            ตามลำดับ และหาสมการ JB และ KB โดยนำค่าของ JBและ KB มาลดรูปใน KM ได้ดังนี้

                                                              

                       (4) ออกแบบวงจรควบคม  และ  ตามลำดับขั้นในข้อ (2 ) และนำค่าของ และ  ที่ได้มาลดรูปสมการลงใน KM ได้ดังนี้

                                                               

                         (5) นำผลของวงจรควบคุมอินพุด J และ K ทั้งหมดมาเขียนภาพของวงจรนับ 0 – 7 แบบซิงโครนัสได้ดังรูปที่ 17.9

                                    

                                                              รูปที่ 17.9 แสดงวงจรนับ 0 – 7 แบบซิงโครนัส

                        ตัวอย่างที่ 17.3    จงออกแบบวงจรนับซิงโครนัส ให้นับเลขได้ตาม State Transition Diagram ต่อไปนี้ 
                                                                                            

               วิธีทำ (1) จาก State Transition Diagram จะเห็นว่าโจทย์ต้องการให้วงจรซิงโครนัสนับเลขดังนี้


                                                                        

                                เลข 5 6 และ 7 ไม่ต้องการให้นับ ดังนั้นสภาวะของเลข 5 6 และ 7 ต้องให้แสดงเป็นเลขตัวเริ่มต้น ในที่นี้คือ 0 (ศูนย์)

                         (2)  ใช้วิธีการหาวงจร   และ  เหมือนกับตัวอย่างที่ 17.2 และนำสมการมาลดรูปโดยใช้ตารางแผนที่ 
                                จะได้สมการของวงจรควบคุม    และ  ดังต่อไปนี้

                                                                                      

                           (3) สเก็ตภาพวงจรนับ 0 – 4 แบบซิงโครนัสได้ดังรูปที่ 17.10

         
                      
       
                                                     รูปที่ 17.10 แสดงวงจรนับซิงโครนัส นับ 0 – 4
                       
                                                                                                                                                                    << Go To Top
  17.3 การออกแบบวงจรนับที่เป็นวงจรรวม
               วงจรรวมที่ทำหน้าที่เป็นวงจรนับมีโครงสร้างภายในหลายแบบ บางชนิดเป็นแบบซิงโครนัส และบางชนิดเป็นแบบอะซิงโครนัส บางชนิด
           สามารถนับขึ้นหรือนับลงได้เพียงอย่าง เดียว บางชนิดสามารถควบคุมให้นับขึ้นและนับลงได้ อีกทั้งยังมีที่ใช้งานและคุณลักษณะเฉพาะที่แตกต่าง
            กัน เช่น วงจรนับชนิดทีทีแอลเบอร์ 7493 เป็นวงจรนับขึ้นขนาด 4 บิต แบบอะซิงโครนัส หรือเบอร์ 74293เป็น วงจรอะซิงโครนัส 4 บิตเช่นกัน
          แต่มีขาควบคุมมาสเตอร์รีเซต หรือวงจรรวมเบอร์ 74192 เป็น วงจรนับอะซิงโครนัสนับขึ้นลงได้ขนาด 4 บิต หรือวงจรรวมเบอร์ 7490 เป็น
           วงจรนับ 10 แบบอะซิงโครนัส    และวงจรรวมเบอร์ 7492  เป็นวงจรนับ 12   แบบอะซิงโครนัส สำหรับวงจรรวมซีมอสที่นิยมใช้มีหลายเบอร์ 
          เช่น 74HC393 เป็นวงจรนับ 4 บิตแบบอะซิงโครนัส 2 ตัว หรือเบอร์ 74HC193 เป็นวงจรนับซิงโครนัสนับขึ้นลงขนาด 4 บิตที่พรีเซตได้
          เป็นต้น
          17.3.1 วงจรรวมเบอร์ 7493 วงจรนับเลขฐานสองขนาด 4 บิต (4 - bit Binary Counter)
                      โครงสร้างภายในของวงจรรวม เบอร์ 7493 ประกอบด้วยฟลิปฟลอปชนิด เจ- เค จำนวน 4 ตัว ต่อสัญญาณนาฬิกาเป็นวงจรนับแบบ
           อะซิงโครนัส มีอินพุตสัญญาณนาฬิกา 2 อินพุต คือ อินพุตA และอินพุต B เมื่อต้องการต่อวงจรนับ 3 บิต ให้ป้อนสัญญาณนาฬิกาที่อินพุต B 
            (ฟลิปฟลอป A ไม่ใช้งาน) แต่ถ้าต้องการต่อวงจรนับอะซิงโครนัส 4 บิต ให้ต่อ  เข้ากับอินพุต B และป้อนสัญญาณนาฬิกาเข้าที่อินพุต A
           ดังรูปที่ 17.11 (ก) วงจรรวมเบอร์ 7493 สามารถควบคุมการรีเซตได้ด้วยแนนด์เกต ซึ่งมีอินพุต 2 ขาคือ และ  ดังตารางควบคุม
           ในรูปที่ 17.11 (ง) สำหรับการจัดวางขาของวงจรรวม เบอร์ 7493 แสดงในรูปที่ 17.11(ข) และ ตารางความจริงแสดงผลการนับแสดงในรูป
           ที่ 17.11 (ค)

                             
                               

                                                        รูปที่ 17.11 แสดงวงจรรวมเบอร์ 7493
              การต่อวงจรรวมเบอร์ 7493 ให้นับขึ้น (0 - 7) 3 บิต ต้องควบคุมขาอินพุต  และ  ขาใดขาหนึ่งให้เป็นลอจิก “L” ดังรูปที่ 17.12
 (ก) และการต่อวงจรรวมเบอร์ 7493 ให้นับขึ้น (0 - 15) 4 บิต แสดงดังรูปที่ 17.12 (ข)

                 

                          รูปที่ 16.2 การต่อวงจรรวมเบอร์ 7493 เป็นวงจรแบบอะซิงโครนัส 3 บิต และ 4 บิต
       17.3.2 วงจรรวมเบอร์ 7492 วงจรนับ 12 (Divide-by-12 Counter)
               วงจรรวมเบอร์ 7492 เป็นวงจรนับ 12 แบบอะซิงโครนัส ประกอบไปด้วยฟลิปฟลอป A เป็นวงจรนับ 2 และฟลิปฟลอป B C และ D ออกแบบ
        ให้เป็นวงจรนับ 6 เมื่อต่อ  เข้ากับอินพุต B จะทำงานเป็นวงจรนับ 12 โครงสร้างของวงจรรวมเบอร์ 7492 แสดงดังรูปที่ 17.13 (ข) ลักษณะ
         การจัดวางขาแสดงในรูปที่ 6.13 (ก) อินพุตควบคุมการนับมี 2 อินพุตคือ  และ  เป็นแนนด์เกต 2 อินพุต 1 ตัว ควบคุมการนับด้วย
        ตารางควบคุมในรูปที่ 17.13 (ง) ตารางแสดงผลการนับ 0-11 (นับ 12) แสดงในรูปที่ 17.13 (ค)

                             

                                                     รูปที่ 17.13 แสดงวงจรรวมเบอร์ 7492
      17.3.3 วงจรรวมเบอร์ 7490 วงจรนับ 10 (Decade Counter)
                             เป็นวงจรนับแบบอะซิงโครนัสที่ออกแบบให้นับเลข (0 - 9) หรือเรียกว่าวงจรนับ 10 โครง สร้างภายในแสดงดังรูปที่ 17.14 (ข) 
                       ฟลิปฟลอบตัว A ทำหน้าที่นับ 2 และฟลิปฟลอปตัว B, C และ D ออกแบบให้เป็นวงจรนับ 5 เมื่อต่ออินพุต B เข้ากับ จะทำให้เป็น
                       วงจรนับสิบ โดยมีตารางควบคุมการนับดังแสดงในรูปที่ 17.14 (ง) และการจัดวางขาวงจรรวมเบอร์ 7490 แสดงในรูปที่ 17.14 (ก)  
                      จากโครงสร้างภายในมีขาควบคุมการนับและรีเซต 4 ขา คือและ เป็นแนนด์เกต 2 อินพุต จำนวน 2 ตัว
                       ตารางความจริงแสดงผลการนับแสดงในรูปที่ 17.14 (ค) วงจรนับ 10 ที่ใช้วงจรรวมเบอร์ 7490   นับว่ามีประโยชน์มากเพราะสามารถ
                       ต่อเป็นวงจรนับ 100 (0 - 99) และวงจรนับ 1000 (0 - 999) หรือวงจรนับเลขฐานสิบอื่นๆ ได้


                   
                 

                                                 รูปที่ 17.14 แสดงวงจรรวมเบอร์ 7490
                  การต่อวงจรรวมเบอร์ 7490 ให้นับ 10 (0 - 9) แสดงในรูปที่ 17.15 (ก) และการต่อวงจรรวมเบอร์ 7490 ให้นับ 100 (0 - 99)
 แสดงในรูปที่ 17.15 (ข) การต่อวงจรรวมเบอร์ 7490 ให้นับ 100 ต้องต่อ ของหลักหน่วยให้เป็นสัญญาณนาฬิกาป้อนเข้าอินพุต A ของ
หลักสิบดังรูปที่ 17.15 (ข) ในทำนองเดียวกัน การต่อ 7490 จำนวน 3 ตัว เพื่อให้นับได้ 0 – 999 ก็ต้องต่อ  ของ 7490 ตัวที่ 1 (หลักหน่วย)
 เข้ากับอินพุต A ของ 7490 ตัวที่ 2 (หลักสิบ) และต้องต่อ  ของ 7490 ตัวที่ 2 เข้ากับอินพุต A ของ 7490 ตัวที่ 3 (หลักร้อย)

                                                       
                                                          

               รูปที่ 17.15 แสดงการต่อวงจรนับ 10 (0 - 9) และวงจรนับ 100 (0 - 99) โดยใช้วงจรรวมเบอร์ 7490
         17.3.4 วงจรรวมเบอร์ 74193 วงจรนับขึ้น/นับลง ขนาด 4 บิต (4 Bit up/down Counter)
                 วงจรรวมเบอร์ 74193 เป็นวงจรนับแบบอะซิงโครนัสขนาด 4 บิต สามารถควบคุมให้นับขึ้น (0 - 15) และนับลง (15 - 0) ได้ และมีอินพุต
 ข้อมูลขนาด 4 บิต สามารถโหลดข้อมูลเลขฐานสองให้วงจรนับเริ่มนับตามข้อมูลดังกล่าวได้ โครงสร้างของวงจรรวมเบอร์ 74193 แสดงในรูปที่ 17.16
 (ก)จะเห็นว่ามีอินพุต 6 ขา คือ เอาต์พุต Carry และเอาต์พุต Borrow และเอาต์พุต  และ  คือ เอาต์พุตแสดงผลการนับ และมีอินพุต 8 
ขา คือ อินพุตเคลียร์ อินพุตโหลด อินพุตข้อมูล 4 บิต (A B C D) อินพุตนับขึ้น และอินพุตนับลง

       หน้าที่การทำงานของแต่ละฟังก์ชัน มีรายละเอียดดังนี้
                  1. อินพุตเคลียร์เป็นอินพุตอะซิงโครนัส ทำงานด้วยลอจิก “H” จะเป็นผลให้เอาต์พุต  Q เป็น “0”
                  2. อินพุตโหลดทำงานด้วยลอจิก “L” เป็นสัญญาณควบคุมการโหลดข้อมูลอินพุตที่อินพุตข้อมูล  A ถึง D
                  3. นับขึ้นเป็นอินพุตที่ป้อนสัญญาณนาฬิกาเพื่อให้วงจรทำการนับขึ้น แต่ต้องเลือกให้นับลงเป็น  “H”
                  4. นับลงเป็นอินพุตที่ป้อนสัญญาณนาฬิกาเพื่อให้วงจรทำการนับลง แต่ต้องเลือกให้นับขึ้นเป็น  “H”
                  5. Carry out จะให้ลอจิก “L” เป็นพัลส์ เมื่อวงจรนับทำการนับขึ้นจนถึงเลข   15 (1111) ปกติจะเป็นลอจิก “H”
                  6. Borrow out จะให้ลอจิก “L” เป็นพัลส์ เมื่อวงจรนับทำการนับลงจนถึงเลข   0 (0000) ปกติจะเป็นลอจิก “H”
       


                                
                                  

                                                                                  รูปที่ 17.16

                                   

                                                                    

                                                                       รูปที่ 17.16 (ต่อ)
        วงจรรวมเบอร์ 74139 สามารถต่อแบบคลาสเคดได้ เช่น ต่อร่วมกัน 3 ตัวจะเป็นวงจรนับขนาด 12 บิต (3 x 4 บิต = 12 บิต) เป็นต้น การต่อวงจร
นับ 12 บิต ด้วย 74193 จำนวน 3 ตัว ให้นับขึ้น แสดงในรูปที่ 17.17 (ก) และการต่อวงจรนับ 12 บิต ด้วย 74193 จำนวน 3 ตัว ให้นับลง แสดงใน
รูปที่ 17.17 (ข)


                     

                          รูปที่ 17.17 การต่อวงจรนับ 12 บิต ด้วยวงจรรวมเบอร์ 74193 แบบนับขึ้นและนับลง
   17.3.5 วงจรรวมเบอร์ 741 92 วงจรนับ 10 นับขึ้น/นับลง (Decade up/down Counter)
                         เป็นวงจรรวมทำหน้าที่นับ 10 แบบซิงโครนัส สามารถควบคุมการนับขึ้นและลงได้โดยเลือก ป้อนสัญญาณนาฬิกาที่ขานับขึ้นหรือนับลง 
                 ฟังก์ชันการทำงานต่างๆ เหมือนกับวงจรรวมเบอร์74193 เพียงแต่เมื่อทำการนับขึ้น จะนับได้ตั้งแต่ 0 – 9 และ Carry out จะให้ลอจิก “L”
                 ออกมา เมื่อนับขึ้นครบรอบถึง 9 ในทำนองเดียวกัน และเมื่อนับลงจะนับได้ตั้งแต่ 9 - 0 เอาต์พุต Borrow out จะให้ลอจิก “L” ออกมาเมื่อนับ
                 ลงครบรอบถึงเลข 0 โครงสร้างภายในของวงจรรวมเบอร์ 74192 แสดงในรูปที่ 17.18 (ก) เช่นเดียวกับวงจรรวมเบอร์ 74193 สามารถต่อ
                 แบบคาสเคดได้ เพื่อให้วงจรนับ 10สามารถนับเลขขึ้นหรือนับลงได้หลายๆ หลัก ลักษณะการจัดวางขาวงจรรวมเบอร์ 74192 แสดงในรูปที่ 
                17.18 (ข) และแผนภูมิเวลาแสดงการทำงานของวงจรรวมเบอร์ 74192 แสดงในรูปที่ 17.18 (ค)

                                                               

                           

                                                              รูปที่ 17.18 วงจรรวมเบอร์ 74192

                                          

                                                                                  รูปที่ 17.18 (ต่อ)
    17.3.6 การออกแบบวงจรนับที่เป็นวงจรรวม
                       การออกแบบและสร้างวงจรนับจำนวน n เมื่อ  สามารถทำได้โดยใช้ฟลิปฟลอปและออกแบบวงจรเกตมาควบคุมฟลิปฟลอป
                  ดังกล่าว แต่ถ้าต่อการนับ (n) มีค่ามากๆ การออกแบบวงจรยุ่งยากมากขึ้น เนื่องจากจำนวนตัวของฟลิปฟลอปเท่ากับค่า n จึงนิยมใช้วงจร
                  นับที่เป็นวงจรรวมมาใช้ในการออกแบบสำหรับวงจรนับที่ต้องการให้นับเรียงลำดับกัน เนื่องจากวงจรรวม เช่น 7490 7492  7493 หรือ
                  เบอร์อื่นๆ มีอินพุตเคลียร์ที่สามารถควบคุมฟลิปฟลอปในวงจรรวมให้รีเซตค่าเป็นค่าเริ่มต้นที่ศูนย์ได้ โดยผู้ออกแบบต้องมีความเข้าใจ
                 เงื่อนไขการรีเซตของวงจรรวมดังกล่าว โดยการศึกษาตารางควบคุมการนับและการรีเซต ดังตัวอย่างต่อไปนี้
  ตัวอย่างที่ 17.4    จงออกแบบวงจรนับ 0 – 86 (Divide-by-87) หรือ ม็อด 87 โดยใช้วงจรรวมเบอร์  7490 และเกตตามความจำเป็น

วิธีทำ (1) ต้องใช้วงจรนับ 10 (7490) จำนวน 2 ตัว ต่อคาสเคด ดังรูปที่ 17.19 (ก) โดยการควบคุมการรีเซต และ 
                                      ให้มีลอจิก X (ตามตารางควบคุมการนับของ 74 90)
            (2) ออกแบบให้วงจรนับ 100 ในรูปที่ 17.19 (ก) รีเซตเมื่อเอาต์พุตนับได้ 87 (1000 0111) โดยเมื่อนับ 87 จะต้องมีวงจรเกต
                  รับผลการนับและจ่ายลอจิก “H” ให้กับขา ควบคุม  และ  เพราะ 7490 จะรีเซตได้เมื่อ  และ = “H”
                  และ=  = “X” ในรูปที่ 17.19 (ข) แนนด์เกตตัวที่ 1 จะถอดรหัสจากบิตต่ำสุดของ 7490 หลักหน่วย เมื่อ ,
                 = “H” ทำให้   เป็น “H” ทั้ง 2 ตัว และ  จะได้รับ “H” มาจาก 7490 หลักสิบ เพราะ  = “H” ใน
                 สภาวะดังกล่าว 7490 ทั้ง 2 ตัว จะรีเซต
            (3) รูปคลื่นของ เทียบกับ แสดงดังรูปที่ 17.19 (ค) จะเห็นว่าผลการนับแสดง เพียง 0 -86 เท่านั้น 87 ไม่แสดงผล 
                                    เพราะถูกแอนด์เกตทั้ง 2 ตัวรีเซตไปแล้วดังวงจรรูปที่ 17.19 (ข) คือวงจรนับ 87 (0 - 86)


                                           

                                                                        รูปที่ 17.19 แสดงวงจรนับที่ออกแบบได้จากตัวอย่างที่ 17.4


                                                                

                                                                          รูปที่ 17.19 (ต่อ)
    ตัวอย่างที่ 17.5       จงออกแบบวงจรนับ 148 (0 - 147) นับขึ้น โดยใช้วงจรรวมเบอร์ 74193 

                     วิธีทำ     (1) ใช้หลักการนำเกตมาถอดรหัสเมื่อนับได้ 147 และนำเอาต์พุตของเกตนั้นไปเคลียร์วงจรนับ
                            (2) เลข 147 = 1001 0011 เป็นเลขฐานสอง ขนาด 8 บิต จึงต้องใช้วงจรรวมเบอร์ 74193 = 2 ตัว
                            (3) ใช้แนนด์เกต 4 อินพุต เบอร์ 7420 นำ และ  ของ 74193 ตัว LSB (ตัวรับสัญ-ญาณนาฬิกา) และนำ 
                                          และ ของ 74193 ตัว MSB มาถอดรหัสและผ่านนอต  เกตเบอร์ 7404 เพื่อนำลอจิก “L” ไปเคลียร์วงจรรวมเบอร์
                                          74193 ดังรูปที่ 17.20
                            (4) การควบคุม 74193 แต่ละตัวใช้สัญญาณนาฬิกาป้อนที่อินพุตนับขึ้นและนับลงและโหลดเป็นลอจิก “H”

              

                                 รูปที่ 17.20 แสดงวงจรนับ 148 (0 - 147) ที่ออกแบบได้จากตัวอย่างที่ 17.5
  วงจรนับ วงจรหารความถี่
           วงจรนับนั้นใช้หารความถี่ได้ เพราะว่าเอาต์พุตพัลส์ของวงจรนับที่ออกจากฟลิปฟลอปแต่ละตัวจะมีคาบเวลากว้างขึ้นเท่ากับ 2 เท่า เช่น วงจรนับ
      ในรูปที่ 17.1 เป็นวงจรนับ 4 บิต ถ้าสัญญาณนาฬิกา (CLK) มีความถี่ 160 Hz ความถี่ของสัญญาณเอาต์พุตฟลิปฟลอป A จะเท่ากับ   
        และความถี่ของ  เอาต์พุตฟลิปฟลอป B เท่ากับ   ในทำนองเดียวกัน
      และ      อาจกล่าวได้ว่า วงจรนับ 16 หรือม็อด 16 (วงจรนับ 4 บิต) จะได้ความถี่เอาต์พุตที่ 
ฟลิปฟลอปตัวสุดท้าย เท่ากับ     ในทำนองเดียวกัน วงจรนับ 32 หรือม็อด 32 เมื่อความถี่สัญญาณนาฬิกาอินพุตเท่ากับ 320 Hz 
ความถี่เอาต์พุตตัวสุดท้ายของวงจรม็อด 32 คือ 10 Hz เช่นกัน

ตัวอย่างที่ 17.6  ต้องการสร้างสัญญาณนาฬิกาความถี่ 1 Hz จากสัญญาณนาฬิกาความถี่ 10 Hz ที่ กำเนิดจากวงจรรวม 555 โดยใช้วงจรนับตาม
                             ความเหมาะสม

            วิธีทำ 
                                                                   
    
    
                                                                   ต้องใช้วงจรนับ 10 หรือม็อด 10
  
                                                          (2) ใช้วงจรรวม 7490 (Decade Counter) ดังรูปที่ 17.21

                                                    

                                                                                         รูปที่ 17.21
   ตัวอย่างที่ 17.7    จงใช้วงจรรวมเบอร์ 74LS90 สร้างสัญญาณพัลส์ 10 kHz จากรูปพัลส์สี่เหลี่ยมที่มีความถี่ 1 MHz
         
                              วิธีทำ  

                                                                       
                                                                            ต้องใช้วงจรนับ 100 หรือม็อด 100
                                (2) ใช้วงจรรวม 74LS90 คือวงจรนับ 10 เมื่อต่อร่วมกัน 2 ตัวจะทำให้นับได้ 100  เพราะว่า 10 x10 = 100
                        (3) วงจรนับ 100 ด้วย 74LS90 แสดงในรูปที่ 17.22

                                 

                                                                   รูปที่ 17.22 วงจรนับ 100 = ม็อด 100

                                                                                                                                                                        << Go To Top
 17.4 การออกแบบวงจรนับด้วย VHDL
               จากวงจรนับที่ได้ศึกษามาแล้วเราสามารถที่นำมาออกแบบด้วยภาษา VHDL ดังรูปที่ 17.23

----------------------------------------------------
-- VHDL code for n-bit counter 
--
-- this is the behavior description of n-bit counter
-- another way can be used is FSM model. 
----------------------------------------------------
library ieee ;
Use ieee.std_logic_1164.all;
Use ieee.std_logic_unsigned.all;            
----------------------------------------------------
Entity counter is
Generic(n: natural :=2);
        Port( clock: in std_logic;
               clear: in std_logic;
               count: in std_logic;
               Q: out std_logic_vector(n-1 downto 0)
               );
End counter;
----------------------------------------------------
Architecture behv of counter is 
               
     Signal Pre_Q: std_logic_vector(n-1 downto 0);
Begin
 -- behavior describe the counter
 Process(clock, count, clear)
      Begin
               if clear = '1' then
      Pre_Q <= Pre_Q - Pre_Q;
               elsif (clock='1' and clock'event) then
      if count = '1' then
               Pre_Q <= Pre_Q + 1;
      End if;
      End if;
      End Process; 
 -- concurrent assignment statement
               Q <= Pre_Q;
End behv;
-----------------------------------------------------
             
                                             รูปที่ 17.23 ตัวอย่างการออกแบบวงจรนับด้วยภาษา VHDL

1 ความคิดเห็น: