数据选择器实验

1. 实验目的

(1)掌握用VerilogHDL 语言编写41多路选择器的方法

(2)熟练的使用always块实现:

(3)熟练的使用assign语句实现:

2. 实验内容

(1)原理描述

多路选择器的功能:在选择信号的控制下,从多个输入中选择一个输出。

真值表如下

      

 电路结构如下

数据选择器,可根据给定的输入地址代码,从一组输入信号中选出指定的一个,送至输出端。

四选一数据选择器,从四个端口中任意选择一个,送至输出端。设定四个端口为in[0]、in[1]、in[2]、in[3],表示四个端口需要两个选择信号(2^2 =4),设为sel[0]、sel[1],将输出信号设为out。

(2)Verilog HDL设计源代码描述(要求:注释)

      代码图如下:

  • in[0]、in[1]、in[2]、in[3]为四个输入端口,input [3 : 0] in表示上边沿信号1作为输入信号;
  • sel[0]、sel[1]为两个选择信号,input [1 : 0] sel 表示上边信号为1时作为选择信号;
  • always模块采用case语句进行选择,将in[0]的值赋给out的二进制代码为:00的情况,之后的代码同理;
  • (1'bx)会默认为0即false,退出case;

(3)TestBeach仿真代码及仿真结果

      仿真代码如下:

仿真always测试语句表:

Time

Signal change

in

0

0000

10ns

in[0]取反

0001

20ns

in[0]取反,in[1]取反

0010

30ns

in[0]取反

0011

40ns

in[0]取反,in[1]取反,in[2]取反

0100

50ns

in[0]取反

0101

60ns

in[0]取反,in[1]取反

0110

70ns

in[0]取反

0111

80ns

in[0]取反,in[1]取反,in[2]取反,in[3]取反

1000

90ns

in[0]取反

1001

100ns

in[0]取反,in[1]取反

1010

110ns

in[0]取反

1011

120ns

in[0]取反,in[1]取反,in[2]取反

1100

130ns

in[0]取反

1101

140ns

in[0]取反,in[1]取反

1110

150ns

in[0]取反

1111

  • 每过10ns,in[0]反转一次;每过20ns,in[1]反转一次;每过40ns,in[2]反转一次;每过80ns,in[3]反转一次;
  • 从而实现,0000->0001->0010->0011->0100->0101->0110->0111->……->1110->1111;
  • Initial模块中,always语句:当in的值10ns改变一次,sel的选择也要每次进行10ns的延迟才能配对选择;

仿真结果:

(4)XDC文件配置

管脚设置:V11->out  J15->in[0]  L16->in[1]  M13->in[2]  R15->in[3]  V10->sel[1]  U11->sel[0];

 

 

 

(5)下板测试

in->0, sel->01

in->1, sel->01

 

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

YOLOKY

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

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

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

打赏作者

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

抵扣说明:

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

余额充值