一种基于交叉多体存储的路径度量调度方法及装置的制作方法

文档序号:7510430阅读:280来源:国知局
专利名称:一种基于交叉多体存储的路径度量调度方法及装置的制作方法
技术领域
本发明涉及路径度量调度,具体涉及基于交叉多体存储的路径度量调度方法及装置。
背景技术
维特比译码算法自1967年出现以来,已成为卷积编码数据最主要的译码算法。在GSM、IS-95、TD-SCDMA系统中均被广泛应用。如图1所示,维特比译码器包含分支度量计算单元(BMU)、蝶形处理单元(ACSU)、路径度量管理单元(PMMU)、幸存路径存储单元(SMU)和回溯单元(TBU),各单元在控制单元的控制下工作,其中ACSU含有若干个ACU(加比选)计算单元。其工作过程可归纳如下接收到的符号进入BMU,计算得出分支度量值后输入到ACSU;ACSU将分支度量值和由PMMU给出的相应路径度量值进行加比选操作,得出较优的路径度量值保存到PMMU的存储单元中,同时把标志较优路径的幸存比特保存到SMU中;如此计算达到一定的深度后,TBU从SMU中读出幸存比特进行回溯解码操作,完成译码过程。
随着通信技术的发展,各种通信协议的数据速率在不断提高,对维特比译码器译码速率的要求也不断提高,如HSDPA、WLAN协议规定的数据速率已经由原来的不到1Mbps提高到了十几甚至几十Mbps。因此,在考虑硬件实现代价的前提下提高译码速率就成为了维特比译码器设计面临的新要求。
为了提高ACS计算并行度,实现多个状态更新同时进行,现有技术方案大部分采用的方法是用交叉多体存储来代替传统的一块或两块路径度量存储RAM,通过AGU单元(存取地址生成单元)对路径度量的存取地址进行特定排列,使得同一周期可以从不同的存储体读出多个路径度量值送入ACSU,从而提高ACS计算并行度。具体方案可见台湾云林科技大学硕士论文《腓特比解码器之路径计量记忆体连结复杂度之降低研究》,作者李明宗,2003年6月。这种方法降低了路径度量存储空间,从一定程度上提高了ACS计算并行度,但是该方法完成一次状态更新仍然至少需要3个时钟周期(一个周期读出旧的路径度量值,一个周期进行ACS计算,一个周期写入更新后的路径度量值),相对于可在一个时钟周期完成的ACS计算,路径度量值的存取开销仍然是制约整个译码器译码速率的瓶颈。
另外,从路径度量值的存取实现看,现有方案进行一次状态更新时,从路径度量存储单元中读取相应的若干个度量值送入ACSU计算完成一个时间级的状态更新后,立即将新的路径度量值写回路径度量存储单元,没有充分利用各路径度量值间的数据相关性,同时也没有屏蔽路径度量值的存取开销。
而采用全寄存器结构实现路径度量的存储,由此可以省去对存储器RAM的存取操作,从而提高译码速率。但是这种方案要求参与计算的ACS的个数和用来存储路径度量值的寄存器个数都必须与状态总个数相等,即对于约束长度为k的卷积码,需要2k-1个ACS运算单元和m*2k-1个寄存器(假设每个路径度量值的存储宽度为m),硬件代价非常大,这种方案只适用于译码速率要求很高的场合。

发明内容
针对以上不足,本发明提供了一种基于交叉多体存储的路径度量调度方法及装置,屏蔽了路径度量的存取开销,提高了译码速度。
本发明的技术方案是一种基于交叉多体存储的路径度量调度方法,其特征在于,包括A、根据约束长度k确定使用n个加比选计算单元;将状态分为2K-1/n个状态组,各状态组包括n个状态;确定对每个状态组连续进行s个时间级的加比选;确定初始状态分配表及目标状态分配表;并根据初始状态分配表将状态分配到交叉多体存储器的存储体中;B、从交叉多体存储器中读取第一个状态组的n个状态的路径度量值送入蝶形处理单元;C、判断将对所述状态组进行第几个时间级的加比选;如果将进行最后第s个时间级的加比选,则执行E;否则执行D;D、蝶形处理单元对所述状态组进行更新;并将更新后的路径度量值再送入蝶形处理单元,并返回步骤C;E、蝶形处理单元对所述状态组进行更新,并将更新后的路径度量值根据目标状态分配表存入交叉多体存储器;如果还有后继的状态组需要进行更新,则将后继的状态组的n个路径度量值送入蝶形处理单元并返回步骤C;否则结束。
进一步地,所述步骤D具体包括D1、如果将进行的是第s-1时间级的加比选,并且还有后继的状态组需要进行更新,则进行D2,否则进行D3;D2、在对当前的状态组进行更新,同时预先读取后继状态组的n个路径度量值;D3、对当前的状态组进行更新;所述步骤E具体包括E1、对当前的状态组进行更新;如果还要继续对后继状态组进行更新则进行步骤E2;否则进行E3;E2、将更新后的路径度量值存入交叉多体存储器,同时将步骤D2中预先读取的n个路径度量值送入蝶形处理单元并返回步骤C;E3、将更新后的路径度量值存入交叉多体存储器;更新结束。
进一步地,步骤D2及E2中所述的同时是指在一个时钟周期中。
本发明还提供了一种基于交叉多体存储的路径度量调度装置,包括交叉多体存储器,用于存储路径度量值,其特征在于,该装置还包括载入旁路器、载入定向器和蝶形处理单元入口多路器;所述载入定向器用于接收蝶形处理单元更新后的当前状态组的路径度量值,当该状态组的路径度量值已经进行过最后一个时间级的加比选时,将该状态组的路径度量值存入所述交叉多体存储器;否则将该状态组的路径度量值送入蝶形处理单元入口多路器;所述载入旁路器用于按照状态分配表从所述交叉多体存储器中读取路径度量值,每次读出一个状态组的路径度量值,并送入蝶形处理单元入口多路器;所述蝶形处理单元入口多路器用于在当前状态组的路径度量值已经进行过最后一个时间级的加比选,或从未进行过加比选操作时,将来自于载入旁路器的路径度量值送入蝶形处理单元;在其它时候将来自于载入定向器的路径度量值送入蝶形处理单元。
进一步地,所述载入旁路器在状态更新开始时读取第一个状态组的路径度量值;其后在每次对当前状态组的路径度量值进行倒数第二个时间级的加比选的同时,预取下一个状态组的路径度量值。
进一步地,所述装置还包括调度控制计数器和控制器;所述调度控制计数器用于根据控制器的控制分别对每个状态组进行加比选的时间级分别进行计数;所述控制器在开始状态更新时启动所述载入旁路器,并在要结束状态更新时停止所述载入旁路器;所述控制器根据调度控制计数器的计数配置三个信号载入路选信号、载入定向使能信号和存储定向信号;其中,载入定向使能信号和存储使能信号互为反信号;所述控制器中存储有次数规定值,该次数规定值为每个状态组要连续进行加比选的时间级数;当调度控制计数器中的计数小于这个次数规定值并且不为初始值时,载入定向使能信号有效,载入路选信号为K1;当调度控制计数器中的计数等于这个次数规定值时,存储使能信号有效,载入路选信号为K2;当调度控制计数器中为初始值时,载入路选信号为K2;所述蝶形处理单元入口多路器当载入路选信号为K1时,将来自载入定向器的定向路径度量值送入蝶形处理单元进行计算;当载入路选信号为K2时将来自载入旁路器的路径度量值送入蝶形处理单元进行计算。
进一步地,所述载入定向器包括载入定向单元、存储定向单元;所述载入定向单元用于在所述载入定向使能信号有效时,将经过蝶形处理单元更新的路径度量值进行重新排列,送入蝶形处理单元入口多路器;所述存储定向单元用于在存储使能信号有效时,将经过蝶形处理单元更新的路径度量值按照目标状态分配表进行重新排列后送入交叉多体存储器进行存储。
进一步地,所述载入定向器还包括所述路径度量暂存器组,用于暂存蝶形处理单元更新后、并经载入定向单元重新排列后准备送入蝶形处理单元入口多路器的路径度量值。
进一步地,所述载入定向单元将路径度量值重新排列,使具有数据相关性的状态配对送入一个加比选运算单元。
进一步地,所述载入旁路单元根据初始状态分配表从交叉多体存储器中读取路径度量值,并将读取的路径度量值重新排列后送入蝶形处理单元入口多路器,使具有数据相关性的状态配对送入一个加比选运算单元。
本发明消除了制约整个译码器译码速率的瓶颈——路径度量值的存取开销,达到一个时钟周期向n个ACS运算单元提供其所需的n个路径度量值的目标。基于数据相关性分析,一次读取的一组路径度量值可以连续进行多次加比选操作,最大限度的利用了路径度量值的存取开销。相对于传统的交叉多体存储方案,本发明利用载入定向技术将每组路径度量值连续进行多次加比选操作更新之后再写回存储体,减少了存取路径度量值时所依据的状态分配表个数,存取地址的产生逻辑也因此得到简化。


图1是现有技术中维特比译码器的简要框图;图2是载入旁路和载入定向的操作示意图;图3是本发明的路径度量调度方法的流程图;
图4是本发明的路径度量调度装置的框图;图5是路径度量值间的数据相关性示意图;图6是本发明中载入定向器的具体实施框图;图7是应用实例中载入定向器的载入定向单元的排列方案示意图;图8是应用实例中状态组索引SI=0时存储定向单元的排列方案示意图;图9是应用实例中状态组索引SI=1时存储定向单元的排列方案示意图;图10是应用实例中载入旁路器的排列方案示意图;图11是应用实例中路径度量调度方法的具体实施时序示意图。
具体实施例方式
下面将结合附图及实施例对本发明的技术方案进行具体阐述。
本发明的设计思路是将载入旁路定向技术应用到路径度量的存取调度中;载入旁路和载入定向是超标量处理器技术中的两种乱序执行load指令的技术。如图2所示,载入旁路是指当载入地址和前导store之间不存在存储器数据相关时,将在后的load指令置于前导store指令之前执行,即预取load指令所需要的数据。如果load和store存在RAW(read after write,写后读)相关,就使用载入定向将store的数据直接传递给load指令,load指令无需再访问存储器。将载入旁路定向技术与多体存储技术相结合,能最大程度的屏蔽路径度量的存取开销,并且简化了地址生成的逻辑。
本发明提供了一种基于多体存储的路径度量调度方法,如图3所示,包括以下步骤(a)根据译码器所要支持的约束长度k选择要用几个ACS运算单元;假设选择使用n=2m个ACS运算单元。
一个ACS运算单元能够完成一对具有数据相关性的状态的更新,也就是说ACSU每次更新操作可以完成对n个状态的更新,因此每次可以从存储器中读取n个状态的路径度量值,一起送入ACSU进行更新;所以通常设计为交叉多体存储器中存储体的个数与ACSU中ACS运算单元的个数相同。
将每次读出一起送去更新的n个状态称为一个状态组,所有状态可划分为2k-1/n个状态组;这里,如何划分状态组为现有技术。分到同一个状态组中的状态的路径度量值是需要同时参与计算的;一个状态组中的2m个状态最多可以连续进行m个时间级的加比选,可以根据实际情况规定对每个状态组连续进行s个时间级的加比选,s≤m。
设约束长度为k,对每个状态组连续进行s个时间级的加比选,则需要(k-1)/s个状态分配表。各个状态分配表依次循环使用,如,首先使用表0,一轮状态更新之后使用表1,再一轮后用表2......
为方便后文的说明,这里定义初始状态分配表为开始状态更新前的状态分布情况;目标状态分配表为一轮状态更新之后——即所有状态组进行过s级更新后的状态分布情况。
对于卷积码约束长度不同的译码器,可以有不同的初始状态分配表,不同的初始状态分配表的分配方案都是现有技术;本发明中是根据台湾云林科技大学硕士论文《腓特比解码器之路径计量记忆体连结复杂度之降低研究》(作者李明宗,2003年6月)中的方案确定初始状态分配表。当然对于初始状态分配表的分配方案也可以采用现有的其它分配方式,只要不会发生存取冲突即可。
而目标状态分配表则是根据各状态组更新后的结果就可以推算出来,这也属于现有技术;根据初始状态分配表及状态组还可以提取出存取状态时的公式;所依据的初始状态表不同,提取出来的公式应该不同。
(b)载入旁路器根据译码器控制的信号开始状态更新,从交叉多体存储器中读取一个状态组的n个相应的路径度量值并送入ACSU。
(c)判断对ACSU中的当前状态组将进行第几个时间级的更新,或者说是判断ACSU将处理当前状态组的第几个更新周期;如果将进行的是最后一个时间级的更新——即第s个时间级的加比选,或者说ACSU将处理当前状态组的最后一个更新周期,则执行步骤(e1);否则执行步骤(d1)。
(d1)如果将进行的是倒数第二个时间级的更新——即第s-1个时间级的加比选,或者说ACSU将处理当前状态组的倒数第二个更新周期,并且进行完当前状态组的更新后还要继续进行下一状态组的更新,则进行步骤(d2);否则进行步骤(d3)。
(d2)ACSU对路径度量值进行加比选操作,得到更新后的路径度量值并再次送入ACSU,返回步骤(c);在进行加比选的同时从交叉多体存储器中预先读取后继状态组的n个路径度量值。
(d3)ACSU对路径度量值进行加比选操作,得到更新后的路径度量值并再次送入ACSU,返回步骤(c)。
即当一个状态组的路径度量值进行加比选的次数未超过规定次数时,继续对该状态组的路径度量值进行加比选操作,使一个状态组可以连续进行几个时间级的加比选,而不用反复存取,从而节省了存取开销。
需要注意的是,本步骤是在对当前状态组进行第s-1个时间级加比选的那个时钟周期里就开始进行预取操作,但将路径度量值读取到载入旁路器里则是在下一个时钟周期才能完成的。
(e1)ACSU对路径度量值进行加比选操作,得到更新后的路径度量值;如果还有后继的状态组的路径度量值需要进行更新,则进行步骤(e2),否则进行(e3)。
(e2)将更新后了的路径度量值存入交叉多体存储器的相应存储体的相应地址,在同一个时钟周期里将步骤(d2)中预先读取的路径度量值送入ACSU,保证了ACSU连续工作不间断,返回(c)。
(e3)将更新后了的路径度量值存入交叉多体存储器的相应存储体的相应地址,至此完成状态更新。
由此,达到一个时钟周期向n个ACS运算单元提供其所需的n个路径度量值的目标,并消除了路径度量值的存取开销这个制约译码速率的瓶颈。
本发明还提供了一种基于交叉多体存储的路径度量调度装置,如图4所示,具体包括交叉多体存储器、载入旁路器、载入定向器、ACSU入口多路器、调度控制计数器及控制器。
所述交叉多体存储器包括n个存储体,其中保存有各状态的路径度量值,这些值是根据初始的状态分配表被动态分配到所述存储体中;需要同时参与计算的路径度量值被分配到了不同的存储体中,使一个状态组中的2m个状态最多可以连续进行m个时间级的加比选,可以根据实际情况规定对每个状态组进行s个时间级的加比选,s≤m。所述存储体个数和状态分配表是根据译码器所要支持的约束长度事先确定的。状态分配表的选择前文已有详细表述,这里不再重复。
所述调度控制计数器用于根据控制器的控制对一个状态组在ACSU中进行更新的周期进行计数;当前状态组的路径度量值每进行一个时间级的加比选,调度控制计数器的计数加一,当换成另一状态组的路径度量值进行加比选时,所述调度控制计数器被恢复为初始值后重新开始计数。初始值不一定为0,该计数器中的计数为当前数值减去初始值。
所述控制器在开始状态更新时启动载入旁路器读取第一个状态组的路径度量值;并在要结束状态更新时,停止载入旁路器。
所述控制器还根据调度控制计数器的计数配置三个信号载入路选信号、载入定向使能信号和存储定向信号;其中,载入定向使能信号和存储使能信号互为反信号。
在控制器中存储有一个次数规定值,该次数规定值由每个状态组要连续进行加比选的时间级数得到;当调度控制计数器中的计数小于这个次数规定值时,载入定向使能信号有效,载入路选信号为K1;当调度控制计数器中的计数等于这个次数规定值时,存储使能信号有效,载入路选信号为K2;当调度控制计数器中的计数等于这个次数规定值时,载入路选信号为K2。这里的K1、K2用于区分载入路选信号的两种不同情况。
实际应用中,控制器的功能可以集成到原有的控制处理单元中,但其逻辑上属于本路径度量调度装置。
所述ACSU入口多路器用于根据所述载入路选信号控制进入ACSU计算的数据源;当载入路选信号为K1时,让来自载入定向器的定向路径度量值进入ACSU进行计算;当载入路选信号为K2时让来自载入旁路器的路径度量值进入ACSU进行计算。
所述载入旁路器用于从所述交叉多体存储器中读取路径度量值,每次读出一个状态组的n个路径度量值;并将读出的路径度量值送到所述ACSU入口多路器;载入旁路器是根据所述控制器的控制读取第一个状态组的路径度量值;在没被控制器停止前,载入旁路器每当调度控制计数器中的计数为s-1时预取下一状态组的路径度量值。载入旁路器的排列根据本轮状态更新的初始状态分配表设计,以保证将每次从交叉多体存储器的不同存储体的相应地址中读出的路径度量值重新排列后分配到相应的ACSU入口,使得具有数据相关性的状态可以配对送入一个ACS运算单元。
所述载入定向器用于接收ACSU进行加比选后的当前状态组的路径度量值,当该状态组的路径度量值已经进行过最后一个时间级的加比选时,将该状态组的路径度量值存入所述交叉多体存储器;否则将该状态组的路径度量值通过所述蝶形处理单元入口多路器送至蝶形处理单元,如图5所示,所述载入定向器包括载入定向单元、存储定向单元和路径度量暂存器组;所述载入定向单元用于在所述载入定向使能信号有效时,将经过ACSU更新的路径度量值进行重新排列,并送入路径度量暂存器组锁存,继而送往ACSU入口多路器;所述载入定向单元的排列方案根据状态组的情况来设计,以保证将每次从ACSU出口出来的路径度量值重新排列后分配到相应的暂存器,使这些路径度量值可送入相应的ACSU入口,使得具有数据相关性的状态可以配对送入一个ACS运算单元。
所述存储定向单元用于在存储使能信号有效时,将经过ACSU更新的路径度量值进行重新排列后送入交叉多体存储器进行存储;所述存储定向单元的排列方案根据本轮状态更新的目标状态分配表设计,以保证将每次从ACSU出口出来的路径度量值重新排列后能按照所述目标状态分配表存储进相应存储体的相应地址。
所述路径度量暂存器组用于暂存经过ACSU更新并且载入定向单元重新排列后的路径度量值,这些路径度量值将送入ACSU入口多路器。)下面用一个应用实例来进一步加以说明。
本实例是在一个卷积码约束长度K=7的维特比译码器中,状态数为64,采用交叉多体存储器进行存储,该交叉多体存储器使用8个存储体,ACSU使用8个ACS运算单元,一次读出8个状态的路径度量值进行状态更新。
在开始状态更新前,为了在同一个时钟周期能同时读出多个状态的路径度量值,必须把需要同时参与计算的路径度量值分配到不同的存储体中。我们根据台湾云林科技大学硕士论文《腓特比解码器之路径计量记忆体连结复杂度之降低研究》中描述的方法将64个状态动态分配到8个存储体中,如表1所示,该表在进行第一轮状态更新时作为初始状态分配表。
表1状态分配表之一

其次,我们从ACS计算的角度来分析64个状态的路径度量值间的数据相关性。
参照表1,每次从8个存储体中各读出一个路径度量值送入ACSU单元进行ACS运算,例如,第一次读出状态(0,8,16,24,32,40,48,56)的路径度量值,第二次读出(1,9,17,25,33,41,49,57)的路径度量值,第三次读出(2,10,18,26,34,42,50,58)的路径度量值,依次类推。每次读出的路径度量值属于一个状态组,用状态组索引SI表示。另外,如果两个状态的路径度量值可以配对送入一个ACS运算单元进行加比选操作,称这两个路径度量值具有数据相关性。每个状态组能连续进行3次加比选,在本实例中,次数规定值就为3。
根据表1和状态组的划分可以提取出如下的存取公式Addr=存储体序号SI(1)根据每个状态组进行过3个时间级的更新后对应的状态可以推算出目标状态分配表如下表2状态分配表之二

载入旁路器收到译码器中控制单元发出的开始状态更新的信号后,按照初始状态分配表从交叉多体存储器中读取SI=0的状态组(0,8,16,24,32,40,48,56)的路径度量值。此时,调度控制计数器中为初始值为0,载入路选信号为K2。
如图6所示,载入旁路器把该状态组的8个路径度量值按照数据相关性重新排列后(0对应32,8对应40,16对应48,24对应56)送入ACSU入口多路器;ACSU入口多路器将该状态组送入ACSU进行加比选,得到的更新后的路径度量值分别对应于状态(0,16,32,48,1,17,33,49),调度控制计数器中值加1;此时载入路选信号为K1,载入定向使能信号有效,存储使能信号无效。
由于载入定向使能信号有效,因此更新后的状态组的路径度量值仍然可以继续配对执行加比选操作,不必立即写回路径度量存储器。如图6所示,0对应32,16对应48,1对应33,17对应49;载入定向单元将该状态组中的路径度量值按照数据相关性重新排列后锁存在路径度量暂存器组中,并通过ACSU入口多路器再送入ACSU。
ACSU继续对该状态组进行更新,得到的新路径度量值分别对应于状态(0,1,32,33,2,3,34,35);此时还可以两两配对0对应32,1对应33,2对应34,3对应35,继续执行加比选操作;在进行这次更新时,调度控制计数器中为2;此时仍是载入路选信号为K1,载入定向使能信号有效,存储使能信号无效。在这次更新的同个时钟周期里,载入旁路器预取SI=1的状态组(1,9,17,25,33,41,49,57)的路径度量值。
由于载入定向使能信号仍有效,该状态组的路径度量值被载入定向单元重新排列后又进入ACSU进行加比选操作,得到状态(0,1,2,3,4,5,6,7)的路径度量值。至此,现有8个状态的路径度量值中不能再配对执行加比选,初始取出的8个状态(0,8,16,24,32,40,48,56)的路径度量值的数据相关性被全部“消耗”。此时调度控制计数器的值为3,载入路选信号为K2,载入定向使能信号无效,存储使能信号有效。在这次更新的同个时钟周期里,载入旁路器完成对SI=1的状态组的读取。
状态(0,1,2,3,4,5,6,7)的路径度量值进入载入定向器中的路径度量暂存器组,由于此时存储使能信号有效,因此该组路径度量值由存储定向单元重新排列后,按照目标状态分配表存入交叉多体存储器中相应存储体的相应地址。
在存入SI=0的状态组的同一个时钟周期中,载入旁路器将SI=1的状态组(1,9,17,25,33,41,49,57)的路径度量值按数据相关性重新排列后送入ACSU入口多路器。调度控制计数器复位到初始值,重新开始计数。
其它的状态组的更新可以以此类推,这里不再赘述。
本实例中,在进行维特比译码时,每读取一组n=2m=8个状态的路径度量值可以连续执行m=3个时间级加比选操作,无需读取另外的路径度量值。
因此,我们每次从交叉存储体中读出一组状态的路径度量值连续执行3个时间级的加比选操作后再将最后更新的路径度量值写回存储体,并在此连续执行加比选操作期间预先读取下一组状态;当将一状态组最后更新的路径度量值写回存储体的同时,将下一状态组送入ACSU,按照同样的方法操作;在对所有8组状态的路径度量值都完成了3个时间级的状态更新并写回存储体之后,交叉存储器中的状态分配就如目标状态分配表所示。
如果将表2作为初始状态分配表,则可以提取出如下公式Addr=SI (2)注意公式(1)和(2)里的Addr和SI都是采用二进制表示的。
地址生成可交替使用公式(1)和(2);其中(1)式从按表1分配地址的存储器中读取数据,向按表2分配地址的存储器中存入数据;(2)式则是从按表2分配地址的存储器中读取数据,向按表1分配地址的存储器中存入数据。
在实际应用时,也可以根据所选择的状态分配表总结出相应公式。
下面以SI=000,读状态组(0,8,16,24,32,40,48,56)为例进行说明,先按照(1)式从按表1分配状态的存储器的8个存储体里读出状态(0,8,16,24,32,40,48,56),在进行3个时间级的ACS操作之后,ACSU单元的出口0~7所得的路径度量值分别对应于状态(0,1,2,3,4,5,6,7),此时这8个路径度量值须按照表2中其相应状态的位置存回相应存储体的相应地址。参照表2,状态(0,1,2,3,4,5,6,7)分别顺序对应存储体0~7,因此将这8个值分别送往8个存储体的数据入口,各存储体仍然根据(1)式存入相应地址。为了使ACSU不间断工作,在SI=000写入周期的前两个周期时,就需要开始预取SI=001的状态组(1,9,17,25,33,41,49,57),仍按照(1)式从按表1分配的存储器中读取相应值,从存储体0~7读出的相应值分别为(9,1,25,17,41,33,57,49),根据蝶形单元的固有特点,需要各路径值按照状态值排列成(1,9,17,25,33,41,49,57)再送入ACSU各入口(该排列的操作由载入旁路器完成)。在进行3个时间级的ACS操作之后,ACSU单元的出口0~7所得的路径度量值分别对应于状态(8,9,10,11,12,13,14,15),参照表2,此时各路径度量值应该排列成(9,8,11,10,13,12,15,14)再分别送往存储体0~7的数据入口(该排列的操作由载入定向器中的存储定向单元完成),各存储体仍然根据(1)式存入相应地址。
依此类推,当完成从SI=000至SI=111的所有状态的更新之后,交叉多体存储器中各路径度量值所对应的状态分布如表2所示。此时如果仍需进行状态更新,则表2为初始状态分配表,而表1为目标状态分配表;从SI=000开始,按照(2)式从8个存储体读出相应值,经由载入旁路器完成排列操作后送入ACSU各入口,进行连续3个时间级的ACS操作得到8个更新后的路径度量值,这些值再经由载入定向器中的存储定向单元排列后送往存储体0~7的数据入口,各存储体根据(2)式存入相应地址。此时,当完成从SI=000至SI=111的所有状态的更新后,交叉存储器中的各路径度量值对应的状态表就如表1所示,因此当进行3个时间级的ACS操作,完成SI=000至SI=111的所有状态更新只需要这两张表即可。
如此循环,交替根据表1、表2和(1)式、(2)式,以一个SI的三个时间级为小循环,SI从000到111为大循环,完成状态更新。
其它情况,比如当约束长度为9、每次连续进行4个时间级的加比选时,也同样可以按上述步骤进行路径度量调度。
本实例中载入定向使能信号为forward_enable,存储使能信号为save_enable。当调度控制计数器的值为为3时,数据相关性已“消耗”光,此时save_enable有效;值为0或1,即计数为1或2时,forward_enable有效。经过ACSU更新的路径度量值进入载入定向器后,如果forward_enable有效,则该组路径度量值经过载入定向单元进行重新排列送入路径度量暂存器组锁存,继而送往ACSU入口多路器。如果存储使能信号save_enable有效,则存储定向单元根据目标状态分配表将该组路径度量值进行重新排列,分配到相应的存储体,产生相应的地址,一并送入交叉多体存储器进行存储。
以约束长度为7的译码为例,载入定向单元的重新排列方案如图7。实际应用中,根据数据相关性来设计重新排列方案,使有数据相关性的路径度量值能够配对进入ACSU。
存储定向单元与载入定向单元类似,其功能是按照目标状态分配表把各个路径度量值分别送到相应的存储体数据入口。与载入定向单元不同的是,存储定向单元在不同的状态组索引SI的情况下其路径度量值排列是不同的,这是因为在进行了连续3个时间级的状态更新之后,从ACSU 8个出口出来的路径度量值所对应的状态是按从小到大的顺序排列的,而其所对应的存储体序号并不是这个顺序(如表1、表2)。图8和图9分别为SI=0和SI=1时依据表1、表2中各状态分布情况生成的存储定向单元的排列方案,其余情况类似。
在实际应用中,也可以这样根据目标状态分配表来为存储定向单元建立状态组索引与重新排列方案间的对应关系,从而使存储定向单元可以根据索引值去采用相应的重新排列方案。
载入旁路器的作用则是当ACSU处理第k组状态的倒数第二个更新周期时,预取第k+1组状态的路径度量值,在第k组状态处理完毕开始写入存储器时,将第k+1组状态的路径度量值送入ACSU发起新一组状态的更新,以保证ACSU不间断工作。这也是在考虑路径度量值数据相关性的基础上进行的,以状态组(0,8,16,24,32,40,48,56)为例,在其第3个更新周期得到的是状态(0,1,2,3,4,5,6,7)的新路径度量值;而下一个待处理的状态组(1,9,17,25,33,41,49,57)是3个更新周期前的旧路径度量值(在新状态存入前已取出),不存在数据冲突,因此可以执行载入旁路操作。载入旁路器按照目标状态分配表从交叉多体存储器中读出的路径度量值,然后根据它们的数据相关性进行重新排列后分配到相应ACSU入口,使有数据相关性的路径度量值能够配对进入ACSU;其重新排列方案相当于载入定向器中的存储定向单元与载入定向单元的方案相结合,如图10所示。
在实际应用中,也可以这样根据目标状态分配表来为载入旁路单元建立状态组索引与重新排列方案间的对应关系,从而使载入旁路单元可以根据索引值去采用相应的重新排列方案。
最后,需要指出的是,各路径度量值的相应区块地址分配方案在台湾云林科技大学硕士论文《腓特比解码器之路径计量记忆体连结复杂度之降低研究》(作者李明宗,2003年6月)中有详细论述。但是,由于采用了载入定向技术,本发明的区块地址分配方案更为简单。以约束长度K=7为例,根据上述论文提出的方案,每计算一个状态组在一个时间级上的状态更新后,都需要生成一组新的区块地址,且需要复杂的AGU单元产生地址修正量。其地址分配的周期为6(即K-1),即每6个时间级重复一次。在本发明中,由于每连续计算3个时间级的状态更新才需要存取路径度量RAM,因此相应的地址产生逻辑更简单易实现,只需交替使用上文中的两个状态分配表进行地址分配即可。
对于卷积码约束长度为7的维特比译码器,还可以根据具体需要选择ACS单元的个数为2或4,但当ACS计算单元的个数为16时,则状态分配表无解。具体卷积码约束长度与ACS计算单元的个数的对应关系如下表所示(李明宗的上述论文第55页中的表),N为状态数,P为ACS运算单元的个数(或路径度量值存储体的个数),○表示有解,×表示无解。只要是有解的情况,本专利申请所述的针对约束长度为7的方法对于约束长度为任意值的维特比译码器都适用。
表3、卷积码约束长度与ACS计算单元个数的对应关系表

综上所述,本发明提供了一种基于交叉多体存储与载入旁路定向的路径度量调度方法及装置,在X MHz的时钟频率下,可以达到X*n/2k-1bit/s的译码速率,其中n为所使用的ACS运算单元个数,K为卷积码的约束长度。如图11为路径度量值经载入旁路及载入定向后的时序调度图;其中调度控制计数器用来计数控制每个SI的加比选操作时间级数。由图11可见,采用基于载入旁路和定向逻辑后,路径度量的存取将不再成为维特比译码的瓶颈;数据存取与计算并行从而保证了ACS单元的处理高效率。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
权利要求
1.一种基于交叉多体存储的路径度量调度方法,其特征在于,包括A、根据约束长度k确定使用n个加比选计算单元;将状态分为2K-1/n个状态组,各状态组包括n个状态;确定对每个状态组连续进行s个时间级的加比选;确定初始状态分配表及目标状态分配表;并根据初始状态分配表将状态分配到交叉多体存储器的存储体中;B、从交叉多体存储器中读取第一个状态组的n个状态的路径度量值送入蝶形处理单元;C、判断将对所述状态组进行第几个时间级的加比选;如果将进行最后第s个时间级的加比选,则执行E;否则执行D;D、蝶形处理单元对所述状态组进行更新;并将更新后的路径度量值再送入蝶形处理单元,并返回步骤C;E、蝶形处理单元对所述状态组进行更新,并将更新后的路径度量值根据目标状态分配表存入交叉多体存储器;如果还有后继的状态组需要进行更新,则将后继的状态组的n个路径度量值送入蝶形处理单元并返回步骤C;否则结束。
2.如权利要求1所述的方法,其特征在于,所述步骤D具体包括D1、如果将进行的是第s-1时间级的加比选,并且还有后继的状态组需要进行更新,则进行D2,否则进行D3;D2、在对当前的状态组进行更新,同时预先读取后继状态组的n个路径度量值;D3、对当前的状态组进行更新;所述步骤E具体包括E1、对当前的状态组进行更新;如果还要继续对后继状态组进行更新则进行步骤E2;否则进行E3;E2、将更新后的路径度量值存入交叉多体存储器,同时将步骤D2中预先读取的n个路径度量值送入蝶形处理单元并返回步骤C;E3、将更新后的路径度量值存入交叉多体存储器;更新结束。
3.如权利要求2所述的方法,其特征在于,步骤D2及E2中所述的同时是指在一个时钟周期中。
4.一种基于交叉多体存储的路径度量调度装置,包括交叉多体存储器,用于存储路径度量值,其特征在于,该装置还包括载入旁路器、载入定向器和蝶形处理单元入口多路器;所述载入定向器用于接收蝶形处理单元更新后的当前状态组的路径度量值,当该状态组的路径度量值已经进行过最后一个时间级的加比选时,将该状态组的路径度量值存入所述交叉多体存储器;否则将该状态组的路径度量值送入蝶形处理单元入口多路器;所述载入旁路器用于按照状态分配表从所述交叉多体存储器中读取路径度量值,每次读出一个状态组的路径度量值,并送入蝶形处理单元入口多路器;所述蝶形处理单元入口多路器用于在当前状态组的路径度量值已经进行过最后一个时间级的加比选,或从未进行过加比选操作时,将来自于载入旁路器的路径度量值送入蝶形处理单元;在其它时候将来自于载入定向器的路径度量值送入蝶形处理单元。
5.如权利要求4所述的装置,其特征在于所述载入旁路器在状态更新开始时读取第一个状态组的路径度量值;其后在每次对当前状态组的路径度量值进行倒数第二个时间级的加比选的同时,预取下一个状态组的路径度量值。
6.如权利要求4所述的装置,其特征在于,还包括调度控制计数器和控制器;所述调度控制计数器用于根据控制器的控制分别对每个状态组进行加比选的时间级分别进行计数;所述控制器在开始状态更新时启动所述载入旁路器,并在要结束状态更新时停止所述载入旁路器;所述控制器根据调度控制计数器的计数配置三个信号载入路选信号、载入定向使能信号和存储定向信号;其中,载入定向使能信号和存储使能信号互为反信号;所述控制器中存储有次数规定值,该次数规定值为每个状态组要连续进行加比选的时间级数;当调度控制计数器中的计数小于这个次数规定值并且不为初始值时,载入定向使能信号有效,载入路选信号为K1;当调度控制计数器中的计数等于这个次数规定值时,存储使能信号有效,载入路选信号为K2;当调度控制计数器中为初始值时,载入路选信号为K2;所述蝶形处理单元入口多路器当载入路选信号为K1时,将来自载入定向器的定向路径度量值送入蝶形处理单元进行计算;当载入路选信号为K2时将来自载入旁路器的路径度量值送入蝶形处理单元进行计算。
7.如权利要求6所述的装置,其特征在于,所述载入定向器包括载入定向单元、存储定向单元;所述载入定向单元用于在所述载入定向使能信号有效时,将经过蝶形处理单元更新的路径度量值进行重新排列,送入蝶形处理单元入口多路器;所述存储定向单元用于在存储使能信号有效时,将经过蝶形处理单元更新的路径度量值按照目标状态分配表进行重新排列后送入交叉多体存储器进行存储。
8.如权利要求7所述的装置,其特征在于,所述载入定向器还包括所述路径度量暂存器组,用于暂存蝶形处理单元更新后、并经载入定向单元重新排列后准备送入蝶形处理单元入口多路器的路径度量值。
9.如权利要求7所述的装置,其特征在于所述载入定向单元将路径度量值重新排列,使具有数据相关性的状态配对送入一个加比选运算单元。
10.如权利要求4所述的装置,其特征在于,所述载入旁路单元根据初始状态分配表从交叉多体存储器中读取路径度量值,并将读取的路径度量值重新排列后送入蝶形处理单元入口多路器,使具有数据相关性的状态配对送入一个加比选运算单元。
全文摘要
一种基于交叉多体存储的路径度量调度方法及装置,方法包括读取第一个状态组送入蝶形处理单元;如果将进行最后第s个时间级的加比选,则对所述状态组更新并存入交叉多体存储器;否则对所述状态组进行更新并将更新后的路径度量值再送入蝶形处理单元,并继续判断将进行第几个时间级的加比选。装置包括交叉多体存储器、载入旁路器、载入定向器和蝶形处理单元入口多路器。本发明中一次读取的一组路径度量值可以连续进行多次加比选操作,最大限度的利用了路径度量值的存取开销;从而消除了制约整个译码器译码速率的瓶颈,达到一个时钟周期向n个ACS运算单元提供其所需的n个路径度量值的目标。
文档编号H03M13/41GK101034896SQ20071006399
公开日2007年9月12日 申请日期2007年2月15日 优先权日2007年2月15日
发明者程标, 牛锋 申请人:大唐微电子技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1