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