기본적인 논리연산회로의 verilog HDL설계

2010, Nov 07    

컴퓨터구조 교재에 나와있는 다음 회로를 VHDL로 설계하시오.</p>

 그림2.12  기본적인 논리연산회로(1비트)

세부사항 1. 4*1MUX를 별도의 모듈로 설계하고,  이것을 부품으로 사용하여 전체회로를 설계하시오.
                 2.  테스트를 위한 입력값은 S1,S0 및 A,B의 모든 비트패턴의 값(16개)을 설정하시오.</span>





`timescale 1ps / 1ps

module test;
  wire E1;  
  reg Ai;  
  reg Bi; 
  reg S1;
  reg S0;

  Basic_logic_circuit logic_diagram(Ai,Bi,S1,S0,E1);

initial
  begin                  //SIGNAL S1
        S1 = 1'b0;
      #800
        S1 = 1'b1;
      #800
        ;
  end

initial
   begin                  //SIGNAL S0
        S0 = 1'b0;
      #400
        S0 = 1'b1;
      #400
        S0 = 1'b0;
      #400
        S0 = 1'b1;
      #400
        ;
  end


initial
  begin                  //SIGNAL Ai
        Ai = 1'b0;
      #200
        Ai = 1'b1;
      #200
        Ai = 1'b0;
      #200
        Ai = 1'b1;
      #200
        Ai = 1'b0;
      #200
        Ai = 1'b1;
      #200
        Ai = 1'b0;
      #200
        Ai = 1'b1;
      #200
        ;
  end



initial
  begin                  //SIGNAL Bi
        Bi = 1'b0;
      #100
        Bi = 1'b1;
      #100
        Bi = 1'b0;
      #100
        Bi = 1'b1;
      #100
        Bi = 1'b0;
      #100
        Bi = 1'b1;
      #100
        Bi = 1'b0;
      #100
        Bi = 1'b1;
      #100
        Bi = 1'b0;
      #100
        Bi = 1'b1;
      #100
        Bi = 1'b0;
      #100
        Bi = 1'b1;
      #100
        Bi = 1'b0;
      #100
        Bi = 1'b1;
      #100
        Bi = 1'b0;
      #100
        Bi = 1'b1;
      #100
        ;
  end

 initial
    #1600

$finish;

endmodule


//** Basic_logic_circuit ************************
module Basic_logic_circuit (Ai,Bi,S1,S0,Ei);
  output Ei;
  input Ai,Bi,S1,S0;

  wire w1,w2,w3,w4;

  and (w1,Ai,Bi);
  or (w2,Ai,Bi);
  xor (w3,Ai,Bi);
  not (w4,Ai);

  Mux_4to1 mux4_1(w1,w2,w3,w4,S1,S0,Ei);

endmodule


//** Mux_4to1( ************************
module Mux_4to1(I0,I1,I2,I3,S1,S0,Y);
  output Y;
  input I0,I1,I2,I3,S1,S0;

  wire w1,w2,w3,w4,w5,w6;
  
  not (w6,S1);
  not (w5,S0);
  and (w1,I0,w6,w5);
  and (w2,I1,w6,S0);
  and (w3,I2,S1,w5);
  and (w4,I3,S1,S0);
  or (Y,w1,w2,w3,w4);
   
endmodule