專利名稱:并行渦輪編碼器實施方案的制作方法
技術領域:
本發明涉及Turbo(渦輪)編碼器實施方案,具體地,本發明涉及Turbo編碼器實施方案的并行化。
背景技術:
電信系統中發射機的基帶部分通常與其它部分一起包括一個用于要被發送的比特的通用編碼器。編碼器把冗余的信息附加到進入的、具有比特量值K的數據流。由此,比特數目按照取決于編碼器速率r的因子1/r增加。當前,通常使用1/2和1/3的編碼器速率,然而也可以使用其他數值的編碼器速率。對于每個具有K個未編碼的比特的塊,編碼器輸出一個具有K/r個編碼的比特的塊。
在電信系統中用于數據流的接收側,原先的數據流是根據接收機中編碼的數據塊而被重新計算的,即使是在某些比特在通過例如空中接口傳輸期間被破壞的情形下。
近來,為了控制電信數據傳輸的錯誤,已引入Turbo編碼器。通常,Turbo編碼涉及在發送之前把兩種或多種代碼施加到同一個信息序列的不同的交織的版本中。由于TURBO編碼在技術上是熟知的,例如,可以參見Berrou等人的“Near Shannon Limit Error-CorrectingCoder and DecoderTurbo-Codes(接近香農極限誤差-校正編碼器和譯碼器渦輪碼)”IEEE International Communication Conference,pp.1064-1070,May 1993和Sklar的“APrimer on Turbo CodeConcept(渦輪碼概念入門)”IEEE Communication Magazine,pp.94-102,December 1997,這里不再給出進一步的細節,所述的參考文獻在此引用,以供參考。
圖8上顯示TURBO編碼器的例子。如圖8所示,Turbo編碼器包含兩個在結構上相同的Turbo編碼器塊TCB1,TCB2。這兩個Turbo編碼器塊的差別在于,其中的一個接收未改變次序的輸入塊的比特,而另一個接收具有交替次序的輸入比特。對于每個輸入比特,在輸出端0、1、2處分別產生三個輸出比特。
如圖8所示,Turbo編碼器塊TCB1包括在它的輸入端處的第一XOR(異或)門100,以及在它的輸出端處的第二XOR(異或)門102。在它們之間安排有三個延時單元104到108,用于延時各個輸入比特。同樣地,Turbo編碼器塊TCB2包括在它的輸入端處的第三XOR(異或)門110,以及在它的輸出端處的第四XOR(異或)門112。在它們之間安排有三個延時單元114到118,用于延時各個輸入比特。
如圖8所示,加到Turbo編碼器的輸入信號被直接提供到TUB編碼器塊1,而它是通過交織器120被提供到第二Turbo編碼器塊TCB2的。對于輸出端0,輸入信號不作任何修正地直接被轉發。
工作時,對于圖8所示的Turbo編碼器的參量是每個Turbo編碼器塊中延時單元的數目,以及向不同的XOR門100、102、110、和112的提供的輸入信號。
圖8所示的Turbo編碼器的直接的實施方案依賴于所使用的延時單元以及輸入與輸出寄存器(圖8上未示出),這樣,Turbo編碼可以按逐個比特方式完成。這里,所有的延時單元以同一個系統時鐘工作,從而延時單元的輸出代表了具有以先前的時鐘周期的輸入。
雖然使用串行方式的延時單元的Turbo編碼器的直接實施方案不需要許多寄存器和XOR門,但主要缺點在于Turbo編碼是以串行方式執行的。這意味著,時鐘系統的每個周期里只編碼一個比特。結果,對于需要高比特速率的情形,時鐘頻率要增加到非常高的數值。
例如,如果要編碼1200個信道,其每一個涉及到以1毫秒的時間周期的100比特的話音信道,則所必須的系統時鐘頻率是120MHz。這里,例如使用ASIC或FPGA技術來實施相關的Turbo編碼器將是非常困難的。
雖然一個解決方案可以是對每個信道實施一個專用Turbo編碼器,但這需要對輸入和輸出比特流的復雜處理,因為不同的信道仍舊必須并行地編碼。這導致非常復雜的控制邏輯,以便在正確的時間提供正確的輸入到正確的Turbo編碼器。而且,不同的Turbo編碼器的輸出也必須以同樣的復雜的方式被處理。
發明概要根據以上說明,本發明的目的是提高Turbo編碼器塊的處理速度。
按照本發明,這個目的是通過并行實現Turbo編碼器來達到的。
所以,Turbo編碼器塊的結構從一開始就是通過使用可以構成Turbo編碼器塊的并行化的基礎的一般的正式說明來描述的。
具體地,加到Turbo編碼器塊的輸入樣本被看作為n維并行輸入矢量的單元,其中n是并行化指數。
Turbo編碼器塊的一般正式說明然后被用來導出從這個并行輸入矢量到至少一個并行輸出矢量的映射。
更具體地,把內部狀態變量替換過程應用到一般正式說明的每個內部狀態變量,其中對內部狀態變量的表示式進行掃描,以便找出最大時標單元,然后通過使用內部狀態變量的、先前確定的時標替換的表示式來執行后向時標過渡,從而對所述最大時標單元進行替換。這些替換步驟重復進行,直至每個內部狀態變量的表示式只取決于輸入矢量單元為止,以及Turbo編碼器的內部狀態變量的數值根據并行化指數而被延時。
而且,對于每個并行輸出矢量的每個單元也執行替換處理。也對每個輸出矢量中的每個矢量單元的表示式進行掃描,以便找出具有最大時標的內部狀態變量,然后遞歸地確定在矢量單元的表示式中的后向時標過渡,直至矢量單元的表示式只取決于輸入矢量單元為止,以及內部狀態變量的數值根據并行化指數而被延時。
所以,按照本發明,提出了對Turbo編碼器塊進行并行化,以使得為了達到增加的處理速度,只需要一個并行化的Turbo編碼器塊,而不用許多串行Turbo編碼器。這導致能得到確定性的優點不需要對于多個Turbo編碼器塊的復雜的輸入和輸出控制。
例如,對于四比特并行Turbo編碼器塊,在上面提到的例子中最終的系統時鐘頻率處在30MHz的范圍,所以,可以容易地用FPGA或ASIC技術來實現。所以,并行化的Turbo編碼器塊和由此而導出的Turbo編碼器可以按照并行化指數而獲得比串行Turbo編碼器高的速度,這樣,預定的技術條件可以通過使用基于FPGA或ASIC技術的實施方案來滿足。因此,并行化的Turbo編碼器塊可以構成在基帶部分具有低處理延時的復雜電信系統的基礎,而不用對不同的信道同時進行復雜的處理。
而且,當與串行Turbo編碼器相比較時,并行化的Turbo編碼器塊和相關的Turbo編碼器只需要最少量的附加的邏輯門和寄存器。
再者,當設置在Turbo編碼器的前面和后面的處理塊也支持并行處理方式時,完整的編碼器塊總共需要比起具有串行Turbo編碼器塊的編碼器塊更少的邏輯門和寄存器、以及某些附加的變換器(并行到串行以及串行到并行變換)。
按照本發明的另一個優選實施例,也提供了可直接裝載到計算機的內存的、其中包括軟件代碼部分的計算機程序產品,它在計算機中運行時用來執行按照本發明的并行化方法的步驟。優選地,軟件代碼部分是VHDL型的。
所以,本發明能夠實現快速地開發和修正并行Turbo編碼器的設計,其中從設計到不同的硬件技術(例如,分別為ASIC或FPGA)的映射過程的開發周期可以減小,而且其靈活性增加。
附圖簡述下面,參照附圖描述本發明的優選實施例,其中
圖1顯示具有一個輸出的Turbo編碼器塊的電路圖;圖2顯示具有多個輸出的Turbo編碼器塊的電路圖;圖3顯示將一個按時間順序的輸入數據流映射到并行輸入矢量,以及將一個并行輸出矢量映射到按時間順序的輸出數據流;圖4顯示具體的Turbo編碼器塊的串行實施方案的電路圖;圖5顯示圖4所示的Turbo編碼器塊的二比特并行實施方案的電路圖;圖6顯示圖4所示的Turbo編碼器塊的四比特并行實施方案的電路圖;圖7A顯示圖4所示的Turbo編碼器塊的八比特并行實施方案的輸入部分的電路圖;圖7B顯示圖4所示的Turbo編碼器塊的并行實施方案的輸出部分的電路圖;以及圖8顯示包括交織器以及Turbo編碼器塊TCB1和TCB2的Turbo編碼器的示意圖。
發明詳細描述下面,參照圖1到7描述本發明的優選實施例。
具體地,一開始,給出如圖1和2所示的Turbo編碼器塊的形式的說明作為按照本發明的并行化方法的說明的基礎。
然后,參照圖3描述一個按時間順序的輸入數據流可以怎樣被映射到要在并行化Turbo編碼器塊中被處理的并行輸入矢量,以及這個并行化Turbo編碼器塊的并行輸出矢量可以怎樣被映射到按時間順序的輸出數據流。
此后,參照圖4到7給出使用按照本發明的并行化方法的Turbo編碼器的并行實施方案的不同的例子。
1.采用串行實施方案的Turbo編碼器塊,一般說明圖1顯示采用串行實施方案的Turbo編碼器塊的電路圖。
如圖1所示,Turbo編碼器塊包括N個諸如觸發器的延時單元X1,X2,...,XN。延時單元X1,X2,...,XN的輸出信號分別稱為x1(t),x2(t)...,xN(t),其中t表示整數時標。在第一延時單元X1的輸入端處,提供有輸入XOR門12,以及在最后的延時單元Xn的輸出端處,提供有輸出XOR門14。
如圖1所示,輸入信號I(t)通過輸入延時單元16被提供,以及輸出XOR門14的輸出信號通過輸出延時單元18被轉發出。
如圖1所示,輸出信號x1(t),x2(t)...,xN(t)可通過連接α1,α2,...,αN被提供到輸入XOR門12。另外,加到延時單元的輸入信號可以通過連接β0,β1,...,βN-1被提供到輸出XOR門14。而且,延時單元XN的輸出通過連接βN被提供到輸出XOR門14。
通過正式分配0或1的數值給每個連接α1,α2,...,αN以及每個連接β0,β1,...,βN,可以按照下式來描述具有N個延時單元的任何串行Turbo編碼器塊實施方案x1(t)=I(t-1)α1·x1(t-1)α2·x2(t-1)...αN·xN(t-1)αiε{0,1}(1.x1)x2(t)=x1(t-1)(1.x2). .. .. .xN(t)=xN-1(t-1)(1.xN)Q(t)=β0·[I(t-1)α1·x1(t-1)α2·x2(t-1)...αN·xN(t-1)]β1·x1(t-1)β2·x2(t-1)...βN·xN(t-1)==β0·I(t-1)β0·α1·x1(t-1)β1·x1(t-1)β0·αN·xN(t-1)βN·xN(t-1)==β0·I(t-1)x1(t-1)·[β0·α1β1].
.
.
xN(t-1)·[β0·αNβx]βiε{0,1}(1.Q)如圖2所示,以上對于具有單個輸出的Turbo編碼器塊給出的一般說明可被推廣為使用具有多個輸出的串行實施方案的Turbo編碼器塊。
和圖1一樣,圖2顯示延時單元x1,x2,...,xN,其輸出信號再次被表示為x1(t),x2(t)...,xN(t)。每個延時單元X1,X2,...,XN的輸出信號x1(t),x2(t)...,xN(t)通過如圖所示的連接α1,α2,...,αN被提供到輸入XOR門12。另外,輸入數據流通過輸入延時單元16被提供到輸入XOR門12。
圖2所示的串行Turbo編碼器塊不同于前面討論的Turbo編碼器塊之處在于提供了多個輸出Q1(t),Q2(t)...,QM(t)。如圖2所示,對于各個輸出提供一個相關的輸出XOR門14-1,...,14-M。在每個這樣的輸出XOR門14-1,...,14-M的輸出端處,連接一個相關的輸出延時單元18-1,...,18-M。
如圖2所示,加到延時單元的每個輸入可以通過連接β1,0,β1,1,β1,2,...,β1,N-1被提供到第一輸出XOR門14-1,還通過連接β2,0,β2,1,β2,2,...,β2,N-1被提供到第二輸出XOR門14-2,等等。而且,最后的延時單元XN的輸出通過連接β1,N被提供到第一輸出XOR門14-1,通過連接β2,N被提供到第二輸出XOR門14-2等等。最后,每個輸出XOR門的輸出信號被延時,從而得到Turbo編碼器塊輸出信號Q1(t),...,QM(t)。
圖2所示的Turbo編碼器不同于前面討論的Turbo編碼器之處在于,對于每個輸出Q1(t),...,QM(t),相關的輸出表示式被推廣為Qj(t)=βj0·I(t-1)x1(t-1)·[βj0·α1βj1].
.
.
xN(t-1)·[βj0·αNβjN]βijε{0,1}jε[1,...,M](1.Q)在具有一個或多個輸出的串行實施方案中的Turbo編碼器塊的以上的正式表示式將用作為按照本發明的并行化方法的說明的基礎。
然而,在下面描述按照本發明的并行化方法之前,將參照圖3開始描述從串行輸入數據流到并行輸入矢量的映射以及從并行輸出矢量到串行輸出數據流的映射。
2.使用并行化指數n的并行實施方案的Turbo編碼器塊
在左上方,圖3顯示按照串行輸入數據流的時間順序。同樣地,在右上方,圖3顯示按照串行輸出數據流的時間順序。
如圖3所示,并行輸入矢量I0,I1,...,In-1可以按照下式從一系列輸入數據值I(t-1),I(t-2),...,I(t-n)導出I(t-1)=I0(p-1)I(t-2)=I1(p-1).
.
.I(t-n)=In-1(p-1)假設從串行輸入數據流導出的、圖3所示的并行輸入矢量在以下描述的并行Turbo編碼器塊中被處理,可以得到并行輸入輸出矢量Qj0,...,Qjn-1。
如圖3所示,這個并行輸出矢量然后可以按照下式被映射回串行輸出數據流Qj(t),...,Qj(t-(n-1))Qj(t)=Qj0(p)Qj(t-1)=Qj1(p)...Qj(t-(n-1))=Qjn-1(p)jε[1,...,M]2.1并行化概況按照本發明,在串行域和并行域使用不同的時間尺度。換句話說,在串行時域中一組n個串行輸入數據相應于一個并行輸入矢量,該矢量在并行時域p中按照一個時鐘周期并行地被處理。
結果,假設處理相同的數據量,則最終的并行系統時鐘比起串行系統時鐘慢n倍。所以,串行時間表示式(t-1)可以用并行時間表示式(p-1)代替,以及n個順序時間輸入的序列被重寫為單個并行輸入矢量,一個并行時鐘周期要較早(p-1)。同樣地,串行輸出在當前的并行周期(p)內被重寫為并行輸出矢量。
通過使用按照圖1和2的Turbo編碼器塊和從串行輸入數據流到并行輸入矢量的映射以及從并行輸出矢量到串行輸出數據流的反映射的一般說明,按照本發明的方法依賴于將具有n個串行輸入數據項的并行輸入矢量提供到并行化TURBO編碼塊和對M個輸出矢量(其每一個包括n個輸出數據項)的計算。
輸出矢量的n個單元只取決于早先在串行Turbo編碼器塊實施方案的n個系統時鐘(它只相應于并行化Turbo編碼器塊中的一個周期)處的內部延時單元X1,...,XN的數值,以及還取決于被概括在并行輸入矢量中的這n個周期期間所有的輸入數據項。
正如下面看到的,基于本發明的方法依賴于對于下一個并行周期,根據并行Turbo編碼器塊的內部延時單元的輸出值和先前的并行周期的并行輸入矢量,如何去確定表示并行輸出矢量的輸出單元和并行Turbo編碼器塊的內部延時單元的輸出值的方程。
按照串行表示法(見公式(1.Q)),在時間t,串行實施的TURBO編碼塊的每個輸出值是根據在時間t-1時延時單元X1,...,XN的輸出值與在時間t-1時輸入數據項被計算的。
通過用早先的串行實施方案中一個系統時鐘周期的數值來替換內部延時單元的所有的輸出值,以及通過以遞歸方式重復進行這些替換步驟直至只留下在早先n個串行系統時鐘周期時的輸出值為止,可以得出用于計算在n個串行周期或等價的一個并行周期上的輸出結果的公式。
換句話說,這些公式構成當n個串行時鐘周期表示式一個并行時鐘周期時的并行化Turbo編碼器塊的基礎。
2.2對于第一內部狀態的后向時標替換在準備進行以上提到的遞歸替換過程時,可以使用對于第一延時單元X1的輸出的表示法(參閱公式(1.x1))x1(t)=I(t-1)α1·x1(t-1)α2·x2(t-1)...αN·xN(t-1)
在下面它也被稱為第一內部狀態,以便按照下式表示對于串行時鐘周期t-1,...,t-(n-1)的這個內部狀態x1(t-1)=I(t-2)α1·x1(t-2)α2·x2(t-2)...αN·xN(t-2)(2.x1.1)x1(t-(n-1))=I(t-n)α1·x1(t-n)α2·x2(t-n)...αN·xN(t-n)(2.x1.n-1)2.3對于另外的內部狀態的后向時標替換而且,對于另外的延時單元X2,...,XN的的輸出的表示法(參閱公式(1.x2),...,(1.xN))xi(t)=xi-1(t-1)在下面它也被稱為另外的內部狀態,可被使用來按照下式表示對于串行時鐘周期t-1,...,t-(n-1)的這些內部狀態xi(t-1)=xi-1(t-2)(2.xi.1).
.
.xi(t-(n-1))=xi-1(t-n)(2.xi.n-1)
2.4對于輸出矢量單元的后向時標替換再者,對于Turbo編碼器塊的至少一個輸出的表示法(參閱公式(1.Q))Qj(t)=βj0·I(t-1)x1(t-1)·[βj0·α1βj1].
.
.
xN(t-1)·[βj0·αNβjN](2.Q.0)可被使用來按照下式表示對于串行時鐘周期t-1,...,t-(n-1)的這個輸出Qj(t-1)=βj0·I(t-2)x1(t-2)·[βj0·α1βj1].
.
.
xN(t-2)·[βj0·αNβjN](2.Q.1)...Qj(t-(n-1))=βj0·I(t-n)x1(t-n)·[βj0·α1βj1].
.
.
xN(t-n)·[βj0·αNβjN](2.Q.n-1)
2.5通過遞歸后向時標替換過渡步驟的并行化2.5.1目標正如上面已闡述的,構成按照本發明的并行化處理的基礎的目標是把每個并行輸出矢量的元素(對于圖2所示的每個輸出1,...,M,具有一個所述元素)表示為在當前的并行周期之前的一個并行周期(等價于n個串行周期)的一系列n個串行輸入數據項和內部狀態的函數Qj(t-i)=f[I(t-1),...,I(t-n);x1(t-n),...,xN(t-n)]foriε
jε[1,...,M]Qji(p)=f[I0(p-1),...,In-1(p-1);x1(p-1), ...,xN(p-1)].
(2.Qi)2.5.2遞歸時標過渡步驟首先,為了達到這個目標,所有的內部狀態被并行化。對于所有的內部狀態x1(t),...,xN(t),一開始按照一系列運行的說明來設置在表示這個內部狀態時要使用的最大時標。
然后,考慮所有內部狀態的表示式,以及對其每一個進行遞歸掃描,以便用一個公式根據當前的最大時標來替換內部狀態變量,這個公式通過使用以上列出的方程(2)之一來表示取決于在這個當前的最大時標之前的時標的同一個內部狀態。
所以,所考慮的內部狀態的表示式被這樣地修正,以便從當前的最大時標過渡到該當前的最大時標前面的那個時標。這個過渡在下面將被稱為后向時標過渡。在根據當前的最大時標對于所有的內部狀態變量完成了后向時標過渡后,當前的最大時標被遞減1。
繼續進行對這個過程的遞歸重復,直至最大時標達到t-n的數值為止。這樣做的理由在于,在這時,在周期t(p)所考慮的內部狀態只根據在時間t-n(p-1)的內部狀態和串行輸入數據項I(t-1),...,I(t-n)來進行描述。
其次,在每個輸出矢量中所有的單元可以按照如上所述的遞歸方式通過再次對內部狀態執行后向時標過渡而被并行化。
而且,應當提到,在這些遞歸時標過渡步驟之間的中間級,在修正當前的最大時標時,內部狀態和輸出矢量的單元的各個表示式可通過使用關系式(aab≡b)而被簡化。換句話說,在各個表示式中可以刪除雙項(aa)。
如圖2所示最一般形式的串行Turbo編碼器塊的遞歸并行化可被概括如下<pre listing-type="program-listing"><![CDATA[ 程序 recursive_parallelization(n)int i,j,k;{ /*內部狀態的并行化*/ for(k=1;k<=N;k++) { /*考慮內部狀態xk(t)*/ tmax=t-1; while(tmax>t-n) { scan representation of internal state xk(t) for internal states with maximum time index tmax; for(all internal states with maximum time index){ execute backward time index transition from tmax to tmax-1 through state variable substitution using eq.(2)above; } cancel double terms in representation of internal state xk(t); tmax=tmax-1; }}/*輸出變量的并行化*/for(j=1;j<=M;j++){ for(i=0;i<=n-2;i++) { /*考慮輸出矢量單元Qj(t-i)*/ tmax=t-i-1; while(tmax>t-n) { scan representation of Qj(t-i)for internal states with maximum time index; for(all internal states with maximum time index) { execute backward time index transition from tmax to tmax-1 through state variable substitution using eq.(2)above; }cancel double terms in representation of Qj(t-i); tmax=tmax-1; } } }}/*結束程序*/]]></pre>為了說明以上一般地描述的并行化方法的應用,在下面,參照具體的例子更詳細地說明這個并行化過程。
正如在下面看到的,每個并行化Turbo編碼器塊包括一個貯存單元,例如第一組觸發器I0,...,I7,以便用來存儲輸入信號I(t)的n個樣本I(t-1),...,I(t-n),從而進一步提供給并行化TURBO編碼塊;以及至少一個貯存單元,例如第二組觸發器Q0,...,Q7,以便用來存儲并行化TURBO編碼塊的至少一個輸出信號Qj(t),j=1,...,M,的n個樣本Qj(t),...,Qj(t-(n-1))。
而且,并行化TURBO編碼器塊包括一組n個延時單元X1,...,XN,以及適合于對輸入信號I(t)的n個樣本進行并行處理,這樣,使得該組的至少兩個延時單元X1,...,XN可以接收輸入信號I(t)的n個樣本I(t-1),...,I(t-n),以及在并行化Turbo編碼器塊中的至少一個延時單元X1,...,XN的輸出信號被提供到并行化Turbo編碼器塊中的至少兩個延時單元。
圖4顯示具體的串行Turbo編碼器塊的電路圖,正如可以在圖8所示的Turbo編碼器中使用的那樣。
這里,應當指出,提供輸入延時單元16和輸出延時單元18本身,在串行實施方案的情形下并不是先決條件,但在并行化的情形下是必須的,以便收集如圖3所示的輸入矢量和輸出矢量的單元。
圖4所示的串行Turbo編碼器塊可以通過使用按照上述的方程(1)的正式說明而被簡短地描述為N=3,M=1,α=[α1,α2,α3] =
,β=[β1,β2,β3,β4]=[1,1,0,1]。下面,將說明這個串行Turbo編碼器塊如何被并行化為一個n=2,4,和8比特的并行Turbo編碼器塊。
3.1實例用于N=3,M=1,α=
,β==[1,1,0,1]的2比特并行Turbo編碼器從方程(1)開始,我們得出x1(t)=I(t-1)x2(t-1)x3(t-1)x2(t)=x1(t-1)x3(t)=x2(t-1)Q(t)=I(t-1)x1(t-1)x2(t-1)這正如對于圖4所示的Turbo編碼器塊說明的那樣。以下在兩個串行時間周期內的后向時標過渡是必須的x1(t)=I(t-1)x2(t-1)x3(t-1)<=>x1(t)=I(t-1)x1(t-2)x2(t-2)這是按照并行電路=> x1(p)=I0(p-1)x1(p-1)x2(p-1)x2(t)=x1(t-1)<=>x2(t)=I(t-2) x2(t-2)x3(t-2)這是按照并行電路=> x2(p)=I1(p-1)x2(p-1)x3(p-1)x3(t)=x2(t-1)<=>x3(t)=x1(t-2)這是按照并行電路=> x3(p)=x1(p-1)Q(t)=I(t-1)x1(t-1) x2(t-1)<=>Q(t)=I(t-1)[I(t-2)x2(t-2)x3(t-2)]x1(t-2)
這是按照并行電路=> Q0(p)=I0(p-1)I1(p-1)x1(p-1)x2(p-1)x3(p-1)Q(t-1)=I(t-2)x1(t-2)x2(t-2)這是按照并行電路=> Q1(p)=I1(p-1)x1(p-1)x2(p-1)圖5顯示這個并行化過程的結果,即,對于圖4所示的Turbo編碼器塊的二比特并行實施方案的電路圖。
3.2實例用于N=3,M=1,α=
,β=[1,1,0,1]的4比特并行Turbo編碼器從方程(1)開始,我們得出x1(t)=I(t-1)x2(t-1)x3(t-1)x2(t)=x1(t-1)x3(t)=x2(t-1)Q(t)=I(t-1)x1(t-1)x2(t-1)這正如對于圖4所示的Turbo編碼器塊說明的那樣。以下在四個串行時間周期內以下的后向時標過渡是必須的x1(t)=I(t-1)x2(t-1)x3(t-1)<=>x1(t)=I(t-1)x1(t-2)x2(t-2)<=>x1(t)=I(t-1)I(t-3)x2(t-3)x3(t-3)x1(t-3)<=>x1(t)=I(t-1)I(t-3)x1(t-4)x2(t-4)I(t-4)x2(t-4)x3(t-4)
這是按照并行電路=> x1(p)=I0(p-1)12(p-1)I3(p-1)x1(p-1)x3(p-1)x2(t)=x1(t-1)<=>x2(t)=I(t-2)x2(t-2)x3(t-2)<=>x2(t)=I(t-2)x1(t-3)x2(t-3)<=>x2(t)=I(t-2)[I(t-4)x2(t-4)x3(t-4)]x1(t-4)這是按照并行電路=> x2(p)=I1(p-1)I3(p-1)x1(p-1)x2(p-1)x3(p-1)x3(t)=x2(t-1)<=>x3(t)=x1(t-2)<=>x3(t)=[I(t-3)x2(t-3)x3(t-3)]<=>x3(t)=I(t-3)x1(t-4)x2(t-4)這是按照并行電路=> x3(p)=I2(p-1)x1(p-1)x2(p-1)Q(t) =I(t-1)x1(t-1)x2(t-1)<=>Q(t) =I(t-1)[I(t-2)x2(t-2)x3(t-2)]x1(t-2)<=>Q(t) =I(t-1)I(t-2)x1(t-3)x2(t-3)[I(t-3)x2(t-3)x3(t-3)]<=>Q(t) =I(t-1)I(t-2)I(t-3)[I(t-4)x2(t-4)x3(t-4)]x2(t-4)
這是按照并行電路=> Q0(p) =I0(p-1)I1(p-1)I2(p-1)I3(p-1)x3(p-1)Q(t-1)=I(t-2)x1(t-2)x2(t-2)<=>Q(t-1)=I(t-2)[I(t-3)x2(t-3)x3(t-3)]x1(t-3)<=>Q(t-1)=I(t-2)I(t-3)x1(t-4)x2(t-4)[I(t-4)x2(t-4)x3(t-4)]這是按照并行電路=> Q1(p) =I1(p-1)I2(p-1)I3(p-1)x1(p-1)x3(p-1)Q(t-2)=I(t-3)x1(t-3)x2(t-3)<=>Q(t-2)=I(t-3)[I(t-4)x2(t-4)x3(t-4)]x1(t-4)這是按照并行電路=> Q2(p) =I2(p-1)I3(p-1)x1(p-1)x2(p-1)x3(p-1)Q(t-3)=I(t-4)x1(t-4)x2(t-4)這是按照并行電路=> Q3(p) =I3(p-1)x1(p-1)x2(p-1)圖6顯示這個并行化過程的結果,即,對于圖4所示的Turbo編碼器塊的四比特并行實施方案的電路圖。
3.3實例用于N=3,M=1,α=
,β=[1,1,0,1]的8比特并行Turbo編碼器從方程(1)開始,我們得出x1(t)=I(t-1)x2(t-1)x3(t-1)x2(t)=x1(t-1)x3(t)=x2(t-1)Q(t)=I(t-1)x1(t-1)x2(t-1)正如對于圖4所示的Turbo編碼器塊說明的。在八個串行時間周期內以下的后向時標過渡是必須的x1(t)=I(t-1)x2(t-1)x3(t-1)<=>x1(t)=I(t-1)x1(t-2)x2(t-2)<=>x1(t)=I(t-1)[I(t-3)x2(t-3)x3(t-3)]x1(t-3)<=>x1(t)=I(t-1)I(t-3)x1(t-4)x2(t-4)[I(t-4)x2(t-4)x3(t-4)]<=>x1(t)=I(t-1)I(t-3)I(t-4)[I(t-5)x2(t-5)x3(t-5)]x2(t-5)<=>x1(t)=I(t-1)I(t-3)I(t-4)I(t-5)x2(t-6)<=>x1(t)=I(t-1)I(t-3)I(t-4)I(t-5)x1(t-7)<=>x1(t)=I(t-1)I(t-3)I(t-4)I(t-5)[I(t-8)x2(t-8)x3(t-8)]這是按照并行電路=> x1(p)=I0(p-1)I2(p-1)I3(p-1)I4(p-1)I7(p-1)x2(p-1)x3(p-1)x2(t)=x1(t-1)<=>x2(t)=[I(t-2)x2(t-2)x3(t-2)]<=>x2(t)=I(t-2) x1(t-3)x2(t-3)<=>x2(t)=I(t-2)[I(t-4)x2(t-4)x3(t-4)]
x1(t-4)<=>x2(t)=I(t-2)I(t-4)x1(t-5)x2(t-5)[I(t-5)x2(t-5)x3(t-5)]<=>x2(t)=I(t-2)I(t-4)I(t-5)[I(t-6)x2(t-6)x3(t-6)]x2(t-6)<=>x2(t)=I(t-2)I(t-4)I(t-5)I(t-6)x2(t-7)<=>x2(t)=I(t-2)I(t-4)I(t-5)I(t-6)x1(t-8)這是按照并行電路=> x2(p)=I1(p-1)I3(p-1)I4(p-1)I5(p-1)x1(p-1)x3(t)=x2(t-1)<=>x3(t)=x1(t-2)<=>x3(t)=[I(t-3)x2(t-3)x3(t-3)]<=>x3(t)=I(t-3)x1(t-4)x2(t-4)<=>x3(t)=I(t-3)[I(t-5)x2(t-5)x3(t-5)]x1(t-5)<=>x3(t)=I(t-3)I(t-5)x1(t-6)x2(t-6)[I(t-6)x2(t-6)x3(t-6)]<=>x3(t)=I(t-3)I(t-5)I(t-6)[I(t-7)x2(t-7)x3(t-7)]x2(t-7)<=>x3(t)=I(t-3)I(t-5)I(t-6)I(t-7)x2(t-8)這是按照并行電路=> x3(p)=I2(p-1)I4(p-1)I5(p-1)I6(p-1)x2(p-1)Q(t)= I(t-1)x1(t-1)x2(t-1)<=>Q(t)= I(t-1)[I(t-2)x2(t-2)x3(t-2)]x1(t-2)<=>Q(t)= I(t-1)I(t-2)x1(t-3)x2((t-3) <=>Q(t)= I(t-1)I(t-2)I(t-3)[I(t-4)x2((t-4)x3(t-4)]x2((t-4)<=>Q(t)= I(t-1)I(t-2)I(t-3)I(t-4)x2((t-5)<=>Q(t)= I(t-1)I(t-2)I(t-3)I(t-4)x1(t-6)<=>Q(t)= I(t-1)I(t-2)I(t-3)I(t-4)[I(t-7)x2(t-7)x3(t-7)]<=>Q(t)= I(t-1)I(t-2)I(t-3)I(t-4)I(t-7)x1(t-8)x2(t-8)這是按照并行電路=> Q0(p)= I0(p-1)I1(p-1)I2(p-1)I3(p-1)I6(p-1)x1(p-1)x2(p-1)Q(t-1)=I(t-2)x1(t-2)x2(t-2)<=>Q(t-1)=I(t-2)[I(t-3)x2(t-3)x3(t-3)]x1(t-3)<=>Q(t-1)=I(t-2)I(t-3)x1(t-4)x2((t-4)[I(t-4)x2(t-4)x3(t-4)]<=>Q(t-1)=I(t-2)I(t-3)I(t-4)[I(t-5)x2(t-5)x3(t-5)]x2(t-5)<=>Q(t-1)=I(t-2)I(t-3)I(t-4)I(t-5)x2(t-6)<=>Q(t-1)=I(t-2)I(t-3)I(t-4)I(t-5)x1(t-7)<=>Q(t-1)=I(t-2)I(t-3)I(t-4)I(t-5)[I(t-8)x2(t-8)x3(t-8)]這是按照并行電路=> Q1(p)= I1(p-1)I2(p-1)I3(p-1)I4(p-1)I7(p-1)x2(p-1)x3(p-1)Q(t-2)=I(t-3)x1(t-3)x2(t-3)<=>Q(t-2)=I(t-3)[I(t-4)x2(t-4)x3(t-4)]x1(t-4)<=>Q(t-2)=I(t-3)I(t-4)x1(t-5)x2(t-5)[I(t-5)x2(t-5)x3(t-5)]<=>Q(t-2)=I(t-3)I(t-4)I(t-5)[I(t-6)x2(t-6)x3(t-6)]x2(t-6)<=>Q(t-2)=I(t-3)I(t-4)I(t-5)I(t-6)x2(t-7)<=>Q(t-2)=I(t-3)I(t-4)I(t-5)I(t-6)x1(t-8)這是按照并行電路=> Q2(p)= I2(p-1)I3(p-1)I4(p-1)I5(p-1)x1(p-1)Q(t-3)=I(t-4)x1(t-4)x2(t-4)<=>Q(t-3)=I(t-4)[I(t-5)x2(t-5)x3(t-5)]x1(t-5)<=>Q(t-3)=I(t-4)I(t-5)x1(t-6)x2(t-6)[I(t-6)x2(t-6)x3(t-6)]<=>Q(t-3)=I(t-4)I(t-5)I(t-6)[I(t-7)x2(t-7)x3(t-7)]x2(t-7)<=>Q(t-3)=I(t-4)I(t-5)I(t-6)I(t-7)x2(t-8)
這是按照并行電路=> Q3(p)= I3(p-1)I4(p-1)I5(p-1)I6(p-1)x2(p-1)Q(t-4)=I(t-5)x1(t-5)x2(t-5)<=>Q(t-4)=I(t-5)[I(t-6)x2(t-6)x3(t-6)]x1(t-6)<=>Q(t-4)=I(t-5)I(t-6)x1(t-7)x2(t-7)[I(t-7)x2(t-7)x3(t-7)]<=>Q(t-4)=I(t-5)I(t-6)I(t-7)[I(t-8)x2(t-8)x3(t-8)]x2(t-8)這是按照并行電路=> Q4(p)= I4(p-1)I5(p-1)I6(p-1)I7(p-1)x3(p-1)Q(t-5)=I(t-6)x1(t-6)x2(t-6)<=>Q(t-5)=I(t-6)[I(t-7)x2(t-7)x3(t-7)]x1(t-7)<=>Q(t-5)=I(t-6)I(t-7)x1(t-8)x2(t-8)[I(t-8)x2(t-8)x3(t-8)]這是按照并行電路=> Q5(p)= I5(p-1)I6(p-1)I7(p-1)x1(p-1)x3(p-1)Q(t-6)=I(t-7)x1(t-7)x2(t-7)<=>Q(t-6)=I(t-7)[I(t-8)x2(t-8)x3(t-8)]x1(t-8)
這是按照并行電路=> Q6(p)=I6(p-1)I7(p-1)x1(p-1)x2(p-1)x3(p-1)Q(t-7)=I(t-8)x1(t-8)x2(t-8)這是按照并行電路=> Q7(p)=I7(p-1)x1(p-1)x2(p-1)圖7A和7B顯示這個并行化過程的結果,即,對于圖4所示的Turbo編碼器塊的八比特并行實施方案的電路圖。
4.VHDL代碼按照逐個步驟方式描述的上述遞歸并行化可以與邏輯綜合工具一起使用,以便比較不同的設計替換例。不存在對任何這樣特定系統的限制,這里,參考非常高速度硬件說明語言VHDL,以作為使用邏輯綜合工具的邏輯電路設計的典型例子。
作為Turbo編碼器塊并行化結果的實施方案的VHDL代碼方法的優點在于,設計可以在非常短的時間內實施,而不限于特定的技術(例如ASIC或FPGA)。
因此,實際的技術不是通過Turbo編碼器塊并行化結果而被規定的,而是可被設置為在進行編碼后要借助邏輯綜合工具來處理的參量,因此,可以容易地被加以改變以便去比較不同的設計任選方案。
在下面,列出對于圖5、6和7所示的2,4和8比特并行化Turbo編碼器塊的VHDL代碼。因為VHDL代碼語言的使用在技術上是熟知的,以上說明的并行化結果的關系是顯然的,這里不再給出細節的說明。
<pre listing-type="program-listing"><![CDATA[LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_arith.ALL;ENTITY en_turbo_coder_rtl IS PORT( --General reset_p IN STD_LOGIC; clk32m IN STD_LOGIC;--Clock (rising edge triggered) input_8 IN std_logic_vector(7 DOWNTO 0); input_4 IN std_logic_vector(3 DOWNTO 0); input_2 IN std_logic_vector(1 DOWNTO 0); input_1 IN std_logic; --turboCoding 2 bit parallel output_8 OUT std_logic_vector(7 DOWNTO 0); output_4 OUT std_logic_vector(3 DOWNTO 0); output_2 OUT std_logic_vector(1 DOWNTO 0); output_1 OUT std_logic );END en_turbo_coder_rtl;ARCHITECTURE rtl OF en_turbo_coder_rtl ISSIGNAL s1_x1 std_logic;SIGNAL s1_x2 std_logic;SIGNAL s1_x3 std_logic;SIGNAL s1_i std_logic;SIGNAL s1_o std_logic;SIGNAL s2_x1 std_logic;SIGNAL s2_x2 std_logic;SIGNAL s2_x3 std_logic;SIGNAL s2_i std_logic_vector(1 DOWNTO 0);SIGNAL s2_o std_logic_vector(1 DOWNTO 0);SIGNAL s4_x1 std_logic;SIGNAL s4_x2 std_logic;SIGNAL s4_x3 std_logic;SIGNAL s4_i std_logic_vector(3 DOWNTO 0);SIGNAL s4_o std_logic_vector(3 DOWNTO 0);SIGNAL s8_x1 std_logic;SIGNAL s8_x2 std_logic;SIGNAL s8_x3 std_logic;SIGNAL s8_i std_logic_vector(7 DOWNTO 0);SIGNAL s8_o std_logic_vector(7 DOWNTO 0);BEGIN tc_1 PROCESS(clk32m,reset_p)--seriell building of turbo coder block TCB BEGIN IF reset_p=′1′THENs1_x1<=′0′; s1_x2<=′0′; s1_x3<=′0′; s1_i <=′0′; s1_o <=′0′; ELSIF clk32m′EVENT AND clk32m=′1′THEN s1_i <=input_1; s1_x1<=s1_i XOR s1_x2 XOR s1_x3; s1_x2<=s1_x1; s1_x3<=s1_x2; s1_o <=s1_i XOR s1_x2 XOR s1_x1; END IF;END PROCESS tc_1;output_1<=s1_o;tc_2PROCESS(clk32m,reset_p)--2bit parallel building of turbo coder blockBEGIN IF reset_p=′1′THEN s2_x1<=′0′; s2_x2<=′0′; s2_x3<=′0′; s2_i <=(OTHERS=>′0′); s2_o <=(OTHERS=>′0′);ELSIF clk32m′EVENT AND clk32m=′1′THEN s1_i <=input_2 ; s2_x1<=s2_i(0) XOR s2_x1 XOR s2_x2; s2_x2<=s2_i(1) XOR s2_x2 XOR s2_x3; s2_x3<=s2_x1; s2_o(0)<=s2_i(0) XOR s2_i(1) XOR s2_x1 XOR s2_x2 XOR s2_x3; s2_o(1)<=s2_i(1) XOR s2_x1 XOR s2_x2; END IF;END PROCESS tc_2;output_2<=s2_o;tc_4PROCESS(clk32m,reset_p)--4bit parallel building of turbo coder blockBEGIN IF reset_p=′1′THEN s4_x1<=′0′; s4_x2<=′0′; s4_x3<=′0′; s4_i <=(OTHERS=>′0′); s4_o <=(OTHERS=>′0′); ELSIF clk32m′EVENT AND clk32m=′1′THEN s4_i <=input_4 ; s4_x1 <=s4_i(0) XOR s4_i(2) XOR s4_i(3)XOR s4_x1 XOR s4_x3; s4_x2 <=s4_i(1) XOR s4_i(3) XOR s4_x1 XOR s4_x2 XOR s4_x3; s4_x3 <=s4_i(2) XOR s4_x1 XOR s4_x2; s4_o(0)<=s4_i(0) XOR s4_i(1) XOR s4_i(2) XOR s4_i(3) XOR s4_x3; s4_o(1)<=s4_i(1) XOR s4_i(2) XOR s4_i(3) XOR s4_x1 XOR s4_x3; s4_o(2)<=s4_i(2) XOR s4_i(3) XOR s4_x1 XOR s4_x2 XOR s4_x3; s4_o(3)<=s4_i(3) XOR s4_x1 XOR s4_x2; END IF;END PROCESS tc_4;output_4<=s4_o;tc_8PROCESS(clk32m,reset_p)--8bit parallel building of turbo coder blockBEGIN IF reset_p=′1′THEN s8_x1<=′0′; s8_x2<=′0′; s8_x3<=′0′; s8_i <=(OTHERS=>′0′); s8_o <=(OTHERS=>′0′); ELSIF clk32m′EVENT AND clk32m=′1′THENs8_i <=input_8 ; s8_x1 <=s8_i(0) XOR s8_i(2) XOR s8_i(3) XOR s8_i(4) XOR s8_i(7) XOR s8_x2 XOR s8_x3; s8_x2 <=s8_i(1) XOR s8_i(3) XOR s8_i(4) XOR s8_i(5) XOR s8_x1; s8_x3 <=s8_i(2) XOR s8_i(4) XOR s8_i(5) XOR s8_i(6) XOR s8_x2; s8_o(0)<=s8_i(0) XOR s8_i(1) XOR s8_i(2) XOR s8_i(3) XOR s8_i(6) XOR s8_x1 XOR s8_x2; s8_o(1)<=s8_i(1) XOR s8_i(2) XOR s8_i(3) XOR s8_i(4) XOR s8_i(7) XOR s8_x2 XOR s8_x3; s8_o(2)<=s8_i(2) XOR s8_i(3) XOR s8_i(4) XOR s8_i(5) XOR s8_x1; s8_o(3)<=s8_i(3) XOR s8_i(4) XOR s8_i(5) XOR s8_i(6) XOR s8_x2; s8_o(4)<=s8_i(4) XOR s8_i(5) XOR s8_i(6) XOR s8_i(7) XOR s8_x3; s8_o(5)<=s8_i(5) XOR s8_i(6) XOR s8_i(7) XOR s8_x1 XOR s8_x3; s8_o(6)<=s8_i(6) XOR s8_i(7) XOR s8_x1 XOR s8_x2 XOR s8_x3; s8_o(7)<=s8_i(7) XOR s8_x1 XOR s8_x2; END IF;END PROCESS tc_8;output_8 <=s8_o;END rtl;]]></pre>
5.Turbo編碼器實現雖然圖8涉及到以上本發明的背景技術,但圖8也涉及到本發明,正如下面看到的那樣。
以上描述的本發明涉及到帶有M個輸出的Turbo編碼器塊的并行化。無論如何,應當指出,按照本發明,構建一個完整的Turbo編碼器需要對并行化Turbo編碼器塊進行兩次例示,正如圖8所示的那樣(其中在Turbo編碼器塊中假設M=1)。
一個Turbo編碼器塊涉及到圖8所示的、用于導出OUTPUT1的正常的輸入數據流,以及另一個涉及到用于導出OUTPUT2的交替的輸入數據流。因為輸入數據流也直接傳送到OUTPUT0,所以Turbo編碼器的三個輸出具有每個并行時鐘周期3n比特的寬度,其中n是其并行化指數。
權利要求
1.并行Turbo編碼器實施方法,該方法按照下式從串行Turbo編碼器塊說明開始x1(t)=I(t-1)α1·x1(t-1)α2·x2(t-1)...αN·xN(t-1)αiε{0,1}x2(t)=x1(t-1)......xN(t)=xN-1(t-1)Qj(t)=βj0·I(t-1)x1(t-1)·[βj0·α1βj1]...xN(t-1)·[βj0·αNβjN]βijε{0,1}jε[1,...,N]包括以下步驟(a)按照下式對第一內部狀態實行時標替換x1(t-1) =I(t-2)α1·x1(t-2)α2·x2(t-2)...αN·xN(t-2)(2.x1.1)..x1(t-(n-1))=I(t-n)α1·x1(t-n)α2·x2(t-n)...αN·xN(t-n)(2.x1.n-1)其中n是并行化指數。(b)按照下式對其余的內部狀態(i=2,...,N)實行時標替換xi(t-1)=xi-1(t-2)(2.xi.1)xi(t-(n-1))=xi-1(t-n)(2.xi.n-1)(c)按照下式對輸出實行時標替換Qj(t-i)=βj0·I(t-(i+1))x1(t-(i+1))·[βj0·α1βj1]xN(t-(i+1))·[βj0·αNβjN]iε[1,...,n-1](2.Q.i)以導出并行輸出矢量Qj(t)=Qj0(p)Qj(t-1)=Qj1(p)Qj(t-(n-1))=Qjn-1(p)jε[1,...,M](d)按照以下子步驟對每個內部狀態xk(t)(k=1,...,N)實行內部狀態替換處理(d1)把內部狀態xk(t)的最大時標單元設置為tmax=t-1;(d2)掃描內部狀態xk(t)的表示式,尋找具有最大時標tmax的內部狀態;(d3)在內部狀態xk(t)的表示式中通過使用方程(2)的狀態變量替換步驟執行從tmax到tamx-1的后向時標過渡;和(d4)把tmax遞減1,以及當tmax>t-n時,重復進行步驟(d2)到(d4);(e)按照以下子步驟對每個并行輸出矢量Qj(t)(j=1,...,M)的每個單元Qj(t-i)(i=0,...,n-2)實行內部狀態替換處理(e1)把在所考慮的并行輸出矢量Qj(t)中的矢量單元Qj(t-i)的最大時標單元設置為tmax=t-i-1;(e2)掃描矢量單元Qj(t-i)的表示式,尋找具有最大時標的內部狀態;(e3)在矢量單元Qj(t-i)的表示式中通過使用方程(2)的狀態變量替換步驟執行從tmax到tmax-1的后向時標過渡;和(e4)把tmax遞減1,以及當tmax到>t-n時重復進行步驟(e2)到(e4)。
2.具有并行化指數n的并行Turbo編碼器塊,包括(a)用于把輸入信號I(t)的n個樣本(I(t-1),...,I(t-n))存儲到并行Turbo編碼器塊的裝置(I0,...,I7);(b)用于存儲并行Turbo編碼器塊的至少一個輸出信號Qj(t)(j=1,...,M)的n個樣本(Qj(t),...,Qj(t-(n-1))的至少一個裝置(Q0,...,Q7);(c)Turbo編碼器裝置,它包括一組n個延時單元(X1,...,XN),以及適合于并行處理輸入信號I(t)的n個樣本,從而該組的至少兩個延時單元(X1,...,XN)直接接收輸入信號I(t)的n個樣本(I(t-1),...,I(t-n)),以及Turbo編碼器裝置中的至少一個延時單元(X1,...,XN)的輸出信號被提供到Turbo編碼器裝置中的至少兩個延時單元。
3.按照權利要求2的并行Turbo編碼器塊,其特征在于,Turbo編碼器裝置具有一個結構,該結構可以通過權利要求1的并行Turbo編碼器實施方法按照下式從串行Turbo編碼器塊說明中導出x1(t)=I(t-1)α1·x1(t-1)α2·x2(t-1)...αN·xN(t-1)αiε{0,1}x2(t)=x1(t-1). .. .. .xN(t)=xN-1(t-1)Qj(t)=βj0·I(t-1)x1(t-1)·[βj0·α1βj1]..xN(t-1)·[βj0·αNβjN]βjiε{0,1}jε[1,...,M]
4.按照權利要求2或3的并行Turbo編碼器塊,其特征在于,并行化指數是2,N=3,M=1,α=
,β=[1,1,0,1],以及Turbo編碼器裝置的結構是Q0(p)=I0(p-1)I1(p-1)x1(p-1)x2(p-1)x3(p-1)Q1(p)=I1(p-1)x1(p-1)x2(p-1),其中x1(p)=I0(p-1)x1(p-1)x2(p-1),x2(p)=I1(p-1)x2(p-1)x3(p-1),和x3(p)=x1(p-1).
5.按照權利要求2或3的并行Turbo編碼器塊,其特征在于,并行化指數是4,N=3,M=1,α=
,β=[1,1,0,1],以及Turbo編碼器裝置的結構是Q0(p)=I0(p-1)I1(p-1)I2(p-1)I3(p-1)x3(p-1)Q1(p)=I1(p-1)I2(p-1)I3(p-1)x1(p-1)x3(p-1)Q2(p)=I2(p-1)I3(p-1)x1(p-1)x2(p-1)x3(p-1)Q3(p)=I3(p-1)x1(p-1)x2(p-1),其中x1(p)=I0(p-1)I2(p-1)I3(p-1)x1(p-1)x3(p-1),x2(p)=I1(p-1)I3(p-1)x1(p-1)x2(p-1)x3(p-1),和x3(p)=I2(p-1)x1(p-1)x2(p-1).
6.按照權利要求2或3的并行Turbo編碼器塊,其特征在于,并行化指數是8,N=3,M=1,α=
,β=[1,1,0,1],以及Turbo編碼器裝置的結構是Q0(p)=I0(p-1)I1(p-1)I2(p-1)I3(p-1)I6(p-1)x1(p-1)x2(p-1)Q1(p)=I1(p-1)I2(p-1)I3(p-1)I4(p-1)I7(p-1)x2(p-1)x3(p-1)Q2(p)=I2(p-1)I3(p-1)I4(p-1)I5(p-1)x1(p-1)Q3(p)=I3(p-1)I4(p-1)I5(p-1)I6(p-1)x2(p-1)Q4(p)=I4(p-1)I5(p-1)I6(p-1)I7(p-1)x3(p-1)Q5(p)=I5(p-1)I6(p-1)I7(p-1)x1(p-1)x3(p-1)Q6(p)=I6(p-1)I7(p-1)x1(p-1)x2(p-1)x3(p-1)Q7(p)=I7(p-1)x1(p-1)x2(p-1),其中x1(p)=I0(p-1)I2(p-1)I3(p-1)I4(p-1)I7(p-1)x2(p-1)x3(p-1),x2(p)=I1(p-1)I3(p-1)I4(p-1)I5(p-1)x1(p-1),和x3(p)=I2(p-1)I4(p-1)I5(p-1)I6(p-1)x2(p-1).
7.可直接裝載到計算機的內存的計算機程序產品,包括軟件代碼部分,當該產品在計算機上運行時用于執行按照權利要求1的步驟。
8.按照權利要求7的計算機程序產品,其特征在于,軟件代碼部分是VHDL類型的。
9.按照權利要求8的計算機程序產品,其特征在于,軟件代碼部分被規定為<![CDATA[LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_arith.ALL;ENTITY_en_turbo_coder_rtl_IS PORT( --General reset_p IN STD_LOGIC; clk32m IN STD_LOGIC;--Clock (rising edge triggered) input_8 IN std_logic_vector(7 DOWNTO 0); input_4 IN std_logic_vector(3 DOWNTO 0); input_2 IN std_logic_vector(1 DOWNTO 0); input_1 IN std_logic; -- turboCoding 2 bit parallel output_8 OUT std_logic_vector(7 DOWNTO 0); output_4 OUT std_logic_vector(3 DOWNTO 0); output_2 OUT std_logic_vector(1 DOWNTO 0); output_1 OUT std_logic );END_en_turbo_coder_rtl;ARCHITECTURE rtl OF en_turbo_coder_rtl ISSIGNAL s1_x1 std_logic;SIGNAL s1_x2 std_logic;SIGNAL s1_x3 std_logic;SIGNAL s1_i std_logic;SIGNAL s1_o std_logic;SIGNAL s2_x1 std_logic;SIGNAL s2_x2 std_logic;SIGNAL s2_x3 std_logic;SIGNAL s2_i std_logic_vector(1 DOWNTO 0);SIGNAL s2_o std_logic_vector(1 DOWNTO 0);SIGNAL s4_x1 std_logic;SIGNAL s4_x2 std_logic;SIGNAL s4_x3 std_logic;SIGNAL s4_i std_logic_vector(3 DOWNTO 0);SIGNAL s4_o std_logic_vector(3 DOWNTO 0);SIGNAL s8_x1 std_logic;SIGNAL s8_x2 std_logic;SIGNAL s8_x3 std_logic;SIGNAL s8_i std_logic_vector(7 DOWNTO 0);SIGNAL s8_o std_logic_vector(7 DOWNTO 0);BEGIN tc_1PROCESS(clk32m,reset_p)--seriell building of TC BEGIN IF reset_p=′1′THEN s1_x1<=′0′; s1_x2<=′0′; s1_x3<=′0′; s1_i <=′0′; s1_o <=′0′; ELSIF clk32m′EVENT AND clk32m=′1′THENs1_i <=input_1; s1_x1<=s1_i XOR s1_x2 XOR s1_x3; s1_x2<=s1_x1; s1_x3<=s1_x2; s1_o <=s1_i XOR s1_x2 XOR s1_x1; END IF;END PROCESS tc_1;output_1<=s1_o;tc_2PROCESS(clk32m,reset_p)--2bit par building of TCBEGIN IF reset_p=′1′THEN s2_x1<=′0′; s2_x2<=′0′; s2_x3<=′0′; s2_i<=(OTHERS=>′0′); s2_o<=(OTHERS=>′0′); ELSIF clk32m′EVENT AND clk32m=′1′THEN s2_i<=input_2; s2_x1<=s2_i(0) XOR s2_x1 XOR s2_x2; s2_x2<=s2_i(1) XOR s2_x2 XOR s2_x3; s2_x3<=s2_x1; s2_o(0)<=s2_i(0) XOR s2_i(1) XOR s2_x1 XOR s2_x2 XOR s2_x3;s2_o(1)<=s2_i(1) XOR s2_x1 XOR s2_x2; END IF;END PROCESS tc_2;output_2<=s2_o;tc_4PROCESS(clk32m,reset_p)--4bit par building of TCBEGIN IF reset_p=′1′THEN s4_x1<=′0′; s4_x2<=′0′; s4_x3<=′0′; s4_i <=(OTHERS=>′0′); s4_o <=(OTHERS=>′0′); ELSIF clk32m′EVENT AND clk32m=′1′THEN s4_i<=input_4; s4_x1<=s4_i(0) XOR s4_i(2) XOR s4_i(3) XOR s4_x1 XOR s4_x3; s4_x2<=s4_i(1) XOR s4_i(3) XOR s4_x1 XOR s4_x2 XOR s4_x3; s4_x3<=s4_i(2) XOR s4_x1 XOR s4_x2; s4_o(0) <=s4_i(0) XOR s4_i(1) XOR s4_i(2) XOR s4_i(3) XOR s4_x3; s4_o(1) <=s4_i(1) XOR s4_i(2) XOR s4_i(3) XOR s4_x1 XOR s4_x3; s4_o(2) <=s4_i(2) XOR s4_i(3) XOR s4_x1XOR s4_x2 XOR s4_x3; s4_o(3) <=s4_i(3) XOR s4_x1 XOR s4_x2; END IF;END PROCESS tc_4;output_4 <=s4_o;tc_8PROCESS(clk32m,reset_p)--8bit par building of TCBEGIN IF reset_p=′1′THEN s8_x1 <=′0′; s8_x2 <=′0′; s8_x3 <=′ 0′; s8_i <=(OTHERS=>′0′); s8_o <=(OTHERS=>′0′); ELSIF clk32m′EVENT AND clk32m=′1′THEN s8_i <=input_8; s8_x1 <=s8_i(0) XOR s8_i(2) XOR s8_i(3) XOR s8_i(4) XOR s8_i(7) XOR s8_x2 XOR s8_x3; s8_x2 <=s8_i(1) XOR s8_i(3) XOR s8_i(4) XOR s8_i(5) XOR s8_x1; s8_x3 <=s8_i(2) XOR s8_i(4) XOR s8_i(5) XOR s8_i(6) XOR s8_x2; s8_o(0)<=s8_i(0) XOR s8_i(1) XOR s8_i(2)XOR s8_i(3) XOR s8_i(6) XOR s8_x1 XOR s8_x2; s8_o(1) <=s8_i(1) XOR s8_i(2) XOR s8_i(3) XOR s8_i(4) XOR s8_i(7) XOR s8_x2 XOR s8_x3; s8_o(2) <=s8_i(2) XOR s8_i(3) XOR s8_i(4) XOR s8_i(5) XOR s8_x1; s8_o(3) <=s8_i(3) XOR s8_i(4) XOR s8_i(5) XOR s8_i(6) XOR s8_x2; s8_o(4) <=s8_i(4) XOR s8_i(5) XOR s8_i(6) XOR s8_i(7) XOR s8_x3; s8_o(5) <=s8_i(5) XOR s8_i(6) XOR s8_i(7) XOR s8_x1 XOR s8_x3; s8_o(6) <=s8_i(6) XOR s8_i(7) XOR s8_x1 XOR s8_x2 XOR s8_x3; s8_o(7) <=s8_i(7) XOR s8_x1 XOR s8_x2; END IF; END PROCESS tc_8; output_8<=s8_o;END rtl;]]>
全文摘要
為了得到具有增加的處理速度的Turbo(渦輪)編碼器塊,提出實行指數n的并行化。為此,每個并行化的Turbo編碼器塊包括貯存裝置(I0,…,I7),用于把輸入信號I(t)的n個樣本(I(t-1),…,I(t-n))存儲到并行Turbo編碼器塊,以及至少一個貯存裝置(Q0,…,Q7),用于存儲并行Turbo編碼器塊的至少一個輸出信號Qj(t)(j=1,…,M)的n個樣本(Qj(t),…,Qj(t-(n-1))。而且,并行化的Turbo編碼器塊包括一組n個延時單元(X
文檔編號G06F11/10GK1390391SQ00815731
公開日2003年1月8日 申請日期2000年9月4日 優先權日1999年9月15日
發明者G·梅爾斯伯格, G·施佩萊恩 申請人:艾利森電話股份有限公司