FPGA PS可编程重配置与rbf文件
0赞今天跟软件那边配合,了解到需提供rbf文件。就上网了解了下rbf文件的生成方式。
用quartus生成正确的rbf文件。去Assignments->Settings->Device & Pin Options->Programming Files勾上Raw Binary File,确认,然后重新编译一次,即可生成rbf文件。
先假设一种应用场合:在某个场合中FPGA内部硬件电路需要根据外部条件实时更改,有几十种甚至上百种FPGA模型选择。每种模型使用LE都达到上万个,这时候我们不可能直接把所有电路做在一个工程中,这样使用的FPGA芯片容量太庞大,非常昂贵,而且电路胶合控制太复杂,这时候我们可以对每种FPGA模型进行分别生成配置文件,当根据实时状态现场更新FPGA电路。这样就可以采用小容量的FPGA实现,但是怎么实现现在可编程呢?这时候ALTERA FPGA的PS模式下载和FPP模式下载就有用了。
现在以cycloneIII器件来分析怎么使用PS模式更新FPGA代码。
首先FPGA下载配置模式应该要选择PS模式,从数据手册查到,连接MSEL[3..0]全部到地。即为选择PS模式下载,并且支持3.3/3.0/2.5的编程电压。
如下图所示,为ALTERA官方提供的PS模式下载示意电路:
由图上可以看出PS模式下载编程文件,只需要5个编程口,分别是:
1.CONF_DONE:编程数据完成指示脚;
2.nSTATUS: 编程状态指示;
3.DATA[0]: 编程数据;
4.nCONFIG: 编程模式进入脚;
5.DCLK: 编程时钟脚;(注意:cycloneIII DCLK编程时钟最高为133Mhz,而cycloneIII LS最高编程时钟为100Mhz)
编程时序如下:
从上图可以看出整个编程时序非常简单,直接输入数据即可,但是细心的人发现了这里还有个INIT_DONE管脚,当配置文件全部导入FPGA后,FPGA内部编程控制模块还需要使用编程数据对整个FPGA芯片电路进行修改,因此需要一段时间,如编程时序上的Tcd2um,即为编程模式转到用户模式下的延时时长,INIT_DONE即为指示编程完成的管脚。由于Tcd2um在每个器件都是有个时间范围的,只需要我们在编写控制时序时延时超过这个值即可,所以也可以省略掉INIT_DONE管脚使用。
如下图所示即为cycloneIII在配置完成后进入用户状态下的时间长短。
可以看出时长在300~650us,因此设置自己控制时序时长在700us即可进行用户操作。但是某些场合对时间要求非常高,不想白白等待700us,这个时候INIT_DONE即可作为判断信号,指示初始化完成。
查阅数据手册得知,INIT_DONE在cycloneIII系列芯片中处于BANK6,并且和IO口处于共用状态,怎么使用呢?
在Quartues->Assignment->Setting->....如下图所示,选取上INIT_DONE IO作为编程指示IO即可在编程过程中得到需要的指示信号。
以上步骤我们已经详细讲解了怎么使用PS对FPGA现场重配置。配置文件到底是什么呢?SOF?POF?都不是,配置文件为最原始的RBF二进制文件。
采用Quartues文件转换把SOF转换成RBF即可。
上面可以看出龙卷风未对FPP模式进行讨论,但是可以参考ALTERA硬件手册,给出如下时序图:
细心的读者发现了,起始FPP下载模式和PS下载模式完全一样,指示PS数据位为1位、FPP模式数据位为8位,仅此而已。
参考:http://www.cnblogs.com/linjie-swust/archive/2012/04/26/2470286.html