FPGA内嵌的块RAM及其在FFT算法中的应用_第1页
FPGA内嵌的块RAM及其在FFT算法中的应用_第2页
FPGA内嵌的块RAM及其在FFT算法中的应用_第3页
FPGA内嵌的块RAM及其在FFT算法中的应用_第4页
FPGA内嵌的块RAM及其在FFT算法中的应用_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、FPGA内嵌的块RAM及其在FFT算法中的应用1、 引言在现代逻辑设计中,FPGA占有重要的地位,不仅因为具有强大的逻辑功能和高速的处理速度,同时因为其内部嵌有大量的可配置的块RAM1,使其得到了广泛地应用,例如FFT算法的实现等。FFT算法的实现有多种方案2,比如采用单片机或DSP芯片实现,但是因需要外接存储器而使其运算速度受到了限制34,而采用FPGA实现FFT算法,避免了使用外部存储器,加快了数据的读取和存储速度,进而可以提高FFT的运算速度56。随着设计的日益复杂,RAM的需求量也越来越大,不同器件商生产的不同FPGA器件族内嵌块RAM的结构又有一些不同,在Altera公司的FPGA内

2、部嵌入的RAM块有三种7,分别是M512RAM(512bit RAM)、M4K(4Kbit)和M-RAM(512Kbit RAM),其中M512主要用于大量分散的数据存储、浅FIFO、移位寄存器、时钟域隔离等功能。M4K通常用作芯片内部数据流的缓存、ATM信元的处理、信元FIFO接口以及CPU的程序存储器等。而M-RAM主要用于在大数据包的缓存(如以太网帧、IP包等大到几K字节的数据包),视频图像帧的缓存,回波抵消(Echo Canceller)数据存储等等。本文将详细介绍内嵌RAM块的不同配置模式,及其实现的FIFO存储器在FFT算法中的应用。2、 FPGA内嵌块RAM RAM几乎是可编程逻

3、辑器件中除了LE之外用得最多的功能块了。通常,FPGA内嵌块RAM可以配置成以下几种模式:单端口RAM、简单双口RAM、真正双口RAM、移位寄存器、ROM和FIFO等模式8。而在Altera公司的FPGA中内嵌块RAM以M4K最多,本文就以M4K块RAM为例,介绍这几种模块的实现方式及其在FFT算法中的应用。2.1 单端口RAM模式如图1所示为单端口RAM的模型,其中两个时钟inclock和outclock可以使用同一个时钟源,inclocken和outclocken是两个时钟使能信号,inaclr和outaclr是异步清零信号,可以分别对输入级和输出级寄存器清零。图1 单端口RAM模型单端口

4、RAM模式支持非同时的读写操作。同时每个M4K RAM块可以被分为两部分,分别实现两个独立的单端口RAM。当器件内部存储单元不足时,QuartusII软件就会自动的将M4K RAM配置成两个相互独立的单端口RAM。需要注意的是,当要实现两个独立的单端口RAM模块时,首先要保证每个模块所占用的存储空间小于M4K RAM存储空间的1/2。在单端口RAM配置中,输出只在read-during-write模式有效,即只有在写操作有效时,写入到RAM的数据才能被读出。当输出寄存器被旁路时,新数据在其被写入时的时钟的上升沿有效。2.2 简单双端口RAM模式如图2所示为简单双端口RAM模型,图中左边的端口只

5、写,右边的端口只读,因此这种RAM也被称为伪双端口RAM(Pseudo Dual Port RAM)。这种简单双端口RAM模式也支持同时的读写操作。图2 简单双端口RAM模型M4K RAM块支持不同的端口宽度设置,允许读端口宽度与写端口宽度不同。这一特性有着广泛地应用,例如:不同总线宽度的并串转换器等。下表1显示了M4K RAM支持的混合端口配置情况。表1 简单双端口RAM模型的混合端口配置在简单双端口RAM模式中,M4K RAM块具有一个写使能信号wren和一个读使能信号rden,当rden为高电平时,读操作有效。当读使能信号无效时,当前数据被保存在输出端口。 当读操作和写操作同时对同一个地

6、址单元时,简单双口RAM的输出或者是不确定值,或者是存储在此地址单元的原来的数据(这个可以在QuartusII软件中进行设计)。2.3 真正双端口RAM模式 如图3所示为真正双端口RAM模式,图中左边的端口A和右边的端口B都支持读写操作,wren信号为高为写操作,低为读操作。 同时它支持两个端口读写操作的任何组合:两个同时读操作、两个端口同时写操作或者在两个不同的时钟下一个端口执行写操作,另一个端口执行读操作。图3 真正双端口RAM模式真正双端口RAM模式在很多应用中可以增加存储带宽,例如,在包含Altera Nios嵌入式处理器和DMA控制器系统中,采用真正双端口RAM模式会很方便,相反,如

7、果在这样的一个系统中,采用简单双端口RAM模式,当处理器和DMA控制器同时访问RAM时,就会出现问题。真正双端口RAM模式支持处理器和DMA控制器同时,这个特性避免了采用仲裁的麻烦,同时极大的提高了系统的带宽。在由单个M4K RAM块实现的真正双端口RAM模式中,能达到的最宽的数据位为256*16-bit或者256*18-bit(包括校验位),而不支持128*32-bit和128*36-bit(包含校验位),因为这时输出驱动器的个数与M4K RAM块的最大数据位宽相等,而真正双端口RAM在两边都有输出端口,这样真正双端口RAM的最大数据位宽等于输出驱动器的一半。然而,可以采用级联多个M4K R

8、AM块的方式实现更宽数据位的双端口RAM。另外,真正双端口RAM模型也支持混合端口宽度,如表2所示。表2 真正双端口RAM模型的混合端口配置在真正双端口RAM模式中,RAM的输出只能配置成read-during-write模式。这意味着在写操作执行过程中,通过A或B端口写入到RAM的数据,可以分别通过输出端口A或B输出。当输出寄存器被旁路时,新数据在其被写入的时钟的上升沿有效。当两个端口同时向同一个地址单元写入数据时,写冲突将会发生,这样存入该地址单元的将是未知的。 要实现有效地向同一个地址单元写入数据,A端口和B端口时钟的上升沿的到来之间必须满足一个最小写周期时间间隔。因为在写时钟的下降沿,

9、数据被写入M4K RAM块中,所以A端口时钟的上升沿要比B端口时钟的上升沿晚到来1/2个最小写时钟周期,如果不满足这个时间要求,则存入此地址单元的数据无效。2.4 RAM用做移位寄存器在DSP应用情况中,可以将内嵌的RAM块配置成移位寄存器,例如FIR滤波器、随机数据产生器、多通道滤波器、自相关和互相关功能模块等,在这些和其他需要本地存储的DSP系统中,一般是利用触发器来实现,但是这种方法会耗费很多的逻辑单元,尤其是在实现较大的移位寄存器时。而利用内嵌的RAM块实现移位存储器,既可以节约逻辑单元和布线资源,同时也可以提高效率。假设设计一个移位寄存器,输入数据宽度为w,抽头数为n,抽头长度为m,

10、如图4所示。在用RAM块实现移位寄存器时,需要满足w*n小于RAM块的最大支持的数据宽度,w×n×m小于RAM块的最大比特数。M4K的最大数据宽度为36bit,最大比特数为4608。而如果需要更大的移位寄存器可以用更多的RAM级联实现。图4 移位寄存器2.5 RAM用做ROMM4K RAM块还可以配置成ROM,可以使用存储器初始化文件(.mif)对ROM进行初始化,在上电后使其内部的内容保持不变,即实现了ROM功能。2.6 RAM实现FIFO实际上,在FIFO的具体实现时,RAM的部分是采用简单双端口模式操作的,一个端口只写数据而另一个端口只读数据,另外在RAM周围加一些控

11、制电路,下面将详细介绍由内嵌RAM块配置成的FIFO在FFT算法中的应用。3、 FIFO在FFT算法中的应用3.1 FFT简介及其乒乓操作 快速傅立叶变换(FFT)在数字信号处理中具有非常重要的地位,并且有着广泛的应用,其中FFT的运算速度和占用的存储单元是设计中重点考虑的方面,在实现FFT算法的各种方法中,基于FPGA的实现在速度、精度和性价比等方面具有不可比拟的优势3,其倍受设计者的亲睐,其中FPGA内嵌RAM使得FFT计算中数据的存储变得方便快捷,同时采用内嵌RAM块能很好的完成“乒乓操作8”,进而提高了运算速度。“乒乓操作”是一个常常应用于数据流控制的处理技巧,典型的乒乓操作方法如图5

12、所示输入数据流选择单元MUX2选1数据缓冲模块1数据缓冲模块2输出数据流选择单元MUX2选1数据流运算处理模块图5 乒乓操作流程图乒乓操作的处理流程描述如下:输入数据流通过“输入数据流选择单元”,等时地将数据流分配到两个数据缓冲模块。数据缓冲模块可以是任何存储模块,比较常用的存储单元为双口RAM(DPRAM)、单口RAM(SPRAM)和FIFO等。在第一个缓冲周期,将输入的数据流缓存到“数据缓冲模块1”。在第2个缓冲周期,通过“输入数据流选择单元”的切换,将输入的数据流缓存到“数据缓冲模块2”,与此同时,将“数据缓冲模块1”缓存的第1个周期的数据通过“输出数据流选择单元”的选择,送到“数据流运

13、算处理模块”被运算处理。在第3个缓冲周期,通过“输入数据流选择单元”的再次切换,将输入的数据流缓存到“数据缓冲模块1”,与此同时,将“数据缓冲模块2”缓存的第2个周期的数据通过“输出数据流选择单元”的切换,送到“数据流运算处理模块”被运算处理。如此循环,周而复始。 乒乓操作的最大特点是,通过“输入数据流选择单元”和“输出数据流选择单元”按节拍、相互配合的切换,将经过缓冲的数据流没有时间停顿地送到“数据流运算处理模块”被运算和处理。把乒乓操作模块当做是一个整体,站在这个模块的两端看数据,输入数据流和输出数据流是连续不断的,没有任何停顿,因此非常适合对数据口进行流水线式处理。所以采用乒乓操作实现F

14、FT算法可以提高计算速度。3.1 FIFO存储单元在FFT算法中的应用FFT算法的处理过程开始于数据输入过程,此过程中,采样数据被读入并保存在存储器中;接下来用存储的数据作FFT计算并输出结果。存储单元RAM是用来存储输入数据和中间运算结果的单元,每次蝶形运算都要经由RAM读写输入输出数据,在进行下一级变换的同时,首先应将结果回写到读出数据的RAM存贮器中,为加快FFT运算速度,构造了双端口FIFO RAM来加大数据的吞吐量,并实现乒乓操作,其输入输出共用一个时钟,在时钟的下降沿写入数据,上升沿读出数据。双端口FIFO RAM可配置在片内或片外。内置RAM是FPGA的一种新增资源。将RAM设置

15、在FPAG内部不存在驱动和pad延时问题,速度快且控制简单,可提高系统的可靠性。为此,本设计应用Atera FPGA的内置RAM资源设计内置RAM,提高系统总体速度和可靠性。以下介绍FIFO的具体实现过程。4、 FIFO的实现及其仿真图Altera公司提供了强大而又便捷的QuartusII和MegaWizard Plug-In Manager工具,可以帮助设计者简单快捷地实现FIFO存储器。启动QuartusII软件中MegaWizard Plug-In Manager工具,并选择plm_fifo,如图5所示,然后根据设计要求,按照向导进一步设计各个参数,最后形成如图6所示的模块,再添加必要的

16、输入输出引脚,即完成了FIFO的初步设计。从上述过程可以看到,Altera公司提供的QuartusII软件在实现内嵌FIFO功能上具有方便快捷的特点,可以加快整个设计的速度,并保证了设计的正确性。图5 MegaWizard工具有plm_fifo 模块图6 QuartusII软件中实现的FIFO模块 为了验证其是否符合设计要求,对其进行仿真,得到如图7所示的图形。由图7可以看到,上面设计的存储器符合FIFO存储器的要求,符合FFI算法的实现中对存储器的要求。图7 FIFO存储器仿真图5、小结本文总结了Altera公司FPGA内嵌块RAM的不同配置方法,并详细介绍了每种配置方法的特点,同时以由内嵌RAM块实现的FIFO存储器在FFT算法中的应用为例,详细的介绍了FIFO存储器的具体实现过程,并对FFT算法中利用FIFO存储器实现的乒乓操作进行了说明,最后给出了FIFO存储器的仿真图。参考文献:1 EDA先锋工作室,Altera FPGA/CPLD设计(基础篇),北京,人民邮电出版社,20052 刘嘉新,付金霞,苏健民,用FPGA实现快速傅立叶变换,信息技术,2006年第2期3 孙志坚,刘学梅,在FPGA中实现高速FFT算法的研究,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论