加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

4输入多路选择器的多种表示方式

(2011-11-21 00:29:44)
标签:

d70

多路选择器

阻塞

变量

电路

it

分类: iFPGA

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   

4输入多路选择器的多种表示方式


//////////////////////////////////////////////////////////////

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);
  
    assign y=(a&at)|(b&bt)|(c&ct)|(d&dt);
  
  endmodule

4输入多路选择器的多种表示方式

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

4输入多路选择器的多种表示方式

////////////////////////////////////////////////////////////

module test(a,b,c,d,s0,s1,y);
    input a,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;
    else if(sel==2) y=c;
    else y=d;
  end
endmodule

4输入多路选择器的多种表示方式

//////////////////////////////////////////////////////////////////

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

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有