现场可编程门阵列中ram的三维读写方法

文档序号:6562125阅读:112来源:国知局
专利名称:现场可编程门阵列中ram的三维读写方法
技术领域
本发明涉及通讯领域中进行算法硬件实现的现场可编程门阵列(FieldProgrammable Gate Array,FPGA),特别涉及一种现场可编程门阵列中RAM的三维读写方法。
背景技术
现场可编程门阵列中RAM的读写经常会遇到这样的情况数据是按照它们产生的先后顺序写入RAM中的,但是读的时候并不是按照先写的数据先读的规则进行,而是以一定的间隔进行读取。假设写入RAM的数据总长度为L(数据的编号为0到L-1),而且可以分为X个组,每个组Y个数据,即L=X*Y。那么在读取的时候,就要以X为间隔进行。即先读取0,X,2X,......,(Y-1)X,再读取1,X+1,2X+1,......,(Y-1)X+1,最后读出的一组数据为,X-1,2X-1,3X-1,......,XY-1。
例如,X=341,Y=60。此时需要写入RAM的数据总个数为20460,编号为0到20459。在这种情况下,数据按照0-20459的顺序写入RAM。读的时候,以341为间隔,即先读0,341,2*341,......,59*341,再读1,342,683,......,20119,第60组读出的数据为340,681,1022,......,20459。
传统的解决这种读写问题的方法有两种,第一种为一维的读写方法,第二种为二维的读写方法。
一维读写的方法是使用两块RAM进行读写的,每块RAM的大小都为L。第一次写的时候,所有的数据按顺序写入第一块RAM,第二次写的时候,所有的数据按顺序写入第二块RAM。接下来又按照第一块RAM,第二块RAM的顺序交替进行。第一次读的时候,以X为间隔读取第一块RAM,此时新产生的数据正在被写入第二块RAM中,所以不会发生有用数据被覆盖的现象;第二次读的时候,以X为间隔读取第二块RAM,此时新产生的数据正在被写入第一块RAM,也不会发生有用数据被覆盖的现象。
二维读写的方法只使用一块大小为Max(X,Y)*Max(X,Y)的RAM,其中Max(X,Y)表示X,Y中的最大值。可以将RAM想象为一个正方形,它的边长为Max(X,Y)。这种方法把写的时序和读的时序分为奇偶两种情况,如图1、图2所示。
写数据处于奇数情况时,写的顺序是按照逐行的顺序进行的,即先写第一行的X个数据,写完第一行之后写第二行的X个数据,之后第三行的X个数据,直到写完第Y行的X个数据;写数据处于偶数情况时,写的顺序是按照逐列的顺序进行的,即先写第一列的X个数据,写完第一列之后写第二列的X个数据,之后第三列的X个数据,直到写完第Y列的X个数据。
读数据处于奇数情况时,读的顺序是按照逐列的顺序进行的,即先读第一列的X个数据,读完第一列之后读第二列的X个数据,之后第三列的X个数据,直到读完第Y列的X个数据;读数据处于偶数情况时,读的顺序是按照逐行的顺序进行的,即先读第一行的X个数据,读完第一行之后读第二行的X个数据,之后第三行的X个数据,直到读完第Y行的X个数据。
第一次写处于奇数情况,写操作按照逐行的顺序进行。此时不读取数据;第二次写处于偶数情况,写操作按照逐列的顺序进行,此时读操作处于奇数情况,读操作是按照逐列的顺序进行,并且读操作先于写操作,这样保证新的数据不会覆盖尚未读出的数据;第三次写处于奇数情况,写操作按照逐行的顺序进行,此时读操作处于偶数情况,读操作是按照逐行的顺序进行,并且读操作先于写操作,这样保证新的数据不会覆盖尚未读出的数据;如此反复进行下去。
因此,传统的一维解决方案需要的RAM大小为2XY,设U=Max(X,Y),V=Min(X,Y)。其中Max(X,Y)表示X,Y中较大者,Min(X,Y)表示X,Y中较小者。则传统的二维解决方案需要的RAM大小为U*U。以上两种方案的缺点是所需要的RAM资源过多,可能会因为这个限制而使得项目的实现需要外挂RAM,这增加了成本和制版的难度。

发明内容
本发明的目的是提供一种RAM三维读写方法,利用三维地址操作的思想,解决了传统方案对RAM资源需求过多的问题。
本发明的上述目的是通过如下的技术方案予以实现的一种现场可编程门阵列中RAM的三维读写方法,包括(1)RAM的总数据个数L=X*Y,将现场可编程门阵列中RAM的数据结构构造成长方体,(2)当X>Y时,上述长方体沿a方向的高度为W,沿b方向的长度为Y,沿c方向的宽度为Y(其中W是使得W*Y>X的最小整数);(3)将长方体沿c方向切割Y个截面,依次在每个截面上按照W行和Y列写入X个数据;(4)当写到第Y个截面时,将长方体沿b方向切割Y个截面,依次读取每个截面上的数据。
步骤3之后,进一步包括沿b方向切割的截面上数据读取完毕后,再次重新写入数据,每个截面写入X个数据,并写满Y个截面,当写到第Y个截面时,在沿c方向切割的截面上再次读取每个截面上的数据。
一种现场可编程门阵列中RAM的三维读写方法,包括(1)RAM的总数据个数L=X*Y,将现场可编程门阵列中RAM的数据结构构造成长方体;(2)当X<Y时,长方体沿a方向的高度为W,沿b方向的长度为X,沿c方向的宽度为X;(3)将长方体沿c方向切割X个截面,依次在每个截面上逐行写入W*X个数据(4)当写到数据L-Y时,将长方体沿b方向切割成X个截面,依次读取每个截面上的数据,每个截面上的数据为Y个。
步骤3之后,进一步包括沿b方向切割的截面上数据读取完毕后,再次重新写入数据,并写满w*x个数据,当写到数据L-Y时,在沿c方向切割的截面再次读取每个截面上的数据。
在沿a方向、沿b方向和c方向分别设置计数器。
本发明的技术效果如下与传统的一维、二维方案相比,本专利能够节省很多的RAM资源。
(1)一维方案所需的RAM资源。对一维方案来说,总共需要的RAM资源为2*X*Y。
(2)二维方案所需的RAM资源。Max(x,Y)*Max(x,Y)。
(3)三维方案所需的RAM资源。三维方案所需的RAM资源为 其中 表示对x上取整。
对于三维方案来说,X>Y和X<Y的情况下需要的RAM资源一样。所以只需考虑X>Y情况下三种方案所需的RAM就可以了。
假设X=rY,此时一维方案所需RAM资源为2rY2;二维方案所需的RAM资源为X=r2Y2;本专利中的方案所需的RAM资源为 所以本专利中方案的RAM资源和传统的一维,二维方案的RAM资源比值为 图5、图6以r为横坐标,以R13和R23为纵坐标。由图可以看出,r值越大,本专利中的方案和一维方案的比值越接近0.5,和二维方案的比例越接近零。


图1为二维的读写方法的第一次读写顺序示意图;图2为二维的读写方法的第二次读写顺序示意图;图3为本发明现场可编程门阵列中RAM的数据结构示意图;图4为本发明RAM的数据结构中数据排列示意图;图5为本发明三维读写方法与传统一维读写方法技术效果对比;图6为本发明三维读写方法与二维读写方法技术效果对比。
具体实施例方式
下面结合附图详细描述本发明,但不以任何方式限制本发明的范围。
RAM的总数据个数L=X*Y,数据总共分为X组,每组Y个数据。根据X,Y的关系,本专利中的三维方法具体分为以下两种情况A)X>Y。此时构造出来的长方体如图3所示。
寻找一个整数W,使得W*Y大于X并且最接近X。
长方体沿a方向的高度为W,沿b方向的长度为Y,沿c方向的宽度为Y。这样,将长方体沿c方向切割若干个截面(称之为a//b面),将长方体沿b方向切割若干个截面(称之为c//a面)。
第一次写的时候,以a//b面为页进行填写,即先写第一个a//b面(就是a,b面),写完第一个a//b页之后写第二个a//b页,依次进行下去,每页只写X个数据。可以先写行再写列,也可以先写列再写行。第一次写数据的时候不读数据。
当开始写-第Y个a//b面时,开始读取第一次写入的数据。
第一次读取数据的时候,以a//c面为页进行读取,即先读第一个a//c页,读完第一个a//c页之后读第二个a//c页,依次进行下去。
第二次写的时候,第一个a//c面已经读完(因为每个a//b面需要写的数据个数为X个,而每个a//c面需要读取的数据个数为W*Y个,W*Y大于X,所以读取数据的时钟要快于写数据的时钟)。此时写按照a//c面的顺序进行。这样就避免了有用数据被覆盖的现象。由于a//c面和a//b面大小相等,所以在每个a//c面的写操作可以按照和a//b相同的方法进行。
当第二次写进行到第Y个a//c面,开始进行第二次读取数据。此时读以a//b为页进行。
第奇数次写的顺序和第一次写的顺序相同,第偶次写的顺序和第二次写的顺序相同。
第奇数次读的顺序和第一次写的顺序相同,第偶次读的顺序和第二次写的顺序相同。
B)X<Y。寻找一个整数W,使得W*X大于Y并且最接近Y。此时长方体沿a方向的高度为W,沿b方向的长度为X,沿c方向的宽度为X。在这种情况下,读写的顺序和情况A)不同。
第一次写时,以a//b面为页进行。先写最前面的a//b面。写完最前面的a//b面,接着写处于它后方的第二个a//b面,依次进行下去直到写完所有的X*Y个数据。具体写每个a//b面的时候先写第一个平行于b轴的(最上边)的X个数据,再写第二组X个数据,直到写完第W组X个数据,这样每个b//c面内总的数据个数为W*X。
当写进行到数据L-Y时,开始进行第一次读。
第一次读以a//c面为页进行,先读第一页(就是a,c面)中的Y个数据,再读第二页的Y个数据,直到读完第X页的Y个数据。
第一次写进行完毕时,第一次读已经将第一个a//c面的所有数据读出。此时开始进行第二次写。
第二次写以a//c面为页进行,先写第一个a//c页(就是a,c面),再写第二个a//c页,直到写完第所有X*Y个数据。具体在写每个a//c页的时候,应该先沿着c轴的方向写,写完沿c轴的第一组X个数据之后,写第二组X个数据,依次进行下去,直到写完每页的X*W个数据。
当第二次写进行到数据L-Y时,开始进行第二次读。
第二次读以a//b面为页进行,先读第一页(就是a,b面)中的Y个数据,再读第二页的Y个数据,直到读完第X页的Y个数据。
此后,奇数次写操作与第一次写操作相同,偶数次写操作与第二次写操作相同;奇数次读操作与第一次读操作相同,偶数次读操作与第二次读操作相同。
参考图4,以X>Y为例,说明本专利的具体实施方案。
当X>Y时,三维方案中三个方向上的数据个数为a方向W,b方向Y,c方向Y。
设置三个计数器,counter_a,counter_b和counter_c。分别对应于a,b和c方向。
counter_a的大小从0到W-1,counter_b和counter_c的范围从0到Y-1。
第一次写操作的具体步骤如下1)先写第一个a//b面,即counter_c=0的a//b面。在第一个a//b面,先写counter_b=0的列,此时counter_a从0增加到W-1。当counter_a增加到W-1时,即第一组W个数据写完时,counter_a变为0,而counter_b变为1,此时开始写第二组W个数据。依次进行,直到写完X个数据。
2)当第一页的X个数据写完时,counter_a变为0,counter_b变为0,而counter_c变为1,即开始写第二个a//b面。在写此页时,counter_a,counter_b的变化规律和写第一个a//b面时的规律相同。
3)这样逐a//b页写下去,直到写完所有X*Y个数据,此时第一次写数据完成。
第二次写操作的具体步骤如下1)先写第一个a//c面,即counter_b=0的a//c面。在第一个a//c面,先写counter_c=0的列,此时counter_a从0增加到W-1。当counter_a增加到W-1时,即第一组W个数据写完时,counter_a变为0,而counter_c变为1,此时开始写第二组W个数据。依次进行,直到写完X个数据。
2)当第一页的X个数据写完时,counter_a变为0,counter_c变为0,而counter_b变为1,即开始写第二个a//c面。在写此页时,counter_a,counter_c的变化规律和写第一个a//c面时的规律相同。
3)这样逐a//c页写下去,直到写完所有X*Y个数据,此时第二次写数据完成。
此后奇数次的写操作过程和第一次相同,偶数次的写操作过程和第二次相同。
第一次读操作的具体步骤如下1)先读第一个a//c面,即counter_b=0的a//c面。在第一个a//c面内,先读counter_a=0行的X个数据,之后读counter_a=1行的X个数据,依次进新直到读完counter_a=W-1的X个数据。在读每行的X个数据时counter_a保持不变,counter_c从零增加到X-1。
2)读完第一个a//c面后,开始读第二个a//c面。此时counter_a=0,counter_c=0,而counter_b=1,此时读的顺序和counter_b=0时相同。
3)如此进行下去,直到读完所有的X*Y个数据,此时第一次读取完成。
第二次读操作的具体步骤如下1)先读第一个a//b面,即counter_c=0的a//b面。在第一个a//b面内,先读counter_a=0行的X个数据,之后读counter_a=1行的X个数据,依次进新直到读完counter_a=W-1的X个数据。在读每行的X个数据时counter_a保持不变,counter_b从零增加到X-1。
2)读完第一个a//b面后,开始读第二个a//b面。此时counter_a=0,counter_b=0,而counter_c=1,此时读的顺序和counter_c=0时相同。
3)如此进行下去,直到读完所有的X*Y个数据,此时第二次读取完成。
此后奇数次的读操作过程和第一次相同,偶数次的读操作过程和第二次相同。
以上分开说明了写操作和读操作的过程,还有一个重要的问题就是读数据开始的时刻。
奇数次读数据在奇数次写操作进行到数据L-Y时,即第一次读数据开始,第三次读数据在第三次写数据进行到数据L-Y时开始,以后情况可以类推。
偶数次读数据在偶数次写操作进行到数据L-Y时开始。即第二次读数据在第二次写数据进行到数据L-Y时开始,即第四次读数据在第四次写数据进行到数据L-Y时开始,以后情况可以类推。
以上为本发明的实施方式,依据本发明公开的内容,本领域的普通技术人员能够显而易见的想到的一些雷同、替代方案,均应落入本发明保护的范围。
权利要求
1.一种现场可编程门阵列中RAM的三维读写方法,包括(1)现场可编程门阵列中RAM的总数据L分为X个组,每个组Y个数据,即L=X*Y,将RAM的数据结构构造成长方体;(2)X>Y,上述长方体沿a方向的高度为W,沿b方向的长度为Y,沿c方向的宽度为Y,W*Y大于并近似X;(3)将长方体沿c方向切割Y个截面,依次在每个截面上按照W行和Y列写入X个数据;(4)当写到第Y个截面时,将长方体沿b方向切割Y个截面,依次读取每个截面上的数据。
2.如权利要求1所述的现场可编程门阵列中RAM的三维读写方法,其特征在于步骤4之后,进一步包括当沿b方向切割的第1个截面上数据读取完毕后,再次重新写入数据,每个截面写入X个数据,当写到第Y个截面时,在沿c方向切割的截面上再次读取每个截面上的数据。
3.一种现场可编程门阵列中RAM的三维读写方法,包括(1)现场可编程门阵列中RAM的总数据L分为X个组,每个组Y个数据,即L=X*Y,将RAM的数据结构构造成长方体;(2)X<Y,长方体沿a方向的高度为W,沿b方向的长度为X,沿c方向的宽度为X,W*X大于并近似Y;(3)将长方体沿c方向切割X个截面,依次在每个截面上逐行写入W*X个数据;(4)当写到数据L-Y时,将长方体沿b方向切割X个截面,依次读取每个截面上的数据,每个截面上的数据为Y个。
4.如权利要求1所述的现场可编程门阵列中RAM的三维读写方法,其特征在于步骤4之后,进一步包括沿b方向切割的截面上数据读取完毕后,再次重新写入数据,并写满w*x个数据,当写到数据L-Y时,在沿c方向切割的截面再次读取每个截面上的数据。
5.如权利要求1或3所述的现场可编程门阵列中RAM的三维读写方法,其特征在于在RAM的数据结构上沿a方向、沿b方向和c方向分别设置计数器。
全文摘要
本发明提供一种现场可编程门阵列中RAM的三维读写方法,属于通讯技术领域,该方法包括(1)RAM的总数据个数L=X*Y,将现场可编程门阵列中RAM的数据结构构造成长方体;(2)长方体沿a方向的高度为W,沿b方向的长度为X或Y,沿c方向的宽度为X或Y;(3)将长方体沿c方向切割X或Y个截面,依次在每个截面上按照写入数据;(4)当写到数据L-Y时,将长方体沿b方向切割X或Y个截面,依次读取每个截面上的数据。本发明利用三维地址操作思想,可以解决传统方案对RAM资源需求过多的问题。
文档编号G06F12/02GK1959845SQ20061013769
公开日2007年5月9日 申请日期2006年11月3日 优先权日2006年11月3日
发明者朱柏承, 张宏, 李斗, 孙云刚, 李翔 申请人:北京大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1