最大后验概率(MAP)解码器的管线架构 【技术领域】
本发明是有关于处理误差侦测及校正算法的领域。特别是,本发明是有关于一种有效率的管线架构,用以处理最大后验概率(MAP)算法。
背景技术
部分误差校正算法,诸如:turbo解码器(Turbo Decoder)算法,是使用最大后验概率(MAP)算法的变动,用以从一已遭噪声破坏的编码位序列中回复一信息位序列。此最大后验概率(MAP)算法所需计算的递归(recursie)特性是使此种实施方式非常昂贵。
举例来说,图1是介绍此最大后验概率(MAP)算法所输出的序列为一组前向量度法(Aforward@ metrics),以及一组后向量度法(Abackward@metrics)。然而,各个前向量度法.(k)是前一个前向量度法.(k-1)的一函数,且各个反向量度法.(k-1)是下一个反向量度法.(k)的一函数。如图1的时间轴(timeline)图标所介绍,实施此算法的一架构是需要一缓冲区,其容量足够大以保留所有前向量度法亦或所有反向量度法,用以在计算输出时保留另一组量度法,此设计是得到一解码器,其时延是正比于需解码方块的约两倍大小。
在减少此最大后验概率(MAP)算法所需缓冲区的努力中,此最大后验概率(MAP)算法的一种调整版本,其称作滑动窗口(sliding windows)算法,便被发展出来。通过在这些反向量度法计算中进行一小近似,此滑动窗口(sliding windows)算法便可以降低所需量度法缓冲区的大小。此方法的实施是将接收序列分割为窗口,然后再针对各个窗口进行处理。
图2是介绍当数据被分割成两个窗口时,滑动窗口计算如何执行的一时间轴(timeline)。此尾端(tail)及此学习大小(learn size)的长度,相较于欲处理数据的数量,通常是非常小。明显地,只要此窗口大小相于此学习窗口(learning windows)大小是相对较大,则通过此解码器的时延便不会大幅地增加、且保留前向量度所需的缓冲区大小亦可以大幅减少。
因此,本发明的一个目地是减少实施此类算法所关连的时延及成本。
【发明内容】
在本发明的管线式最大后验概率(MAP)解码器架构中,此滑动窗口算法是予调整,用以减少处理时间。一旦计算得到第一窗口的前向量度后,各个窗口的反向量度是在计算下一个窗口的前向量度时加以计算。当每个新前向量度是加以计算并储存于内存中时,前一个窗口的前向量度是由内存中读取,用以能够计算新反向量度。前一个窗口的各个前向量度是在公共时钟沿时从内存中读取,用以使下一个窗口的新前向量度得以写入相同的内存位置。通过如此地自内存中读取前向量度及写入前向量度至内存中,此前向量度缓冲区大小并不需要增加。这些管线式计算亦可以执行,若数据是分割为两个窗口。虽然本架构是发展于一turbo解码器(Turbo Decoder)中,使用此最大后验概率(MAP)算法的一版本的任何解码器亦可以使用此架构。此管线式滑动窗口架构是减少处理时间。此标准滑动窗口架构是需要运行于一大幅提高的时钟速率,用以达到相同的通量。
【附图说明】
本发明将配合所附图式说明如下,其中,类似标号是用以表示类似组件,并且:
图1是一先前技术误差校正算法架构的一时间轴的一范例;
图2是一先前技术误差校正算法架构的一时间轴的一第二范例,其中,前向及反向量度是利用滑动窗口以计算得到;
图3是一turbo解码器(turbo decoder)的一方块图,其中,这些前向及反向量度的计算是加以反向;以及
图4是本发明误差校正架构的一时间轴。
【具体实施方式】
本发明的图3是一turbo解码器(turbo decoder)的一方块图,其中,本发明的管线式解码器架构是可以常驻其中。在本发明的管线式最大后验概率(MAP)解码器架构中,此滑动窗口算法是予调整,用以减少处理时间。图4是介绍利用本发明完成的时间轴。一旦计算得到第一窗口的前向量度时,各个窗口的反向量度是在计算下一个窗口的前向量度时加以计算。当每个新前向量度是加以计算并储存于内存时,前一个窗口的前向量度是由内存中读取,用以能够计算新反向量度。各个前向量度是在公共时钟沿时由内存中读取,用以将新前向量度写入相同内存位置。通过如此地自内存中读取前向量度及写入前向量度至内存中,此前向量度缓冲区的大小便可以不需增加。
图3是表示一turbo解码器(turbo decoder)一实施例的一方块图,其是结合本发明的原理及技术。
此turbo解码器(turbo decoder)10是接收一传送装置的数据,诸如:举例来说,将各个数据位(A1@或A0@)转换为三个位(亦即:一数据或系统位(s)、一第一奇偶校验位(p1)、以及一第二奇偶校验位(p2))的一基站。这些数据(s、p1、p2)是施加于一缓存器12,其亦接收由一外来内存14读取的外来数据(将于下文中更详细地说明)、及由一交错地址缓存器16得到的一地址。内存缓存器12是如此启始地接收及储存这些数据(s、p1、p2)、在传输线14a出现的外来数据、及在传输线16a出现、外来数据设置的一地址。此地址是于整体计算中伴随这些数据(s、p1、p2),其目的将于下文中更详细地说明。
这些数据(s、p1、p2)是由缓存器12转移至伽玛.()计算器18、并进一步储存于本地内存20中。
如turbo解码器(turbo decoder)中所习知,三个数量阿法.()、贝塔.()、及伽玛.()是加以定义。对于某个特定状态及某个特定时间步骤而言,是具有一数值以定义编码器在此特定时间步骤、此状态时的机率。阿法是递归地开始于时间k=1并沿着时间前向移动以推导得到。此数值阿法.()是类似于伽玛.(),但却是沿着时间后向进行。伽玛.()是定义为此编码器由某给定时间移动至在下一个后续时间递增某允许状态的变迁机率。根据伽玛.()所表示的状态变迁机率,在一交织中所有状态的阿法.()是可以加以计算。在阶段18所执行的伽玛.()计算是储存于缓存器22中。计算阶段24及26是分别计算各个阿法、并这些阿法计算正规化。各个阿法.()数值是根据来自缓存器22的输入以及在输入24b所提供的先前计算阿法数值而加以计算、并经由多任务器28及缓存器30而由计算阶段26输出,其是保留八个计算数值。缓存器30的输出是耦合于阿法内存32的输入,其是储存第一计算阿法数值于第一内存位置23a、并且亦提供计算得到的阿法数值至输入24b。
为启始化此计算,并且,在此启始状态开始,八个启始阿法量度是设定为某个启始数值,其是施加于多任务器28的启始化输入28a以致能计算阶段24及26,用以计算阿法的八个数值。如上文中所述,这些数据(s、p1、p2)是储存于本地内存20中。
启始地,所有阿法数值是加以计算,据此,贝塔数值是应用由本地内存20以反向顺序(亦即:后进先出顺序(Alast-in,first-out@))读取的这些数据(s、p1、p2)而加以计算,用以执行贝塔后向递归方程式所需要的计算。当本地内存20中最后读取的这些数据(s、p1、p2)被读取至缓存器34时,其不仅仅包括这些数据(s、p1、p2)、亦包括外来数值(其在启始阶段操作中是零)及表示内存位置的数据(其中,启始外来数值是位于外来内存14中)。这些数据(s、p1、p2)及外来数据是于伽玛计算阶段36进行计算。此伽玛计算阶段36的输出是施加于伽玛缓存器38及40。这些贝塔计算是分别由贝塔计算阶段44及贝塔正规化阶段46加以执行。启始地,二进制一(A1@)的一开始条件是施加于多任务器42的输入42a。此正规化贝塔计算是经由输出缓存器48而启始地施加于外来数值计算阶段50,其进一步将最后计算得到的输入施加于多任务器42的输入42b。外来数值计算阶段50是通过检查在输入58接收缓存器52的阿法数值、在输入50b接收缓存器38的伽玛数值、及在输入50c接收缓存器48的贝塔输出,用以计算各个时间状态k的一外来数值。缓存器48、52、38是提供以确认在此外来数值计算阶段50的信号的时间注册。
第一数值外来计算阶段50所计算的中间数值是施加于缓存器54,其是将其内容转移至外来数值计算的第二阶段56。
如上文中所述,缓存器34是将其内容转移至缓存器58,其接下来再将其内容转移至缓存器60,缓存器60的内容是由第二外部数值计算阶段56的输出所出现的外来数值中减去,此减法阶段是执行于减法电路62。
在阶段56得到的外来数值是进一步施加于一软进硬出(SIHO)电路64,其包括:一二进制状态决定电路66,用以接收第二外来计算阶段56的输出。此软进硬出(SIHO)64中电路66的操作是进一步说明如下。
在差电路62的差输出是施加于缓存器68,其施加此外来数值计算至外来内存14b的传输线14b。如上文中所述,本地内存20,除了储存数据、奇偶校验、及外来数值以外,更储存外来内存14的第一外来数值地址,此地址是成功地经由内存缓存器34及时间同步缓存器70、72、74耦合,用以提供外来内存14中储存外来数值计算的位置,此内存地址数据是施加于外来内存14的传输线14c。
如上文中所述,其参考图2所示的范例,决定阿法的一半计算是在第一时间窗口k/2期间执行。
反向量度.()的计算是于此第一窗口的后半(k/2)期间执行。阿法数值是由阿法内存32中、以其储存的反向顺序读取。在图3的实施例中,在窗口2前向量度期间计算的阿法数值(参照图4)是同时储存于在窗口1期间计算的阿法数值被读取(用以计算外来数值)的内存地址,用以减少一半内存容量。值得注意的是,新计算的阿法数值,相对于第一窗口期间计算的阿法数值,是以反向顺序储存。
在各个后续配对的窗口计算中,执行计算的数目是计算外来数值所要迭代数目的一函数,在阿法内存32中读取及写入阿法数值的顺序是加以反向,用以使得:当先前计算的阿法数值(其是以由最后内存地址至第一内存地址的顺序储存)被读取时,阿法数值是以反向顺序(由第一内存地址至最后内存地址)被读取、且这些阿法数值是决定于前向量度第二迭代的窗口2中,在计算阶段24/26计算的新数值是被读取至先前阿法数值被读取的地址。
如上文中所述,当计算完一外来数值时(亦即:当第一迭代完成时),此外来数值是由外来内存14中读取、并且用于下一个迭代的计算期间。习知控制电路,为简化目的而未予图标,是决定欲执行迭代的数目。
如上文中所述,当决定各个外来数值时,其是施加于电路66以利用振幅检查决定此数据位是一个A1@或A0@,并且,当超过一特定临界数值时决定为一个A1@,及当低于一特定临界数值时决定为一个A0@。此建立数值是施加于缓存器76并与外来数值内存地址合并,其是由缓存器74导出并施加于合并电路78。此输出位是写入一内存84。此软进硬出(SIHO)电路64是将各个位写入一内存位置,其中,每一列的宽度是十六位。此合并电路多任务器78、多任务器电路80、及输出内存读取缓存器82是操作以通过储存二进制状态决定电路66估计的十六个数据位,进而利用各内存位置的所有十六个位。
虽然图3的实施例是教导一种实施方式,其中,阿法是在第一窗口期间计算、且贝塔是在第一窗口的后半部期间计算,熟习此技艺者当了解,阿法及贝塔计算亦可以加以反向,如第五图所示,其仍然可以具有图1所示实施例的所有好处(亦即:大幅减少计算时间、并在图3turbo解码器(turbo decoder)中减少50%的内存需求,相较于现今的技术及装置)。本发明的架构亦可以进一步缩减内存大小。举例来说,数据是可以使用三个窗口、四个窗口、...加以处理,其可以进一步缩减内存大小。举例来说,使用四个窗口是可以导致一内存大小,其是三倍于没有应用窗口处理的内存大小。
图4亦介绍这些管线式计算是如何执行的,若数据是分割为两个窗口时。忽略学习窗口的大小及尾端位的数目,经由此范例中管线滑动窗口解码器的时延是正比于12K,相对于简单滑动窗口架构中的2K。时延是可以根据需要处理的数据数量,通过改变窗口大小、窗口数目、及学习大小而减少。
虽然上述架构是发展于一turbo解码器(turbo decoder),然而,所有卷积编码亦可以使用一最大后验概率(MAP)解码器。前向量度的计算是可以在反向量度的前或的后计算。此反向量度是可以预先计算,且随后,前向量度是可以在执行输出计算时加以计算。此是可以利用,举例来说,图3A的实施例加以完成,其中,计算方块241是一贝塔计算器;计算方块24是一贝塔正规化计算方块;内存321是一贝塔内存;计算方块441是一阿法计算方块;且计算方块461是一阿法正规化计算方块。
图3A实施例的其它操作是大体上与图3实施例相同。