专利名称::一种基于fpga实现的解卷积交织器及解卷积交织方法
技术领域:
:本发明涉及解巻积交织技术,尤其是一种基于FPGA实现的解巻积交织器及解巻积交织方法。
背景技术:
:在通信系统中,信道编码的一般作用是纠正信道中出现的随机错误。而信道纠错编码在实际应用中往往要结合数据交织技术,这是因为多数信道差错是突发性的,即发生错误时,往往具有很强的相关性,甚至是连续一片数据都出了错;同时由于错误集中,可能超出了纠错码的纠错能力,所以在发送端加上数据交织器,在接收端加上解交织器,使信道的突发差错得以分散,以利于纠错。于此,信道之中加上交织器与解交织器,系统的纠错性能可以得到几个数量级的提高。解交织器通常有两种实现形式,一种为解块交织器(BlockDe-interleaver),另一种为解巻积交织器(ConvolutionalDe-interleaver)。如图l所示,为一种解巻积交织器的结构示意图。解巻积交织器一般由I个分支构成,分别为0到I-1。其中,每个分支的延迟单元数为(I-1)*M、(1-2)*M.......2M、M、0;每个分支延迟单元数差M个,所以每个分支的延迟数并不一致,结果造成输入数据的延迟并不相同(图1中,以M-17-N/1,N-204-误码保护帧长度,1-12==解交织深度为例)。同时,请参见图2所示,为解巻积交织器的一种实现方式,其关键是使用FIFO(FirstInFirstOut,先进先出)移位寄存器实现数据读写;解交织器的每个分支实际上是一个FIFO移位寄存器,具有深度不等的字节空间。输入数据由控制开关控制循环送入到每一个分支。输出也有开关控制选择一个分支的数据。其中,图中B代表字节。前迷实现方式虽然具有设计方便简单的优点,但是具有如下缺陷1、在FPGA(FieldProgrammableGateArray,现场可编程门阵列)逻辑器件中实现时,由于FPGA只支持二的次幂深度的存储记忆块(寄存器),如果用FIFO来实现每个分支存储单元,那么各个分支需要的FIFO存储空间依次为256、256、256、256、128、128、128、128、64、64、32和0字节,共占用1696字节的存储空间,因此,实际使用到的存储空间是1122字节,存储空间的使用效率为1122/1696=66°/。,故存储空间的使用效率较低。2、前述的设计由于分支开关切换的次数频繁,故消耗功率较大。如图3所示,为基于一个双端口RAM实现解巻积交织器的结构示意图。本方案是将不同的分支大小的存储单元合成为一个大的、统一的BlockRAM。只需一个写地址发生器和读地址发生器来控制读写操作同时进行。通过写地址信号将输入端的数据存入RAM,通过读地址信号将数据从RAM中取出送往解交织器的输出端。由图l可以计算得出解交织器的实现所需的FIFO移位寄存器的容量共为1122字节;而采用图3所示的一个双端口RAM实现时,所需地址线宽度应该为11。同时,由于FPGA只支持二的次幂深度的存储记忆块(寄存器),所以,虽然交织器只需1122*81)&,但是必需要用二的次幂的存储空间来实现,所以用一个双端口RAM时需要1l位地址线,存储空间2048*81>^。该方案的缺点是既增加了寄存器占用FPGA的面积;同时,造成许多存储单元闲置,存储空间的使用效率为1122/2048-55%,具有存储空间的使用效率较低的缺点。
发明内容本发明的目的在于提出一种基于FPGA实现的解巻积交织器及解巻积交织方法,以减少在FPGA中所使用存储空间的面积、增加存储空间的使用效率、提高解巻积交织器的工作速度。为解决上述问题,本发明公开一种基于FPGA实现的解巻积交织器,包括两个存储深度为二的次幂的双端口RAM,每个双端口RAM分别用于多个连续分支的移位寄存器;两个读写地址发生器,每个读写地址发生器分别与一个双端口RAM连接;控制器,分别与所述双端口RAM以及所述读写地址发生器连接,输出一个选择控制信号,选择控制其中一个读写地址发生器产生读地址和写地址输出;且该控制器输出一个选择信号,选择对应于所述读、写地址所属的双端口RAM,将输入的数据写入该双端口RAM中的所述写地址对应的存储空间,或从该双端口RAM中的所述读地址对应的存储空间读取数据并输出。较优的,所述读写地址发生器包括写地址发生模块和读地址发生模块;所述写地址发生模块根据输入数据需要写入的分支基地址,加上偏移地址,输出写入数据的目标地址;所述读地址发生模块根据读出数据所在的分支基地址,加上偏移地址,输出读出数据的目标地址。较优的,所述控制器包括控制不同分支之间进行切换的状态机,当状态机控制从一个分支切换至另一个分支时,所述控制器控制选择相应的双端口RAM进行数据读或写的操作。较优的,所述两个双端口RAM的其中一个为存储容量是1024*8字节的双端口RAM,另一个为存储容量是256*8字节的双端口RAM。较优的,所述双端口RAM中,每个分支占有的存储空间,比实际存储空间多一个字节。相应的,本发明公开一种基于FPGA实现的解巻积交织方法,包括步骤a、将解巻积交织器的不同分支的输入数椐分别存储到两个双端口RAM中;b、控制器控制读写地址发生器产生读数据或写数据的目标分支在对应双端口RAM中的存储空间的地址;c、控制器控制将数据写入目标地址,或从目标地址读出数据。较优的,所述步骤b包括如下步骤bl、控制器产生控制信号,选择其中一个读写地址发生器;b2、读写地址发生器根据读数据或写数据的目标分支的基地址,加上偏移地址,输出读数据或写数据的目标地址。较优的,所述偏移地址采用循环计数器进行循环计数,当控制器控制的对象从一个分支切换至另一个分支时,该分支对应的循环计数器加1。较优的,所述两个双端口RAM的其中一个为存储容量是1024*8字节的双端口RAM,另一个为存储容量是256*8字节的双端口RAM。较优的,所述双端口RAM中,每个分支占有的存储空间,比实际存储空间多一个字节。与现有技术相比,本发明具有以下有益效果1、本发明采用多个不同容量的双端口RAM,不但减少寄存器的面积,还提高存储空间的使用效率(例如,采用2个不同容量的双端口RAM实现的解巻积交织器,其存储空间的使用效率达到88.4%);2、本发明提出解巻积交织器中的读写地址发生方法,极大地提高了解巻积交织器的工作速度。本发明的解巻积交织器尤其适合应用于DVB等通信系统,具有较高的应用价值。图l是现有的一种解巻积交织器的原理示意图。图2是现有釆用FIFO实现解巻积交织器的一种结构示意图。图3是现有基于一个双端口RAM实现解巻积交织器的结构示意图。图4是本发明基于FPGA实现的解巻积交织器的一个具体实施例的结构示意图。图5是本发明的解巻积交织器中,读写地址发生器产生各个分支读写地址的实现原理示意图。具体实施方式请参考图4所示,为本发明基于FPGA实现的解巻积交织器的一个具体实施例的结构示意图。本实施例为模拟实现图l所示的解巻积交织器。本实施例的解巻积交织器包括两个读写地址发生器11和12、分别为1024*8与256*8的双端口RAM21和22、以及控制器30。由于FPGA只支持二的次幂深度的存储记忆块(寄存器),虽然交织器只需1122*8bits,但是必需要用二的次幂的寄存器去实现。因此,本实施例的解巻积交织器中1024+8bits的双端口RAM21为模拟图l所示的分支0至6的移位j存器;256,8bits的双端口RAM22为模拟图l所示的分支7至ll的移位寄存器。而输出端(Out)的部分则有一个开关作交换的动作,在两个双端口RAM21和22之间切换分支0到6不需要开关交换,只有在分支7的时候开关才会交换一次,换句话说,如采用FIFO的技术方式,就必须进行开关交换ll次,所以本发明相比现有技术而言,具有省电的优点。并从上述分配存储空间可知,两个RAM的总存储空间为1280*8bits,而实际利用到的空间为1133*8bits,存储空间的使用效率达到88.4%。同时,对比图l所示结构,对于解巻积交织器,从0到11分支的存储大小分别为187*8、170*8、153*8、136*8、119*8、102*8、85*8、68*8、51*8、34*8、17*8、0比特(Bit)。而如图4所示的本实施例的解巻积交织器,可把图1中的分支0至11的存储空间分配到两个双端口RAM21和22。并且,根据分支0至6的大小,把102W8双端口RAM21划成不同的存储空间第0个分支的起止地址为0-187、第l个分支的起止地址为188-358、以此类推,第2、3、4、5、6分支的起止地址分别为359-512、513-649、650-769、770-872和873-958。同样,根据分支7到11的大小,把25648双端口RAM22划成不同的存储空间第7个分支的起止地址为0-68、第8个分支的起止地址为69-120、第9个分支的起止地址为121-155、第10个分支的起止地址为156-173、第ll个分支的起止地址为174-174。需要说明的是,至于每个存储空间多占用一个地址,目的是为了满足读数据和写数据控制的要求,方便控制读写数据,提高读写速度。另外,所述控制器30在具体实现中,可由一个状态4几控制,从状态0到状态ll的切换,每个状态代表一个分支,即控制在分支l至ll之间的切换。在每个时钟周期且输入数据有效时,从一个状态切换到下一个状态,默认初始状态为idle。所述控制器30具有2个输出端,其中一个输出信号用于控制两个读写地址发生器11和12的工作,另一个输出信号则是选择信号,用于选择两个双端口RAM21和22中的其中之一。当处于状态0到状态6时,所述控制器30则输出控制信号,控制使所述读写地址发生器ll工作,同时输出选择信号,选择102^8双端口RAM21作为数据读写模块;当处于状态7到状态11时,所述控制器30则使读写地址发生器12工作,同时选择256*8双端口RAM22作为数据读写模块。其中,读写地址发生器11和12中均包括写地址发生模块和读地址发生模块,图中未示;且写地址发生和读地址发生原理是一致的。下面介绍写地址产生原理。写地址由分支基地址和偏移地址构成,即写地址=分支基地址+偏移地址。分支基地址即是前面划分存储空间中提到的各分支的开始地址;偏移地址可由不同计数范围的循环计数器来产生。旲似的,读地址由分支基地址和偏移地址构成,即读地址=分支基地址+偏移地址。请结合下表l所示,为解巻积交织器各分支的起止地址、地址所属的双端口RAM、基地址及计数器范围。表l<table>tableseeoriginaldocumentpage8</column></row><table>通过所述控制器30的状态机所处的状态来决定地址发生器输出哪个分支的地址(分支基地址+偏移地址),同时使所在分支的偏移地址循环计数器加1。例如,当第1次切换到状态1时,分支基地址为188,写偏移地址循环计数器的值为0,故输出的写地址为188,同时写偏移地址循环计数器的值自动加1;当第2次切换到状态1时,输出的写地址为188+1,同时写偏移地址循环计数器的值自动加1得2;以此类推。在产生写地址的同时,读地址也是分支基地址和读偏移地址构成,所不同是,读偏移地址循环计数器的起始值为1。例如,当第1次切换到状态1时,分支基地址为188,读偏移地址循环计数器的值为1,故输出的写地址为189,同时读偏移地址循环计数器的值自动加1得到2。也就是说,同时产生的写地址和读地址的区别是读偏移地址循环计数器的值总是比写偏移地址循环计数器的值多1。例如,同一时刻分支2写偏移地址计数器的值为10,则读偏移地址计数器的值为11;需要注意的是分支2的计数范围0-170,若分支2写偏移地址计数器的值为170,则读偏移地址计数器的值为0。这也是前述提到的每个存储区间的大小比实际多一个的根本原因。采用上述产生地址的方法后,读写地址的控制就比较简单,可以极大提高解巻积交织器的工作速度。同时,请参见图5所示,为本发明的解巻积交织器中,所述读写地址发生器11如何产生各个分支读写地址的实现原理示意图。承上所述,当所述控制器30的状态机处于状态0到状态6时,则读写地址发生器ll工作。读写地址发生器ll根据不同时刻所处的状态,启动相应的读、写偏移地址循环计数器以及产生相应的分支基地址,并把读写计数器的值和分支基地址相加,即得到该时刻的读写地址。当第1次切换到状态0时,分支基地址为0,写偏移地址循环计数器的值为0,读偏移地址循环计数器的值为1,则此刻产生的写地址为0+0=0、读地址为0+1=1;输入的有效数据才艮据产生的写地址存储到1024*8的双端口RAM21相应的空间,同时由产生的读地址从1024*8的双端口RAM21中相应空间读出数据,并使读写偏移地址计^t器分别加1。当第1次切换到状态1时,分支基地址为188,写偏移地址循环计数器的值为0,读偏移地址循环计数器的值为1,则此刻产生的写地址为188+0=188,读地址为188+1=189;输入的有效数据根据产生的写地址存储到1024*8的双端口RAM21相应的空间,同时由产生的读地址从1024*8的双端口RAM21中相应空间读出数据,并使读写偏移地址计数器分别加1。依次类推,当第1次切换到状态2~6时,对应的分支基地址如前述表1所示,写偏移地址循环计数器的值均为0,读偏移地址循环计数器的值均为1,由此产生相应的读写地址。当第n次切换到状态O时,分支基地址为O,写偏移地址循环计数器的值为n-l,读偏移地址循环计数器的值为n,则此刻产生的写地址为n-l,读地址为n;输入的有效数据根据产生的写地址存储到1024*8的双端口RAM21相应的空间,同时由产生的读地址从双端口RAM21相应的空间读出数据,并使读写偏移地址计数器分别加1。当第n次切换到状态1时,分支基地址为188,写偏移地址循环计数器的值为n-l,读偏移地址循环计数器的值为n,则此刻产生的写地址为188+n-l=187+n,读地址为188+n;输入的有效数据根据产生的写地址存储到双端口RAM21相应的空间,同时由产生的读地址从双端口RAM21相应的空间读出数据,并使读写偏移地址计数器分别加1。依次类推。需要注意的是不同分支的读、写偏移地址循环计数器的计数范围有所不同(具体数值范围见表l)。循环计数器的工作原理是假设其计数范围为n,每次使能循环计数器,则计数值加1;当计数值达到n时,计数器下一次的值将回到0再开始逐次加1。当所述控制器30的状态机处于状态7到状态11时,则发出控制信号,使读写地址发生器22工作,同时选择256*8的双端口RAM22作数据读写块。其中,读写地址发生器22的实现类似于读写地址发生器21,不再重复描述。综上,本发明采用两个不同容量的双端口RAM,不但减少寄存器的面积,还提高存储空间的使用效率(采用2个不同容量的双端口RAM实现的解巻积交织器,其存储空间的使用效率达到88.4°/0);同时,本发明提出解巻积交织器中的读写地址发生方法,极大地提高了解巻积交织器的工作速度。本发明的解巻积交织器尤其适合应用于DVB等通信系统,具有较高的应用价值。权利要求1.一种基于FPGA实现的解卷积交织器,其特征在于,包括两个存储深度为二的次幂的双端口RAM,每个双端口RAM分别用于多个连续分支的移位寄存器;两个读写地址发生器,每个读写地址发生器分别与一个双端口RAM连接;控制器,分别与所述双端口RAM以及所述读写地址发生器连接,输出一个选择控制信号,选择控制其中一个读写地址发生器产生读地址和写地址输出;且该控制器输出一个选择信号,选择对应于所述读、写地址所属的双端口RAM,将输入的数据写入该双端口RAM中的所述写地址对应的存储空间,或从该双端口RAM中的所述读地址对应的存储空间读取数据并输出。2、根据权利要求1所述的基于FPGA实现的解巻积交织器,其特征在于,所述读写地址发生器包括写地址发生模块和读地址发生模块;所述写地址发生模块根据输入数据需要写入的分支基地址,加上偏移地址,输出写入数据的目标地址;所述读地址发生;f莫块根据读出数据所在的分支基地址,加上偏移地址,输出读出数据的目标地址。3、根据权利要求1所述的基于FPGA实现的解巻积交织器,其特征在于,所述控制器包括控制不同分支之间进行切换的状态机,当状态机控制从一个分支切换至另一个分支时,所述控制器控制选择相应的双端口RAM进行数据读或写的操作。4、根据权利要求1所述的基于FPGA实现的解巻积交织器,其特征在于,所述两个双端口RAM的其中一个为存储容量是1024*8字节的双端口RAM,另一个为存储容量是256*8字节的双端口RAM。5、根据权利要求1至4任意一项所述的基于FPGA实现的解巻积交织器,其特征在于,所述双端口RAM中,每个分支占有的存储空间,比实际存储空间多一个字节。6、一种基于FPGA实现的解巻积交织方法,其特征在于,包括步骤a、将解巻积交织器的不同分支的输入数据分别存储到两个双端口RAM中;b、控制器控制读写地址发生器产生读数据或写数据的目标分支在对应双端口RAM中的存储空间的地址;c、控制器控制将数据写入目标地址,或从目标地址读出数据。7、根据权利要求6所述的基于FPGA实现的解巻积交织方法,其特征在于,所述步骤b包括如下步骤bl、控制器产生控制信号,选择其中一个读写地址发生器;b2、读写地址发生器根据控制信号选择读、写数据的目标分支的基地址,加上偏移地址,输出读数据或写数据的目标地址。8、根据权利要求7所述的基于FPGA实现的解巻积交织方法,其特征在于,所述偏移地址采用循环计数器进行循环计数,当控制器控制的对象从一个分支切换至另一个分支时,该分支对应的循环计数器加1。9、根据权利要求6所述的基于FPGA实现的解巻积交织方法,其特征在于,所述两个双端口RAM的其中一个为存储容量是1024*8字节的双端口RAM,另一个为存储容量是256*8字节的双端口RAM。10、根据权利要求6至9任意一项所述的基于FPGA实现的解巻积交织方法,其特征在于,所述双端口RAM中,每个分支占有的存储空间,比实际存储空间多一个字节。全文摘要本发明公开一种基于FPGA实现的解卷积交织器及解卷积交织方法,该解卷积交织器包括两个存储深度为二的次幂的双端口RAM,每个双端口RAM分别用于多个连续分支的移位寄存器;两个读写地址发生器,每个读写地址发生器分别与一个双端口RAM连接;控制器,分别与所述双端口RAM以及所述读写地址发生器连接,输出一个选择控制信号,选择控制其中一个读写地址发生器产生读地址和写地址输出;且该控制器输出一个选择信号,选择对应于所述读、写地址所属的双端口RAM,将输入的数据写入该双端口RAM中的所述写地址对应的存储空间,或从该双端口RAM中的所述读地址对应的存储空间读取数据并输出。本发明的解卷积交织器具有存储空间的使用效率高,工作速度快的优点。文档编号H03M13/27GK101257313SQ20071007400公开日2008年9月3日申请日期2007年4月10日优先权日2007年4月10日发明者郭树印申请人:深圳市同洲电子股份有限公司