FPGA 日志及参数文件存储设计
功能需求
- 支持设备运行日志记录(设备至少使用 10 年);
- 支持上位机读/写/擦除 Flash;
- 支持本地信息查询;
- 支持多台设备参数管理。
系统设计
- Flash 型号:W25Q256JVEIQ
- 总线:SPI
- 时钟速率:25MHz
日志功能
上电默认不开启日志功能,防止上一次运行日志被意外擦除。单条日志长度为 256 字节,每分钟记录一次。采用两个 32KB 空间进行存储,每存满一个 32KB,擦除另一个 32KB 继续记录。这种双缓存设计保证了在擦除过程断电时,仍有日志可查。
日志内容主要包含回复帧信息及运行时间。按照 10 年寿命设计计算:擦除一次记录日志条数为 64K(B)/256(B) = 256(条)。若频率为 1 分钟,则擦除一次可记录 256 分钟。连续擦除 10 万次可记录时长约为 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 无法正常工作。


