วันจันทร์ที่ 7 กรกฎาคม พ.ศ. 2557

บทที่ 10 ความรู้เกี่ยวกับวงจร Combination

บทที่ 10 ::
ความรู้เกี่ยวกับวงจร Combination

<<  10.1   วงจร Combination (Combination Circuit)
<<   10.2 การวิเคราะห์วงจรลอจิก
<<  10.3   การวิเคราะห์และออกแบบวงจรลอจิกเชิงจัดหมู่ตามเงื่อนไขของโจทย์








10.1  วงจร Combination (Combination  Circuit)
                        วงจร Combination หรือ Combination  Circuit  มีความสัมพันธ์กับตารางความจริงและสมการพีชคณิตบูลีน   
    ซึ่งใช้ลดทอนรูปของฟังก์ชันให้ลดลงได้ อีกวิธีหนึ่งซึ่งใช้กันอย่างแพร่หลาย คือ      การใช้แผนผังคาร์โนห์ (K-map หรือ Karnaugh-
    map)ลดรูปฟังก์ชันลอจิกทั้งในรูปแบบ    SOP และ POS ซึ่งใช้งานได้สะดวกและมีความถูกต้องแม่นยำ เหมาะสำหรับนำไปใช้ใน
    การออกแบบวงจร Combination  จากตารางความจริงหรือจากสมการบูลีน วงจร Combination เป็นวงจรที่ประกอบไปด้วยลอจิกเกต
   ชนิดต่างๆ   ที่ประกอบกันเป็นวงจรลอจิก และทำงานได้ตามฟังก์ชันที่กำหนดไว้ ภายในวงจร Combination   ไม่มีอุปกรณ์ประเภทหน่วย
   ความจำ เช่น ฟลิป- ฟลอบ ดังนั้นเอาต์พุตของวงจรจะเปลี่ยนแปลงสภาวะลอจิกไปเมื่อสภาวะลอจิกทางอินพุตเปลี่ยน      แปลงไปในทันที
   หรือหลังจากเวลาหน่วงของลอจิกเกตนั้นทำงานเสร็จสิ้น แผนภาพกรอบของวงจร Combination  แสดงดัง   รูปที่ 10.1
                                              

                                                   รูปที่ 10.1 แผนภาพกรอบวงจรเชิงจัดหมู่
  วงจร Combination ขนาดตามจำนวนของลอจิกเกตที่บรรจุอยู่ภายในชิปวงจรรวมโดยแบ่งเป็น  4  ชนิดดังนี้
          1. ชนิด SSI (Small – Scale Integration) เป็นชนิดที่มีลอจิกเกตภายในไม่เกิน  12 ตัว
          2. ชนิด MSI (Medium – Scale Integration) เป็นชนิดที่มีลอจิกเกตภายในระหว่าง  12 - 99 ตัว
          3. ชนิด LSI (Large - Scale Integration) เป็นชนิดที่มีลอจิกเกตภายในมากกว่า  100 ตัว (100  ถึง 1000 ตัว)
          4. ชนิด VLSI (Very Large - Scale Integration) เป็นชนิดที่มีลอจิกเกตภายในมากกว่าชนิด   LSI  (มากกว่า 1000 ตัว)
                                                                                                                                                                  << Go To Top
10.2  การวิเคราะห์วงจรลอจิก
              การวิเคราะห์วงจรลอจิกหมายถึง การอธิบายคุณสมบัติของวงจรลอจิก โดยอาจจะอธิบายในรูปของสมการลอจิก ตารางความจริง 
        หรือ Timing Diagram ก็ได้สมการลอจิก ตารางความจริง และ Timing Diagram ล้วนแต่ใช้อธิบายคุณสมบัติของวงจรลอจิก
        ได้ทั้งสิ้นต่างกันที่วิธีการอธิบาย กล่าวคือ สมการลอจิกอธิบายในรูปของสมการคณิตศาสตร์ ตารางความจริงอธิบายในรูปของตาราง 
        Timing Diagram อธิบายโดยเขียนรูปคลื่นที่จุดต่างๆ ของวงจร
         ตัวอย่างที่ 10.1  จงเขียนสมการลอจิก ตารางความจริง และ Timing Diagram ของวงจรลอจิก
                                      วิธีทำ
                                                                                           
                                            
          
                                                                                                 ตารางความจริง
                                                  
                     Timing Diagram หาได้โดยการนำค่าจากตารางความจริงมาเขียนเป็นรูปคลื่นดังนี้

                            
 
          ตัวอย่างที่ 10.2   ้สร้างวงจรลอจิก ตามสมการที่กำหนดให้ต่อไปนี้ 
                                        วิธีทำ 
                                                

                                       
         ตัวอย่างที่ 10.3   ให้สร้างวงจรลอจิก ตามสมการที่กำหนดให้ต่อไปนี้ 
                                             วิธีทำ
                                           

                                         
        ตัวอย่างที่ 10.4  ให้สร้างวงจรลอจิก ตามสมการที่กำหนดให้ต่อไปนี้ 
                                       วิธีทำ 
                                           
                                       
          ตัวอย่างที่ 10.5  ให้สร้างวงจรลอจิก ตามสมการที่กำหนดให้ต่อไปนี้ 
                                       วิธีทำ                
           
                                                        
                                             
              ตัวอย่างที่ 10.6  ให้สร้างวงจรลอจิก ตามสมการที่กำหนดให้ต่อไปนี้ 
                                            วิธีทำ
                                                              

                                                    
                                               
          ตัวอย่างที่ 10.7  ให้สร้างวงจรลอจิก ตามสมการที่กำหนดให้ต่อไปนี้ 
                                            วิธีทำ
                                               
                        

                  
            ตัวอย่างที่ 10.8    ให้สร้างวงจรลอจิก ตามสมการที่กำหนดให้ต่อไปนี้ 
                                             วิธีทำ
                         

                
                 ตัวอย่างที่ 10.9  ให้สร้างวงจรลอจิก ตามสมการที่กำหนดให้ต่อไปนี้ 
                                                           วิธีทำ
                              
                        
           ตัวอย่างที่ 10.10 ห้สร้างวงจรลอจิก ตามสมการที่กำหนดให้ต่อไปนี้ 
                                                วิธีทำ 
                  

 
                                                                                                                       << Go To Top
10.3 การวิเคราะห์และออกแบบวงจรลอจิกเชิงจัดหมู่ตามเงื่อนไขของโจทย์
                    การออกแบบวงจรลอจิกเชิงจัดหมู่นั้นจะเป็นไปตามเงื่อนไขของโจทย์ปัญหา ซึ่งผู้ออกแบบต้องเข้าใจโจทย์ปัญหาและแยกออก
      ได้ระหว่างตัวแปรอินพุตและเอาต์พุต แล้วจึงเขียนตารางความจริงตามเงื่อนไขที่โจทย์กำหนด ลำดับต่อไปจึงใช้วิธีแผนผังคาร์โนห์ลด
      รูปวงจรจึงจะได้วงจรลอจิกเป็นไปตามเงื่อนไขของผู้ออกแบบ ซึ่งมีขนาดของวงจรเล็กที่สุด และควรใช้ทฤษฎีของดี.มอร์แกนเปลี่ยนรูป
      ของวงจรที่ออกแบบได้ให้อยู่ในฟังก์ชันของแนนด์เกตหรือนอร์เกตเพียงอย่างเดียว  ดังนั้นจึงสรุปขั้นตอนของการออกแบบวงจรลอจิกเชิง
      จัดหมู่จากโจทย์ปัญหาได้ตามบล็อกไดอะแกรมดังรูปที่ 10.2
          
                           รูปที่ 10.2 แสดงบล็อกไดอะแกรมขั้นตอนการออกแบบวงจรลอจิกเชิงจัดหมู่
    1. นิยามตัวปัญหาปัญหา
     2. สร้างตารางความจริงของโจทย์ปัญหา หรือ เขียนสมการพีชคณิตบูลีน
     3. ลดรูปสมการโดยการเขียน โดยใช้วิธีการใดๆ เช่น แผนผังคาร์โนห์ หรือกฎของบูลีน
     4. ทำให้สมการที่ได้ง่ายขึ้นโดยการใช้กฎของบูลีน หรือ ทฤษฎีของ ดี.มอร์แกน
     5. เขียนลอจิกไดอะแกรมจากสมการที่ได้
     6. เขียนวงจรลอจิกที่ได้จากข้อ 5
              
             การออกแบบวงจร Combination ตามเงื่อนไขของโจทย์ปัญหานี้ จะต้องพิจารณาโจทย์อย่างรอบคอบว่าสิ่งใดคืออินพุตและเอาต์พุต
     ของวงจร Combination  ที่โจทย์กำหนด      เมื่อพิจารณาอินพุตได้แล้วจึงกำหนดชื่อของตัวแปรอินพุตแต่ละตัวให้มีความหมายสัมพันธ์
      กับอินพุตของโจทย์ปัญหาและกำหนดชื่อของตัวแปรเอาต์พุตเช่นกัน ลำดับต่อไปให้เขียนตารางความจริงแสดงเงื่อนไขต่างๆ
              ตามที่โจทย์กำหนด จึงนำเอาต์พุตแต่ละตัวไปทำการลดรูปสมการโดยใช้แผนผังคาร์โนห์ ผลลัพธ์คือสมการบูลีนที่ลดรูปแล้วและ
     ทำงานได้ตามฟังก์ชันลอจิกที่โจทย์ปัญหากำหนดไว้ สามารถศึกษาโจทย์ปัญหาดังตัวอย่างที่ 10.1
ตัวอย่างที่ 10.1 จงออกแบบวงจรลอจิกที่ทำหน้าที่เป็นวงจรสัญญาณเตือนในรถยนต์   ซึ่งแสดงในรูปที่ 10.3 (ก) วงจรลอจิกนี้รับสัญญาณ
                            จากการเปิด - ปิดประตูรถ และสัญญาณจากสวิตซ์กุญแจสตาร์ท รวมทั้งสัญญาณไฟในห้องโดยสาร และทำหน้าที่ตรวจสอบ
                             ความบกพร่องของคนขับรถ โดยเตือนด้วยสัญญาณไฟสีแดงบนแผงหน้าปัด ตาม เงื่อนไขต่อไปนี้
                                (1) ไฟเตือนจะติดสว่างเมื่อสวิตซ์กุญแจปิด (Off) และประตูรถเปิด (Open)
                                (2) ไฟเตือนจะติดสว่างเมื่อไฟในห้องโดยสารเปิด (On)
                                (3) ไฟเตือนจะดับเมื่อเงื่อนไขนอกเหนือจากข้อ (1) และ (2)
                  
                                             วิธีทำ   (1) ตัวแปรอินพุตมี 3 ตัวแปรคือ
                                                         ก) ประตูรถ = Door = D
                                                         ข) สวิตซ์กุญแจ = Key = K
                                                         ค) ไฟในห้องโดนสาร = Lamp = L
                                                              และตัวแปรเอาต์พุตมี 1 ตัวแปรคือ ไฟเตือนสีแดง = Alarm = A
                                                        
                                                         (2) กำหนดลอจิกอินพุตของตัวแปรทั้งสาม และเอาต์พุต A ดังนี้
                                                             D = 1 เมื่อประตูเปิด   ,   D = 0 เมื่อประตูปิด
                                          K = 1 เมื่อสวิตซ์ On   ,   K = 0 เมื่อสวิตซ์ Off  
                                          L = 1 เมื่อไฟสว่าง        ,   L = 0 เมื่อไฟดับ
                                          A = 1 เมื่อไฟเตือนติด   ,   A = 0 เมื่อไฟเตือนดับ
                                                       (3) เขียนตารางความจริงตามเงื่อนไขที่โจทย์กำหนดได้ดังนี้
 
                                                                    

                                                                        

                                                 สมการเอาต์พุตที่ได้                        
                                     (5) เขียนวงจรลอจิกที่ออกแบบได้ และนำไปทดสอบการทำงานตามเงื่อนไขที่โจทย์
                                                            กำหนดโดยใช้ไอซี 3 เบอร์ คือ 7404 7408 และ 7432

          


                                                                    รูปที่ 10.3 (ข)

                 
 library ieee;
Use ieee.std_logic_1164.all;
Entity not_gate is
           Port( in1: in std_logic;
            output : out std_logic);
End not_gate;
           
Architecture structural1 of not_gate is
           Begin
 Process(in1)
           Begin
           
           output <= not in1;
           End Process;
End structural1;
--------------------------------------------------
library ieee;
Use ieee.std_logic_1164.all;
Entity and_gate is
           Port( in1,in2: in std_logic;
           output : out std_logic);
End and_gate;

Architecture structural2 of and_gate is
           Begin
 Process(in1,in2)
           Begin
           
           output <= in1 and in2;
           End Process;
End structural2;
--------------------------------------------------
 library ieee;
Use ieee.std_logic_1164.all;
Entity or_gate is
           Port( in1,in2: in std_logic;
           output : out std_logic);
End or_gate;
   
 Architecture structural3 of or_gate is
           Begin
           Process(in1,in2)
           Begin
           
           output <= in1 or in2;
           End Process;
End structural3;
--------------------------------------------------
library ieee;
Use ieee.std_logic_1164.all;
Use work.all;
Entity EX_10_1 is
           Port( D,K,L: in std_logic;
            A : out std_logic);
End EX_10_1; 
Architecture struct of EX_10_1 is
           Component not_gate
           Port( in1: in std_logic;
           output : out std_logic);
End Component; 
Component and_gate
           Port( in1,in2: in std_logic;
           output : out std_logic);
End Component; 
Component or_gate
           Port( in1,in2: in std_logic;
           output : out std_logic);
End Component; 
           
           
--------------------------------------------------
Signal i1,i2,i3 : std_logic;
           begin
           ic1 : not_gate Port Map(k,i2);
           ic2 : and_gate Port Map(i1,i2,i3);
           ic3 : or_gate Port Map(i3,L,A);
End struct;
         
                                                        รูปที่ 10.4     การแทนด้วยภาษา VHDLแบบ Structural
library ieee;
Use ieee.std_logic_1164.all;         
--------------------------------------------------
Entity EX_1 is
           Port( D,K,L: in std_logic;
                     A: out std_logic);
End EX_1; 
--------------------------------------------------
Architecture dataflow of EX_1 is
           Begin
           Process(D,K,L)
           Begin
           
           A <= L or (D and (not K));
           End Process;
End dataflow;
                                          รูปที่ 10.5 การแทนด้วยภาษา VHDL แบบ Dataflow
library ieee;
Use ieee.std_logic_1164.all;         
---------------------------------------
Entity EX_1 is
           Port( D,K,L: in std_logic;
                     A: out std_logic);
End EX_1; 
----------------------------------------
Architecture bevhavioral of EX_1 is
           Begin
        Process(D,K,L)
        Begin
        if D='0' and K='0' and L='0' then
             A <= '0';
        Else
         if D='0' and K='1' and L='0' then
              A <= '0';
        Else
        if d='1' and K='1' and L='0' then
             A <= '0';
         Else
             A <= '1';
               End if;
           End if;
         End if;
         End Process;
End  bevhavioral ;
                                            10.6 การแทนด้วยภาษา VHDL แบบ  Behavioral
ตัวอย่างที่ 10.2 งออกแบบวงจรลอจิกสำหรับรูปที่ 10.4 (ก) เพื่อให้ทำงานได้ตามเงื่อนไขต่อไปนี้
                                                        (1) ถ้า f(A, B, C, D) > 11 ให้หลอด High ติด
                                                        (2) ถ้า f(A, B, C, D) = 11 ให้หลอด High - Low ติด
                                                        (3) ถ้า f(A, B, C, D) < 11 ให้หลอด Low ติด

                                                                 

                                                                                              รูปที่ 10.4 (ก)

                                   วิธีทำ (1) จะเห็นว่าโจทย์ข้อนี้มี 3 เอาต์พุต คือ High, High – Low และ Low ให้เขียนตาราง
                                        ความจริงและกำหนดค่าคงที่ในแต่ละเอาต์พุต

                                                       
   
                  (2)   ลดรูปสมการเอาต์พุตทั้งสาม โดยใช้แผนผังคาร์โนห์
                                                                                         

                                                        

                                                       ดังนั้นสมการ
                                                                                     

                                                  (3) จากสมการที่ออกแบบได้เขียนเป็นวงจรลอจิกได้ดังนี้
                                     
                                 

                                                                                          รูปที่ 10.7 
library ieee;
Use ieee.std_logic_1164.all;
Entity not_gate is
           Port( in1: in std_logic;
           output : out std_logic);
End not_gate;
 
Architecture structural1 of not_gate is
           Begin
 Process(in1)
           Begin
           
           output <= not in1;
          End Process;
End structural1;
--------------------------------------------------
library ieee;
Use ieee.std_logic_1164.all;
Entity and_gate is
           Port( in1,in2: in std_logic;
           output : out std_logic);
End and_gate;

Architecture structural2 of and_gate is
           Begin
           Process(in1,in2)
           Begin
           
           output <= in1 and in2;
           End Process;
End structural2;
--------------------------------------------------
library ieee;
Use ieee.std_logic_1164.all;
Entity and_gate3 is
           Port( in1,in2,in3: in std_logic;
           output : out std_logic);
End and_gate3;          
 
Architecture structural3 of and_gate3 is
           Begin
 Process(in1,in2,in3)
           Begin
           
           output <= in1 and in2 and in3;
           End process;
End structural3;
--------------------------------------------------
library ieee;
Use ieee.std_logic_1164.all;
Entity and_gate4 is
           Port( in1,in2,in3,in4: in std_logic;
           output : out std_logic);
           End and_gate4;           

Architecture structural4 of and_gate4 is
           Begin
           Process(in1,in2,in3,in4)
           Begin
           
           output <= in1 and in2 and in3 and in4;
           End Process;
End structural4;
--------------------------------------------------
library ieee;
Use ieee.std_logic_1164.all;
Entity or_gate is
           Port( in1,in2: in std_logic;
           output : out std_logic);
End or_gate;

Architecture structural5 of or_gate is
           Begin
   Process(in1,in2)
           Begin
           
           output <= in1 or in2;
           End Process;
End structural5;
--------------------------------------------------
 library ieee;
 Use ieee.std_logic_1164.all;
 Use work.all;
Entity EX_10_2 is
           Port( A,B,C,D: in std_logic;
           HIGH,HIGH_LOW,LOW : out std_logic);
 End EX_10_2; 
Architecture struct of EX_10_2 is
Component not_gate
           Port( in1: in std_logic;
           output : out std_logic);
 End Component; 
Component and_gate
           Port( in1,in2: in std_logic;
           output : out std_logic);
End Component;
Component and_gate3
           Port( in1,in2,in3: in std_logic;
           output : out std_logic);
End Component; 
           
Component and_gate4
           Port( in1,in2,in3,in4: in std_logic;
           output : out std_logic);
           
End Component;

Component or_gate
           Port( in1,in2: in std_logic;
           output : out std_logic);
End Component; 
           
--------------------------------------------------
Signal i1,i2,i3,i4 : std_logic;
           Begin
   ic1 : not_gate Port Map(C,i2);
   ic2 : not_gate Port Map(B,i1);
   ic3 : not_gate Port Map(A,i3);
   ic4 : and_gate3 Port Map(i1,A,i2,i4);
   ic5 : and_gate Port Map(A,B,HIGH);
   ic6 : and_gate4 Port Map(A,i1,C,D,HIGH_LOW);
   ic7 : or_gate Port Map(i3,i4,LOW);
End struct;
         
                                                             รูปที่ 10.8  การแทนด้วยภาษา VHDLแบบ Structural
library ieee;
Use ieee.std_logic_1164.all;         
--------------------------------------------------
Entity EX_2 is
           Port( A,B,C,D: in std_logic;
               HIGH,HIGH_LOW,LOW: out std_logic);
End EX_2; 
--------------------------------------------------
Architecture dataflow of EX_2 is
           Begin
          Process(A,B,C,D)
           Begin
           
              HIGH <= A and B;
              HIGH_LOW <= A and(not B)and C and D ;
              LOW <= (not A) or (A and (not B)and (not C)); 
           End Process;
End dataflow ;
                                                  10.9    การแทนด้วยภาษา VHDL แบบ Dataflow
library ieee;
Use ieee.std_logic_1164.all;         
---------------------------------------
Entity EX_2 is
           Port( A,B,C,D: in std_logic;
                     HIGH,HIGH_LOW,LOW: out std_logic);
End EX_2; 
----------------------------------------
Architecture bevhavioral of EX_2 is
           Begin
        process(A,B,C,D)
        Begin
        if A='1' and B='0' and C='1' and D='1' then
             HIGH<= '0';
             HIGH_LOW<= '0';
             LOW <='1';
        Else
         if A='1' and B='1' and C='0' and D='0' then
             HIGH<= '1';
             HIGH_LOW<= '0';
             LOW <='0';
        Else
          if A='1' and B='1' and C='0' and D='1' then
             HIGH<= '1';
             HIGH_LOW<= '0';
             LOW <='0';
        Else
         if A='1' and B='1' and C='1' and D='0' then
             HIGH<= '1';
             HIGH_LOW<= '0';
             LOW <='0';
        Else
         if A='1' and B='1' and C='1' and D='1' then
             HIGH<= '1';
             HIGH_LOW<= '0';
             LOW <='0';
          Else
             HIGH<= '0';
             HIGH_LOW<= '0';
             LOW <='1';
                        End if;
                      End if;
                   End if;
              End if;
         End if;
         End Process;
End  bevhavioral ;
                                                 10.10 แทนด้วยภาษา VHDL แบบ Behavioral
 
                 ตัวอย่างที่ 10.3 ออกแบบวงจรลอจิกเพื่อควบคุมลิฟต์ส่งของ ดังรูปที่ 10.5 (ก) ตามเงื่อนไขที่โจทย์กำหนด

                                                                                     

                                                                                                 รูปที่ 10.11 (ก)
                  กำหนดให้
                             (ก) การทำงานของมอเตอร์นั้นจะหมุนขวาดึงลิฟต์ขึ้นและหมุนซ้ายปล่อยลิฟต์ลง มอเตอร์หมุนขวา
                                  ได้เมื่อวงจร M1 = “1” และวงจร F/R = “1” มอเตอร์หมุนซ้ายได้เมื่อวงจร M1 = “1”      และวงจร 
                                  F/R = “0” ถ้ามอเตอร์หยุดหมุนเมื่อ M1 = “0”
                            (ข) สวิตซ์ S2 จะให้ลอจิก “1” เมื่อลิฟต์อยู่ชั้น 1 และให้ลอจิก “0” เมื่อลิฟต์อยู่ชั้น      4
                            (ค) สวิตซ์ S1 เมื่อกดจะให้ลอจิก “1” ปล่อยให้ลอจิก “0”
                            (ง) สวิตซ์ S3 เมื่อกดจะให้ลอจิก “1” ปล่อยให้ลอจิก “0”
                   เงื่อนไขการทำงาน
                           (1) ลิฟต์จะขึ้นได้เมื่อตู้ลิฟต์อยู่ที่ชั้น 1 และสวิตซ์ S1 ถูกกดแต่ S2 ไม่ถูกกดเท่านั้น
                           (2) ลิฟต์จะลงได้เมื่อตู้ลิฟต์อยู่ที่ชั้น 4 และสวิตซ์ S3 ถูกกด แต่ S1 ไม่ถูกกดเท่านั้น
                           (3) กรณีอื่นๆ มอเตอร์จะหยุดหมุน
                   วิธีทำ (1) พิจารณาโจทย์จะพบว่าอินพุตของระบบนี้มี 3 อินพุตคือ S1 S2 และ S3 ส่วนเอาต์พุตมี 2 เอาต์พุตคือ 
                           M1 และ F/R
              
                       (2) พิจารณาเงื่อนไขได้ดังนี้
                                 2.1 เงื่อนไขข้อ 1 ลิฟต์จะขึ้นได้เมื่ออินพุต S2 = “1” และ S1 = “1” และ S = “0” 
                                             ลิฟต์ขึ้น เอาต์พุต M1 = “1” และ F/R = “1” 
                               2.2 เงื่อนไขข้อ 2 ลิฟต์จะลงเมื่ออินพุต S2 = “0” และ S3 = “1” และ S1 = “0” ลิฟต์
                                            ลง เอาต์พุต M1 = “1” และ F/R = “0”
                               2.3 มอเตอร์หยุดหมุนเมื่อ M1 = “0” และ F/R = “X”
                    
                     (3) เขียนตารางความจริงตามเงื่อนไขที่โจทย์กำหนด
              
                                                  

                        (4) ลดรูปฟังก์ชันเอาต์พุต M1 และ F/R โดยใช้แผนผังคาร์โนห์ได้ดังนี้

                                         

                         (5) จากสมการ M1 และ F/R ที่ออกแบบได้เป็นวงจรลอจิก ดังแสดงในรูปที่ 10.5 (ข)

                                

                                                                      รูปที่  10.12 
                          
                                     
library ieee;
Use ieee.std_logic_1164.all;         
Entity not_gate is
           Port( in1: in std_logic;
           output : out std_logic);
End not_gate;           

Architecture structural1 of not_gate is
           Begin
 Process(in1)
           Begin
           
           output <= not in1;
           End process;
End structural1;
--------------------------------------------------           
library ieee;
Use ieee.std_logic_1164.all;
Entity and_gate3 is
           Port( in1,in2,in3: in std_logic;
           output : out std_logic);
End and_gate3;           

Architecture structural2 of and_gate3 is
           Begin
 Process(in1,in2,in3)
           Begin
           
           output <= in1 and in2 and in3;
           End process;
End structural2;
--------------------------------------------------
library ieee;
Use ieee.std_logic_1164.all;
Entity or_gate is
           Port( in1,in2: in std_logic;
           output : out std_logic);
End or_gate;
           
Architecture structural3 of or_gate is
           Begin
 Process(in1,in2)
           Begin
           
           output <= in1 or in2;
           End Process;
End structural3;
--------------------------------------------------
library ieee;
Use ieee.std_logic_1164.all;
Use work.all;
Entity EX_10_3 is
           Port( S1,S2,S3: in std_logic;
           F_R,M1 : out std_logic);
End EX_10_3; 
Architecture struct of EX_10_3 is
Component not_gate
           Port( in1: in std_logic;
           output : out std_logic);
End Component; 
Component and_gate3
           Port( in1,in2,in3: in std_logic;
           output : out std_logic);
End Component; 
           
Component or_gate
           Port( in1,in2: in std_logic;
           output : out std_logic);
End Component; 
           
           
--------------------------------------------------
 Signal i1,i2,i3: std_logic;
Begin
ic1 : not_gate Port Map(S3,i1);
ic2 : not_gate Port Map(S2,i2);
ic3 : and_gate3 Port Map(S1,S2,i1,F_R);
ic4 : and_gate3 Port Map(S1,i2,S3,i3);
ic5 : or_gate Port Map(F_R,i3 ,M1);
End struct;
         
                                       รูปที่ 10.11  การแทนด้วยภาษา VHDLแบบ Structural
library ieee;
Use ieee.std_logic_1164.all;         
--------------------------------------------------
Entity EX_3 is
           Port( S1,S2,S3: in std_logic;
                     M1,F_R: out std_logic);
End EX_3; 
--------------------------------------------------
Architecture dataflow of EX_3 is
           Begin
 Process(S1,S2,S3)
           Begin
           
           M1 <=(S1 and S2 and (not S3)) or(S1 and (not S2) and S3);
           F_R <=(S1 and S2 and (not S3));
           End Process;
End dataflow ;
         
                                         รูปที่ 10.13  แทนด้วยูภาษา VHDL แบบ Dataflow

                                    
library ieee;
Use ieee.std_logic_1164.all; 
---------------------------------------
Entity EX_3 is
           Port( S1,S2,S3: in std_logic;
                  F_R,M1: out std_logic);
End EX_3; 
----------------------------------------
Architecture bevhavioral of EX_3 is
           Begin
 Process(S1,S2,S3)
           Begin
           if S1='1' and S2='0' and S3='1' then
                     M1<= '1';
                     F_R<='0';
           Else
           if S1='1' and S2='1' and S3='0' then
                     M1<= '1';
                     F_R<='1';
           Else
                     M1<= '0';
                     F_R<='0';
                   End if;
             End if;
        End Process;
 End bevhavioral ;
                                       รูปที่ 10.14 แทนด้วยภาษา VHDL แบบ Behavioral

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

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