CN101889401B - 优化的维特比解码器和全球导航卫星系统接收器 - Google Patents
优化的维特比解码器和全球导航卫星系统接收器 Download PDFInfo
- Publication number
- CN101889401B CN101889401B CN200880119377.1A CN200880119377A CN101889401B CN 101889401 B CN101889401 B CN 101889401B CN 200880119377 A CN200880119377 A CN 200880119377A CN 101889401 B CN101889401 B CN 101889401B
- Authority
- CN
- China
- Prior art keywords
- cost
- state
- symbol
- register
- bit
- 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.)
- Expired - Fee Related
Links
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/41—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
-
- 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/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/4161—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors implementing path management
- H03M13/4169—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors implementing path management using traceback
-
- 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/6561—Parallelized implementations
-
- 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
-
- 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/6577—Representation or format of variables, register sizes or word-lengths and quantization
- H03M13/6583—Normalization other than scaling, e.g. by subtraction
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Error Detection And Correction (AREA)
Abstract
本发明提供一种维特比解码器,其基于在处理器中实施的特殊指令集,所述指令集使得所述维特比解码器能够在不显著增加硬件复杂性的情况下以低得多的CPU负荷来处置维特比处理。通过谨慎地应用SV导航特有的适当设计约束并分析维特比算法,可实现用于有效地将维特比加速逻辑嵌入到GNSS芯片组中的优化架构。
Description
技术领域
本发明涉及一种用于全球导航卫星系统(GNSS)的接收器,其包括用以解码经卷积编码的数据的接收器。明确地说,但不排他地说,本发明的实施例涉及一种能够解码由对地静止的卫星(如WAAS/EGNOS卫星)发射的增强数据的GPL接收器,以及一种用于根据伽利略标准的经卷积编码的数据的伽利略接收器。
背景技术
在GPS中,现有的基于卫星的增强系统(SBAS)的对地静止的卫星由不同国家操作,用于提供额外信息以增强可从便携式GPS接收器装置得到的GPS定位质量和完整性。
所述信息提供关于大气校正的额外信息,其可应用于改进定位的质量和关于卫星完整性的信息。
归因于较大的轨道半径和SBAS卫星的对地静止的轨道,已针对数据传送使用较复杂的卷积编码,这需要在接收器中具有较复杂的解码能力,通常是维特比解码器,这对系统产生增加的处理负荷。在SBAS实施方案的情况下,维特比解码通常适用于单个SV且已知通过由通用处理器执行的软件解码器来实施所述维特比解码。此解决方案是简单的,但就速度和功率经济受到关注来说为次优的。
所提议的伽利略系统信号也将针对群集中的所有SV上的数据信道利用此卷积编码机制,所述数据信道利用相同的基本卷积编码技术,然而有可能使用不同的生成多项式和符号速率。
这种新的导航信号格式的效应将显著增加处理开销,因为所述解决方案中所使用的所有伽利略SV将要求同时操作维特比解码算法,使得维特比解码器对系统资源的负荷变得非常显著。尽管理论上有可能以软件来执行所有这些,但处理开销和额外存储器要求将对GNSS导航解决方案产生额外成本和功率要求,这直接与小尺寸、低功率和低成本的市场目标冲突。
用于此问题的一个解决方案是以硬件实施维特比解码器以从处理器完全卸载处理。尽管这种处理方式减少了对主要处理器的负荷,但仅仅将成本和功率迁移到不同子系统中。
因此,需要提供一种低功率GNSS接收器,其能够在不对系统资源产生高负荷的情况下解码经卷积编码的信号。此外,本发明旨在提供一种低功率GNSS接收器,其可与此项技术中已知的接收器相比较快地且使用较少功率来解码卷积编码信号。
发明内容
本发明的目标通过所附权利要求书的对象而获得。在本发明的变型中,此目标通过基于在处理器中实施的特殊指令集的软件维特比解码器而获得,所述指令集使得其能够在不显著增加硬件复杂性的情况下以低得多的CPU负荷处置维特比处理。
通过谨慎地应用SV导航特有的适当设计约束并分析维特比算法,可实现用于有效地将维特比加速逻辑嵌入到GNSS芯片组中的优化架构。
此外,通过硬件与软件之间的紧密整合,这可在不显著增加系统资源的情况下通过扩展常规RISC处理器的指令集来执行。
附图说明
·图1表示网格状态图。
·图2说明图1的图中的最低成本路径。
·图3表示汉明距离的计算。
·图4说明成本分布。
·图5说明累积状态成本图。
·图6示意性展示维特比算法中的不同数据存取方法。
·图7说明与本发明实施例相关的指令架构。
·图8和图9涉及与本发明相关的指令的隐式寻址。
·图10说明所发射位的序列。
·图11和图12表示图10的位序列的解码。
·图13示意性说明根据本发明一方面的以特殊指令集操作处理器。
具体实施方式
维特比编码和解码算法是此项技术中一般已知的且在技术文献中有所描述。在下文中,将仅论述GNSS实施方案特有的若干方面。
在维特比实施方案中必须考虑若干准则:符号大小、符号解译、生成多项式和长度以及符号速率。对于GNSS应用,约束长度K=7(存储器m=6),其意味着所发射符号随当前数据位和先前六个数据位而变,码速率位为2,其意味着对于每一数据位,发射两个符号,符号速率大体上在250或500符号/秒左右,且生成多项式可变化。
维特比为对路径成本表进行操作的卷积编码和解码技术,所述路径成本表基于先前接收的符号的潜在解译而计算处于特定状态的最大概率。由于多项式的长度为7,所以实施方案需要表示先前六个数据位的62个状态。
所使用的卷积码针对所发射的每一数据位产生两个位符号,所述数据位被表示为两个状态之间的转变,且具有64个状态(K=7),从每一状态开始,具有由两个潜在符号表示的两个可能的下一状态,且对于每一状态,具有可永不被发射的两个潜在符号。针对数据位发射的实际符号由生成多项式确定且随先前6个数据位与正被发射的位而变。
因此,对于每一数据状态,符号由多项式确定,且状态可如下预测:如果位为“1”,则下一状态为32+(current_state/2),否则其仅为current_state/2,因此不需要状态转变表。
在发射每一符号时,所述表示因此由七个数据位确定,且当接收到所述符号时,由解码器基于多项式和先前六个数据位来对其进行解译。在接收每一符号时,其被解译并被赋予概率值,所述概率值是基于其与潜在有效的符号的相似性且用以计算特定符号序列解译为正确的概率。
为了实现此,维特比解码器保持记录针对所有可能状态找到的最低成本路径,且针对每一可能状态,其记录正被接收的先前最可能的符号序列及其累积成本。
一旦已接收到足够的符号,便通过挑选最低成本状态且回顾历史以确定最可能被发射以产生所述状态的数据位序列来解码所述数据。
维特比编码和解码的原则一般为熟悉卷积编码机制的人员所理解,且可用的分析表明这些方案所获得的整体SNR改进均受益于向每一符号赋予一潜在值范围,而非简单的二进制决策,且通常可用针对每一符号的高达八级解译来实现显著增益。
对于K=7,在可针对最佳性能、针对保持表示处于特定状态的累积成本的至少两组状态信息所需要的此处理,并针对保持记录产生所述用于获得最佳解码性能的状态的通常先前34个转变(数据位)所需要的每一状态而提取第一数据位之前,常用的维特比解码算法需要处理至少35个符号。
在给定这些约束的情况下,可首先选择适当的最小数据结构来表示维特比解码状态且接着优化这些状态以用于嵌入式实施方案,假定特定考虑HW/SW交互和处理器子系统架构。
在每一潜在当前状态中,存在由两个符号编码表示的两个有效状态转变(分支),且存在表示无效转变的两个符号编码,因此针对每一状态,仅存在两个潜在后续者状态和两个潜在前驱者状态。这些状态可由图1的网格图表示。
依据每一潜在当前状态,有效和无效分支由不同符号指示,因此对于每一状态,需要知道两个潜在的下一状态(其可以一般方式进行计算)和与所述分支相关联的适当符号,所述符号也可使用专用逻辑来计算,但可更易于从表中加载,因此采用与多项式无关的实施方案。
由于正在实施软决策解码器,所以首先需要针对根据所接收符号的强度而加权的所有潜在符号对来确定成本因素,且由于针对所有状态的所有有效状态转变具有相等的概率,所以此加权与当前状态无关且仅取决于所接收符号对以及所接收符号对与和所述分支相关联的实际符号对之间的汉明距离。这意味着对于每一符号,软件必须计算与汉明距离相关联的加权表,且这可接着应用于所有状态和使用汉明距离与状态之间的映射进行的分支成本计算。
基本的维特比算法因此将针对所接收的每一符号对执行以下计算序列,实际的实施方案将使这些过程并行,以通过谨慎设计相关联的数据结构和实施自定义指令(在适当时)来最小化负荷/存储量和复杂指令序列。
对于所接收的符号对,计算与符号对解译与四个可能的所发射符号对之间的汉明码相关联的一组四个成本。汉明成本表实际上是表示与解译每一可能路线中的实际所接收输入符号对相关联的成本的四个值(即,00、01、10、11)的表。
对于每一潜在当前状态(64个状态),针对所接收符号对的两个潜在解译中的每一者计算达到下一状态中的每一者的成本(分支成本),这是基于状态当前成本和针对所接收符号的预先计算的成本表,即,对于每一状态,存在两个潜在下一状态和两个转变,所述转变具有基于所需要的符号对及其重新解译为与所述转变相关联的符号的相关联成本。
对于后续者状态中的每一者,选择向具有最低成本的状态的转变且针对所述状态更新痕迹历史以记录到达所述状态的成本和表示所发射数据位的到达此处(“1”或“0”)的转变。
结果是可针对每一状态实现的最低成本和用以到达此处的路径的表,如图2所示。
最后,一旦已解码足够的符号,便选择具有最低累积成本的状态且追溯通过到每一状态的转变以恢复到达所述状态的最低成本数据序列,这是对所接收位流的维特比解码。
由此清楚看到,维特比解码是数据密集型操作,且还涉及以非顺序次序来存取数据,归因于当绘制数据存取次序时所形成的图案而一般将其称为维特比蝶形(Viterbibutterfly)。
通常,使用维特比蝶形运算来执行维特比加速,所述维特比蝶形运算为效率起见而使用多个存储器且使用执行众所周知的加-比-选(add-compare-select)操作的专用硬件。虽然加-比-选操作可易于被加速且通常由DSP中的自定义指令支持,但仅对此加速不会在很大程度上改进速度,因为所述操作变为受数据存取支配,通常有效地址计算花费与数据存取本身一样多的时间。
通常,DSP具有用于计算地址的自定义指令和用于路径成本计算的加-比-选指令。
优化与数据表示。
归因于卷积算法的性质,状态转变为可预测的,且可被分组为部分独立的数据集合,也就是说,对于每一对潜在后续者状态,存在恰好4个会产生所述状态的当前状态,因此用于存储器存取的最佳架构应能够独立于所有其它数据集合而对此数据集合进行操作以最少化存储器存取。
由于存在产生每一潜在后续者状态的两个潜在当前状态,且存在与任何当前状态相关联的两个潜在符号,因而断定存在将要计算的最多128个分支。对于每一符号对,存在四个可能解译,因此存在用以指示对应符号对的与每一潜在分支相关联的两个位,因此可在一个字中存储用于八个状态(16个分支)的分支成本映射。
对于任何分支,存在四个可能符号,且对于每一状态,存在两个可能分支,因此分支必须相差至少一个符号,因为最大符号成本因此为14。由于信道不是完美的,所以将不可避免地存在符号错误,这正是使用卷积码的原因,将存在随时间的累积错误,其最大值由所使用的块长度确定。
由于所发射与所接收的符号之间的最大差值为14,所以对于所有符号,在N个数据位之后的最低成本状态的最大值将小于8N,这取决于所使用的多项式。
对于在给定状态下发射的给定数据位,存在从可能4个组合发射的两个符号位,暂时假设这些为二进制表示,但所述原理可扩展到软决策。将所接收的符号与所发射的符号进行比较且对每一可能解译的差异计数,计算汉明距离,0用于正确解译,如果一个符号位不正确则为1,如果两个位不正确则为2。图3展示这点。
对于每一可能状态,计算处于每一可能后续者状态的潜在成本且保持最低成本,可能状态成本的范围归因于信号和可能解译(其中一者根据定义而始终为错误的)中的错误而随着时间扩展。
假设具有完美的信号,则将看到如图4所示的成本分布变化。
然而,由于在解码器中仅存在有限数目的存储器位,因而断定如果存在K个位,则可在K步骤中可从每个先前状态到达每个状态,即使其意味着误译每个所接收符号;这允许构造如图5的图中所示的累积成本。
出于简单起见,假设仅存在两个存储器位,因此左边的三角形展示在时间T+2处从当前状态S0导出的任何状态S1的最大成本分布,其展示可在K个步骤中获得的最大成本,其中K为存储器位的数据,在此情况下为M=4。在信号状态转变图中,指示在状态T1之后存在噪声,使得每个符号具有至少一个错误(H=1),随后基于先前两个符号的最差的可能解译来应用所述两位存储器的约束且掩蔽针对所有状态的潜在成本范围。
在T4处,所有成本均不低于最大状态成本M=4,所以在T5处,可通过减去共同偏移量来调整所有新成本,因此约束成本结果的范围。进而,本发明的方法包括将转变成本设定为位于范围0到M中的非负值的步骤,其中M为可在K个步骤中获得的最大成本,其中K为经卷积编码的数据中的存储器位的数目。优选的是,每个累积路径成本分配N个位,其中(2^(K+1)*M)-1<2^N-1。
对于任何状态Sn,前驱者状态为S(2n)和S(2n+1)。假设Hn0/1为在状态n中分别将符号解译为0/1的汉明成本。
假设C(N)表示状态N的最低累积路径成本,
假设KT表示在时间T处的C0..C63集合
假定在时间T0处具有状态成本集合KT0,且在将来时间T1处具有相关联的成本集合KT1。因而断定Min(KT1)>=Min(KT0)且Max(KT1)<=Min(KT0)+84。为了开始数据恢复,注意KTn的最小成员的索引而非KT的实际值,因而断定可通过将成本KT规格化到<=Min(KT)的某值来约束成本KT。
因此,需要七个位来表示累积的状态转变成本,所以为了与CPU架构对准,将累积的成本存储为八位值是便利的,这允许将用于符号对的四个可能解译的成本打包为32位字。
为了避免累积成本的溢出,因此有必要在任何状态接近溢出时对其进行缩放,只要具有足够的范围来唯一地表示KT内的所有值且保留其排序。为了实现此,每一累积的成本将被表示为八位值,且随着针对所有状态转变而累积成本,其无法分叉超过84,这使得能够通过将所有值约束为在小于256之间来执行成本调整,其易于通过当在累积有新转变成本之前最低状态成本达到128时重设所有状态成本的MSB而实现。
既然已确定了数据表示,则需要优化数据的处理以最小化存储器存取的开销。
用于任何状态的分支成本的计算涉及计算产生所述状态的两个路径的潜在成本Cn=
由于存在进入每一后续者状态的两个潜在分支,所以优选的是同时计算这些转变,使得可在不需要存储中间值的情况下检测并存储最低成本分支。
维特比使用其结果作为下一迭代的源数据而操作,因而有必要以与操作数相同的次序来组织结果,这暗示着状态成本的线性阵列占用64个字节(16个32位字)。
由于可在一个字中存储四个状态成本,所以需要读取所述字一次且在丢弃所述字之前处理其内的所有状态,且将结果直接写回到相同类型的结构中,这使用所述结构的两个副本且进行交替(其为输入和输出)。
通过此组织,所处理的每一字产生四个新状态,其处于不配合到输出阵列中的同一字中的两个群组中,然而处理两个连续源字将产生处于两个群组中的八个结果,其中每一群组配合到单个字中,但两个字并不是邻接的。
因此,对于维特比操作,需要将八个状态处理为两个字的八个群组,且由于每一状态需要映射寄存器中的4个位,所以可将映射寄存器打包以使得每一群组也需要一个32位寄存器来包含此映射。
这良好地配合于八迭代循环(每循环处理八个状态)中,其中所需要的所有数据填充CPU寄存器,每一操作数每循环被读取一次,且每一结果被写入一而不需要部分字更新,因此优化了存储器效率。
对于每一新状态,必须记录最低成本分支,这需要64个位,所述64个位将匀称地配合到一对32位寄存器中,这些寄存器将需要针对每一循环迭代进行部分更新且在完成所述循环之后存储到历史或“追溯”表。
还需要计算最低成本状态的索引,且检测何时所有状态均高于最低阈值,使得可在下一循环迭代上对其进行调整,这易于使用旗标来指示所有状态均高于128且在下一迭代上掩蔽MSB来实现。
在循环的迭代期间,需要有效地寻址源和结果数据,但寻址是循环索引的简单功能,追溯寄存器中待更新的字段也是,所以理想的扩展将包括用于循环索引、寻址、最低成本状态索引和规格化旗标的寄存器。图6展示其中可针对维特比循环存取数据的不同方法,在图61中使用两个源值56来产生一个结果66,这是低效的,因为其并不利用所有源数据。在图62所说明的情况下,使用一个源操作数65来计算两个成本66,但这些涉及不同字中的不同状态,且在第三图63中,利用两个字中的八个状态65来计算两个字中的八个新状态66,所有数据均被完美地对准且没有数据被浪费。
总的来说,这产生理想的实施方案,其需要多个源和目的地寄存器,所述寄存器无法容易使用典型的指令集架构来实施,如以下图7展示。
图7说明用以从4个源变量计算3个结果的典型操作序列。上部图展示这些操作通常将如何在标准3操作数CPU上实施,其中所述3个操作数将表示2个源操作数和1个目的地操作数。此处,可看到,必须将操作划分为至少3个顺序指令。这归因于指令操作数格式限制,其不允许足够的位用于编码足够的寄存器且还一般将为对寄存器堆在一个周期中接受一个以上写入操作的能力的限制。在此编码中,在每一操作码中显式地编码所有寄存器且所有寄存器存在于通用寄存器堆中。
在下部部分中,使用对一些寄存器的隐式编码且将这些特殊字段实施为与通用寄存器堆分开的专用寄存器来说明相同操作。
图8和图9涉及本发明的一方面,其中通过使寄存器寻址隐含于指令中来获得图3的最佳途径。
图9的图展示维特比指令所实施的实际功能。在此图中,选择一对先前状态(Sa,Sb),其对应于用于新状态Sc的所述对潜在前驱者状态。由多路复用器(901)选择以将产生新状态的方式解译新符号的对应成本,且由加法器(902)将其加到这些先前状态的对应成本,从而产生到达状态Sc的一对潜在成本(903)。这些成本经比较且由选择器(904)选择最低成本前驱者状态,指示对应的位转变(905)且输出对应成本(906)。这些对应成本将可能随着施加每一新符号而针对每一状态增加,然而由于状态存储器限于有限数目的状态(在此情况下为6个状态),所以在对应于所有状态的成本的任何例子处存在一组值,其中最小值与最大值之间的范围由最大状态转变成本和最大状态存储器限制。在此实例中,这小于64以便防止状态成本无限增长,当任何状态成本超过128时输出指示(907)。
将先前状态成本中的至少一者>128的指示(908)供应到规格化块909,且此规格化块通过减去64来规格化状态成本,这保证所有状态成本将保持在有限整数范围内。
从所述指令输出所得新状态成本910且其还由最小成本块911使用。此块的目的在于监视在新符号处理期间计算的所有状态成本且确定所有所得的新状态成本集合中的最低成本。
一旦已确定了产生状态的转变,便计算用于所述状态的新成本且更新状态成本表。
供应新符号,由多路复用器901选择将符号解译为1或0的相关联成本中的每一者,在加法器902中将这些成本加到先前符号成本,从而产生与所述符号的2个可能解译相关联的一对成本903。
由于所述结果和控制变量中的若干者在长度上小于32位,所以这些可合并为单个32位核心寄存器的子字段。
为了使得能够在多个占先任务中操作指令集扩展,还有必要保存这些寄存器和任何状态,这在这些状态旗标也被合并到相同控制寄存器中的情况下进一步被简化。
一旦已处理了足够的符号,便有必要执行追溯操作以确定产生当前状态的分支序列。这是相对简单的操作,但再次涉及大量的地址计算、位操纵和数据加载操作。再次,这些可使用用以执行每一追溯步骤的专用指令和用于寻址追溯历史的专用寄存器来有效地实施。
考虑在图10的网格图中发射的位序列。在此编码中,Rx和Ry表示存在于通用寄存器堆外部的特殊寄存器中的4个所需源操作数中的2个操作数,且Rp、Rq表示保存在寄存器堆外部的特殊寄存器中的结果中的2个结果,且因此可为寄存器的子字段且可甚至与Rx和Ry重叠。
在发射所述数据之后,接收器计算成本和追溯,且实现图2的成本和追溯历史。
如果追溯在T=6处开始且发现状态10为最低成本状态,那么接收器解码序列101101,其处于发射数据的相反次序且接着需要如图11中那样被倒转。
在接收另一符号且再次从最低成本路径(其再次假设为状态“10”)开始之后,接收器现在解码1000101,如图12所示;显然,在一些符号之后,路径会聚且没有必要追溯超过状态T=3。
在追溯期间,在添加每一新符号之后,除了偏移1个位之外,路径将通常不显著改变,还明白,一旦新追溯历史在先前历史中会聚于一状态,其便将永远不会再次分叉,因而有可能通过用先前追溯操作检测会聚来减少在追溯上花费的努力。在SW中,这是复杂的任务,其涉及在比较之前掩蔽并旋转位字段,此操作的开销向每一迭代添加足以使得其益处被否定的额外周期,然而使用专用硬件来使用追溯索引选择字段来存取这些位字段意味着其可透明地执行且大大减少追溯操作所消耗的功率和周期。
一旦已执行了追溯,便通常一次1字节地提取最旧的数据位,然而在初始阶段期间,通常正在搜索同步模式且不知道位对准,这进一步使用于SW的初始追溯操作复杂化,但再次可通过添加用于以对准到CPU寄存器中的正确次序提取最旧位的特定指令和用于在若干位已被使用时“消耗”所述位的单独指令来进行优化,以此方式可提取并比较字节,从而一次丢弃一个位,直到已检测到同步为止,此后以应用程序处理位的速率来消耗所述位。
作为最后的功能,维特比处理中的每一者需要数据结构含有维特比状态、追溯历史、追溯表和状态成本表。这些需要针对每一信道而分开,且因此所有地址将需要某一偏移。这可再次通过将维特比数据结构基础地址实施为维特比控制/状态字的部分来向处理器隐藏。
为了最小化对其它处理的影响,优选隐式维特比寄存器作为对核心cpu寄存器的补充,且SW能够在上下文切换时有效地保存其状态,然而大多数处理将不使用这些寄存器,因而其不需要保存所述寄存器。
为了最小化对其进行保存的次数,在OS不需要针对每一处理知道是否需要其的情况下,可将额外状态位添加到维特比状态/控制寄存器以指示何时维特比块处于使用中,这些可由维特比指令根据处理的状态来自动设定/清除,以此方式,上下文切换可测试这些旗标以确定是否存在将要保存的任何上下文,以此方式,其不从未使用所述功能性的处理中占用有价值的堆栈空间,且其在未有效处于使用中的情况下不被存储,因此可在多线程环境中有效地使用维特比。
根据本发明的另一方面,本发明涉及一种根据以上描述的本发明的方法针对解码经卷积编码的数据而优化的处理器。所述处理器经布置以用虚幻寄存器扩展处理器的寄存器集合,所述虚幻寄存器在物理上不具有任何寄存器存储装置,而是基于用作循环控制寄存器的核心寄存器字段以及指示当前状态成本集合分配和数据结构的基础地址且选择当前和下一状态表的映射的状态寄存器字段来返回用于源和目的地状态成本操作数的地址。
参看图13,本发明的处理器的操作由以包含多个字段的单个字(或操作码)的形式存储在存储器中的指令控制。在所说明的实例中,举例来说,操作码147说明典型的3操作数指令,其由两个源操作数148、指令字段150和目的地寄存器地址(149)组成。
操作数OP1、OP2用以借助于多路复用器142从寄存器堆141选择两个源操作数,所述源操作数被传递到ALU 146。ALU的输出通常使用地址149通过未说明的路径而被写回到寄存器堆141中。
在所说明的实例中,寄存器堆141包含32个位置或寄存器R0到R31,但这并不是对本发明的限制。还必须了解,图14是打算说明处理器中的逻辑数据流的简化功能图,且其并不限制本发明的处理器的结构。明确地说,本发明还包括管线式架构,其中在不同时间执行这些操作。
根据本发明,操作码147可包括去往“虚幻寄存器”143的地址,其不对应于寄存器堆141中的单独存储空间,而是为在寄存器R0到R31中的值和/或在CPU内部或外部的额外值151、152的逻辑函数。当由指令寻址时,虚幻寄存器返回根据信号和/或并未由指令显式寻址的寄存器而计算的值。
在此实例中,操作码147以每一者6个位的方式存储操作数地址148,因而给出寻址比32个物理寄存器多的操作数的能力。可例如通过对在寄存器堆141中没有配对物的一个地址进行编码来存取虚幻寄存器。
尽管图14的图展示算术指令的典型格式和处理,但CPU通常还具有非算术指令,例如加载/存储指令。根据本发明,这些指令的操作数也可为虚幻寄存器143。还希望本发明可包括多个虚幻寄存器,且其可彼此交互,例如其中一些虚幻寄存器尤其取决于其它虚幻寄存器的值。本发明还包括其中一些虚幻寄存器与独立存储器元件有关且其可保持例如额外隐藏的寄存器等状态的情况。
有利的是,虚幻寄存器经布置以基于用作循环控制寄存器的核心寄存器字段以及指示当前状态成本集合分配和数据结构的基础地址且选择当前和下一状态表的映射的状态寄存器字段来返回用于源和目的地状态成本操作数的地址。
Claims (16)
1.一种改进维特比解码器中解码经卷积编码的数据的效率的方法,其包括:
将转变成本设定为位于范围0到M内的非负值,其中M为在K个步长中获得的最大成本,其中K为所述经卷积编码的数据中的存储器位的数目;以及
每个累积路径成本分配N个位,其中N满足(2^(K+1)*M)-1<2^N-1。
2.根据权利要求1所述的方法,其进一步包括针对符号对的4个可能解译的每一者计算一组成本且将这些成本打包为单个32位字,所述字可被索引为4字节字段。
3.根据权利要求1所述的方法,其进一步包括利用一个CPU寄存器中的一对或一对以上2位字段来选择性地从至少另一寄存器存取一对或一对以上子字段。
4.根据权利要求3所述的方法,其中设定所述转变成本涉及针对状态的分支转变和分支成本。
5.根据权利要求1所述的方法,其中由存储在存储器中的连续位置中的8位字段来表示所有状态的经规格化累积状态成本,使得每一32位存储器字含有与4个连续可能状态相关联的成本。
6.根据权利要求5所述的方法,其进一步包括使用每符号2个位的经打包结构来表示与每一潜在状态相关联的有效路径转变符号,其中所述有效路径转变符号在CPU存储器中经组织以使得每一相继地址保持表示用于对应于2个连续32位存储器位置中所表示的8个当前状态的0和1数据位的有效符号的状态转变符号。
7.根据权利要求1所述的方法,其进一步包含:
在CPU操作数循环的8个迭代中处理64个状态,其中每一迭代处理8个连续当前状态;
在一个32位核心寄存器中存储表示为循环不变量的相关联的状态符号解译成本;且
将用于所述循环的转变信息存储在第二寄存器中。
8.根据权利要求7所述的方法,其进一步包括通过改变存储在寄存器中的值,生成用于源和目的地状态成本位置的所需地址和相关联的转变信息。
9.一种用于解码经卷积编码的数据的设备,其包括:
用于将转变成本设定为位于范围0到M内的非负值的装置,其中M为在K个步长中获得的最大成本,其中K为所述经卷积编码的数据中的存储器位的数目;以及
用于每个累积路径成本分配N个位的装置,其中N满足(2^(K+1)*M)-1<2^N-1。
10.根据权利要求9所述的设备,其进一步包括用于针对符号对的4个可能解译的每一者计算一组成本且将这些成本打包为单个32位字的装置,所述字可被索引为4字节字段。
11.根据权利要求9所述的设备,其进一步包括用于利用一个CPU寄存器中的一对或一对以上2位字段来选择性地从至少另一寄存器存取一对或一对以上子字段的装置。
12.根据权利要求11所述的设备,其中设定所述转变成本涉及针对状态的分支转变和分支成本。
13.根据权利要求9所述的设备,其中进一步包括用于由存储在存储器中的连续位置中的8位字段来表示所有状态的经规格化累积状态成本,使得每一32位存储器字含有与4个连续可能状态相关联的成本的装置。
14.根据权利要求13所述的设备,其进一步用于包括使用每符号2个位的经打包结构来表示与每一潜在状态相关联的有效路径转变符号的装置,其中所述有效路径转变符号在CPU存储器中经组织以使得每一相继地址保持表示用于对应于2个连续32位存储器位置中所表示的8个当前状态的0和1数据位的有效符号的状态转变符号。
15.根据权利要求9所述的设备,其进一步包含:
用于在CPU操作数循环的8个迭代中处理64个状态的装置,其中每一迭代处理8个连续当前状态;
用于在一个32位核心寄存器中存储表示为循环不变量的相关联的状态符号解译成本的装置;且
用于将用在所述循环的转变信息存储在第二寄存器中的装置。
16.根据权利要求15所述的设备,其进一步包括用于通过改变存储在寄存器中的值,以生成用于源和目的地状态成本位置的所需地址和相关联的转变信息的装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410714995.8A CN104601181B (zh) | 2007-10-26 | 2008-10-27 | 优化的维特比解码器和全球导航卫星系统接收器 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP07119378.3 | 2007-10-26 | ||
EP07119378 | 2007-10-26 | ||
PCT/EP2008/064530 WO2009053490A2 (en) | 2007-10-26 | 2008-10-27 | Optimized viterbi decoder and gnss receiver |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410714995.8A Division CN104601181B (zh) | 2007-10-26 | 2008-10-27 | 优化的维特比解码器和全球导航卫星系统接收器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101889401A CN101889401A (zh) | 2010-11-17 |
CN101889401B true CN101889401B (zh) | 2014-12-31 |
Family
ID=40580136
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200880119377.1A Expired - Fee Related CN101889401B (zh) | 2007-10-26 | 2008-10-27 | 优化的维特比解码器和全球导航卫星系统接收器 |
CN201410714995.8A Expired - Fee Related CN104601181B (zh) | 2007-10-26 | 2008-10-27 | 优化的维特比解码器和全球导航卫星系统接收器 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410714995.8A Expired - Fee Related CN104601181B (zh) | 2007-10-26 | 2008-10-27 | 优化的维特比解码器和全球导航卫星系统接收器 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8621335B2 (zh) |
EP (1) | EP2220771A2 (zh) |
JP (2) | JP5502739B2 (zh) |
KR (5) | KR20130124413A (zh) |
CN (2) | CN101889401B (zh) |
WO (1) | WO2009053490A2 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8270405B2 (en) * | 2009-06-30 | 2012-09-18 | Intel Corporation | Multicast support on a switch for PCIe endpoint devices |
US8694878B2 (en) * | 2011-06-15 | 2014-04-08 | Texas Instruments Incorporated | Processor instructions to accelerate Viterbi decoding |
US9153990B2 (en) | 2012-11-30 | 2015-10-06 | Tesla Motors, Inc. | Steady state detection of an exceptional charge event in a series connected battery element |
US9529048B2 (en) | 2012-11-30 | 2016-12-27 | Tesla Motors, Inc. | Transient detection of an exceptional charge event in a series connected battery element |
CN109993272B (zh) * | 2017-12-29 | 2019-12-06 | 北京中科寒武纪科技有限公司 | 卷积及降采样运算单元、神经网络运算单元和现场可编程门阵列集成电路 |
GB202006748D0 (en) * | 2020-05-07 | 2020-06-24 | Qinetiq Ltd | Decoder for a receiver |
KR102418617B1 (ko) | 2020-10-13 | 2022-07-07 | 서울대학교산학협력단 | 염기 비율과 연속적 발생을 제한하는 dna 저장 부호화 방법, 프로그램 및 장치 |
CN115499093B (zh) * | 2022-08-01 | 2024-05-24 | 北京北方联星科技有限公司 | 一种基于fec编码的sbas信号非译码帧同步方法 |
CN117749199A (zh) * | 2024-02-20 | 2024-03-22 | 北京凯芯微科技有限公司 | 一种导航电文译码单元及方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6029267A (en) * | 1997-11-25 | 2000-02-22 | Lucent Technologies Inc. | Single-cycle, soft decision, compare-select operation using dual-add processor |
US6272188B1 (en) * | 1997-11-24 | 2001-08-07 | Agere Systems Guardian Corp. | Single-cycle accelerator for extremun state search |
CN1957533A (zh) * | 2004-05-27 | 2007-05-02 | 松下电器产业株式会社 | 维特比译码装置以及维特比译码方法 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09232973A (ja) * | 1996-02-28 | 1997-09-05 | Sony Corp | ビタビ復号器 |
WO1998018209A1 (fr) | 1996-10-24 | 1998-04-30 | Sony Corporation | Dispositif et appareil de decodage de viterbi |
DE69833780T2 (de) * | 1997-10-31 | 2006-08-17 | Cingular Wireless Ii Llc. | Maximal-wahrscheinlichkeitsdetektion von verketteten raum/zeit kodes für schnurlose anwendungen mit sender-diversity |
US5912908A (en) * | 1997-11-21 | 1999-06-15 | Lucent Technologies Inc. | Method of efficient branch metric computation for a Viterbi convolutional decoder |
JPH11196007A (ja) * | 1997-12-25 | 1999-07-21 | Matsushita Electric Ind Co Ltd | ビタビ復号器 |
US6256505B1 (en) * | 1998-05-28 | 2001-07-03 | Ericsson Lnc. | GSM transceiver unit equipped for time of arrival measurements |
JP3419680B2 (ja) | 1998-06-02 | 2003-06-23 | 三菱電機株式会社 | ビタビ復号装置 |
JP2001060881A (ja) | 1999-08-20 | 2001-03-06 | Fujitsu Ltd | パスメトリック正規化装置 |
US6560749B1 (en) * | 2000-01-28 | 2003-05-06 | Nec Electronics, Inc. | Apparatus and method for implementing a decoder for convolutionally encoded symbols |
DE10010238C2 (de) * | 2000-03-02 | 2003-12-18 | Infineon Technologies Ag | Verfahren zum Speichern von Pfadmetriken in einem Viterbi-Decodierer |
US6788750B1 (en) * | 2000-09-22 | 2004-09-07 | Tioga Technologies Inc. | Trellis-based decoder with state and path purging |
JP3984790B2 (ja) * | 2001-01-15 | 2007-10-03 | 日本電気株式会社 | ビタビ復号処理装置 |
US6633856B2 (en) * | 2001-06-15 | 2003-10-14 | Flarion Technologies, Inc. | Methods and apparatus for decoding LDPC codes |
US7661059B2 (en) | 2001-08-06 | 2010-02-09 | Analog Devices, Inc. | High performance turbo and Viterbi channel decoding in digital signal processors |
US7043682B1 (en) * | 2002-02-05 | 2006-05-09 | Arc International | Method and apparatus for implementing decode operations in a data processor |
JP2003258650A (ja) | 2002-03-06 | 2003-09-12 | Hitachi Kokusai Electric Inc | 最尤復号器 |
US7248637B2 (en) * | 2003-06-11 | 2007-07-24 | Advanced Micro Devices, Inc. | Viterbi decoder utilizing partial backtracing |
JP4530345B2 (ja) | 2004-07-22 | 2010-08-25 | 株式会社アドバンテスト | ビタビ復号装置、方法、プログラム、記録媒体 |
-
2008
- 2008-10-27 KR KR1020137028253A patent/KR20130124413A/ko not_active Application Discontinuation
- 2008-10-27 US US12/680,160 patent/US8621335B2/en not_active Expired - Fee Related
- 2008-10-27 KR KR1020117031504A patent/KR101129064B1/ko not_active IP Right Cessation
- 2008-10-27 EP EP08842947A patent/EP2220771A2/en not_active Withdrawn
- 2008-10-27 KR KR1020107011361A patent/KR20100085131A/ko not_active Application Discontinuation
- 2008-10-27 WO PCT/EP2008/064530 patent/WO2009053490A2/en active Application Filing
- 2008-10-27 CN CN200880119377.1A patent/CN101889401B/zh not_active Expired - Fee Related
- 2008-10-27 KR KR1020127024288A patent/KR101467467B1/ko not_active IP Right Cessation
- 2008-10-27 CN CN201410714995.8A patent/CN104601181B/zh not_active Expired - Fee Related
- 2008-10-27 KR KR1020117031502A patent/KR101127333B1/ko not_active IP Right Cessation
- 2008-10-27 JP JP2010530479A patent/JP5502739B2/ja not_active Expired - Fee Related
-
2013
- 2013-01-30 JP JP2013015211A patent/JP5694398B2/ja not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6272188B1 (en) * | 1997-11-24 | 2001-08-07 | Agere Systems Guardian Corp. | Single-cycle accelerator for extremun state search |
US6029267A (en) * | 1997-11-25 | 2000-02-22 | Lucent Technologies Inc. | Single-cycle, soft decision, compare-select operation using dual-add processor |
CN1957533A (zh) * | 2004-05-27 | 2007-05-02 | 松下电器产业株式会社 | 维特比译码装置以及维特比译码方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20120023143A (ko) | 2012-03-12 |
US8621335B2 (en) | 2013-12-31 |
KR101129064B1 (ko) | 2012-03-23 |
KR20120120448A (ko) | 2012-11-01 |
CN101889401A (zh) | 2010-11-17 |
JP2013138452A (ja) | 2013-07-11 |
WO2009053490A3 (en) | 2009-09-24 |
KR20100085131A (ko) | 2010-07-28 |
US20100299583A1 (en) | 2010-11-25 |
EP2220771A2 (en) | 2010-08-25 |
JP2011501596A (ja) | 2011-01-06 |
CN104601181A (zh) | 2015-05-06 |
JP5502739B2 (ja) | 2014-05-28 |
CN104601181B (zh) | 2017-12-22 |
KR20120014065A (ko) | 2012-02-15 |
JP5694398B2 (ja) | 2015-04-01 |
WO2009053490A2 (en) | 2009-04-30 |
KR101467467B1 (ko) | 2014-12-02 |
KR20130124413A (ko) | 2013-11-13 |
KR101127333B1 (ko) | 2012-03-29 |
WO2009053490A9 (en) | 2011-03-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101889401B (zh) | 优化的维特比解码器和全球导航卫星系统接收器 | |
KR101651911B1 (ko) | 수축 압축을 위한 고속의 고도로 압축된 lz77 토큰화 및 허프만 인코딩을 위한 병렬 장치 | |
US7962733B2 (en) | Branch prediction mechanisms using multiple hash functions | |
CN101878467B (zh) | 用于跨越指令高速缓冲存储器线的指令的预解码修复高速缓冲存储器 | |
US20030123579A1 (en) | Viterbi convolutional coding method and apparatus | |
US10162635B2 (en) | Confidence-driven selective predication of processor instructions | |
CN107810486B (zh) | 锁定用于原子地执行的指令组的操作数的值 | |
US7814302B2 (en) | Address calculation instruction within data processing systems | |
US10409599B2 (en) | Decoding information about a group of instructions including a size of the group of instructions | |
US7958437B2 (en) | MAP detector with a single state metric engine | |
EP2175363A1 (en) | Processor and method of decompressing instruction bundle | |
EP3314404B1 (en) | Processing header to interpret information regarding a group of instructions | |
US9021238B2 (en) | System for accessing a register file using an address retrieved from the register file | |
CN116069602B (zh) | 一种最坏情况执行时间分析方法和装置 | |
Ahmad et al. | Accelerating Viterbi Algorithm using Custom Instruction Approach | |
CN115562730A (zh) | 分支预测器、相关设备以及分支预测方法 | |
Lim | Separating instruction fetches from memory accesses: Ilar (instruction line associative registers) |
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: 20141231 Termination date: 20181027 |