本發(fā)明涉及衛(wèi)星測控與通信技術(shù),尤其涉及一種基于fpga的并行循環(huán)冗余crc校驗方法。
背景技術(shù):
在衛(wèi)星遙控、遙測、外側(cè)和數(shù)傳的數(shù)據(jù)幀傳輸時,采取crc校驗?zāi)康氖菣z驗鏈路傳輸正確性,達到數(shù)據(jù)糾錯和檢錯目的,防止出現(xiàn)錯誤邏輯判決。
循環(huán)冗余crc校驗隸屬分組的循環(huán)碼,其基本思想是:發(fā)送端在傳輸?shù)男畔⒋a元序列中附加一些冗余的監(jiān)督碼元,這些監(jiān)督碼和信息碼之間按編碼規(guī)則形成一定的關(guān)系,接收端則通過檢查這種特定關(guān)系來發(fā)現(xiàn)或糾正可能產(chǎn)生的誤碼。
crc校驗碼是利用線性編碼理論,在發(fā)送端根據(jù)要傳送的k位二進制碼序列,以一定的規(guī)則產(chǎn)生一個校驗用的監(jiān)督碼(即crc碼)r位,并附在信息后邊,構(gòu)成一個新的二進制碼序列,共(k+r)位,最后發(fā)送出去。在接收端,則根據(jù)信息碼和crc碼之間所遵循的規(guī)則進行檢驗,以確定數(shù)據(jù)傳輸中誤碼性能和置信度。
傳統(tǒng)的循環(huán)冗余crc校驗技術(shù)主要是指串行比特校驗算法和字節(jié)查找表校驗算法2大類。
基于串行比特校驗碼算法嚴格遵循crc-ccitt給定算法,基于memory查找表算法簡單直觀,均可得到數(shù)據(jù)幀的crc校驗碼,但是這些算法存在以下不足:
(1)基于比特串行的crc校驗碼算法其特點是需多次并串轉(zhuǎn)換、系統(tǒng)延遲大,實現(xiàn)時序?qū)R比較復(fù)雜,占用硬件資源較多,很難突破處理速度的瓶頸;
(2)基于memory資源的字節(jié)型查找表算法其特點是將復(fù)雜的移位和異或邏輯運算交付由matlab程序完成,算法中采用了slices和luts硬件資源相對并沒減少,且器件96個blockram塊資源占去了1個;
(3)針對crc-ccitt協(xié)議中多種不同模式,基于memory資源的查找表生成和字節(jié)調(diào)用過程中,寄存器初相和高低字節(jié)是否倒序等細節(jié)問題沒有闡述清楚,沒有給出具體應(yīng)用的約束條件。
隨著傳輸信息速率提高,基于比特串行或基于memory查找表的crc校驗計算方法已然無法滿足資源占用率低、系統(tǒng)工作時鐘高、計算結(jié)果延遲小等技術(shù)要求。
技術(shù)實現(xiàn)要素:
本發(fā)明的技術(shù)解決問題是:克服現(xiàn)有技術(shù)的不足,提供了一種基于fpga的并行循環(huán)冗余crc校驗方法,利用簡單異或邏輯實現(xiàn)了并行循環(huán)冗余crc校驗碼計算,最大程度滿足了衛(wèi)星對crc校驗計算高效、準確和快速的需求。
本發(fā)明的技術(shù)解決方案是:
一種基于fpga的并行循環(huán)冗余crc校驗方法,包括如下步驟:
步驟一、按照衛(wèi)星遙控、遙測、外測或數(shù)傳的數(shù)據(jù)傳輸設(shè)定格式要求組幀,形成數(shù)據(jù)幀;
步驟二、確認不同的crc模式對輸入與輸出數(shù)據(jù)的順序要求、初始相位要求、以及輸出結(jié)果是否與0xffff異或的要求;
步驟三、設(shè)置不同的crc模式的初始相位,當crc模式為xmoden模式或ture模式時,將所述初始相位設(shè)置為“0000”,當crc模式為false模式或x25模式時,將所述初始相位設(shè)置為“ffff”;
步驟四、當待編碼的數(shù)據(jù)幀的邏輯時序為幀同步字部分,字節(jié)計數(shù)器加1,輸入字節(jié)直接賦給輸出字節(jié),同時移位寄存器相應(yīng)初始化;
步驟五、當待編碼的數(shù)據(jù)幀的邏輯時序為待編碼數(shù)據(jù)部分,字節(jié)計數(shù)器加1,輸入字節(jié)直接賦給輸出字節(jié),同時根據(jù)循環(huán)冗余crc校驗并行計算公式直接計算已輸入字節(jié)對應(yīng)的crc校驗碼;
步驟六、當待編碼的數(shù)據(jù)幀的邏輯時序為crc校驗部分,字節(jié)計數(shù)器加1,根據(jù)crc校驗碼的數(shù)據(jù)順序,將所述crc校驗碼輸出。
進一步地,所述數(shù)據(jù)幀的幀長為na,其中參與crc編碼的有效字節(jié)長度為nb,crc校驗碼字節(jié)長度為nk;所述數(shù)據(jù)幀的邏輯時序包括幀同步字部分、待編碼數(shù)據(jù)部分、以及crc校驗部分;所述幀同步字部分的時序長度為na-nb-nk,所述待編碼數(shù)據(jù)部分的時序長度為nb,所述crc校驗部分的時序長度為nk。
進一步地,所述輸出結(jié)果是否與0xffff異或的要求,包括:
當所述具體crc模式為x25模式時,利用所述循環(huán)冗余crc校驗并行計算公式算出的crc校驗碼要求與0xffff進行異或運算。
進一步地,所述循環(huán)冗余crc校驗并行計算基于crc-ccitt標準。
進一步地,所述循環(huán)冗余crc校驗并行計算公式為:當前字節(jié)的crc校驗碼等于前一字節(jié)crc寄存器值與當前字節(jié)各信息位的邏輯異或;
當所述具體crc模式對輸入與輸出數(shù)據(jù)的順序要求為倒序時,
公式組(1)中,
當所述具體crc模式對輸入與輸出數(shù)據(jù)的順序要求為正序時,
公式組(2)中,
進一步地,根據(jù)crc校驗碼的數(shù)據(jù)順序,將所述crc校驗碼輸出,包括:
若crc校驗碼的數(shù)據(jù)順序為倒序,則所述crc校驗碼先從低比特輸出;若crc校驗碼的數(shù)據(jù)順序為正序,則所述crc校驗碼先從高比特輸出。
本發(fā)明與現(xiàn)有技術(shù)相比具有如下有益效果:
本發(fā)明提出了一種基于fpga的并行循環(huán)冗余crc校驗方法,遵循crc-ccitt編碼給定crc算法,利用簡單異或邏輯實現(xiàn)并行循環(huán)冗余crc校驗碼計算,解決了基于比特串行的多次并串轉(zhuǎn)換的邏輯缺陷,突破了基于查找表的blockram資源占用率高的工程瓶頸,提高了crc校驗的數(shù)據(jù)吞吐量,同時降低了對硬件資源苛刻需求,從而實現(xiàn)了簡化邏輯、提高效率和降低資源的目的。
附圖說明
圖1是本發(fā)明提出的一種基于fpga的并行循環(huán)冗余crc校驗方法的流程圖;
圖2是本發(fā)明涉及crc-ccitt編碼原理示意圖;
圖3是本發(fā)明實施例中的一種基于fpga的并行循環(huán)冗余crc校驗方法的流程圖。
具體實施方式
下面結(jié)合附圖和實施例對本發(fā)明作進一步詳細說明??梢岳斫獾氖牵颂幩枋龅木唧w實施例僅僅用于解釋本發(fā)明,而非對本發(fā)明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與本發(fā)明相關(guān)的部分而非全部結(jié)構(gòu)。
圖1是本發(fā)明提出的一種基于fpga的并行循環(huán)冗余crc校驗方法的流程圖。參考圖1,本發(fā)明提出的一種基于fpga的并行循環(huán)冗余crc校驗方法,具體可以包括如下步驟:
步驟一、按照衛(wèi)星遙控、遙測、外測或數(shù)傳的數(shù)據(jù)傳輸設(shè)定格式要求組幀,形成數(shù)據(jù)幀。
其中,按照衛(wèi)星遙控、遙測、外測或數(shù)傳的數(shù)據(jù)傳輸設(shè)定格式要求組幀,以形成待傳數(shù)據(jù)的數(shù)據(jù)幀。所述數(shù)據(jù)幀的幀長為na,其中參與crc編碼的有效字節(jié)長度為nb,crc校驗碼字節(jié)長度為nk;所述數(shù)據(jù)幀的邏輯時序包括幀同步字部分、待編碼數(shù)據(jù)部分、以及crc校驗部分;所述幀同步字部分的時序長度為na-nb-nk,所述待編碼數(shù)據(jù)部分的時序長度為nb,所述crc校驗部分的時序長度為nk。
步驟二、確認不同的crc模式對輸入與輸出數(shù)據(jù)的順序要求、初始相位要求、以及輸出結(jié)果是否與0xffff異或的要求。
其中,crc模式對輸入與輸出數(shù)據(jù)的順序要求、初始相位要求、以及輸出結(jié)果是否與0xffff異或的要求即為背景型號的crc算法需求;所述輸出結(jié)果是否與0xffff異或的要求,包括:
當所述具體crc模式為x25模式時,利用所述循環(huán)冗余crc校驗并行計算公式算出的crc校驗碼要求與0xffff進行異或運算。即,當所述具體crc模式為x25模式時,利用所述循環(huán)冗余crc校驗并行計算公式算出的crc校驗碼需要先與0xffff進行異或運算后,才能作為最終的crc校驗碼以輸出。
步驟三、設(shè)置不同的crc模式的初始相位,當crc模式為xmoden模式或ture模式時,將所述初始相位設(shè)置為“0000”,當crc模式為false模式或x25模式時,將所述初始相位設(shè)置為“ffff”。
步驟四、當待編碼的數(shù)據(jù)幀的邏輯時序為幀同步字部分,字節(jié)計數(shù)器加1,輸入字節(jié)直接賦給輸出字節(jié),同時移位寄存器相應(yīng)初始化。
步驟五、當待編碼的數(shù)據(jù)幀的邏輯時序為待編碼數(shù)據(jù)部分,字節(jié)計數(shù)器加1,輸入字節(jié)直接賦給輸出字節(jié),同時根據(jù)循環(huán)冗余crc校驗并行計算公式直接計算已輸入字節(jié)對應(yīng)的crc校驗碼。
其中,所述循環(huán)冗余crc校驗并行計算基于crc-ccitt標準。本發(fā)明以crc-ccitt為標準進行并行crc校驗的編譯碼設(shè)計與仿真,如圖2所示為本發(fā)明涉及crc-ccitt編碼原理示意圖。參考圖2,針對crc-ccitt編碼,生成多項式為g(x)=x16+x12+x5+1,對應(yīng)的反饋系數(shù)為0x1021,待傳數(shù)據(jù)編碼時,a/b開關(guān)閉合,c開關(guān)斷開;提取crc校驗碼時,a/b開關(guān)斷開,c開關(guān)閉合。
根據(jù)背景型號需求crc校驗?zāi)J讲煌?,在進行數(shù)據(jù)幀的校驗碼計算時、需重點關(guān)注移位寄存器初相、輸入8bit數(shù)據(jù)位序、輸出16bit校驗碼位序和校驗碼是否需與0xffff異或等4個重要環(huán)節(jié),如表1所示為本發(fā)明涉及的crc-ccitt常用幾種標準。
表1crc-ccitt常用幾種標準
所述循環(huán)冗余校驗并行計算的核心思路是:
由于8位信息碼同時輸入并行運算電路所產(chǎn)生的crc余數(shù)與8位信息碼逐位輸入串行電路產(chǎn)生的crc余數(shù)相同,所以可以認為并行計算電路和串行計算電路這兩種電路是等效的,從而根據(jù)串行運算電路中各寄存器和輸入信息位的變化推導(dǎo)出并行計算的邏輯關(guān)系式。
可選的,所述循環(huán)冗余crc校驗并行計算公式為:當前字節(jié)的crc校驗碼等于前一字節(jié)crc寄存器值與當前字節(jié)各信息位的邏輯異或;
當所述具體crc模式對輸入與輸出數(shù)據(jù)的順序要求為倒序,例如ture模式和x25模式時,所述循環(huán)冗余crc校驗并行計算公式為:
公式組(1)中,
表2輸入與輸出數(shù)據(jù)倒序時的crc并行計算公式
當所述具體crc模式對輸入與輸出數(shù)據(jù)的順序要求為正序,例如xmoden模式和false模式時,所述循環(huán)冗余crc校驗并行計算公式為:
公式組(2)中,
表3輸入與輸出數(shù)據(jù)正序時的crc并行計算公式
步驟六、當待編碼的數(shù)據(jù)幀的邏輯時序為crc校驗部分,字節(jié)計數(shù)器加1,根據(jù)crc校驗碼的數(shù)據(jù)順序,將所述crc校驗碼輸出。
其中,根據(jù)crc校驗碼的數(shù)據(jù)順序,將所述crc校驗碼輸出,可以包括:
若crc校驗碼的數(shù)據(jù)順序為倒序,則所述crc校驗碼先從低比特輸出;若crc校驗碼的數(shù)據(jù)順序為正序,則所述crc校驗碼先從高比特輸出。
實施例:
圖3是本發(fā)明實施例中的一種基于fpga的并行循環(huán)冗余crc校驗方法的流程圖。參考圖3,本實施例提出一種基于fpga的并行循環(huán)冗余crc校驗方法,實施步驟如下:
按照衛(wèi)星遙控、遙測、外測和數(shù)傳等數(shù)據(jù)傳輸既定格式要求完成待傳數(shù)據(jù)的aos(高級在軌系統(tǒng))組幀,整幀幀長字節(jié)數(shù)記為na(512字節(jié)),其中參與crc編碼的有效數(shù)據(jù)字節(jié)長度記為nb(506字節(jié))(每一字節(jié)高比特記為m8、低比特記為m1),crc校驗碼長度記為nk(2字節(jié));
確認背景型號的crc算法需求(本背景型號采取比如ture模式),首先明確crc模式對輸入與輸出數(shù)據(jù)順序要求(記為order)是正序(m8先參與編碼)還是倒序(m1先參與編碼);若正序(order=1),則在數(shù)據(jù)正序基礎(chǔ)上,進一步明確crc模式對校驗算法的移位寄存器初始相位要求(記為crc_ini),當要求初始相位為全“0”時,crc_ini=0x0000,當要求初始相位為全“1”時,crc_ini=0xffff;若倒序(order=0),則在數(shù)據(jù)倒序基礎(chǔ)上,同樣需明確crc模式對校驗算法的移位寄存器初始相位要求(記為crc_ini),當要求初始相位為全“0”時,crc_ini=0x0000,當要求初始相位為全“1”時,crc_ini=0xffff;
在每一個數(shù)據(jù)幀crc校驗計算過程中,需判定邏輯時序包含3部分,幀同步字(記為head=1)、待編碼數(shù)據(jù)(記為check=1)和crc校驗碼(記為check=0),字節(jié)時序長度分別對應(yīng)na-nb-nk(4字節(jié))、nb和nk;
當待編碼數(shù)據(jù)幀的當前時序為幀同步字部分(0x1acffc1d),則字節(jié)計數(shù)器count=count+1,輸入字節(jié)直接賦給輸出字節(jié),同時移位寄存器相應(yīng)初始化(0x0000);
當待編碼數(shù)據(jù)幀的當前時序為待編碼數(shù)據(jù)部分,則字節(jié)計數(shù)器count=count+1,輸入字節(jié)直接賦給輸出字節(jié),同時根據(jù)循環(huán)冗余crc校驗并行計算公式直接計算已輸入字節(jié)對應(yīng)crc校驗碼;
當待編碼數(shù)據(jù)幀的當前時序為crc校驗碼部分,則字節(jié)計數(shù)器count=count+1,根據(jù)crc校驗碼的數(shù)據(jù)順序,將所述crc校驗碼輸出,若倒序(order=0)則需crc校驗碼的高低比特互換,即先從低比特輸出(crc_ini(0));否則,先從crc校驗碼的高比特輸出(crc_ini(15)、背景型號)。
本發(fā)明重點是探討一種算法簡單、資源占用低、時間延遲小的循環(huán)冗余校驗并行計算方法,以滿足背景型號任務(wù)需求,以解決基于串行比特crc校驗算法清晰,但邏輯關(guān)系過于煩瑣和冗長,且編程時序難以掌控、而基于字節(jié)memory查找表實現(xiàn)過程注意環(huán)節(jié)太多,且blockram資源消耗大的問題。經(jīng)過單機、系統(tǒng)和整星測試表明,應(yīng)用了本發(fā)明方法后,滿足了對crc編碼的邏輯簡化、效率提高和資源降低的技術(shù)需求,有效地保障了測控鏈路可靠建立和數(shù)據(jù)傳輸需求。
本發(fā)明遵循crc-ccitt編碼給定crc算法,利用簡單異或邏輯實現(xiàn)并行循環(huán)冗余crc校驗碼計算,解決了基于比特串行的多次并串轉(zhuǎn)換的邏輯缺陷,突破了基于查找表的blockram資源占用率高的工程瓶頸,提高了crc校驗的數(shù)據(jù)吞吐量,同時降低了對硬件資源苛刻需求,從而達到了簡化邏輯、提高效率和降低資源的目的。本發(fā)明適應(yīng)了后級基于字節(jié)信道編碼級聯(lián)需求,簡化了實現(xiàn)處理過程,提高了約8倍的模塊系統(tǒng)工作頻率,在所有衛(wèi)星實現(xiàn)遙控、遙測、外測和數(shù)傳等可靠性傳輸方面有著廣闊的應(yīng)用前景。
注意,上述僅為本發(fā)明的較佳實施例及所運用技術(shù)原理。本領(lǐng)域技術(shù)人員會理解,本發(fā)明不限于這里所述的特定實施例,對本領(lǐng)域技術(shù)人員來說能夠進行各種明顯的變化、重新調(diào)整和替代而不會脫離本發(fā)明的保護范圍。因此,雖然通過以上實施例對本發(fā)明進行了較為詳細的說明,但是本發(fā)明不僅僅限于以上實施例,在不脫離本發(fā)明構(gòu)思的情況下,還可以包括更多其他等效實施例,而本發(fā)明的范圍由所附的權(quán)利要求范圍決定。