基于FPGA的日志及参数文件存储设计

基于FPGA的日志及参数文件存储设计

基于FPGA的日志及参数文件存储设计

功能需求

  • 支持设备运行日志记录(设备至少使用10年);
  • 支持上位机读/写/擦除 Flash;
  • 支持本地信息查询;
  • 支持多台设备参数管理

系统设计

  • Flash型号:W25Q256JVEIQ
  • 总线:SPI
  • 时钟速率:25MHz

日志功能

  • 上电默认不开启日志功能(防止上一次运行日志被擦除)
  • 单条日志长度为256字节,每分钟记录一次
  • 使用两个 32KB 空间进行存储,每存满一个 32KB,擦除另一个 32KB 继续记录(双缓存设计可以保证在擦除过程断电,也有日志可查)
  • 日志内容:回复帧信息(包含运行时间)
  • 寿命计算(按照10年寿命来设计):
    • 擦除一次记录日志条数:64K(B)/256(B) = 256(条)
    • 若频率为 1分钟,则擦除一次可以记录 256 分钟
    • 连续擦除10万次可记录时长:100000*256(分钟)/60(分钟)/24(小时)/365(天) = 48.7 (年)

上位机参数存储

上位机读取 flash 模块状态,当模块为空闲状态时可进行 flash 的读/写/擦除操作。

本地参数查询

上位机下发信息查询帧,设备发送信息回复帧。

多台设备参数管理

设备通过信息查询帧自动进行设备ID分配,上位机可指定其中一台或者广播方式进行参数管理。

在这里插入图片描述

系统框图

在这里插入图片描述

通信协议定义

见协议文档。

Flash芯片

引脚定义

在这里插入图片描述

Flash相关指令

Read Manufacturer / Device ID (90h)
在这里插入图片描述


在这里插入图片描述
Write Enable (06h)

每次进行页编程、擦除、写状态寄存器都要先执行该指令。

在这里插入图片描述
Sector Erase (20h)

1 Sector = 4KB

在这里插入图片描述
32KB Block Erase (52h)
在这里插入图片描述
64KB Block Erase (D8h)
在这里插入图片描述
Page Program (02h)

1 Page = 256B

在这里插入图片描述
Read Data (03h)

Read Status Register
在这里插入图片描述
Write Status Register
在这里插入图片描述

状态寄存器定义

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

AC参数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

测试结果

日志功能

在这里插入图片描述

上位机读/写/擦除 Flash

在这里插入图片描述

本地信息查询及多台设备参数管理

在这里插入图片描述

调试心得

该芯片每次指令操作开始都要拉低片选信号,单条指令完成后需拉高片选信号,否则 Flash无法正常工作。

Read more

【前端开发】一文带你快速入门JavaScript(下)Web 前端必备程序语言 | 条件语句与循环结构

【前端开发】一文带你快速入门JavaScript(下)Web 前端必备程序语言 | 条件语句与循环结构

💯 欢迎光临清流君的博客小天地,这里是我分享技术与心得的温馨角落 💯 🔥 个人主页:【清流君】🔥📚 系列专栏: 运动控制 | 决策规划 | 机器人数值优化 📚🌟始终保持好奇心,探索未知可能性🌟 文章目录 * 引言 * 一、if 条件语句 * 1.1 基本 if 语句 * 1.2 双等号与三等号的区别 * 1.3 if-else 语句 * 1.4 else-if 语句 * 1.5 逻辑运算符的使用 * 二、三目运算符 * 2.1 基本用法 * 2.2 运行结果 * 三、switch 语句 * 3.1 switch 语句结构 * 3.

Springboot 4.0十字路口:虚拟线程时代,WebFlux与WebMVC的终极选择

Springboot 4.0十字路口:虚拟线程时代,WebFlux与WebMVC的终极选择

🧑 博主简介:ZEEKLOG博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c=1000,移动端可关注公众号 “ 心海云图 ” 微信小程序搜索“历代文学”)总架构师,16年工作经验,精通Java编程,高并发设计,分布式系统架构设计,Springboot和微服务,熟悉Linux,ESXI虚拟化以及云原生Docker和K8s,热衷于探索科技的边界,并将理论知识转化为实际应用。保持对新技术的好奇心,乐于分享所学,希望通过我的实践经历和见解,启发他人的创新思维。在这里,我希望能与志同道合的朋友交流探讨,共同进步,一起在技术的世界里不断学习成长。 🤝商务合作:请搜索或扫码关注微信公众号 “ 心海云图 ” Springboot 4.0十字路口:虚拟线程时代,WebFlux与WebMVC的终极选择 当虚拟线程以革命性的姿态降临Java世界,一场关于并发编程范式的静默变革正在发生。Spring开发者站在了选择的十字路口。 2023年,Java 21将虚拟线程从预览特性转为正式功能,这一变化看似只是JVM内部的优化,实则撼动了整个

pywebview:用Python+Web技术打造轻量级桌面应用!

pywebview:用Python+Web技术打造轻量级桌面应用!

✍️作者:唐叔在学习 💡专栏:唐叔学python ✨关键词:Python桌面开发、pywebview教程、WebView应用、前后端分离、JS与Python交互、桌面应用打包、Electron替代方案、Python GUI 大家好,我是唐叔。今天我们来聊聊一个非常轻量且强大的Python库——pywebview。如果你曾经为开发一个简单的桌面应用而纠结于Electron的笨重、PyQt的复杂,或是Tkinter的界面简陋,那pywebview或许正是你一直在找的解决方案。 文章目录 * 一、介绍 * 二、安装 * 安装全量版本 * 安装指定环境版本 * 三、使用入门 * 3.1 基本使用 * 3.2 应用程序架构 * 纯网络服务架构 * 无服务器架构 * 3.3 JS与Python交互 * 四、应用打包 * 五、常见使用场景 * 5.1 文件操作 * 文件下载