好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

实现任意深度异步fifo的方法及系统的制作方法.docx

4页
  • 卖家[上传人]:ting****789
  • 文档编号:315046488
  • 上传时间:2022-06-20
  • 文档格式:DOCX
  • 文档大小:20.18KB
  • / 4 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 实现任意深度异步fifo的方法及系统的制作方法专利名称:实现任意深度异步fifo的方法及系统的制作方法技术领域:本发明涉及网络通信领域,具体为芯片设计技术,尤其涉及一种实现任意深度异步FIFO的方法及系统背景技术:在现代的集成电路芯片中,随着设计规模的不断扩大,一个系统中往往含有数个时钟多时钟域带来的一个问题便是,如何设计异步时钟之间的接口电路,异步先进先出 (First In First Out, FIFO)为解决这个问题提供了简便、快捷的方法在传统的异步FIFO中,为了表示FIFO的满或者空,需要把读指针同步到写时钟域中,或者将写指针同步到读时钟域中,在同步的过程中,会先将读写指针转换成格雷码, 然后再同步采用格雷码的好处便是由于异步FIFO读写两边的时钟不一样,数据同步的过程出现中间态,如从4’ b0000->4' bllll转换过程中,由于每个bit同步的时间不一样,使得会出现中间态如4,b0000 ->4,b0110->4,b0111->4,bllll,而这有可能导致异步FIFO行为异常,而如果将这个指针编码为格雷码,那么将会是这样4’ b0000 (原来的 4’ b0000)->4' bl000(原来的4’ bllll),这样的话,因为只有一个bit有变化,所以就不会有中间态,这就是为什么异步FIFO会使用格雷码的原因。

      以传统8深度的异步FIFO为例,这个FIFO的读写指针均为3个比特,如图1所示,格雷码的算法为b[2] = a[2],b[l]= a[2]"a[l], b = a[l]"a,指针初始值为0,指针每次变化的步长为1,所以每次变化的时候只有一个bit是在变化的,而从中我们发现异步FIFO的深度都需要为2的η次方, 因为如果不是2的η次方,按上述方法,格雷码编码后不会再只有一个比特变化,从图中可以看到,如果异步FIFO的深度为6的话,那么格雷码从3’ blll->3’ b000就不会是只有1 个bit在变化而对于很多只需要特殊深度的设计,比如,深度为9的异步FIFO,只能选择深度为16的异步FIFO,这样的异步FIFO的位宽有很大一部分是不被使用的,这便造成了芯片资源的浪费发明内容本发明的目的在于提供一种实现任意深度异步FIFO的方法,其通过利用格雷码的对称性,合理选择指针范围来实现任意深度异步FIFO,以最大限度地减小芯片的面积,从而节省芯片的成本本发明的目的还在于提供一种应用上述方法的实现任意深度异步FIFO的系统为实现上述发明目的之一,本发明提供的一种实现任意深度异步FIFO的方法,包括如下步骤Si、根据所需实现的异步FIFO深度N,确定可供选择的足够位宽的指针格雷码;其中,所述指针格雷码由对应的指针原码转换而来;S2、判断N是否为偶数,若是,则执行步骤S3 ;若否,则将指针格雷码的比特位加1,再执行步骤S3 ;S3、设定一将所述指针格雷码划分为对称的两部分的对称轴,若N为奇数,在所述对称轴的上下各取N个格雷码;若N 为偶数,在所述对称轴的上下各取N/2个格雷码。

      作为本发明的进一步改进,该方法还包括根据所选的指针对指针操作进行相应的调整作为本发明的进一步改进,所述对指针操作的调整具体为将所选指针范围内的首指针与末指针进行转换,其中,两者之间只会转变一个比特位作为本发明的进一步改进,所述所需实现的异步FIFO的深度N可为任意大于或等于1的整数作为本发明的进一步改进,所述指针原码是由格雷码编码器根据特定的格雷码算法转变成所述的指针格雷码为实现本发明的另一发明目的,本发明还提供一种实现任意深度异步FIFO的系统,包括如下单元格雷码转换单元、用于根据所需实现的异步FIFO深度N,确定可供选择的足够位宽的指针格雷码;其中,所述指针格雷码由对应的指针原码转换而来;判断单元、 用于判断N是否为偶数,若是,则跳转到指针选取单元;若否,则将格雷码的比特位加1,再跳转到指针选取单元;指针选取单元、用于设定一将所述指针格雷码划分为对称的两部分的对称轴,若N为奇数,在所述对称轴的上下各取N个格雷码;若N为偶数,在所述对称轴的上下各取N/2个格雷码作为本发明的进一步改进,该系统还包括一指针操作调整单元,该单元用于根据所选的指针对指针操作进行相应的调整作为本发明的进一步改进,所述对指针操作的调整具体为将所选指针范围内的首指针与末指针进行转换,其中,两者之间只要转变一个比特位。

      作为本发明的进一步改进,所述所需实现的异步FIFO的深度N可为任意大于或等于1的整数作为本发明的进一步改进,所述指针原码是由格雷码编码器根据特定的格雷码算法转变成所述的指针格雷码与现有技术相比,本发明的有益效果是通过利用格雷码的对称性,合理选择指针范围来并作相应指针操作的调整,即能实现任意深度异步FIFO,此技术方案最大限度地使得芯片面积小型化并减小了存储空间的浪费,进而减小了芯片的制造成本图1是现有技术中异步FIFO格雷码转化方式;图2是本发明一实施方式中实现任意深度异步FIFO的方法的工作流程图; 图3是本发明一实施方式中实现任意深度异步FIFO的方法中格雷码的对称性和指针的操作原理示意图4是本发明一实施方式中实现任意深度异步FIFO的系统的模块示意图具体实施例方式以下将结合附图所示的具体实施方式对本发明进行详细描述但这些实施方式并不限制本发明,本领域的普通技术人员根据这些实施方式所做出的结构、方法、或功能上的变换均包含在本发明的保护范围内参照图2和图3所示,在本发明的一实施方式中,一种实现任意深度异步FIFO的系统方法,主要通过以下步骤来实现Si、根据所需实现的异步FIFO深度N,确定可供选择的足够位宽的指针格雷码;其中, 所述指针格雷码由对应的指针原码转换而来。

      FIFO (First In First Out)是一种先进先出的数据缓冲器,它与普通存储器的区别是没有外部读写地址线,数据只能顺序写入、顺序读出,其数据地址由内部读写指针自动加1完成,从时钟角度考虑,FIFO根据时钟的同步和异步分为同步FIFO和异步FIFO,其中,随着大规模甚至超大规模集成电路的发展,异步FIFO被更多地应用于两个异步时钟之间的数据传输异步FIFO由存储介质和控制逻辑构成,存储介质通常是一块双端口的RAM,具有两个独立的读写时钟,整个异步FIFO系统也可分为两个完全独立的时钟域,即读时钟域和写时钟域FIFO的控制逻辑执行所有的读写指针管理,产生各种状态标志,写时钟域部分由写地址产生逻辑产生写控制信号和写地址,读时钟域部分由读地址产生逻辑产生读控制信号和读地址,为了表示FIFO的满或者空,需要把读指针同步到写时钟域中,或者将写指针同步到读时钟域中,在同步的过程中,会先将读写指针原码转换成指针格雷码,其中,在本实施方式中,指针原码为二进制编码,通过一格雷码编码器按照一定的格雷码算法将其转变为所需的指针格雷码,例如,以传统8深度的异步FIFO为例,格雷码的算法为b[2] = a[2],b[l]= a[2]"a[l], b = a[l]~a。

      于本发明中,首先需要确定一个所需要实现的FIFO的深度,这边设其为N,N可为任意一个大于或者等于1的整数,在这之后,便需要根据所需要实现的FIFO深度N来确定一个供选择的指针格雷码,这边所提及的指针格雷码可为2的幂次方具体地,便是供选择的指针格雷码必须有足够的位宽来供选择以实现深度为N的FIFO,请参照图3所示,在本实施方式中,我们假设需要的FIFO深度N为6,那么就必须选择深度为8的指针格雷码来供选择;假设N为7,那么所选定的指针格雷码的深度就为8 ;假设N为9,那么所选定的指针格雷码的深度就为16,以此类推S2、判断N是否为偶数,若是,则执行步骤S3 ;若否,则将指针格雷码的比特位加1, 再执行步骤S3 ;在选定好待选择的指针格雷码后,还需要判断当前所需要实现的FIFO的深度是否为偶数,为步骤S3的相关动作做准备因为本发明是利用格雷码的对称性来选择一定的指针范围以实现一定深度的FIFO,在N为奇数时,需要将指针格雷码的比特位加1来满足足够位宽格雷码的需求S3、设定一将所述指针格雷码划分为对称的两部分的对称轴,若N为奇数,在所述对称轴的上下各取N个格雷码;若N为偶数,在所述对称轴的上下各取N/2个格雷码。

      格雷码有个很有用的特性,就是对称性,而本发明真是利用这个特性,通过对异步FIFO读写指针的选择操作,来实现任意深度的异步FIFO格雷码的中间画一条线(本文中称之为对称轴),这条对称轴是将指针格雷码分为对称的两部分,以这条线为对称轴的数据,都只有一个bit是不同的,比如,还是以深度为8的为例,格雷码3’ bl00->3' b000、 3' bl01->3' b001、3,blll->3' b011、3,bll0->3' bOlO (参图 3),这些数据都是以对称轴为对称的数据,它们之间的转化就只有一个比特的变化于本实施方式中,根据所需要实现的FIFO的深度,来在上述的指针格雷码中选取一定的指针范围,具体地,请参照图3所示,如果要实现一个6深度的异步FIFO,那么指针便在对称轴的上下各取6/2=3个格雷码,即从地址1开始到地址6结束(图中虚线框部分),而这样转换后的结果是格雷码依然是只有一个bit在变化同样,这个指针如果被用来作为 3深度的异步FIFO的指针,同样可以实现了只有一个bit在变化,只是需要在对称轴的上下各取3个格雷码(从图中地址1到地址6),如此唯一的开销只是多了个指针比特位。

      然而, 假如所需要实现的FIFO的深度较宽的话,那么这一个比特位的浪费根本就是可以忽略的同样的,其它的FIFO深度的实现方法也依照上述的方案来完成,在此申请人不在赘述在选定一定的指针范围后,需要将指针的操作按照选取的指针来做相应调节就可以实现任意深度的异步FIFO具体地,只需要将所选定指针范围内的首指针与末指针之间进行相互转换,比如,选定的为6比特位的指针,那么对应的首指针为3’b001,末指针为 3’ blOl,将3’ blOl向3’ b001转变的过程也是只有一个比特位的变化其它深度的FIFO实现以此方法类推介绍完上述的方法后,接下来介绍下利用上述方法的一种实现任意深度FIFO的系统,如图4所示,该系统包括以下单元来实现格雷码转换单元10、用于根据所需实现的异步FIFO深度N,确定可供选择的足够位宽的指针格雷码;其中,所述指针格雷码由对应的指针原码转换而来为了表示FIFO的满或者空,需要把读指针同步到写时钟域中,或者将写指针同步到读时钟域中,在同步的过程中,会先将读写指针原码转换成指针格雷码,其中,在本实施方式中,指针原码为二进制编码,通过一格雷码编码器按照一定的格雷码算法将其转变为所需的指针格雷码,例如,以传统8深度的异步FIFO为例,格雷码的算法为b[2]= a[2],b[l] = a[2]"a[l], b =a[l]~a。

      于本发明中,在该系统中,首先需要确定一个所需要实现的FIFO的深度,这边设其为N,N可为任意一个大于或者等于1的整数,在这之后,便需要根据所需要实现的FIFO 深度N来确定一个供选择的指针格雷码,这边所提及的指针格雷码可为2的幂次方具体地,便是供选择的指针格雷码必须大于所要实现的FIFO的深度N,请参照图3所示,在本实施方式中,我们假设需要的FIFO深度N为6,那么就必须选择深度为8的指针格雷码来供选择;假设N为7,那么所选定的指针格雷码的深度就为8 ;假设N为9,那么所选定的指针格雷码的深度就为16,以此类推判断单元20、用于判断N是否为偶数,若是,则跳转到指针选取单元30;若否,则将指针格雷码的比特位加1,再跳转到指针选取单元30 ;在选定好待选择的指针格雷码后,还需要判断当前所需要实现的FIFO的深度是否为偶数,为步骤S3的相关动作做准备因为本发明是利用格雷码的对称性来选择一定的指针范围以实现一定深度的FIFO,在N为奇数时,需要将指针格。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.