以FPGA为桥梁的FIFO设计方案及其应用

发布者:心灵捕手最新更新时间:2009-11-21 来源: 张奇山 刘安芝 刘希顺关键字:FPGA  FIFO  SDRAM  DSP 手机看文章 扫描二维码
随时随地手机看文章

  引 言

  在利用DSP实现视频实时跟踪时,需要进行大量高速的图像采集。而DSP本身自带的FIFO并不足以支持系统中大量数据的暂时存储,这就要求大的中间缓存,而专用的高速FIFO芯片价格昂贵且容量受限,大大增加了商业成本,因此在实际应用中寻找FIFO代替器件是很有必要的。

  1 器件选择

  这里在视频信号处理系统中,将利用FPGA作为桥梁,实现对SDRAM的控制,以达到大量高速存取数据的功能。之所以选取SDRAM,主要是因为在各种随机存取器件中,SDRAM的容量较大,价格较低,且数据突发传输模式大大提高了存取速度,能够满足应用的要求。

  FIFO的速度受到两个因素的限制:

  (1)SDRAM的最高工作频率。SDRAM的工作频率越高,数据的传输速率就越高;

  (2)SDRAM的突发长度。SDRAM的突发长度越长,对数据流的吞吐量就越大,可以从某种程度上提高数据的传输速率。

  FIFO的大小由所选SDRAM芯片的容量来决定。该设计以采用MICRON公司的MT48LC4M3282(4 BANK×4M×32 b)为例,存储容量为128 Mb,数据带宽为32位,内部由4个BANK组成,每个BANK有4 096行和256列。

  MT48LC4M3282的控制信号有CLK(时钟信号)、CKE(时钟使能)、CS(片选信号)、WE(写使能)、CAS(列有效)、RAS(行有效)、DQM0~DQM3(输入输出使能)。控制信号组成的常用控制命令如表1所示。

控制信号组成的常用控制命令

  2 FIFO系统设计

  FIFO系统由FGPA和SDRAM两部分组成。其中,FGPA内部包含FIFO监控器、缓冲器、SDRAM控制器三个模块。FIFO监控器的作用是将FIFO的状态转变成状态机的读、写信号。若操作为向SDRAM写数据,则在FIFO已满时,FIFO监控器送出一个信号,以阻止写操作继续向FIFO中写数据而造成溢出;若操作为向SDRAM读数据,则在缓冲器已空时,FIFO监控器送出一个信号,以阻止读操作继续从FIFO中读数据而造成无效数据的读出。FIFO的模块结构如图1所示。

FIFO的模块结构[page]

  在该设计中,摄像头采用640×480的屏幕分辨率,图像深度为8,每秒为25帧,图像数据量的大小为图像中像素总数与图像深度的乘积,由此可以得出每帧图像的大小为2.457 Mb,每秒钟视频产生数据的大小为61.44 Mb。因为系统向SDRAM控制器写入和读出数据的速度比较低,约为62 MHz,FPGA的外接晶振CLK为27 MHz,FPGA和SDRAM的工作时钟由锁相环4倍频后生成,即为108 MHz,所以SDRAM控制器向SDRAM写入和读出数据的速率为108 MHz,因此二者属于不同的时钟域,需要用缓冲器作为输入和输出的缓存。

  SDRAM控制器的模块结构如图2所示,其中SDRAM控制器内部包括:初始化模块、模式寄存器、控制模块和状态机。SDRAM的接口设计是极其关键的,可根据SDRAM内部操作状态之间的联系,通过状态机来实现接口设计。初始化模块负责SDRAM的初始化,在上电和时钟稳定后等待100 ms,至少执行一条空操作,然后对所有页执行预充电操作,使所有页处于空闲状态,接着向各页发出两条刷新操作指令,最后发出一个模式寄存器装载命令,使SDRAM有确定的状态进行读写操作。模式寄存器可根据要求对SDRAM的突发长度、突发类型、CAS延时的时钟数、运行模式和写突发模式进行设置,确定SDRAM在读写操作时的工作状态。模式寄存器M0~M2用于规定突发长度,可以为1,2,4,8。M3用于规定突发类型,当M3=0时,突发类型是连续的;当M3=1时,突发类型是交错的。M4~M6用于规定CAS延迟的时钟周期数,可以分为1,2,3。M7,M8用于规定运行模式。M9用于规定写突发模式,当M9=0时,按实际编程的突发长度存取;当M9=1时,按单个存取单元写入,但可按实际编程的突发长度读出。

SDRAM控制器的模块结构

  状态机是SDRAM控制器的核心控制模块,其作用主要有两个方面:其一是对各模块发出的操作请求进行仲裁,在适当的时刻作出反映,发出对SDRAM适当的控制命令;其二是协调各模块之间的时序关系,满足对SDRAM读写所必需的时序要求。状态机的状态转移如图3所示。

状态机的状态转移[page]

  在模式设定之后,BANK和行地址选中需要访问数据所在的具体BANK块和行,状态机对这一行发出激活命令,从激活到读写操作需要经过一个tRCD的延时,设计中选tRCD=20 ns,而系统时钟周期为9.26 ns,所以从激活到执行读写操作之间至少需要3个时钟周期。在执行读写操作时,只要状态机通过读写命令选中数据所在行的列地址,就能达到读写具体存储单元的目的。状态机对SDRAM发出一个读命令后,需要等待一个CAS latency,然后才能读数据;而写操作是实时的,不需要延时,状态机在发出写命令后,就可以对SDRAM进行写操作。SDRAM同时只允许一行地址激活,因此在完成某BANK/ROW的读写操作后,对该BANK/ROW进行预充电,然后才能激活下一个BANK/ROW。从预充电成功到下一次激活命令成功,如果是在同一个BANK块,则需要延时tRC,如果是不同的BANK块,则需要延时tRRD。

  SDRAM要求在64 ms之内对4 096行进行刷新,也就是每15.625μs刷新一行。由于系统时钟周期为9.26 ns,所以刷新模块计数达到1 685时,就需要对SDRAM发出刷新命令,保证SDRAM中的数据不丢失。将自动刷新请求设为优先请求,状态机内部有请求仲裁逻辑,当自动刷新请求和其他请求同时出现时,优先保证自动刷新请求,状态转移至刷新操作,当刷新操作结束时,重新返回空闲状态,开始响应其他请求。

  3 工程应用介绍

  该设计目的是为了扩展TMS320DM642的FIFO容量,以FPGA为接口,实现与SDRAM的连接。TMS320DM642可以对4 GB的地址进行寻址,而实际应用中FIFO的容量只有256 KB,寻址空间为0x0184000~0x0187FFFF,因此在实际应用中必须进行扩展。这里采用1片MICRON公司的MT48LC4M3282型号的128 Mb SDRAM,采用32位数据总线,将其通过FPGA配置在TMS320DM642处理器的EMIFA CE3上,其地址范围为0xB0000000~0xB7FFFFFF。在该设计中,突发长度为8,CAS latency为3。图4为用Modelsim SE 6.0仿真的SDRAM读时序图。

用Modelsim SE 6.0仿真的SDRAM读时序图

  4 结 语

  该设计已应用于目标识别与跟踪系统中的帧缓冲。文中主要介绍了SDRAM的具体信号关系,说明各种操作命令,给出在高速图像存储系统中SDRAM控制器的具体硬件接口设计。大容量存储器是FIFO的发展方向,从现在通用的SDRAM、专用的SRAM,到DDR SDRAM,容量越来越大,速度也越来越快,而用FPGA作为SDRAM的控制器,具有最大的灵活性,也能在最大限度上发挥SDRAM高速度的优势,因此对它进行研究具有重要的意义。

关键字:FPGA  FIFO  SDRAM  DSP 引用地址:以FPGA为桥梁的FIFO设计方案及其应用

上一篇:基于可编程逻辑器件PLD的数字电路设计方案
下一篇:基于可编程控制器的工业机械手无线遥控系统

推荐阅读最新更新时间:2024-05-02 20:55

FPGA供电要求和最新DC/DC稳压器解决方案
  随着FPGA制造工艺尺寸持续缩小、设计配置更加灵活,以及采用FPGA的系统的不断发展,原来只采用微处理器和ASIC的应用现在也可以用FPGA来实现了。最近FPGA供应商推出的新型可编程器件进一步缩小了FPGA和ASIC之间的性能差别。尽管这类器件的可配置性对设计工程师很有吸引力,但使用这些器件所涉及的复杂设计规则和接口协议,要求设计工程师经过全面的培训,并需要进行参考设计评估、设计仿真和验证工作。另一方面,FPGA应用中非常复杂的模拟设计,例如用于内核、I/O、存储器、时钟和其它电压轨的DC/DC稳压器,也要求新的解决方案。本文讨论的高性能DC/DC转换器有助于系统设计工程师克服这些挑战。   FPGA系统的供电要求
[嵌入式]
<font color='red'>FPGA</font>供电要求和最新DC/DC稳压器解决方案
controller_4G08的方案设计 实现了FPGA对Flash的控制
本文设计了一个Flash控制器controller_4G08,它建立了自己的指令集,可以方便地实现FPGA对Flash的控制和读写操作。FPGA主状态机可以在系统时钟频率下对controller_4G08发送指令,然后等待controller_4G08返回的中断,中断返回即表示操作完成,无需关心Flash要求的操作时序。采用这个控制器将大大简化FPGA主状态机的状态数量,方便设计和调试,同时代码具有很强的可移植性。 1 controller_4G08的设计方案 理论上讲FPGA可以直接对Flash操作,但这样会使主状态机状态很多,程序繁琐,当需要大批量数据反复读写时很不方便。本文设计了一个控制器controller_4G08
[工业控制]
controller_4G08的方案设计 实现了<font color='red'>FPGA</font>对Flash的控制
IDT 推出10G串行缓冲器为3G 及以上技术提供先进DSP密集无线服务
稳定的 10 Gbps 性能和高达 90 Mb 的存储器 可满足下一代蜂窝基站极高的数据吞吐量需求    IDT 公司 ( Integrated Device Technology, Inc.; NASDAQ: IDTI ) 推出业界首个基于串行 RapidIO 的 10G 串行缓冲器存储解决方案 , 进一步巩固了在无线基础设施架构设计的领导地位 。 该缓冲器与 IDT 先前推出的预处理交换芯片( PPS )组成的无线芯片组解决方案可提供一种优化的互连,使 DSP 性能提高 20 % ,从而为终端用户提供包括移动视频等具有成本效益的先进 DSP 密集无线服务。该无线芯片组可与
[新品]
Actel推出带有Cortex-M3和可编程模拟资源的FPGA
    爱特公司(Actel Corporation)宣布推出智能型混合信号FPGA器件SmartFusion,该产品现正投入批量生产。SmartFusion器件带有Actel经过验证的FPGA架构,该架构包括基于ARM Cortex-M3硬核处理器的完整微控制器子系统,以及可编程Flash模拟模块。SmartFusion器件能让嵌入式产品设计人员使用单芯片便能轻易构建所需要的系统,获得全部所需功能,而且无需牺牲产品性能。     Smartgrid Technologies首席技术官David Brain称:“SmartFusion不但为我们提供了构建高度灵活的smartgrid传感器所需的资源,而且还具有更大的灵活性
[嵌入式]
DDR3存储器接口控制器IP加速数据处理应用
  DDR3存储器系统可以大大提升各种数据处理应用的性能。然而,和过去几代(DDR和DDR2)器件相比,DDR3存储器器件有了一些新的要求。为了充分利用和发挥DDR3存储器的优点,使用一个高效且易于使用的DDR3存储器接口控制器是非常重要的。视屏处理应用就是一个很好的示例,说明了DDR3存储器系统的主要需求以及在类似数据流处理系统中DDR3接口所需的特性。   视频处理系统将对于数据带宽的要求推高到了极致:系统可以处理越多的数据,就具有越高的性价比。视频聚合器和路由器可并行处理多个视频流,因此对于匹配数据处理能力和视频带宽的需求就成为了设计的一大挑战。FPGA可通过在单个FPGA中实现多个视频处理器来提供强大的处理能力。那么现在
[嵌入式]
DDR3存储器接口控制器IP加速数据处理应用
Adaboost算法的FPGA实现与性能分析
Adaboost 算法是Freund 和Schapire 于1995 年提出的,全称为Adaptive Boosting。它是 Boosting 算法的改进,意为该算法通过机器训练与学习不断自适应地调整假设的错误率,这 种灵活性使得Adaboost 算法很容易与实际应用联系起来。2001 年,微软研究院的P.Viola 提出了基于Haar 特征的Adaboost 算法 ,创造性地将积分图的概念引入到人脸检测的特征 计算当中,由于此算法使用了大量尺寸不一的矩形作用来表征人脸。并且该算法中用以检测 人脸的分类器是采用的级联结构,按照由弱到强的顺序组织的,其优点在于按照统计概率, 在图像检测的一开始就能够将大部分不包含人脸的区域排除在
[嵌入式]
Adaboost算法的<font color='red'>FPGA</font>实现与性能分析
DSP/BIOS环境下的数据通信
引 言 对于数字信号处理应用来说,数据的通信很关键。在TI公司的DSP/BIOS环境下有3种通信方式,即基于管道(PIP,pipe)的通信、基于流(SIO,stream I/O)通道的通信以及基于主机(HST,host)通道的通信。每一种通信方式都是通过调度其相应的内核对象来完成的。DSP/BIOS提供了管理每一种通信方式的模块及相应地API调用,通过这些模块及调用,可以完成DSP环境下的输入/输出 (I/O)。本文在对各种通信方式进行简要介绍的基础上,对各种通信方式进行比较,并给出利用PIP对象进行数据通信的1个例子。 1 通信方式简介 (1)主机通信   主机通信方式下,由HST对象完成主机与目标机之间的通信。HST对象静态配置
[嵌入式]
基于DSP的蓄电池充放电装置研究
1 引言 在蓄电池生产过程中,为了保证产品质量,常需对成品蓄电池进行几次充放电处理。传统充放电设备通常采用晶闸管作为整流逆变功率器件。装置比较复杂,交流输入、输出的功率因数较低。对电网的谐波污染也比较大。为此,设计了一种三相SPWM整流逆变蓄电池充放电装置。它采用IGBT作为功率变换器件。交流侧以精密锁相的正弦波电流实现电能变换。可获接近于1的功率因数,实现对蓄电池的充放电处理,显著降低了对电网的谐波污染,满足了绿色环保和节能的设计要求。 2 系统结构及工作原理 图1示出设计的蓄电池生产用充放电控制系统结构 。该系统从原理上可划分为SPWM双向逆变和DC/DC变换充放电两个子系统。前者,在蓄电池充电时,通过三相PFC升压控
[应用]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved