首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
FPGA/CPLD可编程逻辑
» 一种基于FPGA实现的高速缓存设计
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
一种基于FPGA实现的高速缓存设计
发短消息
加为好友
pengpengpang
(pengpengpang)
当前离线
UID
1023229
帖子
6106
精华
0
积分
3055
阅读权限
90
来自
中国
在线时间
156 小时
注册时间
2013-12-20
最后登录
2016-7-3
论坛元老
UID
1023229
来自
中国
1
#
打印
字体大小:
t
T
pengpengpang
发表于 2014-5-26 21:44
|
显示全部帖子
一种基于FPGA实现的高速缓存设计
数据采集
,
科学研究
,
可靠性
,
嵌入式
,
技术
随着雷达、通信和图像处理中数字处理技术的飞速发展,现代化生产和科学研究对数据采集系统的要求更加严格。在嵌入式条件下,要求数据获取的速度越来越快,精度越来越高,以致数据量及处理速度要求大增,高速ADC的出现和DSP性能的不断提高也对系统将来的升级提出了更高要求,特别在一些特殊领域,如航空、航天等,其嵌入式系统体积小、功能强、实时性高,为了避免数据处理不及时,发生数据丢失,破坏系统可靠性,更要进一步提高系统实时性,必须研究开发高速嵌入式数据采集系统。
针对具体的任务要求,文中提出了一种通过FPGA实现转换接口的高速数据采集系统的系统结构,即高速A/ D+大容量附+高速DSP的嵌入式高速数据采集系统。模数转换器A/D进行高速数据采集,胁实现对高速A/D采集数据的存储和控制调度,DSP通过查询方式访问前端采集通道,对采集的数据进行高速处理,这种方法大大提高了DSP可以访问的外设数目,提高了DSP的处理能力,同时由于DSP不直接与模数转换芯片接口,所以ADC芯片的升级或者替代都不会影响原来的数据采集,而且采用了时分复用方式读取转换完成的数据,因此这个系统数据采集速率可以达到所采用的√虹)C芯片输出的最高速率,能充分发挥ELqP算法处理功能强大、速度快的优势,而FPGA狐设计灵活、通用性强等特点,使得整个系统具有实时性高、体积小、开发周期短、易于维护和扩展、适合于实时信号处理等多个优点。文中结合成功开发的高速采集系统结构,提出一种基于FPGA实现的最优FIFO结构来实现高速缓存,它可以成倍提高数据流通速率,增加嵌入式系统的实时性。
1 高速数据采集系统结构
实时信号处理系统中,高层处理算法的特点是所处理的数据量较低层算法少,但算法的控制结构复杂,适于用运算速度高、寻址方式灵活、通信机制强大的DSP芯片来实现。特别是TI公司的C6000系列DSP,其峰值处理速度已达每秒数十亿条指令,是当今最先进的DSP之一,非常适合于嵌入式实时系统应用。低层的信号预处理算法处理的数据量大、计算量大、对处理速度的要求高,但运算结构相对比较简单,适于用黜来进行硬件实现,这样能同时兼顾速度及灵活性。目前FPGA的容量已经跨过了百万门级,使得FPGA成为解决系统级设计的重要选择方案之一。它主要应用于协处理器,辅助DSP芯片完成一些计算密集型的算法。
在笔者设计的高速信息处理计算机中,高速ADC模块、FPGA模块以及DSP模块构成了高速数据采集系统,系统结构如图1所示。从此结构中可以看到,DSP可以在未知ADC控制方式的情况下,定时地访问外设来获得模数转换后的数据,而大容量的FPGA协助DSP完成数据的预处理,并可以保证采集数据不丢失。
其中ADC是一个12位精度、65M№采样速率的高速模数转换器,可进行高速采样,处理器选用TI公司的TMS320C6701。DSP内部最高时钟频率可以达到167MHz,DSP读取外部SDRAM的最高时钟频率是1/2 xCPU,而读取外部异步存储器的时钟频率可以通过CE空间控制寄存器来编程控制,其参数需要满足一定要求,即CLK>(Setup+Strobe+Hold)>2个时钟周期,时钟频率最高可达80MHz。如果DSP不通过缓存直接与A/D相连,在采样过程中,若A/D连续采样数据,DSP一直处于连续的间隔取数的状态,这将占用DSP大部分处理时间,导致DSP不能从事其他工作。也有可能出现上一次的数据还没有被计算机处理完,下一次采集过程就开始的情况。如果选取更高速的A/D,更会发生数据丢失,破坏系统的可靠性。因此最好的做法是采用高速缓存来存储采样到的数据,再集中传输一批数据,保证IXSP有充足的时间去处理、计算。
系统中采用容量比较大的FPGA,利用自主设计的IP核,主要协助主处理器实现数据的预处理(如FFT)功能。为了保证设计的硬件系统体积尽可能小,因此在不增加系统的硬件负担的前提条件下,利用系统中现有的FPGA,设计了基于FPGA实现的异步FIFO存储器作为高速缓存器,它满足前后读写时钟频率不同的硬件环境,可使采集系统设计灵活、简单、方便,具有很强的可扩展性。FIFO存储器具有两个特点:数据进出有序;输出输入口独立。灵活使用FIFO,可根据需要设计为不同速率、不同容量的数字系统,接口电路简洁且不占用系统地址资源,系统移植或升级换代方便,而且控制简单。
2 基于FPGA实现的异步FIFO的设计
2.1 FIFO结构设计
设计一个异步FIFO,读写使能由不同的时钟激励来控制输入数据和输出数据,空倩标志来防止数据的上溢和下溢,以及“半满”状态标志,在字宽和容量深度两方面都可以扩展。读写操作自动访问存储空间连续的存储单元,读出的数据和写入的数据顺序相同,不需要额外的地址信息。首先,由复位信号清空存储器数据;然后,在写使能和写时钟控制下向存储器中写数据,当FIFO写半满,half—full将有效(同步予写时钟),触发C6701中断,C6701中断服务程序通过DMA将FIFO中的数据取走并写入C6701片内数据存储器或SDMA中去,FIFO中的数据空间存满后,full信号有效,外部设备就不再向FIFO中写数据了;同理,在读时钟和读使能控制下从存储器中读数据时,若FIFO中的数据被外部设备取空了,则empty信号有效,外部设备停止对FIFO的读取。FIFO的外部接口见图2。
本系统数据宽度根据需要,两个端口可以设计为两端是12位、16位、32位。
一般常用的FIFO设计,都是两端数据宽度相同的FIFO结构。这很容易在XILINX公司提供的IP核中找到,或者用行为级语言描述得到。
但是,在笔者设计的硬件平台下,这些设计有局限性,分析如下:
因为TI公司的DSP C6701的EMIF支持32bit宽度的ASRAM,SDRAM和SBSRAM等存储器,只有CEI空间支持16bit和8bit的ROM接口,本系统设计的FPGA是CE2和CE3空间寻址,物理接口是32bit。那么如果FIFO读写端口设计为12位,DSP接收的32位数据仅低12位有效,而高20位是无效数据,一方面,这将大大降低DSP读取数据的吞吐率,另一方面由于需要处理无效数据而降低系统的实时性。
为了改进系统的性能,提高系统的实时性,可以采取两个措施:一是设计整字节宽度的FlFO端口,基于前端A/D的要求,最佳的数据宽度是16位;二是设计宽位数端口的FIFO,提高数据的吞吐率,基于后端DSP的要求,最佳的数据宽度是32位。由于C6701可以对数据存储器进行8bit/16bit/32bit的数据访问,数据从FIFO中读取数据到DSP的数据存储器后,可以根据需要决定是按字节、字、还是双字处理。
针对笔者的硬件系统,提出了一种基于FPGA的新型FIFO结构,输入数据宽度与输出数据宽度不同,即输入为16位、输出为32位的异步FIFo。分析系统的数据吞吐率:由于A/D数据输入口的速度固定,数据按采样频率输人FIFO,因此输入数据的时间是不变的,而C6701一次访问可以取走两个有效数据,在相同数据量的条件下明显降低数据读取时间。大大增加了DSP读取数据的吞吐率,提高系统实时处理时间。
如果输入数据的高4位不接地,则传给DSP的数据高4位是任意值,所以取完数后要将取得的数进行预处理,这将降低DSP的实时处理时间。因此在设计硬件电路时将FIFO的datain(15:12)硬件置0,避免了DSP的软件复位,省去DSP对数据的预处理过程,从而提高了DSP的实时处理能力。
笔者设计的FIFO是利用两个16位RAM并行连接,输入数据在写控制模块的调度下依次写入两个RAM中,两个RAM的输出经过缓存器直接与DSP相应数据线相连,保证了32位的数据宽度,内部实现如图3所示,其中的写控制逻辑实现见图4。其中写控制逻辑分别产生两个片选信号实现对两个存储器交替按字(16bit)进行写,读控制逻辑对两个存储器按双字(32bit)同时读,可以实现两端读写数据宽度的不同。
地址产生逻辑图见图5,读写地址产生利用相同的地址产生逻辑,在不同的时钟和使能信号控制下实现地址的增加。写地址产生器用CEl作为允许增控制信号,读地址产生器用rd-en作为允许增控制信号来实现地址的产生。
2.2异步FIFO的FPGA实现
由于FIFO是一种RAM的结构,在大多数参考资料中对洲的描述都是建立在数组存取的基础上的。在大多数EDA软件中,对VHDL硬件描述语言的编译都是通过综合器来完成的,综合器将VHDL转变成物理可形成的电路格式。然而遗憾的是,综合器对数组的综合一般是将其转变成寄存器的结构。可编程器件中的寄存器个数是有限的,而FIFO是一种基于RAM的器件,需要有大量的存储空间,也就会用掉大量的寄存器。所以,当直接用数组的形式来描述FIFO结构时,综合后的结构都会非常庞大。
幸运的是,XILINX FPGA器件提供的片内的RAM可直接使用,而不必使用寄存器来构成存储空间,从而大大提高了芯片的利用率。在XILINX FPGA产品中,根据型号的不同,提供了两种RAM结构:分布式RAM和BLOCK RAM。
分布式RAM存在于所有的XILINX FPGA器件中, 而对于BLOCK RAM。只有最新的SPARTAN VETEX系列中才提供。分布式RAM存储器是由CLB中的RAM结构实现的(LUT),每个CIB最多可以组成32×1或16×2容量的RAM。
BLOCK RAM存储器按列排列,左边从0列开始,每隔12列CLB排列一个BLOCK RAM存储器。每个BLOCK RAM是一个完全同步的双端口蝴,每个端口都有独立的控制信号,非常适合予FIFO器件的编写。
其中XCV1000E的Block SelectRAM共有96块BLOCK RAM,这种嵌入式的块RAM每块含有4096一bit存储单元,用户可以根据需要灵活配置,如表1所示。
单个块RAM所存储的数据宽度最高可为16位,可以多个块RAM级连以构成更大的数据宽度,最多可有64个块级连构成1024位的数据存储器。
表2为用两种方法使用FPGA资源情况的比较。
由表2可以看出,基于寄存器FIFo在综合后用掉了Virtex™-E器件大量的SLICES资源,而充分考虑FPGA器件结构,用其自带的存储器BLOCK RAM来设计,则仅用掉1%的SLICES资源,两厢一比较,明显后一种设计可以充分节省现有的FPGA资源,设计出容量更大的存储器,且更经济、有效。
3 结束语
由于现在ADC的精度和速度一对矛盾,高速度难以做到高精度,所以采集到的数据位数较低,而后端处理器的处理位数越来越高。现在的DSP一般都可以做到32位,因此,如何实现高速ADC和DSP的接口,提高系统的实时性是数据采集系统普遍关注的问题。文中针对自己设计的高速数据采集通道的硬件平台,提出了一种新型的存储器设计思想,输入输出数据宽度不同的高速FIFO缓存,并根据所选用的FPGA器件特点,选择了资源占用最少、效率最高的实现方法,解决了高速数据采集通道数据容量大、实时性要求高的问题。对其他高速采集系统同样具有参考价值。
作者:景艳,黄士坦,张遂南
收藏
分享
评分
记录学习中的点点滴滴,让每一天过的更加有意义!
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议