FPGA——多路选择器实现按键控制LED灯的亮灭

news2024/9/23 7:27:20

文章目录

  • 前言
  • 一、多路选择器
  • 二、绘制模块框图及波形图
  • 三、Verilog HDL代码及测试代码
  • 四、创建工程
  • 五、仿真
  • 六、上板验证
    • 1、分配引脚
    • 2、烧录
  • 七、效果演示
  • 八、总结


前言

  • 软件:Quartus Prime Standard 18.0
  • 仿真软件:modelsim 10.5
  • 代码编写软件:VSCode
  • 波形绘制工具:Visio 2013
  • 硬件:小脚丫 Altera MAX10

期望效果:
我们希望通过一个按键对输入LED的信号进行选择,在当我们摁下key3时,即当key3为低信号时,LED选择Key2为LED的信号,反之则取key1的信号进行参考。


一、多路选择器

多路选择器是数据选择器的别称,在多路数据传输中,能够根据需要将其中任一路选择出来的电路,叫做数据选择器,也称多路选择器或多路开关。是一种简单的组合逻辑电路。

  • 组合逻辑:

组合逻辑实际是VerilogHDL设计中的一个重要组成部分。从电路本质上讲,组合逻辑电路的特点是输出信号只是当前时刻输入信号的函数,与其他时刻的输入状态无关,无存储电路,也没有反馈电路。

二、绘制模块框图及波形图

在工程开始时,新建一个项目文件,里面新建四个文件夹,分别为:
prj(工程文件)、rtl(.v文件)、sim(仿真测试文件)、doc(波形绘制文件)

  • 添加形状
    在这里插入图片描述
    在这里插入图片描述

  • 模块框图
    在这里插入图片描述

  • 波形图

在sel为0时,Out输出信号是in_2波形、反之为in_1波形。

在这里插入图片描述

三、Verilog HDL代码及测试代码

在rtl文件夹里创建一个mus2_1.v的文件,定义的模块名需要与文件名一致。此时双击打开VSCode进行代码编写。

module mus2_1(
    input wire  in_1,
    input wire in_2,
    input wire sel,//选通信号
    output reg out
);
always @(*)//组合逻辑进行阻塞赋值
    if(sel == 1'b1)
    out=in_1;
    else
    out =in_2;

endmodule

在sim文件夹里新建测试文件tb_mus2_1.v

`timescale 1ns/1ns //时间尺度
module tb_mus2_1();
reg in_1;
reg in_2;
reg sel;
wire out;
initial begin //初始化变量,上电后只执行一次
    in_1<=1'b0;
    in_2<=1'b0;
    sel <=1'b0;
end  
//设置随机波形图
always #10 in_1<={$random}%2;
always #10 in_2<={$random}%2;
always #10 sel<={$random}%2;


mus2_1   mus2_1_inst  ( //实例化模块
     .in_1(in_1),
     .in_2(in_2),
     .sel(sel),//选通信号
     .out(out)
);
endmodule

四、创建工程

  • 打开quartus,new一个工程

在这里插入图片描述

  • 点击next
    在这里插入图片描述

  • 选择工程路径,选择到前面我们创建的prj文件夹下。填写工程名,这里尽量选择与我们的.v文件一致的名字—mus2_1。
    在这里插入图片描述

  • 这里我们不选择模板,直接next。
    在这里插入图片描述

  • 文件我们后面再添加,先next。

在这里插入图片描述

  • 对板子进行选型,这里我使用的是Altera max10,如果你用的是别的板子需要到英特尔的官网下载对应quartus版本的器件库,即使同样是max 10,如果quartus的版本不一样,器件库也不一样。需要注意。
    在这里插入图片描述
  • 选择仿真软件及语言
    在这里插入图片描述
  • 检查配置是否正确,然后点击finish完成工程创建。
    在这里插入图片描述
  • 添加源文件和测试文件

在这里插入图片描述

  • 双击
    在这里插入图片描述

  • 选择文件进行添加
    在这里插入图片描述

  • 将测试文件添加到仿真中

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在上图的1下,选择测试文件,在2处填写测试文件名。

五、仿真

点击下方自动打开仿真软件

在这里插入图片描述

  • 仿真波形图

在这里插入图片描述

解释:在标线所处位置sel为1时,输出电平应为in_1的信号为0,此时out也为0。仿真成功!如何进行仿真的具体步骤这里不进行介绍。

六、上板验证

1、分配引脚

根据厂商提供的引脚分配图进行分配

在这里插入图片描述

  • 设置引脚
    在这里插入图片描述

  • 依次填写对应的引脚
    在这里插入图片描述

这里key1控制in_1信号,key2控制in_2信号,key3作为选通信号。初始时,三个按键均未摁下,key3为高电平,输出信号为key1,此时摁下key1时,key1处低电平灯亮。反之,摁下key3,选通信号选择的是key2信号,此时摁下key2,灯亮。总结,就是摁下key1灯亮,或者摁下key2+key3灯亮。

2、烧录

在这里插入图片描述

  • 选择USB

在这里插入图片描述

这里如果没有检测到USB-Blaster,有两种情况一是你的数据线不支持数据的传输、二是你驱动没有更新,搜一下进行更新即可识别。

  • 点击添加文件,在prj文件夹下寻找outputfiles文件夹下的sof文件
    在这里插入图片描述
  • 点击start开始烧录在,右边是进度条
    在这里插入图片描述

七、效果演示

keyofLED


八、总结

这是第一次实物操作fpga板子,感觉很棒,总体来说这次的操作还是比较简单,但是通过自己画模块框图及波形图,对后面的仿真及代码的理解具有很强的理解性上的帮助!通过这次实验,应该算是入坑了吧,哈哈!

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

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

相关文章

【虹科新品】 HK-MR430330绝对式光纤编码器介绍合集(下)

HK-MR430系列ZapFREE光纤位置传感器是一款外形小巧、具有13位单圈分辨率的旋转位置传感器。MR430设计新颖&#xff0c;开发了新的应用和OEM产品功能&#xff0c;这在以前的电子传感器是无法实现的。该传感器100%无源&#xff0c;不受EMI、RFI、微波和磁场的影响。创新型全绝缘设…

我参加NVIDIA Sky Hackathon 后端修改

文件架构 前面两个分别是执行语音识别和图片识别的代码templates 存放的是网页的模板&#xff0c; 前端将文件写在这里即可uploads 存放的是上传至后台的文件server.ipynb 用于启动 flash 服务器app.py 内是用 flash 写的 Python 后端install_tools.sh 是用于安装相关工具的 sh…

(十四)Spring之回顾代理模式

文章目录回顾代理模式动态代理常用技术CGLIB动态代理技术上一篇&#xff1a;&#xff08;十三&#xff09;Spring之JdbcTemplate 回顾代理模式 参考&#xff1a;代理模式Proxy Pattern 不用JDK的动态代理&#xff0c;手写JDK动态代理 动态代理常用技术 在程序运行阶段&…

CentOS 7 手动安装OpenStack

官网文档 因为之前已经在 Ubuntu 20.04 下完成了 Ubuntu 20.04 手动安装OpenStack &#xff0c;最后&#xff0c;想要学习 OVN 的时候&#xff0c;发现 ubuntu 上的 OVN 安装很复杂&#xff0c;没有 TripleO/RDO based deployments &#xff0c;所以&#xff0c;又在 CentOS 7…

项目开源!基于PaddleDetection打造实时人体姿态检测的多关节控制皮影机器人

本文已在【飞桨PaddlePaddle】公众号平台发布&#xff0c;详情请戳链接&#xff1a;项目开源&#xff01;基于PaddleDetection打造实时人体姿态检测的多关节控制皮影机器人 皮影戏是一种以兽皮或纸板做成的人物剪影以表演故事的民间戏剧&#xff0c;皮影一般由头、躯干&#x…

2003-2019年各省市场分割指数全步骤数据+最终结果

2003-2019年市场分割指数 1、时间&#xff1a;2003-2019年 2、数据包含&#xff1a;31各省份市场分割指数全步骤数据和最终结果 3、具体内容&#xff1a;市场分割指数差分形式相对价格、市场分割指数去均值、市场分割指数方差、市场分割指数最终结果。 4、指标说明&#xf…

vue3 框架学习概念笔记

文章目录前情提要框架设计概览命令式声明式小结虚拟dom性能运行时和编译时框架设计核心要素声明式描述UI渲染器组件的本质vue.js模板响应式系统概念完善的响应式系统响应式系统的调度计算属性Computedwatch 原理竞态问题非原始值的响应式方案javaScript 对象原始值的响应式方案…

毕业后河北种水稻 国稻种芯·中国水稻节:安徽姑娘承德务农

毕业后河北种水稻 国稻种芯中国水稻节&#xff1a;安徽姑娘承德务农 (新华每日电讯记者刘金海、方欣、牟宇) 新闻中国采编网 中国新闻采编网 谋定研究中国智库网 中国农民丰收节国际贸易促进会 国稻种芯中国水稻节 中国三农智库网-功能性农业农业大健康大会报道&#xff1a;整…

【Linux】内存查看vmstat命令(虚拟内存统计)

vmstat命令&#xff1a;虚拟内存统计 CPU使用率内存试用虚拟内存交换情况IO读写情况 process r&#xff1a;运行和等待CPU时间片的进程数 超过cpu个数&#xff0c; 出现CPU瓶颈 长时间大于1&#xff0c;CPU不足&#xff0c;需要增加CPU b&#xff1a;正在等待资源的进程数&…

玩转MySQL:定位排查解决突发Bug

引言 前面MySQL优化、调化两文中&#xff0c;聊到了关于数据库性能优化的话题&#xff0c;而本文则再来聊一聊关于MySQL线上排查方面的话题。线上排查、性能优化等内容是面试过程中的“常客”&#xff0c;而对于线上遇到的“疑难杂症”&#xff0c;需要通过理性的思维去分析问…

Java岗位必备技能SpringBoot的面试题集锦

当下SpringBoot框架真的很火&#xff0c;大多数企业把它作为基础技能&#xff0c;考察求职者的能力。如下截图&#xff0c;是我从Boss直聘中找到的&#xff0c;要求SpringBoot是必备技能。 所以非常有必要为了面试&#xff0c;好好归纳下SpringBoot常被提起来的问题。 题目大纲…

Tesseract .Net SDK C# OCR 2022.1

Tesseract .Net SDK C# OCR 库 #将扫描的 PDF 转换为可搜索的文档 #快速准确的基于神经网络的引擎 #纠正低质量扫描 # 120 多种语言 # .Net 2.0, .Net 5, 标准, 核心 Tesseract OCR - industry-fastest .Net OCR library 4 行代码&#xff0c;仅此而已 var api OcrApi.Creat…

[附源码]java毕业设计疫情环境下的酒店管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

不知道什么的复习题

P4408 [NOI2003] 逃学的小孩&#xff0c;一眼就看出要化简题面&#xff1a;不就是找三个点使得ABBC最大嘛&#xff0c;不妨想起直径的性质&#xff0c;最长&#xff0c;而且其他点到它的距离最长。那么直接拿直径来做就行。推导出结论为ansmax(min(dis[A][k],dis[B][k])dis[A][…

CSS3------CSS选择器

界面中的“超文本“本质上就是通过一个一个矩形盒子包起来&#xff0c;然后进行排版组合&#xff0c;那么接下来要详细研究这个标签盒子的细节结构&#xff0c;以帮助学习如何使用它&#xff0c;但是在开始研究它之前&#xff0c;我们先来了解一个概念&#xff0c;选择器的概念…

BN、CBN、CmBN 的对比与总结

BN、CBN、CmBN 的对比与总结 最近看到了关于 Yolo 系列 trick 的总结文章 【Make YOLO Great Again】YOLOv1-v7全系列大解析&#xff08;Tricks篇&#xff09;&#xff0c;其中提到了 YoloV4 中使用了 CmBN&#xff0c;这是对 CBN 的改进&#xff0c;可以较好的适应小 batch 的…

电容笔值不值得买?电容笔十大品牌排行

要想给我们的ipad配置一款电容笔&#xff0c;如果感觉苹果原装的电容笔价格远远超过预算。这时候平替电容笔是个非常值得入手的选择。试想一下购买一款苹果原装的电容笔的资金都够买整整四款平替电容笔了&#xff0c;平替电容笔价格便宜且功能跟苹果的电容笔相差无几。下面我来…

【设计模式】 - 结构型模式 - 迭代器模式

目录标题前言迭代器模式概述结构实现优缺点JDK源码解析前言 行为型模式用于描述程序在运行时复杂的流程控制&#xff0c;即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务&#xff0c;它涉及算法与对象间职责的分配。 行为型模式分为类行为模式和对象…

ai绘画有哪些软件,盘点三款免费且超级好用的AI绘画工具

Ai绘画有哪些软件&#xff1f;不但可以免费使用&#xff0c;而且生成的画作精美&#xff0c;而且生成的图片速度还要很快&#xff1f; 不用急&#xff0c;今天小编给大家推荐的这三款ai绘画工具完全满足了上述条件&#xff01; 第一款&#xff0c;重磅级产品&#xff0c;数画…

内存 地址转换、分段、空闲空间管理

目录 1. 地址转换 1.1 动态重定位 1.1.1 基址寄存器&#xff08;虚拟地址 -> 物理地址) 1.1.2 界限寄存器&#xff08;提供访问保护&#xff09; 1.2 操作系统的工作 2. 分段 2.1 分段&#xff1a;泛化的基址/界限 2.2 引用哪个段 2.3 代码和堆的地址转换举例 2.4…