存储装置、访问存储装置的方法和里德索罗门解码器 【技术领域】
本发明涉及在数字设备中使用的用于暂时存储数据的存储器。本发明尤其涉及用于采用双存储体(dual-bank)存储器对数据进行缓冲的电路和方法,更具体地涉及用于在高速块流水线式里德索罗门解码器中对数据的缓冲。
背景技术
当发送或存储大量数字数据时,不可避免地在数据信道或发送介质中出现差错。已知有各种技术来识别这些差错并且当可行时恢复数据。在这些技术中,已广泛采用了里德索罗门编码。里德索罗门代码是基于块的差错校正码,其表现出优异的纠错性能和有效的编码及解码特性,从而在数字通信和存储领域得到了广泛的应用。
一般,通过将2t个奇偶校验码元与具有k个码元的数据的数据块相加,里德索罗门编码器形成包含n个码元(如8比特字节)的码字,从而2t=n-k。通常里德索罗门码字由字符RS(n,k)来指定。例如,在代码RS(255,223)情况下,每个码字包含255个码字字节,其中的223个字节为数据,32个字节为奇偶校验位。
另一方面,里德索罗门解码器处理每个码字,以试图对在发送或存储期间出现的差错进行校正并恢复原始数据。该解码器能够校正每个码字中的多至t个差错码元。例如,在代码RS(255,223)情况下,n-k=2t=32,因此,能够校正每个码字中的多至16个码元。
一般,当执行差错和擦除校正时,里德索罗门解码处理可被分成8个主要的计算步骤。当码元值不正确时出现“擦除”,但码元位置是未知的。当不知道不正确码元的信息时,出现“差错”。差错和擦除解码的计算步骤包括:(1)从所接收到的/检索到的输入码字计算并发位(syndrome),以检测是否存在差错;(2)对与输入地码字同步地提供的擦除标记进行缓冲;(3)采用擦除标记对并发位进行修改;(4)产生擦除定位器多项式;(5)采用修改的并发位值和擦除定位器多项式,来计算差错定位器多项式和差错估计器多项式的系数;(6)求出差错定位器多项式的根;(7)计算差错值的幅值;和(8)采用在步骤(4)得到的值和在步骤(3)得到的位置来对差错进行校正。仅对于差错校正(即,无擦除校正),省略步骤(2)、(3)和(4)。
上述步骤(1)和(8)需要存储器访问。亦即,在步骤(1),所接收到的码字被暂时存储于存储器中,而以后在步骤(8)中被从存储器中检索出以被校正。
里德索罗门解码器的解码计算(和相关的硬件和/或软件)比编码处理的更复杂,经常难以实现具有足够高的处理速度的解码器。对于当前的高速数字数据处理系统的需求而言,这尤其是个问题。
为了增大速度,里德索罗门解码器的计算的流水线技术是个可能的解决方案。但是,这种计算随差错数目和码字长度的不同而有所不同,因此,流水线技术受到具有最长等待时间(latency)的单元或块的限制。此外,即使处理块的等待时间被减小到n个周期的单个帧(即,一个码字),用于在校正之前暂时存储输入码字的存储器仍引起瓶颈效应,即,至少需要2n个周期来首先存储码字,然后检索码字用于其校正。
【发明内容】
本发明的目的是提供一种存储装置、和访问存储装置的方法,其高速执行读取/写入操作,从而可有益地与高速块流水线式里德索罗门解码器结合使用,并且提供一种具有最小存储器访问时间的高速块流水线式里德索罗门解码器。
根据本发明的一个方面,允许在每个连续帧周期期间对多个双存储体RAM进行写入和读取,从而在每个给定数个帧周期时读取双存储体RAM的每个存储体,并且在相同的给定数个帧周期时写入,并且在每个连续帧周期期间,读取存储体与写入存储体不同地包含在多个双存储体RAM的不同的一个中。
根据本发明的另一方面,存储器包括:第一双存储体RAM,具有第一存储体和第二存储体;第二双存储体RAM,具有第三存储体和第四存储体;和第三双存储体RAM,具有第五存储体和第六存储体。在连续的帧周期期间允许从第一至第六数据存储体中按顺序读取,从而每六个帧周期读取第一至第六数据存储体中的每个,并且允许在连续的帧周期期间按顺序对第一至第六数据存储体进行写入,从而每六个帧周期对第一至第六数据存储体中的每个进行写入。另外,在每个帧周期期间,被允许读取的第一至第六数据存储体中的一个包含在所述第一至第三双存储体RAM中与被允许写入的第一至第六数据存储体中的一个不同的第一至第三双存储体RAM的一个中。
根据本发明的又一方面,在每个帧周期期间,从被允许读取的数据存储体到被允许写入的数据存储体的偏移为4(或3)个数据存储体,从而在帧周期a中写入的所述第一至第六数据存储体中的每个随后在帧周期a+4(或a+3)中读取,其中a为整数。
根据本发明的再一方面,上述双存储体存储器与多个流水线式处理单元结合使用,该处理单元接收输入的里德索罗门码字并且执行计算以识别包含在输入码字中的差错值和差错位置。最好,多个流水线式处理单元和存储器响应于相同的时钟信号速率进行操作。
根据本发明的再一方面,每个码字包含n个字节,并且每个存储器存储体具有n个字节的容量,其中n为正整数。最好,多个流水线式处理单元中的每个的最大等待时间为n个循环,并且每个存储器访问帧周期为n个循环。
【附图说明】
通过参照附图的如下详细描述,本发明的上述和其他目的及优点将变得更加清楚,附图中:
图1是本发明高速块流水线式里德索罗门解码器的方框图;
图2的示意图描述的是图1的里德索罗门解码器的处理块的等待时间;
图3的方框图表示的是本发明双存储体3-RAM装置的优选实施例;
图4的流程图表示的是本发明访问双存储体3-RAM装置的方法的优选实施例;
图5和6的示意图描述的是在图3的双存储体3-RAM装置的写入/读取操作期间的存储体的选择;和
图7的时序图表示的是图1的里德索罗门解码器的流水线操作。
【具体实施方式】
图1表示本发明高速流水线式里德索罗门解码器。该实施例的里德索罗门解码器能够进行差错和擦除校正。如所示,里德索罗门解码器的计算被以流水线方式分成5个级S1至S5。
仅对于差错校正,图1的配置将去除虚线110中所包含的部件,在这种情况下仅需要流水线式的四(4)个级。
图1的实施例的里德索罗门解码器上设有双存储体3-RAM装置180,用于暂时存储输入数据DIN,即,码字R(x)。该装置由3个存储器构成,例如由3个RAM构成,其每个具有两个存储体。响应于数据输入时钟信号CLK,采用循环控制机制来执行写入/读取操作。简言之,双存储体3-RAM装置180将输入数据DIN写入从3个RAM中选出的一RAM的一存储体中,并且从其他RAM之一的一存储体中读取数据。双存储体3-RAM装置180的结构和操作将在后面参照图3进行更详细的描述。
仍参照图1,里德索罗门解码器(用于差错和擦除校正)还包括并发位产生器100、标记计数器和标记缓冲器120、擦除定位器多项式产生器130、并发位改变器140、多项式系数产生器150、差错值估计器160、差错位置搜索器170、和差错校正器190。如前所述,由这些部件执行的计算被以流水线方式分成级S1至S5。
在级S1,并发位产生器100根据输入数据DIN计算并发位S(x)。另外,标记计数器和标记缓冲器120对与输入数据DIN同步地提供的擦除标记Era_Flag的数目进行计数,并且对擦除标记Era_Flag进行缓冲。对此,如果没有擦除标记Era_Flag,或者如果输入的擦除标记Era_Flag的数目超过可允许校正范围,则专门执行差错校正。亦即,可允许校正范围被限定为:如果输入的擦除标记Era_Flag的数目比可允许校正范围的擦除标记的数目多,则单独执行差错校正。另外,标记计数器和标记缓冲器120不包括在单独为差错校正配置的里德索罗门解码器中。
在级S2,并发位改变器140采用缓冲的擦除标记对由并发位产生器100产生的并发位S(x)进行改变。(仅对于差错校正,不改变并发位S(x),并且省略并发位改变器140。)擦除定位器多项式产生器130采用缓冲的擦除标记来产生擦除定位器多项式。如前所述,当输入的擦除标记Era_Flag的数目等于零或者超出可允许校正范围时,单独执行差错校正。在这种情况下,擦除定位器多项式130产生一常数(如1值)来替代擦除定位器多项式。
在级S3,多项式系数产生器150采用改变的并发位T(x)和擦除定位器多项式(或常数1)来产生用于差错位置搜索的差错定位器多项式σ(x)和用于差错估计的差错估计器多项式e(x)的系数。在该实施例中,多项式系数产生器150采用欧几里德(Euclidean)算法。但是,可理解的是,也可采用其他已知的算法。另外,仅对于差错校正,排除包含在块110中的部件,因此,采用(未改变的)并发位S(x)和常数1来产生差错定位器多项式σ(x)和差错估计器多项式e(x)的系数。
在级S4,差错值估计器160计算差错值,而差错位置搜索器170根据差错定位器多项式σ(x)和差错估计器多项式e(x)的系数来计算差错位置。例如,可采用陈氏(Chien)搜索算法来计算差错定位器多项式σ(x)的解,并将所得到的解转换成多项式形式。表示为Ω(x)的所转换的差错定位器多项式被用来计算差错位置。类似地,差错值估计器160根据由多项式系数产生器150提供的系数来计算差错估计器多项式E(x)。这里,差错位置搜索器170和差错值估计器160可以统一地称作“差错位置和差错值估计器”。
在级S5。图1的差错校正器190访问双存储体3-RAM装置180,以读取事先写入其中的数据DIN,然后参照由差错位置搜索器170标识出的差错位置并参照由差错值估计器160计算出的差错值来对读取数据的差错进行校正。具体地讲,通过求出输入数据DIN与计算出的差错值之和,差错校正器190对包含在从双存储体3-RAM装置180检索出的输入数据DIN中的差错进行校正,从而获得输出数据DOUT(校正过的数据R′(x))。
尽管未示出,图1的里德索罗门解码器的每个流水线式处理块响应于系统时钟信号来执行相应的S1至S5的计算。
图2表示的是图1的里德索罗门解码器的级S1至S5的等待时间。如所示,级S1、S2、S4和S5的每个处理块的最大等待时间为n个循环(1帧),其中n是每个码字中的字节数。类似地,级S3的处理块的最大等待时间也是n个周期。对此,要注意的是,2000年3月20日提出的、序列号为09/528,676的美国同时待审专利申请提出了一种将第三级S3(多项式系数产生)的最大等待时间降低到n个周期的技术,该专利申请引用与此以资参考。
因此,如图2所示,里德索罗门计算块的最大等待时间为n个周期。通常,流水线方式受到具有最长等待时间的单元或块的限制。但是,即使在处理块的最大等待时间为n个周期或1帧时,在校正之前采用传统的里德索罗门解码器存储器来暂时存储输入的码字将引起瓶颈效应。这是因为,传统的存储器至少需要2n个周期或2个帧来首先在级S1存储码字,然后在级S5检索该解码用于校正。对比之下,并且如下所述,本发明的双存储体3-RAM装置通过将存储器写入/读取操作的等待时间降低到n个周期或1帧而克服了该缺点。
图3是图1所示双存储体3-RAM装置180的优选实施例的方框图。如图3所示,双存储体3-RAM装置180包括循环缓冲器控制器300、第一双存储体RAM310、第二双存储体RAM320、和第三双存储体RAM330。第一双存储体RAM310被分成BANK0和BANK1,第二双存储体RAM320被分成BANK2和BANK3,第一双存储体RAM330被分成BANK4和BANK5。由8比特地址总线340提供地址信号ADDR[7∶0],由8比特数据总线提供输入数据DIN[7∶0]。双存储体3-RAM装置180的输出是8比特并行信号MOUT[7∶0],并且被提供给图1所示的差错校正器190。
循环缓冲器控制器300向每个RAM310、320和330提供读取/写入命令RE/WR、使能信号EANBLE、和存储体选择信号BK_SEL。读取/写入命令RE/WR规定了每个RAM310、320和330的读取或写入操作,使能信号EANBLE有选择地使能每个RAM310、320和330。另外,存储体选择信号BK_SEL被加到地址信号ADDR[7∶0],以便选择每个RAM310、320和330的两个存储体中的一个。例如,如果存储体选择信号BK_SEL为0,则选择相应RAM的两个存储体中的第一存储体,如果存储体选择信号BK_SEL为1,则选择相应RAM的两个存储体中的第二存储体。以这种方式,读取/写入命令RE/WR、使能信号EANBLE、和存储体选择信号BK_SEL一起作为写入存储体指针和/或读取存储体指针,其规定所选单独的RAM310、320和330的写入和/或读取。
在操作时,循环缓冲器控制器300在每个存储器周期有效地设定写入存储体指针和读取存储体指针。这些写入和读取存储体指针被这样设定,使得写入存储体和读取存储体为RAM310、320和330中不同的,并且逐存储器周期地在写入存储体和读取存储体之间保持预定的偏移。以这种方式,在每个连续的存储器周期中,可以同时执行一帧数据(即,一个码字)的写入和另一帧数据的读取。
更具体地讲,在每个存储器周期中,并且与时钟信号CLK同步,循环缓冲器控制器300将使能信号ENABLE施加到RAM310、320和330中的两个中,从而使能这两个相应的RAM。另外,循环缓冲器控制器300将读取命令RE施加到两个使能的RAM中的一个,并且将写入命令施加到两个使能的RAM中的另一个。再者,循环缓冲器控制器300将1比特选择信号BK_SEL加到提供给每个使能的RAM的地址信号ADDR[7∶0]上。从而选择每个使能RAM中的两个存储体之一。(9比特地址信号被有效地施加到每个RAM310、320和330。)因此,对于每个存储器周期,一个RAM的一存储体被写入使能,而不同RAM的一存储体被读取使能。
每个RAM310、320和330可被实现为静态随机存取存储器(即,SRAM0、SRAM1和SRAM2)。最好,每个存储体的存储容量足以存储一个帧或码字的数据。通常,每个存储体应因此对RS(n,k)码具有n个码元(字节)的容量,并且每个RAM应具有2n个码元的容量。在图3的示例中,每个双存储体RAM的存储体能够存储在有限(Galois)域GF(28)上最大长度为256个字节的数据。
下面的表1表示了当在有限(Galois)域GF(2m)上出现里德索罗门(RS)码(n,k)时每个RAM和每个存储体的尺寸,其中,n为码字的长度(码元或字节数),k为在编码之前输入的数据的长度(码元或字节数),而m为每个字节的比特数。
表1 存储体 尺寸 RAM尺寸 数据宽度地址宽度 RS(n,k)码 GF(2m) n 2n mP+1,其中,P为满足1og2n≤P的最小整数 如果n=256, 并且m=8 256 512 88+1=9
这里,存储器地址宽度被定义为通过将1加到满足log2n≤P条件的最小整数P而得到的值。如前所述,添加1是采用RAM地址的MSB来选择存储体的结果。如表1所示,当n=256并且m=8时,存储体尺寸为256字节,RAM尺寸为512字节。这里,数据宽度为8比特,地址宽度为9比特。
下面将参照图3和4来描述双存储体3-RAM装置180的操作,其中,图4的流程图表示的是访问上述参照图3讨论过的双存储体3-RAM装置180的方法。
当访问双存储体3-RAM装置180时,对里德索罗门解码器的操作模式进行识别,即,是要执行差错和擦除校正两者,还是单独执行差错校正。参照图4,写入存储体指针和读取存储体指针的设定对于差错和擦除校正(步骤400)以及对于单独的差错校正(步骤410)是不同的。
具体地讲,在步骤402,进行是否执行差错和擦除校正两者的确定。如前所述,这是通过检查与输入数据DIN同步地输入的擦除标记Era_Flag的数目来进行的。如果有一个或多个擦除标记Era_Flag直至可允许最大值,则执行差错和擦除校正两者。
如果在步骤402确定将要执行差错和擦除校正两者,则执行步骤404,此时,循环缓冲器控制器300将写入存储体指针与读取存储体指针之间的偏移设定为4个存储体。写入存储体指针与读取存储体指针之间的该偏移将参照图5进行更详细的描述。在图5示例的第一帧T50中,读取指针被设定为第一RAM的BANK0,而写入指针被设定为第三RAM的BANK4。因此从读取存储体指针到写入存储体指针的偏移为4个存储体。然后,在如图5所示的每个连续帧中增大读取和写入指针,并且在每个帧中保持从读取存储体指针到写入存储体指针的4个存储体的偏移。如果读取存储体指针被表示为BANK#,则写入存储体指针被表示为BANK(#+4)MOD6,其中数字6表示的是存储体总数。
如果随机地认为在“第一”帧中出现任意特定存储体的写入,则偏移4将导致“第五”帧中相同特定存储体的读取。例如,考虑到图5中第三RAM的BANK4。该存储体被写入第一帧T50,然后在第五帧中读取。该时序对应于里德索罗门解码器中用于差错和擦除校正两者的流水线式计算的级数(5)。因此,如果输入数据DIN在第一计算级被写入BANK4,则可在流水线式解码器的第五计算级从BANK4读取相同的数据DIN。
回过来参照图4,如果在步骤402相反地确定为仅将执行差错校正,则执行步骤414,此时,循环缓冲器控制器300将写入存储体指针与读取存储体指针之间的偏移设定为3个存储体。当没有擦除标记Era_Flag输入时,或者当擦除标记Era_Flag的输入数目超出可允许校正范围时,仅出现差错校正。下面将参照图6来描述写入存储体指针与读取存储体指针之间的3个存储体的偏移。在图6示例的第一帧T60中,读取指针被设定为第一RAM的BANK0,而写入指针被设定为第二RAM的BANK3。因此从读取存储体指针到写入存储体指针的偏移为3个存储体。然后,在如图6所示的每个连续帧中递增读取和写入指针,并且在每个帧中保持从读取存储体指针到写入存储体指针的3个存储体的偏移。如果写入存储体指针被表示为BANK#,则写入存储体指针被表示为BANK(#+3)MOD6。
如果随机地认为在“第一”帧中出现任意特定存储体的写入,则偏移3将导致“第四”帧中相同特定存储体的读取。例如,考虑到图6中第二RAM的BANK3。该存储体被写入第一帧T60,然后在第四帧中读取。该时序对应于里德索罗门解码器中仅用于差错校正的流水线式计算的级数(4)。因此,如果输入数据DIN在第一计算级被写入BANK3,则可在流水线式解码器的第四计算级从BANK3读取相同的数据DIN。
回过来参照图4,当已在步骤S420施加写入命令时,在步骤430,输入数据DIN被写入由写入存储体指针指定的存储体。类似地,当已在步骤S440施加读取入命令时,在步骤450,从由读取存储体指针指定的存储体读取先前写入的输入数据DIN。然后,在步骤460,由此读取的数据DIN被如上所述地用于差错和/或擦除的校正中。
如图4所示,同时执行数据的写入和读取。如果在步骤470尚未完成编码,则通过返回到步骤420和440对下一个存储器帧进行操作,继续解码处理。
如图5和6所示,写入存储体指针和读取存储体指针之间的偏移被设定,以防止相同RAM内的冲突(同时访问),并且允许进行与流水线式解码器的计算级时序相一致的写入和读取操作。由此,存储器访问时序可以被预定,并且与系统时钟相一致,从而可快速地实现里德索罗门解码器的解码而无存储器瓶颈。
表2以比较方式示出了具有单个循环RAM的解码器和采用3个循环RAM的本发明里德索罗门解码器所需的存储器访问周期数目。
表2 RS(n,k)码写入周期读取周期总读取和写入周期 所需存储器 访问周期 相对于数据输 入时钟所需的 系统时钟 1 RAM n n 2n >2n >2x 3 RAM n n 2n n 1x
如表2所示,假设向RAM写入数据和从RAM读取数据的每个周期为“n”,则在采用单个RAM时,每帧数据访问存储器所需的周期数目为“2n”,而在3个RAM情况下仅为“n”。另外,当采用一个RAM时,系统时钟速率必须增大到数据输入时钟速率的2或3倍。另一方面,当如本发明采用3个RAM时,系统时钟速率可以与数据输入时钟速率相同。其结果是,可以以较低的系统时钟信号来实现数据的写入和读取。
表3表示的是在对于256字节码字采用SRAM情况下,单个RAM存储器和本发明双存储体3-RAM装置之间的尺寸和操作速度比较。
表3 存储器 尺寸 相对速度 绝对 相对 1 RAM(1536字节) 10996 0.66x <0.5x 3 RAM(512*3字节) 5573*3 1 1
如表3所示,当码字长度为256字节时,单个1536字节SRAM的尺寸比本发明3个512字节SRAM配置的小0.66倍。但是,3个SRAM的操作速度是单个SRAM的两倍。另外,当整体考虑里德索罗门解码器时,由采用3个SRAM导致的其尺寸增大的百分比与增大的操作速度相比被忽略掉。
图7表示的是本发明实施例块流水线式里德索罗门解码器的解码处理的时序图。如图7所示,起始等待时间延迟T70为4*n个周期,并且在起始等待时间延迟T70之后,每n个周期输出差错校正的数据DOUT(即,R′(x))。此后,一旦在第五和第六帧中实现全部流水线操作,则可以执行采用S(x)计算的数据写入和采用R`(x)计算的数据读取两者而无瓶颈效应,因为写入/读取操作的等待时间为n个周期。在图7中,T75表示在实际处理过程中的吞吐量延迟间隔,而不是等待时间延迟间隔。
本发明的双存储体3-RAM装置和本发明采用双存储体3-RAM装置的里德索罗门解码器具有宽的应用范围,例如包括高清晰度数字通用盘(HD=DVD)等光盘系统、HDTV、卫星通信、IMT等无线通信设备、千兆以太网等网络系统、和超高速系统。
在本发明的双存储体3-RAM装置中,用于访问存储器的数据输入时钟可用作系统时钟,从而简化了半导体装置的制造,降低了功耗,并且提高了操作速度。另外,可以使访问存储器所需的时间最小,以使得系统时钟受存储器访问时间的影响小,从而确实提高了在系统设计时各块之间时序边界的自由度。另外,双存储体3-RAM装置允许高速传输,而这尤其适用于高速流水线式里德索罗门解码器和采用里德索罗门解码器的超高速系统。
在附图和说明书中,尽管采用了特定术语,对本发明的典型优选实施例进行了公开,它们是在通用和示范意义上进行使用的,而非用于限定的目的。本领域内的普通技术人员将理解的是,可在不背离由所附权利要求限定的宗旨和范围情况下,对上述实施例进行形式和细节上的各种改变。