具体实施方式
本发明能完成一种能包含一或多个多工子层数据单元(MUXPDU)的讯框,每一多工子层数据单元(MUXPDU)包含一开头(header)与一数据区块(data block)。
图1说明一典型多工子层数据单元(MUXPDU)类型5的讯框10。讯框10具有若干多工子层数据单元(MUXPDUs)12a-12n,最后的多工子层数据单元12n可以是一填充多工子层数据单元(fill MUXPDU)。为了要填满讯框10的最后未使用的位元,多工子层数据单元(MUXPDU)12n包含以“0”位元填满的一数据区块。讯框10能包含若干字符。于一实施例中,讯框10可以具有3840个位元且字符(字符)大小可以为16位元。然而,也可配合特定装置的设计准则来实施不同大小的字符。
本发明于硬件中处理多工子层数据单元(MUXPDU)的数据并且将开头与数据(或有效负载(payload))储存于不同的位址。可能的话,只有储存开头信息。避免数据处理大大地减少处理器的每秒几百万个指令(MIPS)与负担。本发明的多工子层数据单元(MUXPDU)处理器可以是弹性的且能被实施以处理一个以上的讯框。
参照图2,为根据本发明的一较佳实施例说明一电路100。电路100通常包含一处理器部分(或电路)102,一输入部分(或电路)104,与一输出部分(或电路)106。输入部分104可以当作一涡轮(Turbo)或维特比(Viterbi)译码器。输出部分(或电路)106可以是协同处理器(co-processor)。处理器部分102能有一输入110,此输入110从输入电路104接收一数据信号(例如DIN)。DIN信号通常包含一连串的字符,处理器部分102具有与输出电路106通讯的一输入/输出112。
处理器部分102通常包含一数据单元120、一控制单元122与一存储器124。数据单元120通常包含一暂存器130、一暂存器132、一多工器(MUX1)134、一区块(或电路)136、一多工器(MUX2)138与一暂存器140。暂存器130与暂存器132可以是16位元暂存器。然而,可以使用其它宽度的位元以符合特别装置的设计准则。暂存器130通常接收输入信号DIN。暂存器130的一输出包含16位元的信号DIN,且此输出通常连接至暂存器132的一输入与多工器134的一第一输入。多工器134一般接收暂存器130的8个最高有效位元。区块136可以是格式化元件(formatter)(或转换电路)。格式化元件136可以用来从16位元字符转换至32位元字符。暂存器132具有一输出,此输出通常连接至多工器134的一第二输入且通常以16位元的信号DIN表示。暂存器130与132提供特定位元的信号DIN给多工器134,多工器134选择位元(例如从暂存器132来的位元,或是从暂存器130与132来的交错位元)提供给格式化元件136。多工器134可以接收从控制单元122来的一或多位元的控制信号(例如CTR)。如图2所示,可经由连接不同元件的一总线(bus)来提供控制信号CTR。多工器134通常经由转换电路136连接多工器138。图5所示为一多工器138的详细附图。多工器138也接收从控制单元122来的控制信号CTR。多工器138具有一输出连接至暂存器140,暂存器140也接收一或多位元的控制信号CTR。
控制单元122通常包含一暂存区块(或电路)150、一主要控制单元152、一计数器区块(Counter)154、一暂存器区块(或电路)156以及一定时器区块(或电路,Timer)158。主要控制单元152针对来自输入电路104、数据单元120、暂存器150、计数器154、暂存器156以及定时器158的信号提供一控制信号CTR。执行控制信号CTR时可包含一或多个控制位元以及/或一或多个中断信号。
电路102可以是多工子层数据单元(MUltiplex Sublayer Data Unit,MUXPDU)处理器,其用以(1)处理多工子层数据单元(MUXPDU)数据以及(2)储存处理后的数据在存储器124中。于一实施例中,来自译码器的字符可以是16位元字符,存储器124可以以32位元字符来储存数据。利用如此的一个例子,暂存器130以及132可用来储存16位元字符,然而,可以变化特别位元宽度的字符以符合特定装置的设计准则。
电路104(例如一维特比译码器(Viterbi Decoder)、一涡轮译码器或其它类型的译码器)一般提供数据字符。于接收一中断信号(例如CTR控制信号的位元之一)之后,电路106一般会读取处理过的多工子层数据单元(MUXPDU)数据。利用如此的一个例子,一或二个讯框通常于中断之间进行处理,在另一实施例中,更多的讯框(例如N讯框)可于中断之间进行处理。
电路124通常包含一存储器与一记忆介面逻辑电路用以储存处理过的多工子层数据单元(MUXPDU)数据。二记忆库(详细如图6所示)可以允许较多的时间给协同处理器106去读取处理过的数据。举例来说,当写入一记忆库时,同时读取另一记忆库。
暂存器130与132可用以储存从译码器104接收的二个连续字符。多工器134及138与格式化元件136可用以移位数据字符,如此于可撷取出确定位元并储存于暂存器140中。因为译码器104可以提供16位元字符,所以为了组合一32位元字符,可能需要高达三个字符。举例来说,可以使用从第一字符来的8位元、从第二字符来的16位元以及从第三字符来的8位元。当于暂存器140中准备好一32位元字符时,字符被储存至存储器124中。
暂存器区块156包含一些控制暂存器,暂存器区块156的控制暂存器可用以配置主要控制单元152。在讯框中可被配置的参数包含多工子层数据单元(MUXPDU)类型、讯框大小、多工子层数据单元(MUXPDU)数据区块数目等等。暂存器区块150中一或多个的暂存器可用以储存于多工子层数据单元处理期间需要的暂时信息,例如多工子层数据单元开头(MUXPDU header)。如此的暂时信息可能只包含于多工子层数据单元数据区块的第一字符中。计数器区块154包含一或多个计数器。计数器区块的计数器可用以计算接收到的位元数目、处理后的多工子层数据单元的数目以及储存于存储器中的多工子层数据单元的数目等等。
控制单元122可以处理二个讯框并且在当时通过产生一中断信号(例如CTR信号的位元之一)来通知协同处理器106数据已经准备好。控制单元122应等待第二个讯框的时间可以由程序化定时器158来设定。若定时器158达到0时,控制单元122提供信号INTERRUPT给协同处理器106,指示协同处理器106应从存储器124读取单一讯框的处理过的数据。主要控制单元152包含二个有限状态机(详细如图7、图8所示)以提供不同位元的控制信号CTR给数据单元120(与于控制单元122中的元件)。
多工子层数据单元数据包含可以具有一些字段的一开头与一数据区块。多工子层数据单元处理器100一般将开头字段储存于跟随数据区块之后的分离位址中。处理器100可以使用若干第一位址去储存信息字符。信息字符包含总体信息字符(global information words),其内包含对协同处理器106有用的参数与数据。于如此的一实施中,一般分派二个位址,每一讯框都有一个位址。然而,若提供超过二个讯框的处理及/或协同处理器106需要更多的数据时,可以分派额外的位址去储存较多的信息。
参照图3,为说明存储器124的一示意图。图标的配置用以储存一或二个讯框的多工子层数据单元数据。于一例子中,可以依下列的顺序将数据储存于存储器124中(但是也可使用其它格式)。第一位址可以包含有关第一讯框的信息。第一位址包含(1)第一讯框储存于存储器124的多工子层数据单元的数目、(2)讯框循环冗余校验信息(CRC information)及(3)其它信息,例如控制暂存器150以及/或156的一或多个位元。所示的第一位址具有32数据位元(例如[31:0])。数据位元D[5:0]可以指示第一讯框储存在存储器124的多工子层数据单元的数目。如本例所示,分派6位元给第一讯框。然而,可以改变位元的数目以配合特定装置的设计准则。数据位元D[29:6]可用来储存其它信息,例如可用来控制协同处理器106的控制暂存器150以及/或156的确定位元。数据位元D[30]可储存第一讯框的循环冗余校验信息(CRC information)(例如0=讯框循环冗余校验失败,1=讯框循环冗余校验通过)以利统计或其它目的之用。数据位元D[31]可以为第一位址中不使用的一保留位元(例如0)。
第二位址可以储存有关第二讯框的信息。若于中断之间处理二讯框时,一般是使用第二位址。所示的第二位址具有32数据位元(例如[31:0]),第二位址可以(1)包含二讯框储存于存储器中的多工子层数据单元的数目、(2)第二讯框的循环冗余校验信息(CRC information)、(3)已处理过的讯框的数目以及(4)其它信息,例如从控制暂存区块150以及/或156来的一或多个位元。
数据位元D[5:0]可以表示二讯框于存储器124中所储存的多工子层数据单元的数目,于本例中所示,分派6位元表示第一与第二讯框。然而,可以改变特定数目的位元以配合特定装置的设计准则。数据位元D[29:6]可以用来储存可用以控制协同处理器106的信息,例如控制暂存器区块150以及/或156的确定位元。数据位元D[30]可以储存第二讯框的循环冗余校验信息(例如0=讯框循环冗余校验失败,1=讯框循环冗余校验通过)。数据位元D[31]可以表示于存储器124中所储存的讯框数目(例如0=一个讯框,1=二个讯框)。
额外位址包含多工子层数据单元数据。于本例中所讨论的译码器104通常提供一连串的字符(例如16位元字符)。数据单元120于每一位址中储存二个字符(即4位元组)。于每一多工子层数据单元区块中,第一位址包含开头。一般而言,开头使用6位元且没有使用到的位元填入0。第二位址包含数据的长度。根据多工子层数据单元的类型来改变用于储存长度的位元数目。在一典型的实施例中,是使用8位元或16位元。若多工子层数据单元没有一字长字段的话,不需要使用第二位址,在这种情况下,数据是不用管理的“don’t_care”(例如协同处理器106不读取位址)。
第三位址可包含一10位元延伸开头或2位元无线电通信连接协议(Radio Link Protocol,RLP)讯框类型。2位元无线电通信连接协议(RLP)数据可通过其它装置(例如一系统芯片)所使用的一交付协议(delivery protocol)来实现(例如芯片上的系统)。未使用的位元填入0,若多工子层数据单元数据没有一延伸的开头字段,就不需要使用第三位址。在这种情况下,数据是不用管理的“don’t_care”(例如协同处理器106不读取位址)。下一个位址包含一32位元数据字符,最后位址则可以少于32位元,剩余的字符被当作不用管理的“don’t_care”型态。
图4所示为一时序图,说明从译码器104接收而来的信号。信号DIN表示分成一连串的字符的数据。信号VALID_WD可以是一脉冲,其用以指示一新数据字符何时准备好。在每一应用中,于信号VALID_WD的脉冲之间的时脉的周期数目可以相异。讯框信号的开始(例如SOF)可以是一脉冲,其用以指示一讯框的开始。讯框结束信号(EOF或LAST_WD)可以用以指示最后的有效字符或讯框结束。信号FRAME_CRC可以用以指示从译码器接收的讯框循环冗余校验(frame CRC)。
图5为一具有不同元件大小的数据单元120的一详细附图。所示的数据单元120包含二个16位元暂存器130与132、一格式化元件136(formater)、一32位元暂存器140以及多工器134与138。二个16位元暂存器130与及132储存从译码器104接收的最后二个连续字符,如实施例中所描述,开头从字符(即15位元)的最高有效位元(MSB)开始。若开头从最低有效字符(LSB)开始时可能需要些许修正。对齐开头的位元组且一般从位元15或位元8开始。
多工器MUX1134提供16位元字符给格式化元件136(formater)。在每一多工子层数据单元的开始时,信号SEL1(CTR控制信号之一)是确立(asserted)或是未确立(deasserted)的。于一特定的多工子层数据单元处理期间,信号SEL1保持在相同的极性。若多工子层数据单元的开头从位元8开始,信号SEL1是确立的且多工子层数据单元开头的第一位元位于位元15。控制单元122根据讯框大小以及多工子层数据单元大小提供信号SEL1。控制单元122使用计数器区块154去侦测一开头是否从位元15或位元8开始。根据上述,计数器区块154也用来设定信号SEL1。
多工器MUX2 138以及格式化元件136(例如一转换电路137)可撷取一或多位元的字符。转换电路137于写入暂存器140之前可以将数据移位至32位元字中的一所需位置。没有使用的位元填入0。控制单元122通常根据已处理过的字段提供控制信号SEL2(例如一4位元信号)。于使用16位元的字符的实施例中,为了达到图3所示的结构可使用11种组合,如下列表一所示:
表一
多工子层数据单元输入 |
用途 |
0 |
移位数据(二位元组)至最高有效位置(第三与第四) |
1 |
移位开头至位元5:0 |
2 |
移位无线电通信连接协议(RLP)讯框类型至位元1:0 |
3 |
移位数据(一位元组)至最低有效位元组 |
4 |
移位数据(二位元组)至第二与第三位置 |
5 |
移位数据(一位元组至最高有效位元组(第四位元组)) |
6 |
移位8位元字长字段至第一位元组 |
7 |
当追踪一字长字段时,移位无线电通信连接协议(RLP)讯框类型至位元1:0 |
8 |
移位数据(二位元组)至第一与第二位置 |
9 |
移位一16位元字长字段的10个最高有效位元 |
10 |
移位延伸开头 |
然而,可以改变特别数目的组合以及于每一组合中位元的特别次序以符合特定装置的设计准则。表一所示为处理多工子层数据单元类型为3与5个讯框的例子,不同的修正也可用来处理其它类型的多工子层数据单元。
暂存器140可以分为若干部分,每一部分具有一单一独立位元的致能信号(例如REGWE[4:0])。控制单元122提供信号REGWE[4:0]且可以用来组合32位元字符。因为译码器104可以提供16位元字符,所以为了组合成一32位元字符时,于暂存器140中储存高达三个不同的16位元字符的位元。当32位元字符于暂存器140准备好时就写入存储器124中。
图6所示是一存储器与一存储器介面逻辑区块124的详细附图。区块124通常包含一逻辑部分158与一存储器160。存储器160可以是二个记忆库(例如BANK#0与BANK#1)。逻辑部分158可以用以控制来回地读取与写入至记忆库BANK#0与BANK#1中。记忆库BANK#0与BANK#1可以是同步的一端口存储器(synchronous one-port memories)。然而可以改变特别的存储器类型与记忆库的特定数目以符合特定的设计准则。使用二个记忆库160可允许协同处理器106有较多的时间去读取处理过的数据。当一记忆库被写入时,另一记忆库则被读取。信号BNKOWR选择记忆库BANK#0与BANK#1中何者进行被读取且何者进行被写入。
信号INCCNT可以规则地递增计数器162以表示到下一位址。信号RSTCNT可以重新设定计数器162至初始值(例如位址2因为位址0与1是信息字符,所以从位址2开始储存数据)。信号ADDRESS0表示存储器160的第一位址。信号ADDRESS1表示存储器160的第二位址。本发明是于处理一讯框之后指出ADDRESS0或ADDRESS1,如此可以写入一信息字符。信号SEL_ADDR选择信号ADDRESS0、信号ADDRESS1或计数器162的输出以表示数据正在写入至下一位址。信号CP_RD可以是一协同处理器读取致能信号。信号CP_MP_SEL可以是一协同处理器模块选择(例如协同处理器可从数个模块中读取,这里的每一模块都有一致能信号)。当信号CP_RD与信号CP_MP_SEL是主动的,协同处理器106从存储器160读取。信号CP_RD与信号CP_MP_SEL通常致能存储器160的记忆库之一。信号HW_ADDR可以是多工器163的输出,其用以于信号ADDRESS0、信号ADDRESS1和计数器162的输出之间选择。信号ADDR01可以是存储器160的一写入操作的一致能信号。存储器160通常通过信号MEMWE或信号ADDR01的激活(activation)而产生主动。当于ADDRESS0或ADDRESS1发生一写入动作时,信号ADDR01是主动的。在某些应用中,可以不需要信号ADDR01。
32位元暂存器140可用以于写入存储器160之前组合数据。为了在不改变其它位元的情形下能够将位元的单一部份储存于一确定位置,暂存器140通常具有5个字段。当一32位元字符于暂存器140中已准备好时,则于存储器160中写入字符。由计数器162产生一位址。当写入一讯框(或字符)时,迫使位址可以是位址0(例如ADDRESS0)或位址1(例如ADDRESS1)。于此情形中,储存的数据是多工子层数据单元计数器的内容(例如计数器区块154的部分)、暂存器150与/或156的一部份或全部以及讯框循环冗余校验信息。
一或多个其它栅极(例如164、166、168与170)产生一写入致能信号WE与一记忆致能信号ME。当一记忆库是满的时候,多工子层数据单元模块产生一中断给协同处理器106,协同处理器106可从选择的记忆库去读取数据,没有选到的记忆库则充满新的数据。
控制单元122通常提供控制信号给数据单元120、存储器区块124以及协同处理器106。控制单元122包含一或多个有限状态机(FSM)、计数器区块154、暂存器区块156、暂存器区块150以及一定时器区块158。主要控制单元152包含可控制需要处理的讯框的数目的一个第一状态机(详细如图7所示)。通常,若讯框是短的时候(例如5毫秒讯框),为了减少提供给协同处理器106的中断数目,则处理超过一个讯框。当讯框是长的时候(例如20毫秒讯框),控制单元122可用以处理一个讯框以及提供一中断。于此实施中,协同处理器106可用以处理一或二个讯框。除了上述,也可修改本发明以支持N讯框的处理。
当确立来自译码器104的讯框信号SOF开始时,多工子层数据单元处理器102通过呼叫一第二有限状态机(详细如图8所示)开始处理一讯框。于处理第一讯框之后写入第一讯框信息字符。根据控制暂存器区块156,多工子层数据单元处理器102可在确立中断信号之后进入一闲置(idle)状态,或是等待讯框信号SOF的一个第二开始以及处理一第二讯框。于处理第二讯框之后写入第二讯框信息字符。
在与处理器102通信时,从译码器104送出的讯框数目可以是一奇数。当处理于中断之间的二个讯框时,一般在结束时处理单一讯框。在发起阶段(initialization phase),协同处理器106可程序化定时器区块158。于处理第一讯框之后,致能定时器158。若在从译码器104接收讯框信号SOF的开始之前定时器158就达到0,控制单元122写入一信息字符,此信息字符表示在存储器160中只有一个讯框,并且控制单元122提供一中断给协同处理器106以表示于存储器160中只有一个讯框。
图7所示为第一有限状态机200的流程图。有限状态机200可用来处理高达二个的讯框。有限状态机200可以一种方法或程序200来加以实施。方法200通常包含一第一状态202、一判定状态204、一状态206、一判定状态208、一状态210、一判定状态212、一状态214、一判定状态216、一判定状态218、一状态220、一判定状态222、一状态224、一状态226以及一状态228。状态202可以是一开始(START)状态。判定状态204可以决定是否出现讯框的开始。若出现讯框的开始(SOF),方法200移至状态206,若无,方法200持续去检查讯框的开始(SOF)。接着,状态206通过呼叫一第二有限状态机(详细如图8所示)以处理一讯框。再来,判定状态208决定从状态206来的处理是否已经完成。若有,方法200移至状态210,那里储存信息在一ADDRESS0位址,若处理还未完成,判定状态208持续去决定处理是否已完成。
接着,判定状态212决定是否应该处理第二讯框,若有,方法200移至状态214,若无,方法200移至状态226。接着,状态214致能一定时器。接着,状态216决定定时器是否有一数值等于0,若有,方法200移至状态224,若无,方法200移至判定状态218。判定状态218决定是否出现讯框的开始(SOF)。若无,方法200移至状态216。若出现讯框的开始,则方法200移至状态220。状态220通过呼叫一第二状态机(详细如图8所示)以处理一个讯框。判定状态222决定程序是否已经完成。若无,判定状态222持续去检查处理的状态。若程序已经完成,方法200移至状态224,且状态224储存信息于一ADDRESS1位址。接着,方法200移至出现一中断的处的状态226。最后,方法200于结束状态228结束。
图8所示为说明一第二有限状态机的方法300的一示意图。有限状态机300可以用来处理一讯框。方法300通常包含一状态302、一判定状态304、一判定状态306、一状态308、一状态310、一判定状态312、一状态314、一状态316、一判定状态318、一状态320、一状态322、一判定状态324以及一状态326。状态308、状态310、判定状态312以及状态314在一起可视为一第三有限状态机330。状态机330可用来处理多工子层数据单元数据。状态302通常开始程序300。判定状态304检查是否是一有效字符,若无有效字符,判定状态304持续去检查是否是一有效字符。若出现有效字符,方法300移至状态306。因为数据单元120储存二个连续字符,状态306亦决定是否出现有效字符。若无,方法300持续通过重复状态306去检查是否有一有效字符。若出现有效字符,方法300移至状态308。状态308可进行一撷取与储存的计算。状态308撷取并储存一开头,一封包的长度以及/或延伸的开头或无线电通信连接协议(RLP)讯框类型。接着,状态310储存数据。接着,状态312决定多工子层数据单元数据处理是否已经完成。若无,方法300移至状态314,其每次增加一至位址计数器且移回状态310。若程序已经完成,方法300移至状态316,状态316增加多工子层数据单元计数器。接着,状态318决定讯框处理是否已经完成。若有,方法300移至状态326,并于那里结束处理。若无,方法300移至状态320,用以增加位址计数器。接着,方法300移至状态322,以更新控制信号。接着,判定状态324决定开头是否在暂存器WD1,若有,方法300移至状态306,若无,方法300移至状态308且重复多工子层数据单元的处理。
主要控制单元152包含一状态机以处理一讯框(例如图8的第二状态机)。主要控制单元152呼叫一状态机以利用状态机300处理多工子层数据单元。从译码器104接收到二个字符之后开始讯框的处理。处理于讯框中的每一多工子层数据单元直到讯框结束信号EOF确立。于每一多工子层数据单元的结束时,多工子层数据单元计数器154将每次增加并且主要控制单元152更新控制信号CTR。若下一多工子层数据单元的下一开头已经于第二16位元暂存器132中,则会立即处理多工子层数据单元数据。否则,多工子层数据单元处理器102将等待从译码器104来的一新字符。
主要控制单元152包含一状态机用以处理一多工子层数据单元。根据图3的结构,状态机储存开头、字长(若一存在)与延伸的开头或无线电通信连接协议(RLP)讯框类型栏(若一存在)在不同的位址。根据开头,状态机提供控制信号给多工器MUX2以从16位元字符撷取位元。状态机亦提供致能信号给32位元暂存器以储存一些位元于一或多个暂存器的部分中。
图7与图8中的流程图所达到的功能,熟悉本领域技术人员依据本发明的内容,可使用一传统通用数字计算机程序来实施。根据本发明所揭露的技术,有经验的程序员可准备适当的软件程序撰写,也如同熟悉本领域技术人员一样,其实施的效果也是显而易见的。
本发明的实施可通过专用的集成电路(ASICs)、现场可编程门阵列(FPGAs)或相互连接的传统元件电路的适当网络,如上所述,熟悉此项技艺者可针对上述元件进行修饰是显而易见的。
本发明也包含一计算机产品,例如是包含指令用来程序计算机去执行处理的一储存媒体。储存媒体包含任何类型的盘片,例如软磁盘(floppy disk)、光盘(optical disk)、光盘只读存储器(CD-ROM)、磁性光盘(magneto-optical disks)、只读存储器(ROMs)、随机存取存储器(RAMs)、可擦去可编程只读存储器(EPROMs)、电可擦可编程只读存储器(EEPROMs)、按区段擦除存储器(flash memory)、磁或光卡(magnetic or optical cards)或任何类型适合储存电子指令的媒体,但不限于此。
本发明的不同信号通常是“开”(例如一数字高或1)或“关”(例如一数字低或0)。然而,信号的开(例如确立)与关(例如不确立)状态的特别极性可配合特别装置的设计准则而调整。此外,可加入反相器去改变信号的特别极性。
本发明可使用在码分多重存取(Code Division Multiple Access,CDMA)芯片组(chipset)的部分上,本发明除了对于码分多重存取的设计上是非常有用之外,本发明还可应用在其它的设计上。
以上所述仅为本发明的较佳实施例而已,并非用以限定本发明的申请专利范围;凡其它未脱离本发明所揭示的精神下所完成的等效改变或修饰,均应包含在所述的权利要求范围内。