ALTERA FPGA在微处理器系统中的在应用配置
可编程逻辑器件(pld)广泛应用在各种电路设计中。基于查找表技术、sram工艺的大规模pld/fpga,密度高且触发器多,适用于复杂的时序逻辑,如数字信号处理和各种算法的设计。这类器件使用sram单元存储配置数据。配置数据决定了pld内部互连和功能,改变配置数据,也就改变了器件的逻辑功能。sram编程时间短,为系统动态改变pld的逻辑功能创造了条件。但由于sram的数据是易失的,配置数据必须保存在pld器件以外的非易失存储器内,才能实现在线可重配置(icr)。
本文引用地址:https://www.eepw.com.cn/article/21116.htm1 在应用配置(动态配置)
同一设备在实现不同的应用时,要求fpga实现不同的功能。如手持多媒体设备,可拍摄分辨率较高的静止图像照,采用jpeg2000压缩,也可传送活动图像,采用h.263,h.264/avc等。单纯使用软件实现速度慢,需要对算法进行精细的优化;而使用硬件实现则速度快,但灵活性差。为此,采用微处理器和fpga相结合来实现手持多媒体终端,微处理器实现程序控制,fpga实现大量的规则运算。此外,手持设备的某些应用(如静止图像和活动视频压缩)可能并不同时实现。若在一片fpga同时实现这些功能,不仅布线复杂,功能难以实现,而且需要更大规模的fpga。若使用不同的配置数据进行配置,使fpga在不同时刻实现不同的功能,则fpga的容量可以显著降低,从而降低设备的体积、功耗及成本。

altera sram工艺的fpga配置方式主要分为两大类:主动配置和被动配置。主动配置方式由pld器件引导配置操作过程,它控制着外部存储器和初始化过程;而被动配置方式则由外部计算机或控制器控制配置过程。根据数据线的多少又可以将pld器件配置方式分为并行配置和串行配置两大类。下面以altera apex20kc系列器件为例,介绍两种在微处理器系统里连接简单且使用方便的配置方式:被动串行配置和被动并行异步配置。
2 被动串行配置(ps)
被动串行配置的主要配置引脚如下:
nstatus:命令状态下为器件的状态输出。加电后,fpga立即驱动该引脚到低电位,然后在5μs内释放它。nstatus经过10kω电阻上拉到vcc,如果配置中发生错误,fpga将其拉低。在配置或者初始化时,若配置电路将nstatus拉低,fpga进入错误状态。
nconfig:配置控制输入。低电位使器件复位,由低到高的电位跳变启动配置。
conf_donf:双向漏极开路;在配置前和配置期间为状态输出,fpga将其驱动为低。所有配置数据无错误接收并且初始化时钟周期开始后,fpga将其置为三态,由于有上拉电阻,所以将其变为高电平,表示配置成功。在配置结束且初始化开始时,conf_done为状态输入:若配置电路驱动该管脚到低,则推迟初始化工作;输入高电位则引导器件执行初始化过程并进入用户状态。
dclk:时钟输入,为外部数据源提供时钟。
nce:fpga器件使能输入。nce为低时,使能配置过程。单片配置时,nce必须始终为低。
nceo:输出(专用于多片器件)。fpga配置完成后,输出为低。在多片级联配置时,驱动下一片的nce端。
data0:数据输入,在data0引脚上的一位配置数据。
porsel:专用输入,用来设置上电复位(por)的延时时间。

几乎所有altera fpga器件都支持被动串行配置。被动串行配置的是序图如图1所示,在这种配置方式中没有握手信号,配置时钟的工作频率必须在器件允许的范围,最低频率没有限制。为了开始配置,配置管脚和jtag管脚所在的bank的vccint、vccio必需供电。fpga上电后进入复位状态。nconfig被置为低电平,使fpga进入复位状态;nconfig由低到高的电位跳变启动配置过程。整个配置包括三个阶段:复位、配置和初始化。当nstatus或者nconfig为低电平时,器件脱离复位状态,并且释放漏极开路的nstatus管脚。在nstatus释放后,被外部电阻拉高,这时nstatus和nconfig同时为高电平,fpga准备接收配置数据,配置阶段开始。在串行配置过程中,fpga在dclk上升沿锁存data0引脚上的数据。成功接收到所有数据后,释放conf_done引脚,并被外部电阻拉高。conf_done由低到高的转变标志配置结束,初始化开始。此后,dclk必须提供几个周期的时钟(具体周期数据与dclk的频率有关),确保目标芯片被正确初始化。初始化完成后,fpga进入用户工作模式。如果使用了可选的init_done信号,在初始化结束后,init_done被释放,且被外部电阻拉高,这时进入用户模式。dclk、data、data0配置后不能三态,可置高或者置低。
在配置过程中,一旦出现错误,fpga将nstatus拉低。系统可以实时监测,当识别到这个信号后,重新启动配置过程。nconfig由高变低,再变高可以重新进行配置。一旦nconfig被置低,nstatus和conf_done也将被fpga置低。当nstatus和nconfig同时为高电平时,配置开始。
图2是采用微处理器的fpga被动串行配置方案的简化电路图。配置过程为:由微处理器将nconfig置低再置高来初始化配置;检测到nstatus变高后,就将配置数据和移位时钟分别送到data0和dclk管脚;送完配置数据后,检测conf_done是否变高,若未变高,说明配置失败,应该重新启动配置过程。在检测conf_done变高后,根据器件的定时参数再送一定数量的时钟到dclk管脚;待fpga初始化完毕后进入用户模式。如果单片机具有同步串口,data0、dclk使用同步串口的串行数据输出和时钟输出,这时只需要简单把数据字节或字锁存到发送缓冲器就可以了。在使用普通i/o线输出数据时,每输出1个比特,就要将dclk置低再置高产生一个上升沿。它比altera公司手册给出的电路连接图更有效地使用了存储器。

3 被动并行异步配置
如同被动串行配置一样,被动并行异步配置也包括三个阶段:复位、配置和初始化。被动并行异步配置电路图如图3所示。当nstatus或者nconfig为低电平时,器件处于复位状态。微处理器在nconfig管脚产生一个由低到高的跳变启动fpga的配置。当nconfig变高后,器件脱离复位状态,并且释放漏极开路的nstatus管脚,fpga准备接收配置数据,配置阶段开始。在配置阶段,微处理器fpga当作存储器,进行写操作,即微处理器先使片选有效,然后把8比特数据送到data[0:7]管脚上,并配置管脚rdynbsy到低电平,表示fpga正忙于处理配置数据,微处理器可执行其它功能。在rdynbsy低电平期间,fpga使用内部振荡器时钟处理配置数据。当fpga准备接收下一字节的配置数据时,它驱动rdynbsy到高电平。微处理器检测到这一高电平,便送下一字节数据到配置管脚。为了节省一根用来检测rdynbsy的i/o线,可采用读存储器的方法读fpga,其中nrs为存储器读信号,在nrs有效期间,rdynbsy信号被送到数据线d7上。也可以不检测rdynbsy,也不读fpga,简单地等待延时tbusy(max)+trdy2ws+tw2sb之后就写下一个配置数据字节。fpga每处理一字节配置数据后,若发现错误就会将nstatus拉低,暗示配置出错。微处理器可以检测这一错误,并重新进行配置。如同被动串行配置一样,fpga在正确接收所有配置数据后,将释放conf_done信号,于是该管脚被外部上拉电阻拉高,表示配置结束,初始化开始。
4 配置数据文件的生成
altera的max+plus ii或quartus ii开发工具可以生成多种格式的配置文件,用于不同配置方法。不同目标器件,配置数据的大小不同。配置文件的大小一般由二进制文件(扩展名为.rbf)决定。altera提供的软件工具不自动生成.rbf文件,需要按照下面的步骤生成:①在max+plus ii编译状态,选择文件菜单中的变换sram目标文件命令;②在变换sram目标文件对话框,指定要转换的文件并且选择输出文件格式为.rbf(sequential),然后予以确定。
评论