用塊RAM實現(xiàn)卷積交織解交織
關鍵詞: 卷積交織-解交織;FIFO移位寄存器;RAM
為了糾正數(shù)據(jù)在信道中傳輸時由于受到突發(fā)干擾而產(chǎn)生的突發(fā)錯誤,常用的方法是采用交織-解交織措施,也就是通過在發(fā)射端將所要發(fā)射的數(shù)據(jù)通過交織將其順序打亂,接收后解調的時隙輸出經(jīng)過一次解交織的反向處理重新組合,使其變?yōu)樵瓉眄樞虻男蛄?,這樣就可以將相鄰的突發(fā)錯誤分散到糾錯解碼可以糾錯的范圍。常用兩種方法來實現(xiàn)交織-解交織過程,分別被稱為“分組交織”和“卷積交織”。但是“卷積交織-解交織”的總時延約為“分組交織-解交織”的一半,因此在現(xiàn)代的許多通信系統(tǒng)中,常常采用“卷積交織-解交織器”來對抗突發(fā)干擾。
在傳統(tǒng)的設計中,常常采用FIFO移位寄存器來完成“卷積交織-解交織器”的實現(xiàn)。但是當交織-解交織的支路(branch)較多時,使用FIFO移位寄存器就顯得雜亂和零散,時鐘管理比較繁瑣,更重要的是在芯片中會占用很多資源,不利于FPGA和ASIC的設計和制作。
本文詳細描述了一種用整塊RAM來代替多個FIFO移位寄存器實現(xiàn)卷積交織-解交織的方法。在此基礎上以J.83標準為例找出了用塊RAM實現(xiàn)卷積-解交織的一般規(guī)律,這樣就可以大大簡化實現(xiàn)時的時鐘和數(shù)據(jù)管理,減小實現(xiàn)復雜程度,節(jié)省系統(tǒng)資源,降低成本。
FIFO移位寄存器的操作原理
下面以長度為8的FIFO移位寄存器為例來說明其操作原理。如圖1所示,兩邊的箭頭表示數(shù)據(jù)移動的方向。A,B,C,D表示被處理的數(shù)據(jù),1,2..8表示FIFO移位寄存器中的存儲單元。在每一個時鐘上升沿到來時,數(shù)據(jù)向右移動一個存儲單元。這樣在時鐘的控制下,數(shù)據(jù)從左至右通過存儲單元。
使用RAM實現(xiàn)FIFO移位寄存器的處理過程
為了達到與FIFO移位寄存器處理的同樣結果,以便于數(shù)據(jù)和操作時鐘的管理,使用的RAM存儲單元的長度等于FIFO移位寄存器中存儲單元的長度加1。讀地址比寫地址超前一個指針數(shù),即在第n個時鐘到來時向RAM中的第k-1個單元寫數(shù)據(jù),同時從第k個單元讀數(shù)據(jù)。在第n+1個時鐘到來時,向RAM中的第k個單元寫數(shù)據(jù),同時從第k+1個存儲器單元讀數(shù)據(jù)。 讀寫時鐘都是執(zhí)行同步操作。這樣在時鐘控制下執(zhí)行所有的操作。在系統(tǒng)開始工作的第一個時鐘到來時,此時寫操作指針指向第一個RAM單元,同時的讀數(shù)據(jù)指針指向第二RAM單元(如圖2所示)。
用塊RAM代替FIFO移位寄存器實現(xiàn)卷積交織-解交織
圖1 FIFO移位寄存器的操作原理
圖2 用RAM代替FIFO移位寄存器的操作過程
圖3 J.83標準中用FIFO移位寄存器實現(xiàn)卷積交織-解交織結構圖
圖4 卷積交織-解交織讀寫地址產(chǎn)生圖
下面以J.83標準中的卷積交織和解交織器為例來說明。圖3是J.83中用FIFO移位寄存器實現(xiàn)卷積交織和解交織的結構圖。并行輸入數(shù)據(jù)比特的寬度為8bit。從圖中可以看出,交織-解交織器由I個分支構成,從0到I-1,I=12。每個分支的延遲單元數(shù)為0、J、2J、......(I-1)J, J=17。每個分支延遲單元數(shù)相差為J,所以對所有輸入數(shù)據(jù)來說每個分支的延遲數(shù)是不一樣的,結果造成對輸入數(shù)據(jù)的延遲不一樣,從而完成了交織過程。
通過上面的分析可以看出:用RAM來代替FIFO移位寄存器完成相同的功能。在FPGA和ASIC設計中就可以用單個塊RAM代替多個FIFO移位寄存器。根據(jù)J.83標準中的結構圖可以看出,將整個塊RAM按照“FIFO移位寄存器的相應存儲單元+1”的大小劃分成I個存儲小塊單元。第0個存儲小塊大小為1,第一個存儲小塊大小為J+1,第二個為2J+1,依此類推,第I-1個存儲塊的大小為(I-1)J+1。在FIFO移位寄存器實現(xiàn)中,由于每隔一個時鐘周期,讀寫指針都要跳到下一個FIFO移位寄存器分支,以實現(xiàn)相應的功能,對于塊RAM的存儲小塊單元來說就是從一個存儲小塊單元跳到另一個存儲小塊單元,以實現(xiàn)與FIFO移位寄存器相同的功能。
由J.83的例子可以看出,訪問塊RAM的讀寫指針由三個部分組成,第一部分為指示存儲小塊單元指針,第二部分為小塊單元內偏移指針,將這兩部分指針相加,得到寫數(shù)據(jù)操作的指針。第三部分是讀指針與寫指針相比滯后一個時鐘周期,并且讀地址是寫數(shù)據(jù)指針加1,產(chǎn)生RAM的相應讀指針。以便循環(huán)讀取存儲器中的數(shù)據(jù)。塊RAM就根據(jù)這些相應的讀寫指針,寫入和讀出相應的數(shù)據(jù),從而完成了卷積交織。
根據(jù)同樣的道理可以構造出卷積解交織的塊RAM實現(xiàn)方法。從而可以推廣到一般的卷積交織-解交織的實現(xiàn)方法,如圖4所示。此方法包括下面幾部分:小塊存儲單元切換控制、小塊內偏移指針、讀時鐘延遲一個周期以及小塊內偏移指針+1。
小塊存儲單元切換控制用來選擇需要進入的塊RAM中的小塊存儲單元;
小塊內偏移指針是用來產(chǎn)生在小塊存儲單元的偏移地址,它與小塊存儲單元切換控制所指示的地址相加,可以得到小塊內存儲單元的寫數(shù)據(jù)地址;
小塊內偏移指針+1:將小塊存儲單元RAM寫數(shù)據(jù)地址+1,就產(chǎn)生了讀數(shù)據(jù)的指針?!?/P>
參考文獻
1 ITU-T J.83 standardization
2 Xilinx datasheet. "synchronous FIFO".
3 Xilinx datasheet. “Dual-port Block Memory”
評論