基于FPGA(ZYNQ-Z2)的多功能小车
文章平均质量分 66
使用PYNQ-7020设计的多功能小车。使用Verilog和Vivado。
贡橙小白鼠
贡橙小白鼠
展开
-
0—基于FPGA(ZYNQ-Z2)的多功能小车
在电子技术与创新的课设中我们组选择了这个题目。我们在设计的时候遇到了非常多的问题,但是网上的对应资料又非常少,因此在完成设计之后,我把设计方法与代码在这篇博客中分享出来,希望能对需要的人有所帮助。注:本人大二学生,对FPGA理解浅薄,如有错误请指正。原创 2023-06-19 09:02:22 · 2382 阅读 · 3 评论 -
1—基于FPGA(ZYNQ-Z2)的多功能小车—硬件设计—电源模块
我们的小车使用7.4V的锂电池供电,无法直接为各模块和FPGA供电。因此需要设计稳压模块。多方面考虑,我们选择使用LM317设计线性可调稳压,使用LM2596和AMS1117设计7.4V-5V-3.3V的稳压模块。5V与3.3V给模块与FPGA供电,可调稳压输出范围1.25V-7V,可在突发情况或者其他要求是提供电压。原创 2023-06-19 10:07:12 · 1032 阅读 · 1 评论 -
2—基于FPGA(ZYNQ-Z2)的多功能小车—硬件设计—电机驱动模块(TB6612FNG)
一个TB6612FNG可以控制两个电机,因此需要两个芯片。即控制电机需要4*2个输入(IN),4*1个调速(PWM)。为了驱动四路电机,我使用了两个TB6612FNG,设计简单,体积小,功能完整。原创 2023-06-19 12:47:30 · 2816 阅读 · 0 评论 -
3—基于FPGA(ZYNQ-Z2)的多功能小车—硬件设计—传感器模块设计与PCB总览
根据题目要求,需要使用大量的传感器,但是使用FPGA供电显然不现实。因此需要在PCB上设计传感器模块的接口,使用电源模块供电,并整理出传感器区域,让整体更有序。电池通过接线端子与PCB相连,两个开关分别控制总电源与电机,通过调节电位器可以实现Vout调节,各个模块设计有LED,判断是否正常工作。使用XH-2.54插座与传感器相连,并将信号线接到电路板的后面,这样在FPGA与电路板的连接时更规整。原理图与PCB文件在之前已给出。整体PCB布局如下。原创 2023-06-19 12:57:17 · 391 阅读 · 0 评论 -
4—基于FPGA(ZYNQ-Z2)的多功能小车—软件设计—电机驱动模块
如果计数器的值小于占空比(duty),PWM输出被设置为高电平(1)。对于其他mode值,direction_A、direction_B、direction_C和direction_D被设置为1,表示反向。如果mode等于1或3,direction_A和direction_B被设置为0,表示正向(例如前进或左转)。如果mode等于1或4,direction_C和direction_D被设置为0,表示正向(例如前进或右转)。①运动方向(mode)——0停止,1前进,2后退,3左转,4右转。原创 2023-06-19 13:31:18 · 1414 阅读 · 1 评论 -
5—基于FPGA(ZYNQ-Z2)的多功能小车—软件设计—蓝牙串口
我使用的是JDY-31蓝牙模块,在连线中,要注意RX-TX,TX-RX。即FPGA约束的TX对应蓝牙模块的RX,约束的RX对应蓝牙模块的TX。蓝牙模块使用UART串口通信协议,具体介绍如下:UART(通用异步收发器)是一种常见的串口通信协议。UART协议的主要特点如下:异步通信:UART使用异步通信方式,不需要时钟同步信号。数据的传输以字符为单位,每个字符由起始位、数据位、校验位(可选)和停止位组成。数据格式:UART可以支持不同的数据格式。原创 2023-06-19 16:48:06 · 2159 阅读 · 12 评论 -
6—基于FPGA(ZYNQ-Z2)的多功能小车—软件设计—超声波测距
的值,表示已经过了10微秒的一半时间,此时将计数器和触发信号寄存器取反。发射超声波信号:通过给Trig提供10us的TTL,能够触发超声波模块产生高频的声波信号。超声波模块是一种常用的测距技术,它利用声波来测量物体的距离。目标物体的反射:当声波遇到目标物体时,一部分声波会被目标物体反射回来。因此,通过计算Echo引脚的高电平时间,再利用音速便可计算出实际距离。接收超声波信号:在接收到反射回来的声波信号是,Echo会输出低电平。模块,测量回波信号的高电平持续时间,将结果保存在。模块,生成的触发信号。原创 2023-06-19 17:05:56 · 881 阅读 · 0 评论 -
7—基于FPGA(ZYNQ-Z2)的多功能小车—软件设计—红外遥控
这种方式的优点是设计十分简单粗暴,同时能实现通信,但是缺点也十分明显。需要占用大量的IO口,并且需要外置单片机进行解码。其实就相当于脱裤子放屁,不过因为时间与水平有限,这也是一种折中的实现方法。红外遥控的实现由于时间有限,并且协议的难度也比较大,因此我们借助于Arduino对信息进行解码,再通过自己编码实现红外遥控。简单的解码,判断mode的值。FPGA只能0-1信号,因此可以用n个IO口进行编码,总共有。个信息的编码,在Vivado中进行解码,便可实现通信。str的值需要根据实际测试。原创 2023-06-19 17:34:23 · 587 阅读 · 0 评论 -
8—基于FPGA(ZYNQ-Z2)的多功能小车—软件设计—寻迹模块、寻光模块、跟随模块
寻迹模块的实现需要两个TCRT5000传感器。简单地说,检测到黑线输出低电平,检测到白线输出高电平。因此两个TCRT5000放在黑色地面的白线循迹线左右,左边检测到白线左转,右边检测到白线右转,都是黑的前进,都是白线停止。算法比较容易实现。原创 2023-06-19 17:49:10 · 894 阅读 · 0 评论 -
9—基于FPGA(ZYNQ-Z2)的多功能小车—拓展功能—OpenMV的色块识别
对于色块识别功能,我想让OpenMV检测色块,在数码管上显示。OpenMV的通信也是串口通信,实现比较耗时。由于之前的红外遥控已经外接了Arduino,因此我依然借助Arduino对红绿蓝进行编码,使用两个IO实现信息传递,在FPGA上进行译码,最后根据对应的信息实现数码管显示。原创 2023-06-19 17:56:43 · 854 阅读 · 1 评论 -
10—基于FPGA(ZYNQ-Z2)的多功能小车—软件设计—顶层代码
实例化蓝牙、超声波、电机模块,在always块中实时判断蓝牙的信息进行模式选择,在遥控模式中实时判断红外遥控的信息遥控小车,最后的代码是在ila中debug,实际没有用。在之前的文章中具体控制代码已经全部进行了分析与解释,顶层模块进行模块的输入输出的定义、内部变量的定义、模块的实例化与蓝牙信号的判断。整体Arduino代码如下;原创 2023-06-20 10:02:01 · 385 阅读 · 0 评论