连云港网站建设公司,登录百度账号,网站建设与推广实训总结,家装设计效果图专业网站FPGA解析串口协议帧已经发布2个版本了#xff0c;分别如下#xff1a; 版本1#xff1a;点击查看版本1 版本1详细介绍了串口协议帧的帧组成和设计思想#xff0c;但设计粗糙#xff0c;注释不详细#xff1b; 版本1#xff1a;点击查看版本2 版本2优化了代码#xff0c…FPGA解析串口协议帧已经发布2个版本了分别如下 版本1点击查看版本1 版本1详细介绍了串口协议帧的帧组成和设计思想但设计粗糙注释不详细 版本1点击查看版本2 版本2优化了代码添加了详细注释 目前根据用户的反馈前两个版本都存在一下问题 1、代码虽然精简但对新手来说理解比较困难看不懂特别是解析模块建议解析模块使用三段式状态机实现 2、功能有bug必须完全按照协议帧发送串口数据发送错误则FPGA无法解析下一帧串口数据了必须断电重启或重新烧录才能再次解析 针对用户的反馈升级了3.0版本 三段式状态机实现定义了8个状态每个状态的跳转只有1位数据变化增强了状态机在组合逻辑和时序逻辑交替工作下的稳定性这种写法目前在业界已经算是天花板水平了 各状态跳转图如下 状态切换说明如下 DLE初始状态下收到aa后进入状态HEADER_1 HEADER_1初始状态下收到bb后进入状态HEADER_2 HEADER_2初始状态下接收数据计数器2后进入状态RX_DATA RX_DATA初始状态下接收数据计数器7后进入状态SUM_CHECK SUM_CHECK初始状态下和校验指示信号为高后进入状态END_1 END_1初始状态下收到cc后进入状态END_2 END_2初始状态下收到dd后进入状态RX_DONE RX_DONE状态自动返回DLE状态再次进入循环 组合逻辑状态切换部分代码如下 这一步就解决了用户反馈的理解比较困难看不懂的问题
错误重发功能功能 之前的版本确实有这样的问题 比如发送aa bb 00 00 00 00 01 cc dd的错误帧再发aa bb 00 00 00 00 00 cc dd的正确帧FPGA就不能解析了FPGA直接卡在了某一状态一直在等满足他跳转的条件当再次发送串口数据帧时解析模块还未切换回初始状态所以卡死 这里增加了error信号一旦发送的数据帧单个字节错误也就是说一帧数据中的某一个字节不符合协议规定则状态机立即跳转回 DLE初始状态这样就解决卡死问题可以错误重发 关于错误检测信号error部分的代码请联系我获得
整个解析代码加上注释一共才179行可谓短小精悍了
仿真 连续发送如下7帧数据 其中有2帧是错误数据 仿真结果如下 可以看到即使中间有2帧是错误数据解析模块依然解析出了正确帧的有效数据错误帧不解析也不输出
上板调试 开发板Xilinx Artix7开发板 开发环境vivado2019.1 输入串口 输出串口 工程代码架构如下 上板调试 福利工程代码的获取 代码太大无法邮箱发送以某度网盘链接方式发送 资料获取方式文章末尾的V名片。 网盘资料如下