專利名稱:可編程變長比特流處理器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及加速音頻、視頻、圖像等多媒體和網(wǎng)絡(luò)通信的比特流(BITSTREAM)打包或解包處理的電路和技術(shù),尤其涉及可編程變長比特流處理器。
背景技術(shù):
隨著多媒體技術(shù)和網(wǎng)絡(luò)通信技術(shù)的發(fā)展,執(zhí)行打包和解包可變長比特流數(shù)據(jù)的任務(wù)非常普遍,而且對實(shí)時(shí)操作的要求越來越高。但通常在打包可變長比特流數(shù)據(jù)時(shí),需要將某一數(shù)值生成可變長比特流數(shù)據(jù),需要大量的移位和比特拼接操作;在解包可變長比特流數(shù)據(jù)時(shí),只有已知了前一個(gè)數(shù)據(jù)的長度和語義,才可能對可變長比特流數(shù)據(jù)中的下一個(gè)數(shù)據(jù)進(jìn)行處理。因此,這種比特位級的可變長比特流數(shù)據(jù)串行處理過程,與數(shù)據(jù)的并行計(jì)算處理相比,所消耗的時(shí)間相對較長。
為了減少這種可變長比特流數(shù)據(jù)的串行處理過程的時(shí)間,以有效實(shí)現(xiàn)可變長比特流數(shù)據(jù)的打包或解包操作,需要開發(fā)設(shè)計(jì)專用的硬件電路來加速可變長比特流數(shù)據(jù)的打包或解包操作。專用硬件電路方案,盡管高效,但是應(yīng)用范圍小,不具通用性。它一般是針對某種特定類型的可變長比特流數(shù)據(jù)進(jìn)行設(shè)計(jì)的,用來專門處理這種特定類型的可變長比特流數(shù)據(jù)的打包或解包操作,所以,應(yīng)用在別的類型的可變長比特流數(shù)據(jù)時(shí),處理效率可能會很低或根本不能正常進(jìn)行該變長比特流的打包或解包操作處理。
另一種方案是采用處理器實(shí)現(xiàn)可變長比特流數(shù)據(jù)的打包或解包操作。然而,一般的處理器的指令操作不具備比特級操作能力,要實(shí)現(xiàn)比特級操作,需要大量的移位和邏輯操作。所以在處理可變長比特流數(shù)據(jù)的打包或解包這種串行過程時(shí),處理速度相對比較慢,難以滿足實(shí)時(shí)處理可變長比特流數(shù)據(jù)的打包或解包操作的要求。
發(fā)明內(nèi)容為了克服已有的可變長比特流處理器的處理速度慢、不能滿足實(shí)施處理需求的不足,本發(fā)明提供一種能夠加快處理速度,有效滿足實(shí)時(shí)處理可變長比特流數(shù)據(jù)的打包或解包操作的可編程變長比特流處理器。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是一種可編程變長比特流處理器,該處理器包括比特流存儲器,用于存儲可編程變長比特流處理器的輸入或輸出的可變長比特流數(shù)據(jù);地址發(fā)生器,用于遞增或遞減的計(jì)算出比特流存儲器的讀或?qū)懙刂?;所述的處理器還包括處理變長比特流的數(shù)據(jù)通路,用于根據(jù)主控制器的指令,處理可變長比特流數(shù)據(jù)從輸入的可變長比特流數(shù)據(jù)中抽取出比特流數(shù)據(jù);對輸入的可變長比特流數(shù)據(jù)的“0”比特前綴或“1”比特前綴的個(gè)數(shù)進(jìn)行統(tǒng)計(jì);改變輸入或輸出的可變長比特流數(shù)據(jù)的當(dāng)前的比特位指針;以及,依據(jù)輸入的數(shù)據(jù)值和數(shù)據(jù)比特位長度大小生成輸出可變長比特流數(shù)據(jù);主控制器,用于配置、控制處理變長比特流的數(shù)據(jù)通路和地址發(fā)生器,并對它們反饋的狀態(tài)和數(shù)據(jù)進(jìn)行處理配置時(shí),先對處理變長比特流的數(shù)據(jù)通路和地址發(fā)生器進(jìn)行配置,指定可編程變長比特流處理器的工作模式,并對比特位指針位置和比特流輸入或輸出數(shù)據(jù)進(jìn)行初始化操作;在解包模式下,主控制器產(chǎn)生操作和操作數(shù)信息,并控制比特流存儲器的讀操作,從比特流存儲器讀到的可變長比特流數(shù)據(jù)作為處理變長比特流的數(shù)據(jù)通路的輸入;在打包模式下,主控制器產(chǎn)生操作和操作數(shù)信息,所述的操作和操作數(shù)信息包括輸入的數(shù)據(jù)值和數(shù)據(jù)比特位長度,并控制比特流存儲器的寫操作;寄存器組,用于存儲處理變長比特流的數(shù)據(jù)通路和主控制器之間的各種數(shù)據(jù)信息。
進(jìn)一步,所述的寄存器組包括配置寄存器,用于存放主控制器對處理變長比特流的數(shù)據(jù)通路和地址發(fā)生器的配置信息;通用寄存器組,用于存放處理變長比特流的數(shù)據(jù)通路的操作數(shù)信息,包括輸入或輸出的數(shù)據(jù)值和數(shù)據(jù)比特位長度;
比特流輸入或輸出FIFO寄存器組,與比特流存儲器和處理變長比特流的數(shù)據(jù)通路相連,用于存放處理變長比特流的數(shù)據(jù)通路的輸入或輸出比特流數(shù)據(jù);控制及狀態(tài)寄存器,用于存放處理變長比特流的數(shù)據(jù)通路的工作控制信息及反饋狀態(tài)信息;比特位指針寄存器,用于存放當(dāng)前比特流輸入或輸出FIFO寄存器比特位的位置。
再進(jìn)一步,所述的配置寄存器包括比特流存儲器基址寄存器,用于存放可變長比特流數(shù)據(jù)在比特流存儲器中的基地址;比特流比特?cái)?shù)寄存器,用于存放所需輸入的比特流比特總數(shù)或總共輸出的比特流比特總數(shù);工作模式位,用于指示可編程變長比特流處理器工作于解包或打包模式。
更進(jìn)一步,所述的處理變長比特流的數(shù)據(jù)通路包括指針處理電路,用于計(jì)算輸入比特流數(shù)據(jù)或輸出比特流數(shù)據(jù)的比特位指針值,并控制及選擇輸入比特流數(shù)據(jù)或輸出比特流數(shù)據(jù)的范圍;比特流輸入或輸出FIFO寄存器選擇電路,用于從比特流輸入或輸出FIFO寄存器組選出處理變長比特流的數(shù)據(jù)通路的輸入或輸出寄存器;數(shù)據(jù)移位電路,用于選擇預(yù)定比特位長度的輸入比特流數(shù)據(jù)或輸出比特流數(shù)據(jù);位串連接電路,用于順序地連接預(yù)定比特位長度從數(shù)據(jù)移位電路出來的輸入比特流數(shù)據(jù)或輸出比特流數(shù)據(jù);前綴計(jì)數(shù)電路,用于統(tǒng)計(jì)預(yù)定長度的比特流數(shù)據(jù)的“0”比特前綴或“1”比特前綴的比特位個(gè)數(shù)。
所述的比特流輸入或輸出FIFO寄存器組包括至少兩個(gè)寄存器,根據(jù)比特位指針寄存器的值從比特流輸入或輸出FIFO寄存器中依次選擇一對寄存器;所述的數(shù)據(jù)通路的數(shù)據(jù)移位電路包括兩個(gè)獨(dú)立的移位處理單元,用于對從比特流輸入或輸出寄存器FIFO中選擇的寄存器對中的2路數(shù)據(jù)分別進(jìn)行移位處理;在解包模式下,把兩路輸出寄存器的數(shù)據(jù)依照順序依次送給兩個(gè)獨(dú)立的移位處理單元,先從當(dāng)前寄存器中依次抽取出預(yù)定長度的可變長比特流數(shù)據(jù)來進(jìn)行解包,當(dāng)指針從當(dāng)前寄存器移到另一個(gè)寄存器時(shí),產(chǎn)生寫信號要求主控制器在下一個(gè)時(shí)鐘到來時(shí)把當(dāng)前寄存器的內(nèi)容以比特流存儲器中的新數(shù)據(jù)更新;在打包模式下,兩個(gè)獨(dú)立的移位處理單元的輸出分別寫回給所選擇的輸入寄存器,先依次從指針位置開始由低位到高位把生成的可變長比特流數(shù)據(jù)推入當(dāng)前寄存器中,當(dāng)指針從當(dāng)前寄存器移到另一個(gè)寄存器時(shí),并產(chǎn)生寫信號反饋給主控制器,使主控制器在下一個(gè)時(shí)鐘到來時(shí)把當(dāng)前的內(nèi)容寫到比特流存儲器中去。
所述的數(shù)據(jù)移位電路具有5個(gè)選擇器級,用于實(shí)現(xiàn)輸入比特流數(shù)據(jù)的預(yù)定比特位長度的移位,移位后空出的比特位用填補(bǔ)比特位數(shù)據(jù)來填補(bǔ)。
所述的主控制器還包括異常中斷請求電路,用于在解包模式或打包模式時(shí),相應(yīng)并解決處理變長比特流的數(shù)據(jù)通路的異常中斷請求。
所述的主控制器還包括正常結(jié)束請求電路,用于在解包模式或打包模式時(shí),相應(yīng)并解決處理變長比特流的數(shù)據(jù)通路的正常結(jié)束請求。
在解包模式下,完成如下操作在不確定可變長比特流數(shù)據(jù)的比特位長度時(shí),重復(fù)執(zhí)行數(shù)據(jù)比特位長度不等的抽取操作,抽取出預(yù)定長度的可變長比特流數(shù)據(jù),比特流存儲器基址寄存器和比特流比特?cái)?shù)寄存器的值保持不變;在確定可變長比特流數(shù)據(jù)的比特位長度時(shí),執(zhí)行固定比特位長度的抽取操作,抽取出預(yù)定長度的可變長比特流數(shù)據(jù),并更新比特流存儲器基址寄存器和比特流比特?cái)?shù)寄存器的值;在確定可變長比特流數(shù)據(jù)的比特位長度時(shí),執(zhí)行指針移動操作,直接跳過可變長比特流數(shù)據(jù),并更新比特流存儲器基址寄存器和比特流比特?cái)?shù)寄存器的值;在計(jì)算可變長比特流數(shù)據(jù)的比特前綴特征時(shí),設(shè)定比特前綴位長度范圍,執(zhí)行“0”比特前綴或“1”比特前綴計(jì)數(shù)操作,統(tǒng)計(jì)得到下一個(gè)可變長比特流數(shù)據(jù)的“0”比特前綴或“1”比特前綴的比特位個(gè)數(shù),比特流存儲器基址寄存器和比特流比特?cái)?shù)寄存器的值保持不變。
所述的主控制器是微處理器或有限狀態(tài)機(jī)。
本發(fā)明的工作原理是可編程變長比特流處理器工作于打包模式時(shí),主控制器產(chǎn)生操作和操作數(shù)信息—包括輸入的數(shù)據(jù)值和數(shù)據(jù)比特位長度,并控制比特流存儲器的寫操作,處理變長比特流的數(shù)據(jù)通路根據(jù)主控制器傳來的操作和操作數(shù)信息,通過數(shù)據(jù)移位電路將生成可變長比特流數(shù)據(jù)推入、拼接到比特流輸入或輸出FIFO寄存器組,字節(jié)對齊后寫入比特流存儲器中。
可編程變長比特流處理器工作于解包模式時(shí),可變長比特流數(shù)據(jù)都存放在比特流存儲器中,主控制器產(chǎn)生操作和操作數(shù)信息,并控制比特流存儲器的讀操作,從比特流存儲器讀到的可變長比特流數(shù)據(jù)存放于比特流輸入或輸出FIFO寄存器組中,作為處理變長比特流的數(shù)據(jù)通路的輸入,處理變長比特流的數(shù)據(jù)通路則根據(jù)主控制器傳來的操作信息和數(shù)據(jù)長度操作數(shù),通過指針處理電路、比特流輸入或輸出FIFO寄存器選擇電路、數(shù)據(jù)移位電路、位串連接電路、前綴計(jì)算電路,抽取出可變長比特流數(shù)據(jù)或統(tǒng)計(jì)出“0”比特前綴或“1”比特前綴的比特位個(gè)數(shù)??赏瓿上铝胁僮髟诓淮_定可變長比特流數(shù)據(jù)的比特位長度時(shí),重復(fù)執(zhí)行數(shù)據(jù)比特位長度不等的抽取操作,抽取出預(yù)定長度的可變長比特流數(shù)據(jù),但不改變比特流存儲器基址寄存器和比特流比特?cái)?shù)寄存器的值;在確定可變長比特流數(shù)據(jù)的比特位長度時(shí),執(zhí)行固定比特位長度的抽取操作,抽取出預(yù)定長度的可變長比特流數(shù)據(jù),并更新比特流存儲器基址寄存器和比特流比特?cái)?shù)寄存器的值;在確定可變長比特流數(shù)據(jù)的比特位長度時(shí),執(zhí)行指針移動操作,直接跳過可變長比特流數(shù)據(jù),并更新比特流存儲器基址寄存器和比特流比特?cái)?shù)寄存器的值;在需要了解可變長比特流數(shù)據(jù)的比特前綴特征時(shí),設(shè)定比特前綴位長度范圍,執(zhí)行“0”比特前綴或“1”比特前綴計(jì)數(shù)操作,統(tǒng)計(jì)得到下一個(gè)可變長比特流數(shù)據(jù)的“0”比特前綴或“1”比特前綴的比特位個(gè)數(shù),但不改變比特流存儲器基址寄存器和比特流比特?cái)?shù)寄存器的值。
可編程變長比特流處理器工作于解包模式或打包模式時(shí),主控器響應(yīng)并解決處理變長比特流的數(shù)據(jù)通路的異常中斷請求或正常結(jié)束請求。
當(dāng)“0”比特前綴或“1”比特前綴的比特位計(jì)數(shù)的操作時(shí),主控制器會給一個(gè)數(shù)據(jù)比特位長度的操作數(shù),一般是可變長比特流數(shù)據(jù)的最大比特位長度,起到長度限制作用。例如執(zhí)行“0”比特前綴的比特位個(gè)數(shù)統(tǒng)計(jì)的操作時(shí),數(shù)據(jù)比特位長度的值為16時(shí),可以用來區(qū)別比特流數(shù)據(jù)為“0000 0000 0000 0001”和“00000000 0000 0000”的情況。比特流數(shù)據(jù)為“0X8000”和“0X0000”的情況或者說比特流數(shù)據(jù)為“1000 0000 0000 000”和“0000 0000 0000 0000”的情況依據(jù)本發(fā)明的可編程變長比特流處理器可以高效處理有關(guān)可變長比特流數(shù)據(jù)的操作,對于在限定長度范圍內(nèi)的可變長比特流數(shù)據(jù)的打包、解包、和“0”比特前綴或“1”比特前綴的比特位計(jì)算等操作都可在一個(gè)時(shí)鐘內(nèi)完成。
本發(fā)明的有益效果主要表現(xiàn)在1、能夠加快處理速度;2、有效滿足實(shí)時(shí)處理可變長比特流數(shù)據(jù)的打包或解包操作;3、工作流程采用流水線模式,打包、解包以及前綴計(jì)算等操作可在一個(gè)時(shí)鐘內(nèi)完成。
圖1是可編程變長比特流處理器的組成方框圖;圖2是處理變長比特流的數(shù)據(jù)通路單元的方框圖;圖3是輸入或輸出FIFO寄存器選擇電路的狀態(tài)轉(zhuǎn)換示意圖;圖4是數(shù)據(jù)移位電路的示意圖;圖5是可編程變長比特流處理器實(shí)例中比特流存儲器的示意圖;圖6是可編程變長比特流處理器正常解包工作的實(shí)例示意圖;圖7是可編程變長比特流處理器正常打包工作的實(shí)例示意圖。
具體實(shí)施方式
下面結(jié)合附圖對本發(fā)明作進(jìn)一步描述。
實(shí)施例1如圖1所示,可編程變長比特流處理器包括主控制器102、地址發(fā)生器104、處理變長比特流的數(shù)據(jù)通路106、比特流存儲器108,以及寄存器組120。
主控制器102,控制整個(gè)可編程變長比特流處理器的工作過程,主要是配置、控制處理變長比特流的數(shù)據(jù)通路106和地址發(fā)生器104,并對反饋的狀態(tài)和數(shù)據(jù)進(jìn)行處理,主控制器102是微處理器或有限狀態(tài)機(jī);配置時(shí),先對處理變長比特流的數(shù)據(jù)通路106和地址發(fā)生器104進(jìn)行配置,指定可編程變長比特流處理器的工作模式,并對比特位指針位置和比特流輸入或輸出數(shù)據(jù)進(jìn)行初始化操作;在解包模式下,主控制器102產(chǎn)生操作和操作數(shù)信息,并控制比特流存儲器108的讀操作,從比特流存儲器108讀到的可變長比特流數(shù)據(jù)作為處理變長比特流的數(shù)據(jù)通路106的輸入;在打包模式下,主控制器102產(chǎn)生操作和操作數(shù)信息,所述的操作和操作數(shù)信息包括輸入的數(shù)據(jù)值和數(shù)據(jù)比特位長度,并控制比特流存儲器108的寫操作;比特流存儲器108,在解包模式時(shí),用于預(yù)先存儲可編程變長比特流處理器的輸入可變長比特流數(shù)據(jù);在打包模式時(shí),用于存儲可編程變長比特流處理器的輸出可變長比特流數(shù)據(jù)。
地址發(fā)生器104,與比特流存儲器108相連,遞增或遞減的計(jì)算出比特流存儲器108的讀寫地址。
處理變長比特流的數(shù)據(jù)通路106,可用于從輸入的可變長比特流數(shù)據(jù)中抽取出一定長度的比特流數(shù)據(jù);對輸入的可變長比特流數(shù)據(jù)的“0”比特前綴或“1”比特前綴的個(gè)數(shù)進(jìn)行統(tǒng)計(jì);改變輸入或輸出的可變長比特流數(shù)據(jù)的當(dāng)前的比特位指針;依據(jù)輸入的數(shù)據(jù)值和數(shù)據(jù)比特位長度大小生成輸出可變長比特流數(shù)據(jù)。
寄存器組120,與處理變長比特流的數(shù)據(jù)通路106和主控制器102相連,用于傳遞處理變長比特流的數(shù)據(jù)通路106和主控制器102間的各種參數(shù)信息。寄存器組120應(yīng)該包括下面這些寄存器通用寄存器組,用于存放主控制器102對處理變長比特流的數(shù)據(jù)通路106的操作數(shù)信息,包括輸入的數(shù)據(jù)值和數(shù)據(jù)比特位長度;比特流輸入或輸出FIFO寄存器組,與比特流存儲器108和處理變長比特流的數(shù)據(jù)通路106相連,用于存放處理變長比特流的數(shù)據(jù)通路106的輸入或輸出比特流數(shù)據(jù),并具有FIFO緩沖功能;控制及狀態(tài)寄存器,用于存放主控制器102對處理變長比特流的數(shù)據(jù)通路106的工作控制信息,及處理變長比特流的數(shù)據(jù)通路106對主控制器102反饋的工作狀態(tài)信息;
比特位指針寄存器,用于存放當(dāng)前比特流輸入或輸出FIFO寄存器比特位的位置;配置寄存器,用于存放主控制102對處理變長比特流的數(shù)據(jù)通路106和地址發(fā)生器104的配置信息。
其中配置寄存器的定義如下表1所示
表1如圖2所示,詳細(xì)顯示了處理變長比特流的數(shù)據(jù)通路106的方框圖。數(shù)據(jù)通路106包括以下部分(1)指針處理電路110指針處理電路110,用于計(jì)算輸入比特流數(shù)據(jù)或輸出比特流數(shù)據(jù)的比特位指針值,并控制及選擇輸入比特流數(shù)據(jù)或輸出比特流數(shù)據(jù)的范圍。
比特位指針寄存器的值與主控制器102傳過來的數(shù)據(jù)比特位長度操作數(shù)累加,并和比特流輸入或輸出FIFO寄存器位數(shù)取模。當(dāng)指針寄存器的值超過比特流輸入或輸出FIFO寄存器位數(shù)時(shí),指針處理電路110會向比特流輸入或輸出FIFO寄存器選擇電路112產(chǎn)生一個(gè)移動標(biāo)識位,從而改變選擇比特流輸入或輸出寄存器組的狀態(tài)。
比特流比特?cái)?shù)寄存器的值也是要和主控制器102傳過來的數(shù)據(jù)比特位長度操作數(shù)做加減運(yùn)算的,解包模式時(shí)是遞減,而打包模式時(shí)是遞增。并且控制及狀態(tài)寄存器中的有些標(biāo)識位需要通過判斷比特流比特?cái)?shù)寄存器的值來設(shè)置,當(dāng)解包模式時(shí),如果比特流比特?cái)?shù)寄存器的值為0,則需設(shè)置完成標(biāo)識位;如果比特流比特?cái)?shù)寄存器的值為負(fù)數(shù),即比特流輸入或輸出FIFO寄存器組中所剩下的可變長比特流數(shù)據(jù)的比特位長度小于從主控制器102中傳過來的數(shù)據(jù)長度操作數(shù),則需設(shè)置解包溢出異常標(biāo)識位。
打包模式下的完成標(biāo)識位,要通過一條特殊排列指令來設(shè)置的。因?yàn)橐门帕兄噶钭鲆幌绿厥馓幚硪员WC可以順利將最后一個(gè)打包的可變長比特流數(shù)據(jù)存儲到比特流存儲器108中,但不能改變比特流比特?cái)?shù)寄存器的值。
(2)、比特流輸入或輸出FIFO寄存器選擇電路112比特流輸入或輸出FIFO寄存器選擇電路112,用于選擇一對比特流輸入或輸出FIFO寄存器作為處理變長比特流的數(shù)據(jù)通路106的第一路和第二路輸入或輸出。
當(dāng)可編程變長比特流處理器工作于解包模式時(shí),可變長比特流數(shù)據(jù)預(yù)先存儲在比特流存儲器108中。主控制器102通過控制地址發(fā)生器104,將比特流存儲器108中的可變長比特流數(shù)據(jù)依次放入比特流輸入或輸出FIFO寄存器組中。
可編程變長比特流處理器的比特流輸入或輸出FIFO寄存器組是由一組寄存器構(gòu)成的,用于為每次解包存儲足夠量的可變長比特流數(shù)據(jù),以確保在正常解包過程中不會空或過滿。參照圖2和圖3,假設(shè)可編程變長比特流處理器的比特流輸入或輸出FIFO寄存器組包括至少兩個(gè)寄存器,例如是3個(gè)寄存器,即寄存器0或1或2。
先根據(jù)比特位指針寄存器的值從比特流輸入或輸出FIFO寄存器中依次選擇一對寄存器,可以是寄存器0和1,或寄存器1和2,或是寄存器2和寄存器0,再把這2路輸入數(shù)據(jù)依照順序作為數(shù)據(jù)0和數(shù)據(jù)1依次送給數(shù)據(jù)移位電路114中的兩個(gè)獨(dú)立的移位處理單元140及141。所選寄存器對的狀態(tài)轉(zhuǎn)換過程如圖3所示,在寄存器0或1狀態(tài)時(shí),先從寄存器0中依次抽取出預(yù)定長度的可變長比特流數(shù)據(jù)來進(jìn)行解包,當(dāng)指針從寄存器0移到寄存器1時(shí),狀態(tài)將會轉(zhuǎn)換到寄存器1或2狀態(tài),并產(chǎn)生寫信號要求主控制器102在下一個(gè)時(shí)鐘到來時(shí)把寄存器0的內(nèi)容以比特流存儲器108中的新數(shù)據(jù)更新。同樣從寄存器1或2狀態(tài)轉(zhuǎn)換到寄存器2或0,或從寄存器2或0狀態(tài)轉(zhuǎn)換到寄存器0或1時(shí),都會產(chǎn)生寫信號要求主控制器102分別把寄存器1和寄存器2中的內(nèi)容以比特流存儲器108中的新數(shù)據(jù)更新。
當(dāng)可編程變長比特流處理器工作于打包模式時(shí),也是根據(jù)比特位指針寄存器的值從比特流輸入或輸出FIFO寄存器組中依次選擇一對寄存器,不僅作為輸入寄存器輸入已存有打包好的可變長比特流數(shù)據(jù),還作為打包可變長比特流數(shù)據(jù)的目的寄存器,因?yàn)榻?jīng)過移位電路114把生成新的可變長比特流數(shù)據(jù)與輸入寄存器中已有打包好的可變長比特流數(shù)據(jù)拼接好,再寫回所選的輸入寄存器,并當(dāng)字節(jié)對齊后存儲到比特流存儲器108中。參照圖2和圖3,假設(shè)比特流輸入或輸出寄存器組的寄存器個(gè)數(shù)為3時(shí),選中的2路輸入可以是寄存器0和1,或寄存器1和2,或是寄存器2和寄存器0,所選寄存器對的狀態(tài)轉(zhuǎn)換過程也是如圖3所示。數(shù)據(jù)移位電路114中的2路輸出分別寫回給所選擇的輸入寄存器,如在寄存器0或1狀態(tài)時(shí),依次從指針位置開始由低位到高位把生成的可變長比特流數(shù)據(jù)推入寄存器0中,當(dāng)指針從寄存器0移到寄存器1時(shí),狀態(tài)將會轉(zhuǎn)換到寄存器1或2狀態(tài),并產(chǎn)生寫信號反饋給主控制器102,使主控制器102在下一個(gè)時(shí)鐘到來時(shí)把寄存器0的內(nèi)容寫到比特流存儲器108中去。同樣從寄存器1或2狀態(tài)轉(zhuǎn)換到寄存器2或0,或從寄存器2或0狀態(tài)轉(zhuǎn)換到寄存器0或1時(shí),都會產(chǎn)生寫信號反饋給主控制102,把寄存器1和寄存器2中的內(nèi)容寫到比特流存儲器108中去。
(3)、數(shù)據(jù)移位電路114數(shù)據(jù)移位電路114,用于選擇預(yù)定比特位長度的輸入比特流數(shù)據(jù)或輸出比特流數(shù)據(jù)。
數(shù)據(jù)移位電路114,有兩個(gè)獨(dú)立的數(shù)據(jù)移位單元140及141分別對從比特流輸入或輸出寄存器FIFO中選擇的寄存器對中的2路數(shù)據(jù)分別進(jìn)行移位處理,以允許指針的邊界交叉可以從第一路輸入的末位跳到第二路輸入的首位,保證2路輸入的每一位對于指針都是可達(dá)到的。如圖2、圖4所示,數(shù)據(jù)移位單元140及141都可看作是一個(gè)特殊的32位桶形移位器,將輸入比特流數(shù)據(jù)和填補(bǔ)比特流數(shù)據(jù)(FILLIN)作為輸入,具有5個(gè)選擇器級,可實(shí)現(xiàn)輸入比特流數(shù)據(jù)的0到16位的移位,并且移位后空出的比特位用FILLIN相應(yīng)的比特位的來填補(bǔ)。
當(dāng)解包模式時(shí),比特流輸入或輸出FIFO寄存器位數(shù)的邏輯‘0’作為數(shù)據(jù)移位電路114中2個(gè)獨(dú)立移位處理單元140及141的填補(bǔ)比特流數(shù)據(jù);在打包模式時(shí),依據(jù)控制器102傳來數(shù)據(jù)值和數(shù)據(jù)比特位長度的操作數(shù),所生成的可變長比特流數(shù)據(jù)作為數(shù)據(jù)移位電路114中2個(gè)獨(dú)立移位處理單元140及141的填補(bǔ)比特流數(shù)據(jù)。
(4)、位串連接電路116及前綴計(jì)數(shù)電路118位串連接電路116用于順序地連接預(yù)定比特位長度從數(shù)據(jù)移位電路114出來的輸入比特流數(shù)據(jù)或輸出比特流數(shù)據(jù)。
前綴計(jì)數(shù)電路118,用于統(tǒng)計(jì)預(yù)定長度的比特流數(shù)據(jù)的“0”比特前綴或“1”比特前綴的比特位個(gè)數(shù)。
可編程變長比特流處理器工作于解包模式時(shí),數(shù)據(jù)移位電路114中2個(gè)獨(dú)立移位處理單元140及141的輸出通過位串連接電路116的處理可得到從預(yù)定長度的可變長比特流數(shù)據(jù)。再根據(jù)主控制器102設(shè)置的控制及狀態(tài)寄存器,在抽取預(yù)定長度的可變長比特流數(shù)據(jù)時(shí),將其語義作為處理變長比特流的數(shù)據(jù)通路106的輸出,并通過一個(gè)通用寄存器傳回給主控制器102;在“0”比特前綴或“1”比特前綴的比特位個(gè)數(shù)計(jì)算時(shí),將得到的預(yù)定長度的可變長比特流數(shù)據(jù)作為前綴計(jì)數(shù)電路118的輸入,經(jīng)過統(tǒng)計(jì)計(jì)算后得到的“0”或“1”比特前綴的個(gè)數(shù)作為處理變長比特流的數(shù)據(jù)通路106的輸出,也通過一個(gè)通用寄存器傳回給主控制器102。
可編程變長比特流處理器工作于打包模式時(shí),數(shù)據(jù)移位電路114中2個(gè)獨(dú)立移位處理單元140及141的輸出直接依次寫回所選的比特流輸入或輸出FIFO寄存器對。當(dāng)?shù)谝宦繁忍亓鬏斎牖蜉敵鯢IFO寄存器被寫滿后,在下一個(gè)時(shí)鐘到來的時(shí)候,主控制器102將把其中的數(shù)據(jù)內(nèi)容寫到比特流存儲器108中,并同時(shí)改變比特流輸入或輸出FIFO寄存器組的狀態(tài)。
在打包模式時(shí),生成的最后一個(gè)可變長比特流數(shù)據(jù)被寫回在所選的第一路比特流輸入或輸出FIFO寄存器中,但通常這個(gè)可變長比特流數(shù)據(jù)的長度不會恰好將比特流輸入或輸出FIFO寄存器寫滿,我們需要用排列指令做一下特殊處理將比特流輸入輸出FIFO寄存器空余的高位用‘0’充滿,以保證可以順利將最后一個(gè)打包的可變長比特流數(shù)據(jù)存儲到比特流存儲器108中,但不能改變比特流比特?cái)?shù)寄存器的值。
可編程變長比特流處理器的工作過程使用可編程變長比特流處理器來處理可變長比特流數(shù)據(jù)的解包或打包操作的方法,包括下列的步驟在可編程變長比特流處理器正常工作之前,主控制器需要102根據(jù)應(yīng)用要求先對處理變長比特流的數(shù)據(jù)通路106和地址發(fā)生器104進(jìn)行配置,給配置寄存器賦值,指定可編程變長比特流處理器工作模式,并對比特位指針寄存器和比特流輸入或輸出FIFO寄存器組等進(jìn)行初始化操作;可編程變長比特流處理器工作于正常解包模式時(shí),預(yù)定的可變長比特流數(shù)據(jù)都存放在比特流存儲器108中,主控制器102產(chǎn)生操作和操作數(shù)信息,并控制比特流存儲器108的讀操作,從比特流存儲器108讀到的可變長比特流數(shù)據(jù)存放于比特流輸入或輸出FIFO寄存器組中,作為處理變長比特流的數(shù)據(jù)通路106的輸入,處理變長比特流的數(shù)據(jù)通路106則根據(jù)主控制器傳來的操作信息和數(shù)據(jù)長度操作數(shù),通過指針處理電路110、比特流輸入或輸出FIFO寄存器選擇電路112、數(shù)據(jù)移位電路114、位串連接電路116、前綴計(jì)算電路118,可以得到抽取出預(yù)定長度的可變長比特流數(shù)據(jù)或統(tǒng)計(jì)出”0”比特前綴或“1”比特前綴的比特位個(gè)數(shù)。
可編程變長比特流處理器工作于正常打包模式時(shí),主控制器102產(chǎn)生操作和操作數(shù)信息—包括輸入的數(shù)據(jù)值和數(shù)據(jù)比特位長度,并控制比特流存儲器108的寫操作,處理變長比特流的數(shù)據(jù)通路106根據(jù)主控制器102傳來的操作和操作數(shù)信息,通過數(shù)據(jù)移位電路114可以將生成的預(yù)定長度的可變長比特流數(shù)據(jù)推入、拼接到比特流輸入或輸出FIFO寄存器組,字節(jié)對齊后寫入比特流存儲器108中。
可編程變長比特流處理器工作于解包模式或打包模式時(shí),主控器102可以響應(yīng)并解決處理變長比特流的數(shù)據(jù)通路106的異常中斷請求或正常結(jié)束請求。
實(shí)施例2本實(shí)施例的結(jié)構(gòu)和工作過程與實(shí)施例1相同。
可編程變長比特流處理器由主控制器102來控制,分為配置過程和打包或解包工作過程。參照圖5,6及7中所示的簡單示例可更易于理解可編程變長比特流處理器10的工作過程。均假設(shè)可編程變長比特流處理器的比特流輸入或輸出FIFO寄存器組是由3個(gè)寄存器構(gòu)成的,即寄存器0或1或2。
(1)、解包模式下的工作過程假設(shè)比特流存儲器108中從地址0開始存儲了20KB的可變長比特流數(shù)據(jù)“0XC190 0FA5 8011 8858 5A08 F00F……”,則主控制器102先設(shè)置寄存器為“0X0000 1000”,即比特流存儲器基址寄存器的值為0,比特流比特?cái)?shù)寄存器的值為20K,模式位為0,使可編程變長比特流處理器10開始工作于解包模式,并將比特位寄存器的值清零。
在最先三個(gè)時(shí)鐘的上升沿,主控制器102依次將比特流存儲器108中地址0或1或2里面的可變長比特流數(shù)據(jù)“0XC190”“0X0FA5”“0X8011”分別放入比特流輸入輸出FIFO寄存器組中,數(shù)據(jù)初始化好后,可編程變長比特流處理器10開始正常解包工作。
在第四個(gè)時(shí)鐘的上升沿,移位處理單元140及141的輸入是比特流輸入或輸出FIFO寄存器組中的寄存器0和寄存器1,主控制器102傳來的數(shù)據(jù)長度操作數(shù)為“10”以使移位處理單元140有“10”的起始移位,移位處理單元141的輸出全部置0,其結(jié)果經(jīng)過位串連接電路114可以得到依次從指針位置開始的“10”比特位數(shù)據(jù)“01 1001 0000”,并且該數(shù)據(jù)結(jié)果也作為前綴計(jì)算電路116的輸入可以計(jì)算出“0”前綴比特位的個(gè)數(shù)為“4”。
在第五個(gè)時(shí)鐘的上升沿,比特位指針寄存器的值為“10”,比特流比特?cái)?shù)寄存器的值遞減“10”,移位處理單元140及141的輸入仍是比特流輸入或輸出FIFO寄存器組中的寄存器0和寄存器1,主控制器102傳來的數(shù)據(jù)長度操作數(shù)為“15”以使移位處理單元140及141分別有“6”和“9”起始移位,其結(jié)果經(jīng)過位串連接電路114可以得到依次從指針位置開始的“15”比特位數(shù)據(jù)“110 1001 01110000”,并且該數(shù)據(jù)結(jié)果也作為前綴計(jì)算電路116的輸入可以計(jì)算出“0”前綴比特位的個(gè)數(shù)為“4”。
由于比特位指針寄存器的值累加成“25”超過“16”,會向主控制器102產(chǎn)生一個(gè)讀信號,使得主控制器102從比特流存儲器108中讀取地址“3”中的數(shù)據(jù),為比特流輸入輸出FIFO寄存器組120中的寄存器0準(zhǔn)備下一個(gè)時(shí)鐘更新的數(shù)據(jù)。同時(shí)將改變比特流輸入或輸出FIFO寄存器組的狀態(tài),且比特位指針寄存器的新值為“9”。
在第六個(gè)時(shí)鐘的上升沿,處理變長比特流的數(shù)據(jù)通路106中比特流輸入或輸出FIFO寄存器組的寄存器0接受到主控制器102準(zhǔn)備好的可變長比特流數(shù)據(jù)“1000 1000 0101 1000”。比特位指針寄存器的值為“9”,比特流比特?cái)?shù)寄存器的值遞減“15”,移位處理單元140及141的輸入仍為比特流輸入輸出FIFO寄存器組120中的寄存器1和寄存器2,主控制器102傳來的數(shù)據(jù)長度操作數(shù)為“14”以使移位處理單元140及141都分別有“7”和“7”的起始移位,其結(jié)果經(jīng)過位串連接電路114可以得到依次從指針位置開始的“14”比特位數(shù)據(jù)“00 1000 10000111”,并且該數(shù)據(jù)結(jié)果也作為前綴計(jì)算電路116的輸入可以計(jì)算出“0”前綴比特位的個(gè)數(shù)為“0”。
由于比特位指針寄存器的值累加成“23”超過“16”,會向主控制器102產(chǎn)生一個(gè)讀信號,使得主控制器102從比特流存儲器108中讀取地址“4”中的數(shù)據(jù),為比特流輸入或輸出FIFO寄存器組中的寄存器1準(zhǔn)備下一個(gè)時(shí)鐘更新的數(shù)據(jù)。同時(shí)將改變比特流輸入或輸出FIFO寄存器組的狀態(tài),且比特位指針寄存器的新值為“7”。
在第七個(gè)時(shí)鐘的上升沿,處理變長比特流的數(shù)據(jù)通路106中比特流輸入或輸出FIFO寄存器組的寄存器1接受到主控制器102準(zhǔn)備好的可變長比特流數(shù)據(jù)“0101 1010 0000 1000”。而在處理變長比特流的數(shù)據(jù)通路106中,比特位指針寄存器的值為“7”,比特流比特?cái)?shù)寄存器的值遞減“14”,移位處理單元140及141的輸入仍是比特流輸入或輸出FIFO寄存器組中的寄存器2和寄存器0,主控制器102傳來的數(shù)據(jù)長度為“16”以使移位處理單元140及141都分別有“9”和“7”的起始移位,其結(jié)果經(jīng)過位串連接電路114可以得到依次從指針位置開始的“16”比特位數(shù)據(jù)“ 1011 0001 0000 0000”,并且該數(shù)據(jù)結(jié)果也作為前綴計(jì)算電路116的輸入可以計(jì)算出“0”前綴比特位的個(gè)數(shù)為“8”。
由于比特位指針寄存器的值累加成“23”超過“16”,會向主控制器102產(chǎn)生一個(gè)讀信號,使得主控制器102從比特流存儲器108中讀取地址“5”中的可變長比特流數(shù)據(jù)“1111 0000 0000 1111”,為比特流輸入輸出FIFO寄存器組120中的寄存器2準(zhǔn)備下一個(gè)時(shí)鐘更新的數(shù)據(jù)。同時(shí)將改變比特流輸入輸出FIFO寄存器組120的狀態(tài),且比特位指針寄存器的新值為“7”。
從上可看到,本發(fā)明可編程變長比特流處理器在時(shí)鐘信號的時(shí)鐘瞬間執(zhí)行的解包操作,從而有利地實(shí)現(xiàn)了高速解包操作。
(2)、可編程變長比特流處理器在打包模式下的工作過程主控制器102先設(shè)置寄存器為“0X0000 0001”,即比特流存儲器基址寄存器的值為0,比特流比特?cái)?shù)寄存器的值為0,模式位為1,使可編程變長比特流處理器10開始工作于打包模式,并將比特位寄存器的值清零。
在第一個(gè)時(shí)鐘的上升沿,主控制器102傳來的數(shù)據(jù)長度操作數(shù)為“5”,輸入的數(shù)據(jù)值操作數(shù)為“15”,移位處理單元140及141的輸入和目的寄存器選的是比特流輸入或輸出FIFO寄存器組中的寄存器0和寄存器1。移位處理單元140及141都有一“5”的起始移位,把移位處理單元140及141移位后的比特流結(jié)果“01111XXX XXXX XXXX”和“0111 1XXX XXXX XXXX”分別寫回寄存器0和寄存器1。
在第二個(gè)時(shí)鐘的上升沿,比特流比特?cái)?shù)寄存器的值累加為“5”,比特位寄存器的值也會更新為“5”。主控制器102傳來的數(shù)據(jù)長度操作數(shù)為“15”,輸入的數(shù)據(jù)值操作數(shù)為“20600”即比特流數(shù)據(jù)“101 0000 0111 1000”,移位處理單元140及141的輸入和目的寄存器選的仍是比特流輸入或輸出FIFO寄存器組中的寄存器0和寄存器1。移位處理單元140及141分別有一“11”和“15”的起始移位,把移位處理單元140及141移位后的比特流結(jié)果“0000 1111 0000 1111”和“10100000 1111 000X”分別寫回寄存器0和寄存器1。
由于比特位指針寄存器的值累加成“20”超過“16”,會向主控制器102產(chǎn)生一個(gè)寫信號,使得主控制器102在下一個(gè)時(shí)鐘的上升沿到來時(shí)將移位處理單元140的比特流結(jié)果“0000 1111 0000 1111”存儲到比特流存儲器108的地址“0”。同時(shí)將改變所選輸入和目的寄存器選的比特流輸入或輸出FIFO寄存器組的狀態(tài),且比特位指針寄存器的新值為“4”。
在第三個(gè)時(shí)鐘的上升沿,比特?cái)?shù)寄存器的值累加為“20”,比特位寄存器的值更新為“4”。主控制器102將移位處理單元140的比特流結(jié)果“0000 1111 00001111”存儲到比特流存儲器108的地址“0”中。并給處理變長比特流的數(shù)據(jù)通路106傳來的數(shù)據(jù)長度操作數(shù)為“13”,輸入的數(shù)據(jù)值操作數(shù)為“83”即比特流數(shù)據(jù)“0 0000 0101 0011”,移位處理單元140及141的輸入和目的寄存器選的仍是比特流輸入或輸出FIFO寄存器組中的寄存器1和寄存器2。移位處理單元140及141分別有一“12”和“13”的起始移位,把移位處理單元140及141移位后的比特流結(jié)果“0000 0101 0011 1010”和“0000 0010 1001 1XXX”分別寫回寄存器1和寄存器2。
由于比特位指針寄存器的值累加成“17”超過“16”,會向主控制器102產(chǎn)生一個(gè)寫信號,使得主控制器102在下一個(gè)時(shí)鐘的上升沿到來時(shí)將移位處理單元140的比特流結(jié)果“0000 0101 0011 1010”存儲到比特流存儲器108的地址“1”。同時(shí)將改變所選輸入和目的寄存器選的比特流輸入輸出FIFO寄存器組120的狀態(tài),且比特位指針寄存器的新值為“1”。
在第四個(gè)時(shí)鐘的上升沿,比特?cái)?shù)寄存器的值累加為“33”,比特位寄存器的值更新為“1”。主控制器102將移位處理單元1120的比特流結(jié)果“0000 0101 00111010”存儲到比特流存儲器108的地址“1”中。并給處理變長比特流的數(shù)據(jù)通路106傳來的數(shù)據(jù)長度操作數(shù)為“6”,輸入的數(shù)據(jù)值操作數(shù)為“33”即比特流數(shù)據(jù)“10 0001”,移位處理單元140及141的輸入和目的寄存器選的是比特流輸入或輸出FIFO寄存器組中的寄存器2和寄存器0。移位處理單元140及141分別都有一“6”的起始移位,把移位處理單元140及141移位后的比特流結(jié)果“1000 01000000 1010”和“1000 0100 0011 1100”分別寫回寄存器2和寄存器0。
在下一個(gè)時(shí)鐘的上升沿到來時(shí),比特?cái)?shù)寄存器的值累加為“39”,且比特位指針寄存器的值更新為成“7”,但不會向主控制器發(fā)出寫信號,所以將不會改變所選輸入和目的寄存器選的比特流輸入或輸出FIFO寄存器組的狀態(tài)。
雖然在這里用實(shí)施例對本發(fā)明進(jìn)行了描述和說明,更廣義方面的發(fā)明依次并不限于特定細(xì)節(jié)、示意性裝置和方法以及所示和所述的示例性實(shí)例。熟悉本技術(shù)的人員顯而易見可以作出各種改變和修正,不脫離上述權(quán)利要求書中所定義的本
權(quán)利要求
1.一種可編程變長比特流處理器,該處理器包括比特流存儲器,用于存儲可編程變長比特流處理器的輸入或輸出的可變長比特流數(shù)據(jù);地址發(fā)生器,用于遞增或遞減的計(jì)算出比特流存儲器的讀或?qū)懙刂罚黄涮卣髟谟谒龅奶幚砥鬟€包括處理變長比特流的數(shù)據(jù)通路,用于根據(jù)主控制器的指令,處理可變長比特流數(shù)據(jù)從輸入的可變長比特流數(shù)據(jù)中抽取出比特流數(shù)據(jù);對輸入的可變長比特流數(shù)據(jù)的“0”比特前綴或“1”比特前綴的個(gè)數(shù)進(jìn)行統(tǒng)計(jì);改變輸入或輸出的可變長比特流數(shù)據(jù)的當(dāng)前的比特位指針;以及,依據(jù)輸入的數(shù)據(jù)值和數(shù)據(jù)比特位長度大小生成輸出可變長比特流數(shù)據(jù);主控制器,用于配置、控制處理變長比特流的數(shù)據(jù)通路和地址發(fā)生器,并對它們反饋的狀態(tài)和數(shù)據(jù)進(jìn)行處理配置時(shí),先對處理變長比特流的數(shù)據(jù)通路和地址發(fā)生器進(jìn)行配置,指定可編程變長比特流處理器的工作模式,并對比特位指針位置和比特流輸入或輸出數(shù)據(jù)進(jìn)行初始化操作;在解包模式下,主控制器產(chǎn)生操作和操作數(shù)信息,并控制比特流存儲器的讀操作,從比特流存儲器讀到的可變長比特流數(shù)據(jù)作為處理變長比特流的數(shù)據(jù)通路的輸入;在打包模式下,主控制器產(chǎn)生操作和操作數(shù)信息,所述的操作和操作數(shù)信息包括輸入的數(shù)據(jù)值和數(shù)據(jù)比特位長度,并控制比特流存儲器的寫操作;寄存器組,用于存儲處理變長比特流的數(shù)據(jù)通路和主控制器之間的各種數(shù)據(jù)信息。
2.如權(quán)利要求1所述的可編程變長比特流處理器,其特征在于所述的寄存器組包括配置寄存器,用于存放主控制器對處理變長比特流的數(shù)據(jù)通路和地址發(fā)生器的配置信息;通用寄存器組,用于存放處理變長比特流的數(shù)據(jù)通路的操作數(shù)信息,包括輸入或輸出的數(shù)據(jù)值和數(shù)據(jù)比特位長度;比特流輸入或輸出FIFO寄存器組,與比特流存儲器和處理變長比特流的數(shù)據(jù)通路相連,用于存放處理變長比特流的數(shù)據(jù)通路的輸入或輸出比特流數(shù)據(jù);控制及狀態(tài)寄存器,用于存放處理變長比特流的數(shù)據(jù)通路的工作控制信息及反饋狀態(tài)信息;比特位指針寄存器,用于存放當(dāng)前比特流輸入或輸出FIFO寄存器比特位的位置。
3.如權(quán)利要求2所述的可編程變長比特流處理器,其特征在于所述的配置寄存器包括比特流存儲器基址寄存器,用于存放可變長比特流數(shù)據(jù)在比特流存儲器中的基地址;比特流比特?cái)?shù)寄存器,用于存放所需輸入的比特流比特總數(shù)或總共輸出的比特流比特總數(shù);工作模式位,用于指示可編程變長比特流處理器工作于解包或打包模式。
4.如權(quán)利要求2或3所述的可編程變長比特流處理器,其特征在于所述的處理變長比特流的數(shù)據(jù)通路包括指針處理電路,用于計(jì)算輸入比特流數(shù)據(jù)或輸出比特流數(shù)據(jù)的比特位指針值,并控制及選擇輸入比特流數(shù)據(jù)或輸出比特流數(shù)據(jù)的范圍;比特流輸入或輸出FIFO寄存器選擇電路,用于從比特流輸入或輸出FIFO寄存器組選出處理變長比特流的數(shù)據(jù)通路的輸入或輸出寄存器;數(shù)據(jù)移位電路,用于選擇預(yù)定比特位長度的輸入比特流數(shù)據(jù)或輸出比特流數(shù)據(jù);位串連接電路,用于順序地連接預(yù)定比特位長度從數(shù)據(jù)移位電路出來的輸入比特流數(shù)據(jù)或輸出比特流數(shù)據(jù);前綴計(jì)數(shù)電路,用于統(tǒng)計(jì)預(yù)定長度的比特流數(shù)據(jù)的“0”比特前綴或“1”比特前綴的比特位個(gè)數(shù)。
5.如權(quán)利要求4所述的可編程變長比特流處理器,其特征在于所述的比特流輸入或輸出FIFO寄存器組包括至少兩個(gè)寄存器,根據(jù)比特位指針寄存器的值從比特流輸入或輸出FIFO寄存器中依次選擇一對寄存器;所述的數(shù)據(jù)通路的數(shù)據(jù)移位電路包括兩個(gè)獨(dú)立的移位處理單元,用于對從比特流輸入或輸出寄存器FIFO中選擇的寄存器對中的2路數(shù)據(jù)分別進(jìn)行移位處理;在解包模式下,把兩路輸出寄存器的數(shù)據(jù)依照順序依次送給兩個(gè)獨(dú)立的移位處理單元,先從當(dāng)前寄存器中依次抽取出預(yù)定長度的可變長比特流數(shù)據(jù)來進(jìn)行解包,當(dāng)指針從當(dāng)前寄存器移到另一個(gè)寄存器時(shí),產(chǎn)生寫信號要求主控制器在下一個(gè)時(shí)鐘到來時(shí)把當(dāng)前寄存器的內(nèi)容以比特流存儲器中的新數(shù)據(jù)更新;在打包模式下,兩個(gè)獨(dú)立的移位處理單元的輸出分別寫回給所選擇的輸入寄存器,先依次從指針位置開始由低位到高位把生成的可變長比特流數(shù)據(jù)推入當(dāng)前寄存器中,當(dāng)指針從當(dāng)前寄存器移到另一個(gè)寄存器時(shí),并產(chǎn)生寫信號反饋給主控制器,使主控制器在下一個(gè)時(shí)鐘到來時(shí)把當(dāng)前的內(nèi)容寫到比特流存儲器中去。
6.如權(quán)利要求4所述的可編程變長比特流處理器,其特征在于所述的數(shù)據(jù)移位電路具有5個(gè)選擇器級,用于實(shí)現(xiàn)輸入比特流數(shù)據(jù)的預(yù)定比特位長度的移位,移位后空出的比特位用填補(bǔ)比特位數(shù)據(jù)來填補(bǔ)。
7.如權(quán)利要求1-3之一所述的可編程變長比特流處理器,其特征在于所述的主控制器還包括異常中斷請求電路,用于在解包模式或打包模式時(shí),相應(yīng)并解決處理變長比特流的數(shù)據(jù)通路的異常中斷請求。
8.如權(quán)利要求1-3之一所述的可編程變長比特流處理器,其特征在于所述的主控制器還包括正常結(jié)束請求電路,用于在解包模式或打包模式時(shí),相應(yīng)并解決處理變長比特流的數(shù)據(jù)通路的正常結(jié)束請求。
9.如權(quán)利要求3所述的可編程變長比特流處理器,其特征在于在解包模式下,完成如下操作在不確定可變長比特流數(shù)據(jù)的比特位長度時(shí),重復(fù)執(zhí)行數(shù)據(jù)比特位長度不等的抽取操作,抽取出預(yù)定長度的可變長比特流數(shù)據(jù),比特流存儲器基址寄存器和比特流比特?cái)?shù)寄存器的值保持不變;在確定可變長比特流數(shù)據(jù)的比特位長度時(shí),執(zhí)行固定比特位長度的抽取操作,抽取出預(yù)定長度的可變長比特流數(shù)據(jù),并更新比特流存儲器基址寄存器和比特流比特?cái)?shù)寄存器的值;在確定可變長比特流數(shù)據(jù)的比特位長度時(shí),執(zhí)行指針移動操作,直接跳過可變長比特流數(shù)據(jù),并更新比特流存儲器基址寄存器和比特流比特?cái)?shù)寄存器的值;在計(jì)算可變長比特流數(shù)據(jù)的比特前綴特征時(shí),設(shè)定比特前綴位長度范圍,執(zhí)行“0”比特前綴或“1”比特前綴計(jì)數(shù)操作,統(tǒng)計(jì)得到下一個(gè)可變長比特流數(shù)據(jù)的“0”比特前綴或“1”比特前綴的比特位個(gè)數(shù),比特流存儲器基址寄存器和比特流比特?cái)?shù)寄存器的值保持不變。
10.如權(quán)利要求9所述的可編程變長比特流處理器,其特征在于所述的主控制器是微處理器或有限狀態(tài)機(jī)。
全文摘要
一種可編程變長比特流處理器,該可編程變長比特流處理器包括主控制器、地址發(fā)生器、比特流數(shù)據(jù)存儲器、寄存器組和處理變長比特流的數(shù)據(jù)通路,主控制器控制整個(gè)可編程變長比特流處理器的工作過程,提供處理變長比特流數(shù)據(jù)的操作信息和操作數(shù),處理變長比特流的數(shù)據(jù)通路是處理器的執(zhí)行單元,完成對變長比特流數(shù)據(jù)的各種處理,包括在限定長度范圍內(nèi)的可變長比特流數(shù)據(jù)的打包、解包、和“0”比特前綴或“1”比特前綴的比特位計(jì)算等,并把結(jié)果寫回主控制器;從而可高效處理有關(guān)可變長比特流數(shù)據(jù)的操作,使它們都可在一個(gè)時(shí)鐘周期內(nèi)完成。本發(fā)明能夠加快處理速度,有效滿足實(shí)時(shí)處理可變長比特流數(shù)據(jù)的打包或解包操作。
文檔編號H04L1/00GK1972168SQ20051006170
公開日2007年5月30日 申請日期2005年11月25日 優(yōu)先權(quán)日2005年11月25日
發(fā)明者嚴(yán)曉浪, 秦興, 彭劍英, 劉大可, 葛海通, 羅曉華 申請人:杭州中天微系統(tǒng)有限公司