全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 可编程逻辑 >

FPGA学习系列:二选一数据选择器的设计

时间:2018-05-31 11:40

人气:

作者:admin

标签:

导读:前两篇给大家介绍了软件的安装、破解以及工程的建立等基本的软件操作,这一篇就通过简单的二选一的数据选择器的设计来实际操作一下,要记住,多动手才是王道。 设计背景: 数据...

前两篇给大家介绍了软件的安装、破解以及工程的建立等基本的软件操作,这一篇就通过简单的二选一的数据选择器的设计来实际操作一下,要记住,多动手才是王道。

设计背景:

数据选择器在数字电路的设计中非常重要,在FPGA内部的逻辑实现中都是通过数据选择器实现的,数据选择器的应用使我们的代码和设计更加人性化,多元化。

设计原理:

本次的设计主要是一个简单的二选一数据选择器,我们的设计主要有4个端口,数据输入data_1,data_2,数据选择位select,输出data_out

设计架构图:

image.png

设计代码:

模块

0modulesel_1(data_1,data_2,select,data_out);

1

2 inputdata_1,data_2; //数据输入

3 inputselect; //选择位

4

5 outputregdata_out; //数据的输出

6

7 always@(*)

8 begin

9 if(select) //如果选择位为高,输出data_1

10 data_out =data_1;

11 else //如果选择位为低,输出data_2

12 data_out =data_2;

13 end

14

15endmodule

测试模块

0`timescale1ns/1ps

1

2modulesel_1_tb;

3

4 regdata_1,data_2; //定义模块的输入输出

5 regselect;

6

7 wiredata_out;

8

9 initialbegin

10 data_1 =0;

11 data_2 =0;

12 select =0;

13

14 #200data_1 =1;data_2 =0;//延迟200ns给输入赋值

15 #100select =1; //延迟200ns后给选择位赋值

16 #100select =0; //延迟200ns后给选择位赋值

17

18 #200data_1 =0;data_2 =1;

19 #100select =0;

20 #100select =1;

21

22 #300$stop;

23 end

24

25 sel_1 sel_1_dut( //模块的例化,和端口的连接

26 .data_1(data_1),

27 .data_2(data_2),

28 .select(select),

29 .data_out(data_out)

30 );

31

32endmodule

仿真:

image.png

在仿真中我们可以真实的看到,当数据data_1为1,data_2位0的时候,当选择位select为0的时候,输出data_out的值为0也就是data_2的值,当select为1的时候,data_out的值位1,也就是data_1的值,后面的仿真也一样我们可以清楚的看到。

以上就是二选一数据选择器的设计,大家可以自己动手在quartus II 13.1 去操作一下,体验一下。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信