Board logo

标题: 4输入多路选择器的多种表示方式 [打印本页]

作者: yuyang911220    时间: 2016-8-13 15:23     标题: 4输入多路选择器的多种表示方式

module test(a,b,c,d,s0,s1,y);
    input a,b,c,d;
   input s0,s1;
    output y;
    reg y;
   always@*
    begin
    case({s1,s0})
       2'b00:y<=a;
     2'b01:y<=b;
     2'b10:y<=c;
     2'b11:y<=d;
     endcase
    end
endmodule   



//////////////////////////////////////////////////////////////
module test(a,b,c,d,s0,s1,y);
      input a,b,c,d,s0,s1;
   output y;
   wire [1:0] sel;
   wire at,bt,ct,dt;
   assign sel={s1,s0};
   assign at=(sel==2'b00);
   assign bt=(sel==2'b01);
   assign ct=(sel==2'b10);
   assign dt=(sel==2'b11);
  
    assigny=(a&at)|(b&bt)|(c&ct)|(d&dt);
  
  endmodule



/////////////////////////////////////////////////////  
module test(a,b,c,d,s0,s1,y);
     input a,b,c,d,s0,s1;
    outputy;
    wire at=s0?a:b;
  wire bt=s0?c:d;
  wire y=s1?at:bt;
endmodule



////////////////////////////////////////////////////////////
module test(a,b,c,d,s0,s1,y);
    inputa,b,c,d,s0,s1;
  output y;
  reg [1:0] sel;
  reg y;
  always@*
    begin
     sel={s1,s0};
    if (sel==0)y=a;
    else if(sel==1) y=b;
    elseif(sel==2) y=c;
    elsey=d;
  end
endmodule


//////////////////////////////////////////////////////////////////
实际上上述程序中的阻塞赋值与非阻塞赋值是可以互换的,且功能不变,电路不变。但是,在一般情况下,事情并非如此,即在不少情况下,不同的赋值方式将导致不同的电路结构和逻辑功能。尚在摸索之中。还有就是在同一个过程块中不能对同一变量进行不同方式的赋值,也不要在多个always过程块中对同一变量赋值,因为always块也是并行的。
作者: yuchengze    时间: 2016-8-19 16:15

支持帮顶,路过支持一下




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0