预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

基于FPGA的异步FIFO设计与实现 AsynchronousFIFODesignandImplementationBasedonFPGA (1.清华大学电子工程系;2.中国科学院电子学研究所)熊红兵1陈琦2 Xiong,HongbingChen,Qi 摘要:异步FIFO是用来适配不同时钟域之间的相位差和频率飘移的重要模块。本文设计的异步FIFO采用了格雷(GRAY)变换技术和双端口RAM实现了不同时钟域之间的数据无损传输。该结构利用了GRAY变换的特点,使得整个系统可靠性高和抗干扰能力强,系统可以工作在读写时钟频率漂移达到正负300PPM的恶劣环境。并且由于采用了模块化结构,使得系统具有良好的可扩充性。 关键字:FIFO;双口RAM;格雷码;指针解释;指针生成 Abstract:AsynchronousFIFOisanimportantmodulewhichalwaysusedtoabsorbthephaseandfrequencyoffsetbetweendifferentclockdomainincommunicationarea.Inthispaper,anFIFOmoduleisdesignedusingGrayconverttechnologyanddual-portram,whichrealizingscathelesstransmitbetweendifferentclockdomain.TheadvancesofGray(Onlyonebitchangesbetweenneighboringtwoclock)improvesthereliabilityandanti-jammingcapabilityofthesystem.Andthesystemcanworknormallyinthebadconditionwhichthephaseandfrequencyoffsettargetto300PPM.ItisprovedbyworkthattheFIFOmodulecanfulfillthedemandsofreal-timeofdatatransmittingsystem,andthemoduleispowerfulenoughformoredataprocessinthefuture. Keywards:FIFO;Dual-portRAM;Gray;Pointerinterpreter;Pointergenerator 1.引言 FIFO(先进先出队列)是一种在电子系统得到广泛应用的器件,通常用于数据的缓存和用于容纳异步信号的频率或相位的差异。该器件用在SDH设备上时,处于指针解释和指针生成之间,用来缓冲数据流,以实现不同时钟速度的匹配。经过指针解释(PI)的净荷数据流进入FIFO中,包括8位数据位和一位J1字节标志位;指针生成(PG)部分根据PG部分的payload信号将数据从FIFO读出,并生成新的指针。FIFO可以根据其内部数据的空满程度,决定是否向PG发出正/负调整申请信号。FIFO主要实现如下功能: 处理AU3级数据流的缓冲; 提供级联模式; 给出指针正/负调整申请信号,阈值可设; 可以插入fullscan,保证较高的可测试性。 2.FIFO工作原理 图1FIFO工作原理示意图 FIFO的工作原理可用图1来表示。整个系统分为两个完全独立的时钟域,即读时钟域和写时间域。FIFO的存储介质为一块双端口RAM,FIFO深度为64个字节。可以同时进行读写操作。为避免对同一个地址进行读写操作,复位或者溢出时将读写地址错开。由图1可以看出,写地址产生模块根据写时钟和写有效信号产生递增的写地址,读地址产生模块根据读时钟和读有效信号产生递增的读地址。FIFO的操作如下:在写时钟wr_clk的升沿,当wren有效时,将wr_data写入双口RAM中写地址对应的位置中;始终将读地址对应的双口RAM中的数据输出到读数据总线上。这样就实现了先进先出的功能。由于空标志和满标志控制了FIFO的操作,因此标志错误会引起操作的错误。如上所述,标志的产生是通过对读写地址的比较产生的,当读写时钟完全异步时,对读写地址进行比较时,可能得出错误的结果。例如,在读地址变化过程中,由于读地址的各位变化并不同步,计算读写地址的差值,可能产生错误的差值,导致产生错误的满标志信号。若将未满标志置为满标志时,可能降低了应用的性能,降低写数据速率;而将满置标志置为未满时,执行一次写操作,则可能产生溢出错误,这对于实际应用来说是绝对应该避免的。空标志信号的产生也可能产生类似的错误。 从以上分析中可以看出,异步FIFO之所以会发生错误是国为在地址变化时,由于多位地址各位变化时间不同,异步时钟对其进行采样时