FPGA在线升级系统论文

2022-12-27

一、引言

对于服务器这类设备在运行中出现BUG是比较常见, 但维护和更新较为繁琐通常是采用停机断电, 拆除原先有BUG板卡, 换个新的上去。这样对人力较为浪费, 拆出板卡可能需要多人完成, 操作步骤较为繁琐, 实际就是为了换套程序, 硬件并无问题。

二、在线升的基本结构讲解

本实验采用UART串口, SPI总线和硬件的Flash。就可完成基本的设计。基本框架如图1。

利用串口将需要更新的程序将发送到FPGA。FPGA将接收到的程序写入对应的Flash扇区内。和手机, 电脑的系统更新类似, 电脑中本身有一个系统专门负责接收固化新程序的部分。还有一部分是即将被替换程序。

在FPGA中应事先写好与Flash通信的程序, 将其固化到Flash中的固定扇区中冲当BIOS, 在确保BIOS不被覆盖的情况下, 固化另一个程序即原始系统, 利用按键在BIOS和系统中跳转, 跳到BIOS中时可以通过UART接收新系统数据, 并将其在擦除老系统后写入老系统对应的分区中。

对于Flash分区, 在生成bit文件固化到Flash时固话两个bit文件这样在后面的选项会有提示, 并要求填写地址。地址跳转Xilinx的源语中有个icap可以实现这一功能将其例化在工程内给它设置触发条件即可。

三、Flash擦除和写入

在本实例中采用的是M25P64这款芯片, 通过芯片手册需要知道几件事:它的通信线路是SPI;Flash容量信息;SCK的频率;Cs_n的有效电平;SDI的数据分类;时序要求。通过这些信息即可正常操作Flash的读写。

现在详细看一下芯片信息, M25P64是一个64M容量的芯片128个扇区, 每个扇区256页65535个地址且每页可存256个字节每个地址8bit, 则一页有256个地址。了解完这些内容就可以将数据准确写入每个地址, 和计算会不会超出容量而导致数据丢失。

由于M25P64是SPI的串行总线在配置擦除和写入时较为麻烦, 要先给个写使能指令。由于芯片内每次配置完数据要有一定的时间让芯片反应一下, 将芯片内缓冲区的数据存储下来, 所以每次配置完使能和写完一组数据都要等待一段时间。擦除 (SE) 的话一次就可以擦除一个扇区, 而写采用的是页写 (PP) , 一次写一字节对应一个地址, 一页写满后自动跳转到下一页。

在M25P64中数据的表示方式均为十六进制或二进制, 写使能数据为06 (十六进制) , 擦除D8 (十六进制) , 页写02 (十六进制) 。

四、SPI总线设计

通过手册也可以得到SCK和Cs_n分别是12.5M和低电平有效, 也就意味着要分频, 同时还要在SDI传输有效数据时将Cs_n拉低。Cs_n并非只有在SDI传输数据的时候才会拉低, 在某写特定的地方也会拉低, 如传输数据前和发完8bit后的时刻如图2。

这两组时序中可以得到的信息不只Cs_n的, 还可以得到SCK与SDI的信息比如默认都为高, SDI数据变位置和稳定位置 (见图2) 。

分别在SCK低电平和高电平。至于图中Cs_n的提前拉低余量可以与数据时长 (图2左侧中间部分) 一样。

五、结束语

在线升级系统结构不是很复杂, 本文没有提到的UART部分较为简单, 可以采用RS232, 将原先生成的bit文件, 用编辑工具将它转成txt文件, 通过串口助手或类似工具发送至FPGA, 再利用前面的Flash擦除和写入固化到Flash中非Flash擦除和写入的扇区或地址。完成Flash的程序更新即在线升级。

摘要:FPGA在高速接口和数字信号处理的应用越来越广泛, 因此被应用到了雷达和服务器之类的相对不易维护且不易长时间断电的电子设备。因此在线系统升级就成了一个很好的解决方案。在本方案中会用到Flash这种可以存储硬件。

关键词:FPGA,在线系统升级,Flash

参考文献

[1] 吴厚航.勇敢的芯伴你玩转xilinx FPGA[M].2017 (1) .

[2] ST Microelectronics.M25P64[P].2005 (2) .

[3] 何宾, 张艳辉. Xilinx FPGA数字信号处理权威指南[M].2014.

本文来自 99学术网(www.99xueshu.com),转载请保留网址和出处

上一篇:试论油田内部财务成本控制体系的构建下一篇:西藏赴内地学习学生的学习能力现状研究——以辽阳职业技术学院为例