第一个FPGA小项目:基于BASYS3的超声波一键测距仪

目录

前言

一、项目需求

二、器件清单

三、板卡外部接线图

四、演示视频

五、具体模块设计

六、视频学习资料

总结


前言

这是一个项目笔记,是我第一次用FPGA系统的做这个项目的设计。在B站特权同学《Verilog边码边学》“超声波测距设计”那四堂课的基础上,我加入了均值滤波、数码管显示、按键触发等功能,从而实现了超声波的一键测距,在本篇结尾处我会附上特权同学的视频教学地址,再次感谢特权老师的课程!

一、项目需求

设计一个一键测距的装置,使用Xilinx FPGA实现,该系统硬件由FPGA、超声波测距模块、4位数码管模块、按键以及蜂鸣器构成。

系统工作流程如下:在超声波探头n厘米处放置好物块,按下板载按键后超声波测距模块工作,测得的距离在数码管模块上以cm为单位显示,等待数据稳定后超声波模块停止工作,并且让蜂鸣器“滴滴滴”响3声,此时测得探头离物块的距离数据N,拿掉物块后数码管数据不会变化,直到再次摁下按键后超声波模块启动,数据才会继续变化。

关于测量指标,因为超声波测距模块有+/-3mm的测量误差,所以测量数据N在实际数据n的+/-3mm之内都算达到指标。

二、器件清单

1.BASYS3开发板

板载的资源很丰富,在本项目中会用到4位数码管模块和按键这两个板载外设。

2.超声波测距模块

3.3V有源蜂鸣器

特别注意,是3V而不是5V蜂鸣器!因为我买的是5V,结果上电后工作时蜂鸣声太小了(大哭),因为板子输出的高电平为3.3<5V,导致电压不够。

三、板卡外部接线图

板卡外部的模块有超声波测距和蜂鸣器模块,两个模块通过板卡的PMOD2*6排母B进行连接,如下图所示,板卡内部管脚的分配接线请看第五节具体模块设计中的第四篇FPGA一键测距仪之终篇。

 PMODB排母位于BASYS3板卡的右上部分 ,我为了测距模块固定的方便,使用洞洞板焊接固定两个模块,并且把模块各自的引脚整合成方便插接到板卡上的排针引脚,插接方式如下图所示。

四、演示视频

因为该项目涉及到的内容较多,所以在讲实现原理、电路、程序与仿真之前,我们先上项目最终的演示视频。

我们看到这个系统受按键触发控制,可以正常运行,并且能把距离数据显示在数码管上(不足的一点是蜂鸣器的声音比较小),虽然测量精度不是很高但视频中的4次测量误差都在+/-3mm之内,所以总体来说基本符合测量指标。

五、具体模块设计

该系统总共由5个模块构成,总的电路框架原理图如下图所示。

按键模块负责产生按键摁下的触发信号;控制闸模块接收到按键信号后将“闸”打开,即使能超声波测距模块让其工作;超声波模块负责测距功能,数码管模块负责将测出来的数据进行译码显示;当测量数据趋于稳定后超声波模块会输出一个脉冲,这个脉冲会回馈到控制闸模块,此时控制闸模块将“闸”关闭,即停止测距模块的工作,直到被按键信号触发就再次启动测距;数据稳定后超声波模块输出的脉冲还会被传到蜂鸣器模块中进行处理,使蜂鸣器发出“滴滴滴”三声,以表示一次测距结束。

对应的verilog文件结构如下图所示。

下面我会分篇章对该项目中五个模块的讲解。

一、FPGA一键测距仪之超声波模块篇

二、FPGA一键测距仪之数码管篇

三、FPGA一键测距仪之[按键+控制+蜂鸣器]篇

四、FPGA一键测距仪之终篇

六、视频学习资料

特权同学《Verilog边码边学》超声波测距设计

总结

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
现在小孩子玩的最多的玩具就是手机了,不禁感慨,我们小时候都是咋过来的,有个游戏机,可以玩个贪吃蛇、俄罗斯方块就不错了。可以自己设计个贪吃蛇游戏玩玩,重温童年的经典,也让现在小孩子知道,珍惜当下美好的生活。 功能实现说明: 此游戏较为简单,没有设置多余障碍物,只设置了四周的墙壁,贪食蛇所吃的苹果随机刷新,当蛇装上墙壁或者自己的身体,游戏结束。 此游戏使用五个按键,利用Basys3上的按钮,四个方向键,一个重新开始游戏按钮,一个操作开关。使用7位数码管进行计分,每吃到一个苹果分数+1。使用VGA显示游戏界面。 DIY动手指南: Step1:材料准备 硬件: Basys3开发板 VGA连接线及VGA显示器一台 软件平台:Vivado2016.4 Step2:系统框架 系统主要由6部分组成,分别是按键输入模块、控制模块、数据路径模块、随机生成 模块、VGA显示模块和数码管显示模块。 Step3:程序设计 上图是本程序的RTL级视图。 下面我们对于各个模块进行分析。 1.键盘扫描 我们一共设置了五个按键,分别执行up,down,left,right,restart这五个功能。 以up_key_press为例,介绍消抖的算法。 在每个时钟高电平时并行执行以下两条语句 up_key_press<=0; up_key_last<=0; 当有按键按下时,每100ms(cnt=5_0000) last=up,last输出比up滞后一个周期,若up_key_last==0&&up==1,则说明按键按下,press输出置1。 2.控制模块 当打开开始开关并按下任意一个方向键时,游戏开始,当游戏结束时闪烁5下,重新开始游戏。 3.数据路径模块 cube_x,cube_y表示一整条蛇身体各节的格坐标。is_exist有16位,即蛇体最长为16*1格,每一位对应一个格,1为该格显示,0则不显示(图中虚框)。每吃下一个苹果蛇长度增加1,相应exist位置变为1。 蛇每次移动,对应的cube[x] = cube[x+1],即后一位的身子会移动到前一位的位置,蛇头根据按下的按钮来判断是撞到了墙,还是撞到了身子,还是移动到了下一个位置。 当蛇头和苹果重合时,生成一个增加身长的信号,并在计数器上+1。 4.随机生成模块 采用伪随机数的产生方法,比较笨拙。 每个时钟周期random_num都在变,而我们吃下苹果的时刻却因走法、按键的时间等有所不同,所以不同时刻吃下苹果后下一个苹果出现的地方近似随机~ 5.VGA显示模块 使用640*480分辨率,需要分频为25MHz的时钟信号。 6.数码管显示模块 当有增长身长信号产生时,分数也对应增加,数码管动态扫描显示分数。 Step4:演示
Basys3介绍: Digilent 的 Basys3 是一款采用 Xilinx Artix 7 FPGA 架构的入门级 FPGA 板,专门用于 Vivado 设计套件。 Basys3 是广受欢迎的 Basys 入门级 FPGA 板系列的最新成员。 Basys3 具有所有 Basys 板的标准特性:全套现成的硬件、大量板载 I/O 设备、所有必要的 FPGA 支持电路和免费版开发工具,且全部以学生价格提供。 Basys3原理图截图: Digilent 现在推出 Basys3,通过提升特性集为学生们带来更好的专业级工程代表产品。 这些改进包括: 更多 I/O: 双用户接口开关、双板载输出数量、升级了外部端口(从 6 引脚、单排 Pmod 到 12 引脚、双排 Pmod)和 USB UART 桥接器。 现代编程的挑战: 由于从 Spartan 3E 系列到 Artix 7 类器件的迁移,Basys3 增加了大量硬件功能。 这款新型 Artix FPGA 器件逻辑单元数提升了 15 倍(从 2,160 到 33,280),从倍增器升级到真正的 DSP 切片。 该器件的 RAM 还增加了 26 倍以上。 业内首款 SOC 加强型设计套件: 对 Basys3 的最大变化就是升级到 Xilinx Vivado 设计套件。 Vivado 设计套件是全球专业工程师使用的最先进设计工具链。 Vivado 凭借扩充的功能改进了 ISE 的用户体验,如与 Vivado IP 积分器的基于块的 IP 的集成,将开发时间减少到 1/10 的 Vivado 高级合成(仅可用于 Vivado 系统版),以及带 DSP 系统发生器的基于模型的 DSP 设计集成。 特性 5200 个切片中有 33,280 的逻辑单元(每个切片包含四个 6 输入 LUT 和 8 个触发器) 1,800 Kb 的快速块 RAM 5 个时钟管理模块,每个都提供锁相环 (PLL) 90 个 DSP 切片 超过 450 MHz 的内部时钟速度 片载模数转换器 (XADC) 16 个用户开关 16 个用户 LED 5 个用户按钮 4 位 7 段显示 4 个 Pmod 连接器3 个标准 12 引脚 Pmod 1 个双用途 XADC 信号/标准 Pmod 12 位 VGA 输出 USB UART 桥接器 串行闪存 用于 FPGA 编程和通信的 Digilent USB JTAG 端口 用于鼠标、键盘和记忆棒的 USB HID 主机 实物购买链接:https://www.eeboard.com/shop/?c=products&a=index&_k...

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值