基于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无法正常工作。