原创 测试

2012-4-28 18:13 545 2 2 分类: FPGA/CPLD

 

作者:        屋檐下的龙卷风
     博客地址:  http://www.cnblogs.com/linjie-swust

     FPGA(Field-Programmable Gate Array),即现场可编程门阵列,这是我们在很多地方都看见的解释FPGA的名词,但是到底是现场可编程门阵列呢?何时能用到现场可编程呢?今天我们看看怎么实现FPGA的现在可编程。

     先假设一种应用场合:在某个场合中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口处于共用状态,怎么使用呢?
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
2
关闭 站长推荐上一条 /3 下一条