1. 实验目的
(1)掌握用VerilogHDL 语言编写4选1多路选择器的方法
(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:文章来源:https://www.toymoban.com/news/detail-518173.html
文章来源地址https://www.toymoban.com/news/detail-518173.html
到了这里,关于数据选择器实验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!