一種基于幀數(shù)據(jù)串行傳輸?shù)膸瑪?shù)據(jù)接收方法
【專利摘要】本發(fā)明公開了一種基于幀數(shù)據(jù)串行傳輸?shù)膸瑪?shù)據(jù)接收方法,該方法當確認數(shù)據(jù)正確且ID與本節(jié)點匹配時才將暫存緩沖器中數(shù)據(jù)移至數(shù)據(jù)ID信息存儲memory體中,即data_fifo中;同時將移入data_fifo幀數(shù)據(jù)的屬性即幀數(shù)據(jù)長度和溢出狀態(tài)存儲至屬性FIFO中,即infor_fifo,主機讀取數(shù)據(jù)接收后,通過控制寄存器修改data_fifo的讀指針,從而避免讀取錯誤數(shù)據(jù),同時實現(xiàn)單位幀數(shù)據(jù)個數(shù)隨機情況下的數(shù)據(jù)接收。
【專利說明】一種基于幀數(shù)據(jù)串行傳輸?shù)膸瑪?shù)據(jù)接收方法
【技術領域】
[0001]本發(fā)明涉及一種幀數(shù)據(jù)接收方法,具體涉及一種基于幀數(shù)據(jù)串行傳輸?shù)膸瑪?shù)據(jù)接收方法。
【背景技術】
[0002]現(xiàn)有的幀數(shù)據(jù)串行傳輸過程中,串并轉換結束后就直接寫入存儲器中,無緩存器,同時已提出的數(shù)據(jù)接收設計中均未提出雙存儲器的方法,也未提出對接收的數(shù)據(jù)屬性進行提取及存儲,從而當用戶讀取數(shù)據(jù)時容易產(chǎn)生誤操作,從而讀取出錯誤數(shù)據(jù)。同時,現(xiàn)有設計方法為一個地址對應多個存儲區(qū),當讀取數(shù)據(jù)結束后,讀指針也就指示到下一次要讀取數(shù)據(jù)的起始地址,此時將不可以再次讀取前幀數(shù)據(jù),讀指針不可控;當單位幀數(shù)據(jù)的數(shù)據(jù)個數(shù)隨機且接收多幀數(shù)據(jù)后,用戶才開始讀取接收的數(shù)據(jù)時,用戶讀取數(shù)據(jù)長度失控,無法實現(xiàn)單位幀數(shù)據(jù)個數(shù)隨機情況下的數(shù)據(jù)接收。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的目的在于克服上述現(xiàn)有技術的缺點,提供了一種基于幀數(shù)據(jù)串行傳輸?shù)膸瑪?shù)據(jù)接收方法,該方法可以避免讀取錯誤數(shù)據(jù),同時實現(xiàn)單位幀數(shù)據(jù)個數(shù)隨機情況下的數(shù)據(jù)接收。
[0004]為達到上述目的,本發(fā)明所述的基于幀數(shù)據(jù)串行傳輸?shù)膸瑪?shù)據(jù)接收方法包括以下步驟:
[0005]在進行串行數(shù)據(jù)解碼的過程中,將串并轉換后的幀ID信息存入HEADER寄存器中,同時將串并轉換后的數(shù)據(jù)存儲到寄存器組TEMP_FIF0中,再進行CRC校驗及ID匹配,當CRC校驗及ID匹配合格時,則將TEMP_FIF0及HEADER寄存器中的數(shù)據(jù)一次性寫入data_fifo中,寫入結束后將TEMP_FIF0的讀寫指針歸零,然后進行下一次幀數(shù)據(jù)接收,在寫入過程中,dataLen記錄寫入的數(shù)據(jù)個數(shù),OverRun寄存器記錄是否溢出的信息,當data_fifo不溢出時,DataLen記錄寫入data_fifo的數(shù)據(jù)個數(shù)信息,OverRun記錄O ;當data_fifo溢出時,DataLen記錄已經(jīng)寫入data_fifo的數(shù)據(jù)個數(shù)信息,OverRun記錄I,同時將DataLen和OverRun存入的數(shù)據(jù)寫入infor_fifo中;
[0006]用戶從data_fifo中在讀取數(shù)據(jù)時,infor_fifο先輸出存入的對應數(shù)據(jù),DataNum寄存DataLen記錄的數(shù)據(jù)個數(shù)信息,LatchOverRun寄存OverRun寄存器記錄的是否溢出的信息,用戶讀取LatchOverRun內(nèi)寄存的該巾貞數(shù)據(jù)是否溢出的信息,當用戶讀取O時,表示讀取的幀為正確幀,用戶則從datajifo中讀取數(shù)據(jù);當用戶讀取I時,表示讀取的幀為溢出幀,則根據(jù)DataNum內(nèi)寄存的該幀數(shù)據(jù)的數(shù)據(jù)個數(shù)信息調(diào)整Datajifo的讀指針跳轉步長,用戶再從data_fifo中進行讀取數(shù)據(jù),讀取完成后置位BufRelease調(diào)整data_fifo及infor_fifo的讀指針,然后進行下一幀的數(shù)據(jù)讀取。
[0007]所述TEMP_FIF0為8X8寄存器組。
[0008]所述LatchOverRun為狀態(tài)寄存器。
[0009]當任意一巾貞數(shù)據(jù)讀取完成后,infor_fifo的讀指針跳轉步長加I。
[0010]用戶采用窗口調(diào)節(jié)方式讀取Datajifo內(nèi)的數(shù)據(jù),所述窗口調(diào)節(jié)方式為依據(jù)每幀數(shù)據(jù)都有DataNum記錄,采用地址重映射設計方法實現(xiàn)用戶對data_fifo中的數(shù)據(jù)進行讀取。
[0011]設每幀數(shù)據(jù)的個數(shù)最大為N,每幀數(shù)據(jù)對應一個地址Ax,其中中O彡X彡N-1,用戶所有幀數(shù)據(jù)的地址均為固定的,當用戶讀取數(shù)據(jù)時,datajifo控制器內(nèi)設有基地址寄存器BaseAddr,基地址寄存器BaseAddr初始值為0,用戶對進行讀操作,地址重映射為(AQ+BaseAddr)-(Aim+BaseAddr),當讀取一幀數(shù)據(jù)結束后,用戶命令BufRelease調(diào)整BaseAddr。
[0012]本發(fā)明具有以下有益效果:
[0013]本發(fā)明所述的基于幀數(shù)據(jù)串行傳輸?shù)膸瑪?shù)據(jù)接收方法在進行幀數(shù)據(jù)接收的過程中,需要進行CRC校驗及ID匹配,當CRC校驗及ID匹配合格時,則將TEMP_FIF0及HEADER寄存器中的數(shù)據(jù)一次性寫入datajifo中,從而避免用戶讀取出錯誤的數(shù)據(jù),提高讀取的數(shù)據(jù)的準確性。另外,用戶可以讀取出幀數(shù)據(jù)及該幀數(shù)據(jù)對應的個數(shù)信息及是否溢出的信息,實現(xiàn)幀數(shù)據(jù)與個數(shù)信息及是否溢出信息的一一對應關系,用戶從datajifo中讀取數(shù)據(jù)的過程中,當用戶讀取到I時,則表示讀取的幀為溢出幀,則根據(jù)DataNum內(nèi)寄存的該幀數(shù)據(jù)的數(shù)據(jù)個數(shù)信息調(diào)整Datajifo的讀指針跳轉步長,從而實現(xiàn)單位幀數(shù)據(jù)個數(shù)隨機情況下的數(shù)據(jù)接收。
【專利附圖】
【附圖說明】
[0014]圖1為本發(fā)明中CRC校驗及ID匹配過程中的原理圖;
[0015]圖2為本發(fā)明中用戶讀取時datajifo調(diào)整的原理圖;
[0016]圖3為本發(fā)明中用戶讀取時的原理圖。
【具體實施方式】
[0017]下面結合附圖對本發(fā)明做進一步詳細描述:
[0018]參考圖1,本發(fā)明所述的基于幀數(shù)據(jù)串行傳輸?shù)膸瑪?shù)據(jù)接收方法包括以下步驟:
[0019]在進行串行數(shù)據(jù)解碼的過程中,將串并轉換后的幀ID信息存入HEADER寄存器中,同時將串并轉換后的數(shù)據(jù)存儲到寄存器組TEMP_FIF0中,再進行CRC校驗及ID匹配,當CRC校驗及ID匹配合格時,則將TEMP_FIF0及HEADER寄存器中的數(shù)據(jù)一次性寫入data_fifo中,寫入結束后將TEMP_FIF0的讀寫指針歸零,然后進行下一次幀數(shù)據(jù)接收,在寫入過程中,dataLen記錄寫入的數(shù)據(jù)個數(shù),OverRun寄存器記錄是否溢出的信息,當data_fifo不溢出時,DataLen記錄寫入data_fifo的數(shù)據(jù)個數(shù)信息,OverRun記錄O ;當data_fifo溢出時,DataLen記錄已經(jīng)寫入data_fifo的數(shù)據(jù)個數(shù)信息,OverRun記錄I,同時將DataLen和OverRun存入的數(shù)據(jù)寫入inf orjif ο中,其中,TEMP_FIF0為8X8寄存器組。
[0020]用戶從data_fifo中在讀取數(shù)據(jù)時,infor_fifο先輸出存入的對應數(shù)據(jù),DataNum寄存DataLen記錄的數(shù)據(jù)個數(shù)信息,LatchOverRun寄存OverRun寄存器記錄的是否溢出的信息,用戶讀取LatchOverRun內(nèi)寄存的該巾貞數(shù)據(jù)是否溢出的信息,當用戶讀取O時,表示讀取的幀為正確幀,用戶則從datajifo中讀取數(shù)據(jù);當用戶讀取I時,表示讀取的幀為溢出幀,則根據(jù)DataNum內(nèi)寄存的該幀數(shù)據(jù)的數(shù)據(jù)個數(shù)信息調(diào)整Datajifo的讀指針跳轉步長,用戶再從data_fifo中進行讀取數(shù)據(jù),讀取完成后置位BufRelease調(diào)整data_fifo及infor_fifo的讀指針,然后進行下一幀的數(shù)據(jù)讀取。具體的,當任意一幀數(shù)據(jù)讀取完成后,infor_fifo的讀指針跳轉步長加I。用戶采用窗口調(diào)節(jié)方式讀取Datajifo內(nèi)的數(shù)據(jù),所述窗口調(diào)節(jié)方式為依據(jù)每幀數(shù)據(jù)都有DataNum記錄,采用地址重映射設計方法實現(xiàn)用戶對data_fifo中的數(shù)據(jù)進行讀取。另外,設每幀數(shù)據(jù)的個數(shù)最大為N,每幀數(shù)據(jù)對應一個地址Ax,其中中O彡X彡N-1,用戶所有幀數(shù)據(jù)的地址均為固定的,當用戶讀取數(shù)據(jù)時,datajifo控制器內(nèi)設有基地址寄存器BaseAddr,基地址寄存器BaseAddr初始值為0,用戶對Atl-A1^1進行讀操作,地址重映射為(AdBaseAddr)-(Aim+BaseAddr),當讀取一幀數(shù)據(jù)結束后,用戶命令BufRelease 調(diào)整 BaseAddr。例如:DataNum = 9, BaseAddr = O,當 BufRelease 置位后,BaseAddr為BaseAddr+DataNum = 9+0 = 9,此時的BaseAddr = 9為下一巾貞數(shù)據(jù)的起始地址,用戶對Ac1-Aim操作時,實際的datajifo的讀操作地址為9+^-9+4^,其中N為正整數(shù)。
[0021]參考圖2,幀數(shù)據(jù)地址按最大數(shù)據(jù)個數(shù)N編址,一個幀窗口可能覆蓋多個幀數(shù)據(jù),此由于傳輸?shù)膸瑪?shù)據(jù)未必按最大數(shù)據(jù)量傳輸。在讀取結束當前幀數(shù)據(jù)后,通過BufRelease修改BaseAddr下一幀數(shù)據(jù)的基地址,基地址跳變步長有DataNum決定。
[0022]參考圖3,DataJifo的寫控制信號在CRC校驗和ID匹配時置位,當寫入的數(shù)據(jù)個數(shù)counter = DLC幀數(shù)據(jù)長度后復位,此時的數(shù)據(jù)為HEADER ID數(shù)據(jù)和TEMP_FIF0的幀數(shù)據(jù),讀數(shù)據(jù)時通過BaseAddr和用戶讀取數(shù)據(jù)地址Ax確定datajifo讀取數(shù)據(jù)的地址,讀使能為用戶讀取K地址時產(chǎn)生;Inf0r_fif0寫控制為datajifo寫入數(shù)據(jù)控制信號wr下降沿脈沖,寫入的巾貞數(shù)據(jù)屬性DataLen和OverRun在寫入data_fifo數(shù)據(jù)時確定,當infor_fifo非空存在有效幀數(shù)據(jù)時,會將當前地址的幀數(shù)據(jù)屬性信息提前輸出并存儲到DataNum和LatchOverRun寄存器中。兩個FIFO的讀地址通過命令寄存器BufRelease控制,datajifo在BufRelease有效時,修改BaseAddr,步長為讀取當前巾貞的數(shù)據(jù)個數(shù),即DataNum,用戶讀取幀數(shù)據(jù)之前可以通過LatchOverRun寄存器確認當前幀是否為溢出幀,若為溢出幀時,當前要讀取的幀數(shù)據(jù)不完整,用戶以此狀態(tài)信息進行后續(xù)操作。
【權利要求】
1.一種基于幀數(shù)據(jù)串行傳輸?shù)膸瑪?shù)據(jù)接收方法,其特征在于,包括以下步驟: 在進行串行數(shù)據(jù)解碼的過程中,將串并轉換后的幀ID信息存入HEADER寄存器中,同時將串并轉換后的數(shù)據(jù)存儲到寄存器組TEMP_FIFO中,再進行CRC校驗及ID匹配,當CRC校驗及ID匹配合格時,則將TEMP_FIFO及HEADER寄存器中的數(shù)據(jù)一次性寫入datajifo中,寫入結束后將TEMP_FIF0的讀寫指針歸零,然后進行下一次幀數(shù)據(jù)接收,在寫入過程中,dataLen記錄寫入的數(shù)據(jù)個數(shù),OverRun寄存器記錄是否溢出的信息,當data_fifo不溢出時,DataLen記錄寫入data_fifo的數(shù)據(jù)個數(shù)信息,OverRun記錄O ;當data_fifo溢出時,DataLen記錄已經(jīng)寫入data_fifo的數(shù)據(jù)個數(shù)信息,OverRun記錄I,同時將DataLen和OverRun存入的數(shù)據(jù)寫入infor_fifo中; 用戶從datajifo中在讀取數(shù)據(jù)時,inforjifο先輸出存入的對應數(shù)據(jù),DataNum寄存DataLen記錄的數(shù)據(jù)個數(shù)信息,LatchOverRun寄存OverRun寄存器記錄的是否溢出的信息,用戶讀取LatchOverRun內(nèi)寄存的該巾貞數(shù)據(jù)是否溢出的信息,當用戶讀取O時,表示讀取的幀為正確幀,用戶則從datajifo中讀取數(shù)據(jù);當用戶讀取I時,表示讀取的幀為溢出幀,則根據(jù)DataNum內(nèi)寄存的該幀數(shù)據(jù)的數(shù)據(jù)個數(shù)信息調(diào)整Datajifo的讀指針跳轉步長,用戶再從data_fifo中進行讀取數(shù)據(jù),讀取完成后置位BufRelease調(diào)整data_fifo及infor_fifo的讀指針,然后進行下一幀的數(shù)據(jù)讀取。
2.根據(jù)權利要求1所述的基于幀數(shù)據(jù)串行傳輸?shù)膸瑪?shù)據(jù)接收方法,其特征在于,所述TEMP_FIF0為8X8寄存器組。
3.根據(jù)權利要求1所述的基于幀數(shù)據(jù)串行傳輸?shù)膸瑪?shù)據(jù)接收方法,其特征在于,所述LatchOverRun為狀態(tài)寄存器。
4.根據(jù)權利要求1所述的基于幀數(shù)據(jù)串行傳輸?shù)膸瑪?shù)據(jù)接收方法,其特征在于,當任意一巾貞數(shù)據(jù)讀取完成后,infor_fifo的讀指針跳轉步長加I。
5.根據(jù)權利要求1所述的基于幀數(shù)據(jù)串行傳輸?shù)膸瑪?shù)據(jù)接收方法,其特征在于,用戶采用窗口調(diào)節(jié)方式讀取Datajifo內(nèi)的數(shù)據(jù),所述窗口調(diào)節(jié)方式為依據(jù)每幀數(shù)據(jù)都有DataNum記錄,采用地址重映射設計方法實現(xiàn)用戶對data_fifo中的數(shù)據(jù)進行讀取。
6.根據(jù)權利要求1所述的基于幀數(shù)據(jù)串行傳輸?shù)膸瑪?shù)據(jù)接收方法,其特征在于, 設每幀數(shù)據(jù)的個數(shù)最大為N,每幀數(shù)據(jù)對應一個地址Ax,其中O < X < N-1,用戶所有幀數(shù)據(jù)的地址均為固定的,當用戶讀取數(shù)據(jù)時,datajifo控制器內(nèi)設有基地址寄存器BaseAddr,基地址寄存器BaseAddr初始值為O,用戶對Atl-A1^1進行讀操作,地址重映射為(AdBaseAddr)-(Aim+BaseAddr),當讀取一幀數(shù)據(jù)結束后,用戶命令BufRelease調(diào)整BaseAddr,其中N為正整數(shù)。
【文檔編號】H04L1/00GK104182183SQ201410410746
【公開日】2014年12月3日 申請日期:2014年8月19日 優(yōu)先權日:2014年8月19日
【發(fā)明者】張洵穎, 余志軍, 楊博, 楚亞楠 申請人:中國航天科技集團公司第九研究院第七七一研究所