CN1554152A - 数字信号处理器中的高性能turbo和iterbi信道解码 - Google Patents
数字信号处理器中的高性能turbo和iterbi信道解码 Download PDFInfo
- Publication number
- CN1554152A CN1554152A CNA028175212A CN02817521A CN1554152A CN 1554152 A CN1554152 A CN 1554152A CN A028175212 A CNA028175212 A CN A028175212A CN 02817521 A CN02817521 A CN 02817521A CN 1554152 A CN1554152 A CN 1554152A
- Authority
- CN
- China
- Prior art keywords
- module
- trellis
- time
- numerical value
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000004364 calculation method Methods 0.000 claims abstract description 6
- 230000006870 function Effects 0.000 claims description 32
- 230000009466 transformation Effects 0.000 claims description 24
- 238000000034 method Methods 0.000 claims description 21
- 238000005259 measurement Methods 0.000 claims description 19
- 230000001052 transient effect Effects 0.000 claims description 6
- 230000004044 response Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 13
- 238000012545 processing Methods 0.000 description 10
- 238000012546 transfer Methods 0.000 description 7
- 238000012937 correction Methods 0.000 description 6
- 241000255777 Lepidoptera Species 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 241001604129 Polydactylus Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/39—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
- H03M13/3905—Maximum a posteriori probability [MAP] decoding or approximations thereof based on trellis or lattice decoding, e.g. forward-backward algorithm, log-MAP decoding, max-log-MAP decoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
- G06F9/3895—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/39—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
- H03M13/3905—Maximum a posteriori probability [MAP] decoding or approximations thereof based on trellis or lattice decoding, e.g. forward-backward algorithm, log-MAP decoding, max-log-MAP decoding
- H03M13/3911—Correction factor, e.g. approximations of the exp(1+x) function
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/39—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
- H03M13/41—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
- H03M13/4107—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors implementing add, compare, select [ACS] operations
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6508—Flexibility, adaptability, parametrability and configurability of the implementation
- H03M13/6511—Support of multiple decoding rules, e.g. combined MAP and Viterbi decoding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6569—Implementation on processors, e.g. DSPs, or software implementations
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Error Detection And Correction (AREA)
Abstract
数字信号处理器(110)在无线系统中完成Turbo和Virterbi信道解码。数字信号处理器(110)的计算模块(112,114)备有用来执行与格子结构计算相关联的指令的加速器。ACS指令完成α和β度量标准的格子结构计算。作为对单一指令的响应,能够完成多样的蝶式计算。TMAX指令用来计算格子结构的对数拟然比。
Description
本发明的技术领域
这项发明涉及适合于无线移动应用和基站应用的数字信号处理器,更具体地说,涉及在无线基站中供Turbo和Viterbi信道解码使用的数字信号处理器。
本发明的现有技术
第二和第三代无线系统使用信道编码和解码算法和展宽频谱技术来提高传输可靠性。在第三代无线系统中,卷积编码方案是为声音传输指定的,而并行链接的卷积编码(PCCC)方案是为数据传输指定的。卷积编码的数据是使用Viterbi解码算法解码的,而PCCC编码的数据是使用Turbo解码算法解码的。Turbo和Viterbi解码方案是基于格子结构的算法。
Viterbi和Turbo解码器算法是极端集中计算的。无线基站中的向前纠错(或信道解码)模块在软件无线电通信中能够接近80%的符号率数据处理。被提议的在被分配的时间限制范围内执行这些算法的途径已包括在数字信号处理器中使用ASIC和使用有最基本的组成部分的硬件模块。
数字信号处理器(而不是ASIC)因其软件的可编程性变成令人想要的解决方案。然而,当前没有可用的数字信号处理器能担负软件无线电通信的完全的码片和符号率数据处理要求。所以,系统设计者正在研究使用数字信号处理器和ASIC或单独使用ASIC担负符号率数据处理的解决方案。在最小值,ASIC将执行正向纠错。
有双重计算单元、宽存储器总线和担负平行的多重任务的能力的数字信号处理器是在1999年4月20日授权给Garde的美国专利第5,896,543号中揭示的。所揭示的数字信号处理器提供极高的性能,但是当前的配置不能在被分配的时间限制范围内有效地执行无线基站的正向纠错。
因此,存在改进无线系统中使用的Turbo和Viterbi信道解码算法的实施的需要。
本发明的概述
依照本发明的第一方面,提供用来在数字信号处理器中计算格子结构函数的度量标准的方法。格子结构函数的度量标准是针对选定的格子结构状态根据格子结构指令规定的适合于时间t0的格子结构状态度量标准和从时间t0到时间t1的转变度量标准计算的。对每个选定的格子结构状态的计算包括把转变度量标准加到适合于时间t0的第一状态度量标准上以提供第一数值,从适合于时间t0的第二状态度量标准减去转变度量标准以提供第二数值,比较对应的第一和第二的数值,以及选择对应的第一和第二数值的最大值以提供适合于时间t1的格子结构状态度量标准。
该方法可能进一步包括如下步骤:针对每个选定的格子结构状态,把作为对应的第一和第二数值的函数的修正因子加到最大数值上。加修正因子的步骤可能包括访问包含修正因子的查询表。
在一个实施方案中,格子结构指令实现用来计算α格子结构状态度量标准的正向格子结构函数。在另一个实施方案中,格子结构指令实现用来计算β格子结构状态度量标准的反向格子结构函数。在又一个实施方案中,格子结构指令使用单一指令多种数据近似同时实现用来计算α格子结构状态度量标准的正向格子结构函数和用来计算β格子结构状态度量标准的反向格子结构函数。
依照本发明的另一方面,提供用来在数字信号处理器中计算格子结构函数的度量标准的方法。α度量标准是根据格子结构状态指令规定的适合于时间t0的α度量标准和从时间t0到时间t1的转变度量标准针对为时间t1选定的格子结构状态计算出来的。β度量标准是根据格子结构状态指令规定的适合于时间t2的β度量标准和从时间t2到t1的转变度量标准针对为时间t1选定的格子结构状态计算出来的。
针对选定的格子结构状态计算α度量标准的步骤可能包括如下步骤:针对每个选定的格子结构状态,把转变度量标准加到适合于时间t0的第一α度量标准上以提供第一数值和从适合于时间t0的第二α度量标准减去转变度量标准以提供第二数值;针对每个选定的格子结构状态,比较对应的第一和第二数值;以及为每个选定的格子结构状态选择对应的第一和第二数值的最大值以提供适合于时间t1的α度量标准。
针对选定的格子结构状态计算β度量标准的步骤可能包括如下步骤:针对每个选定的格子结构状态,把转变度量标准加到适合于时间t2的第一β度量标准上以提供第一数值和从适合于时间t2的第二β度量标准减去转变度量标准以提供第二数值;针对每个选定的格子结构状态,比较对应的第一和第二数值;以及为每个选定的格子结构状态选择对应的第一和第二数值的最大值以提供适合于时间t1的β度量标准。
计算α度量标准和计算β度量标准的步骤每个都可能进一步包括如下步骤:针对每个选定的格子结构状态,把作为对应的第一和第二数值的函数的修正因子加到最大数值上。计算a度量标准和计算β度量标准的步骤可能是同时完成的。
依照本发明的第三方面,提供用来在数字信号处理器中计算对数MAP函数的方法。对数MAP指令规定第一、第二、第三和第四参数的位置。第一和第二参数的和数或差值被计算出来以提供第一数值,而且第三和第四参数的和数或差值被计算出来以提供第二数值。
第一和第二数值的最大值被选定。然后,作为第一和第二数值的函数的修正因子被加到最大数值上以提供对数MAP结果。加修正因子的步骤可能包括访问包含修正因子的查询表。
数字信号处理器可能包括用来储存用于数字信号计算的指令和操作数的存储器;用来产生用来从存储器中取出一些选定的指令的指令地址的程序定序器;以及包括用于操作数和结果的暂时存储的寄存器堆和用来或分开地或在任何组合中完成上述操作的加速器的计算模块。在优选的实施方案中,数字信号处理器包括两个以上用来平行地完成多种操作的计算模块。
依照本发明的第四方面,提供在数字信号处理器的计算模块中使用的加速器。加速器包括用来接收给加速器的输入的第一进位存储加法器;用来将和数与第一进位存储加法器的进位输出合并的第一全加器;用来根据第一全加器的输出产生修正因子的查询表;用来根据第一全加器的输出的符号选择一个或多个给加速器的输入的多路复用器;用来把多路复用器的一个或多个输出与查询表的输出相加的第二进位存储加法器;以及用来将和数与第二进位存储加法器的进位输出合并的第二全加器。
第一进位存储加法器和第一全加器可能包括第一流水线级;查询表、多路复用器和第二进位存储加法器可能包括第二流水线级;而第二全加器可能包括第三流水线级。在优选的实施方案中,加速器进一步包括用来把和数与第二进位和数加法器的进位输出供应给第一进位和数加法器的输入的数据选择器。
附图简要说明
为了更好地理解本发明,参考在此处通过引证被并入的附图:
图1是无线基站信号链的方框图;
图2是Turbo译码器算法的方框图;
图3是八种格子结构状态的示意图;
图4举例说明用来计算格子结构的α度量标准的等式;
图5举例说明用来计算格子结构的β度量标准的等式;
图6举例说明用来计算格子结构的对数拟然比的等式;
图7是适合依照本发明的一个方面实现信道译码器的数字信号处理器的方框图;
图8是在图7的数字信号处理器中展示的每个计算模块的实施方案的方框图;
图9是举例说明可能根据格子结构指令完成的各项操作的第一实施方案的数据流程图;
图10是举例说明可能根据格子结构指令完成的各项操作的第二实施方案的数据流程图;
图11举例说明用来依照本发明的一个方面完成Turbo信道编码解码的软件程序;
图12是举例说明在第一数字信号处理器周期中用于格子结构状态S0-S3的α度量标准和β度量标准的计算的示意方框图;
图13是举例说明在第二数字信号处理器周期中用于格子结构状态S4-S7的α度量标准和β度量标准的计算的示意方框图;
图14是举例说明根据第一对数MAP指令完成的各项操作的数据流程图;
图15是举例说明根据第二对数MAP指令完成的各项操作的数据流程图;
图16举例说明用来使用对数MAP指令计算格子结构的对数拟然比的软件程序;
图17是举例说明在图16的软件程序中供执行第一指令行使用的硬件组成部分的示意方框图;
图18是举例说明图8的加速器的实施方案的方框图。
本发明的详细描述
无线基站信号链的一个示范方框图被展示在图1中。该信号链包括符号率处理10和码片率处理12。把符号率处理10并入数字信号处理器是符合需要的。在发射一例,符号率处理10包括CRC附件模块20、信道编码模块22、比率匹配模块24和插入模块26。在接收一侧,符号率处理10包括解插入模块(de-interleaving block)30、比率确定模块32、信道解码模块34和CRC附件模块36。如同前面注意到的那样,正向纠错(FEC)或信道解码能接近符号率处理的80%。
本发明的各个方面都指向数字信号处理器中的信道解码模块34的实现。信道编码模块22可能利用适合于声音或低数据率传输的卷积编码和适合于高数据率传输的PCCC方案。信道解码模块34可能利用适合于声音的Viterbi解码算法和适合于数据的Turbo解码算法。
Turbo译码器的实例的简化方框图被展示在图2中。该Turbo译码器包括MAP(maximum a posteriori)译码器40和42,数字复用器44和数字分离器46。例如,Turbo编码是M.Valenti在“Turbo编码入门(An Introduction to Turbo Codes)”(维吉尼亚工业学院电子工程系)中和W.Ryan在“Turbo编码指南(A Turbo CodeTutorial)”(新墨西哥州大学)中描述的。单一的MAP译码器可能用来实现Viterbi译码器。Viterbi算法是H.Lou在“实现Viterbi算法(Implementing Viterbi Algorithm)”(IEEE信号处理杂志,1995年9月,第42-52页)中描述的。
Turbo和Viterbi信道解码算法是在受到的数据块上完成的基于格子结构的算法。通常在无线系统中使用的八种格子结构状态的例子被展示在图3中。格子结构包括与众多时间点t=0、t=1、...、t=N中的每个点相关联的状态S0、S1、S2、...、S7。与每个格子结构状态相关联的是在计算中与从起始点开始处在这个状态的概率有关的阿尔发(α)度量标准。另外,与每个格子结构状态相关联的是与从这个状态开始以正确状态结束的概率有关的貝它(β)度量标准。因此,八种α度量标准和八种β度量标准与格子结构中的每个时间点相关联。格子结构还以与从在第一时间点的一种状态变化到下一个时间点的另一种状态的概率有关的伽马(γ)转变度量标准为特色。因此,例如,在图3的格子结构中,阿尔发度量标准α0和α1分别与在时间t=0的状态S0和S1相关联,而阿尔发度量标准α0′和α1′分别与在时间t=1的状态S0和S1相关联。转变度量标准γ与从在时间t=0的状态S0到在时间t=1的状态S0的转变相关联,而转变度量标准-γ与从在时间t=0的状态S0到在时间t=1的状态S1的转变相关联。一般地说,阿尔发度量标准α0、α1、...、α7分别与格子结构状态S0、S1、...、S7相关联。同样,貝它度量标准β0、β1、...、β7分别与格子结构状态S0、S1、...、S7相关联。此外,转变度量标准γ0与来自状态S0、S1、S2和S3的转变相关联,而转变度量标准γ1与来自状态S4、S5、S6和S7的转变相关联。
用来针对每个格子结构状态计算α度量标准的等式展示在图4中,其中k表示格子结构状态,而s表示时间点。在图4的等式中最后一项是作为α度量标准的函数的修正因子。用来针对每个格子结构状态计算β度量标准的等式被展示在图5中。在图5的等式中最后一项是作为β度量标准的函数的修正因子。
现在描述图4的等式应用于图3的格子结构。在时间t=1分别用于状态S0和S1的阿尔发度量标准α0′和α1′可以进行如下计算:
α0′=MAX[α0+Y0,α4-Y0]+C0′ (1)
α1’=MAX[α0-Y0,α4+Y0]+C1′ (2)
其中C0′和C1′是取决于图4所示的α0和α4的数值的修正因子。
因此,用于每个状态α度量标准是通过计算先前状态的α度量标准和从先前状态转变到当前状态的转变度量标准的代数和针对可能从它们转变到当前状态的两种先前状态中的每种状态计算的,以便提供两个数值。然后,选择这两个数值的最大值。修正因子被加到被选定的最大数值上。如同下面描述的那样,修正因子可以从查询表获得。α度量标准可以是以类似的方式针对格子结构中的每个状态计算的。同样,图5的等式可以以类似的方式应用于针对格子结构中的每个状态计算β度量标准。两种状态的度量标准的计算(每个都以两种先前状态的度量标准为基础)通常被称为“蝶式”计算。
与信道解码有关的对数拟然比也被计算出来。对数拟然比是状态1的有效性与状态0的可能性之比的对数。用来计算对数拟然比的等式被展示在图6中。对数拟然比的计算将在下面进行详细的讨论。
适合实现本发明特征的数字信号处理器(DSP)110的示例方框图被展示在图7中。DSP110的主要组成部分是计算模块112和114、存储器116、控制模块124、链路口缓冲器126、外部口128、DRAM控制器130、指令调整缓冲器(IAB)132和主要指令译码器134。计算模块112和114、指令调整缓冲器132、主要指令译码器134和控制模块124构成完成DSP110的主要的计算和数据处理功能的核心处理器。外部口128控制经由外部地址总线158和外部数据总线168的外部通信。链路口缓冲器126控制经由通信口136的外部通信。数字信号处理器优选被配置成单一的单片式集成电路。
存储器116可能包括三个独立的大容量内存条140、142和144。在优选实施方案中,每个内存条140、142和144都有64K32位字的容量。如同下面讨论的那样,每个内存条140、142和144优选有一条128位的数据总线。高达四个连续排列的32位数据字每个都能在单一的时钟周期中被在转移到每个内存条或从每个内存条中转移出来。
DSP110的诸要素借助用于有效的高速操作的总线互连。每一条总线包括用于二进制信息的并行转移的多条线路。第一地址总线150(MA0)将内存条140(MO)和控制模块124互连。第二地址总线152(MA1)将内存条142(M1)和控制模块124互连。第三地址总线154(MA2)将内存条144(M2)和控制模块124互连。每条地址总线150、152和154优选有16位宽。一条外部的地址总线156(MAE)将外部口128和控制模块124互连。外部地址总线156通过外部口128被互连到外部地址总线158上。每条外部地址总线156和158优选有32位宽。第一数据总线160(MDO)将内存条140、计算模块112和114、控制模块124、链路口缓冲器126、IAB132和外部口128互连。第二数据总线162(MD1)将内存条142、计算模块112和114、控制模块124、链路口缓冲器126、IAB132和外部口128互连。第三数据总线164(MD2)将内存条144、计算模块112和114、控制模块124、链路口缓冲器126、IAB132和外部口128互连。数据总线160、162和164通过外部口128到被连接外部数据总线168上。每条数据总线160、162和164优选有128位宽,而外部数据总线168优选有64位宽。
第一地址总线150和第一数据总线160包括用于将数据转移到内存条140和从内存条140转移出来的总线。第二地址总线152和第二数据总线162包括用于将数据转移到内存条142和从内存条142转移出来的第二总线。第三地址总线154和第三数据总线164包括用于将数据转移到内存条144和从内存条144转移出来的第三总线。因为每个内存条140、142和144都有一条独立的总线,所以内存条140、142和144可以被同时存取。在本文中使用的“数据”指的是二进制的字,它可能表示DSP110的操作相关联的指令或操作数。
在典型的操作模式中,程序指令被储存在一个内存条中,而操作数被储存在另外两个内存条中。因此,至少一条指令和两个操作数能在单一的时钟周期中提供给计算模块112和114。每个内存条140、142和144都可能是为了允许在单一的时钟周期中读写多个数据字而配置的。来自每个内存条的多个数据字在单一的时钟周期中的同时转移是在不需要指令高速缓冲存储器或数据高速缓冲存储器的情况下完成的。
如同前面指出的那样,每个内存条140、142和144优选每个有64K32位字的容量。每个内存条都可能被接到一条128位宽的数据总线上。在替代实施方案中,每条数据总线都可能是64位宽的,而且64位是在每个时钟相位1和时钟相位2上转移的,因此提供128位的有效总线宽度。多样的数据字能被访问在单一时钟周期中的每个内存条中。明确地说,数据能作为单一的、两个一组或四个一组的字(每个字32位)被存取。
采用四个一组的字转移,能在单一的时钟周期中把四条指令和八个操作数(每个32位)供应给计算模块112和114。被转移的数据字和接收被转移的数据字的计算模块或模块的数目是用指令中控制位选定的。单一的、两个一组的或四个一组的数据字能被转移到计算模块112、计算模块114、或两者。两个一组的和四个一组的数据字存取在许多应用中通过允许若干操作数在单一的时钟周期中转移到计算模块112和114提高了DSP110的性能。在每个时钟周期中存取多条指令的能力允许在每个时钟周期中执行多重操作,借此提高性能。
每个计算模块112和114的实施方案的方框图被展示在图8中。多口寄存器堆200为操作数和结果提供临时储存。在优选的实施方案中,寄存器堆200让32位的32个字的容量每个,组织如128位的八排每个。寄存器堆200经过对每一条数据总线160,162的多路复用器和门闩(不展示)被连接和164(图7)。当操作数从存储器116被接来的时间,三辆数据总线中的二辆被选择,而且被选定的总线上的操作数提供给寄存器堆200。
图8展示的计算模块包括乘法器/累加器210、算术逻辑部件(ALU)212、移相器214和加速器216。乘法器/累加器220、ALU212、移相器214和加速器216能够同时执行指令到能将充足的指令和操作数供应给计算模块的程度。操作数是在操作数总线220上从寄存器堆200供应给乘法器/累加器210、ALU210、移相器214和加速器216的。来自乘法器/累加器210、ALU212、移相器214和加速器216的结果在结果总线222上返回到寄存器堆200。计算模块的各个组成部分作为对译码指令的响应受来自次级指令译码器224的信号控制。计算模块优选具有适合改善性能的流水线型体系结构。
DSP中的每个计算模块112和114包括用来提高无线基站性能的加速器216。加速器包括用来暂时储存数据和控制值的寄存器和用来执行规定的指令的加速器电路系统。加速器216的结构和操作在下面将予以详细的描述。
人们将理解:DSP110仅仅是作为例子描述的。本发明特征可能在不同的数字信号处理器结构中实现。
每个加速器根据ACS(或格子结构)指令完成的操作的数据流程图被展示在图9中。在寄存器对TRmd中的诸如α度量标准或β度量标准之类高数据字被供应给减法单元250和加法单元252。在寄存器对TRmd中的低数据字被供应给减法单元254和加法单元256。在寄存器对TRnd中的高数据字被供应给加法单元258和减法单元260。在寄存器对TRnd中的低数据字被供应给加法单元262和减法单元264。在寄存器Rm中可能作为伽马转变度量标准的高数据字被供应给减法单元250、加法单元252、加法单元258和减法单元260。寄存器Rm中的低数据字被供应给减法单元254、加法单元256、加法单元262和减法单元264。减法单元250和加法单元258的输出被供应给MAX/TMAX单元270。加法单元252和减法单元260的输出被供应给MAX/TMAX单元272。减法单元254和加法单元262的输出被供应给MAX/TMAX单元274。加法单元256和减法单元264的输出被供应给MAX/TMAX单元276。MAX/TMAX单元270、272、274和276的输出被储存在四个一组的寄存器TRsq中。
MAX/TMAX单元270,272,274和276每个都完成可能在格子结构指令中规定的两种功能之一。在MAX功能中,两个输入的最大值被选定并且被储存在四个一组的寄存器TRsq中。在TMAX功能中,两个输入的最大值被选定,而且修正值被加到被选定的最大数值上。和数被储存在四个一组的寄存器TRsq中。修正因子是给MAX/TMAX单元的两个输入的函数。如同下面描述那样,修正因子能够依据查询表确定。MAX/TMAX单元270、272、274和276每个都把一个输出位提供给位选择寄存器对THRs。每个输出位都指出被选作最大数值的输入。
在图9的实施方案中,在寄存器对TRmd和TRnd中的数据数值(例如,α度量标准或β度量标准)都是32位的数值,而在寄存器Rm中的数据数值(例如,转变度量标准)是16位的数值。储存在四个一组的寄存器TRsq中的输出值是32位的数值。在图9的实施方案中,每个加速器根据单一的格子结构指令完成格子结构的两种32位的蝶式计算。
在格子结构指令的另一个实施方案中,如图10所示,每个加速器根据单一的格子结构指令完成运行四种16位的蝶式计算。在图10中,寄存器对TRmd和寄存器对TRnd每个都包含四个16位的数据数值,例如α度量标准或β度量标准,而寄存器Rm包含四个8位的数据数值,例如转变度量标准。数据数值被供应给八个减法单元(290等)和八个加法单元(292等),而减法单元和加法单元的输出被供应给八个MAX单元(294等)。例如,减法单元290接收来自寄存器对TRmd的数据字S3和来自寄存器Rm的数据字B3。加法单元292接收来自寄存器对TRnd的数据字S3和来自寄存器Rm的数据字B3。减法单元290和加法单元292的输出被供应给MAX单元294。MAX单元294选择两个输入中的最大值并且将被选定的最大数值储存在四个一组的寄存器TRsq中。TMAX选项不被包括在图10的实施方案中。MAX单元还把输出位供应给寄存器对THRs,以便指出哪个输入被选定。图10中其余的单元以同样的方式操作以便根据单一的格子结构指令提供格子结构的四种16位的蝶式计算。
用来计算格子结构函数的α度量标准和β度量标准的软件程序的例子被展示在图11中。该程序是用前面描述过用来完成图9所示的操作的ACS指令实现的。在图11中,每条ACS指令都规定用于图9所示的两种格子结构蝶式计算的计算。为了提供全部四种蝶式计算,ACS指令是在计算模块112和114(图7)中执行的。指令在图11中被成对地编组,第一指令针对格子结构在给定的时间点的最初四种状态计算α度量标准和β度量标准而第二指令针对格子结构在给定的时间点的最后四种状态计算α度量标准和β度量标准。因此,用于Turbo信道译码器的计算是在格子结构中使用每个时间点两个指令完成的。图11中的软件程序举例说明在格子结构中包含用来为四个时间点计算度量标准的操作的循环。
在图11的每条指令行中的操作用数字信号处理器同时完成。在其它的实现中,第一指令可能针对格子结构在给定的时间点的八种状态计算α度量标准,而第二指令可能针对格子结构在给定的时间点的八种状态计算β度量标准。
在图11的第一指令行中,TR11:8对应于图9中的四个一组的寄存器TRsq。另外,在第一指令行中,TR5:4和TR1:0分别对应于寄存器对TRmd和寄存器对TRnd。寄存器sR24对应于图9中的寄存器Rm。人们将理解:指令可能在两个计算单元中用不同的数据数值运行以便根据单一的ACS(或格子结构)指令完成四种蝶式计算。图11的第一指令行进一步规定寄存器TR7:4中的数据数值被移到寄存器堆200(图8)中的寄存器R7:4。此外,第一指令行规定对计算单元112中的寄存器xR3:0和计算单元114中的寄存器YR3:0的存储器加载操作。
在图11的软件程序中最初两个指令行的执行是参照图12和图13描述的。图12举例说明在DSP110的第一周期中针对格子结构状态S0-S3的α度量标准和β度量标准的计算,而图13举例说明在DSP110的第二周期中针对格子结构状态S4-S7的α度量标准和β度量标准的计算。如图12所示,计算模块112中的加速器电路300接收来自寄存器对TR5:4、寄存器对TR1:0和寄存器sR24的数据数值并且把输出数据数值提供给四个一组的寄存器TR11:8。类似地,计算模块114中的加速器电路302接收来自寄存器对TR5:4、寄存器对TR1:0和寄存器sR24的数据数值并且把输出数据数值提供给四个一组的寄存器TR11:8。在图12中展示的寄存器对应于用图11的第一指令行中的ACS指令规定的寄存器。在优选实施方案中,TR寄存器位于每个加速器216(图8)之中,而R寄存器位于每个寄存器堆200之中。图12中的寄存器对TR5:4对应于图9中的寄存器对TRmd,而寄存器对TR1:0对应于寄存器对TRnd。类似地,图12中的寄存器sR24对应于图9中的寄存器Rmin,四个一组的寄存器TR11:8对应于图9中的四个一组的寄存器TRsq。图1 2举例说明SIMD在单一指令被两个以上执行单元(例如,加速器线路300和302)用不同的数据执行的场合的操作。
如图12所示,图11的第一指令行计算用于格子结构状态S0-S3的α度量标准和β度量标准。具体地说,加速器电路300基于装在寄存器对TR5:4中的α5和α4的数值、装在寄存器对TR1:0中的α1和α0的数值和装在寄存器sR24中的γ1和γ0的数值计算α度量标准α0′、α1′、α2′和α3′。类似地,加速器电路302基于装在寄存器对TR5:4中的β5和β4的数值、装在寄存器对TR1:0中的β1和β0的数值和装在寄存器sR24中的γ1和γ0的数值计算β度量标准β0′、β1′、β2′和β3′。
现在参照图13,在第二DSP周期中针对格子结构状态S4-S8的α度量标准和β度量标准的计算被展示出来。图13的操作对应于图11中的第二指令行。加速器电路300基于装在寄存器对TR7:6中的α7和α6的数值、装在寄存器对TR3:2中的α3和α2的数值和装在寄存器sR25中的γ1和γ0的数值计算α度量标准α4′、α5′、α6′和α7′。类似地,加速器电路302基于装在寄存器对TR7:6中的β7和β6的数值、装在寄存器对TR3:2中的β3和β2的数值和装在寄存器sR25中的γ1和γ0的数值计算β度量标准β4′、β5′、β6′和β7′。
加速器电路300和302完成图12所示的第一DSP周期中的四种蝶式计算和图13所示的第二DSP周期中的四种蝶式计算,借此在数字信号处理器的两个周期中针对八种格子结构状态计算完整的α度量标准和β度量标准。因此,图11的软件程序针对格子结构的四个时间点计算α度量标准和β度量标准。在图11-13的实施方案中,在计算模块112中加速器的寄存器TR0:7装有格子结构状态S0-S7在第一时间点的α度量标准,而加速器记录TR8:15装有格子结构状态S0-S7在第二时间点的α度量标准。类似地,在计算模块114中加速器的寄存器TR0:7装有格子结构状态S0-S7在第一时间点的β度量标准,而且加速器的寄存器TR7:15装有格子结构状态S0-S7在第二时间点的β度量标准。
举例说明根据第一类型的对数MAP指令完成的操作的数据流程图被展示在图14中。数据数值保存在寄存器对TRmd和TRnd和四个一组的寄存器Rmq中。在图14的例子中,每个数据数值都是32位的。数据数值可以表示α度量标准、β度量标准或转变度量标准。加法单元330接受来自寄存器对TRmd的高数据字和来自四个一组的寄存器Rmq的第一个数据字。加法单元332接受来自寄存器对TRmd的低数据字和来自四个一组的寄存器Rmq的第二个数据字。加法单元334接受来自寄存器对TRnd的高数据字和接受来自四个一组的寄存器Rmq的第三个数据字。加法单元336接受来自寄存器对TRnd的低数据字和接受来自四个一组的寄存器Rmq的第四个数据字。TMAX单元340接受加法单元330和334的输出。TMAX单元342接受加法单元332和336的输出。TMAX单元340和342每个都选择其两个输入的最大值并且将修正因子加到选定的最大值上。如同前面提到的那样,修正因子是两个输入数值的函数并且可以作为查询表被实现。TMAX单元340和342的输出被储存在四个一组的寄存器TRsd中。在图14中举例说明的指令把装在四个一组的寄存器Rmq中的数据数值加到分别装在寄存器对TRmd和TRnd中的数据数值上,选择两个加法单元的输出的最大值并且把修正因子加到被选定的最大数值上。
举例说明根据第二类型的对数MAP指令完成的操作的数据流程图被展示在图15中。在图14和图15中类似的要素具有相同的参考数字。图15展示的操作类似于图14展示的那些,不同之处在于图14的加法单元330,332,334和336分别用减法单元350,352,354和356代替。因此,TMAX单元340接受减法单元350和354的输出,而TMAX单元342接受减法单元352和356的输出。在图15中举例说明的指令将装在四个一组的寄存器Rmq中的数据数值从装在寄存器对TRmd和TRnd中的数据数值中减去,选择两个减法单元的输出的最大值并且把修正因子加到被选定的最大数值上。
用来计算格子结构函数的对数拟然比的软件程序的例子被展示在图16中。该程序是用前面描述过的完成在图14和图15中展示的操作的TMAX指令实现的。在图16中,每条TMAX指令都规定用于图14或图15展示的两种对数MAP计算的计算。为了提供全部四种对数MAP计算,TMAX指令是在计算模块112和114(图7)中运行的。
在图16的第一个指令行中,TR1:0和TR3:2分别对应于图14中的寄存器对TRmd和寄存器对TRnd。另外,在第一个指令行中,R9:8和R11:10对应于图14中的四个一组的寄存器Rmq。装在指定的各个寄存器中的数据数值如同在图14或图15中展示的和前面描述的那样进行处理。人们将理解:为了根据单一的TMAX指令完成四种对数MAP计算,可以在两个计算单元中用不同的数据数值执行该指令。
在图16的软件程序中的第一个指令行的执行是参照图17描述的。如图17所示,计算模块112中的加速器电路300接受来自寄存器对TR1:0、R9:8、TR3:2和R11:10的数据数值,并且把输出数据的数值提供给寄存器对TR9:8。类似地,计算模块114中的加速器电路302接受来自寄存器对TR1:0、R9:8、TR3:2和R11:10的数据数值,并且把输出数据的数值提供给寄存器对TR9:8。加速器电路300和302每个都如同指令所规定的那样完成在图14或图15中展示的操作。
每个加速器电路300、302(图12、13和17)的实施方案被展示在图18中。加速器电路有流水线式的体系结构,包括第一流水线级400、第二流水线级402和第三流水线级404。第一和第二流水线级400和402通过级寄存器410和412被连接起来,第二和第三流水线级402和404通过级寄存器414被连接起来。第一级400包括专用的OR门420、四输入进位存储加法器424和32位的加法器426。第二级402包括多路复用器430、查询表432和三输入进位存储加法器434。第三级404包括32位的加法器440。寄存器414输出的旁路结果通过多路复用器442与输入OP1和OP2耦合,以便如同下面描述的那样在两个流水线级中执行指令。
图18中展示的加速器电路可以用来执行ACS指令。参照图9,ACS指令完成下列操作。
MAX(TRmd+Rm,TRnd-Rm)+C (3)
其中C是非必选的修正因子。MAX操作等价于减去括号中的两个数值,从而获得:
TRmd-TRnd+2Rm (4)
然后,电路确定表达式(4)的数值究竟是正的还是负的。当表达式(4)的数值是正的时候,在表达式(3)中括号内的第一项是最大数值,而当该数值是负的时候,在表达式(3)中括号内的第二项是最大数值。
当ACS指令正在执行的时候,在寄存器TRmd中的数据数值提供给输入OP1和OP2,寄存器TRnd中的数据数值提供给输入OP3,而数据数值2Rm提供给输入OP4。32位的加法器426的输出表示上面的表达式(4)的数值。这个数值被用来访问查询表432中的修正因子。32位的加法器426的输出的符号作为控制信号供多路复用器430使用,借此选择TRmd和Rm或TRnd和Rm。被选定的数值和查询表432的输出提供给进位存储加法器434的输入。32位的加法器440的输出表示被选定的最大数值加查询表432提供的修正因子C。为了把ACS指令的执行时间减少到两个流水线周期,进位存储加法器434的输出可以提供给进位存储加法器424的输入OP1和OP2。当前一个ACS指令的结果正在使用的时候,加法器424的进位输出通过多路复用器442提供给输入OP1,而加法器424的和数输出通过多路复用器442提供给输入OP2。当加速器的输入由寄存器提供的时候,旁路功能不被利用,而且将寄存器输入通过多路复用器442提供给输入OP1。在修正因子未被用在ACS指令中的情况下,查询表432的输出是零。
图18展示的加速器电路可以被用来执行TMAX指令。参照图14,TMAX指令完成下列操作。
MAX(TRmd+Rm3,TRnd+Rm1)+C (5)
表达式(5)中的MAX操作等价于减去两个数值:
TRmd+Rm3-TRnd-Rm1 (6)
然后,电路确定表达式(6)的数值究竟是正的还是负的。当表达式(6)的数值是正的时候,在表达式(5)中括号内的第一项是最大值,而当表达式(6)的数值是负的时候,在表达式(5)中括号内的第二项是最大值。
再一次参照图18,为了执行TMAX指令,在寄存器TRmd中的数值提供给输入OP1,在寄存器Rm1中的数值提供给输入OP2,在寄存器TRnd中的数值提供给输入OP3,而在寄存器Rm2中的数值提供给输入OP4。以类似于ACS指令的方式,32位的加法器426的输出被用来访问查询表432,而且加法器426的输出的符号被用来控制多路复用器430。多路复用器430选择最大数值并且把这个最大数值提供给进位存储加法器434。加法器434将被选定的最大值数值和来自查询表432的修正值相加提供输出结果。
尽管已经展示和描述了目前考虑到的本发明的优选实施方案,但是各种不同的变化和修正可能在不脱离权利要求书所定义的本发明的范围的情况下被获得对于熟悉这项技术的人将是明显的。
Claims (24)
1.一种用来在数字信号处理器中计算栅格函数的度量标准的方法,其中包括下述步骤:
根据对于选定的格子结构状态规定适合于时间t0的格子结构状态度量标准的位置和适合于从时间t0到时间t1的转变度量标准的位置的格子结构指令,把转变度量标准加到适合于时间t0的第一状态度量标准上以提供第一数值并且从适合于时间t0的第二状态度量标准减去转变度量标准以提供第二数值;
对于每个选定的格子结构状态,比较对应的第一和第二数值;以及
为每个选定的格子结构状态选择对应的第一和第二数值的最大值,以提供适合于时间t1的格子结构状态度量标准。
2.根据权利要求1的方法,进一步包括下述步骤:对于每个选定的格子结构状态,把作为对应的第一和第二数值的函数的修正因子加到最大的数值上。
3.根据权利要求2的方法,其中添加修正因子的步骤包括访问包含修正因子的查询表。
4.根据权利要求1的方法,其中格子结构指令实现用来计算α格子结构状态度量标准的正向格子结构函数。
5.根据权利要求1的方法,其中格子结构指令实现用来计算β格子结构状态度量标准的反向格子结构函数。
6.根据权利要求1的方法,其中格子结构指令使用单一指令多种数据近似同时实现用来计算α格子结构状态度量标准的正向格子结构函数和用来计算β格子结构状态度量标准的反向格子结构函数。
7.一种用来在数字信号处理器中计算格子结构函数的度量标准的方法,其中包括下述步骤:
根据格子结构指令规定的适合于时间t0的α度量标准和适合于从时间t0到时间t1的转变度量标准,计算适合于为时间t1选定的格子结构状态的α度量标准,以及根据格子结构指令规定的适合于时间t2的β度量标准和适合于从时间t2到时间t0的转变度量标准,计算适合于为时间t0选定的格子结构状态的β度量标准。
8.根据权利要求7的方法,其中计算适合于选定的格子结构状态的α度量标准的步骤进一步包括如下步骤:
对于每个选定的格子结构状态,把转变度量标准加到适合于时间t0的第一α度量标准上以提供第一数值并且从适合于时间t1的第二α度量标准减去转变度量标准以提供第二数值;对于每个选定的格子结构状态,比较对应的第一和第二数值;以及
为每个选定的格子结构状态选择对应的第一和第二数值的最大值以提供适合于时间t1的α度量标准。
9.根据权利要求8的方法,其中对选定的格子结构状态计算α度量标准的步骤进一步包括如下步骤:对于每个选定的格子结构状态把作为对应的第一和第二数值的函数的修正因子加到最大的数值上。
10.根据权利要求7的方法,其中计算适合于选定的格子结构状态的β度量标准的步骤包括下述步骤:
对于每个选定的格子结构状态,把转变度量标准加到适合于时间t2的第一β度量标准上以提供第一数值并且从适合于时间t2的第二β度量标准减去转变度量标准以提供第二数值;
对于每个选定的格子结构状态,比较对应的第一和第二数值;以及
为每个选定的格子结构状态选择对应的第一和第二数值的最大值,以提供适合于时间t1的β度量标准。
11.根据权利要求10的方法,其中计算适合于选定的格子结构状态的β度量标准的步骤进一步包括如下步骤:对于每个选定的格子结构状态,把作为对应的第一和第二数值的函数的修正因子加到最大数值上。
12.根据权利要求7的方法,其中计算适合于选定的格子结构状态的α度量标准的步骤包括根据单一的格子结构指令计算适合于众多格子结构状态的α度量标准。
13.根据权利要求7的方法,其中计算适合于选定的格子结构状态的β度量标准的步骤包括根据单一的格子结构指令计算适合于众多格子结构状态的β度量标准。
14.根据权利要求7的方法,其中计算α度量标准和计算β度量标准的步骤是同时完成的。
15.一种用来在数字信号处理器中计算对数MAP函数的方法,其中包括下述步骤:
根据规定第一、第二、第三和第四参数的位置的对数MAP指令,计算第一和第二参数的和数或差值以提供第一数值并且计算第三和第四参数的和数或差值以提供第二数值;选择第一和第二数值的最大值;以及
把作为第一和第二数值的函数的修正因子加到最大数值以提供对数MAP结果。
16.根据权利要求15的方法,其中加修正因子的步骤包括访问包含修正因子的查询表。
17.根据权利要求15的方法,其中两个以上对数MAP结果是根据单一的对数MAP指令计算出来的。
18.一种处理器,其中包括:
用来储存用于数字信号计算的指令和操作数的存储器;
用来产生用来从所述的存储器取出一些选定的所述指令的指令地址的程序定序器;以及
计算模块,它包括用来暂时储存操作数和结果的寄存器堆和用来执行规定适合于时间t0的格子结构状态度量标准和从时间t0到时间t1的转变度量标准的位置的格子结构指令的加速器,所述的加速器包括用来把转变度量标准加到适合于时间t0的第一状态度量标准上提供第一数值的加法器和从适合于时间t0的第二状态度量标准减去转变度量标准提供第二数值的加法器,用来确定适合于每个格子结构状态的对应的第一和第二数值的最大值的比较器和用来为选定的格子结构状态选择对应的第一和第二数值的最大值的数据选择器。
19.一种处理器,其中包括:
用来储存用于数字信号计算的指令和操作数的存储器;
用来产生用来从所述的存储器取出一些选定的所述指令的指令地址的程序定序器;
第一计算模块,它包括用来暂时储存操作数和结果的寄存器堆和用来根据格子结构指令规定的适合于时间t0的α度量标准和从时间t0到时间t1的转变度量标准执行格子结构指令的加速器,所述的加速器包括用来基于适合于t0的α度量标准和转变度量标准计算适合于在时间t1选定的格子结构状态的α度量标准的装置;以及
第二计算模块,它包括用来暂时储存操作数和结果的寄存器堆和用来根据指令规定的适合于时间t2的β度量标准和从时间t2到时间t1的转变度量标准执行格子结构指令的加速器,所述的加速器包括用来基于适合于t2的β度量标准和从时间t2到时间t1的转变度量标准计算适合于在时间t1选定的格子结构状态的β度量标准的装置。
20.一种处理器,其中包括:
用来储存用于数字信号计算的指令和操作数的存储器;
用来产生用来从所述的存储器取出一些选定的所述指令的指令地址的程序定序器;以及
计算模块,它包括用来暂时储存操作数和结果的寄存器堆和用来执行规定第一、第二、第三和第四参数的位置的对数MAP指令的加速器,所述的加速器包括用来计算第一和第二参数的和数或差值提供第一数值的第一加法器和用来计算第三和第四个参数的和数或差值提供第二数值的第二加法器、用来选择第一和第二数值的最大值的数据选择器、用来产生作为第一和第二数值的函数的修正因子的查询表和用来把修正因子加到最大数值上提供对数MAP结果的第三加法器。
21.一种在数字信号处理器的计算模块中使用的加速器,其中包括:
用来接收给加速器的输入的第一进位存储加法器;
用来把和数与第一进位存储加法器的进位输出合并的第一全加器;
用来根据第一全加器的输出产生修正因子的查询表;
用来根据第一全加器的输出选择一个或多个给加速器的输入的多路复用器;
用来把多路复用器的一个或多个输出与查询表的输出相加的第二进位存储加法器;以及
用来把和数与第二进位存储加法器的进位输出合并的第二全加器。
22.根据权利要求21的加速器,其中第一进位存储加法器有四个输入,多路复用器选择四个输入中的两个,而第二进位存储加法器有三个输入。
23.根据权利要求22的加速器,进一步包括用来把和数与第二进位和数加法器的进位输出供应给第一进位和数加法器的输入的数据选择器。
24.根据权利要求21的加速器,其中所述的第一进位存储加法器和所述的第一全加器包括第一流水线级,所述的查询表、所述的多路复用器和所述的第二进位存储加法器包括第二流水线级,而所述的第二全加器包括第三流水线级。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/923,225 | 2001-08-06 | ||
US09/923,225 US7661059B2 (en) | 2001-08-06 | 2001-08-06 | High performance turbo and Viterbi channel decoding in digital signal processors |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1554152A true CN1554152A (zh) | 2004-12-08 |
CN100336305C CN100336305C (zh) | 2007-09-05 |
Family
ID=25448337
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB028175212A Expired - Fee Related CN100336305C (zh) | 2001-08-06 | 2002-08-06 | 数字信号处理器中的高性能turbo和viterbi信道解码 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7661059B2 (zh) |
EP (1) | EP1417768B1 (zh) |
JP (1) | JP4193989B2 (zh) |
CN (1) | CN100336305C (zh) |
WO (1) | WO2003015286A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104601181A (zh) * | 2007-10-26 | 2015-05-06 | 高通股份有限公司 | 优化的维特比解码器和全球导航卫星系统接收器 |
CN105027076A (zh) * | 2013-03-15 | 2015-11-04 | 高通股份有限公司 | 相加-比较-选择指令 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6906978B2 (en) * | 2002-03-19 | 2005-06-14 | Intel Corporation | Flexible integrated memory |
US7246298B2 (en) | 2003-11-24 | 2007-07-17 | Via Technologies, Inc. | Unified viterbi/turbo decoder for mobile communication systems |
US8271858B2 (en) * | 2009-09-03 | 2012-09-18 | Telefonaktiebolget L M Ericsson (Publ) | Efficient soft value generation for coded bits in a turbo decoder |
US11451840B2 (en) * | 2018-06-18 | 2022-09-20 | Qualcomm Incorporated | Trellis coded quantization coefficient coding |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4823346A (en) * | 1986-04-16 | 1989-04-18 | Hitachi, Ltd. | Maximum likelihood decoder |
US5295142A (en) * | 1989-07-18 | 1994-03-15 | Sony Corporation | Viterbi decoder |
US5220570A (en) * | 1990-11-30 | 1993-06-15 | The Board Of Trustees Of The Leland Stanford Junior University | Programmable viterbi signal processor |
US5291499A (en) * | 1992-03-16 | 1994-03-01 | Cirrus Logic, Inc. | Method and apparatus for reduced-complexity viterbi-type sequence detectors |
DE4224214C2 (de) * | 1992-07-22 | 1995-02-09 | Deutsche Forsch Luft Raumfahrt | Verfahren zur quellengesteuerten Kanaldecodierung durch Erweiterung des Viterbi-Algorithmus |
US5490178A (en) * | 1993-11-16 | 1996-02-06 | At&T Corp. | Power and time saving initial tracebacks |
US5412669A (en) * | 1993-12-09 | 1995-05-02 | Cirrus Logic, Inc. | Add, compare and select circuit |
US6307868B1 (en) | 1995-08-25 | 2001-10-23 | Terayon Communication Systems, Inc. | Apparatus and method for SCDMA digital data transmission using orthogonal codes and a head end modem with no tracking loops |
US6028899A (en) * | 1995-10-24 | 2000-02-22 | U.S. Philips Corporation | Soft-output decoding transmission system with reduced memory requirement |
US5742621A (en) * | 1995-11-02 | 1998-04-21 | Motorola Inc. | Method for implementing an add-compare-select butterfly operation in a data processing system and instruction therefor |
US5933462A (en) * | 1996-11-06 | 1999-08-03 | Qualcomm Incorporated | Soft decision output decoder for decoding convolutionally encoded codewords |
US5987490A (en) * | 1997-11-14 | 1999-11-16 | Lucent Technologies Inc. | Mac processor with efficient Viterbi ACS operation and automatic traceback store |
JP4178752B2 (ja) * | 1998-05-28 | 2008-11-12 | ソニー株式会社 | 畳み込み符号の軟出力復号装置及び軟出力復号方法 |
US6343368B1 (en) * | 1998-12-18 | 2002-01-29 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and system for fast maximum a posteriori decoding |
DE60007956T2 (de) | 2000-02-21 | 2004-07-15 | Motorola, Inc., Schaumburg | Vorrichtung und Verfahren zur SISO Dekodierung |
US6865710B2 (en) | 2000-09-18 | 2005-03-08 | Lucent Technologies Inc. | Butterfly processor for telecommunications |
US6393076B1 (en) * | 2000-10-11 | 2002-05-21 | Motorola, Inc. | Decoding of turbo codes using data scaling |
JP3540224B2 (ja) * | 2001-03-06 | 2004-07-07 | シャープ株式会社 | ターボ復号器とターボ復号方法及びその方法を記憶した記憶媒体 |
US6848074B2 (en) * | 2001-06-21 | 2005-01-25 | Arc International | Method and apparatus for implementing a single cycle operation in a data processing system |
-
2001
- 2001-08-06 US US09/923,225 patent/US7661059B2/en not_active Expired - Lifetime
-
2002
- 2002-08-06 WO PCT/US2002/024703 patent/WO2003015286A1/en active Application Filing
- 2002-08-06 JP JP2003520088A patent/JP4193989B2/ja not_active Expired - Fee Related
- 2002-08-06 CN CNB028175212A patent/CN100336305C/zh not_active Expired - Fee Related
- 2002-08-06 EP EP02756941.7A patent/EP1417768B1/en not_active Expired - Lifetime
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104601181A (zh) * | 2007-10-26 | 2015-05-06 | 高通股份有限公司 | 优化的维特比解码器和全球导航卫星系统接收器 |
CN104601181B (zh) * | 2007-10-26 | 2017-12-22 | 高通股份有限公司 | 优化的维特比解码器和全球导航卫星系统接收器 |
CN105027076A (zh) * | 2013-03-15 | 2015-11-04 | 高通股份有限公司 | 相加-比较-选择指令 |
CN105027076B (zh) * | 2013-03-15 | 2018-07-20 | 高通股份有限公司 | 相加-比较-选择指令 |
Also Published As
Publication number | Publication date |
---|---|
JP4193989B2 (ja) | 2008-12-10 |
CN100336305C (zh) | 2007-09-05 |
WO2003015286A1 (en) | 2003-02-20 |
US20030028845A1 (en) | 2003-02-06 |
EP1417768A1 (en) | 2004-05-12 |
EP1417768B1 (en) | 2013-05-29 |
EP1417768A4 (en) | 2006-10-18 |
US7661059B2 (en) | 2010-02-09 |
JP2004538704A (ja) | 2004-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20060236214A1 (en) | Method and apparatus for implementing decode operations in a data processor | |
US20040098548A1 (en) | Programmable processor and method with wide operations | |
WO2003105001A1 (en) | Data processor adapted for turbo decoding | |
US8989242B2 (en) | Encoding/decoding processor and wireless communication apparatus | |
JP4907802B2 (ja) | 通信の復号化の際に用いられるバタフライプロセッサ装置 | |
JP2002171173A (ja) | 複数の復号化スキームのうちの1つに従って送信されたデータ通信信号を復号化する再構成可能なアーキテクチャと、畳み込み符号とターボ符号の一方を復号化する通信復号化デバイスのパスメトリックを取り扱う方法。 | |
US6954841B2 (en) | Viterbi decoding for SIMD vector processors with indirect vector element access | |
CN101297279A (zh) | 改善的流水线数字信号处理器 | |
CN100336305C (zh) | 数字信号处理器中的高性能turbo和viterbi信道解码 | |
US5617089A (en) | Huffman code decoding circuit | |
CN110858137B (zh) | 除以整数常数的浮点除法 | |
JP2002152057A (ja) | トレリス処理装置の適切なパスメトリックアドレスを計算する装置と方法。 | |
CN1319801A (zh) | 用于循环冗余校验的有效计算方法及装置 | |
US20030123563A1 (en) | Method and apparatus for turbo encoding and decoding | |
US20080240303A1 (en) | Map detector with a single state metric engine | |
JP4265345B2 (ja) | 携帯電話機、インターリーブパラメータ演算装置、方法及びプログラム | |
CN1988391A (zh) | 运算电路 | |
US8171265B2 (en) | Accelerating traceback on a signal processor | |
CN1855733A (zh) | 一种卷积编码方法及卷积编码器 | |
Mamidi et al. | Instruction set extensions for software defined radio | |
CN112242851B (zh) | 一种ldpc码的分层译码中迭代数据处理方法及译码器系统 | |
US8583998B2 (en) | System and method for Viterbi decoding using application specific extensions | |
KR100414152B1 (ko) | 프로그래머블 프로세서에서의 비터비 디코딩 연산방법 및그 연산방법을 실행하기 위한 연산회로 | |
JP5480793B2 (ja) | プログラマブルコントローラ | |
EP1355431B1 (en) | Viterbi decoding processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070905 Termination date: 20170806 |