Flash编程器的FPGA实现
17~ 20给出要写入的地址和数据,状态21~900保持控制信号,是芯片内部编程时间。 组合进程:组合进程就根据当前状态(现态)给输出信号赋值,并决定下一状态(次态)。在本例中,状态机根据不同的状态对CE#、OE#、 WE、地址、数据等Flash控制信号进行赋值,从而实现对Flash的控制功能。
但是每执行一次写操作,只能写入一个地址单元里的8bit数据,如果按照这个方法,完成整个Flash芯片1Mbit数据的写入就需要重复执行写操作 128K次,这样既麻烦又浪费时间。我们选用的Xilinx公司SpartanⅡ系列FPGA,提供片上双端口同步读/写RAM块,每块RAM容量为4096bit。块RAM的每个端口可独立配置为读/写端口、读端口或写端口,同时还能配置为任何想要的数据带宽。因此块RAM可使FPGA设计者的设计更加简单,可以把块RAM配置成ROM、RAM、FIFO等多种元件,具有使用方便、性能优越等特点,是一种十分高效的内部存储器解决方案。因此我们采用FPGA的块RAM作为内部数据缓冲器,以提高 Flash写操作的速度和效率。
在本例中,使用内部块RAM产生一个32Kbit 的ROM 元件,程序当中直接引用和映射该元件,将要写入Flash的数据先写入该ROM元件中,然后在每次写操作中将ROM中的数据按地址顺序逐一写入Flash中的一个连续32Kbit的扇区当中,这样编程器的一次写操作就可以写入32Kbit数据,因为32K×32=1Mbit,则依次改变Flash的高5位地址,重复32次上述的写操作,这样1Mbit的数据就写入了整片Flash中,大大提高了编程器写操作的效率。至于ROM元件中的数据,则以ASCⅡ码的形式存在以.
CoeGenerator是一个元件生成软件,它给用户提供了一个通用化的设计界面,提供RAM、ROM、乘法器、各种标准接口等许多设计中常用的元件模型,这样设计者不必自己动手编写,而采用CoeGenerator即可生成自己需要的各种元件。这些元件都是经过了最优化设计,占用资源最少,性能最优,还大大节省了设计时间,方便了设计者。产生的ROM元件将存储在设计工程之中,需要在程序中加入引用语句,才可以使用。 VHDL程序中使用CoreGenerator产生的元件需要加入两段语句,一是在实体部分对要引用的ROM元件进行说明,二是在结构体中对ROM元件例化,映射例化元件的输入/输出信号。 由于FPGA具有在线可再编程性能,因此当系统中FLASH 直接由FPGA存取时,我们可以用FPGA实现对Flash的编程,在编程操作之后,对FPGA 进行再配置,实现其它
系统功能,达到一个FPGA器件实现多种应用的目的。
4 结束语
使用VHDL语言,由FPGA来实现Flash编程器的功能,不仅节约了专用编程器的采购开支,更重要的是可以灵活、快速地实现专用Flash编程器的功能。随着微电子技术的发展,可编程器件的容量已经达到千万门级,越来越多的过去必须由专用芯片或器件才能完成的工作现在都可以通过设计软件,由FPGA来实现了。硬件的软件化已经成为电子行业中不可阻挡的趋势。
- 3DES算法的FPGA高速实现(06-21)
- 基于DSP的Max-Log-MAP算法实现与优化(05-27)
- DSP中DMA操作的无阻塞请求实现(06-18)
- 二维DCT编码的DSP实现与优化(09-08)
- 基于DSP处理器上并行实现ATR算法(01-29)
- 基于DSP的H.324终端设计(05-27)