一種用于sram型fpga配置刷新的crc校驗(yàn)方法
【專(zhuān)利摘要】一種用于SRAM型FPGA配置刷新的CRC校驗(yàn)方法,通過(guò)對(duì)SRAM型FPGA配置文件格式、存儲(chǔ)形式和故障模式的研究,采用對(duì)SRAM型FPGA回讀配置幀實(shí)時(shí)計(jì)算與PROM內(nèi)預(yù)先存儲(chǔ)的CRC校驗(yàn)碼比對(duì)的方式,提出并實(shí)現(xiàn)了一種用于SRAM型FPGA配置刷新的CRC校驗(yàn)方法。本發(fā)明方法采用CRC校驗(yàn)碼的形式,實(shí)現(xiàn)了FPGA配置信息校驗(yàn)的器件無(wú)關(guān)性,同時(shí)設(shè)置了使能標(biāo)志和獲取標(biāo)志,實(shí)現(xiàn)了不同速率、大數(shù)據(jù)量校驗(yàn)的應(yīng)用需求,在回讀過(guò)程中實(shí)時(shí)完成回讀數(shù)據(jù)的CRC校驗(yàn),達(dá)到了節(jié)省存儲(chǔ)資源與處理時(shí)間的目的。另外本發(fā)明方法使用的基于查表的字節(jié)型CRC算法,進(jìn)行資源獨(dú)立劃分和管理,快速高效,提升了運(yùn)算速度和工作頻率。
【專(zhuān)利說(shuō)明】一種用于SRAM型FPGA配置刷新的CRC校驗(yàn)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種用于SRAM型FPGA配置刷新的CRC校驗(yàn)方法,特別是一種在有限邏輯資源條件下,對(duì)SRAM型FPGA配置文件快速回讀并實(shí)時(shí)校驗(yàn)計(jì)算生成的CRC碼的方法。
【背景技術(shù)】
[0002]航天飛行試驗(yàn)器搭載子系統(tǒng)SoC中心控制單元中SOC為國(guó)內(nèi)首次嘗試在空間飛行器控制計(jì)算機(jī)中使用SRAM型FPGA,由于SRAM型FPGA易受單粒子效應(yīng)影響產(chǎn)生錯(cuò)誤,對(duì)可靠性有較高要求的宇航應(yīng)用須進(jìn)行配置文件動(dòng)態(tài)刷新及回讀檢錯(cuò),使得SRAM型FPGA回讀校驗(yàn)技術(shù)為其中關(guān)鍵和新技術(shù)之一,全文回讀比對(duì)需要耗費(fèi)大量存儲(chǔ)空間,不適于軟硬件資源受限的宇航任務(wù)應(yīng)用。同時(shí),由于FPGA內(nèi)部固有檢錯(cuò)資源的實(shí)現(xiàn)方式未公開(kāi),故而使用固有檢錯(cuò)資源的可靠性、安全性很難驗(yàn)證。FPGA配置的成敗決定S0C系統(tǒng)能否正常工作,因此確保配置數(shù)據(jù)校驗(yàn)決策的校驗(yàn)編碼設(shè)計(jì)技術(shù)至關(guān)重要。CRC的檢錯(cuò)能力極強(qiáng),開(kāi)銷(xiāo)小,容易實(shí)現(xiàn),綜合考慮遠(yuǎn)遠(yuǎn)優(yōu)于奇偶校驗(yàn)及算術(shù)和校驗(yàn)等方式,已經(jīng)廣泛的應(yīng)用在網(wǎng)絡(luò)通信、無(wú)線通信、圖像傳輸、數(shù)據(jù)轉(zhuǎn)換等很多領(lǐng)域。
【發(fā)明內(nèi)容】
[0003]本發(fā)明解決的技術(shù)問(wèn)題是:克服現(xiàn)有技術(shù)的不足,通過(guò)對(duì)SRAM型FPGA配置文件格式、存儲(chǔ)形式和故障模式的研宄,對(duì)SRAM型FPGA回讀配置幀實(shí)時(shí)計(jì)算并與PR0M內(nèi)預(yù)先存儲(chǔ)的CRC校驗(yàn)碼進(jìn)行比對(duì),提供了一種用于SRAM型FPGA配置刷新的CRC校驗(yàn)方法。
[0004]本發(fā)明的技術(shù)解決方案是:一種用于SRAM型FPGA配置刷新的CRC校驗(yàn)方法,包括如下步驟:
[0005](1)將PR0M中CLB配置數(shù)據(jù)、BRAM數(shù)據(jù)一次性加載至SRAM型FPGA ;所述CLB配置數(shù)據(jù)為控制SRAM型FPGA中電路通斷的數(shù)據(jù);所述BRAM數(shù)據(jù)為SRAM型FPGA中初始化寄存器的數(shù)據(jù);
[0006](2)再次讀取PR0M中的CLB配置數(shù)據(jù)加載到SRAM型FPGA中;
[0007](3)回讀SRAM型FPGA中當(dāng)前的CLB配置數(shù)據(jù)后根據(jù)配置幀劃分的數(shù)據(jù)長(zhǎng)度進(jìn)行配置幀劃分并進(jìn)行幀號(hào)計(jì)數(shù);
[0008](4)根據(jù)幀號(hào)依次計(jì)算配置幀的CRC校驗(yàn)碼;
[0009](5)在每一配置幀的CRC校驗(yàn)碼計(jì)算完成后,依據(jù)該配置幀的幀號(hào)從PR0M中的FPGA配置文件數(shù)據(jù)中搜索對(duì)應(yīng)配置幀的CRC校驗(yàn)碼,并進(jìn)行比對(duì);所述FPGA配置文件數(shù)據(jù)包括CLB配置數(shù)據(jù)、BRAM數(shù)據(jù)、配置幀劃分的數(shù)據(jù)長(zhǎng)度、配置幀劃分的幀號(hào)和對(duì)應(yīng)CRC校驗(yàn)碼;
[0010](6)如果比對(duì)錯(cuò)誤,則轉(zhuǎn)入步驟(1),如果正確,轉(zhuǎn)入步驟(7);
[0011](7)判斷當(dāng)前配置幀是否為當(dāng)前CLB數(shù)據(jù)的最后一幀,如果是最后一幀,則配置刷新CRC校驗(yàn)過(guò)程完成,否則轉(zhuǎn)到步驟(4)計(jì)算下一配置幀的CRC校驗(yàn)碼。
[0012]所述步驟(4)中計(jì)算配置幀的CRC校驗(yàn)碼的方法包括如下步驟:
[0013](41)依次回讀當(dāng)前配置幀中字節(jié)數(shù)據(jù)crc_data_i (7:0)并逆序賦值給in_bit (0:7);
[0014](42)設(shè)置16位的CRC校驗(yàn)緩存寄存器crc_temp,當(dāng)上電復(fù)位或CRC功能禁止時(shí),16位的CRC校驗(yàn)緩存寄存器crc_temp設(shè)置為X〃FFFF〃 ;
[0015](43)將crc_temp (15)與in_bit (7)進(jìn)行異或運(yùn)算并將運(yùn)算結(jié)果賦給crc_next (7),將crc_temp (14)與in_bit(6)進(jìn)行異或運(yùn)算并將運(yùn)算結(jié)果賦給crc_next (6),將crc_temp (13)與in_bit(5)進(jìn)行異或運(yùn)算并將運(yùn)算結(jié)果賦給crc_next (5),將crc_temp (12)與in_bit (4)進(jìn)行異或運(yùn)算并將運(yùn)算結(jié)果賦給crc_next (4),將crc_temp (15)、in_bit(7)、crc_temp (11)、in_bit(3)進(jìn)行異或運(yùn)算并將運(yùn)算結(jié)果賦給crc_next (3),將crc_temp (14)、in_bit(6)、crc_temp (10)、in_bit⑵進(jìn)行異或運(yùn)算并將運(yùn)算結(jié)果賦給crc_next (2),將 crc_temp (13)、in_bit (5)、crc_temp (9)、in_bit (1)進(jìn)行異或運(yùn)算并將運(yùn)算結(jié)果賦給 crc_next (1)將 crc_temp (12)、in_bit ⑷、crc_temp ⑶、in_bit (0)進(jìn)行異或運(yùn)算并將運(yùn)算結(jié)果賦給crc_next (0);所述crc_next為CRC迀移狀態(tài)寄存器,crc_next (j)表示迀移狀態(tài)寄存器crc_next的第j位的值,j = 0,1,2,3,,,7 ;所述crc_temp (k)表示校驗(yàn)緩存寄存器crc_temp的第k位的值,k = 0,1,2,3,,,15 ;所述in_bit (j)代表數(shù)據(jù)in_bit (0:7)的第 j 位的值,j = 0,1,2,3,,,7 ;
[0016](44)設(shè)置CRC掩碼參數(shù)寄存器T1-T8,判斷如果crc_next (7) = ’ 1’,則CRC掩碼參數(shù)寄存器T1賦值為X〃1080〃,否則賦值為X〃0000〃,如果crc_next(6) = ’ 1’,則CRC掩碼參數(shù)寄存器T2賦值為X〃0840〃,否則賦值為X〃0000〃,如果crc_next (5) = ’ 1’,則CRC掩碼參數(shù)寄存器T3賦值為X〃0420〃,否則賦值為X〃0000〃,如果crc_next (4) = ’ 1’,則CRC掩碼參數(shù)寄存器T4賦值為X〃0210〃,否則賦值為X〃0000〃,如果crc_next(3) = ’ 1’,則CRC掩碼參數(shù)寄存器T5賦值為X〃8108〃,否則賦值為X〃0000〃,如果crc_next (2) =,1,,則CRC掩碼參數(shù)寄存器T6賦值為X〃4084〃,否則賦值為X〃0000〃,如果若crc_next (1) = ’ 1’,則CRC掩碼參數(shù)寄存器T7賦值為X〃2042〃,否則賦值為X〃0000〃,如果crc_next (0) = ’ 1’,則CRC掩碼參數(shù)寄存器T8賦值為X〃1021〃,否則賦值為Χ〃0000〃 ;
[0017](45)將CRC掩碼參數(shù)寄存器Τ1-Τ8進(jìn)行按位異或運(yùn)算,并將得到的十六位運(yùn)算結(jié)果賦值給crc_xor ;
[0018](46)將校驗(yàn)緩存寄存器crc_temp左移八位,與crc_xor進(jìn)行按位異或運(yùn)算,并將運(yùn)算結(jié)果賦值給檢驗(yàn)緩存寄存器crc_temp ;
[0019](47)將 crc_temp(15:8)按位取反,然后逆序輸出給 crc_data_o (8:15),將 crc_temp (7:0)按位取反,然后逆序輸出給crc_data_o (0:7),最后將crc_data_o作為校驗(yàn)結(jié)果輸出。
[0020]本發(fā)明與現(xiàn)有技術(shù)相比的優(yōu)點(diǎn)在于:
[0021](1)本發(fā)明方法采用CRC校驗(yàn)碼的形式,實(shí)現(xiàn)了 FPGA配置信息校驗(yàn)的器件無(wú)關(guān)性,使得內(nèi)部不具備檢錯(cuò)資源的FPGA以及定制的ASIC也能實(shí)現(xiàn)對(duì)配置文件的檢錯(cuò);
[0022](2)本發(fā)明方法設(shè)置了使能標(biāo)志和獲取標(biāo)志,具備多周期等待能力,實(shí)現(xiàn)不同速率、大數(shù)據(jù)量校驗(yàn)的應(yīng)用需求,在配置幀回讀過(guò)程中實(shí)時(shí)完成回讀數(shù)據(jù)的CRC校驗(yàn),實(shí)現(xiàn)了校驗(yàn)過(guò)程和回讀過(guò)程的融合,避免了回讀數(shù)據(jù)的存儲(chǔ)造成的存儲(chǔ)空間浪費(fèi)以及分為回讀及校驗(yàn)兩個(gè)步驟處理造成的時(shí)間上的浪費(fèi),達(dá)到了節(jié)省存儲(chǔ)資源與處理時(shí)間的目的;
[0023](3) CRC傳統(tǒng)的長(zhǎng)除算法迭代過(guò)程繁瑣,計(jì)算過(guò)程中產(chǎn)生的臨時(shí)緩存數(shù)據(jù)量較大,適合在微處理器中實(shí)現(xiàn),但在FPGA中實(shí)現(xiàn),伴隨復(fù)雜度上升帶來(lái)的負(fù)面影響是時(shí)鐘主頻和可靠性的下降,本發(fā)明使用查表的字節(jié)型算法,進(jìn)行資源獨(dú)立劃分和管理,快速高效,簡(jiǎn)化了計(jì)算過(guò)程,利于可編程邏輯實(shí)現(xiàn),提升了運(yùn)算速度和工作頻率。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0024]圖1為本發(fā)明SRAM型FPGA中配置刷新CRC校驗(yàn)方法流程圖。
【具體實(shí)施方式】
[0025]本發(fā)明通過(guò)對(duì)SRAM型FPGA配置文件格式、存儲(chǔ)形式和故障模式的研宄,結(jié)合航天飛行試驗(yàn)器的任務(wù)特點(diǎn),采用對(duì)SRAM型FPGA回讀配置幀實(shí)時(shí)計(jì)算與PROM內(nèi)預(yù)先存儲(chǔ)的CRC校驗(yàn)碼比對(duì)的方式,提出并實(shí)現(xiàn)了一種用于SRAM型FPGA配置刷新的CRC校驗(yàn)方法。
[0026]本發(fā)明一種用于SRAM型FPGA配置刷新的CRC校驗(yàn)方法,尤其適用于有限邏輯資源限制條件下,對(duì)SRAM型FPGA置文件快速回讀,并將回讀數(shù)據(jù)實(shí)時(shí)校驗(yàn)計(jì)算生成CRC碼進(jìn)行比對(duì)的反熔絲FPGA及AS 1C設(shè)計(jì)。
[0027]通過(guò)回讀SRAM型FPGA配置幀文件;對(duì)讀取得到的配置幀信息,利用本發(fā)明中介紹的CRC算法生成對(duì)應(yīng)的校驗(yàn)碼,然后與在PROM內(nèi)存儲(chǔ)的原始CRC校驗(yàn)信息進(jìn)行比對(duì),確認(rèn)回讀配置幀是否正確,如果錯(cuò)誤則說(shuō)明SRAM型FPGA發(fā)生SET錯(cuò)誤,重新對(duì)SRAM型FPGA進(jìn)行配置。
[0028]本發(fā)明具體實(shí)現(xiàn)步驟如下:
[0029](1)上電配置,將PROM中CLB配置數(shù)據(jù)以及BRAM數(shù)據(jù)加載至SRAM型FPGA,其中CLB配置數(shù)據(jù)為SRAM型FPGA中控制電路通斷的數(shù)據(jù),BRAM數(shù)據(jù)為SRAM型FPGA中初始化寄存器的數(shù)據(jù)。
[0030](2)上電配置完成后開(kāi)始刷新SRAM型FPGA,讀取PROM中的CLB配置數(shù)據(jù),加載到SRAM型FPGA中,保持SRAM型FPGA中電路配置正確;
[0031](3)當(dāng)啟動(dòng)刷新回讀過(guò)程的配置數(shù)據(jù)校驗(yàn)比對(duì)時(shí),回讀SRAM型FPGA中CLB當(dāng)前狀態(tài)的配置數(shù)據(jù),然后回讀得到的CLB數(shù)據(jù)進(jìn)行配置幀劃分并進(jìn)行幀號(hào)計(jì)數(shù);
[0032](4)計(jì)算當(dāng)前回讀的配置幀的CRC校驗(yàn)碼;
[0033](5)在每一配置幀的CRC校驗(yàn)碼計(jì)算完成后,依據(jù)當(dāng)前配置幀的幀號(hào),從PROM中FPGA配置文件數(shù)據(jù)中搜索對(duì)應(yīng)幀的CRC校驗(yàn)碼進(jìn)行比對(duì),其中FPGA配置文件數(shù)據(jù)包括CLB配置數(shù)據(jù)、BRAM數(shù)據(jù)、劃分配置幀的數(shù)據(jù)長(zhǎng)度、配置幀劃分的幀號(hào)和CRC校驗(yàn)碼;
[0034](6)如果比對(duì)錯(cuò)誤,則啟動(dòng)SRAM型FPGA重新配置,重新將PROM中CLB配置數(shù)據(jù)以及BRAM數(shù)據(jù)加載至SRAM型FPGA,回到步驟(1),如果正確,進(jìn)入步驟(7);
[0035](7)判斷當(dāng)前對(duì)比的配置幀是否為CLB數(shù)據(jù)的最后一幀,如果是最后一幀,則轉(zhuǎn)到步驟(8),否則轉(zhuǎn)到步驟(4)計(jì)算下一配置幀的CRC校驗(yàn)碼;
[0036](8)完成一次用于SRAM型FPGA配置刷新的CRC校驗(yàn)過(guò)程,等待啟動(dòng)新的一次用于SRAM型FPGA配置刷新的CRC校驗(yàn)時(shí)刻。
[0037]對(duì)于步驟4)中所設(shè)計(jì)的CRC算法,滿足CRC-16-CCITT標(biāo)準(zhǔn)。
[0038]4.1)回讀SRAM型FPGA中CLB當(dāng)前狀態(tài)的配置數(shù)據(jù),然后回讀得到的CLB數(shù)據(jù)進(jìn)行配置幀劃分并進(jìn)行幀號(hào)計(jì)數(shù)后,回讀當(dāng)前配置幀中當(dāng)前字節(jié)數(shù)據(jù)crc_data_i (7:0)逆序賦值給in_bit(0:7),其中crc_data_i (7:0)表示當(dāng)前配置幀中的八位當(dāng)前字節(jié)數(shù)據(jù),in_bit (j)表示 in_bit (Ο:7)的第 j 位的值,j = 0,1,2,3,,,7 ;
[0039]4.2)定義16位的CRC校驗(yàn)緩存寄存器crc_temp,并在上電復(fù)位期間以及CRC功能禁止期間設(shè)置寄存器值為X〃FFFF〃 ;
[0040]4.3)定義 CRC 遷移狀態(tài)寄存器 crc_next。crc_temp (15)與 in_bit(7)取異或賦值給 crc_next (7) ;crc_temp (14)與 in_bit(6)取異或賦值給 crc_next (6) ;crc_temp (13)與 in_bit(5)取異或賦值給 crc_next (5) ;crc_temp (12)與 in_bit ⑷取異或賦值給 crc_next (4) ;crc_temp (15)、in_bit(7)、crc_temp (11)、in_bit(3)取異或賦值給 crc_next (3) ;crc_temp (14)、in_bit (6)、crc_temp (10)、in_bit (2)取異或賦值給 crc_next (2) ;crc_temp (13)、in_bit (5)、crc_temp (9)、in_bit (1)取異或賦值給 crc_next (1);crc_temp (12)、in_bit(4)、crc_temp (8)、in_bit(0)取異或賦值給 crc_next (0);其中,crc_next (j)表示迀移狀態(tài)寄存器 crc_next 的第 j 位的值,j = 0,1,2,3,,,7,crc_temp (k)表示檢驗(yàn)緩存寄存器crc_temp的第k位的值,k = 0,1,2,3,,,15 ;
[0041]4.4)定義T1至T8為CRC掩碼參數(shù)寄存器,T1至T8需依據(jù)一定規(guī)則完成參數(shù)選擇,具體規(guī)則如下表示:若crc_next(7) = ’ 1’則T1賦值為X〃1080〃,否則賦值為X〃0000〃 ;若 crc_next (6) = ’ Γ 貝丨J T2 賦值為 X〃0840〃,否則賦值為 X〃0000〃 ;若 crc_next (5) = ’ Γ則 T3 賦值為 X〃0420〃,否則賦值為 X〃0000〃 ;若 crc_next (4) = ’ 1,則 T4 賦值為 X〃0210〃,否則賦值為X〃0000〃 ;若crc_next(3) = ’ 1’則T5賦值為X〃8108〃,否則賦值為X〃0000〃 ;若 crc_next (2) = ’ Γ 貝丨J T6 賦值為 X〃4084〃,否則賦值為 X〃0000〃 ;若 crc_next (1) = ’ Γ則 T7 賦值為 X〃2042〃,否則賦值為 X〃0000〃 ;若 crc_next (0) = ’ 1,則 T8 賦值為 X〃1021〃,否則賦值為X〃0000〃 ;
[0042]4.5) Tl、T2、T3、T4、T5、T6、T7、T8 按位取異或后,將結(jié)果賦值給 crc_xor,其中 T1、T2、T3、T4、T5、T6、T7、T8 按位取異或是將 Tl、T2、T3、T4、T5、T6、T7、T8 的第 k 位進(jìn)行異或運(yùn)算,并將運(yùn)算結(jié)果賦值給crc_xor的第k位,k = 0, 1,2,,,15。
[0043]4.6)當(dāng)使能標(biāo)志crc_valid_i為’ 1’使能時(shí),在每一個(gè)數(shù)據(jù)時(shí)鐘上升沿檢測(cè)數(shù)據(jù)有效標(biāo)志data_valid_i,如果data_valid_i為,1’ ’則開(kāi)始校驗(yàn)流程,將檢驗(yàn)緩存寄存器crc_temp左移8位,與crc_xor取異或,將運(yùn)算結(jié)果賦值給檢驗(yàn)緩存寄存器crc_temp。
[0044]4.7)將 crc_temp(15:8)按位取反,然后逆序輸出給 crc_data_o (8:15),將 crc_temp (7:0)按位取反后,逆序輸出給crc_data_o (0:7),將crc_data_o作為校驗(yàn)結(jié)果輸出。
[0045]圖1所示為本發(fā)明方法原理示意圖。對(duì)回讀得到的FPGA配置幀進(jìn)行CRC計(jì)算并與預(yù)先存儲(chǔ)在PROM中的CRC校驗(yàn)信息進(jìn)行比對(duì)就能判斷當(dāng)前幀是否出錯(cuò)。如出錯(cuò),則證明SRAM型FPGA發(fā)生了 SET錯(cuò)誤,需重新進(jìn)行SRAM型FPGA的配置,之后依次啟動(dòng)刷新流程,定時(shí)進(jìn)行配置文件的定時(shí)刷新及SRAM型FPGA中配置信息的回讀及CRC校驗(yàn)計(jì)算及比對(duì)。圖1中從開(kāi)始到結(jié)束的一個(gè)流程為一次定時(shí)刷新過(guò)程中的回讀及CRC校驗(yàn)比對(duì)流程,在整個(gè)SRAM型FPGA的工作周期中,依定時(shí)器控制,定時(shí)進(jìn)行動(dòng)態(tài)刷新、回讀及CRC校驗(yàn)比對(duì)。
[0046]本發(fā)明說(shuō)明書(shū)中未作詳細(xì)描述的內(nèi)容屬本領(lǐng)域技術(shù)人員的公知技術(shù)。
【權(quán)利要求】
1.一種用于3狀1型??以配置刷新的0^校驗(yàn)方法,其特征在于包括如下步驟: (1)將?卩01中18配置數(shù)據(jù)、8狀1數(shù)據(jù)一次性加載至3狀1型??以;所述18配置數(shù)據(jù)為控制3狀1型??(仏中電路通斷的數(shù)據(jù);所述8狀1數(shù)據(jù)為3狀1型??(仏中初始化寄存器的數(shù)據(jù); (2)再次讀?。咳?中的18配置數(shù)據(jù)加載到3狀1型??以中; (3)回讀3狀1型??以中當(dāng)前的18配置數(shù)據(jù)后根據(jù)配置幀劃分的數(shù)據(jù)長(zhǎng)度進(jìn)行配置幀劃分并進(jìn)行幀號(hào)計(jì)數(shù); (4)根據(jù)幀號(hào)依次計(jì)算配置幀的(:%校驗(yàn)碼; (5)在每一配置幀的(:%校驗(yàn)碼計(jì)算完成后,依據(jù)該配置幀的幀號(hào)從?801中的??以配置文件數(shù)據(jù)中搜索對(duì)應(yīng)配置幀的¢:%校驗(yàn)碼,并進(jìn)行比對(duì);所述配置文件數(shù)據(jù)包括018配置數(shù)據(jù)、8狀1數(shù)據(jù)、配置幀劃分的數(shù)據(jù)長(zhǎng)度、配置幀劃分的幀號(hào)和對(duì)應(yīng)0^校驗(yàn)碼; (6)如果比對(duì)錯(cuò)誤,則轉(zhuǎn)入步驟(1),如果正確,轉(zhuǎn)入步驟(7); (7)判斷當(dāng)前配置幀是否為當(dāng)前18數(shù)據(jù)的最后一幀,如果是最后一幀,則配置刷新 校驗(yàn)過(guò)程完成,否則轉(zhuǎn)到步驟(4)計(jì)算下一配置幀的校驗(yàn)碼。
2.根據(jù)權(quán)利要求1所述的一種用于3狀1型??以配置刷新的0^校驗(yàn)方法,其特征在于:所述步驟(4)中計(jì)算配置幀的(:%校驗(yàn)碼的方法包括如下步驟: (41)依次回讀當(dāng)前配置幀中字節(jié)數(shù)據(jù)(7:0)并逆序賦值給111311:(0:7); (42)設(shè)置16位的0^校驗(yàn)緩存寄存器當(dāng)上電復(fù)位或0^功能禁止時(shí),16位的校驗(yàn)緩存寄存器0代^6卹設(shè)置為乂〃----〃 ; (43)將(15)與111311:(7)進(jìn)行異或運(yùn)算并將運(yùn)算結(jié)果賦給(7),將(14)與111-)311:(6)進(jìn)行異或運(yùn)算并將運(yùn)算結(jié)果賦給(6),將1:61111) (13)與 111311:(5)進(jìn)行異或運(yùn)算并將運(yùn)算結(jié)果賦給(5),將(12)與110311: (4)進(jìn)行異或運(yùn)算并將運(yùn)算結(jié)果賦給01-0^116X1: (4),將。1~?!?即(15)、111^1311: (7)、01-0^61111) (11)、(3)進(jìn)行異或運(yùn)算并將運(yùn)算結(jié)果賦給(3),將1:611?) (14)、111-1311: (6)、(10)、110^11:(2)進(jìn)行異或運(yùn)算并將運(yùn)算結(jié)果賦給116X1: (2),將(13)、(5)、(9)、(1)進(jìn)行異或運(yùn)算并將運(yùn)算結(jié)果賦給(1)將(12)、(4)、1:6卹(8)、(0)進(jìn)行異或運(yùn)算并將運(yùn)算結(jié)果賦給(0);所述為0^(3迀移狀態(tài)寄存器,01-0^116X1: (^)表示迀移狀態(tài)寄存器01-0.116x1:的第3位的值,3 = 0,1,2,3,,,7 ;所述00表示校驗(yàn)緩存寄存器01-0.1:61111)的第^位的值,匕=0,1,2,3,,,15 ;所述111」^七0)代表數(shù)據(jù)111.七(0:7)的第』位的值,』=0,1,2,3,,,7 ; (44)設(shè)置0^掩碼參數(shù)寄存器11-18,判斷如果(7)= ’ 1’,則0^掩碼參數(shù)寄存器 II 賦值為 = ’ 1’,則 0^ 掩碼參數(shù)寄存器12賦值為乂〃0840〃,否則賦值為乂〃0000〃,如果(5) = ’ 1’,則0^掩碼參數(shù)寄存器13賦值為乂〃0420〃,否則賦值為乂〃0000〃,如果(4) = ’ 1’,則0^掩碼參數(shù)寄存器14賦值為乂〃0210〃,否則賦值為乂〃0000〃,如果(3) = ’ 1’,則01?0掩碼參數(shù)寄存器15賦值為父〃8108〃,否則賦值為乂〃0000〃,如果(2) = ’ 1’,則01?0掩碼參數(shù)寄存器16賦值為乂〃4084〃,否則賦值為乂〃0000〃,如果若丨(1) = ’ 1’,則0^掩碼參數(shù)寄存器17賦值為乂〃2042〃,否則賦值為乂〃0000〃,如果丨(0) = ’ 1’,則0^掩碼參數(shù)寄存器T8賦值為X〃1021〃,否則賦值為Χ〃0000〃 ; (45)將CRC掩碼參數(shù)寄存器Τ1-Τ8進(jìn)行按位異或運(yùn)算,并將得到的十六位運(yùn)算結(jié)果賦值給 crc_xor ; (46)將校驗(yàn)緩存寄存器crc_temp左移八位,與crc_xor進(jìn)行按位異或運(yùn)算,并將運(yùn)算結(jié)果賦值給檢驗(yàn)緩存寄存器crc_temp ; (47)將crc_temp (15:8)按位取反,然后逆序輸出給 crc_data_o (8:15),將 crc_temp (7:0)按位取反,然后逆序輸出給crc_data_o (O:7),最后將crc_data_o作為校驗(yàn)結(jié)果輸出。
【文檔編號(hào)】G06F11/10GK104484238SQ201410783776
【公開(kāi)日】2015年4月1日 申請(qǐng)日期:2014年12月16日 優(yōu)先權(quán)日:2014年12月16日
【發(fā)明者】葉有時(shí), 楊孟飛, 孫強(qiáng), 施蕾, 趙云富, 熊軍, 董暘暘, 胡洪凱, 劉波, 吳一帆, 楊樺 申請(qǐng)人:北京控制工程研究所