一种FPGA实现的高速缓存设计_第1页
一种FPGA实现的高速缓存设计_第2页
一种FPGA实现的高速缓存设计_第3页
一种FPGA实现的高速缓存设计_第4页
一种FPGA实现的高速缓存设计_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、【Word版本下载可任意编辑】 一种FPGA实现的高速缓存设计 引言 随着雷达、通信和图像处理中数字处理技术的飞速发展,现代化生产和科学研究对数据采集系统的要求更加严格。在嵌入式条件下,要求数据获取的速度越来越快,精度越来越高,以致数据量及处理速度要求大增,高速ADC的出现和DSP性能的不断提高也对系统将来的升级提出了更*求,特别在一些特殊领域,如航空、航天等,其嵌入式系统体积小、功能强、实时性高,为了防止数据处理不及时,发生数据丢失,破坏系统可靠性,更要进一步提高系统实时性,必须研究开发高速嵌入式数据采集系统。 针对具体的任务要求,文中提出了一种通过FPGA 实现转换接口的高速数据采集系统的

2、系统构造,即高速A/D+大容量FPGA+高速DSP的嵌入式高速数据采集系统。模数转换器A/D开展高速数据采集,FPGA实现对高速A/D 采集数据的存储和控制调度,DSP 通过查询方式访问前端采集通道,对采集的数据开展高速处理,这种方法大大提高了DSP 可以访问的外设数目,提高了DSP的处理能力,同时由于DSP 不直接与模数转换芯片接口,所以ADC 芯片的升级或者替代都不会影响原来的数据采集,而且采用了时分复用方式读取转换完成的数据,因此这个系统数据采集速率可以到达所采用的ADC 芯片输出的速率,能充分发挥DSP 算法处理功能强大、速度快的优势,而FPGA 设计灵活、通用性强等特点,使得整个系统

3、具有实时性高、体积小、开发周期短、易于维护和扩展、适合于实时信号处理等多个优点。文中结合成功开发的高速采集系统构造,提出一种基于FPGA实现的FIFO构来实现高速缓存,它可以成倍提高数据流通速率,增加嵌入式系统的实时性。 高速数据采集系统构造 实时信号处理系统中,高层处理算法的特点是所处理的数据量较低层算法少,但算法的控制构造复杂,适于用运算速度高、寻址方式灵活、通信机制强大的DSP芯片来实现。特别是TI 公司的C6000 系列DSP,其峰值处理速度已达每秒数十亿条指令,是当今的DSP之一,非常适合于嵌入式实时系统应用。低层的信号预处理算法处理的数据量大、计算量大、对处理速度的要求高,但运算构

4、造相比照较简单,适于用FPGA来开展硬件实现,这样能同时兼顾速度及灵活性。目前FPGA的容量已经跨过了百万门级,使得FPGA成为解决系统级设计的重要选择方案之一。它主要应用于协处理器,辅助DSP芯片完成一些计算密集型的算法。 在笔者设计的高速信息处理计算机中,高速ADC模块、FPGA 模块以及DSP 模块构成了高速数据采集系统,从此构造中可以看到,DSP可以在未知ADC 控制方式的情况下,定时地访问外设来获得模数转换后的数据,而大容量的FPGA协助DSP完成数据的预处理,并可以保证采集数据不丢失。 其中ADC是一个12位精度、65MHz采样速率的高速模数转换器,可开展高速采样,处理器选用TI公

5、司的TMS320C6701 。DSP 内部时钟频率可以到达167MHz,DSP读取外部SDRAM 的时钟频率是1/2CPU ,而读取外部异步存储器的时钟频率可以通过CE 空间控制存放器来编程控制,其参数需要满足一定要求,即CLK(Setup+Strobe+Hold)2个时钟周期,时钟频率可达80MHz。如果DSP 不通过缓存直接与A/D相连,在采样过程中,若A/D连续采样数据,DSP一直处于连续的间隔取数的状态,这将占用DSP 大部分处理时间,导致DSP 不能从事其他工作。也有可能出现上的数据还没有被计算机处理完,下采集过程就开始的情况。如果选取更高速的A/D ,更会发生数据丢失,破坏系统的可

6、靠性。因此的做法是采用高速缓存来存储采样到的数据,再集中传输一批数据,保证DSP有充足的时间去处理、计算。 系统中采用容量比较大的FPGA,利用自主设计的IP核,主要协助主处理器实现数据的预处理(如FFT) 功能。为了保证设计的硬件系统体积尽可能小,因此在不增加系统的硬件负担的前提条件下,利用系统中现有的FPGA,设计了基于FPGA 实现的异步FIFO 存储器作为高速缓存器,它满足前后读写时钟频率不同的硬件环境,可使采集系统设计灵活、简单、方便,具有很强的可扩展性。FIFO 存储器具有两个特点:数据进出有序;输出输入口独立。灵活使用FIFO ,可根据需要设计为不同速率、不同容量的数字系统,接口

7、电路简洁且不占用系统地址资源,系统移植或升级换代方便,而且控制简单。 基于FPGA 实现的异步FIFO 的设计 FIFO构造设计 设计一个异步FIFO ,读写使能由不同的时钟激励来控制输入数据和输出数据,空/满标志来防止数据的上溢和下溢,以及“半满”状态标志,在字宽和容量深度两方面都可以扩展。读写操作自动访问存储空间连续的存储单元,读出的数据和写入的数据顺序相同,不需要额外的地址信息。首先,由复位信号清空存储器数据;然后,在写使能和写时钟控制下向存储器中写数据,当FIFO写半满,half-full将有效(同步于写时钟) ,触发C6701中断,C6701中断服务程序通过DMA将FIFO中的数据取

8、走并写入C6701片内数据存储器或SDRAM中去,FIFO中的数据空间存满后,full信号有效,外部设备就不再向FIFO中写数据了;同理,在读时钟和读使能控制下从存储器中读数据时,若FIFO中的数据被外部设备取空了,则empty 信号有效,外部设备停止对FIFO的读取。 本系统数据宽度根据需要,两个端口可以设计为两端是12位、16位、32位。 一般常用的FIFO设计,都是两端数据宽度相同的FIFO 构造。这很容易在XILINX公司提供的IP核中找到,或者用行为级语言描述得到。 但是,在笔者设计的硬件平台下,这些设计有局限性,分析如下: 因为TI公司的DSP C6701的EMIF支持32bit宽

9、度的ASRAM,SDRAM和SBSRAM等存储器,只有CE1空间支持16bit和8bit的ROM接口,本系统设计的FPGA是CE2和CE3空间寻址,物理接口是32bit。那么如果FIFO读写端口设计为12位,DSP接收的32位数据仅低12 位有效,而高20位是无效数据,一方面,这将大大降低DSP 读取数据的吞吐率,另一方面由于需要处理无效数据而降低系统的实时性。 为了改良系统的性能,提高系统的实时性,可以采取两个措施:一是设计整字节宽度的FIFO端口,基于前端A/D的要求,的数据宽度是16位;二是设计宽位数端口的FIFO,提高数据的吞吐率,基于后端DSP的要求,的数据宽度是32位。由于C670

10、1可以对数据存储器开展8bit/16bit/32bit的数据访问,数据从FIFO中读取数据到DSP 的数据存储器后,可以根据需要决定是按字节、字、还是双字处理。 针对笔者的硬件系统,提出了一种基于FPGA的新型FIFO构造,输入数据宽度与输出数据宽度不同,即输入为16位、输出为32位的异步FIFO。分析系统的数据吞吐率:由于A/D数据输入口的速度固定,数据按采样频率输入FIFO ,因此输入数据的时间是不变的,而C6701访问可以取走两个有效数据,在相同数据量的条件下明显降低数据读取时间,大大增加了DSP读取数据的吞吐率,提高系统实时处理时间。 如果输入数据的高4 位不接地,则传给DSP的数据高

11、4位是任意值,所以取完数后要将取得的数开展预处理,这将降低DSP 的实时处理时间。因此在设计硬件电路时将FIFO的datain(15:12) 硬件置0,防止了DSP的软件复位,省去DSP对数据的预处理过程,从而提高了DSP的实时处理能力。 笔者设计的FIFO是利用两个16位RAM并行连接,输入数据在写控制模块的调度下依次写入两个RAM中,两个RAM的输出经过缓存器直接与DSP相应数据线相连,保证了32位的数据宽度,内部实现如图3所示,其中的写控制逻辑实现 。其中写控制逻辑分别产生两个片选信号实现对两个存储器交替按字(16bit) 开展写,读控制逻辑对两个存储器按双字(32bit) 同时读,可以

12、实现两端读写数据宽度的不同。 地址产生逻辑 ,读写地址产生利用相同的地址产生逻辑,在不同的时钟和使能信号控制下实现地址的增加。写地址产生器用CE1 作为允许增控制信号,读地址产生器用rd - en 作为允许增控制信号来实现地址的产生。 异步FIFO的FPGA实现 由于FIFO是一种RAM的构造,在大多数参考资料中对RAM 的描述都是建立在数组存取的根底上的。在大多数EDA软件中,对VHDL硬件描述语言的编译都是通过综合器来完成的,综合器将VHDL转变成物理可形成的电路格式。然而遗憾的是,综合器对数组的综合一般是将其转变成存放器的构造。可编程器件中的存放器个数是有限的,而FIFO是一种基于RAM

13、的器件,需要有大量的存储空间,也就会用掉大量的存放器。所以,当直接用数组的形式来描述FIFO构造时,综合后的构造都会非常庞大。 幸运的是,XILINX FPGA器件提供的片内的RAM可直接使用,而不必使用存放器来构成存储空间,从而大大提高了芯片的利用率。在XILINX FPGA产品中,根据型号的不同,提供了两种RAM 构造: 分布式RAM和BLOCK RAM。 分布式RAM 存在于所有的XILINX FPGA器件中,而对于BLOCK RAM,只有的SPARTAN VETEX系列中才提供。分布式RAM 存储器是由CLB 中的RAM构造实现的(LUT),每个CLB 多可以组成321或162 容量的

14、RAM。 BLOCK RAM存储器按列排列,左边从0列开始,每隔12 列CLB 排列一个BLOCK RAM存储器。每个BLOCK RAM是一个完全同步的双端口RAM,每个端口都有独立的控制信号,非常适合于FIFO器件的编写。 其中XCV1000E的Block SelectRAM共有96块BLOCK RAM ,这种嵌入式的块RAM每块含有4096-bit存储单元,用户可以根据需要灵活配置。 单个块RAM 所存储的数据宽度可为16位,可以多个块RAM级连以构成更大的数据宽度,多可有64个块级连构成1024位的数据存储器。 用两种方法使用FPGA资源情况的比较。 由表2 可以看出,基于存放器FIFO在综合后用掉了VirtexTM-E器件大量的SLICES资源,而充分考虑FPGA器件构造,用其自带的存储器BLOCK RAM来设计,则仅用掉1%的SLICES资源,两厢一比较,明显后一种设计可以充分节省现有的FPGA资源,设计出容量更大的存储器,且更经济、有效。 结束语 由于现在ADC的精度和速度是一对矛盾,高速度难以做到高

温馨提示

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

评论

0/150

提交评论