欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于fifo模式的串行通信總線數(shù)據(jù)智能糾錯方法

文檔序號:6549208閱讀:259來源:國知局
基于fifo模式的串行通信總線數(shù)據(jù)智能糾錯方法
【專利摘要】本發(fā)明涉及一種基于FIFO模式的串行通信總線數(shù)據(jù)智能糾錯方法,采用FIFO(First?In?First?Out)模式,處理器在接收完一個完整8位字符后,將其先存入FIFO緩存中,當(dāng)接收的數(shù)據(jù)累計到一定程度后通知處理器一次性響應(yīng),發(fā)送采用類似形式,一次性將多個8位字符存入FIFO緩存中逐個發(fā)送。很明顯,這樣節(jié)省了處理器的開銷,提高了通信效率,讓處理器不用頻繁的響應(yīng)通信任務(wù),從而提高了系統(tǒng)的整體效率。本發(fā)明克服目前現(xiàn)有技術(shù)中存在的不足,提高了串行通信總線在FIFO這種低系統(tǒng)開銷的工作模式下接收端接收數(shù)據(jù)的可靠性。
【專利說明】基于FIFO模式的串行通信總線數(shù)據(jù)智能糾錯方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種基于FIFO模式的串行通信總線數(shù)據(jù)智能糾錯方法【背景技術(shù)】
[0002]隨著計算機系統(tǒng)的應(yīng)用和微機網(wǎng)絡(luò)的發(fā)展,復(fù)雜系統(tǒng)之間的數(shù)據(jù)通信功能顯得越來越重要。串口是計算機上一種非常通用的設(shè)備通信協(xié)議,串口通訊對嵌入式系統(tǒng)而言意義重大,不但可以實現(xiàn)將數(shù)據(jù)傳輸?shù)缴衔粰C,而且也能實現(xiàn)上位機對其的指令控制。
[0003]串口通信所需電纜線根數(shù)少,在遠距離通信中可以節(jié)約通信成本,盡管比按字節(jié)傳輸?shù)牟⑿型ㄐ怕?,但是串口可以在使用一根線發(fā)送數(shù)據(jù)的同時用另一根線接收數(shù)據(jù),其接線簡單并且能夠?qū)崿F(xiàn)遠距離通信。比如IEEE488定義并行通行狀態(tài)時,規(guī)定設(shè)備線總長不得超過20m,并且任意兩個設(shè)備間的長度不得超過2m ;而對于串口而言,其通信長度可達1200mo
[0004]RS-232、RS-422與RS-485都是串行數(shù)據(jù)標(biāo)準(zhǔn)接口。RS422總線與RS485和RS232的電路原理基本相同,都是以差動方式發(fā)送和接收,不需要數(shù)字地線。RS-422總線為全雙工工作模式,四線接口采用獨立的發(fā)送和接收通道,不必控制數(shù)據(jù)傳輸方向,各通信裝置之間任何必須的信號交換均可以按軟件(X0N/X0FF握手)或硬件(一對單獨的雙絞線)的方式實現(xiàn)。
[0005]標(biāo)準(zhǔn)串行通信模式為查詢或中斷方式:處理器每接收完一個完整8位字符后,即對其進行處理,發(fā)送采用類似形式。如果接收或發(fā)送的字符比較多的話,很明顯,處理器要不斷地去響應(yīng)處理數(shù)據(jù)。因此,處理器的開銷就大大增加,降低了處理器執(zhí)行效率。
[0006]常見的串行通信總線數(shù)據(jù)傳輸過程采用數(shù)據(jù)通信幀格式,即將若干實際需要傳輸?shù)臄?shù)據(jù)結(jié)合一定的通信幀頭(X個8位數(shù)據(jù))、幀尾(Y個8位數(shù)據(jù))和幀校驗(Z個8位數(shù)據(jù)),組成一巾貞有效的串行總線傳輸巾貞格式傳輸,這種巾貞格式的通信總線傳輸格式可以有效的保證數(shù)據(jù)的完整性和有效性,提高通信可靠性。
[0007]目前在串行通信FIFO的普遍應(yīng)用中,因為接受與發(fā)送控制器端不可能保證兩者同時開啟工作,發(fā)送端先于接收端開啟的情況是完全有可能存在。因此當(dāng)串行通信發(fā)送端先開啟,接收端后開啟時,會存在接受到的數(shù)據(jù)幀格式錯位,而FIFO接受過程中僅僅根據(jù)接收到的數(shù)據(jù)個數(shù)觸發(fā)響應(yīng),并不對其內(nèi)容校驗,因此處理器接收到的數(shù)據(jù)格式不對,導(dǎo)致通信故障。

【發(fā)明內(nèi)容】

[0008]要解決的技術(shù)問題
[0009]為了避免現(xiàn)有技術(shù)的不足之處,本發(fā)明提出一種基于FIFO模式的串行通信總線數(shù)據(jù)智能糾錯方法,能夠在隨機初始狀態(tài)下,提高串行通信總線接收端收到數(shù)據(jù)在FIFO這種低系統(tǒng)開銷的工作模式下的可靠性。
[0010]技術(shù)方案[0011]一種基于FIFO模式的串行通信總線數(shù)據(jù)智能糾錯方法,其特征在于步驟如下:
[0012]步驟1:當(dāng)處理器FIFO緩沖存儲單元接收到X個8位數(shù)據(jù)一組的串行通信總線數(shù)據(jù)幀后,觸發(fā)串行通信總線數(shù)據(jù)處理任務(wù)響應(yīng),處理器將FIFO緩沖存儲單元中的數(shù)據(jù)逐位存入接收數(shù)據(jù)處理數(shù)組Temp [13]中;
[0013]步驟2:對接收數(shù)據(jù)處理數(shù)組Temp [N]中的數(shù)據(jù)逐位進行檢測,得到X個8位數(shù)據(jù)中貞頭在數(shù)據(jù)處理數(shù)組Temp[N]中的起始位置Temp[i],其中:i〈N ;
[0014]步驟3:對起始位置Temp [i]進行判斷:
[0015]當(dāng)X個8位數(shù)據(jù)巾貞頭在數(shù)據(jù)處理數(shù)組Temp[N]中的起始位置Temp[i]中i = O,則判定接收到的數(shù)據(jù)幀未發(fā)生錯位,數(shù)據(jù)幀符合傳輸協(xié)議,將數(shù)據(jù)處理數(shù)組Temp[N]中的數(shù)據(jù)逐位賦給接收數(shù)組ReceiveData [N],返回步驟2進行下一個步巾貞校驗;
[0016]當(dāng)X個8位數(shù)據(jù)巾貞頭在數(shù)據(jù)處理數(shù)組Temp[N]中的起始位置Temp[i]中i古O,判定接收到的數(shù)據(jù)幀發(fā)生錯位,進行步驟4 ;
[0017]步驟4:將本幀數(shù)據(jù)中各個8位數(shù)據(jù)以出現(xiàn)Temp [i]中i古O的位置分為兩部分,前i位8位數(shù)據(jù)(Temp[O]-Temp[1-Ι])為一幀符合傳輸協(xié)議8位數(shù)據(jù)的后半部分,后N_i位數(shù)據(jù)(Temp [i]-Temp [N-1])為一幀符合傳輸協(xié)議8位數(shù)據(jù)的前半部分;
[0018]步驟5:將本幀中有效數(shù)據(jù)幀的Temp [i]-Temp [N-1]逐位賦給錯位接收緩沖數(shù)據(jù)ReceiveTemp[N~i]中;
[0019]步驟6:將前一次錯位接收緩沖數(shù)據(jù)ReceiveTemp [N_i]中的一巾貞符合傳輸協(xié)議8位數(shù)據(jù)的前半部分逐位賦給接收ReceiveData[N]的前N_i位,并將本巾貞接收到的一巾貞符合傳輸協(xié)議8位數(shù)據(jù)的后半部分位賦給接收ReceiveData[N]的后i位,組成符合傳輸協(xié)議的數(shù)據(jù)幀,返回步驟2進行下一個步幀校驗。
[0020]有益效果
[0021]本發(fā)明提出的一種基于FIFO模式的串行通信總線數(shù)據(jù)智能糾錯方法,采用FIFO (First InFirst Out)模式,處理器在接收完一個完整8位字符后,將其先存入FIFO緩存中,當(dāng)接收的數(shù)據(jù)累計到一定程度后通知處理器一次性響應(yīng),發(fā)送采用類似形式,一次性將多個8位字符存入FIFO緩存中逐個發(fā)送。很明顯,這樣節(jié)省了處理器的開銷,提高了通信效率,讓處理器不用頻繁的響應(yīng)通信任務(wù),從而提高了系統(tǒng)的整體效率。
[0022]本發(fā)明克服目前現(xiàn)有技術(shù)中存在的不足,提高了串行通信總線在FIFO這種低系統(tǒng)開銷的工作模式下接收端接收數(shù)據(jù)的可靠性。
【專利附圖】

【附圖說明】
[0023]圖1:基于FIFO模式的串行通信總線數(shù)據(jù)智能糾錯方法的流程
[0024]圖2:以13個8位數(shù)據(jù)一組的串行通信總線數(shù)據(jù)幀為例
【具體實施方式】
[0025]現(xiàn)結(jié)合實施例、附圖對本發(fā)明作進一步描述:
[0026]由于存在串行通信總線發(fā)送端與接收端不同步的情況,接收到的一幀數(shù)據(jù)中各個數(shù)據(jù)位置錯位,本幀數(shù)據(jù)不能通過串口通信總線傳輸協(xié)議的校驗。通過分析,我們可以知道,處理器接收到的一幀數(shù)據(jù),是由前一次發(fā)送數(shù)據(jù)的后半段和該次發(fā)送數(shù)據(jù)的前半段組成??梢钥闯?,處理器讀取的這幀數(shù)據(jù),雖然數(shù)據(jù)相對位置不符合協(xié)議要求,但本楨所含數(shù)據(jù)彼此之間的位置是正確的,即部分整體相對前移或后移了若干位,是具有規(guī)律性的。
[0027]當(dāng)處理器FIFO緩沖存儲單元接收到設(shè)定數(shù)量的數(shù)據(jù)位后,觸發(fā)串行通信總線數(shù)據(jù)處理任務(wù)響應(yīng),處理器將FIFO緩沖存儲單元中的數(shù)據(jù)逐位存入接收數(shù)據(jù)處理數(shù)組Temp[N] (Temp[O]-Temp[N-1])中,對存入接收數(shù)據(jù)處理數(shù)組Temp[N]中的數(shù)據(jù)進行分析,根據(jù)不同的情況分別給予相應(yīng)的處理方式,具體操作流程如下:
[0028](I)如果接收數(shù)據(jù)處理數(shù)組Temp [N]中的數(shù)據(jù)逐位進行檢測,判斷出X個8位數(shù)據(jù)中貞頭在數(shù)據(jù)處理數(shù)組Temp [N]中的起始位置Temp [i] (i〈N)。
[0029](2)如果X個8位數(shù)據(jù)幀頭在數(shù)據(jù)處理數(shù)組Temp [N]中的起始位置Temp [i]中i =0,則可判定接收到的數(shù)據(jù)幀未發(fā)生錯位,數(shù)據(jù)幀符合傳輸協(xié)議,將數(shù)據(jù)處理數(shù)組Temp [N]中的數(shù)據(jù)逐位賦給接收數(shù)組ReceiveData[N],進行下一步幀校驗后對數(shù)據(jù)解析。
[0030](3)如果X個8位數(shù)據(jù)幀頭在數(shù)據(jù)處理數(shù)組Temp[N]中的起始位置Temp[i]中i^O,則可判定接收到的數(shù)據(jù)幀發(fā)生錯位,因此本幀數(shù)據(jù)中各個8位數(shù)據(jù)可分為兩部分,前i位8位數(shù)據(jù)(Temp [O]-Temp [1-Ι])為一幀符合傳輸協(xié)議8位數(shù)據(jù)的后半部分,后N_i位數(shù)據(jù)(Temp [i]-Temp [N-1])為一幀符合傳輸協(xié)議8位數(shù)據(jù)的前半部分。由此可將本幀中有效數(shù)據(jù)幀的Temp[i]-Temp[N-1]逐位賦給錯位接收緩沖數(shù)據(jù)ReceiveTemp[N_i]中。
[0031](4)當(dāng)判定接收到的數(shù)據(jù)幀發(fā)生錯位時,將前一次錯位接收緩沖數(shù)據(jù)ReceiveTemp [N_i]中的一幀符合傳輸協(xié)議8位數(shù)據(jù)的前半部分逐位賦給接收ReceiveData[N]的前N_i位,并將本幀接收到的一幀符合傳輸協(xié)議8位數(shù)據(jù)的后半部分位賦給接收ReceiveData[N]的后i位,由此組成的數(shù)據(jù)幀符合傳輸協(xié)議,進而進行下一步中貞校驗后對數(shù)據(jù)解析。
[0032]具體實施實例:
[0033]如圖1,為基于FIFO模式的串行通信總線數(shù)據(jù)智能糾錯方法的流程
[0034]如圖2,以13個8位數(shù)據(jù)一組的串行通信總線數(shù)據(jù)幀為例,幀頭為兩個8位數(shù)據(jù)OxEB和0x90,當(dāng)處理器FIFO緩沖存儲單元接收到13個8位數(shù)據(jù)一組的串行通信總線數(shù)據(jù)幀后,觸發(fā)串行通信總線數(shù)據(jù)處理任務(wù)響應(yīng),處理器將FIFO緩沖存儲單元中的數(shù)據(jù)逐位存入接收數(shù)據(jù)處理數(shù)組Temp[13]中,右側(cè)數(shù)組為基于FIFO模式的串行通信總線接收到的原始數(shù)據(jù)幀,對存入接收數(shù)據(jù)處理數(shù)組Temp [13]中的數(shù)據(jù)進行分析,可以看出接收到的各個8位數(shù)據(jù)錯位,智能糾錯過程如下:
[0035](I)通過對接收數(shù)據(jù)處理數(shù)組Temp[13]中的數(shù)據(jù)逐位進行檢測,判斷出,數(shù)據(jù)幀頭OxEB和0x90在數(shù)據(jù)處理數(shù)組Temp [13]中的起始位置Temp [6]。
[0036](2)由上可知數(shù)據(jù)幀頭在數(shù)據(jù)處理數(shù)組Temp[13]中的起始位置Temp[6]中,則可判定接收到的數(shù)據(jù)幀發(fā)生錯位,因此本幀數(shù)據(jù)中各個8位數(shù)據(jù)可分為兩部分,前6位8位數(shù)據(jù)(Temp[0]-Temp[5])為一幀符合傳輸協(xié)議8位數(shù)據(jù)的后半部分,后7位數(shù)據(jù)(Temp [6]-Temp [12])為一幀符合傳輸協(xié)議8位數(shù)據(jù)的前半部分。由此可將本幀中有效數(shù)據(jù)中貞的Temp[6]-Temp[12]逐位賦給錯位接收緩沖數(shù)據(jù)ReceiveTemp[7]中。
[0037] (3)將前一次錯位接收緩沖數(shù)據(jù)ReceiveTemp [7]中的一幀符合傳輸協(xié)議8位數(shù)據(jù)的前半部分逐位賦給接收ReceiveData[13]的前7位,并將本幀接收到的一幀符合傳輸協(xié)議8位數(shù)據(jù)的后半部分位賦給接收ReceiveData[13]的后6位,由此組成的數(shù)據(jù)幀符合傳輸協(xié)議,進而進行下一步幀校驗后對數(shù)據(jù)解析。
[0038]如圖2中,左側(cè)數(shù)組為采用智能糾錯算法后的數(shù)組,數(shù)據(jù)幀符合傳輸協(xié)議,在FIFO這種低系統(tǒng)開銷的工作模式下串行通信總線接收端可靠性得到了提高。
【權(quán)利要求】
1.一種基于FIFO模式的串行通信總線數(shù)據(jù)智能糾錯方法,其特征在于步驟如下: 步驟1:當(dāng)處理器FIFO緩沖存儲單元接收到X個8位數(shù)據(jù)一組的串行通信總線數(shù)據(jù)幀后,觸發(fā)串行通信總線數(shù)據(jù)處理任務(wù)響應(yīng),處理器將FIFO緩沖存儲單元中的數(shù)據(jù)逐位存入接收數(shù)據(jù)處理數(shù)組Temp [13]中; 步驟2:對接收數(shù)據(jù)處理數(shù)組Temp [N]中的數(shù)據(jù)逐位進行檢測,得到X個8位數(shù)據(jù)幀頭在數(shù)據(jù)處理數(shù)組Temp[N]中的起始位置Temp[i],其中:i〈N ; 步驟3:對起始位置Temp [i]進行判斷: 當(dāng)X個8位數(shù)據(jù)巾貞頭在數(shù)據(jù)處理數(shù)組Temp [N]中的起始位置Temp [i]中i = 0,則判定接收到的數(shù)據(jù)幀未發(fā)生錯位,數(shù)據(jù)幀符合傳輸協(xié)議,將數(shù)據(jù)處理數(shù)組Temp [N]中的數(shù)據(jù)逐位賦給接收數(shù)組ReceiveData [N],返回步驟2進行下一個步巾貞校驗; 當(dāng)X個8位數(shù)據(jù)巾貞頭在數(shù)據(jù)處理數(shù)組Temp[N]中的起始位置Temp[i]中i古O,判定接收到的數(shù)據(jù)幀發(fā)生錯位,進行步驟4 ; 步驟4:將本幀數(shù)據(jù)中各個8位數(shù)據(jù)以出現(xiàn)Temp [i]中i古O的位置分為兩部分,前i位8位數(shù)據(jù)(Temp[O]-Temp[1-Ι])為一幀符合傳輸協(xié)議8位數(shù)據(jù)的后半部分,后N_i位數(shù)據(jù)(Temp[i]-Temp[N-1])為一幀符合傳輸協(xié)議8位數(shù)據(jù)的前半部分; 步驟5:將本幀中有效數(shù)據(jù)幀的Temp[i]-Temp[N-l]逐位賦給錯位接收緩沖數(shù)據(jù)ReceiveTemp[N~i]中; 步驟6:將前一次錯位接收緩沖數(shù)據(jù)ReceiveTemp [N_i]中的一巾貞符合傳輸協(xié)議8位數(shù)據(jù)的前半部分逐位賦給接收ReceiveData[N]的前N_i位,并將本巾貞接收到的一巾貞符合傳輸協(xié)議8位數(shù)據(jù)的后半部分位賦給接收ReceiveData[N]的后i位,組成符合傳輸協(xié)議的數(shù)據(jù)幀,返回步驟2進行下一個步幀校驗。
【文檔編號】G06F11/07GK104008023SQ201410257554
【公開日】2014年8月27日 申請日期:2014年6月11日 優(yōu)先權(quán)日:2014年6月11日
【發(fā)明者】張震, 馬瑞卿, 白浩, 劉亞兵 申請人:西北工業(yè)大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
开远市| 宕昌县| 竹溪县| 拉萨市| 临城县| 新化县| 厦门市| 饶平县| 北安市| 朝阳市| 沈丘县| 大兴区| 凤翔县| 三门峡市| 台南市| 常宁市| 青浦区| 嘉峪关市| 宜丰县| 长治市| 许昌市| 常熟市| 白沙| 托克逊县| 项城市| 侯马市| 松潘县| 新巴尔虎右旗| 佛坪县| 太仆寺旗| 宜良县| 伊宁市| 林西县| 疏附县| 沧州市| 黑水县| 涡阳县| 平遥县| 文安县| 晋宁县| 吴堡县|