实验-多路选择器

实验目的

通过实验,学会多路选择器的功能,以及使用 Block Design 和 verilog
HDL 语言设计多路选择器

实验内容

1.分别使用 Block Design 设计方法和添加源代码的方法设计一个一位 4 选 1多路选择器,并通过写仿真文件、看 RTL 电路图、下载到板子验证其正确性。
2. 使用 Verilog HDL 语言的行为描述方法设计一个 3 位数据的 4 选 1 多路选择器 mux4x3。

实验设计

实验原理

根据数据选择器,指经过选择,把多个通道的数据传到唯一的公共数据通道上。四选一数据选择器:对四个数据源进行选择,使用两位地址码A1A0产生地址信号来选择输出

4选1多路选择器真值表如下:

输入输出
S1 S0f
0 0W0
0 1W1
1 0W2
1 1W3

逻辑表达式:f = ~S1* ~S0 * W0 + ~S1 * S0* W1 +S1* ~S0 * W2 +S1* S0* W3

电路原理图:
在这里插入图片描述

实验过程

IP核+Block Design:

与或非门的IP核封装:

// 与门:
module andgate
#(parameter WIDTH=8)
(
    input [(WIDTH-1):0] a,
    input [(WIDTH-1):0] b,
    output [(WIDTH-1):0] c
    );
    
    assign c = a&b;
endmodule

// 或门:
module orgate
#(parameter WIDTH=8)
(
    input [(WIDTH-1):0] a,
    input [(WIDTH-1):0] b,
    output [(WIDTH-1):0] c
    );
    
    assign c = a|b;
endmodule

// 非门:
module notgate
#(parameter WIDTH=8)
(
    input [(WIDTH-1):0] a,
    output [(WIDTH-1):0] c
    );
    
    assign c = ~a;
endmodule

Block Design(不太美观) 以及 RTL分析:

BD文件
RTL分析

行为描述方法-数据流实现方式原理(1位):

设计文件代码:

module mux4x1_ip(
    input w0,
    input w1,
    input w2,
    input w3,
    input s0,
    input s1,
    output y
);
assign y = (~s1&~s0&w0)|(~s1&s0&w1)|(s1&~s0&w2)|(s1&s0&w3);
endmodule

RTL分析:

在这里插入图片描述

行为描述方法-case实现方式原理(3位):

设计文件代码:

module mux41(y,w0,w1,w2,w3,s0,s1);
  output reg[2:0] y;
  input[2:0] w0,w1,w2,w3;
  input s0,s1;
 
always @ (s0 or s1 or w0 or w1 or w2 or w3)
begin
case({s1,s0})         //  判断选择输出的数据
	 2’b00:y = w0;
	 2’b01:y = w1;
     2’b10:y = w2;
     2’b11:y = w3;
     default:y =1'bx;
 endcase
end
endmodule

3位仿真文件代码:

module mux41_sim();
reg[2:0] w0,w1,w2,w3;
reg s0,s1;
wire[2:0] y;
mux41 test(.w0(w0),.w1(w1),.w2(w2),.w3(w3),.s0(s0),.s1(s1),.y(y));
initial begin
#200
w0=001;
w1=010;
w2=100;
w3=101;
s0=0;
s1=0;
#200
w0=001;
w1=010;
w2=100;
w3=101;
s0=0;
s1=1;
#200
w0=001;
w1=010;
w2=100;
w3=101;
s0=1;
s1=0;
#200
w0=001;
w1=010;
w2=100;
w3=101;
s0=1;
s1=1;
end
endmodule

RTL分析:

在这里插入图片描述

仿真图:

在这里插入图片描述

最后上板观察就可以啦~~

  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yarhanry

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值