วันพฤหัสบดีที่ 3 กรกฎาคม พ.ศ. 2557

บทที่ 7 การออกแบบวงจรลอจิกด้วย VHDL


:: บทที่ 7 ::

การออกแบบวงจรลอจิกด้วย VHDL
<<   7.1  หลักการเบื้องต้นของวงจรลอจิก
<<   7.2  เกทพื้นฐานและการแทนด้วย VHDL
<<    7.3 การออกแบบวงจรลอจิกด้วย VHDL
<<    7.4 Timing Diagram  








7.1  หลักการเบื้องต้นของวงจรลอจิก
                วงจรลอจิกเบื้องต้น เราจะศึกษาเกี่ยวกับ Two-state Logic คือจะมีค่า 2 สภาวะโดยมีข้อ    กำหนด คือ สามารถมีได้เพียง 2 สภาวะเท่านั้น
    และจะอยู่ในสภาวะใดสภาวะหนึ่ง จะอยู่พร้อมกันทั้ง 2 สภาวะในเวลาเดียวกันไม่ได้ ลอจิก 2 สภาวะดังกล่าว อาจใช้แทนความหมายต่างๆ ได้    เช่น
   ถูก - ผิด, สูง – ต่ำ, 1 – 0, ขึ้น – ลง, ปิด – เปิด, ใช่ – ไม่ใช่, ทำงาน – ไม่ทำงาน,มี   - ไม่มี ฯลฯ เพื่อความสะดวก ตัวแปรค่า 2 สภาวะเราใช้สัญลักษณ์
   0 และ 1 โดยที่
                                                                              - ลอจิก 0 แทนไม่มีสัญญาณ หรือ สวิทซ์ เปิด
                                                                              - ลอจิก 1 แทนมีสัญญาณ หรือ สวิทซ์ ปิด
               ในระบบลอจิก เราใช้ระดับของแรงดันไฟฟ้า (Voltage Level) แทนภาวะทั้งสองเมื่อใช้    ลอจิก “l” แทนแรงดันที่เป็นบวกมากกว่า เราก็ใช้ 
    ลอจิก “0” แทนแรงดันที่ เป็นบวกน้อยกว่า    ระบบเช่นนี้เราเรียกว่า ลอจิกทางบวก (Positive Logic) ในทางตรงกันข้าม ถ้าใช้ ลอจิก    “1” แทน
   แรงดันที่เป็นลบมากกว่า เราก็ใช้ ลอจิก “0” แทนแรงดันที่เป็นลบน้อยกว่า    ระบบเช่นนี้ เราเรียกว่า ลอจิกทางลบ (Negative Logic) ตัวอย่างของ 
   Positive และ    Negative Logic ดังแสดงไว้ดังรูปที่ 7.1
                

                                                                            รูปที่ 7.1 Positive และ Negative Logic
                                                                                                                               <<  Go To Top
7.2 เกทพื้นฐานและการแทนด้วย VHDL  
      7.2.1 แอนด์เกต (AND Gate)                 อุปกรณ์ลอจิกเกตแต่ละตัวมีหน้าที่ในการทำงานไมเหมือนกัน แอนด์เกต จะทำหน้าที่คล้ายๆ กับการคูณ สัญลักษณ์ของแอนด์เกต 
              และวงจรสมมูลการทำงานแสดงในรูปที่ 7.2 จากรูปที่ 7.2 A และ B แทนค่าระดับสัญญาณที่ถูกป้อนเข้ามาทางอินพุตของแอนด์เกต F
              แทนระดับสัญญาณทางเอาต์พุตของ แอนด์เกต ผลของการแอนด์กันระหว่างค่าระดับสัญญาณทั้งสอง ถ้าค่าระดับสัญญาณทางอินพุตใด
             อินพุตหนึ่งมีค่าเป็น “0” จะส่งผลให้ค่าระดับสัญญาณทางเอาต์พุตมีค่าเป็น “0” ด้วย และค่าระดับสัญญาณทางเอาต์พุตมีโอกาสเป็น “1” 
             ได้เพียงกรณีเดียวนั่นคือระดับสัญญาณอินพุตที่ป้อนให้กับแอนด์เกต จะต้องมีค่าระดับสัญญาณเป็น “1” ทั้งหมด และสามารถเขียนสมการ
             หรือฟังก์ชันการทำงานได้ดังนี้คือ F = A.B  
                                                                                                              
                                                                                                  
                                                                                                (ก) สัญลักษณ์ And Gate                    
A
B
F
0
0
0
0
1
0
1
0
0
1
1
1
                                                                                               (ข)  ตารางการทำงาน And Gate 
                                

                                          รูปที่ 7.2 สัญลักษณ์ วงจรสมมูล และตารางการทำงานของแอนด์เกต
 

        - การแทนแอนด์เกตด้วย VHDL
                การแทนแอนด์เกตด้วย VHDL สามารถอธิบายเป็นภาษา VHDL ได้ดังรูปที่ 7.3  ซึ่งจะเป็นพื้นฐานในการนำมาประกอบเป็นวงจรที่
             ใหญ่ขึ้นได้ต่อไป
--------------------------------------------------
-- AND gate 
-- two descriptions provided
--------------------------------------------------             
library ieee;
Use ieee.std_logic_1164.all;
--------------------------------------------------
Entity AND_ent is
               Port( x: in std_logic;
               y: in std_logic;
               F: out std_logic);
End AND_ent;
--------------------------------------------------
Architecture behav1 of AND_ent is
               Begin
   Process(x, y)
   Begin
  -- compare to truth table
               if ((x='1') and (y='1')) then
                  F <= '1';
               Else
                   F <= '0';
               End if;
    End Process;
End behav1;
Architecture behav2 of AND_ent is
   Begin
        F <= x and y;
  End behav2;
--------------------------------------------------
             
                                                 รูปที่ 7.3 แสดงการแทนแอนเกตด้วยภาษา VHDL
      7.2.2 ออร์เกต (OR Gate)                   การทำงานของออร์เกตจะมีลักษณะคล้ายๆ กับการนำค่าระดับสัญญาณอินพุตมาบวกกัน สัญลักษณ์ของออร์เกต และวงจรสมมูล
            การทำงานของออร์เกต แสดงดังรูปที่ 7.4
                                                                           

                                                                                          (ก) สัญลักษณ์ OR Gate      
                                                   
A
B
F
0
0
0
0
1
1
1
0
1
1
1
1
                                                                                   (ข)  ตารางการทำงาน OR Gate 


                                               รูปที่ 7.4 สัญลักษณ์ วงจรสมมูล และตารางการทำงานของออร์เกต
 
            ตัวแปร A และ B ใช้แทนค่าระดับสัญญาณที่ป้อนให้กับ ออร์เกต ตัวแปร F แทนค่าระดับสัญญาณทางเอาต์พุตที่ได้จาก A และ B ทำ
    การออร์กัน จากตารางการทำงานของออร์เกต แสดงให้เห็นว่าค่าระดับสัญญาณทางเอาต์พุตของออร์เกต จะมีโอกาสเป็น “0” ได้นั้น ค่าระดับ
   สัญญาณที่ป้อนเข้าทางอินพุตจะต้องเป็นค่า “0” ทุกค่า ที่เป็นเช่นนี้ก็เพราะว่าออร์เกต ไม่จำเป็นจะต้องมีแค่ 2 อินพุต อินพุตของออร์เกต อาจจะ
   เป็น 3, 4 หรือ 5 หรือมากกว่า แล้วแต่เราจะเลือกนำมาใช้งาน และในขณะเดียวกัน ถ้าค่าระดับสัญญาณทางอินพุตใดมีค่าเป็น “1” จะส่งผล
   ทางเอาต์พุตเป็น “1”  เราสามารถเขียนสมการหรือฟังก์ชันการทำงานของออร์เกตได้ดังนี้คือ  F = A+B
        - การแทนออร์เกตด้วย VHDL
              การแทนออร์เกตด้วย VHDL สามารถอธิบายเป็นภาษา VHDL ได้ดังรูปที่ 7.5  
-----------------------------------------------
-- OR gate 
-- two descriptions provided
-----------------------------------------------            
library ieee;
Use ieee.std_logic_1164.all;
-----------------------------------------------
Entity OR_ent is
              Port( x: in std_logic;
                    y: in std_logic;
                    F: out std_logic);
End OR_ent; 
-----------------------------------------------
Architecture OR_arch of OR_ent is
               Begin
               Process(x, y)
               Begin
               -- compare to truth table
               if ((x='0') and (y='0')) then
                   F <= '0';
               Else
               End if;
                   F <= '1'; 
               End Process;
End OR_arch;
Architecture OR_beh of OR_ent is 
               Begin
               F <= x or y;
               End OR_beh;
-----------------------------------------------
             
                                                              รูปที่ 7.5  การแทนออร์เกตด้วยภาษา VHDL
      7.2.3 นอตเกต หรือ อินเวอร์เตอร์ (NOT Gate or Inverter)                   นอตเกต มีหน้าที่ในการกลับค่าระดับสัญญาณ ให้มีค่าเป็นตรงกันข้ามกับค่าระดับสัญญาณที่ถูกป้อนเข้ามาทางอินพุต
           สามารถพิจารณาวงจรสมมูลได้ดังรูปที่ 7.6เราสามารถเขียนสมการความสัมพันธ์ในการทำงานของนอตเกตดังสมการ 
            
                                                                                            
                                                                                           (ก) สัญลักษณ์ NOT  Gate
                                 
A
F
0
1
1
0
                                                                                    (ข) ตารางการทำงาน NOT Gate 
                                       
                                                 รูปที่ 7.6 สัญลักษณ์ โครงสร้างสมมูล และตารางการทำงานของนอตเกต
  
    การแปลงเกตด้วยนอตเกต
                 โดยหลักการพื้นฐานคือการต่อนอตเกตเข้าที่เอาต์พุตของเกตต่างๆ เช่น ในรูปเมื่อต่อนอตเกตที่เอาต์พุตของแอนด์เกต
          จะทำให้การทำงานเหมือนกับแนนด์เกต เป็นต้น
                            

                                                      รูปที่ 7.7 การแปลงแอนด์เกตแป็นแนนด์เกตด้วยนอตเกต
 
                 หรือหลักการต่อนอตเกตเข้าที่อินพุตของเกตอื่นๆ ก็สามารถเปลี่ยนแปลงฟังก์ชันการทำงานของเกตเหล่านั้นได้เช่นกัน ดังตัวอย่าง 
           ต่อนอตเกตเข้าที่อินพุตทั้งสองของนอร์เกตจะเป็นผลให้นอร์เกตนี้ทำงานได้เหมือนกับแอนด์เกต เป็นต้น นั่นแสดงว่า 
         
                      

                                        รูปที่ 7.8 การต่อนอตเกตเข้าที่อินพุตของนอร์เกตจึงทำงานได้เหมือนแอนด์เกต
               ในทำนองเดียวกัน เมื่อต่อนอตเกตเข้าทั้งที่เอาต์พุตและอินพุตของเกตอื่นๆ ก็สามารถเปลี่ยนแปลงฟังก์ชันของเกตนั้นได้ เช่น ต่อนอตเกต 2 
          ตัวเข้าที่อินพุตของแอนด์เกต และต่ออีกตัวหนึ่งที่เอาต์พุตของแอนด์เกต จะทำให้แอนด์เกตทำงานเหมือนกับออร์เกต เป็นต้น
                     

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

                                                                                              รูปที่ 7.10  
       - การแทนนอตเกตด้วย VHDL
             การแทนนอตเกตด้วย VHDL สามารถอธิบายเป็นภาษา VHDL ได้ดังรูปที่ 7.11  
-------------------------------------------------
-- Inverter 
--
-- two descriptions provided
-------------------------------------------------            
library ieee;
Use ieee.std_logic_1164.all;
-------------------------------------------------
Entity Inverter is
               Port( x: in std_logic;
               F: out std_logic);
End Inverter; 
-------------------------------------------------
Architecture behv1 of Inverter is
               Begin
           Process(x)
               Begin
               -- compare to truth table
               if (x='1') then
                  F <= '1';
               Else
                  F <= '0';
               End if;
          End Process;
End behv1;
Architecture behv2 of Inverter is 
             Begin
             F <= not x;
             End behv2; 
-------------------------------------------------
             
                                                                          รูปที่ 7.11  การแทนนอตเกตด้วยภาษา VHDL
      7.2.4 แนนด์เกต (NAND Gate)
                       แนนด์เกต เป็นเกตที่มีลักษณะโครงสร้างคล้ายแอนด์เกต โดยการนำแอนด์เกตและนอตเกต มาใช้งานร่วมกัน ทำให้แนนด์เกตมีค่า
                 ระดับสัญญาณทางเอาต์พุตตรงข้ามกับแอนเกต
                           
                          (ก) สัญลักษณ์ NAND  Gate                                               (ค) โครงสร้างสมมูลการทำงานของ NAND Gate 
A
B
F
0
0
1
0
1
1
1
0
1
1
1
0
                                                                                (ข) ตารางการทำงาน  NAND  Gate 
                                             รูปที่ 7.12 สัญลักษณ์ โครงสร้างสมมูล และตารางการทำงานของแนนด์เกต
            จากตารางการทำงานของแนนด์เกต ค่าระดับสัญญาณทางอินพุตเพียงสภาวะเดียวเท่านั้นที่สามารถทำให้ค่าระดับสัญญาณทางเอาต์พุตมีค่าเป็น    
      “0” ได้ คือ ค่าระดับสัญญาณทางด้านอินพุตจะต้องมีค่าเป็น “1” ทุกอินพุต ในสภาวะอื่นจะให้ค่าระดับสัญญาณเป็น  “1” เราสามารถเขียนสมการ
        
            หรือฟังก์ชันการทำงานของ แนนด์เกต ได้ดังสมการนอกจากนี้แล้วแนนด์เกตยังเป็นเกตอเนกประสงที่สามารถที่จะนำไปทำเป็นเกตชนิดอื่นๆ
       ได้อีกดังตารางที่7.2
                
                


                                                            ตารางที่ 7.2 แสดงการนำแนนด์เกตไปทำเป็นเกตต่างๆ
       - การแทนแนนด์เกตด้วย VHDL
             การแทนแนนด์เกตด้วย VHDL สามารถอธิบายเป็นภาษา VHDL ได้ดังรูปที่ 7.13  
--------------------------------------------------
-- NAND gate 
-- 
-- two descriptions provided
--------------------------------------------------             
library ieee;
Use ieee.std_logic_1164.all;
--------------------------------------------------
Entity NAND_ent is
               Port( x: in std_logic;
               y: in std_logic;
               F: out std_logic);
End NAND_ent; 
--------------------------------------------------
Architecture behv1 of NAND_ent is
               Begin
     Process(x, y)
               Begin
               -- compare to truth table
               if (x='1' and y='1') then
                   F <= '0';
               Else
                    F <= '1';
               End if;
      End Process;
End behv1;
--------------------------------------------------
Architecture behv2 of NAND_ent is 
             Begin
               F <= x nand y; 
End behv2;
--------------------------------------------------
             
                                                 รูปที่ 7.13  การแทนแนนด์เกตด้วยภาษา VHDL
      7.2.5 นอร์เกต (NOR Gate)                          นอร์เกต เป็นอุปกรณ์ลอจิกเกตที่เกิดจากการนำเอา ออร์เกต และนอตเกต มาใช้งานร่วมกัน โครงสร้าง และ
                   สัญลักษณ์แสดงดังรูปที่ 7.14
                      
                      (ก) สัญลักษณ์ NOR Gate                                               (ค) โครงสร้างสมมูลการทำงานของ NOR Gate 
    
A
B
F
0
0
1
0
1
0
1
0
0
1
1
0
                                                                              (ข) ตารางการทำงาน NOR  Gate 
               จากตารางการทำงานของ นอร์เกต ค่าระดับสัญญาณทางเอาต์พุตมีโอกาสเป็น “1”  ได้ในกรณีเดียว คือค่าระดับสัญญาณ
     ทางด้านอินพุตทั้งหมดจะต้องเป็น “0” และเมื่อใดที่ค่าระดับสัญญาณทางอินพุตหนึ่งอินพุตใดเป็น  “1” จะส่งผลให้ค่าระดับสัญญาณทาง
     เอาต์พุตเป็น “0” สามารถเขียนสมการหรือฟังก์ชันการทำงานของนอร์เกต  ได้ดังสมการ   
            - การแทนนอร์เกตด้วย VHDL
                     การแทนนอร์เกตด้วย VHDL สามารถอธิบายเป็นภาษา VHDL ได้ดังรูปที่ 7.15  
--------------------------------------------------
-- NOR gate
--
-- two descriptions provided
--------------------------------------------------             
library ieee;
Use ieee.std_logic_1164.all;
--------------------------------------------------
Entity NOR_ent is
               Port( x: in std_logic;
               y: in std_logic;
               F: out std_logic);
End NOR_ent; 
--------------------------------------------------
Architecture behv1 of NOR_ent is
               Begin
          Process(x, y)
               Begin
               -- compare to truth table
               if (x='0' and y='0') then
                    F <= '1';
               Else
                    F <= '0';
               End if;
               End Process;
End behv1;
Architecture behv2 of NOR_ent is 
               Begin
                   F <= x nor y;
               End behv2;
--------------------------------------------------
             
                                                              รูปที่ 7.15  การแทนนอร์เกตด้วยภาษา VHDL
          7.2.6 เอ็กคลูซีฟออร์เกต (Exclusive OR Gate)
                         อุปกรณ์ลอจิกเกตที่ได้กล่าวผ่านมาทั้งหมด สามารถสรุปได้ว่า เป็นการสร้างเพื่อตอบสนองการทำงานที่แตกต่างกันออกไป
                    เอ็กคลูซีฟออร์เกต ก็เช่นเดียวกัน แต่ เอ็กคลูซีฟออร์เกต เป็นเกตที่ค่อนข้างแตกต่างไปจากกลุ่มที่ได้กล่าวมา ลักษณะการทำงานของ
                   เอ็กคลูซีฟออร์เกต สามารถจัดได้ว่าเป็นอุปกรณ์ลอจิกเกตที่มีการทำงานในลักษณะการเปรียบเทียบค่าระดับสัญญาณทางอินพุต
                                                                                                                
                                                                               
                                                                               (ก) สัญลักษณ์ Exclusive OR Gate   
                                                                           
                                                                     (ข) วงจรโครงสร้างการทำงานของ   Exclusive OR Gate  
A
B
F
0
0
1
0
1
0
1
0
0
1
1
0
                                                                                    (ค) ตารางการทำงาน  Exclusive OR   Gate
                                     
                                         รูปที่ 7.16 สัญลักษณ์ โครงสร้างสมมูล และตารางการทำงานของเอ็กคลูซีฟออร์เกต
                จากตารางการทำงาน จะเป็นการเปรียบเทียบค่าระดับสัญญาณอินพุต  ในกรณีที่ค่าระดับสัญญาณทางอินพุตมีความแตกต่าง 
         ต่าระดับสัญญาณทางเอาต์พุตของ  เอ็กคลูซีฟออร์เกต จะมีค่าเป็น “1” แต่ถ้าค่าระดับสัญญาณทางอินพุตเหมือนกัน    
                   จะได้ค่าระดับสัญญาณทางเอาต์พุตเป็น “0” เราสามารถเขียนสมการหรือฟังก์ชันการทำงานของเอ็กคลูซีฟออร์เกต ได้ดัง
        สมการ  
        - การแทนเอ็กคลูซีฟนอร์เกต ด้วย VHDL
                   การแทนเอ็กคลูซีฟนอร์เกตด้วย VHDL สามารถอธิบายเป็นภาษา VHDL ได้ดังรูปที่ 7.19 
-----------------------------------------------
-- XNOR gate 
--
-- two descriptions provided
-----------------------------------------------             
library ieee;
Use ieee.std_logic_1164.all;
-----------------------------------------------
Entity XNOR_ent is
               Port( x: in std_logic;
               y: in std_logic;
               F: out std_logic);
End XNOR_ent; 
-----------------------------------------------
Architecture behv1 of XNOR_ent is
               Begin
    Process(x, y)
               Begin
               -- compare to truth table
               if (x/=y) then
                   F <= '0';
               Else
                   F <= '1';
               End if;
    End Process;
End behv1;
Architecture behv2 of XNOR_ent is 
             Begin
             F <= x xnor y; 
End behv2;
-----------------------------------------------
             
                                                       รูปที่ 7.19  การแทนเอ็กคลูซีฟนอร์เกต ด้วยภาษา VHDL
   7.2.8 บัฟเฟอร์ (Buffer)
                         บัฟเฟอร์ เป็นเกตที่ไม่ค่อยจะมีบทบาทมากนัก สำหรับนักออกแบบมือใหม่ เพราะบัฟเฟอร์ให้ค่าระดับสัญญาณทางด้านเอาต์พุต
                      เหมือนระดับสัญญาณทางด้านอินพุต หน้าที่ของบัฟเฟอร์   สามารถนำไปเป็นตัวขับค่าระดับสัญญาณให้มีความแรงยิ่งขึ้น
                      และสามารถนำไปช่วยแก้ปัญหา  ที่เกิดจากการหน่วงสัญญาณ (Propagation Delay Time) สมการหรือฟังก์ชันของบัฟเฟอร์         
                      คือ  
                                                                                         
                                                                                          (ก) สัญลักษณ์ Buffer Gate
A
F
0
0
1
1
                                                                                    (ข) ตารางการทำงาน Buffer Gate 
                         
                                              รูปที่ 7.20 สัญลักษณ์ และตารางการทำงานของบัฟเฟอร์
                                                                                                                                                                       << G o To Top
 7.3  การออกแบบวงจรลอจิกด้วย VHDL
                ในการออกแบบวงจรลอจิกจาก    Switching function หรือ Truth table   นั้นเราจะต้องลดรูป Function ของ เอาต์พุต 
         ให้เหลือน้อยที่สุดก่อน โดยใช้ทฤษฎีของบูลีน หรือวิธีอื่นๆ ทั้งนี้ก็เพื่อให้วงจรลอจิกที่เราต้องการมีจำนวนเกตน้อยที่สุด หรือมีการลงทุน
        ในการสร้างวงจรต่ำ นอกจากนี้ยังเป็นการลด Delay time ของวงจรอีกด้วย (Delay time หมายถึง เวลาที่ใช้ในการทำงานของ
        วงจรนับจากอินพุต ไปถึงเอาต์พุต)
       ตัวอย่างที่ 7.1 จงออกแบบวงจรลอจิกจากสมการบูลีน   
          
                                   

                                             


                                                                รูปที่ 7.21 วงจรจากการลดรูปสมการในตัวอย่างที่ 7.1

library ieee;
Use ieee.std_logic_1164.all;
------------------------------------------
Entity EX_7_1 is
 Port( a,b,c: in std_logic;
           y: out std_logic);
End EX_7_1; 
----------------------------------------
Architecture dataflow of EX_7_1 is
     Begin
      Process(a,b,c)
        Begin
               
            y<= b or (a and (not c));
        End Process;
End dataflow;

     ตัวอย่างที่ 7.2   ออกแบบวงจรลอจิกจากสมการบูลีนต่อไปนี้      
                                  
                            

                                                       รูปที่ 7.22 วงจรจากการลดรูปสมการในตัวอย่างที่ 7.2


library ieee;
Use ieee.std_logic_1164.all;
------------------------------------------
Entity EX_7_2 is
 Port( a,b,c: in std_logic;
           y: out std_logic);
End EX_7_2; 
----------------------------------------
Architecture dataflow of EX_7_2 is
     Begin
      Process(a,b,c)
        Begin
               
      y<= (not a) or ((not b )xor (not c));
     End Process;
End dataflow;
                ตัวอย่างที่ 7.3อกแบบวงจรลอจิกจากสมการบูลีนต่อไปนี้
 
                                      

                                                                     รูปที่ 7.23 วงจรจากการลดรูปสมการในตัวอย่างที่ 7.3
 
library ieee;
Use ieee.std_logic_1164.all;
------------------------------------------
Entity EX_7_3 is
 Port( a,b : in std_logic;
           y: out std_logic);
End EX_7_3; 
----------------------------------------
Architecture dataflow of EX_7_3 is
     Begin
      Process(a,b)
        Begin
               
      y<= a  xor  b;
     End Process;
End dataflow

                 ตัวอย่างที่ 7.4   ออกแบบวงจรลอจิกจากสมการบูลีนต่อไปนี้      
            

                                                      รูปที่ 7.24 วงจรจากการลดรูปสมการในตัวอย่างที่ 7.4


library ieee;
Use ieee.std_logic_1164.all;
------------------------------------------
Entity EX_7_4 is
 Port( b,c,d: in std_logic;
           y: out std_logic);
End EX_7_4; 
----------------------------------------
Architecture dataflow of EX_7_4 is
     Begin
      Process(b,c,d)
        Begin
               
      y<= b and (not c) and (not d) ;
     End Process;
End dataflow;

                 ตัวอย่างที่ 7.5งออกแบบวงจรลอจิกจากสมการบูลีนต่อไปนี้

                        
       


                                               รูปที่ 7.25 วงจรจากการลดรูปสมการในตัวอย่างที่ 7.5

                    
library ieee;
Use ieee.std_logic_1164.all;
------------------------------------------
Entity EX_7_5 is
 Port( a,b,c,d: in std_logic;
           y: out std_logic);
End EX_7_5; 
----------------------------------------
Architecture dataflow of EX_7_5 is
     Begin
      Process(a,b,c,d)
        Begin
               
 y<= ((not a) and (not b) and (not c) and (not d))
      and ( a and c and (not d));
     End Process;
End dataflow;
                                                                                                                                  << Go To Top
7.4 Timing Diagram                 Timing Diagram เป็นองค์ประกอบอีกองค์ประกอบหนึ่งในระบบวงจรดิจิตอล ที่ใช้แสดงผลสถานะต่างๆ ออกมาเป็นสัญญาณพัลส์ 
     การเขียน Timing Diagram เป็นเรื่องที่ง่ายมาก ถ้าไม่คำนึง ถึงผลของการหน่วงเวลาในตัวอุปกรณ์ลอจิกเกต (Delay Time) ซึ่งจะเกิดขึ้น
    กับตัวอุปกรณ์ทุกตัว ลักษณะของการเปลี่ยนแปลงของสัญญาณพัลส์จะประกอบด้วยกัน 2 ช่วง คือ ขอบขาขึ้นของสัญญาณและขอบขาลงของ
    สัญญาณ ดังรูปที่ 7.26
                      
                                  
 

                                   
                                                    รูปที่ 7.26 ตัวอย่างของการเขียน Timing Diagram                     
                 ขอบขาขึ้นของสัญญาณ หมายถึง ช่วงของการเปลี่ยนแปลงจากค่าระดับสัญญาณ “0” ไปเป็น  “1” (Active HIGH)
                 ขอบขาลงของสัญญาณ หมายถึง ช่วงของการเปลี่ยนแปลงจากค่าระดับสัญญาณ “1” ไปเป็น  “0” (Active LOW)
                                                        

                                                             รูปที่ 7.27 ลักษณะของสัญญาณ Clock
                        เราสามารถออกแบบวงจรลอจิกจากตารางความจริงหรือสมการที่กำหนดให้ได้  ในทำนองเดียวกันเราก็สามารถที่จะออกแบบ
                 วงจรลอจิกจาก Timing Diagram ได้เช่นเดียวกัน
  
             ตัวอย่างที่ 7.6งออกแบบวงจรลอจิกจาก Timing Diagram ต่อไปนี้

                                     

                                 วิธีทำ  จาก Timing Diagram ที่กำหนดให้ จะได้ว่า
                                                เมื่อ A = 0  B = 0  C = 0  จะได้ Output Y = 0
                                                     A = 0  B = 0  C = 1  จะได้ Output Y = 1
                                                      A = 0  B = 1  C = 0  จะได้ Output Y = 1
                                             A = 0  B = 1  C = 1  จะได้ Output Y = 1
                                             A = 1  B = 0  C = 0  จะได้ Output Y = 0
                                             A = 1  B = 0  C = 1  จะได้ Output Y = 1
                                                                                                          A = 1  B = 1  C = 0  จะได้ Output Y = 0
                                              A = 1  B = 1  C = 1  จะได้ Output Y = 1
                             สามารถเขียนตารางความจริงได้ดังนี้

                                                      

                                                                    

                                                                  


ไม่มีความคิดเห็น:

แสดงความคิดเห็น