FPGA解析串口协议帧升级版,优化了代码,提供仿真文件以及源码

串口的FPGA代码网上一大堆,开发板资料也有现成可用的代码,但对于做项目来说几乎没什么用,什么样的项目能简单到只做串口回环收发?根据自身项目经验,常用的就是串口指令帧的方式实现多机握手或通信,一个小小的串口最能体现一个人的FPGA水平,你的代码量、消耗逻辑资源情况、时序收敛状况、输出信号的同步性等等,这个串口指令帧解析十分贴近现实项目。
前面写过一篇关于FPGA介意串口指令帧的文章https://blog.csdn.net/qq_41667729/article/details/123004758
但有兄弟联系我说没有仿真文件,不够完美,于是对代码进行了优化,顺便提供仿真文件,串口解析模块由串口接收模块,串口指令解析模块以及串口发送模块组成。
串口指令协议如下:
在这里插入图片描述
代码架构如下:
在这里插入图片描述
串口接收模块顶层如下:
在这里插入图片描述
串口指令解析模块顶层如下:
在这里插入图片描述
串口发送模块顶层如下:
在这里插入图片描述
仿真部分核心代码如下:
在这里插入图片描述
仿真结果如下:
在这里插入图片描述
上板调试工程如下:
在这里插入图片描述
上板调试结果如下:
通过电脑上位机发送串口指令帧,FPGA接收后一路通过串口发送返回数据,一路解析出有效数据后输出,通过ila抓取查看:
在这里插入图片描述
在这里插入图片描述
源码下载链接:https://download.csdn.net/download/qq_41667729/87767016

  • 3
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
基于FPGA串口指令帧接收与解析的Verilog代码,可以通过以下步骤实现: 1. 首先,我们需要定义一些参数,如波特率、数据位、停止位等。可以使用参数定义方式,在代码中进行设置。 2. 接着,需要定义连续的寄存器,用于存储接收到的数据。可以使用一个FIFO(First-In-First-Out)缓冲区来存储接收到的数据帧。在Verilog中,可以使用$fifo模块来实现该缓冲区。 3. 编写串口接收模块。首先,需要使用一个接收时钟,通过对时钟进行分频来实现波特率的定义。然后,在每个时钟周期中,通过接收状态机来控制接收操作。接收状态机可以使用case语句实现,根据当前状态进行相应的操作。在接收模块中,需要包括以下功能: - 等待起始位的检测:当串口接收到起始位(逻辑低电平)时,进入下一个状态。 - 接收数据位:在每个时钟周期中,从串口接收数据线上读取数据,并保存在寄存器中。 - 接收停止位:在读取完所有数据位后,再读取停止位(逻辑高电平),并将数据帧存储到FIFO缓冲区中。 - 等待下一个起始位:在完成一帧的接收后,等待下一个起始位。 4. 编写串口解析模块。这个模块负责从FIFO缓冲区中读取接收到的数据帧,并进行解析处理。可以根据接收到的数据帧结构,使用条件语句对不同的指令进行处理。 在Verilog代码中,可以使用参数、寄存器、状态机、FIFO缓冲区等模块,来实现基于FPGA串口指令帧接收与解析的功能。以上是一个简单的代码框架,具体的实现细节需要根据具体的需求进行调整和完善。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

9527华安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值