專利名稱:熵編碼控制方法及熵編碼電路的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及視頻編碼技術(shù),特別涉及基于H.264標準的一種熵編碼控制方法和一種熵編碼電路。
背景技術(shù):
基于H.264視頻編解碼標準中,編碼對象是視頻信號中的語法元素(SE),分為殘差SE和非殘差SE。
其中,殘差SE包括表示當前塊是否有非零系數(shù)的CBF、表示當前位置上的非0系數(shù)的絕對值減1的CALM、表示當前位置上的系數(shù)是否為0的SCF、表示當前位置上的系數(shù)是否為最后一個非0系數(shù)的LSCF等類別的數(shù)據(jù)等;非殘差SE包括表示前后向預(yù)測的參考圖像索引的refIdx、表示當前亮度和色度塊的直流和交流分量的非零情況的CBP等類別的數(shù)據(jù)。
現(xiàn)有的熵編碼過程中,分別對非殘差SE和殘差SE采用不同的編碼方式進行編碼。
例如,對部分非殘差SE采用定長(Fix-length)編碼、對另一部分非殘差SE采用格魯姆(Exp-golomb)編碼、對殘差SE采用自適應(yīng)變長(Cavlc)編碼;或者,對部分非殘差SE采用定長(Fix-length)編碼、對部分非殘差SE采用格魯姆(Exp-golomb)編碼、對其它非殘差SE和所有殘差SE采用自適應(yīng)算術(shù)(Cabac)編碼。
也就是說,熵編碼電路中通常包括由定長編碼、格魯姆編碼和自適應(yīng)變長編碼所需的邏輯功能單元;或者包括由定長編碼、格魯姆編碼和自適應(yīng)算術(shù)編碼所需的邏輯功能單元;即自適應(yīng)變長編碼和自適應(yīng)算術(shù)編碼為二選一的編碼方式。
如圖1所示,現(xiàn)有技術(shù)中以非殘差SE為編碼對象的定長編碼過程包括接收非殘差SE;查找定長表,即根據(jù)預(yù)設(shè)的長度將表示非殘差SE的二進制比特串分段輸出,分段輸出的比特串即為編碼結(jié)果;對輸出的編碼結(jié)果進行碼流拼接。
如圖2所示,現(xiàn)有技術(shù)中以非殘差SE為編碼對象的格魯姆編碼過程包括接收非殘差SE;查找格魯姆表中,與非殘差SE對應(yīng)的編碼結(jié)果輸出;對輸出的編碼結(jié)果進行碼流拼接。
如圖3所示,現(xiàn)有技術(shù)中以殘差SE為編碼對象的自適應(yīng)變長編碼過程包括接收殘差SE;對殘差SE進行數(shù)據(jù)分析并取絕對值;查找變長表中,與非殘差SE對應(yīng)的編碼結(jié)果輸出;對輸出的編碼結(jié)果進行碼流拼接。其中,變長表中包括Coeff_token表、Trailing_ones_sign_flag表、Level表、Run_before表,分別針對不同的殘差SE。
如圖4所示,現(xiàn)有技術(shù)中以殘差SE和非殘差SE為編碼對象的自適應(yīng)算術(shù)編碼過程包括接收殘差SE或非殘差SE;如果當前接收的SE為殘差SE,則對殘差SE取絕對值并進行數(shù)據(jù)分析,再進行二進制化查表,如果當前接收的SE為非殘差SE,則直接進行二進制化查表;進行概率模型查詢,即根據(jù)二進制化查表得到的表示殘差SE或非殘差SE的二進制比特串,查找概率模型表,得到每個比特串對應(yīng)的概率模型;根據(jù)查找到的概率模型更新對應(yīng)的概率空間;根據(jù)概率空間更新結(jié)果進行歸一化處理生成碼流;對作為編碼結(jié)果的碼流進行碼流拼接。
然而,上述的每一種編碼方式,均是采用串行處理方式,即對接收到的SE編碼完成并進行碼流拼接輸出后,才接收下一個SE,從而使得熵編碼的效率不高。也就是說,對于實現(xiàn)每一種編碼方式的電路,包括多個順序相連的實現(xiàn)不同邏輯處理過程的邏輯功能單元。當?shù)谝粋€邏輯功能單元接收并處理接收到的數(shù)據(jù)后,輸出給與其相鄰的后一個邏輯功能單元并開始等待,由后續(xù)的一個或多個邏輯功能單元順序?qū)υ摂?shù)據(jù)進行處理,當最后一個邏輯功能單元結(jié)束其處理并輸出結(jié)果后,第一個邏輯功能單元才停止等待,再次接收外部輸入的待處理數(shù)據(jù)。這樣,使得電路中的每個邏輯功能單元都需要進行長時間的等待,從而降低了熵編碼效率。
而且,上述不同的編碼方式之間存在部分相同的邏輯處理過程,但現(xiàn)有技術(shù)中,仍然通過獨立的多個邏輯功能單元來分別實現(xiàn)上述相同的邏輯處理過程,即實現(xiàn)每個編碼方式的電路之間相互獨立,從而造成了硬件資源的浪費。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的一個主要目的在于,提供一種熵編碼控制方法,能夠提高熵編碼的效率。
本發(fā)明的另一個主要目的在于,提供一種熵編碼電路,能夠提高熵編碼的效率。
本發(fā)明的再一個主要目的在于,提供另一種熵編碼電路,能夠提高熵編碼的效率。
根據(jù)上述的一個主要目的,本發(fā)明提供了一種熵編碼控制方法,每一個邏輯功能單元進行相應(yīng)的邏輯處理過程,包括每一個邏輯功能單元,在其已產(chǎn)生了處理結(jié)果、且與其相鄰的后一個邏輯功能單元的邏輯處理過程已完成時,將該邏輯功能單元得到的所述處理結(jié)果提供給與其相鄰的后一個邏輯功能單元。
進一步為每一個邏輯功能單元設(shè)置一個寄存器,存儲該邏輯功能單元產(chǎn)生的所述處理結(jié)果;所述寄存器包括一個標志位,用于表示與該邏輯功能單元相鄰的后一個邏輯功能單元是否能夠從該寄存器中讀取所述處理結(jié)果;每一個邏輯功能單元進一步在其對應(yīng)的邏輯處理過程已完成時,產(chǎn)生表示邏輯處理過程已完成的控制信號;所述將該邏輯功能單元得到的處理結(jié)果提供給與其相鄰的后一個邏輯功能單元為
每一個邏輯功能單元在與其相鄰的前一個邏輯功能單元的寄存器標志位為表示可讀取的數(shù)值、該邏輯功能單元產(chǎn)生了所述處理結(jié)果、且與該邏輯功能單元相鄰的后一個邏輯功能單元已產(chǎn)生了所述控制信號時,該邏輯功能單元存儲所述處理結(jié)果,并將其對應(yīng)的寄存器標志位設(shè)置為表示可讀取的數(shù)值,允許與其相鄰的后一個邏輯功能單元從該邏輯功能單元對應(yīng)的寄存器中讀取所述處理結(jié)果。
每一個邏輯功能單元在其未產(chǎn)生所述處理結(jié)果,但與其相鄰的后一個邏輯功能單元已產(chǎn)生了所述控制信號時,則將該邏輯功能單元對應(yīng)的寄存器標志位設(shè)置為表示不可讀取的數(shù)值,否則,保持寄存器標志位的值不變。
所述編碼方式為自適應(yīng)算術(shù)編碼,所述邏輯功能單元包括接收數(shù)據(jù)單元、絕對值運算單元、數(shù)據(jù)分析單元、二進制化查表單元、概率模型查詢單元、概率空間更新單元、歸一化處理生成碼流單元、碼流拼接單元;或者,所述編碼方式為變長編碼,所述邏輯功能單元包括接收數(shù)據(jù)單元、絕對值運算單元、數(shù)據(jù)分析單元、變長表查詢生成碼流單元、碼流拼接單元;或者,所述編碼方式為格魯姆編碼,所述邏輯功能單元包括接收數(shù)據(jù)單元、格魯姆表查詢單元、碼流拼接單元;或者,所述編碼方式為定長編碼,所述邏輯功能單元包括接收數(shù)據(jù)單元、定長表查詢單元、碼流拼接單元。
根據(jù)上述的另一個主要目的,本發(fā)明提供了一種熵編碼電路,順序包括如下邏輯功能單元接收數(shù)據(jù)單元、絕對值運算單元、數(shù)據(jù)分析單元、二進制化查表單元、概率模型查詢單元、概率空間更新單元、歸一化處理生成碼流單元、碼流拼接單元;各邏輯功能單元在其已產(chǎn)生了作為與其相鄰的后一個邏輯功能單元的待處理數(shù)據(jù)的處理結(jié)果、且與其相鄰的后一個邏輯功能單元的邏輯處理過程已完成時,將其得到的處理結(jié)果輸出給與其相鄰的后一個邏輯功能單元;其中,與所述接收數(shù)據(jù)單元相鄰的前一個邏輯功能單元為外部電路的輸入,與所述碼流拼接單元相鄰的后一個邏輯功能單元為向外部電路的輸出。
進一步分別在每個邏輯功能單元的輸出端設(shè)置寄存器1~寄存器8,分別存儲對應(yīng)的邏輯功能單元產(chǎn)生的所述處理結(jié)果;分別對應(yīng)不同邏輯功能單元的寄存器1~寄存器8,還分別與對應(yīng)的邏輯功能單元相鄰的后一個邏輯功能單元的輸入端相連;所述寄存器1~寄存器8,分別包括標志位1~標志位8,分別表示寄存器1~寄存器8是否可讀?。桓鬟壿嫻δ軉卧M一步在其對應(yīng)的邏輯處理過程已完成時,分別產(chǎn)生表示邏輯處理過程已完成的控制信號;輸出端與寄存器i相連的邏輯功能單元,在寄存器i-1的標志位為表示可讀取的數(shù)值、該邏輯功能單元產(chǎn)生了所述處理結(jié)果、且輸出端與寄存器i+1相連的邏輯功能單元已產(chǎn)生了所述控制信號時,將寄存器i的標志位設(shè)置為表示可讀取的數(shù)值,并存儲所述處理結(jié)果;其中,i為大于等于1且小于等于8的正整數(shù)。
進一步在接收數(shù)據(jù)單元的輸出端設(shè)置一個寄存器1’,寄存器1’與二進制化查找表單元的輸入端相連,具有一所述標志位;如果二進制化查找表單元當前處理的數(shù)據(jù)為非殘差SE,則確定與其相鄰的前一個邏輯功能單元為接收數(shù)據(jù)單元;如果二進制化查找表單元當前處理的數(shù)據(jù)為殘差SE,則確定與其相鄰的前一個邏輯功能單元為數(shù)據(jù)分析單元;接收數(shù)據(jù)單元根據(jù)接收到的SE類型,將殘差SE存儲到寄存器1中,將非殘差SE存儲到寄存器1’中;如果已接收的數(shù)據(jù)為殘差SE,則確定與其相鄰的后一個邏輯功能單元為絕對值運算單元;如果已接收的數(shù)據(jù)為非殘差SE,則確定與其相鄰的后一個邏輯功能單元為二進制化查找表單元。
輸出端與寄存器i相連的邏輯功能單元,在其未產(chǎn)生所述處理結(jié)果、但輸出端與寄存器i+1相連的邏輯功能單元已產(chǎn)生了所述控制信號時,進一步將寄存器i的標志位設(shè)置為表示不可讀取的數(shù)值,否則,保持寄存器i的標志位的值不變。
該電路在接收數(shù)據(jù)單元與碼流拼接單元之間,進一步包括多表查找表單元,用于進行定長查找表和格魯姆查找表;多表查找表單元的輸出端連接一寄存器,該寄存器具有一所述標志位。
所述多表查找表單元進一步用于進行變長查找表。
據(jù)上述的再一個主要目的,本發(fā)明提供了另一種熵編碼電路,順序包括如下邏輯功能單元接收數(shù)據(jù)單元、絕對值運算單元、數(shù)據(jù)分析單元、變長查找表單元、碼流拼接單元;其特征在于,各邏輯功能單元在其已產(chǎn)生了處理結(jié)果、且與其相鄰的后一個邏輯功能單元的邏輯處理過程已完成時,將其得到的處理結(jié)果輸出給與其相鄰的后一個邏輯功能單元;其中,與所述接收數(shù)據(jù)單元相鄰的前一個邏輯功能單元為外部電路的輸入,與所述碼流拼接單元相鄰的后一個邏輯功能單元為向外部電路的輸出。
進一步分別在每個邏輯功能單元的輸出端設(shè)置寄存器1~寄存器5,分別存儲對應(yīng)的邏輯功能單元產(chǎn)生的所述處理結(jié)果;分別對應(yīng)不同邏輯功能單元的寄存器1~寄存器5,還分別與對應(yīng)的邏輯功能單元相鄰的后一個邏輯功能單元的輸入端相連;所述寄存器1~寄存器5,分別包括標志位1~標志位5,分別表示寄存器1~寄存器5是否可讀??;各邏輯功能單元進一步在其對應(yīng)的邏輯處理過程已完成時,分別產(chǎn)生表示邏輯處理過程已完成的控制信號;輸出端與寄存器j相連的邏輯功能單元,在寄存器j-1的標志位為表示可讀取的數(shù)值、該邏輯功能單元產(chǎn)生了所述處理結(jié)果、且輸出端與寄存器j+1相連的邏輯功能單元已產(chǎn)生了所述控制信號時,將寄存器j的標志位設(shè)置為表示可讀取的數(shù)值,并存儲所述處理結(jié)果;其中,j為大于等于1且小于等于5的正整數(shù)。
輸出端與寄存器j相連的邏輯功能單元,在其未產(chǎn)生所述處理結(jié)果、但輸出端與寄存器j+1相連的邏輯功能單元已產(chǎn)生了所述控制信號時,進一步將寄存器i的標志位設(shè)置為表示不可讀取的數(shù)值,否則,保持寄存器j的標志位的值不變。
該電路在接收數(shù)據(jù)單元與碼流拼接單元之間,進一步包括定長查找表單元,用于進行定長查找表;格魯姆表查找表單元,用于進行格魯姆查找表;定長查找表單元和格魯姆表查找表單元的輸出端連接一寄存器,該寄存器為與變長查找表單元的輸出端相連的寄存器。
由上述技術(shù)方案可見,本發(fā)明在每個邏輯功能單元產(chǎn)生了處理結(jié)果、該處理結(jié)果為與其相鄰的后一個邏輯功能單元的待處理數(shù)據(jù)、且與其相鄰的后一個邏輯功能單元中的邏輯處理過程已完成時,將該邏輯功能單元產(chǎn)生的處理結(jié)果提供給與其相鄰的后一個邏輯功能單元,從而在實現(xiàn)了流水線方式的同時,避免了流水線堵塞及熵編碼結(jié)果錯誤,相比于現(xiàn)有串行方式的熵編碼處理,提高了處理效率。
本發(fā)明可通過為每個邏輯功能單元設(shè)置一控制信號,用于表示該邏輯功能單元是否完成其對應(yīng)的邏輯處理過程;同時,為每個邏輯功能單元設(shè)置了一個寄存器,用于存儲該邏輯功能單元生成的作為與其相鄰的下一個邏輯功能單元待處理數(shù)據(jù)的處理結(jié)果,且該寄存器中具有一標志位,用于表示與其相鄰的下一個邏輯功能單元是否能夠從該寄存器中讀取作為其待處理數(shù)據(jù)的處理結(jié)果。這樣,無需在電路中增加其他硬件,即可簡單實現(xiàn)本發(fā)明的技術(shù)方案,從而使得本發(fā)明的技術(shù)方案易于實現(xiàn),且成本較低。
本發(fā)明還將熵編碼中的多種編碼方式中的相同邏輯處理過程,復(fù)用在相同的硬件資源中,從而節(jié)省了硬件資源。
圖1為現(xiàn)有技術(shù)中定長編碼過程的示意圖。
圖2為現(xiàn)有技術(shù)中格魯姆編碼過程的示意圖。
圖3為現(xiàn)有技術(shù)中變長變碼過程的示意圖。
圖4為現(xiàn)有技術(shù)中自適應(yīng)算術(shù)編碼過程的示意圖。
圖5為本發(fā)明實施例中熵編碼控制方法的流程圖。
圖6為本發(fā)明實施例中自適應(yīng)算術(shù)編碼電路的示意圖。
圖7為為發(fā)明實施例中自適應(yīng)變長編碼電路的示意圖。
圖8為本發(fā)明實施例中包括4種編碼電路的熵編碼電路示意圖。
具體實施例方式
為使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下參照附圖并舉實施例,對本發(fā)明進一步詳細說明。
本發(fā)明實施例中,對現(xiàn)有熵編碼中如圖1~圖4所示的4種編碼方式,均采用流水線方式替代串行方式,從而能夠提高熵編碼效率。而且,對于不同的編碼方式之間存在的相同邏輯處理過程,通過復(fù)用相同的硬件資源來實現(xiàn),從而能夠提高硬件資源利用率。
下面,先對本發(fā)明實施例中基于流水線方式的熵編碼控制方法進行詳細說明。
對于現(xiàn)有熵編碼中如圖1~圖4所示的4種編碼方式,可以分別將其中的多個邏輯處理過程劃分為多個流水線級,從而實現(xiàn)流水線方式的編碼過程。
但是,對于上述4種編碼方式,均可能存在不同邏輯處理過程所占用的單元時間數(shù)量互不相同的問題。因此,如果簡單地將每個邏輯處理過程所占用的單元時間數(shù)量作為該流水線級的傳遞周期,即以每個邏輯處理過程的完成時間作為傳遞周期的結(jié)束時間,則會由于各流水線級的傳遞周期不同而造成流水線中的傳遞阻塞,從而無法實現(xiàn)流水線各級之間的正常傳遞。
然而,如果按照現(xiàn)有方式,將所有流水線級對應(yīng)的邏輯處理過程中,耗時最長的一個邏輯處理過程所需處理周期作為統(tǒng)一的傳遞周期,則會使得其他邏輯處理所對應(yīng)的流水線級進行不必要的等待,從而使得流水線的傳遞周期較長,降低了流水線的效率,而且,還會使得熵編碼結(jié)果出現(xiàn)錯誤。
以如圖4所示的自適應(yīng)算術(shù)編碼為例,其數(shù)據(jù)分析邏輯處理過程耗時最長,通常占用16個單元時間,而其他邏輯處理過程一般均只需要占用1~2個單元時間。因此,如果將各流水線級之間的傳遞周期設(shè)置為16個單元時間,從而使得其他邏輯處理過程所對應(yīng)的流水線級等待大量的單元時間。
而且,數(shù)據(jù)分析邏輯處理過程在其完成最終處理之前的每一個單元時間均可能產(chǎn)生一個處理結(jié)果,作為其下一級的二進制化查找表邏輯過程的待處理數(shù)據(jù)。也就是說,如果數(shù)據(jù)分析邏輯處理過程的結(jié)束時間作為傳遞周期的結(jié)束時間,雖然能夠保證各流水線級對應(yīng)的邏輯處理過程的同步,但對于二進制化查找表過程來說,只能夠?qū)崿F(xiàn)對16個待處理數(shù)據(jù)中的1個的二進制化查找表,從而使得最終的熵編碼結(jié)果不正確。
而且,對于不同的SE,每個邏輯處理過程所占用的單位時間數(shù)量也可能不同,例如,對于當前SE的歸一化處理生成碼流的邏輯處理過程可能占用6個單元時間,而對于下一個SE的歸一化處理生成碼流的邏輯處理過程可能只需4個單元時間,因此,如果將傳遞周期設(shè)置為固定的長度,還會造成部分流水線級的長時間等待,造成了時間和硬件資源的浪費。
因此,本發(fā)明實施例中,實現(xiàn)流水線級之間的傳遞應(yīng)當滿足如下條件對于實現(xiàn)每個邏輯處理過程的邏輯功能單元來說,如果該邏輯功能單元產(chǎn)生了處理結(jié)果、該處理結(jié)果為與其相鄰的后一個邏輯功能單元的待處理數(shù)據(jù)、且與其相鄰的后一個邏輯功能單元中的邏輯處理過程已完成,則將該邏輯功能單元產(chǎn)生的處理結(jié)果提供給與其相鄰的后一個邏輯功能單元。
如果將每一個邏輯處理過程或邏輯功能單元看作一個流水線級、將與每個邏輯功能單元相鄰的前一個邏輯功能單元看作其上一級流水線級、將與每個邏輯功能單元相鄰的后一個邏輯功能單元看作其下一級流水線級,則對于每一級流水線級來說,如果該流水線級已產(chǎn)生了作為下一級待處理數(shù)據(jù)的處理結(jié)果、且該流水線級的下一級所對應(yīng)的邏輯處理過程已完成,則該流水線級將得到的處理結(jié)果傳遞給其下一級。
需要明確的是,在熵編碼過程中,每一個邏輯處理過程產(chǎn)生了作為下一級待處理數(shù)據(jù)的處理結(jié)果時,該邏輯處理過程并不一定已完成。
仍以如圖4所示的自適應(yīng)算術(shù)編碼為例,假設(shè)當前的SE為一個4×4的色度矩陣,則對于數(shù)據(jù)分析邏輯處理過程對應(yīng)的流水線級來說,其絕對值計算邏輯處理過程逐一計算一次接收到的矩陣中16個元素的絕對值,經(jīng)過16個單元時間計算得到16個元素的絕對值;該流水線級對應(yīng)的數(shù)據(jù)分析邏輯處理過程,逐一對一次接收到的矩陣中16個元素絕對值進行數(shù)據(jù)分析,經(jīng)過16個單元時間連續(xù)得到16個作為二進制化查找表過程待處理數(shù)據(jù)的數(shù)據(jù)分析結(jié)果;其下一級二進制化查找表邏輯處理過程,每1個單元時間即可完成1次二進制查找表。
因此,當數(shù)據(jù)分析邏輯處理過程對應(yīng)的流水線級每產(chǎn)生一個數(shù)據(jù)分析結(jié)果,絕對值計算邏輯處理過程也同時產(chǎn)生一個絕對值,且二進制化查找表邏輯處理過程已完成,則將得到的數(shù)據(jù)分析結(jié)果傳遞給二進制化查找表邏輯處理過程所對應(yīng)的流水線級;如果絕對值計算邏輯處理過程已產(chǎn)生了16個絕對值,絕對值計算邏輯處理過程能夠從其上一級獲取下一個SE,且數(shù)據(jù)分析邏輯處理過程已完成,則數(shù)據(jù)分析邏輯處理過程對應(yīng)的流水線級即可得到絕對值計算邏輯處理過程對應(yīng)的流水線級傳遞下來的處理結(jié)果。
可見,如果當前的SE為一個4×4的色度矩陣,絕對值計算邏輯處理過程與數(shù)據(jù)分析邏輯處理過程分別對應(yīng)的兩級流水線級之間,傳遞周期為16個單元時間,而數(shù)據(jù)分析邏輯處理過程與二進制化查找表邏輯處理過程分別對應(yīng)的兩級流水線級之間,傳遞周期為1個單元時間。
這樣,不同的兩級流水線級之間的傳遞周期雖然會不同,但能夠保證熵編碼過程的正常運行,不會出現(xiàn)熵編碼結(jié)果錯誤。而且,對于不同的SE,流水線級之間的傳遞周期能夠動態(tài)變化。
基于上述原理,本發(fā)明實施例為每一級流水線級設(shè)置了一個控制信號,用于表示該流水線級是否完成其對應(yīng)的邏輯處理過程;同時,為每一級流水線級設(shè)置了一個寄存器,用于存儲該流水線級生成的作為下一級待處理數(shù)據(jù)的處理結(jié)果,且該寄存器中具有一標志位,用于表示下一級流水線級是否能夠從該寄存器中讀取作為其待處理數(shù)據(jù)的處理結(jié)果。
以下,對上述控制信號和寄存器進行舉例說明。
第i級流水線級對應(yīng)的控制信號DONEi=1時,表示第i級流水線級對應(yīng)的邏輯處理過程已完成;DONEi=0時,表示第i級流水線級對應(yīng)的邏輯處理過程未完成,i為大于0且小于流水線級總數(shù)的正整數(shù)。
第i級流水線級對應(yīng)的寄存器i的標志位VALIDi=1時,表示能夠從寄存器i中讀取作為其待處理數(shù)據(jù)的處理結(jié)果,即1位表示可讀取的數(shù)值,第i+1級流水線級能夠進行第i級流水線級與第i+1級流水線級之間的傳遞;VALIDi=0時,表示第i+1級流水線級不能從寄存器i中讀取作為其待處理數(shù)據(jù)的處理結(jié)果,即0位表示不可讀取的數(shù)值,第i+1級流水線級不能進行第i級流水線級與第i+1級流水線級之間的傳遞。
根據(jù)上述的流水線級之間的傳遞應(yīng)當滿足的條件,VALIDi的賦值過程可以為在第i級流水線級產(chǎn)生了其下一級的待處理數(shù)據(jù)、DONE(i+1)=1、且VALID(i-1)=1時,令VALIDi=1;在第i級流水線級未產(chǎn)生其下一級的待處理數(shù)據(jù)、且DONE(i+1)=1時,令VALIDi=0;其余情況,保持VALIDi的當前取值不變。
這樣,第i+1級流水線級即可在VALIDi=1時,從第i級流水線級獲得待處理數(shù)據(jù),從而實現(xiàn)了所有的流水線級同時實現(xiàn)相互之間的傳遞,保證每兩級相鄰的流水線級的處理速度相同,即可保證流水線不出現(xiàn)堵塞。
而且,控制信號是根據(jù)當前處理情況實時產(chǎn)生的,從而使得傳遞周期的長度是隨著實際情況的不同而動態(tài)變化的,因而能夠最大限度地避免時間和硬件資源的浪費。
下面,對本發(fā)明實施例中的熵編碼控制方法進行詳細說明。
圖5為本發(fā)明實施例中熵編碼控制方法的流程圖。如圖5所示,本實施例中的熵編碼控制方法包括以下步驟步驟501,將編碼方式中的多個邏輯處理過程劃分為多個流水線級,并為每一級流水線級設(shè)置一個寄存器,用于存儲對應(yīng)流水線級所對應(yīng)的邏輯處理過程產(chǎn)生的處理結(jié)果,該寄存器包括一個標志位,用于表示下一級流水線級是否能夠從該寄存器中讀取作為其待處理數(shù)據(jù)的處理結(jié)果。
其中,劃分為流水線級即為確定實現(xiàn)不同邏輯處理過程的邏輯功能單元。
本步驟中,如果以如圖4所示的自適應(yīng)算術(shù)編碼方式為例,則劃分的流水線級最多可以為8級,分別對應(yīng)如下邏輯處理過程接收數(shù)據(jù)、絕對值運算、數(shù)據(jù)分析、二進制化查表、概率模型查詢、概率空間更新、歸一化處理生成碼流、碼流拼接。
同理,本步驟中如果以如圖3所示的變長編碼方式為例,則劃分的流水線級最多可以為5級,分別對應(yīng)如下邏輯處理過程接收數(shù)據(jù)、絕對值運算、數(shù)據(jù)分析、變長表查詢生成碼流、碼流拼接;如圖2所示的格魯姆編碼方式為例,則劃分的流水線級最多可以為3級,分別對應(yīng)如下邏輯處理過程接收數(shù)據(jù)、格魯姆表查詢生成碼流、碼流拼接;如圖1所示的定長編碼方式為例,則劃分的流水線級最多可以為3級,分別對應(yīng)如下邏輯處理過程接收數(shù)據(jù)、定長表查詢生成碼流、碼流拼接。
步驟502,每一級流水線級執(zhí)行其對應(yīng)的邏輯處理過程,如果產(chǎn)生了作為下一級待處理數(shù)據(jù)的處理結(jié)果,則將該處理結(jié)果存儲到該流水線級對應(yīng)的寄存器中;如果該級流水線級對應(yīng)的邏輯處理過程結(jié)束,則產(chǎn)生一個表示邏輯處理過程已完成的控制信號。
本步驟中,如果該流水線級未產(chǎn)生作為下一級待處理數(shù)據(jù)的處理結(jié)果,但其下一級流水線級已產(chǎn)生了一個表示邏輯處理過程已完成的控制信號,則將該流水線級對應(yīng)的寄存器標志位設(shè)置為表示不可讀取的數(shù)值,否則,保持寄存器標志位的值不變。
步驟503,每一級流水線級在其上一級的寄存器標志位為表示可讀取的數(shù)值、該級流水線級產(chǎn)生了作為下一級待處理數(shù)據(jù)的處理結(jié)果、且其下一級流水線級已產(chǎn)生了一個表示邏輯處理過程已完成的控制信號時,存儲其產(chǎn)生的處理結(jié)果,并將該級流水線級的寄存器標志位設(shè)置為表示可讀取的數(shù)值,允許其下以及流水線級從該寄存器中讀取存儲的處理結(jié)果。
本步驟之后,每一級流水線級在其上一級寄存器的標志位為表示可讀取的數(shù)值時,即可讀取該寄存器中存儲的處理結(jié)果,開始下一個傳遞周期所對應(yīng)的邏輯處理過程。
至此,本流程結(jié)束。
上述流程中的步驟502~步驟503為一個可多次循環(huán)執(zhí)行的過程。在該過程中,每一級流水線級均能夠在該流水線級已產(chǎn)生了作為下一級待處理數(shù)據(jù)的處理結(jié)果、該流水線級的上一級已產(chǎn)生了作為該流水線級待處理數(shù)據(jù)的處理結(jié)果、且該流水線級的下一級所對應(yīng)的邏輯處理過程已完成時,實現(xiàn)與其下一級流水線級之間的傳遞;每一級流水線級均能夠在該流水線級的上一級已產(chǎn)生了作為該流水線級待處理數(shù)據(jù)的結(jié)果、該流水線級的上一級能夠從其上一級獲得待處理數(shù)據(jù)、且該流水線級所對應(yīng)的邏輯處理過程已完成時,實現(xiàn)與其上一級流水線級之間的傳遞。從而在不出現(xiàn)流水線堵塞及熵編碼結(jié)果錯誤的前提下,實現(xiàn)了流水線方式的熵編碼處理。相比于現(xiàn)有串行方式的熵編碼處理,提高了處理效率。
實際應(yīng)用中,如圖4所示的自適應(yīng)算術(shù)編碼方式所占用的單元時間最多,因此,如果將上述控制方法應(yīng)用到該電路中,則可以大大提高熵編碼的效率。
圖6為本發(fā)明實施例中自適應(yīng)算術(shù)編碼電路的示意圖。如圖6所示,本實施例中的自適應(yīng)算術(shù)編碼電路根據(jù)自適應(yīng)算術(shù)編碼方式中的邏輯處理過程,劃分為如下邏輯單元接收數(shù)據(jù)單元、絕對值運算單元、數(shù)據(jù)分析單元、二進制化查表單元、概率模型查詢單元、概率空間更新單元、歸一化處理生成碼流單元、碼流拼接單元,分別對應(yīng)流水線級1~8,且每個流水線級對應(yīng)的邏輯單元占用單獨的硬件資源。
如圖4所示的自適應(yīng)算術(shù)編碼方式中,絕對值運算和數(shù)據(jù)分析使用同一個硬件資源,但為了總體上縮短流水線的傳遞周期,將二者劃分為2個流水線級,并利用不同的硬件資源來實現(xiàn)。
上述電路中,在分別接收數(shù)據(jù)單元、絕對值運算單元、數(shù)據(jù)分析單元、二進制化查表單元、概率模型查詢單元、概率空間更新單元、歸一化處理生成碼流單元、碼流拼接單元的輸出端,設(shè)置寄存器1~寄存器8;且寄存器1~寄存器8,分別與絕對值運算單元、數(shù)據(jù)分析單元、二進制化查表單元、概率模型查詢單元、概率空間更新單元、歸一化處理生成碼流單元、碼流拼接單元和外部電路的輸入端相連。
寄存器1~寄存器8分別具有一標志位VALID1~VALID8,其取值分別表示寄存器1~寄存器8是否可讀取,當取值為1時,表示可讀取,當取值為0時,表示不可讀取。
第1級流水線級對應(yīng)的接收數(shù)據(jù)單元,接收外部電路輸入的SE;如果已接收到外部電路輸入的SE、外部電路已有待輸入的SE、且接收到控制信號DONE2=1,則令VALID1=1,并將接收到的SE存儲到寄存器1中;其中,外部電路已有待輸入的SE,即等同于上一級的寄存器標志位為表示可讀取的數(shù)值1;如果已完成對輸入的SE的接收,外部電路已有待輸入的SE、且接收到控制信號DONE2=1,則輸出控制信號DONE1=1,再次接收外部電路輸入的SE;如果未接收到外部電路輸入的SE、且接收到控制信號DONE2=1,則令VALID1=0;否則,繼續(xù)從外部電路接收輸入的SE,并保持VALID1的當前數(shù)值不變。
第2級流水線級對應(yīng)的絕對值運算單元,對從寄存器1中讀取的SE進行絕對值運算;如果產(chǎn)生了至少一個絕對值運算結(jié)果、VALID1=1、且接收到控制信號DONE3=1,則令VALID2=1,并將產(chǎn)生的一個或多個絕對值運算結(jié)果存儲到寄存器2中;如果已完成了絕對值運算、VALID1=1、且接收到控制信號DONE3=1,則輸出控制信號DONE2=1,并再次從寄存器1中讀取SE;如果未產(chǎn)生絕對值運算結(jié)果、且接收到控制信號DONE3=1,則令VALID2=0;否則,繼續(xù)進行絕對值運算,并保持VALID2的當前數(shù)值不變。
第3級流水線級對應(yīng)的數(shù)據(jù)分析單元,對從寄存器2中讀取的絕對值運算結(jié)果進行數(shù)據(jù)分析;如果產(chǎn)生了至少一個數(shù)據(jù)分析結(jié)果、VALID2=1、且接收到控制信號DONE4=1,則令VALID3=1,并將產(chǎn)生的一個或多個數(shù)據(jù)分析結(jié)果存儲到寄存器3中;如果已完成了數(shù)據(jù)分析、VALID2=1、且接收到控制信號DONE4=1,則輸出控制信號DONE3=1,并再次從寄存器2中讀取絕對值運算結(jié)果;如果未產(chǎn)生數(shù)據(jù)分析結(jié)果、且接收到控制信號DONE4=1,則令VALID3=0;否則,繼續(xù)進行數(shù)據(jù)分析,并保持VALID3的當前數(shù)值不變。
第4級流水線級對應(yīng)的二進制化查找表單元,對從寄存器3中讀取的數(shù)據(jù)分析結(jié)果進行二進制化查找表;如果產(chǎn)生了查找表結(jié)果、VALID3=1、且接收到控制信號DONE5=1,則令VALID4=,并將產(chǎn)生的查找表結(jié)果存儲到寄存器4中1;如果已完成了二進制化查找表、VALID3=1、且接收到控制信號DONE5=1,則輸出控制信號DONE4=1,并再次從寄存器3中讀取數(shù)據(jù)分析結(jié)果;如果未產(chǎn)生查找表結(jié)果、且接收到控制信號DONE5=1,則令VALID4=0;否則,繼續(xù)進行二進制化查找表,并保持VALID4的當前數(shù)值不變。
第5級流水線級對應(yīng)的概率模型查詢單元,根據(jù)從寄存器4中讀取的查找表結(jié)果進行概率模型查詢;如果產(chǎn)生了查詢結(jié)果、VALID4=1、且接收到控制信號DONE6=1,則令VALID5=1,并將產(chǎn)生的查詢結(jié)果存儲到寄存器5中;如果已完成了概率模型查詢、VALID4=1、且接收到控制信號DONE6=1,則輸出控制信號DONE5=1,并再次從寄存器4中讀取查找表結(jié)果;如果未產(chǎn)生查詢結(jié)果、且接收到控制信號DONE6=1,則令VALID5=0;否則,繼續(xù)進行概率模型查詢,并保持VALID5的當前數(shù)值不變。
第6級流水線級對應(yīng)的概率空間更新單元,根據(jù)從寄存器5中讀取的查詢結(jié)果進行概率空間更新;如果產(chǎn)生了更新結(jié)果、VALID5=1、且接收到控制信號DONE7=1,則令VALID6=1,并將產(chǎn)生的更新結(jié)果存儲到寄存器6中;如果已完成了概率空間更新、VALID5=1、且接收到控制信號DONE7=1,則輸出控制信號DONE6=1,并再次從寄存器5中讀取查詢結(jié)果;如果未產(chǎn)生更新結(jié)果、且接收到控制信號DONE7=1,則令VALID6=0;否則,繼續(xù)進行概率空間更新,并保持VALID6的當前數(shù)值不變。
第7級流水線級對應(yīng)的歸一化處理生成碼流單元,根據(jù)從寄存器6中讀取的更新結(jié)果進行歸一化處理;如果產(chǎn)生了碼流、VALID6=1、且接收到控制信號DONE8=1,則令VALID7=1,并將產(chǎn)生的碼流存儲到寄存器7中;如果已完成了歸一化處理、VALID6=1、且接收到控制信號DONE8=1,則輸出控制信號DONE7=1,并再次從寄存器6中讀取更新結(jié)果;如果未產(chǎn)生碼流、且接收到控制信號DONE8=1,則令VALID7=0;否則,繼續(xù)進行歸一化處理,并保持VALID7的當前數(shù)值不變。
第8級流水線級對應(yīng)的碼流拼接單元,對從寄存器7中讀取的碼流進行碼流拼接;如果得到了拼接后的碼流、VALID7=1、且外部電路等待其輸出拼接后的碼流,則令VALID8=1,并將拼接后的碼流存儲到寄存器8中;其中,外部電路等待其輸出拼接后的碼流,即等同于其下一級已完成了對應(yīng)的邏輯處理過程;如果已完成了碼流的拼接、VALID7=1、且外部電路等待其輸出拼接后的碼流,則輸出控制信號DONE8=1,并再次從寄存器7中讀取碼流;如果未進行碼流拼接、且外部電路等待其輸出拼接后的碼流,則令VALID8=0;否則,繼續(xù)進行碼流拼接,并保持VALID8的當前數(shù)值不變。
實際應(yīng)用中,由于自適應(yīng)算術(shù)編碼電路既對殘差SE進行編碼處理,也對非殘差SE進行編碼處理,而對于非殘差SE來說,不需要進行絕對值運算和數(shù)據(jù)分析。因此,可以在接收數(shù)據(jù)單元的輸出端進一步設(shè)置一個寄存器1’,寄存器1’還與二進制化查找表單元的輸入端相連,具有一標志位VALID1’。
這樣,第4級流水線級對應(yīng)的二進制化查找表單元,進一步對從寄存器1’中讀取的非殘差SE進行二進制化查找表,并將產(chǎn)生的查找表結(jié)果存儲到寄存器4中;如果產(chǎn)生了查找表結(jié)果、VALID1’=1、且接收到控制信號DONE5=1,則令VALID4=1;如果已完成了二進制化查找表、VALID1’=1、且接收到控制信號DONE5=1,則輸出控制信號DONE4=1,并再次從寄存器1’中讀取數(shù)據(jù)分析結(jié)果;如果未產(chǎn)生查找表結(jié)果、且接收到控制信號DONE5=1,則令VALID4=0;否則,繼續(xù)進行二進制化查找表,并保持VALID4的當前數(shù)值不變。
需要說明的是,二進制化查找表單元并不是同時從寄存器1’和寄存器3獲取存儲的處理結(jié)果。由于輸入的SE中,均有標識其順序的標志,因而,二進制化查找表單元根據(jù)該標志,判斷應(yīng)當先從寄存器1’還是寄存器3獲取存儲的處理結(jié)果。也就是說,如果寄存器1’中存儲的非殘差SE應(yīng)當排在寄存器3中存儲的數(shù)據(jù)分析結(jié)果所對應(yīng)的殘差SE之前,則二進制化查找表單元從寄存器1’獲取存儲的處理結(jié)果,否則,從寄存器3獲取存儲的處理結(jié)果。
如果二進制化查找表單元當前處理的數(shù)據(jù)為非殘差SE,則其對應(yīng)的上一級流水線級對應(yīng)接收數(shù)據(jù)單元;如果二進制化查找表單元當前處理的數(shù)據(jù)為殘差SE,則其對應(yīng)的上一級流水線級對應(yīng)數(shù)據(jù)分析單元。
接收數(shù)據(jù)單元能夠根據(jù)接收到的SE類型,將殘差SE存儲到寄存器1中,將非殘差SE存儲到寄存器1’中;如果已接收的數(shù)據(jù)為殘差SE,則其對應(yīng)的下一級流水線級對應(yīng)絕對值運算單元;如果已接收的數(shù)據(jù)為非殘差SE,則其對應(yīng)的下一級流水線級對應(yīng)二進制化查找表單元。
可見,上述自適應(yīng)算術(shù)編碼電路實現(xiàn)了流水線方式的處理,從而在不出現(xiàn)流水線堵塞及編碼結(jié)果錯誤的前提下,提高了其處理效率,進而提高了熵編碼的處理效率。
同理,定長編碼電路、格魯姆編碼電路以及自適應(yīng)變長編碼電路也均可以按照上述方式實現(xiàn)流水線處理。
圖7為為發(fā)明實施例中自適應(yīng)變長編碼電路的示意圖。以自適應(yīng)變長變碼電路為例,如圖7所示,將定長編碼電路劃分為5個流水線級,分別對應(yīng)如下邏輯功能單元接收數(shù)據(jù)單元、絕對值運算單元、數(shù)據(jù)分析單元、變長查找表單元、碼流拼接單元。
分別在每個邏輯功能單元的輸出端設(shè)置寄存器1~寄存器5,分別存儲對應(yīng)流水線級所對應(yīng)的邏輯功能單元產(chǎn)生的所述處理結(jié)果;寄存器1~寄存器5,分別與輸出端與其相連的邏輯功能單元所對應(yīng)的下一級流水線級的邏輯功能單元的輸入端相連;寄存器1~寄存器5,分別包括標志位1~標志位5,分別表示寄存器1~寄存器5是否可讀??;各邏輯功能單元在其對應(yīng)的邏輯處理過程已完成時,分別輸出表示邏輯處理過程已完成的控制信號,DONEj=1,j為大于等于1且小于等于5的正整數(shù);與第j級流水線級對應(yīng)的邏輯功能單元,在寄存器j-1的標志位為表示可讀取的數(shù)值、該邏輯功能單元產(chǎn)生了處理結(jié)果、且與第j+1級流水線級對應(yīng)的邏輯功能單元已產(chǎn)生了一個表示邏輯處理過程已完成的控制信號DONEj+1=1時,將寄存器j的標志位設(shè)置為表示可讀取的數(shù)值,存儲產(chǎn)生的處理結(jié)果,并再次從寄存器j-1讀取所述處理結(jié)果。
與第j級流水線級對應(yīng)的邏輯功能單元,在其未產(chǎn)生所述處理結(jié)果、但第j+1級流水線級對應(yīng)的邏輯功能單元已產(chǎn)生了一個表示邏輯處理過程已完成的控制信號DONEj+1=1時,寄存器j的標志位設(shè)置為表示不可讀取的數(shù)值,否則,保持寄存器j的標志位的值不變。
與自適應(yīng)算術(shù)編碼電路相同,接收數(shù)據(jù)單元對應(yīng)的上一級流水線級為外部電路的輸入,碼流拼接單元對應(yīng)的下一級流水線級為向外部電路的輸出。
這樣,熵編碼電路中包括的各電路均可實現(xiàn)流水線控制,如果其中的一個電路或所有電路均實現(xiàn)了流水線控制,即可提高熵編碼的效率。
如前所述,如圖1~圖4所示的編碼方式之間,存在部分相同的邏輯處理過程。因此,本發(fā)明實施例中,將不同編碼電路所需的相同的邏輯處理,復(fù)用在相同的硬件資源上。
本實施例中的熵編碼電路可以包括如圖6所示的自適應(yīng)算術(shù)編碼電路,并在此基礎(chǔ)上,進一步包括用于定長編碼和格魯姆編碼的多表查找表單元,而定長編碼和格魯姆編碼所需的接收數(shù)據(jù)單元和碼流拼接單元,可以復(fù)用自適應(yīng)算術(shù)編碼電路中的接收數(shù)據(jù)單元和碼流拼接單元。
其中,多表查找表單元中包括定長查找表單元和格魯姆表查找表單元。
這樣,在接收數(shù)據(jù)單元的輸出端,進一步設(shè)置一個寄存器1”,該寄存器1”與多表查找表單元的輸入端相連,可以同時與定長查找表單元和格魯姆表查找表單元的輸出端相連,寄存器1”具有一標志位VALID1”;在多表查找表單元的輸出端設(shè)置一個寄存器a,寄存器a與碼流拼接單元的輸入端相連,且具有一標志位a。
即多表查找表單元對應(yīng)的上一級流水線級對應(yīng)接收數(shù)據(jù)單元,其下一級流水線級對應(yīng)碼流拼接單元。
這樣,多表查找表單元對從寄存器1”中讀取的非殘差SE進行定長表或格魯姆表查找表,并將產(chǎn)生的查找表結(jié)果存儲到寄存器a中;如果產(chǎn)生了查找表結(jié)果、VALID1”=1、且接收到控制信號DONE8=1,則令VALIDa=1;如果已完成了查找表、VALID1”=1、且接收到控制信號DONE8=1,則輸出控制信號DONEa=1,并再次從寄存器1”中讀取數(shù)據(jù)分析結(jié)果;如果未產(chǎn)生查找表結(jié)果、且接收到控制信號DONE8=1,則令VALIDa=0;否則,繼續(xù)進行二進制化查找表,并保持VALIDa的當前數(shù)值不變。
由于輸入的SE中,均有標識其順序的標志,因而,碼流拼接單元能夠根據(jù)該標志,判斷應(yīng)當先從寄存器7還是寄存器a獲取存儲的處理結(jié)果。也就是說,如果寄存器7中存儲的碼流所對應(yīng)的殘差SE,應(yīng)當排在寄存器a中存儲的碼流所對應(yīng)的非殘差SE之前,則碼流拼接單元從寄存器7獲取存儲的處理結(jié)果,否則,從寄存器a獲取存儲的處理結(jié)果。
可見,由于熵編碼中的定長編碼、格魯姆編碼、自適應(yīng)算術(shù)編碼不一定同時進行,因而,復(fù)用實現(xiàn)相同邏輯處理過程的硬件資源不會產(chǎn)生各編碼過程之間的沖突,且能夠節(jié)省熵編碼電路中的硬件資源。
同理,也可以將定長編碼、格魯姆編碼和自適應(yīng)變長變碼中,實現(xiàn)相同邏輯處理過程的硬件資源復(fù)用。
這樣,本實施例中的熵編碼電路可以包括如圖7所示的自適應(yīng)變長編碼電路,并在此基礎(chǔ)上,進一步包括用于定長編碼和格魯姆編碼的多表查找表單元,而定長編碼和格魯姆編碼所需的接收數(shù)據(jù)單元和碼流拼接單元,可以復(fù)用自適應(yīng)變長編碼電路中的接收數(shù)據(jù)單元和碼流拼接單元。接收數(shù)據(jù)單元的輸出端也連接兩個寄存器,分別與絕對值運算單元和多表查找表單元的輸入端相連,與上述的熵編碼電路的實現(xiàn)方式相同,在此不再贅述。
考慮到熵編碼電路的通用性,本實施例中的熵編碼電路包括如圖6所示的自適應(yīng)算術(shù)編碼電路、如圖7所示的自適應(yīng)變長編碼電路、以及定長編碼和格魯姆編碼電路,即能夠在實際應(yīng)用中,任意選擇自適應(yīng)算術(shù)編碼電路和自適應(yīng)變長編碼電路中的一種,來實現(xiàn)對殘差SE的編碼,且將上述4個編碼電路中,實現(xiàn)相同邏輯處理過程的硬件資源復(fù)用。
圖8為本發(fā)明實施例中包括4種編碼電路的熵編碼電路示意圖。如圖8所示,在如圖6所示的自適應(yīng)算術(shù)編碼電路的基礎(chǔ)上,進一步包括用于定長編碼、格魯姆編碼和自適應(yīng)變長編碼的多表查找表單元,而定長編碼、格魯姆編碼和自適應(yīng)變長編碼所需的接收數(shù)據(jù)單元和碼流拼接單元,可以復(fù)用自適應(yīng)變長編碼電路中的接收數(shù)據(jù)單元和碼流拼接單元;自適應(yīng)變長編碼所需的絕對值運算單元和數(shù)據(jù)分析單元,可以復(fù)用自適應(yīng)變長編碼電路中的絕對值運算單元和數(shù)據(jù)分析單元。
其中,多表查找表單元中包括定長查找表單元、格魯姆表查找表單元和變長查找表單元,三者的輸出端可同時連接一個寄存器。
其中,每個邏輯功能單元對應(yīng)的寄存器在圖中未示出。
由于實際應(yīng)用中,通常不會同時使用自適應(yīng)變長編碼和自適應(yīng)算術(shù)編碼,因此,數(shù)據(jù)分析單元所對應(yīng)的寄存器3,可以同時與二進制化查找表單元和多表查找表單元的輸入端相連。
這樣,在熵編碼的過程中,各部分組合邏輯能夠按照流水線方式并行處理,因此能夠大大縮小總的處理時間。對于高清1920×1080視頻來說,平均處理一個16×16的宏塊需要300~400個時鐘周期,因此,在保證電路運行在200Mhz的時鐘頻率下,可以每秒處理200M/(400×1920×1080×1.5/(16×16))=41楨/秒,滿足實時編碼的要求。同時,也降低了熵編碼電路所占用的硬件資源,進一步節(jié)省了成本。
以上所述僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換以及改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種熵編碼控制方法,每一個邏輯功能單元進行相應(yīng)的邏輯處理過程,其特征在于,包括每一個邏輯功能單元,在其已產(chǎn)生了處理結(jié)果、且與其相鄰的后一個邏輯功能單元的邏輯處理過程已完成時,將該邏輯功能單元得到的所述處理結(jié)果提供給與其相鄰的后一個邏輯功能單元。
2.如權(quán)利要求1所述的方法,其特征在于,進一步為每一個邏輯功能單元設(shè)置一個寄存器,存儲該邏輯功能單元產(chǎn)生的所述處理結(jié)果;所述寄存器包括一個標志位,用于表示與該邏輯功能單元相鄰的后一個邏輯功能單元是否能夠從該寄存器中讀取所述處理結(jié)果;每一個邏輯功能單元進一步在其對應(yīng)的邏輯處理過程已完成時,產(chǎn)生表示邏輯處理過程已完成的控制信號;所述將該邏輯功能單元得到的處理結(jié)果提供給與其相鄰的后一個邏輯功能單元為每一個邏輯功能單元在與其相鄰的前一個邏輯功能單元的寄存器標志位為表示可讀取的數(shù)值、該邏輯功能單元產(chǎn)生了所述處理結(jié)果、且與該邏輯功能單元相鄰的后一個邏輯功能單元已產(chǎn)生了所述控制信號時,該邏輯功能單元存儲所述處理結(jié)果,并將其對應(yīng)的寄存器標志位設(shè)置為表示可讀取的數(shù)值,允許與其相鄰的后一個邏輯功能單元從該邏輯功能單元對應(yīng)的寄存器中讀取所述處理結(jié)果。
3.如權(quán)利要求2所述的方法,其特征在于,每一個邏輯功能單元在其未產(chǎn)生所述處理結(jié)果,但與其相鄰的后一個邏輯功能單元已產(chǎn)生了所述控制信號時,則將該邏輯功能單元對應(yīng)的寄存器標志位設(shè)置為表示不可讀取的數(shù)值,否則,保持寄存器標志位的值不變。
4.如權(quán)利要求1至3中任意一項所述的方法,其特征在于,所述編碼方式為自適應(yīng)算術(shù)編碼,所述邏輯功能單元包括接收數(shù)據(jù)單元、絕對值運算單元、數(shù)據(jù)分析單元、二進制化查表單元、概率模型查詢單元、概率空間更新單元、歸一化處理生成碼流單元、碼流拼接單元;或者,所述編碼方式為變長編碼,所述邏輯功能單元包括接收數(shù)據(jù)單元、絕對值運算單元、數(shù)據(jù)分析單元、變長表查詢生成碼流單元、碼流拼接單元;或者,所述編碼方式為格魯姆編碼,所述邏輯功能單元包括接收數(shù)據(jù)單元、格魯姆表查詢單元、碼流拼接單元;或者,所述編碼方式為定長編碼,所述邏輯功能單元包括接收數(shù)據(jù)單元、定長表查詢單元、碼流拼接單元。
5.一種熵編碼電路,順序包括如下邏輯功能單元接收數(shù)據(jù)單元、絕對值運算單元、數(shù)據(jù)分析單元、二進制化查表單元、概率模型查詢單元、概率空間更新單元、歸一化處理生成碼流單元、碼流拼接單元;其特征在于,各邏輯功能單元在其已產(chǎn)生了作為與其相鄰的后一個邏輯功能單元的待處理數(shù)據(jù)的處理結(jié)果、且與其相鄰的后一個邏輯功能單元的邏輯處理過程已完成時,將其得到的處理結(jié)果輸出給與其相鄰的后一個邏輯功能單元;其中,與所述接收數(shù)據(jù)單元相鄰的前一個邏輯功能單元為外部電路的輸入,與所述碼流拼接單元相鄰的后一個邏輯功能單元為向外部電路的輸出。
6.如權(quán)利要求5所述的電路,其特征在于,進一步分別在每個邏輯功能單元的輸出端設(shè)置寄存器1~寄存器8,分別存儲對應(yīng)的邏輯功能單元產(chǎn)生的所述處理結(jié)果;分別對應(yīng)不同邏輯功能單元的寄存器1~寄存器8,還分別與對應(yīng)的邏輯功能單元相鄰的后一個邏輯功能單元的輸入端相連;所述寄存器1~寄存器8,分別包括標志位1~標志位8,分別表示寄存器1~寄存器8是否可讀取;各邏輯功能單元進一步在其對應(yīng)的邏輯處理過程已完成時,分別產(chǎn)生表示邏輯處理過程已完成的控制信號;輸出端與寄存器i相連的邏輯功能單元,在寄存器i-1的標志位為表示可讀取的數(shù)值、該邏輯功能單元產(chǎn)生了所述處理結(jié)果、且輸出端與寄存器i+1相連的邏輯功能單元已產(chǎn)生了所述控制信號時,將寄存器i的標志位設(shè)置為表示可讀取的數(shù)值,并存儲所述處理結(jié)果;其中,i為大于等于1且小于等于8的正整數(shù)。
7.如權(quán)利要求6所述的電路,其特征在于,進一步在接收數(shù)據(jù)單元的輸出端設(shè)置一個寄存器1’,寄存器1’與二進制化查找表單元的輸入端相連,具有一所述標志位;如果二進制化查找表單元當前處理的數(shù)據(jù)為非殘差SE,則確定與其相鄰的前一個邏輯功能單元為接收數(shù)據(jù)單元;如果二進制化查找表單元當前處理的數(shù)據(jù)為殘差SE,則確定與其相鄰的前一個邏輯功能單元為數(shù)據(jù)分析單元;接收數(shù)據(jù)單元根據(jù)接收到的SE類型,將殘差SE存儲到寄存器1中,將非殘差SE存儲到寄存器1’中;如果已接收的數(shù)據(jù)為殘差SE,則確定與其相鄰的后一個邏輯功能單元為絕對值運算單元;如果已接收的數(shù)據(jù)為非殘差SE,則確定與其相鄰的后一個邏輯功能單元為二進制化查找表單元。
8.如權(quán)利要求6或7所述的電路,其特征在于,輸出端與寄存器i相連的邏輯功能單元,在其未產(chǎn)生所述處理結(jié)果、但輸出端與寄存器i+1相連的邏輯功能單元已產(chǎn)生了所述控制信號時,進一步將寄存器i的標志位設(shè)置為表示不可讀取的數(shù)值,否則,保持寄存器i的標志位的值不變。
9.如權(quán)利要求6或7所述的電路,其特征在于,該電路在接收數(shù)據(jù)單元與碼流拼接單元之間,進一步包括多表查找表單元,用于進行定長查找表和格魯姆查找表;多表查找表單元的輸出端連接一寄存器,該寄存器具有一所述標志位。
10.如權(quán)利要求9所述的電路,其特征在于,所述多表查找表單元進一步用于進行變長查找表。
11.一種熵編碼電路,順序包括如下邏輯功能單元接收數(shù)據(jù)單元、絕對值運算單元、數(shù)據(jù)分析單元、變長查找表單元、碼流拼接單元;其特征在于,各邏輯功能單元在其已產(chǎn)生了處理結(jié)果、且與其相鄰的后一個邏輯功能單元的邏輯處理過程已完成時,將其得到的處理結(jié)果輸出給與其相鄰的后一個邏輯功能單元;其中,與所述接收數(shù)據(jù)單元相鄰的前一個邏輯功能單元為外部電路的輸入,與所述碼流拼接單元相鄰的后一個邏輯功能單元為向外部電路的輸出。
12.如權(quán)利要求11所述的電路,其特征在于,進一步分別在每個邏輯功能單元的輸出端設(shè)置寄存器1~寄存器5,分別存儲對應(yīng)的邏輯功能單元產(chǎn)生的所述處理結(jié)果;分別對應(yīng)不同邏輯功能單元的寄存器1~寄存器5,還分別與對應(yīng)的邏輯功能單元相鄰的后一個邏輯功能單元的輸入端相連;所述寄存器1~寄存器5,分別包括標志位1~標志位5,分別表示寄存器1~寄存器5是否可讀?。桓鬟壿嫻δ軉卧M一步在其對應(yīng)的邏輯處理過程已完成時,分別產(chǎn)生表示邏輯處理過程已完成的控制信號;輸出端與寄存器j相連的邏輯功能單元,在寄存器j-1的標志位為表示可讀取的數(shù)值、該邏輯功能單元產(chǎn)生了所述處理結(jié)果、且輸出端與寄存器j+1相連的邏輯功能單元已產(chǎn)生了所述控制信號時,將寄存器j的標志位設(shè)置為表示可讀取的數(shù)值,并存儲所述處理結(jié)果;其中,j為大于等于1且小于等于5的正整數(shù)。
13.如權(quán)利要求11或12所述的電路,其特征在于,輸出端與寄存器j相連的邏輯功能單元,在其未產(chǎn)生所述處理結(jié)果、但輸出端與寄存器j+1相連的邏輯功能單元已產(chǎn)生了所述控制信號時,進一步將寄存器j的標志位設(shè)置為表示不可讀取的數(shù)值,否則,保持寄存器j的標志位的值不變。
14.如權(quán)利要求11或12所述的電路,其特征在于,該電路在接收數(shù)據(jù)單元與碼流拼接單元之間,進一步包括定長查找表單元,用于進行定長查找表;格魯姆表查找表單元,用于進行格魯姆查找表;定長查找表單元和格魯姆表查找表單元的輸出端連接一寄存器,該寄存器為與變長查找表單元的輸出端相連的寄存器。
全文摘要
本發(fā)明公開了一種熵編碼控制方法和一種熵編碼電路。本發(fā)明在每個邏輯功能單元產(chǎn)生了處理結(jié)果、且與其相鄰的后一個邏輯功能單元中的邏輯處理過程已完成時,將該邏輯功能單元產(chǎn)生的處理結(jié)果提供給與其相鄰的后一個邏輯功能單元,從而在實現(xiàn)了流水線方式的同時,避免了流水線堵塞及熵編碼結(jié)果錯誤,相比于現(xiàn)有串行方式的熵編碼處理,提高了處理效率。
文檔編號H04N7/26GK101090503SQ200710118439
公開日2007年12月19日 申請日期2007年7月5日 優(yōu)先權(quán)日2007年7月5日
發(fā)明者劉子熹 申請人:北京中星微電子有限公司