基于Basys3和Nexys A7创客项目参考
基于Basys3/Nexys4 DDR项目资料
注:Nexys4 DDR即Nexys A7-100T;多数情况下,B3和N4的项目可以互相移植。
编号 |
产品平台 |
项目名称 |
备注 |
1 |
Basys3 |
RFID自动驾驶小车 |
|
2 |
Basys3 |
基于Basys 3的自制抓娃娃机 |
|
3 |
Basys3 |
如何使用FPGA控制步进电机 |
|
4 |
Basys3 |
远程无线电子钢琴(基于Basys 3 ) |
|
5 |
Basys3 |
智能象棋机器人 |
|
6 |
Basys3 |
用FPGA和十六键键盘制作的电子密码锁 |
|
7 |
Basys3 |
基于Basys 3的自动视力测试仪 |
|
8 |
Basys3/Nexys 4 DDR |
经典游戏俄罗斯方块的FPGA实现 |
|
9 |
Basys3 |
机器人辅助康复系统 |
|
10 |
Basys3 |
基于FPGA的等精度频率计 |
|
11 |
Basys3 |
基于FPGA 的基础生理参数测量系统 |
|
12 |
Basys3 |
基于FPGA(Basys3)的多功能数字示波器 |
|
13 |
Basys3/Nexys 4 DDR |
基于Basys3的贪吃蛇小游戏 |
|
14 |
Basys3 |
基于Basys3的2048小游戏 |
|
15 |
Basys3 |
节奏大师 — 基于FPGA的多功能音乐系统 |
|
16 |
Nexys 4 DDR |
Bio-feedback-Gaming-System生理反馈游戏 |
|
17 |
Nexys 4 DDR |
Nexys 4 DDR Music Looper组合音响 |
|
18 |
Nexys 4 DDR |
在Nexys4DDR板上构建完整计算机 |
|
19 |
Nexys 4 DDR |
Game of Balance迷宫导航游戏 |
加速度计 |
20 |
Nexys 4 DDR |
使用两个相机的立体深度检测 |
OV7670 |
21 |
Nexys 4 DDR |
基于FPGA的智能循迹避障小车 |
|
22 |
Nexys 4 DDR |
Nexys 4 DDR高级I / O演示 |
内置自检 |
1. RFID自动驾驶小车
这个作品项目是一台自动驾驶小车(名称为:漫游者),它能够通过无线射频识别(RFID)在规划好的路线上实现自动驾驶。作者是来自罗马尼亚Universitatea Politehnica Timişoara的两名本科生。他们认为这个作品的概念是独一无二的,很难看到与之相似的其它作品。
这个作品的制作目的是探索一项技术解决方案,可以让今后每一辆汽车通过物联网(IOT)实现自动驾驶功能。在作者眼里,这可能是有史以来最高效最安全的自动驾驶技术。目前这个项目只是打造了一个雏形,他们相信随着技术的深入与普及,能够大大帮助降低当今的车祸发生率及由此所造成的人员事故伤害。
在当前阶段,作者正在寻求每一位创客的帮助来推广他们的技术概念并使之更加完善并最终使这一技术能够投入实际应用。故在此他们选择分享如何DIY制作这样一台带有自动导航系统的小车,并希望以此方式来收集反馈以帮助改善技术。
2. 基于Basys 3的自制抓娃娃机
每个妹子的豆蔻年华都会有一段叫做“抓娃娃机”的美好回忆。而对于汉子们而言,陪女盆友在游乐场玩娃娃机则是美好恋爱故事中的标配桥段(以防创伤,单身汪请自动绕过上述这段)。当然,这些回忆中肯定少不了妹子指明相中了有机玻璃箱中的某个娃娃,汉子丢下诸多硬币,撩起袖管,却无奈于一次次抓取失败后的一脸懵逼…
在今年的NIWeek上,就出现了这样一款把妹神器 — 「用FPGA开发板自制的抓娃娃机」。无论你的目的是出于之后可以在寝室暗自猛练抓娃娃技术然后带着妹子去汤姆熊炫耀,还是直接将之作为礼物送给你的女神(单身汪们可以看回来了),相信此技(计)一出,妥妥的工科男界的一股清流,帮助你迎来女神崇拜的目光。点击页面右上角“DIY动手指南”,手把手跟着制作一台属于自己的抓娃娃机吧!
3. 如何使用FPGA控制步进电机
由于FPGA开发板的输出引脚往往无法为步进电机提供所需的足够电流,在实际的控制过程中我们需要借助PmodSTEP步进电机传感模块,通过它来实现功率放大以对步进电机进行控制。
这一DIY动手指南将带你了解使用FPGA控制步进电机的一些基础知识,并手把手指导你如何使用FPGA开发板(在这一项目中我们使用的是DIGILENT Basys3)和DIGILENT PmodSTEP步进电机传感模块来实现对步进电机的控制。在DIY动手指南中同时分享了控制步进电机的Vivado项目代码,希望能给大家带来帮助。
4. 远程无线电子钢琴(基于Basys 3 FPGA开发板)
这一作品用多块Basys 3 FPGA开发板实现无线连接及音频信号的传输。其中,在一块Basys3上实现了电子钢琴:以USB键盘上的按键对应钢琴黑白键,在FPGA中将按键信号编码为对应的钢琴音调,然后通过PmodAMP2音频放大器接喇叭发出钢琴按键的声音。同时,实现了RF的发送端,将对应的钢琴按键数据通过PmodRF2发射出去。在另一块Basys3上实现了RF的接收端,通过PmodRF2接收第一块Basys3发送的钢琴按键信息,并通过PmodAMP2接喇叭发声,从而实现了无线电子钢琴。也可以设置多组发送端/接收端,形成一个网络。
5. 智能象棋机器人
本项目基于DIGILENT Basys3 FPGA开发板研发的中国象棋机器人可实现机器人与人之间直接在棋盘上进行中国象棋的对弈,比通过电脑显示器进行对弈更有临场感。还能通过互联网进行远程连接,让对手双方通过互联网在棋盘上进行远程“面对面”对弈。基于FPGA的三维运动控制系统,使现场对弈的感觉更加有趣。图像识别以及算法处理,可以准确地完成一场真正的象棋对决。
机器博弈是博弈游戏与计算机技术的结合,是人工智能领域里一个重要研究领域,在国际上已经开展了半个多世纪。象棋是从两军对阵中抽象出来的一种智力游戏,因此它是博弈的一个标准问题。下棋的双方无时不在调动自己的一切智能,充分发挥逻辑思维、形象思维和灵感思维的能力。所以,在人工智能领域始终将棋类的机器博弈作为最具挑战性的研究方向之一。
本设计旨于将博弈机器人小型化,智能化,使其不仅是陈列在博物馆的庞然大物,而是能够真正能够为家庭提供娱乐的休闲用品。同时提出了为博弈机器人搭建专门的网络云服务与对战平台的解决方案,可用于中国象棋教学、远程比赛等。
6. 用FPGA和十六键键盘制作的电子密码锁
Digilent Cmod A7是一款基于Xilinx Artix-7 FPGA的最小系统原型化开发板,具有48引脚DIP,并可直连面包板。该产品的大小仅有0.7” x 2.75”,适用于基于Xilinx Vivado开发软件的各类数字逻辑电路以及MicroBlaze嵌入式软核处理设计。
在这一动手项目中,我们将使用Cmod A7作为开发板,将PmodKYPD 16键键盘插入到Cmod的接口中,完成一个密码锁的设计。同时,本项目还有Basys3的版本,增加了利用Basys3自带的数码管显示输入的功能。此功能也可通过Cmod引脚外接到数码管上实现。
7. 基于Basys 3的自动视力测试仪
这一项目是【DIGILENT中文社区极客DIY限时挑战 — 2016年10月挑战任务】的挑战成功作品。创作者使用Basys 3开发板,在为期三周的时间内制作完成了一个自动视力测试仪,并实现了以下功能:
1、随机生成不同方向视力测试的符号“E”,并在显示器上显示。四个方向的概率应相同。
2、拨动Basys3板上的SW15开关开始测试。测试者通过Basys3板上的四个方向按键选择看到的字符方向,然后按下中间按键表示确认。若三次判断正确两次及以上,则字号变小,进行下一轮测试;否则测试结束,通过VGA在屏幕上提示测试结束,并显示视力测试结果(完全按照标准视力对照表设计)。
3、测试过程中,数码管显示测试的等级、每轮已完成的次数,以提醒测试者测试进程。
4、完成一组测试后,测试者可拨动Basys3板上的SW15开关重设,进行另一只眼睛的视力测试。
5、附加功能:完成蓝牙控制模式,提高测试等级。通过开关SW0切换有线和蓝牙两种模式。通过安卓蓝牙串口调试助手,实现方向按键和确认按键的远程控制。
8. 经典游戏俄罗斯方块的FPGA实现
FPGA的运算能力足以实现各种我们童年回忆里的小游戏。此项目是基于创客mingmingruyue99分享的在Zedboard平台上完成的俄罗斯方块游戏设计。我们将这个项目移植到了更小Basys3入门级FPGA板卡上,使用Basys3 FPGA作为主控平台,通过VGA接口显示俄罗斯方块游戏界面,并通过Basys3板卡上的按键操作游戏。
9. 机器人辅助康复系统
随着近年来人口老龄化速度的加快以及各种疾病导致的运动功能障碍患者的增多,助老助残成为了一个社会所关注的问题。本项目旨在设计基于可穿戴惯性动捕技术的机器人辅助康复训练系统来缓解这一问题。
小组成员凭借该作品在2016第三届江苏省虚拟仪器竞赛中荣获一等奖,在东南大学举办的2016年江苏省FPGA设计邀请赛中荣获二等奖。
10. 基于FPGA的等精度频率计
由于直接测量法无法同时兼顾高频信号和低频信号的测量,所以设计相对麻烦且误差相对较大,因此产生了等精度测量法,该法具有在测量量程内误差率一致并且可控、精度等优点,被广泛采用。
本设计主要采用以Digilent Basys3为核心的FPGA,辅以模拟电路+STM32的架构。模拟电路完成了信号缩放、信号整形与数模转换等;FPGA主要完成了数据采集与预处理,STM32则进一步处理并显示;编程采用Verilog语言,1Hz-65MHz左右的信号频率均能被检测,精度只差十万分之一。
等精度测频法是将标准频率信号与待测信号输入到两个计数器进行同步计数。测量时单片机先预置闸门时间T,当闸门开启时,等待被测信号触发沿到来,计数器开始计数。预置闸门时间结束时,计数器并不立即停止而是等被测信号下一个同相位触发沿到来才关闭同步门并停止计数。可见实际闸门时间是被测信号周期的整数倍,即与被测信号同步。本项目主要包括以下模块:
1)模拟电路模块
当信号幅度小于50mVrms时,信号太小,需要经过放大器模块,此后,如果测量信号频率,则放大器输出信号接到比较器模块。当信号幅度大于400mVrms时,对于测量频率来说,信号太大,需要经过衰减器模块,此后,如果测量信号频率,则衰减器输出信号接到比较器模块。在50mVrms~400mVrms范围,直接接入比较器输入即可。
2)FPGA模块
数字信号进入FPGA,采集并测量相关参数。比较器的两路输出信号分别与频率测量模块、时间间隔测量模块、占空比测量模块挂钩,ADC的数据及拨码开关状态与波形数据的采样和存储直接相关。这些数据最后都由与STM32数据传输这一模块交给单片机处理。
3)显示模块
单片机在上电初始化完成后,会根据当前的模块,不断从FPGA获取相关数据并显示结果。在一轮显示完成后,会根据模式进行下一轮数据读取与显示。
11.
随着生活水平的不断提升以及城市老龄化比例的提高,人们越来越重视个人的身体健康和医疗保健,近年来国家医改的不断推进,医疗检测设备的家庭化逐渐成为了趋势。然而,目前市面上存在的医疗检测设备价格昂贵,并且体积庞大、不便携带,不利于大众化、家庭化的推广。
本设计由传感器系统、LCD显示、温度测量电路和供电系统等组成,整个系统的控制采用以Xilinx Basys3为核心的FPGA,编程采用基于Vivado平台的 Verilog 语言。从而实现了集实用多功能于一体的便携式电子医生设计方案。所实现的功能包括:
1)体温测量:
利用Digilent Basys3开发板与DS18B20温度传感器和内部XADC转换器即可实现。温度模块通过单总线串口方式与核心处理器进行数据通讯,将一个时钟周期内所采集的温度信息传递给核心处理器,由核心处理器进行数据解析。
2)脉搏测量:
选用 Pulse sensor脉搏传感器,此传感器为光电反射式模拟传感器。将其佩带于手指或耳垂等处,通过导线连接,可将采集到的模拟信号传输给控制板,来转换为数字信号。
以上功能的结果均可在功能按键的控制下由LCD显示器直观的显示,实现即时数据采集和显示,预期整个系统最终产品实现操作简单,功能强大实用,人机界面友好。
本设计拥有开放性设计理念,具有极强的可扩展性,基于Xilinx Basys3开发板可实现多种基础生理参数的测量。如后续可添加血压测量、血糖检测、语音播报等多种模块,作为家庭化的医疗检测设备,拥有广阔的市场空间。
12. 基于FPGA(Basys3)的多功能数字示波器
这一项目作品是通过Basys3 FPGA平台设计并制作的一台多功能的数字示波器,实现了频率测量,幅度测量,波形显示,波形存储,频谱分析(FFT)等功能。
数字示波器由前端整形电路,FPGA信号处理单元,VGA接口显示单元组成,采用VGA显示器作为显示单元可以有效的增大显示面积(1280*1024分辨率),显示更多的波形细节和数据,提高平台可拓展性(例如接入投影仪方便教学演示)。并在此基础上拓展一些实用的功能:如测量数据上传共享等功能,提高平台的可用性。
在移动应用场景我们拓展了蓝牙技术和安卓客户端,可以实现在手机端和PC端显示测量数据和波形。系统在模拟前端采用了高带宽的调理电路来提高示波器的模拟带宽,同时在信号处理部分采用了等效采样等技术,来提高系统的采样速率和频带范围。最终实现实时采样速率50MSa/s,等效采样速率300MSa/s。
作品获得了2016江苏省FPGA应用系统设计邀请赛二等奖。关于作品的详细介绍,请点击“DIY动手指南”。
13. 基于Basys3的贪吃蛇小游戏
此游戏较为简单,没有设置多余障碍物,只设置了四周的墙壁,贪食蛇所吃的苹果随机刷新,当蛇装上墙壁或者自己的身体,游戏结束。游戏中使用了五个按键,利用Basys3上的按钮,四个方向键,一个重新开始游戏按钮,一个操作开关。使用7位数码管进行计分,每吃到一个苹果分数+1。使用VGA显示游戏界面。
基于Nexys4 DDR的
https://github.com/yusanshi/Greedy_Snake_Verilog
14. 基于Basys3的2048小游戏
游戏功能:
游戏界面由4×4的16个方格组成,每个方格中可以存放一个数字。玩家通过操纵Basys3开发板的上下左右四个方向键和中央的reset键,控制方格中的数字移动。界面由VGA和Pmod接口oled两种方式显示。游戏成功时显示笑脸,失败时显示骷髅。
游戏过程中,玩家每按动一次方向键,所有数字按照这个方向移动一次,该方向上相邻相同的数字合并为原来的2倍,并在反方向随机生成一个新的数字。玩家目标是在游戏中拼出2048或更高的数字,即为游戏成功。
15. 节奏大师 — 基于FPGA的多功能音乐系统
我们的作品是“基于FPGA的体感节奏大师游戏”,以Xilinx大学计划官方开发板 - DIGILENT Basys3 FPGA板卡为核心,作品集体感游戏、手势识别、乐谱识别、无线钢琴于一体的多功能音乐交互平台。
作品的内部核心代码使用Verilog语言编写,外围电路有7条LED灯带,7个光敏电阻-激光二极管对以及进度条组成。作品主要有如下特色功能:
1)体感:通过感应人体(手掌或手指)动作的互动方式进行游戏;
2)节奏分析:可将乐曲导入系统进行游戏,选择乐曲后系统将根据幅度生成一段正确波形,并使4个灯柱发出不同进度的滚动灯光;
3)实时判分:玩家在游戏过程中,根据个人操作与正确答案进行对比并实时生成分数在7段数码管显示,游戏结束后可以看到自己的总成绩;
4)VGA显示:系统通过VGA输出各种音乐节奏数据到外接设备上。
本作品的设计理念在于,寻找技术与艺术的契合点,用图像、声音等信息处理技术让人们感性地认识音乐节拍,拉进人们与音乐的距离。
16. Bio-feedback-Gaming-System生理反馈游戏
https://github.com/sambosor/Bio-feedback-Gaming-System
Nexys 4 DDR上的视频游戏
控制器是USB键盘。
通过箭头键控制移动,并通过“X”键发射子弹。
按下按钮N17重置游戏
通过将扬声器插入Nexys 4 DDR的单声道音频,可以播放音频
脉冲传感器必须插入XADC端口(顶行)
要在不受脉冲传感器影响的情况下进行游戏,请将拨码开关sw <15>至于下即0位。
BPM> = 80:敌人射出更多的射弹;BPM> = 90:流星开始下降
BPM> = 110:玩家无法射击;BPM> = 140:玩家死亡。
17. Nexys 4 DDR Music Looper组合音响
https://reference.digilentinc.com/learn/programmable-logic/tutorials/nexys-4-ddr-looper-demo/start
该项目演示了Nexys 4 DDR的XADC端口,DDR2内存和PWM音频输出的使用。如下:
· looper有8个'bank',可以包含数据。用户可以将音轨录制到这些库并同时播放。
· 音频数据通过XADC以大约44.1 KHz的速度不断采样,并使用PWM通过耳机插孔输出。
· 按下录制按钮时,7段显示器上的计时器启动,音频数据被记录到一个库中。
· 如果再次按下录制按钮,则保存循环的长度并从头到尾读取音频数据并与输入信号混合。
· 如果在录制过程中按下停止按钮,则数据将被空白信号覆盖,数据将被删除。
· 当'bank'正在播放时,用户可以通过按BTNL或BTNR选择另一个要记录的银行来记录其他银行的其他曲目。如果用户在已经播放的银行上按下播放/录制,则它将覆盖该'bank'上的音频。
· 板载LED显示哪些库被记录以及哪些库仍然是空的。
· 按住任何特定'bank'的停止按钮1.5秒将删除它。
· 按BTNU会切换您所在的轨道。将SW0翻转到ON位置将允许您编辑在相反轨道上正在播放的库。在开始之前确保SW0处于关闭位置
· 左侧7段显示屏显示您当前所在的银行以及该银行的状态:E表示空,S表示停止,P表示播放。右7段显示屏显示当前循环中的时间。
硬件
· Nexys 4 DDR板
· Micro-USB线
· 耳机或扬声器
· 面包板
· 2个相同的电阻器
· 100pF电容器
· 电线
· 电动乐器(辅助输入)
软件
· Vivado设计套件2016.4
o 可以使用较新的版本,但程序可能略有不同
· Nexys 4 DDR支持文件
o 这些文件将描述电路板上的GPIO接口,使您可以更轻松地选择FPGA板并添加GPIO IP模块。
o 按照Wiki指南,了解如何为Digilent 7系列FPGA板安装Vivado板文件。
1)首先切断辅助输入线的一端(插入仪器)并分开电线。
2)XADC端口需要一个偏置电压为.5V的输入波,因此请使用J14上的1.0V电压轨并创建一个分压器以获得0.5V电压。这是连接辅助输入的地线的地方。将辅助输入的正极线连接到JXADC连接器上的AD3P。将100pf电容从辅助输入端连接到GND以降低噪声。将AD3N连接到GND。
3)将耳机/扬声器插入Nexys 4 DDR J8上的MONO AUDIO OUT端口。
4) 下载并启动Nexys 4 DDR Music Looper演示
包含-初始状态-切换Bank-存储-循环录制-停止循环-取消录制-删除-重置-播放等功能
18. 在Nexys4DDR板上构建完整计算机
https://github.com/MJoergen/nexys4ddr/tree/master/dyoc
系列概述
在前几集中,我们将重点关注VGA输出,实质上是构建一个(小)的GPU。原因是这将为我们以后提供极好的可能性来查看CPU的内部状态。
稍后我们将设计并实现6502处理器。这是与1980年代的Commodore 64计算机中使用的处理器相同的处理器。互联网上有关此处理器的大量信息。在后面的剧集中,我将提供更多链接。
最后,我想构建一个可以在这台计算机上运行的网络服务器。
当然,最终的目标是玩得开心!
整体设计
我们正在构建的计算机将在FPGA板上运行,在FPGA内部将有:
· VGA接口(GPU)
· 内存(RAM和ROM)
· 6502 CPU
· 键盘界面
· 以太网接口
我们将按照上述顺序大致设计和构建这些块。
19. Game of Balance迷宫导航游戏
Game of Balance是一款基于加速度计的迷宫导航游戏,增加了得分和生命功能。
· 为Microblaze Softprocessor设计和开发的固件,具有以下功能:
o 使用QPNano的游戏逻辑的状态图模型
o 使用深度优先搜索生成动态迷宫
o 球与墙壁,得分点和生命点等物体碰撞
o 配置和更新LCD显示器(2.2寸QVGA,SPI通讯)
o 用板载按键操作
· 增加了FPGA硬件模块,用于读取MEMS 3轴板载加速度计数据,并通过MicroBlaze软处理器连接LCD显示器和其他按钮。
· 该项目是作为课程作业的一部分完成的 - ECE253嵌入式系统设计(硬件软件接口)。
状态机-游戏逻辑
开始界面 容易难度
困难难度 结束界面
20. 使用两个相机的立体深度检测
https://github.com/marknsikora/G4_stereoscopic_depth
项目的目的是使用两个水平对齐的摄像头来检测视野中的图像深度。它通过将一个摄像机中的块与另一个摄像机中的块进行比较来寻找最接近的匹配来实现此目的。知道两个图像中的一个块的位置然后可以检测到远离相机的距离。
需要以下附加IP
· vga_ip
21. 基于FPGA的智能循迹避障小车
http://www.digilent.com.cn/project/diy/120.html
智能小车的制作是近年来电子设计的热点问题,它可以按照事先设定的模式在一个环境里自动的运作,具有实时显示时间、速度、里程,具有自动循迹、寻光、避障功能,可控行驶速度、远程传输图像等功能,在科学勘探等方面有很大的应用前景。本设计基于NEXYS4 DDR的技术平台,利用Digilent Nexys4DDR实现智能小车循迹、避障、测速、测距、测温湿度的功能。
总体框图如下:
硬件部分包括主控平台-Nexys4 DDR板子,L298N电机驱动模块,红外循迹模块采用四路红外对管,HC-SR04 超声波测距模块,数字温湿度传感器DHT-11。
软件部分包含码盘测速模块设计,自动循迹模块设计,避障测距模块设计,行为选择模块设计,驱动模块设计,速度测量模块设计。
22. Nexys 4 DDR高级I / O演示
该项目代表Nexys4-DDR开箱即用的用户演示,演示了1280×1024模式下VGA显示器的使用,Artix7 XADC,双线接口上的Nexys4 DDR板载ADT7420温度传感器,ADXL362加速度计在SPI接口,PS2接口,RGB LED,ADMP421全向麦克风,音频输出,16MB PSRAM存储器,用户按钮,开关和LED。
该项目以1280 * 1024分辨率连接到VGA显示器,并在屏幕上显示各种项目:
· Digilent / Analog Devices标志
· 如果项目启动时Usb鼠标连接到电路板,则为鼠标光标
· 来自板载ADMP421全向麦克风的音频信号
· 一个小方块,表示来自ADXL362板载加速度计的X和Y加速度数据。方块根据Nexys4板位置移动。请注意,由于Nexys4板上的加速度计布局,电路板上的X轴和Y轴交换。加速度计显示屏还显示加速度幅度,计算为SFRT(X ^ 2 + Y ^ 2 + Z ^ 2),其中X, Y和Z表示各轴上的加速度值
· FPGA温度,板载ADT7420温度传感器温度值和加速度温度值
· 发送到RGB LED LD16和LD17的R,G和B分量的值
其他特性:
· 除音频录制完成外,16个开关(SW0..SW15)连接到LD0..LD15
· 按下BTNL,BTNC和BTNR将在LD16和LD17上切换红色,绿色和蓝色。按下BTND时,颜色扫描返回。BTND也在LD16,LD17,无或两者之间徘徊
· 按BTNU将开始录音约5S,然后音频数据将在音频输出上播放。录制时,LD15..LD0将向右移动显示进度条,在播放时,LD15..LD0将显示左移的进度条。录制的音频数据存储在板载DDR2内存中。