FPGA:二选一选择器

1、需求

使用XILINX的XC7A35TFFG484-2开发板,完成二选一选择器的设计。

2、分析

二选一选择器如下所示:
在这里插入图片描述
观察可知有三个输入端,一个输出端,其逻辑原理为:当sel为高电平时,out=a,当sel为低电平时,out=b。

3、工程创建以及Verilog代码的编写

a)打开Vivado软件,创建一个新工厂,名为mux2_test
b)在setting中点击Add sources,接下来选择第二个:Add or create design sources。创建设计文件。再点击create file,如果之前已经写好可以直接导入。接下来一直点击OK,YES,Finish即可。
c)在左上的sources出多了一个mux2_test.v文件,点击打开,开始编写verilog代码。
在这里插入图片描述

module mux2_test(a,b,sel,out    //输入输出端口
);
input a;        // 端口类型定义
input b;
input sel;
output out;
assign out=(sel==1)?a:b;   // 三目运算符,sel为1,则out=a,否则out=b
endmodule

d)创建testbench文件
即写测试文件,可以理解为将我们的硬件放在一个测试桌上,然后要对齐进行测试输入。同上点击add source后选择第三项Add or create simulation sources,命名为mux2_test_tb。接下来在左侧sources打开对应的testbench文件后编写即可。

`timescale 1ns/1ps  //单位1ns,精度1ps
module mux2_test_tb();
// 例化,可理解为贴标签
reg a;
reg b;
reg sel;
wire out;   //这里相当于是对测试桌上的线声明类型
mux2_test mux2_test_inst0(.a(a),.b(b),.sel(sel),.out(out)
);
initial begin
a=0;b=0;sel=0;  //三输入八种情况,每次延迟200纳秒,主要是为了仿真的时候容易分辨 
#200;
a=0;b=0;sel=1;
#200;
a=0;b=1;sel=0;
#200;
a=0;b=1;sel=1;
#200;
a=1;b=0;sel=0;
#200;
a=1;b=0;sel=1;
#200;
a=1;b=1;sel=0;
#200;
a=1;b=1;sel=1;
#200;
$stop;   //让其自动停止,不过这里是1600纳秒,一般默认自动仿真到1000ns
end  
endmodule

e)按F11,即run synthesis,进行综合,编译后再运行Run lmplementation,最后点击Run Simulation,进行时序仿真。默认运行1000ns,点击运行图标可以让他继续运行。时序图如下所示:
在这里插入图片描述

可发现符合二选一多路器的逻辑。
f)查看RTL图
点击RTL,可生产对应的数字电路图,如下所示
在这里插入图片描述
g)引脚分配
根据提供的引脚分配表,如下所示
在这里插入图片描述在这里插入图片描述
将拨码开关SW2,SW1,SW0分配给sel,a,b,将led0分配给out
在这里插入图片描述
h)生成比特流文件,点击Generate Bitstream,生成后点击Open Hardware Manager
,打开硬件管理器,点击左上open target,打开开发板后点击Auto connect。再点击program device,即写入设备后即可在开发板上运行。如下所示
在这里插入图片描述

上拨b,即b为1,此时sel为0,out=b=1。
在这里插入图片描述
a同理

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/48340.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

十二、数组(2)

1.冒泡排序数组(升序) 冒泡排序:将一个整型数组排序(升序) 例: 10 9 8 7 6 5 4 3 2 1 9 10 8 7 6 …

第十四届蓝桥杯省赛C++C组C题【三国游戏】题解(AC)

解题思路 由于三种国家都有获胜的可能,所以我们需要分别枚举 X , Y , Z X,Y,Z X,Y,Z 获胜的情况。 设 X X X 获胜,那么对于第 i i i 个事件的贡献为 a [ i ] − ( b [ i ] c [ i ] ) a[i]-(b[i]c[i]) a[i]−(b[i]c[i]),根据贪心的策略…

【银河麒麟服务器操作系统】java进程oom现象分析及处理建议

了解银河麒麟操作系统更多全新产品,请点击访问麒麟软件产品专区:https://product.kylinos.cn 现象描述 某服务器系统升级内核至4.19.90-25.22.v2101版本后仍会触发oom导致java进程被kill。 现象分析 oom现象分析 系统messages日志分析,故…

数据编织 Data Fabric:解决“数据孤岛”的新思路

一个不争的事实是,企业内部数据孤岛的形成,根因在于业务发展的复杂性与技术迭代的快速性导致。具体而言,随着企业业务快速增长,如新生产线的引入或外部公司的并购,这些活动往往伴随着新系统上线与独立数据体系的融入&a…

【safari】react在safari浏览器中,遇到异步时间差的问题,导致状态没有及时更新到state,引起传参错误。如何解决

在safari浏览器中,可能会遇到异步时间差的问题,导致状态没有及时更新到state,引起传参错误。 PS:由于useState是一个普通的函数, 定义为() > void;因此此处不能用await/async替代setTimeout,只能用在返…

网络安全行业最大的敌人是自己

在危机四伏的数字丛林时代,网络安全行业需要跳出资本和市场的博弈陷阱,通过拯救自己来拯救所有人。当然,政府和资本也应该意识到这一点。 在当今这个数字化时代,网络安全的重要性与日俱增。然而,尽管政府和企业不断强调…

【vue+el-table】实现表尾合计行分两行显示,一行显示勾选项之和,一行显示合计,已实现,具体思路解析

效果图: 思路解析: 首先进行了el-table列表的组件封装,很多参数是传进来的。如果是普通的列表,相关参数直接定义就行 1、使用el-table的summary-method处理表尾行 (1)定义summaryIndex用于指定合计在哪一列…

vue学习笔记(十一)——开发心得(axios的封装、promise细节、vue-router开发中的使用)

1. axios的网络请求的封装 1.1 为什么要封装api? 代码分层,便于以后的修改,无需触碰逻辑页面 目标: 网络请求,不散落在各个逻辑页面里,封装起来方便以后修改 1.2 封装api步骤 ① 在项目 src 下新建目录 utlis &am…

VTD学习笔记(一)-启动vtd、基本界面和按钮

写在前面:真快啊,眨眼就毕业上班了,岗位也是做仿真,看来以后就是一直做仿真了,再见了定位~。公司使用的是vtd,看资料是一个很庞大的自动驾驶仿真软件,囊括了车辆动力学到传感器仿真,…

Python list comprehension (列表推导式 - 列表解析式 - 列表生成式)

Python list comprehension {列表推导式 - 列表解析式 - 列表生成式} 1. Python list comprehension (列表推导式 - 列表解析式 - 列表生成式)2. Example3. ExampleReferences Python 中的列表解析式并不是用来解决全新的问题,只是为解决已有问题提供新的语法。 列…

iPad型号数据解析:了解不同iPad型号的连接和扩展性能力

iPad是一款非常受欢迎的平板电脑,拥有多种型号和规格可供选择。在本篇文章中,我们将深入研究不同iPad型号的连接和扩展性能。数据源来自于挖数据平台,该平台提供了全面的iPad型号数据,共计1485个型号。 首先,让我们来…

【D3.js in Action 3 精译_020】2.6 用 D3 设置与修改元素样式 + 名人专访(Nadieh Bremer)+ 2.7 本章小结

当前内容所在位置 第一部分 D3.js 基础知识 第一章 D3.js 简介(已完结) 1.1 何为 D3.js?1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践(上)1.3 数据可视化最佳实践(下)1.4 本章小结 第二章…

怎样用Java程序与数据库建立联系?

首先我们要了解一下JDBC,一个为Java程序与关系型数据库交互提供便利的API(应用程序编程接口), 本期我们尝试用Java编程软件IDEA与MYSQL数据库建立联系。 首先我们在IDEA中穿件一个(SQL),然后导…

系统编程--Linux下文件其他操作

这里写目录标题 文件存储理论补充dentry、inode 文件其他操作stat函数作用函数原型代码(以获取文件大小为例)补充(获取文件类型) lstat函数作用函数原型代码补充(获取文件权限)总结 tipslink函数作用简介函…

畅玩游戏新选择 :游戏本 Windows10 64位 专业版!

对于喜欢游戏竞技的玩家而言,选择一款合适的操作系统对于提升游戏体验至关重要。为了满足这一需求,系统之家小编将带来高性能的游戏本专用Win10操作系统。这一版本系统不仅注重游戏的稳定性,还针对玩家在游戏中可能遇到的超时检测和恢复&…

收银系统源码-千呼新零售收银视频介绍

千呼新零售2.0系统是零售行业连锁店一体化收银系统,包括线下收银线上商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体,线上线下数据全部打通。 适用于商超、便利店、水果、生鲜、母婴、服装、零食、百货、宠物等连锁店使用。 详细介绍请…

JavaScript 模板字符串:让字符串拼接变得更优雅

在 JavaScript 开发中,字符串拼接是一个常见的需求。从简单的用户界面文本生成到复杂的动态数据格式化,字符串操作无处不在。传统的字符串拼接方法虽然功能强大,但往往显得冗长且难以阅读。为了解决这一问题,ES6(ECMAS…

240718_使用Labelme制作自己的图像分割数据集

240718_使用Labelme制作自己的图像分割数据集 从目标检测入门的朋友们可能更熟悉的是LabelImg,这里要注意做好区分,LabelImg和Labelme不是一个东西,如下经典图: (a)图像分类(目标检测&#xff…

Mysql深入讲解(索引、事务、锁机制)

一、MySQL索引 1、何为索引? MySQL中的索引是一种数据结构,用于加快对数据库表中数据的查询速度【查询速度提升】。它类似于书本目录,使得用户可以根据特定字段快速定位到所需的数据行,而无需扫描整个表。 2、索引分类 Hash索…

怎样对 PostgreSQL 中的慢查询进行分析和优化?

🍅关注博主🎗️ 带你畅游技术世界,不错过每一次成长机会!📚领书:PostgreSQL 入门到精通.pdf 文章目录 怎样对 PostgreSQL 中的慢查询进行分析和优化?一、理解慢查询的危害二、找出慢查询&#x…