專利名稱:一種lt編譯碼算法的dsp硬件實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本申請(qǐng)涉及一種基于DSP技術(shù)實(shí)現(xiàn)LT編譯碼算法的方法,該方法可以廣泛的運(yùn)用于有線數(shù)字通訊,數(shù)字存儲(chǔ),多源下載等技術(shù)領(lǐng)域。
背景技術(shù):
隨著信息技術(shù)的高速發(fā)展,傳統(tǒng)的TCP/IP協(xié)議由于數(shù)據(jù)傳輸時(shí)延較大,并不適合互聯(lián)網(wǎng)中大容量信息的實(shí)時(shí)傳輸,因此研究學(xué)者提出了糾刪編碼技術(shù)。即發(fā)送端把需要傳輸?shù)?個(gè)源信息包通過編碼,整合成#個(gè)編碼包,通過網(wǎng)絡(luò)發(fā)送出去。接收端接收到這個(gè)# 個(gè)編碼包中的任意#個(gè)編碼包就能使用特定的譯碼方法以很高的概率重構(gòu)這^個(gè)源信息包。1998年Bayers等提出了一類新的糾刪碼一Fountain碼。它具有魯棒性和可靠性, 且可以在無反饋信道下,以任意的碼率傳輸數(shù)據(jù),從而簡化了網(wǎng)絡(luò)中數(shù)據(jù)的傳輸方式,使其得成為一類適用于可靠通信的有效編碼技術(shù),在遠(yuǎn)距離,大容量的實(shí)時(shí)傳輸中具有廣闊的應(yīng)用前景。2003年Lucy提出了第一類Fountain碼,也是第一類碼率不受限制的碼一LT碼。 LT碼對(duì)于具有不同刪除概率的各種刪除信道均是逼近最優(yōu)的1。由于LT碼的諸多優(yōu)點(diǎn), LT碼被認(rèn)為是適用于可靠多播傳輸、多源下載、數(shù)據(jù)存儲(chǔ)和無線協(xié)作傳輸?shù)葢?yīng)用方向最有前途的編碼技術(shù),在國際上掀起了一場(chǎng)LT碼的研究熱潮。近些年,隨著信息技術(shù)地高速發(fā)展,人們迫切地需要將各種先進(jìn)的編碼技術(shù)引入實(shí)際運(yùn)用。由于DSP技術(shù)精度高,速度快,成本低,靈活性強(qiáng),可靠性好的特點(diǎn),DSP技術(shù)被越來越多了運(yùn)用于信道編碼技術(shù)中。通過研究,Turbo碼,卷積碼[3],LDPCH M等大部分早期碼的編譯碼器都通過DSP等技術(shù)得以實(shí)現(xiàn)。但由于DSP芯片的處理能力和內(nèi)存空間都十分有限,使用DSP技術(shù)實(shí)現(xiàn)LT碼編譯碼器必須要解決兩個(gè)難題1)如何設(shè)計(jì)編譯碼算法, 簡化程序,減少CPU負(fù)擔(dān);2)如何建立信息儲(chǔ)存機(jī)制,存儲(chǔ)度鄰接信號(hào)表,合理利用DSP芯片片上內(nèi)存資源。
發(fā)明內(nèi)容
本發(fā)明為解決上述技術(shù)問題,提供一種設(shè)計(jì)使用TI公司的TMS320VC54146芯片, 便捷地實(shí)現(xiàn)LT編譯碼算法,并且提高算法效率,充分減少DSP芯片片上內(nèi)存使用量的一種 LT編譯碼算法的DSP實(shí)現(xiàn)方法。本發(fā)明為解決上述技術(shù)問題所采用的技術(shù)方案是一種LT編譯碼算法的DSP硬件實(shí)現(xiàn)方法,包括異步串行通信收發(fā)器、TMS320VC5416芯片、FIASH芯片、電源調(diào)節(jié)器芯片、LT 編碼器和譯碼器,采用異步串行通信收發(fā)器來實(shí)現(xiàn)異步數(shù)據(jù)傳輸,使用電源調(diào)節(jié)器芯片給 TMS320VC5416芯片供電,使用FIASH芯片保存編譯碼程序段,LT譯碼器從異步串行通信收發(fā)器接收到編碼信號(hào)后進(jìn)行譯碼,譯碼過程中LT譯碼器通過通訊信道發(fā)送反饋信息給LT 編碼器,控制LT編碼器的工作;步驟一、LT編碼器從通訊信道中接收到A個(gè)源信號(hào),確定首次生成編碼信號(hào)的數(shù)量 Ar=L 05 Xk ;
步驟二、根據(jù)魯棒弧波分布確定編碼信號(hào)的度分布率V (幻,根據(jù)V (k)將時(shí)隔
劃分成非重復(fù)不等間隔的A個(gè)子時(shí)隔,一個(gè)子時(shí)隔對(duì)應(yīng)一個(gè)不同的度值,使用C語言內(nèi)部函數(shù)生成
區(qū)間的隨機(jī)數(shù)列,根據(jù)隨機(jī)數(shù)列中第i項(xiàng)的值確定第i個(gè)編碼信號(hào)的度值d,.; 步驟三、使用函數(shù)生成
區(qū)間長度屯為的隨機(jī)數(shù)列{adi},取出第ai(i=l,2,…,(Ii) 個(gè)源信號(hào)做為該編碼信號(hào)的度鄰接信號(hào),異或運(yùn)算得到編碼信號(hào)e,.;
步驟四、重復(fù)步驟二和步驟三,生成#個(gè)編碼信號(hào),通過通信信道發(fā)送;
步驟五、譯碼器接收到所有的編碼信號(hào)后,根據(jù)預(yù)先在編碼器和譯碼器設(shè)立的seed 表,確定seed值,進(jìn)而得到編碼信號(hào)的度和度鄰接信號(hào)表,將編碼信號(hào)及其度鄰接信號(hào)表分別存儲(chǔ)于數(shù)據(jù)鏈表L1和L2中;
步驟六、尋找度為I的編碼信號(hào)開始進(jìn)行譯碼,當(dāng)編碼信號(hào)被釋放后,刪除存儲(chǔ)該編碼信號(hào)的數(shù)據(jù)鏈表L1中節(jié)點(diǎn),及存儲(chǔ)其度鄰接信號(hào)表的數(shù)據(jù)鏈表L2中節(jié)點(diǎn),重復(fù)以上操作至度為I的編碼信號(hào)耗盡;
步驟七、如源信號(hào)未被完全恢復(fù),則生成反饋控制信號(hào)ACK=I,反饋到編碼器,編碼器在接收到ACK=I信號(hào)后,重復(fù)步驟二至步驟四,添加生成Ar=O. OlXA個(gè)編碼信號(hào);
步驟八、譯碼器接收到所有的新編碼信號(hào)后進(jìn)行冗余信息處理,將已恢復(fù)源信號(hào)的信息更新至所有的新編碼信號(hào)及其度鄰接信號(hào)表中,繼續(xù)進(jìn)行譯碼,重復(fù)步驟五至步驟七,至源信號(hào)被完全恢復(fù)停止處理。本發(fā)明的優(yōu)點(diǎn)使用反饋控制信號(hào)ACK,實(shí)現(xiàn)根據(jù)編碼器實(shí)際需要生成最少數(shù)量編碼信號(hào)的功能,簡化LT編碼過程。使用C語言內(nèi)部函數(shù)生成隨機(jī)數(shù)列,改善編碼信號(hào)的度和度鄰接信號(hào)的隨機(jī)選擇效果。建立二進(jìn)制位儲(chǔ)存機(jī)制、構(gòu)建數(shù)據(jù)鏈表,不但縮小儲(chǔ)存信息所需的DSP芯片片上內(nèi)存空間,還方便信息的添加和刪除。引入冗余信息處理程序,剔除編碼信號(hào)的冗余,提高了譯碼效率。
圖I是本發(fā)明的系統(tǒng)硬件結(jié)構(gòu)框圖2是本發(fā)明的LT編碼算法的軟件流程圖3是本發(fā)明的LT譯碼算法的軟件流程圖4是本發(fā)明的度鄰接信號(hào)表存儲(chǔ)機(jī)制示意圖。具體實(shí)施方法
下面結(jié)合附圖對(duì)本發(fā)明的一種LT編譯碼算法的DSP硬件實(shí)現(xiàn)方法進(jìn)行說明。一種LT編譯碼算法的DSP硬件實(shí)現(xiàn)方法,包括異步串行通信收發(fā)器、 TMS320VC5416芯片、FIASH芯片、電源調(diào)節(jié)器芯片、LT編碼器和譯碼器,采用異步串行通信收發(fā)器來實(shí)現(xiàn)異步數(shù)據(jù)傳輸,使用電源調(diào)節(jié)器芯片給TMS320VC5416芯片供電,使用FIASH 芯片保存編譯碼程序段,LT譯碼器從異步串行通信收發(fā)器接收到編碼信號(hào)后進(jìn)行譯碼,譯碼過程中LT譯碼器通過通訊信道發(fā)送反饋信息給LT編碼器,控制LT編碼器的工作。如圖I所示,在編碼器中,源信號(hào)通過串口(RS232接口)傳入芯片。由于數(shù)據(jù)采用異步傳輸,可以采用DSP的McBSP結(jié)合DMA,在不擴(kuò)展硬件的情況下,用軟件實(shí)現(xiàn)異步數(shù)據(jù)傳輸。但該方法軟件設(shè)計(jì)復(fù)雜,加大了 CPU的負(fù)擔(dān),因此添加TI公司的TL16C550異步串行通信收發(fā)器來實(shí)現(xiàn)異步數(shù)據(jù)傳輸。使用TI公司的雙路低壓差電源調(diào)節(jié)器芯片TPS767D301給TMS320VC5416芯片提供1.6V的工作電壓。使用TI公司的FIASH芯片AM29LV800保存編譯碼程序段,以便在系統(tǒng)啟動(dòng)時(shí)將編 (譯)碼程序裝載進(jìn)DSP內(nèi)部DARAM運(yùn)行。下面結(jié)合附圖對(duì)本發(fā)明的一種LT編碼算法的DSP軟件實(shí)現(xiàn)方法進(jìn)行說明。如圖 2所示,其具體步驟如下
步驟一、使用反饋控制信號(hào)ACK,ACK由譯碼器判定生成,控制編碼信號(hào)的生成,初值設(shè)定為ACK=0。當(dāng)譯碼器中源信號(hào)未被完全恢復(fù)時(shí),譯碼器生成ACK=1,反饋到編碼器;當(dāng)譯碼算法結(jié)束,ACK=O,編碼器停止工作,LT編譯碼結(jié)束。步驟二 .編碼器從通訊信道中異步接收到A個(gè)源信號(hào),確定生成編碼信號(hào)的數(shù)量 Ar=L 05X左。步驟三、根據(jù)魯棒弧波分布確定編碼信號(hào)的度分布率// (幻,根據(jù)//⑷將時(shí)隔
劃分成非重復(fù)不等間隔的々個(gè)子時(shí)隔,一個(gè)子時(shí)隔對(duì)應(yīng)一個(gè)不同的度值。例如 O. O、(I)對(duì)應(yīng)度值1,P U) U (i+1)對(duì)應(yīng)度值iW。步驟四、使用srand函數(shù)設(shè)置隨機(jī)數(shù)發(fā)生器的初始化種子Seed=S115使用rand函數(shù)生成
區(qū)間長度為#的隨機(jī)數(shù)列。確定隨機(jī)數(shù)列中第i項(xiàng)值所處的子時(shí)隔,根據(jù)對(duì)應(yīng)關(guān)系確定第i個(gè)編碼信號(hào)的度值式。步驟五、設(shè)置隨機(jī)數(shù)發(fā)生器的初始化種子Seed=S2(S1-S2),生成[0,幻區(qū)間長度為 Cli的不重復(fù)隨機(jī)數(shù)列{adi}。步驟六、取第ai(i=l,2,…,(Ii)個(gè)源信號(hào)做為該編碼信號(hào)的度鄰接信號(hào)。異或運(yùn)算得到該編碼信號(hào)ei;通過通訊信道發(fā)送。步驟七.當(dāng)編碼器接收到ACK=I信號(hào)時(shí),生成Ar=O. 01 X左個(gè)編碼信號(hào)。記#為添加編碼信號(hào)的次數(shù),r為已生成的編碼信號(hào)的數(shù)量,#初值位隊(duì)編碼器每次接收到Ack=I信號(hào)#自動(dòng)加I。TM. 05X左+⑷-口 X0. 01 X左。步驟八、重復(fù)步驟三,生成
區(qū)間長度為I. 05XWXO. OlX左的隨機(jī)數(shù)列,確定隨機(jī)數(shù)列中第r+i項(xiàng)值所處的子時(shí)隔,根據(jù)對(duì)應(yīng)關(guān)系確定新加的第i個(gè)編碼信號(hào)的度值步驟九、記前T1個(gè)編碼信號(hào)的度值總和為η。步驟十、生成
內(nèi)容得到編碼信號(hào)的度和度鄰接信號(hào)表。
采用二進(jìn)制位存儲(chǔ)機(jī)制將編碼信號(hào)及其度鄰接信號(hào)表分別存儲(chǔ)于數(shù)據(jù)鏈表U、L2 中。為了減少DSP芯片片上內(nèi)存使用量,提高DSP芯片譯碼效率。采用二進(jìn)制位存儲(chǔ)機(jī)制將度鄰接信號(hào)表分別存儲(chǔ)于整形數(shù)組中,即在16bit的整型數(shù)據(jù)中存儲(chǔ)16位度鄰接信號(hào)信息。然后構(gòu)建數(shù)據(jù)鏈表,將每一個(gè)度鄰接信號(hào)表存儲(chǔ)于數(shù)據(jù)鏈表節(jié)點(diǎn)上,方便信息地插入和刪除。如附圖4所示。對(duì)度鄰接信號(hào)表信息進(jìn)行更新操作通過位操作實(shí)現(xiàn)。為方便操作,定義兩個(gè)位置參數(shù)A和7,對(duì)于度鄰接信號(hào)表第i位
A=i/16 ;7=i%16o對(duì)度鄰接信號(hào)表第i位進(jìn)行操作,只需對(duì)整型數(shù)組中第A個(gè)元素的第7位進(jìn)行位操作。例如將度鄰接信號(hào)表的第35位置I,需將整型數(shù)組中的第個(gè)元素與0x0004進(jìn)行按位或運(yùn)算。步驟二、尋找度為I的編碼信號(hào)~開始進(jìn)行譯碼。將^.值賦予其唯一的度鄰接信號(hào)&,釋放力。當(dāng)編碼信號(hào)被釋放后,刪除存儲(chǔ)該編碼信號(hào)的數(shù)據(jù)鏈表L1中節(jié)點(diǎn)。此時(shí)存儲(chǔ)其度鄰接信號(hào)表的數(shù)據(jù)鏈表L2中節(jié)點(diǎn)內(nèi)為無用信息(全零整形數(shù)組),也將此節(jié)點(diǎn)刪除。將&與度鄰接信號(hào)表第J位為I的編碼信號(hào)進(jìn)行異或運(yùn)算,并將該編碼信號(hào)度鄰接信號(hào)表第J位置O,源信號(hào)&恢復(fù)成功。步驟103.重復(fù)以上步驟,至度為I的編碼信號(hào)耗盡。如源信號(hào)未被完全恢復(fù),則生成反饋控制信號(hào)ACK=I,編碼器添加編碼信號(hào)。當(dāng)ACK=I時(shí),譯碼程序已經(jīng)恢復(fù)了部分源信號(hào),數(shù)據(jù)鏈表L1, L2節(jié)點(diǎn)帶冗余信息,需要進(jìn)行處理.
則將該編碼信號(hào)與源信號(hào)Si進(jìn)行異或運(yùn)算,并將其度鄰接信號(hào)表的第i位置O。重復(fù)上述操作,至#個(gè)新編碼信號(hào)及其度鄰接信號(hào)表都得到處理,刪除冗余信息,提高節(jié)點(diǎn)攜帶信息質(zhì)量。重復(fù)譯碼算法步驟101,102至源信息被完全恢復(fù),譯碼過程結(jié)束。本發(fā)明解決了譯碼器根據(jù)實(shí)際情況生成最少數(shù)量編碼信號(hào)的問題,減少了編碼器不必要的工作,降低了編碼器的功耗。使用C語言內(nèi)部函數(shù)對(duì)編碼信號(hào)的度和度鄰接信號(hào)進(jìn)行隨機(jī)選擇,改善了兩者的隨機(jī)選擇效果,提高了 LT編譯碼算法效率。本發(fā)明采用二進(jìn)制位存儲(chǔ)機(jī)制將度鄰接信號(hào)表儲(chǔ)存于整形數(shù)組中,再構(gòu)建數(shù)據(jù)鏈表,不但減小了 DSP芯片片上內(nèi)存空間的使用量,而且方便信息的添加和刪除,簡化了 LT譯碼過程。引入冗余信息處理程序,剔除了編碼信號(hào)中的冗余,提高節(jié)點(diǎn)攜帶信息的質(zhì)量,一定程度上加快了譯碼算法。以上僅為本發(fā)明的優(yōu)選實(shí)施方案,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有任何更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種LT編譯碼算法的DSP硬件實(shí)現(xiàn)方法,其特征在于包括異步串行通信收發(fā)器、 TMS320VC5416芯片、FIASH芯片、電源調(diào)節(jié)器芯片、LT編碼器和譯碼器,采用異步串行通信收發(fā)器來實(shí)現(xiàn)異步數(shù)據(jù)傳輸,使用電源調(diào)節(jié)器芯片給TMS320VC5416芯片供電,使用FIASH 芯片保存編譯碼程序段,LT譯碼器從異步串行通信收發(fā)器接收到編碼信號(hào)后進(jìn)行譯碼,譯碼過程中LT譯碼器通過通訊信道發(fā)送反饋信息給LT編碼器,控制LT編碼器的工作;步驟一、LT編碼器從通訊信道中接收到A個(gè)源信號(hào),確定首次生成編碼信號(hào)的數(shù)量 Ar=L 05 Xk ;步驟二、根據(jù)魯棒弧波分布確定編碼信號(hào)的度分布率V (幻,根據(jù)V (k)將時(shí)隔
劃分成非重復(fù)不等間隔的A個(gè)子時(shí)隔,一個(gè)子時(shí)隔對(duì)應(yīng)一個(gè)不同的度值,使用C語言內(nèi)部函數(shù)生成
區(qū)間的隨機(jī)數(shù)列,根據(jù)隨機(jī)數(shù)列中第i項(xiàng)的值確定第i個(gè)編碼信號(hào)的度值d,.; 步驟三、使用函數(shù)生成
區(qū)間長度屯為的隨機(jī)數(shù)列{adi},取出第ai(i=l,2,…,(Ii) 個(gè)源信號(hào)做為該編碼信號(hào)的度鄰接信號(hào),異或運(yùn)算得到編碼信號(hào)e,.;步驟四、重復(fù)步驟二和步驟三,生成#個(gè)編碼信號(hào),通過通信信道發(fā)送;步驟五、譯碼器接收到所有的編碼信號(hào)后,根據(jù)預(yù)先在編碼器和譯碼器設(shè)立的seed 表,確定seed值,進(jìn)而得到編碼信號(hào)的度和度鄰接信號(hào)表,將編碼信號(hào)及其度鄰接信號(hào)表分別存儲(chǔ)于數(shù)據(jù)鏈表L1和L2中;步驟六、尋找度為I的編碼信號(hào)開始進(jìn)行譯碼,當(dāng)編碼信號(hào)被釋放后,刪除存儲(chǔ)該編碼信號(hào)的數(shù)據(jù)鏈表L1中節(jié)點(diǎn),及存儲(chǔ)其度鄰接信號(hào)表的數(shù)據(jù)鏈表L2中節(jié)點(diǎn),重復(fù)以上操作至度為I的編碼信號(hào)耗盡;步驟七、如源信號(hào)未被完全恢復(fù),則生成反饋控制信號(hào)ACK=I,反饋到編碼器,編碼器在接收到ACK=I信號(hào)后,重復(fù)步驟二至步驟四,添加生成#=0. 01 XA個(gè)編碼信號(hào),通過通信信道發(fā)送;步驟八、譯碼器接收到所有的新編碼信號(hào)后進(jìn)行冗余信息處理,將已恢復(fù)源信號(hào)的信息更新至所有的新編碼信號(hào)及其度鄰接信號(hào)表中,繼續(xù)進(jìn)行譯碼,重復(fù)步驟五至步驟七,至源信號(hào)被完全恢復(fù)停止處理。
全文摘要
一種LT編譯碼算法的DSP硬件實(shí)現(xiàn)方法,包括異步串行通信收發(fā)器、TMS320VC5416芯片、FIASH芯片、電源調(diào)節(jié)器芯片、LT編碼器和譯碼器,采用異步串行通信收發(fā)器來實(shí)現(xiàn)異步數(shù)據(jù)傳輸,使用電源調(diào)節(jié)器芯片給TMS320VC5416芯片供電,使用FIASH芯片保存編譯碼程序段,LT譯碼器從異步串行通信收發(fā)器接收到編碼信號(hào)后進(jìn)行譯碼,譯碼過程中LT譯碼器通過通訊信道發(fā)送反饋信息給LT編碼器,控制LT編碼器的工作,便捷地實(shí)現(xiàn)LT編譯碼算法,并且提高算法效率,充分減少DSP芯片片上內(nèi)存使用量的一種LT編譯碼算法的DSP實(shí)現(xiàn)方法。
文檔編號(hào)H04L1/00GK102594504SQ201210027330
公開日2012年7月18日 申請(qǐng)日期2012年2月8日 優(yōu)先權(quán)日2012年2月8日
發(fā)明者師春靈, 師歌, 胡俊宏, 謝澤峰, 邵鴻翔, 高宏峰 申請(qǐng)人:河南科技大學(xué)