專利名稱:變長碼字解碼器的制作方法
技術領域:
本發明涉及一種對連續變長碼字解碼的解碼器,該變長碼字將游程長度編碼系數編碼。本發明尤其涉及一種可用于對高清晰度電視(HDTV)視頻數據信號中的變長碼字解碼的變長解碼器(VLD),所述視頻數據信號已按照運動圖像專家組(MPEG)國際標準進行編碼。
在美國,已提出對高清晰度電視信號進行數字編碼的標準。該標準基本上與國際標準化組織(ISO)的運動圖像專家組(MPEG)提出的MPEG2標準相同。該標準在此稱為MPEG標準且符合該標準的信號在此稱之為MPEG或MPEG編碼信號。在可從ISO得到并在此作為參考的名稱為“信息技術-運動圖像和相關音頻的一般編碼”,推薦技術標準H.262 ISO/IEC 13818.2;1995(E)的草擬內部標準(DIS)出版物中描述了這種標準。
MPEG2視頻信號編碼標準規定將表示圖像的視頻數據編碼為二進制(數字)數據,該數據主要包括離散余弦變換(DCT)系數的一些塊。這些系數被游程長度編碼為固定尺寸的游程長度碼字。然后每個游程長度編碼的碼字被霍夫曼編碼為變長碼字。在MPEG編碼的HDTV信號中,DCT系數塊必須以預定速率解碼,以便正確地解碼和顯示被傳輸的圖像。瞬時速度可依圖像中的細節和運動而改變。然而,存在一種最大速率,在該速率下,游程長度編碼的碼字且因此變長碼字在“最糟情形”圖像時出現。該速率超過每秒100兆碼字。已提出各種方法以這一速率對碼字解碼。
已提出的變長解碼器(VLD)能夠在合適的條件下在單個時鐘周期中同時對多個變長碼字解碼。在現有技術的VLD中,所接收編碼信號的許多位經桶形移位器并行提供到VLD的解碼部分。這種VLD命名為并行解碼器。選擇位數至少為最大尺寸變長碼字中的位數。這些位提供給查詢表(LUT),其預先配置有對應每一允許變長碼字的條目。查詢表中的每一條目包含變長碼字表示的游程長度碼字的值,以及變長碼字的長度(即位數)。當碼字被解碼時,最近解碼的變長碼字中的若干并行位被移出桶形移位器,將桶形移位器中剩余的位移至其位置。如果有必要,數字位流中的后續位被插入桶形移位器。然后對桶形移位器中的剩余位進行處理以對下一碼字解碼。這種VLD可對單個時鐘周期中的單個變長碼字解碼。
然而,如上所述,對于MPEG編碼的HDTV信號,必須將變長碼字解碼的最大速率超過每秒100兆。這需要100MHz以上的時鐘頻率。以該頻率操作目前超出了實際用于消費電子設備的集成電路的能力。因此,已提出一種能夠對每時鐘周期一個以上碼字解碼的VLD。這允許這樣來實現VLD,即它能夠以上述電路需要的100MHz速率以下的時鐘信號速率工作。
在名稱為“高速變長解碼器”,1993年7月6日授予Wang等人的美國專利5,225,832中,公開了一種并行VLD。Wang等人認識到,由于變長碼字的長度是變化的,所以一個以上的單個變長碼字在最大尺寸的變長碼字的位數內可能是適合的。解碼查詢表還包括用于組合短碼字的條目。因此,如果在桶形移位器輸出端同時存在兩個較短的碼字,則這兩個碼字將由查詢表加以識別并同時被解碼。這使VLD以大于每時鐘周期一個碼字的速率解碼。由于統計上較短碼字比較長碼字更可能出現,所以在每時鐘周期單個碼字上的增加被進一步提高。這種解碼速率的增加是以增加解碼查詢表的復雜性為代價的。
已建議增加桶形移位器的輸出的寬度,以同時產生兩個最大尺寸變長碼字。這一寬度加倍的桶形移位器輸出提供給查詢表,查詢表將同時識別兩個碼字。查詢表的第一部分識別第一變長碼字,第二部分識別第二變長碼字。查詢表產生三個輸出值第一值表示第一變長碼字,第二值表示第二變長碼字,第三值表示組合的兩個碼字的長度。這種分布使VLD以50MHz左右的時鐘速率工作,該時鐘速率在實際范圍內是合適的。然而,與每時鐘周期單個變長碼字的分布中的查詢表相比,在這種分布中的查詢表是很大在。對于查詢表第一部分中的每個碼字條目來說,查詢表必須包括用于查找第二部分的完整碼字集合的電路。如果存在n個允許的碼字,則必須有n2個條目。這使查詢表大且操作起來慢。
在SPIE科研報告集,第3021卷,第247-265頁的Bakhmutsky的文章“用兩字位流分段獲得高并行變長解碼器的匹配對霍夫曼代碼轉換”中,公開了一種對Wang等人所公開類型的并行VLD的改進。Bakhnutsky的VLD可每時鐘周期將至少兩個DCT系數解碼。Bakhmutsky認識到VLD的輸出是一系列固定長度游程長度編碼的碼字,每個碼字對應于一個接收的變長碼字。每個游程長度碼字表示一個或多個DCT系數,并包括一游程部分和一數值部分。游程部分表示當前碼字表示的系數之前的0值DCT系數的數目。數值部分表示0值系數游程之后的非零DCT系數的值。
Bakhmutsky認識到單個變長碼字表示的0游程的游程長度碼字僅表示一個系數值(即0的0值系數),而由單個變長碼字表示的一個游程的游程長度碼字表示兩個系數一個0值系數,一個非0值系數。如果表示兩個相應的0游程的游程長度碼字的兩變長碼字連續出現時,每個表示單個系數,則它們必須在單個時鐘周期內同時被解碼,以便保持每時鐘周期兩個系數的解碼速率。而且,后面跟有表示一個1游程的游程長度碼字(即二個系數)、表示一個0游程的游程長度代碼(即一個系數)的變長碼字也必須在單個時鐘周期內同時進行解碼,以保持每時鐘周期兩個系數的解碼速率。如果不是如此,即,如果在一個時鐘周期中各自單獨被解碼,那么將在兩個時鐘周期中對三個系數解碼(即每時鐘周期1.5個系數),這將達不到每時鐘周期兩個系數的目標。在所有其它情況下,單個變長碼字可在單個時鐘周期中進行解碼并仍保持每時鐘周期至少兩個系數的目標。
在MPEG編碼方案下,任何游程長度碼字可用一個尺寸多達24位寬的變長碼字(例如一個逸出序列)來表示。這是MPEG變長碼字可能有的最大尺寸。因此,兩連續變長碼字大概可以為48位寬。Bakhmutsky提出以可在VLD桶形移位器輸出端同時出現兩個連續轉換代碼碼字的方式,分析至VLD的輸入信號,并用具有較少位的各不相同的碼字代替表示0游程和1游程的游程長度代碼的變長碼字。修改查詢表以識別轉換代碼的碼字并對它們同時進行解碼。以這種方式,Bakhmutsky系統可識別和解碼兩個表示兩個連續0游程的游程長度碼字的變長碼字,或者跟隨有單個時鐘周期中一個1游程的游程長度碼字的0游程的游程長度碼字,并由此保持每時鐘周期一個系數2的解碼速率。
然而,Bakhmutsky系統要求在VLD前的單個路徑中增加代碼轉換器并修改VLD的查詢表以識別并同時處理兩個被連續代碼轉換的碼字。需要這樣一種系統,其可保持每VLD時鐘周期至少兩個系數的解碼率,而無需附加的解碼或代碼轉換電路,并無需對于n個變長碼字需要n2個條目的查詢表。
本發明的目的是提供一種變長碼字解碼器。按照本發明的原理,變長碼字解碼器響應具有多個周期的時鐘信號,并包括一個連續變長碼字源,每個變長碼字表示一個游程長度編碼的碼字。一個桶形移位器電路耦合到碼字源并在其輸出端的較低有效位中提供下一未解碼的變長碼字。碼字解碼電路耦合到桶形移位器的輸出端并對兩個連續變長碼字解碼,這兩個連續變長碼字表示單個時鐘周期中的各個0游程的游程長度碼字;或者單個時鐘周期中的兩個連續變長碼字,第一個表示一個0游程的游程長度碼字,第二個表示一個1游程的游程長度碼字;以及單個時鐘周期中的所有其它變長碼字。
附圖的簡要說明
圖1是按照本發明的變長解碼器(VLD)系統的方框圖;圖2、3和4是圖1所示VLD系統各部分的更詳細方框圖;圖5和6是表示圖1至4所示VLD中查詢表內容的表格;圖7是圖1和3所示VLD系統的一部分的更詳細方框圖。
圖1是按照本發明的變長解碼器(VLD)系統的方框圖。其中僅示出了理解本發明的實現和工作所需的那些部件。本領域的技術人員會理解,其它部件是需要的,并知道如何設計、實現和將這些部件與所示出部件互連。具體而言,具有多個周期的時鐘信號源未示出。在所示實施例中,該時鐘信號以公知方式提供給所示出的部件,并采取以50MHz左右的時鐘周期重復的系列時鐘的形式。如上文所暗示并在下文中描述的,這允許本發明的解碼器以最小每秒100兆對系數解碼,其支持MPEG2編碼標準。
在圖1中,變長碼字源10產生一變長碼字序列。變長碼字源10可包括以公知方式設置的射頻信號接收和處理電路,及數字信號處理電路。在碼字源的輸出端是也采用公知方式的先入先出(FIFO)存儲器輸出緩沖器(未示出)。變長碼字源10的輸出端耦合到桶形移位器電路20的數據輸入端。桶形移位器電路20可以用任何公知分布實現,例如寄存器分布、狀態機、排序電路、可配置邏輯陣列、或者被編程以執行桶形位移功能的處理器。桶形移位器電路20的輸出端耦合到碼字長度查詢表(LUT)30和碼字值查詢表40的相應輸入端。碼字長度查詢表30和碼字值查詢表40組合形成碼字解碼器。碼字長度查詢表30的輸出端耦合到桶形移位器電路20的控制輸入端。碼字值查詢表40的輸出端產生一個固定長度游程長度編碼碼字序列,并耦合到應用電路50的輸入端。應用電路50包括一個游程長度解碼器,還包括數字信號處理電路。它還可包括圖像顯示器和音頻再現裝置,如揚聲器,以及響應數字信號處理電路的電路,用于產生表示顯示在圖像顯示器上的圖像的信號,以及在音頻再現裝置中再現的聲音,這均是以公知的方式。
工作時,圖1的VLD100從變長碼字源10接收變長碼字序列。桶形移位器電路20并行接收許多位。在所示實施例中,以下文更詳細描述的方法將159位從變長碼字源10提供到桶形移位器電路。桶形移位器電路20的輸出也是并行的許多位。這些位數足夠至少包含接著被解碼的第一變長碼字,和在第一變長碼字之后同時被解碼的第二變長碼字。在所示實施例中,桶形移位器電路20產生48位,能夠也以下文更詳細描述的方式同時提供各24位的兩個逸出序列。
桶形移位器電路20工作時總是將接著要被解碼的第一變長碼字保持在桶形移位器電路20輸出端的一端上,將第二變長碼字保持在桶形移位器電路20輸出端與第一變長碼字相鄰的位置。由碼字長度查詢表30和碼字值查詢表40識別在桶形移位器電路20一端的第一碼字并將其解碼。碼字長度查詢表30產生表示識別的碼字長度的輸出。碼字值查詢表40產生表示相應于所識別變長碼字的固定長度游程長度碼字的輸出。當碼字被解碼時,桶形移位器電路20響應來自碼字長度查詢表30的長度信號以將桶形移位器電路20的輸出位移所解碼碼字的長度,從而在桶形移位器電路20的輸出端的一端上產生要解碼的下一碼字。
以下文更詳細描述的方式來設置碼字長度查詢表30和碼字值查詢表40,以識別何時第一和第二變長碼字各表示一個0游程的游程長度碼字。當識別到這種情況時,碼字長度查詢表30產生表示兩變長碼字的結合長度的信號,碼字值查詢表40產生表示兩個固定長度0游程的游程長度碼字的兩個連續值。還以在下文中更詳細地描述的方式來設置碼字長度查詢表30和碼字值查詢表40,以識別何時第一變長碼字表示0游程的游程長度碼字和第二變長碼字表示一個1游程的游程長度碼字。當識別到這種情況時,碼字長度查詢表30產生一個表示兩個變長碼字結合長度的信號,碼字值查詢表40產生表示兩個固定長度游程長度碼字的兩個連續值。
如上所述,通過同時識別表示相應0游程的游程長度碼字的連續變長碼字,或者一個0游程的游程長度碼字和一個1游程的游程長度碼字,從VLD和游程長度解碼器(未示出)的組合保持每時鐘周期至少兩個DCT系數的速率。由于圖1的VLD100保持每時鐘周期兩個系數的解碼率,它能以大約100MHz碼字時鐘速率一半的時鐘速率工作。在所示實施例中,VLD100以54MHz的時鐘速率工作,這在適于消費電子設備的集成電路技術的工作范圍內是合適的。而且,在所示實施例中不需要任何代碼轉換器。
圖2是圖1所示VLD系統的一部分的詳細方框圖。在圖2中,與圖1中那些相同的部件用相同標號表示,并不作詳細描述。此外,為了簡化該圖,僅示出理解本發明所需的那些部件。本領域技術人員會理解,其它部件可能是需要的(例如,寄存器、觸發器、時鐘信號等),以互連所示部件并使它們同步工作,并知道如何實現那些部件,如何將那些部件連接到所示出的部件。
在圖2中,變長碼字源10的輸出端耦合到一組寄存器22的輸入端。寄存器22的輸出端耦合到第一桶形移位器24的輸入端。第一桶形移位器24的輸出端耦合到第二桶形移位器26的第一輸入端。第二桶形移位器26的輸出端耦合到寄存器27的輸入端。寄存器27的輸出端耦合到碼字長度查詢表30的輸入端和第二桶形移位器26的第二輸入端。碼字長度查詢表30的輸出端耦合到第二桶形移位器26的控制輸入端和累加器28的輸入端。累加器28的第一輸出端耦合到第一桶形移位器24的控制輸入端,累加器28的第二輸出端耦合到寄存器22和變長碼字源10的相應控制輸入端。
工作時,寄存器22從變長碼字源10接收數據,并向第一桶形移位器24并行提供159位。在所示實施例中,變長碼字源10的FIFO(未示出)的輸出端并行提供64位。第一和第二級聯64位并行寄存器(未示出)耦合到變長碼字源10的輸出端。因此,寄存器的組合輸出端產生128位。在寄存器22內,直接來自變長碼字源10的FIFO輸出端的另外31位與來自第一和第二寄存器的128位組合,以為第一桶形移位器24形成來自寄存器22的159位并行信號。響應來自累加器(以下更詳細描述)的讀控制信號,第一寄存器的輸出被鎖存到第二寄存器中,變長碼字源10的FIFO(未示出)輸出的全部64位被鎖存到第一寄存器中,這64位被移出FIFO,在FIFO輸出端產生下64位變長碼字。
第一桶形移位器24和第二桶形移位器26一起操作,以提供未解碼的位給碼字長度查詢表30輸入端的較低有效位。更具體地說,第二桶形移位器26受控制使得在輸出端的較低有效位提供隨后的未解碼位。第一桶形移位器24操作以使來自變長碼字源10的159位與第二桶形移位器26中尚未解碼位的后沿對齊。
在所示實施例中,第一桶形移位器24的輸出端產生48位。來自第一桶形移位器24的48位提供到第二桶形移位器26的第一輸入端。第二桶形移位器26的輸出端也產生48位,如上所述,其足以包括兩個最長變長碼字。因此,第二桶形移位器26在其組合第一與第二輸入端接收96位。
在每一時鐘周期的結尾,來自第二桶形移位器26輸出端的48位被鎖存在寄存器27中。在每一時鐘周期的開始,來自寄存器27、表示前一時鐘周期的第二桶形移位器26內容的一些位被反饋到第二桶形移位器26的第二輸入端,其形成該輸入端的較低有效位,以在下一時鐘周期中進行處理。同時,將前一時鐘周期中被解碼的變長碼字的長度從碼字長度查詢表30提供到第二桶形移位器26的控制輸入端。第二桶形移位器將第一和第二輸入端的位位移在其控制輸入端給出的量,由此移出先前解碼的位,并在輸出端的較低有效位保留緊接著的未解碼位。由于向第二桶形移位器26輸入的是96位,即來自寄存器27的48位和來自第一桶形移位器的48位,所以第二桶形移位器的輸出總是至少有48個有效數據位。
第一桶形移位器24操作以使來自寄存器22的新數據與來自第二桶形移位器26的未解碼數據的后面位對齊。當用碼字長度查詢表30識別并解碼變長碼字時,被解碼碼字的長度提供到累加器28,累加器28以公知的方式將該長度與先前累加的長度相加。累加長度數據提供到第一桶形移位器24的控制輸入端。第一桶形移位器24將其數據位移所累加的變長碼字長度的量值。這使來自第一桶形移位器24的數據與第二桶形移位器26中還未解碼數據的后沿對齊。每當寄存器組寄存器22中來自第二寄存器(未示出)的位全部被解碼時,累加器發送讀信號給寄存器22和變長碼字源10,以便以上述方式鎖存來自變長碼字源10的下一個字。
當在寄存器組22的第二寄存器的輸出端僅剩一個未解碼位時出現最壞情形狀態,并對兩個碼字、每個24位長進行解碼。在這種情況下,第一桶形移位器24必須將其輸入位移111位,亦即填充第二寄存器的63位加上解碼碼字中的48位。當第一桶形移位器24位移111位時,在其較高有效位必須至少有48位作為提供給第二桶形移位器26的有效48位輸出。為此,輸入到第一桶形移位器24的是159位最壞情形是位移111位,加上輸出到第二桶形移位器26的48位。
圖3是圖1所示VLD系統的一部分的詳細方框圖。在圖3中,用相同標號表示與圖1所示那些部件相同的部件。在圖3中,碼字長度查詢表30的輸出端耦合到加法器282的加數輸入端。加法器282的和數輸出端耦合到D觸發器284的D輸入端。D觸發器284的Q輸出端耦合到同步邏輯電路286的輸入端、第一桶形移位器24的控制輸入端和加法器282的被加數輸入端。同步邏輯電路286的輸出端耦合到寄存器組22的控制輸入端。
在工作中,加法器282、D觸發器284及同步邏輯電路286的組合作為圖2中所示的累加器28工作。由于第二桶形移位器26(未示出)最多位移48位,控制輸入端需要六位,因此碼字長度查詢表30產生一個具有六位的長度信號。該六位輸出信號耦合到第二桶形移位器26(圖2)和加法器282。加法器282的和數輸出端產生一個七位輸出信號。這存儲在七位寬的D觸發器中。該信號耦合返回到構成七位累加器的加法器282的被加數輸入端。如上所述,盡管從來也不會要求超過111位,D觸發器284的輸出端耦合到第一桶形移位器24的控制輸入端并控制位移最多達128位的位數。只要第一桶形移位器24所移位的量超過64,來自D觸發器284的輸出的最高有效位(MSB)變為有效。如以上所詳細說明的,在這種情況下,寄存器22和變長碼字源10(未示出)從碼字源中的FIFO檢索一新值。
再次參見圖2,為了保持每時鐘周期將至少兩個系數解碼的上述處理速率,該解碼是通過每時鐘周期同時對表示兩個0游程或一個0游程和一個1游程的游程長度碼字的兩個連續變長碼字解碼實現的,在必須在一個時鐘周期內完成其處理的所示VLD中有三個關鍵路徑。首先,存在從159位輸入端到第一桶形移位器24、通過第二桶形移位器26到48位寄存器27的一條路徑。其次,存在從48位寄存器27、通過碼字長度查詢表30、通過加法器282到七位累加器D觸發器284的一條路徑。第三,存在從48位寄存器27、通過第二桶形移位器26再返回48位寄存器27的一條路徑。為使這些路徑能夠在一個時鐘周期內工作,本發明公開了下述電路最佳化方式。
在第一最佳化中,碼字長度查詢表30與碼字值查詢表40分離(如圖1所示)。以這種方式,將邏輯最佳化應用于碼字長度查詢表30以按照它們的長度組成變長碼字。因此,碼字長度查詢表30中條目的數量減少,相應地減少等待時間。
此外,碼字長度查詢表30被分為一個用于識別并解碼連續變長碼字的部分,該變長碼字表示兩個0游程的游程長度碼字或者一個0游程的游程長度碼字后跟一個1游程的游程長度碼字,以及一個用于識別并解碼所有其他變長碼字的部分。這在圖4中示出。
在圖4中,寄存器27(未示出)的輸出端耦合到碼字長度查詢表30的輸入端35,該輸入端從寄存器27接收包含變長碼字(CW)的數據的輸入端35。輸入端35耦合到單個碼字解碼查詢表32的輸入端。單個碼字解碼查詢表32的輸出端耦合到輸出端31。輸入端35還耦合到一個0游程碼字檢測器查詢表342、一個0游程碼字索引查詢表344、一個0游程碼字長度查詢表346、及一個第三桶形移位器348的相應輸入端。0游程碼字檢測器查詢表342和0游程碼字索引查詢表344的相應輸出端耦合到第三桶形移位器348的控制輸入端。第三桶形移位器348的輸出端耦合到一個0游程和1游程碼字檢測器查詢表350以及一個0游程和1游程碼字索引查詢表352的相應輸入端。0游程和1游程碼字索引查詢表352的輸出端耦合到一個門電路354的數據輸入端,0游程和1游程碼字檢測器查詢表350的輸出端耦合到門電路354的控制輸入端。該門電路的輸出端耦合到碼字長度查詢表30的輸出端33。0游程碼字長度查詢表346的輸出端耦合到碼字長度查詢表30的輸出端37。
在工作時,單個碼字解碼查詢表32將來自輸入端35的變長碼字CW解碼,該變長碼字表示固定長度的游程長度編碼的碼字,它們的游程大于1,單個碼字解碼查詢表32還在輸出端31產生表示被解碼碼字的長度的信號,這均是以公知的方式完成。0游程碼字長度查詢表346將來自輸入端35、表示一個0游程的游程長度碼字的變長碼字CW解碼,并在其輸出端產生一個表示該碼字長度的信號。圖5是表示0游程的游程長度碼字長度查詢表346的內容的一個列表。左邊一欄表示來自寄存器27(圖2)的輸入碼字CW。短劃線“-”表示“不關心”的位。右邊一欄表示識別的0游程的游程長度碼字的長度。由于該表較小,該數據具有較短的等待時間,并在時鐘周期中出現的早。
為了對下一順序碼字解碼,該碼字可表示一個0游程或1游程的游程長度碼字,來自輸入端的碼字CW必須被移位0游程碼字長度查詢表346所識別的碼字的寬度,從而下一碼字占據較低有效位。第三桶形移位器348執行這一移位。第三桶形移位器348僅在0游程碼字長度查詢表346檢測一個0游程的碼字而識別一個0游程的游程長度碼字時工作。如上所述,僅存在一個有限數目長度的這種碼字。因此,為了減少等待時間,第三桶形移位器348作為一個多路復用器實現。例如,在所示實施例中,本發明人已認識到表示一個0游程的游程長度碼字的碼字僅存在十三種可能長度。因此形成第三桶形移位器348的多路復用器僅需要一個13輸入端的多路復用器。0游程碼字索引查詢表344產生一個13位輸出信號,一位用于一個0游程碼字的每種可能長度,即按解碼的格式。該表的結構與圖5所示的類似。來自該表的輸出是13位,其中一個位表示所有相同長度的碼字。本領域的技術人員將會知道如何修改圖5的列表而提供這種輸出。
另外,0游程碼字檢測器查詢表342提供一個單個位的輸出,以表明輸入端35的碼字是一個0游程的碼字。該表的結構也與圖5的類似,除輸出是一個位、對于所有列出的條目該位是1而其他則為0之外。本領域的技術人員將會知道如何修改圖5的列表以提供這種輸出。由于來自0游程碼字索引查詢表344的控制信號是解碼的格式,構成第三桶形移位器348的多路復用器可作為13排“與”門實現。每排“與”門可設置為將輸入移位預定位數,并可由來自0游程碼字檢測器查詢表342的0游程碼字檢測位和來自0游程碼字索引查詢表344的那些位之一啟動。當以這種方式構造時,第三桶形移位器348工作時具有較低的等待時間。
0游程和1游程碼字索引查詢表352在來自第三桶形移位器的移位的碼字CW中檢測一個第二順序碼字,要么0游程,要么1游程。本發明人已認識到,第二碼字也僅具有一個有限數的可能長度。因此,0游程和1游程碼字索引查詢表352還以解碼格式產生一索引信號,其中每位索引信號表示這一第二碼字的相應長度。圖6示出一個表示0游程和1游程碼字索引查詢表352的內容的列表。在圖6中,“-”表示“不關心”的位。在所示實施例中,存在14種可能的第二碼字長度。因此,來自0游程和1游程碼字索引查詢表352的輸出信號包括14位。0游程和1游程碼字檢測器查詢表350產生一個表明存在一個0游程或1游程碼字的一個位的信號。0游程和1游程碼字檢測器查詢表350具有類似于圖6所示列表的結構,除對于所示出的每個條目來說一個唯一的位為有效而其他位為無效之外。本領域的技術人員將知道如何修改圖6所示列表以產生該信號。當來自0游程和1游程碼字檢測器查詢表350的信號表明這種碼字存在時,門電路354傳遞來自0游程和1游程碼字索引查詢表352的索引信號,否則門電路354不傳遞信號。由于圖4所示各種查詢表所固有處理時間,來自門電路354的信號在時鐘周期中出現得較遲。
再次參見圖3,來自碼字長度查詢表30的長度信號在加法器282中與來自D觸發器284的累加器內容相加。類似地,來自碼字長度查詢表30的長度信號用于控制第二桶形移位器26的位移。為了使求和過程和位移過程的等待時間減至最少,如以上參照圖4、5及6所描述的,加法器282和第二桶形移位器26的結構適應于碼字長度查詢表30的結構。
圖7是圖1和圖3中所示VLD系統的一部分的更詳細的方框圖。在圖7中,碼字長度查詢表30中來自0游程碼字長度查詢表346(圖4)的0游程碼字長度耦合到加法器292的第一輸入端和桶形位移單元302的控制輸入端。加法器292的輸出端公共耦合到多個加法器294294A,294B,…,294n的相應第一輸入端。多個加法器294的相應輸出端耦合到第一多路復用器296的對應數據輸入端。多路復用器296的輸出端耦合到累加器D觸發器284的輸入端。累加器D觸發器284的輸出端耦合到加法器292的第二輸入端。多個恒定長度信號的信號源分別耦合到多個加法器294中每一個的第二輸入端。亦即,一個第一恒定長度L1的信號源耦合到多個加法器294的第一加法器294A的第二輸入端;一個第二恒定長度L2的信號源耦合到多個加法器294的第二加法器294B的第二輸入端;一個第n恒定長度Ln的信號源耦合到多個加法器294的第n加法器,等等。
桶形位移單元302的輸入端耦合到第一桶形移位器24(圖2中未示出)的輸出端。桶形位移單元302的輸出端公共耦合到第二多路復用器306的相應輸入端。桶形位移單元302與多路復用器的這種組合構成第二桶形移位器26。第二多路復用器306的輸出端耦合到碼字長度查詢表30的輸入端。碼字長度查詢表30中來自門電路354(圖4)的0和1游程索引耦合到第一多路復用器296和第二多路復用器306的相應控制輸入端。
工作時,累加器D觸發器284中的當前值在加法器292中與0游程碼字長度相加。由于這兩個值在時鐘周期中可較早獲得,加法器292可以足夠時間產生其輸出值,以通過該電路的剩余部分傳播。然而,由于在時鐘周期中相對較遲時間之前得不到第二順序0或1游程碼字的長度,這是因為第三桶形移位器348和0游程和1游程碼字檢測器查詢表350及0游程和1游程碼字索引查詢表352(圖4)中固有的等待時間,這些值在加法器中的處理將沒有足夠的傳播時間。代之以,來自加法器292的和并行提供到多個加法器294。
到并行加法器294的各個第二輸入端L1-Ln表示第二順序0或1游程碼字的固定數目的可能長度之一。在優選實施例中,存在14種可能長度的第二碼字;因此,存在14個并行加法器,每一個在其第二輸入端接收一個表示對應于該加法器的碼字長度的值。如上所述,0或1游程碼字索引信號是一個14位信號,其中每一位表示一個可能長度,索引信號中每次僅有一位是有效的。該14位索引信號控制第一多路復用器296。第一多路復用器296由14排“與”門構成,每排接收來自多個加法器294中對應的一個加法器的信號,并用索引信號中的一個對應位啟動第一多路復用器296。來自第一多路復用器296的輸出信號存儲在累加器D觸發器284中。因為第一多路復用器296和各具有一個固定值輸入的14個加法器294的操作快于第二全加器的操作,該配置允許將第二0或1游程長度碼字的長度與一個碼字的間隔內的累加器值相加。
也已經確定,盡管開始時14個并行加法器294似乎需要許多電路,當認識到每個加法器具有為固定值的一個輸入時,可應用邏輯最小化,使所示電路的實現在電路上僅比全加器有最少量的增加。
類似地,第二多路復用器306的相應輸入端從第一桶形移位器接收各由桶形位移單元302位移了所識別的第一0游程碼字的長度的碼字。在第二多路復用器306的每個輸入端,該信號還被位移了表示一個固定數目可能長度的第二順序0或1游程碼字的量值。如上所述,第二碼字存在14種可能長度;因此,具有14個輸入端,每個輸入端接收被位移了對應于該輸入端的第二碼字的長度的碼字信號。如用標為“S”的小方框所表示的,通過將來自桶形位移單元302輸出端的信號硬線連接到第二多路復用器306的輸入端而以公知方式執行該位移,位移適當數量的位位置。如上所述,0或1游程碼字索引信號是一個14位的信號,其中每位表示可能長度之一,索引信號中每次僅一個位是有效的。該14位索引信號控制第二多路復用器306。第二多路復用器306由14排“與”門構成,由索引信號中的對應位啟動。來自第二多路復用器306的輸出信號表示下一未解碼的碼字,并提供到碼字長度查詢表30。由于第二多路復用器306的操作快于桶形移位器的操作,該配置使下一未解碼的碼字在單個碼字的間隔內提供到碼字長度查詢表30。
權利要求
1.一種變長碼字解碼器,它響應具有多個周期的時鐘信號,其特征在于順序變長碼字的一個變長碼字源(10),每個碼字表示游程長度編碼的碼字;一個桶形移位器電路(20),耦合到碼字源,在一輸出端提供至少一個第一變長碼字,該碼字下一個被解碼,及一個第二變長碼字,該碼字在第一變長碼字之后接著被解碼;一個碼字解碼電路(30,40),耦合到桶形移位器的輸出端,用于對以下變長碼字進行解碼單個時鐘周期中各表示相應0游程的游程長度碼字的第一和第二變長碼字;單個時鐘周期中表示一個0游程的游程長度碼字的第一順序變長碼字和表示一個1游程的游程長度碼字的第二變長碼字;以及單個時鐘周期中的所有其他變長碼字。
2.如權利要求1所述的解碼器,其特征在于桶形移位器電路包括第一桶形移位器(24),耦合到碼字源;以及第二桶形移位器(26),耦合到第一桶形移位器;其中第二桶形移位器工作時在桶形移位器電路輸出端的較低有效位提供下一個未解碼的變長碼字;以及第一桶形移位器工作時將來自碼字源的下一碼字提供到第二桶形移位器中碼字的后沿。
3.如權利要求1所述的解碼器,其特征在于碼字解碼電路包括一個數值查詢表(40),耦合到桶形移位器的輸出端,用于產生表示用變長碼字表示的游程長度碼字的數據;以及長度查詢表(30),耦合到桶形移位器的輸出端,用于產生表示變長碼字長度的數據。
4.如權利要求3所述的解碼器,其特征在于長度查詢表包括第一查詢表(30),用于產生表示第一變長碼字的長度的數據,第一變長碼字表示0游程的游程長度碼字;第二查詢表(30),用于產生表示順序在第一變長碼字之后的第二變長碼字的長度的數據,以及表示一個0游程的游程長度碼字和一個1游程的游程長度碼字之一的數據;以及第三查詢表(30),用于產生表示所有其他變長碼字長度的數據。
5.如權利要求3所述的解碼器,其特征在于桶形移位器電路包括第一桶形移位器(24),耦合到碼字源并響應長度查詢表;以及第二桶形移位器(26),耦合在第一桶形移位器與桶形位移電路的輸出端之間,并響應長度查詢表;其中第二桶形移位器在桶形移位器電路輸出端的較低有效位產生下一個未解碼的變長碼字;以及第一桶形移位器將來自碼字源的下一碼字保持在第二桶形移位器中碼字的后沿上。
6.如權利要求5所述的解碼器,其特征在于寄存器(27)耦合在第二桶形移位器與長度查詢表之間并響應時鐘信號,其中第二桶形移位器響應寄存器的輸出,以在輸出端的較低有效位上產生下一未解碼的變長碼字。
7.如權利要求5所述的解碼器,其特征在于一個累加器(28),耦合在長度查詢表與第一桶形移位器之間;其中第一桶形移位器響應累加器而工作;以及第二桶形移位器響應長度查詢表而工作。
8.如權利要求7所述的解碼器,其特征在于長度查詢表包括第一查詢表(30,60),用于產生表示第一變長碼字的長度的數據,第一變長碼字表示一個0游程的游程長度碼字;以及第二查詢表(30,60),用于產生表示順序在第一變長碼字之后的第二變長碼字的長度的數據,以及表示一個0游程的游程長度碼字和一個1游程的游程長度碼字之一的數據;以及累加器(28)包括一個鎖存器,響應時鐘信號;第一加法器電路,具有耦合到鎖存器的第一輸入端,耦合到第一查詢表的第二輸入端及一個輸出端;第二加法器電路,具有耦合到第一加法器輸出端的第一輸入端,耦合到第二查詢表的第二輸入端,及一個耦合到鎖存器的輸出端。
9.如權利要求8所述的解碼器,其特征在于第一查詢表產生具有第一變長碼字長度值的信號;第二變長碼字可以是多種長度之一,第二查詢表產生一索引信號,該索引信號具有對應于第二變長碼字的多種長度的相應值;以及第二加法器電路包括多個加法器,分別對應于第二變長碼字的多種長度,具有公共耦合在第一加法器電路的輸出端的各第一輸入端,耦合接收具有第二變長碼字的多種長度之一的相應值的對應輸入信號的各第二輸入端,及一個輸出端;以及一個多路復用器,具有耦合到多個加法器中相應加法器的輸出端的多個輸入端,一個響應來自第二查詢表的索引信號的控制輸入端,及一個耦合到鎖存器的輸出端。
10.如權利要求9所述的解碼器,其特征在于索引信號是具有對應于多種長度之一的相應位的多位信號;多路復用器包括對應于多種長度的多個“與”門,每個“與”門具有耦合到一個相應加法器的第一輸入端,響應索引信號中一個相應位的第二輸入端,及耦合到鎖存器的一個輸出端。
11.如權利要求8所述的解碼器,其特征在于第一查詢表產生一個具有第一變長碼字長度值的信號;第二變長碼字可以為多種長度之一,第二查詢表產生具有對應于第二變長碼字的多種長度的相應值的索引信號;以及第二桶形移位器包括第三桶形移位器,耦合到第一桶形移位器;以及一個多路復用器,具有耦合到第三桶形移位器的多個輸入端,每個相應輸入端從第三桶形移位器接收被位移了表示第二變長碼字多種長度中一相應長度的位數的信號,一個控制輸入端,響應來自第二查詢表的索引信號,及一個輸出端,耦合到桶形移位器電路的輸出端。
12.如權利要求11所述的解碼器,其特征在于索引信號是一個具有對應于多種長度之一的相應位的多位信號;多路復用器包括對應于多種長度的多個“與”門,每個“與”門具有耦合到一個多路復用器多個輸入端中相應的一個的第一輸入端,響應索引信號中一個相應位的第二輸入端,及耦合到桶形移位器電路輸出端的一個輸出端。
13.一種對變長碼字解碼的方法,該方法用在一種處理順序變長碼字的變長碼字解碼器中,每個變長碼字表示一個游程長度編碼的碼字,并響應具有多個周期的時鐘信號,其特征在于該方法包括步驟提取下一個要解碼的至少第一和第二變長碼字;檢測第一變長碼字是否表示0游程的游程長度編碼碼字;如果第一變長碼字不表示0游程的游程長度編碼碼字,則在單個時鐘周期中在第一查詢表中查詢第一變長碼字表示的游程長度碼字的長度;以及通過將順序變長碼字位移第一變長碼字的長度而至少提取下一個要被解碼的第一和第二變長碼字;如果第一變長碼字表示0游程的游程長度編碼碼字,則在單個時鐘周期中在第二查詢表中查詢第一變長碼字表示的游程長度碼字的長度;檢測第二變長碼字是否表示0游程的游程長度碼字和1游程的游程長度碼字中的一個;如果第二變長碼字不表示0游程的游程長度碼字和1游程的游程長度碼字中的一個,通過將順序變長碼字位移第一變長碼字的長度而至少提取下一個要被解碼的第一和第二變長碼字;如果第二變長碼字表示0游程的游程長度碼字和1游程的游程長度碼字之一,在第三查詢表中查詢第二變長碼字表示的游程長度碼字的長度;組合第二變長碼字與第一變長碼字的相應長度;通過將順序變長碼字位移第一與第二變長碼字的組合長度而至少提取下一個要被解碼的第一和第二變長碼字。
14.如權利要求13所述的方法,其特征在于還包括步驟如果第一變長碼字不表示0游程的游程長度編碼碼字,則在數值查詢表中查詢第一游程長度編碼碼字的值;如果第一變長碼字表示0游程的游程長度編碼碼字在數值查詢表中查詢第一游程長度編碼碼字的值;以及如果第二變長碼字表示0游程的游程長度碼字和1游程的游程長度碼字之一,則在數值查詢表中查詢第二游程長度編碼碼字的值。
15.如權利要求13所述的方法,其特征在于第二變長碼字具有預定數目的長度之一;查詢第二變長碼字的值的步驟包括查詢表示第二變長碼字的預定數目長度之一的一個索引;以及通過將順序變長碼字位移第一與第二變長碼字的組合長度而至少提取下一個要被解碼的第一和第二變長碼字步驟包括下列步驟預先將順序變長碼字位移第一變長碼字的長度;產生預定數目形式的預先位移順序變長碼字,每一形式還被位移第二變長碼字預定數目長度中相應的一長度;以及選擇對應于所述索引的位移形式作為被位移的變長碼字。
16.如權利要求13所述的方法,其特征在于第二變長碼字具有預定數目的長度之一;查詢第二變長碼字的值的步驟包括查詢表示第二變長碼字的預定數目長度之一的一個索引;以及組合第一與第二變長碼字長度的步驟包括將第一變長碼字的長度與預定數目長度中的每一個相加,以形成預定數目的和,以及選擇對應于所述索引的預定數目和數之一作為第一和第二變長碼字的組合長度。
全文摘要
一種變長碼字解碼器,響應具有多個時鐘周期的時鐘信號,并包括一順序變長碼字源(10),每變長碼字表示一游程長度編碼碼字。一桶形移位器電路(20)耦合到碼字源并在其輸出端的較低有效位提供下一未解碼變長碼字。碼字解碼電路(30,40)耦合到桶形移位器輸出端并在單個時鐘周期中將表示0游程的游程長度碼字的兩個順序變長碼字解碼;或在單個時鐘周期中將表示0游程的游程長度碼字和表示1游程的游程長度碼字的兩個順序變長碼字解碼;及對單個時鐘周期中所有變長碼字解碼。
文檔編號H04N7/30GK1259801SQ99126800
公開日2000年7月12日 申請日期1999年12月15日 優先權日1998年12月16日
發明者杰弗里·A·庫珀 申請人:湯姆森消費電子有限公司