Verilog (二) multiplexer and decoder

1  mutiplexer 数据选择器

1)  one-bit wide 2-1 mux

wire  dout  = sel? din1 : din0;  // conditional continuous and wire assignment

2)  4-1 mux

 1 module  mux4_1(sel, din0, din1, din2, din3, dout);
 2   input  [1:0]  sel;
 3   input    din0, din1, din2, din3;
 4   output  dout;
 5   reg   dout;
 6 
 7 always @ (sel or din0 or din1 or din2 or din3)
 8 begin
 9   case(sel)
10     2'b00:  dout = din0;
11     2'b01:  dout = din1;
12     2'b10:  dout = din2;
13     2'b11:  dout = din3;
14     default:  dout = din0;
15   endcase
16 end
17 
18 endmodule

3)  two-bit wide 8-1 mux (case statement)

seldin7din6din5din4din3din2din1din0dout
000XXXXXXXXXXXXXXDDdin0
001XXXXXXXXXXXXDDXXdin1
010XXXXXXXXXXDDXXXXdin2
011XXXXXXXXDDXXXXXXdin3
100XXXXXXDDXXXXXXXXdin4
101XXXXDDXXXXXXXXXXdin5
110XXDDXXXXXXXXXXXXdin6
111DDXXXXXXXXXXXXXXdin7

 

2  decoder 解码器/译码器

    n 个输入  =>  2n 个输出

1)  3-8 binary decoder

module  decoder3_8(A, Y);
  input    [2:0]  A;
  output  [7:0]  Y;
  reg    [7:0]  Y;

always @ (A)
  case (A)
    0:  Y = 8'b00000001;
    1:  Y = 8'b00000010;
    2:  Y = 8'b00000100;
    3:  Y = 8'b00001000;
    4:  Y = 8'b00010000;
    5:  Y = 8'b00100000;
    6:  Y = 8'b01000000;
    7:  Y = 8'b10000000;
    default:  Y = 8'b0;
  endcase

endmodule
decoder3_8

2)  3-6 binary decoder with enable

module  decoder3_6(A, EN, Y);
  input    EN;
  input    [2:0]  A;
  output  [5:0]  Y;
  reg    [5:0]  Y;

always @ (EN or A)
  case ({EN, A})
    4'b1000:  Y = 6'b000001;
    4'b1001:  Y = 6'b000010;
    4'b1010:  Y = 6'b000100;
    4'b1011:  Y = 6'b001000;
    4'b1100:  Y = 6'b010001;
    4'b1101:  Y = 6'b100000;
    default:  Y = 6'b0;
  endcase

endmodule
decoder3_6_en

 

转载于:https://www.cnblogs.com/xinxue/p/5249252.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值