当前位置:首页 > 嵌入式 > 嵌入式硬件

摘 要: 为了满足高速实时数据采集系统对所采集海量数据进行缓存的要求,通过研究FIFO的基本工作原理,利用FPGA和DDR2 SDRAM设计了一种高速大容量异步FIFO。使用Xilinx提供的存储器接口生成器(MIG)实现FPGA与DDR2的存储器接口,并结合片上FIFO和相应的控制模块完成FIFO的基本框架结构。详细介绍了各个组成模块的功能和原理,并设计了专门的测试模块。
关键词: 高速大容量异步FIFO; MIG; FPGA; DDR2 SDRAM

 异步FIFO作为数据缓存被广泛应用于高速实时数据采集、不同时钟域之间的高性能数据传输以及多机处理等系统中[1]。如在视频系统中用于视频信号转换、视频分割和画中画电视[2]。在高速传感信号实时检测处理系统中用于数据缓存等。随着微电子技术的发展,FIFO芯片也在向着高速、大容量、小体积、低成本的方向发展。特别是Xilinx FPGA 提供的FIFO IP核已经能够达到500 MHz的速率和4 MB的容量。这些都为FIFO的实际工程应用提供了广阔的空间。但是在某些价格敏感、要求海量数据缓存的高速系统中,出于价格和性能方面的考虑,大容量异步FIFO芯片并非这类设计的最佳选择。FPGA具有工作速度高、可配置性强、灵活性好等突出优点,使用Xilinx FPGA 提供的免费MIG IP核可以很容易实现FPGA与外部存储器之间的接口,而DDR2 SDRAM具有单位空间存储容量大、高数据带宽、价格便宜等优点。因此根据FIFO的基本原理,通过采用Xilinx FPGA器件和Micron公司的256MB DDR2 SDRAM MT4HTF3264HY-667设计并实现了一种异步FIFO。该FIFO具有价格相对便宜、高数据带宽、容量大、数据位宽可以根据需要进行相应灵活配置等特点,具有较高的工程实用价值。
1 大容量异步FIFO系统方案设计
设计主要由两块片上FIFO、两块数据位宽转换模块、FIFO控制器、DDR2 SDRAM控制器、时钟模块和外部的DDR2 SDRAM构成[3]。其整体结构框图如图1所示。

基本工作机理是当WR_EN有效为高电平,输入数据DIN[N:0]在WR_CLK的上升沿触发下经过“数据位宽转换模块1”之后输出位宽为128 bit的数据写入到位宽为128 bit,深度为2 K的“片上FIFO1”中。当FIFO控制器检测到“片上FIFO1”快满时,开始读取其中的数据,按照地址顺序递增的方式通过DDR2 SDRAM控制器写入到DDR2 SDRAM中,直到“片上FIFO1”被取空。当FIFO控制器检测到“片上FIFO2”快空时,通过DDR2 SDRAM控制器按照地址顺序递增读取DDR2 SDRAM中的数据,写入到“片上FIFO2”中,直到“片上FIFO2”被写满为止。DDR2 SDRAM只有一组地址总线,而在该项设计中需要对DDR2 SDRAM进行独立的读写操作。为此,在FIFO控制器中定义了两组地址总线用于分别记录读写操作地址,当FIFO控制器处于写DDR2 SDRAM状态时,选通写地址总线(wr_addr)与DDR2 SDRAM的地址总线(ddr2_addr)互联。当FIFO控制器处于读DDR2 SDRAM状态时,选通读地址总线(rd_addr)与DDR2 SDRAM的地址总线(ddr2_addr)互联。另外为了保证读数据有效,在FIFO控制器中设计有相应的限制语句,只有当读地址(rd_addr)小于写地址(wr_addr)时,才允许读DDR2 SDRAM中的数据。“片上FIFO2”的空满标志信号作为所设计的FIFO的空满标志信号。从外部看,该设计是一个具有标准接口的大容量异步FIFO,而不用关心其内部操作。而且只需要对数据转换模块中的相关参数进行简单的改动,便可以改变该大容量异步FIFO的位宽(THE WIDTH)。
2 高速大容量异步FIFO设计
如图1所示,设计主要集中在FPGA部分,包括数据位宽转换模块、FIFO控制器、时钟模块、DDR2 SDRAM控制器设计以及片上FIFO的定制。
2.1 DDR2 SDRAM控制器设计
存储器控制器需要对包括存储器控制状态机在内的所有构建模块加以集成。控制器状态机必须按正确顺序发出命令,同时还要考虑存储器器件的时序要求。而且存储器控制器状态机因存储器架构(DDR、DDR2、QDRII、RLDRAM等)、组数(BANK)、数据总线宽度、存储器器件的宽度和深度、组和行存取算法等变量的不同而异。因此,创建存储器控制器是一项极其复杂、精细的任务。
使用MIG(Memory Interface Generation)软件工具[4]可以生成一个完整的设计,减少了设计人员的工作量,简化了系统设计。设计人员通过在MIG GUI中设置系统和存储器参数,整个过程不用一分钟,MIG工具即可生成存储控制器有关的RTL和UCF文件。MIG设计流程如图2所示。

设计采用Xilinx提供的免费IP核 MIG2.3来设计DDR2 SDRAM控制器。所用FPGA为Virtex-5 FPGA XC5vlx110T。控制器原理框图如图3所示。

其中时钟&复位模块(Infrastructure)用于生成控制器所需要的各类时钟和复位信号,它的输入时钟可根据用户需求选择单端或差分时钟信号输入。延时控制单元(Idelay_ctrl)用于同步校准设计中的延时单元以减少功耗。状态控制单元(Ctrl)是控制器中的最关键单元,它生成DDR2 存储器接口和用户接口所必需的所有控制信号。物理层控制单元(Phy_top)是设计的物理层接口的顶层模块,它封装了FPGA 与 DDR2 SDRAM的物理接口信号。用户接口单元(Usr_top)作为设计中的用户接口,用于接收和存储用户数据、命令和地址信息。最终将复杂的DDR2 SDRAM访问操作封装成简单的读写两种操作。设计采用的Micron DDR2 SDRAM SODIMM MT4HTF3264HY-667容量为256MB、带宽5.3 GB/S、数据位宽64 bit、含10位列地址线、13位行地址线和2位BANK地址线。上述MIG控制器右侧信号端口用于连接DDR2 SDRAM物理引脚,右侧信号端口用于连接输入时钟和来自FIFO控制器的数据和控制信号线。这些端口类型和位宽刚好与所选定的MT4HTF3264HY-667相匹配。
2.2 片上FIFO设计
所设计的FIFO数据输入/输出端与外界的数据传输、FPGA与DDR2 SDRAM间的通信分别属于不同的时钟域,设计中通过采用两块小容量片上FIFO[5]作为缓冲来实现他们之间的跨时钟域数据传输。根据所选定DDR2 SDRAM的性能参数,两块片上FIFO的数据位宽设置为128 bit,深度1 kHz。
2.3 FIFO控制器设计
FIFO控制器用于控制两块片上FIFO与DDR2 SDRAM之间的数据通信,其状态转移图如图4所示。由于DDR2 SDRAM具有很高的数据带宽,MT4HTF3264-667的带宽为5.3 GB/S。远大于FIFO1输入/输出端的数据带宽。所以FIFO控制器根据两块片上FIFO的数据量状况,对DDR2 SDRAM总线进行分时复用。

该状态机工作过程为:
(1)系统上电或复位后,状态机进入空闲状态(idle),在该状态下输入端片上FIFO1读使能信号(rd_en_wrfifo)、输出端片上FIFO2写使能信号(wr_en_rdfifo),DDR2 SDRAM控制器的用户地址FIFO使能信号(app_af_wren),用户数据FIFO使能信号(app_wdf_wren)均无效。
(2)在空闲状态下,当检测到输入端片上FIFO1几乎满,并且DDR2 SDRAM控制器初始化完毕,控制器发送写DDR2 SDRAM命令(cmd =3’b000)。将读到的数据直接写入DDR2 SDRAM由于DDR2 SDRAM控制器突发长度为4,地址总线按4累加。当检测到片上FIFO1被取空时,回到空闲状态。
(3)在空闲状态,当检测到输出端片上FIFO2几乎空,并且没有检测到输入端片上FIFO1几乎满时,开始读DDR2 SDRAM中的数据,并将读出的数据写入到输出端片上FIFO2。待FIFO2写满后,回到空闲状态。
2.4 时钟模块设计
控制器所需要的系统时钟(sys_clk)和200 MHz时钟(idly_clk_200)由外部33 MHz时钟信号通过FPGA的全局时钟网络后,分别输入到两个定制好的DCM后输出生成。
2.5 数据位宽转换模块设计
该模块用于匹配N位的输入/输出数据位宽和两个片上FIFO的128 bit数据位宽,实现所设计的大容量异步FIFO位宽可配置功能。输入端数据位宽转换模块的基本工作机理是将在WR_CLK时钟作用下连续输入的128/N个数据按先后顺序由高到低组成128 bit数据输出到片上FIFO1的数据输入端口,同时生成一个时钟上升沿作为FIFO1的写时钟,将该128 bit宽数据写入到片上FIFO1中。输出端数据位宽转换模块将从片上FIFO2读到的128 bit宽数据是由高到低依次拆分为128/N个N位宽数据,并且在RD_CLK上升沿先后输出这些数据。当这些数据输出完毕后,该模块输出一个上升沿脉冲作为输出端片上FIFO2的读时钟信号,读取下一个128 bit宽的数据。
3 实验测试
为了测试系统的性能,设计了专门的测试系统对所设计的FIFO进行测试,如图5所示。

基本工作机理是,在FPGA内部定制一块存有4KB已知数据的嵌入式ROM。该ROM在时钟CLK和循环地址计数器的作用下输出数据流,该数据流经过待验证的FIFO缓存后,通过串口发送到上位机上显示。通过比较上位机接收到的数据与ROM中存储的数据是否一致,便可以判断系统设计是否正确。
分别对不同位宽的FIFO,通过改变ROM的时钟CLK模拟生成FIFO的高低速率输入数据流,进行反复的实验测试,结果表明上位机上接收到的数据与ROM中存储的数据是一致的。
参考文献
[1] 金明,罗飞路,朱霞飞.FIFO芯片在高速系统中的应用[J].电子技术应用,1998,24(3):61-62.
[2] 郭照南,李儒峰.FIFO 芯片AL422B在视频系统中的应用[J].湖南工程学院学报, 2002,12(1):37-38.
[3] 徐欣,周舟,李楠,等.基于DDR2 SDRAM的高速大容量异步FIFO的设计与实现[J].中国测试,2009,35(6):34-37.
[4] Memory interface solutions user guide. http:///support/documentation/ip_documentation/ug086.pdf.
[5] LogiCORE? IP FIFO Generator v6.2. http:///support/documentation/ip_documentation/fifo_generator_ug175.pdf.

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

当我们提到成本优化型FPGA,往往与简化逻辑资源、有限I/O和较低制造工艺联系在一起。诚然,在成本受限的系统设计中,对于价格、功耗和尺寸的要求更为敏感;但随着一系列创新应用的发展、随着边缘AI的深化,成本优化型FPGA也...

关键字: AMD FPGA Spartan 边缘计算

全球领先的高性能现场可编程门阵列(FPGA)和嵌入式FPGA(eFPGA)半导体知识产权(IP)提供商Achronix Semiconductor公司宣布,该公司参加了由私募股权和风险投资公司Baird Capital举...

关键字: FPGA 智能汽车 eFPGA

全新 FPGA 能为嵌入式视觉、医疗、工业互联、机器人与视频应用提供高数量 I/O、功率效率以及卓越的安全功能

关键字: FPGA 嵌入式视觉 机器人

Altera致力于为客户提供端到端的FPGA、易于使用的AI、软件和弹性供应链。

关键字: FPGA AI

在半导体领域,大部分对于AI的关注都集中在GPU或专用AI加速器芯片(如NPU和TPU)上。但事实证明,有相当多的组件可以直接影响甚至运行AI工作负载。FPGA就是其中之一。

关键字: FPGA AI 半导体

半导体产品老化是一个自然现象,在电子应用中,基于环境、自然等因素,半导体在经过一段时间连续工作之后,其功能会逐渐丧失,这被称为功能失效。半导体功能失效主要包括:腐蚀、载流子注入、电迁移等。其中,电迁移引发的失效机理最为突...

关键字: 半导体 电迁移 FPGA

这款较低成本的开发平台可帮助学生、初学者和经验丰富的设计人员采用新兴技术

关键字: RISC-V FPGA 嵌入式

进一步扩展旗下IEEE®-1588主时钟产品组合,可实现小于1纳秒的精确时间精度

关键字: 主时钟 数字合成器 FPGA

业内消息,近日谷歌正式移除了另一个对用户有用的功能网页缓存。搜索引擎之父Danny·Sullivan和谷歌搜索联络(Search Liaison)账号确认网页缓存功能被移除了,搜索页面缓存的 incache: 语法也将被...

关键字: 谷歌 缓存

中国上海——2024年1月22日——莱迪思半导体(NASDAQ:LSCC),低功耗可编程器件的领先供应商,今日宣布莱迪思的中端FPGA系列莱迪思Avant-E™ FPGA荣获国际科技创新节(STIF)“年度产品创新奖”,...

关键字: 可编程器件 FPGA AI
关闭
关闭