用Verilog描述组合逻辑电路

1。选择器

//2选1多路选择器

module  mux2to1(w0,w1,s,f);

     input  w0,w1,s;

      output  f;

  

      assign f=s?w0:w1;

 

endmodule

 


或者:

module mux2to1(w0,w1,s,f);

    input w0,w1,s;

    output reg f;

    

    always @(w0,w1,s)

       f=s?w0:w1;

 

endmodule

 


 

//4选一多路选择器

module  mux4to1(w0,w1,w2,w3,s0,s1,f);

      input w0,w1,w2,w3,s0,s1;

      output  f;

 

      assign f=s1?(s0?w3,w2):(s0?w1,w0);//可以用向量法的。。

 

endmudule

 


用if...else 语句

//2选一

module  mux2to1(w0,w1,s,f);

   input  w0,w1,s;

   output  reg f;

   

   always @(w0,w1,s)

    begin

       if(s==0)

           f=w0;

       else 

           f=w1;

     end

 

endmodule


 

//4选一,if...else 语句实现

module mux4to1(w0.w1,w2,w3,S,f);

    input  w0.w1,w2,w3;

    input  [1:0]  S;

    output  reg f;

   

    always @(*)

         if(S==0)

             f=w0;

         else if(S==1)

             f=w1;

         else  if(S==2)

             f=w2;

          else 

             f=w3;

   

endmodule


 

//case 实现的4选一

module mux4to1(W,S,f);

    input  [3:0]  W;

    output  [1:0]  S;

    output  reg f;

 

    always  @(W,S)

         case  (S)

            0:  f=W[0];

            1:  f=W[1];

            2:  f=W[2];

            3:  f=W[3];

          endcase

 

endmodule


 

 

2.译码器

//2-4译码器

module  dec2to4(W,Y,En);

     input  [1:0]  W;

     input En;

     output [3:0]  reg Y;

 

     always @(X,En)

         case({En,W})

             3'b100 : Y=1000;

             3'b101 :  Y=0100;

             3'b110 :  Y=0010;

             3'b111 :  Y=0001;

             default :  Y=0000;

          endcase

 

endmodule


//2-4译码器令一种形式

module  dec2to4(W,Y,En);

     input  [1:0]  W;

     input En;

     output [0:3]  reg Y;

 

     always @(X,En)

        if(EN==0)

            Y=0000;

        else 

            case(W)

               3'b100 : Y=1000;

               3'b101 :  Y=0100;

               3'b110 :  Y=0010;

               3'b111 :  Y=0001;

            endcase

 

endmodule


 

//for语句实现的2-4译码器

module  dec2to4(W,Y,En);

     input  [1:0]  W;

     input En;

     output [0:3]  reg Y;

     integer  k;

  

     always @(W,En)

         for(k==0;k<4;k=k+1)

            if((W==k)&&(En==1))

                Y[k]=1;   

            else 

                Y[k]=0;

    

endmodule

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值