本發明涉及一種基于Turbo編碼的交織地址快速計算方法,克服了乘除邏輯和Block RAM查找表等計算過程復雜、FPGA資源占用多、計算結果延遲大等技術缺點,大大提高了交織地址計算的高效性和實時性,主要在各類軌道衛星的測控平臺上使用,屬于衛星測控技術領域。
背景技術:
Turbo編碼又稱并行級聯卷積碼,屬于測控或通信領域的一種高增益信道編碼。在Turbo編碼過程中,為了提高編碼增益,減少系統功耗,降低發射天線的有效輻射功率,要求編碼器b數據讀取地址(即交織地址)是隨機的,需要根據Turbo編碼既定算法進行計算。
基于乘除邏輯的交織地址計算算法嚴格遵循Turbo編碼給定算法,基于Memory資源的交織地址查找算法,均可得到交織地址,但是這些設計存在以下不足:(1)基于乘除邏輯的交織地址計算算法其特點是邏輯運算量較大,實現比較復雜,占用硬件資源(乘法器IP、Slices和查找表LUTs)也比較多,計算結果延遲大;(2)基于Memory資源的交織地址查找算法其特點是此簡單、直觀,將復雜的乘法、除法、移位和取模邏輯運算交付由matlab程序完成,算法中采用了Slices和LUTs硬件資源大大減少,但器件96個Block RAM塊資源占去了6個,對于背景型號所需的非相干擴頻多站測定軌需求而言,6個Block RAM塊資源是很珍惜的,甚至可以造成既定硬件平臺無法完成型號任務需求。
隨著傳輸信息速率提高,基于乘除邏輯或基于Memory資源的的交織地址計算技術已然無法滿足資源占用率低、計算過程可靠、計算結果延遲小等要求。
技術實現要素:
本發明的技術解決問題是:克服現有技術的不足,提供了一種基于Turbo編碼的交織地址快速計算方法,利用加法邏輯實現了交織地址計算,最大程度滿足了衛星對交織地址計算高效、準確和快速的需求。
本發明的技術解決方案是:
一種基于Turbo編碼的交織地址快速計算方法,步驟如下:
(1)按照Turbo(并行級聯卷積)編碼既定格式要求完成待傳數據的AOS(高級在軌系統)組幀,整幀幀長字節數記為Na,其中參與Turbo編碼的有效數據字節長度為Nb,即Nb*8比特;
(2)將有效數據以比特流方式緩存至FPGA雙端口Block RAM中,RAM位寬為1,深度需不小于Nb*8;
(3)分量編碼器a輸入數據Dataa需順序依次從RAM讀取,所述順序依次讀取是指取數過程中從零地址開始,每讀取1比特已存數據,地址加1,記編碼器a的數據地址為order,取值范圍為0~Nb*8-1;
(4)分量編碼器b輸入數據也為Block RAM所存數據,但是取據過程隨機,數據讀取地址則需實時計算,記編碼器b數據地址為Interl,取值范圍也為0~Nb*8-1;
(5)以編碼器a的數據地址order為參數,參照order的奇偶特性和取值范圍計算編碼器b的數據交織地址,若order為偶數,則根據order的取值范圍采取(6)~(13)不同分支進行計算,若order為奇數,則直接采取(14)分支進行計算;
(6)若order為偶數且order等于零,則Interl=Interl+0x0003,之后則進入步驟(15);
(7)若order為偶數,order大于0且小于2040,則Interl=Interl+0x0081,之后則進入步驟(15);
(8)若order為偶數,order等于2040,則Interl=Interl+0x007F,之后則進入步驟(15);
(9)若order為偶數,order大于2040且小于4080,則Interl=Interl+0x0051,之后則進入步驟(15);
(10)若order為偶數,order等于4080,則Interl=Interl+0x0057,之后則進入步驟(15);
(11)若order為偶數,order大于4080且小于6120,則Interl=Interl+0x00D1,之后則進入步驟(15);
(12)若order為偶數,order等于6120,則Interl=Interl+0x00CF,之后則進入步驟(15);
(13)若order為偶數,order大于6120且小于Nb*8-1,則Interl=Interl+0x00B1,之后則進入步驟(15);
(14)若編碼器a輸入數據的地址order為奇數,即換算成16進制后order(0)不為0,則Interl=Interl+0x00A7,之后則進入步驟(15);
(15)對計算所得Interl進行8160取模,所得小于8160的余數即為當前順序地址order對應的交織地址Interl;
(16)使用Interl作為編碼器b輸入的數據地址,從Block RAM讀取對應的交織數據Datab,與從順序地址order讀取的Dataa一起送至Turbo編碼器,實現信道Turbo編碼。
所述Turbo編碼增益為8dB,編碼比率有1/2、1/3、1/4和1/6共計4檔。
本發明與現有技術相比的有益效果是:本發明遵循Turbo編碼給定的交織地址計算算法,經過數學推導與仿真確認,首次提出了利用加法邏輯實現的交織地址快速計算,它解決了基于乘除邏輯運算量復雜,結果延遲大的技術難題,突破了基于Memory占用硬件資源多的工程瓶頸,提高了Turbo編碼的數據吞吐量,同時降低了對硬件資源苛刻需求。
附圖說明
圖1為本發明的流程圖;
圖2為本發明涉及Turbo編碼框圖;
圖3為本發明涉及Turbo編碼幀結構;
圖4為本發明涉及交織地址示意圖。
具體實施方式
下面結合附圖對本發明的具體實施方式進行進一步的詳細描述。
測控數傳一體化體制針對測控信道傳輸高速數傳數據的型號需求,結合非相干擴頻測控體制,新增測距測速功能后提出的一種新型測控體制,主要用于建立星地之間可靠和穩定的遙測、遙控、測距測速和高速數傳鏈路。
當擴頻應答機工作在測控數傳一體化體制時,接收地面測控站發射上行1路遙控和3路測距信號,格式與特性和非相干擴頻測控體制相同。
應答機下行鏈路按照高級在軌系統的AOS協議(高級在軌系統,為Advanced Orbiting Systems的縮寫,支持圖像、語音、高速、低速的各種數據任意方向的傳輸,支持異步、同步、等時傳輸模式和位流、分包等多種傳輸業務,可以在一條物理信道上傳輸多種不同類型的數據,是一種靈活方便的數據處理服務),采取等時性插入業務,將測距測速信息插入至高速數傳的下行傳輸幀,然后采取1/3或1/6信道Turbo編碼,采取BPSK方式對載波進行相位調制,功率放大和濾波處理后,通過測控天線發送至地面站。
在實現Turbo信道編碼過程中,交織地址快速計算是一項技術難點,占用FPGA資源少、解算結果延遲小、計算邏輯簡單可靠等是其基本要求。
本發明與現有衛星技術中采用復雜乘除與取模邏輯,或利用有限BlockRAM資源等措施相比,解決了傳統交織地址計算方法的計算過程邏輯復雜、FPGA資源占用多、計算結果延遲大等技術缺點,大大提高了交織地址計算的高效性和實時性,在所有衛星實現基于Turbo編譯碼方面有著廣闊的應用前景。
如圖1所示為本發明的流程圖,圖2所示為本發明涉及Turbo編碼原理。如圖2所示,Turbo編碼由輸入緩存、數據交織、分量編碼、輸出緩存以及幀頭復接等模塊組成,本發明即探討數據交織部分。
如圖3所示,Turbo編碼幀結構由幀同步頭ASM、主導頭、插入區、數據域以及傳輸幀CRC等模塊組成,本專利所涉及的背景型號即采用此幀格式完成了測控數傳一體化體制。
如圖4所示,本發明涉及交織地址示意,即編碼器a數據順序依次從RAM讀取,而輸入至編碼器b數據是從RAM隨機讀取,即如何實現交織地址的快速高效計算。
如圖1-4所示,本發明提出的一種基于Turbo編碼的交織地址快速計算方法,實施步驟如下:
(1)按照Turbo編碼既定格式要求完成待傳數據的AOS組幀,整幀的幀長字節數記為Na(1024字節),其中有效數據字節長度(參與Turbo編碼)為Nb(1020字節),即Nb*8比特(8160比特);
(2)將有效數據以比特流方式緩存至FPGA雙端口Block RAM中,Block RAM的位寬為1,深度需不小于Nb*8;
(3)分量編碼器a輸入數據Dataa需順序依次從RAM讀取,所述順序依次讀取是指取數過程中從零地址開始,每讀取1比特已存數據,地址加1,記編碼器a的數據地址為order,取值范圍為0~Nb*8-1;
(4)分量編碼器b輸入數據也為Block RAM所存數據,但是取據過程隨機,讀取數據的地址則需通過實時計算,記編碼器b數據地址為Interl,取值范圍也為0~Nb*8-1;
(5)以編碼器a的數據地址order為參數,參照order的奇偶特性和取值范圍計算編碼器b的數據交織地址,若order為偶數,則根據order的取值范圍采取(6)~(13)不同分支進行計算,若order為奇數,則直接采取(14)分支進行計算;
(6)若order為偶數且order等于零,則Interl=Interl+0x0003,之后則進入步驟(15);
(7)若order為偶數,order大于0且小于2040,則Interl=Interl+0x0081,之后則進入步驟(15);
(8)若order為偶數,order等于2040,則Interl=Interl+0x007F,之后則進入步驟(15);
(9)若order為偶數,order大于2040且小于4080,則Interl=Interl+0x0051,之后則進入步驟(15);
(10)若order為偶數,order等于4080,則Interl=Interl+0x0057,之后則進入步驟(15);
(11)若order為偶數,order大于4080且小于6120,則Interl=Interl+0x00D1,之后則進入步驟(15);
(12)若order為偶數,order等于6120,則Interl=Interl+0x00CF,之后則進入步驟(15);
(13)若order為偶數,order大于6120且小于Nb*8-1,則Interl=Interl+0x00B1,之后則進入步驟(15);
(14)若編碼器a輸入數據的地址order為奇數,即換算成16進制后order(0)不為0,則Interl=Interl+0x00A7,之后則進入步驟(15);
(15)對計算所得Interl進行8160取模,所得余數(小于8160)即為當前順序地址order對應的交織地址Interl;
(16)使用Interl作為編碼器b輸入的數據地址,從Block RAM讀取對應的交織數據Datab,與從順序地址order讀取的Dataa一起送至Turbo編碼器,實現信道Turbo編碼。
本發明目前在已發射型號衛星上使用該方法,經過整星測試表明,應用了本發明方法后,滿足了Turbo編碼對交織地址計算高效、準確和快速的技術需求,大大提高了Turbo編碼的數據吞吐量,同時降低了對硬件資源苛刻需求,有效地保障了測控鏈路可靠建立和數據傳輸需求。
本發明說明書中未作詳細描述的內容屬于本領域專業技術人員的公知技術。