一種一主多從的高速同步串行通信數(shù)據(jù)傳輸方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)傳輸方法,具體涉及一種一主多從的高速同步串行通信數(shù)據(jù)傳輸方法。
【背景技術(shù)】
[0002]目前,大型工業(yè)現(xiàn)場(chǎng)信號(hào)采集節(jié)點(diǎn)分散、數(shù)量多,人工現(xiàn)場(chǎng)采集效率低,特別是采集點(diǎn)位于高溫、高濕、高噪聲環(huán)境的應(yīng)用場(chǎng)合,人工無(wú)法進(jìn)行現(xiàn)場(chǎng)采集,且人工采集方式數(shù)據(jù)冗雜不便于統(tǒng)一管理?!耙恢鞫鄰摹钡拇型ㄐ牛ㄟ^(guò)對(duì)多個(gè)采集點(diǎn)的數(shù)據(jù)采集、傳輸,并由主機(jī)統(tǒng)一記錄管理數(shù)據(jù)信息,大大提高了數(shù)據(jù)采集效率,解決數(shù)據(jù)冗雜帶來(lái)的管理不便的問(wèn)題,成為了解決多通道數(shù)據(jù)傳輸?shù)闹饕绞健?br>[0003]“一主多從”的串行數(shù)據(jù)傳輸方式主要有兩種:同步串行通信和異步串行通信。其中,常用的異步串行通信方式有RS-232、RS-485、RS-422、CAN、LIN等,異步串行通信協(xié)議一般不需專(zhuān)用的同步時(shí)鐘線,只需一根數(shù)據(jù)線和一根地線,通過(guò)設(shè)置相應(yīng)的波特率就可以進(jìn)行數(shù)據(jù)傳輸,結(jié)構(gòu)簡(jiǎn)單;但異步傳輸通信開(kāi)銷(xiāo)大,通信效率低,傳輸速率低,不適合高速數(shù)據(jù)傳輸。
[0004]常用的同步串行通信方式有I2S、SP1、LVDS、MLVDS等,同步串行通信需要專(zhuān)用的時(shí)鐘線,由時(shí)鐘線、數(shù)據(jù)線和地線來(lái)進(jìn)行數(shù)據(jù)傳輸,傳輸速度快,適用于高速數(shù)據(jù)傳輸,但其傳輸過(guò)程需要不少于三根線進(jìn)行數(shù)據(jù)傳輸,與通用的兩線制傳輸不匹配,嚴(yán)重限制了應(yīng)用對(duì)象,且傳輸系統(tǒng)結(jié)構(gòu)復(fù)雜,遠(yuǎn)距離傳輸成本高。
[0005]綜上所述,“一主多從”的數(shù)據(jù)傳輸方式存在以下問(wèn)題:一方面基于實(shí)時(shí)性的需求,對(duì)數(shù)據(jù)傳輸速率的要求較高;另一方面基于低成本以及傳輸準(zhǔn)確率的需求,要求數(shù)據(jù)傳輸系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,傳輸線少,傳輸誤碼率低。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提出一主多從的高速同步串行通信數(shù)據(jù)傳輸方法,該方法適用于主從多通道高速傳輸領(lǐng)域,通過(guò)編碼方式傳輸?shù)臄?shù)據(jù)和通信時(shí)鐘調(diào)制到一根信號(hào)線上,采用一主多從的方式進(jìn)行數(shù)據(jù)傳輸,從而簡(jiǎn)化系統(tǒng)通信結(jié)構(gòu),減少通信線數(shù),降低通信成本,提高傳輸速率;并通過(guò)解碼方式得到優(yōu)良的串行同步時(shí)鐘,降低傳輸?shù)恼`碼率。
[0007]所述的編碼方式為:
發(fā)送方系統(tǒng)提供10MHz時(shí)鐘,原始信號(hào)速率為25MHz,數(shù)據(jù)的編碼方式為:0?1000,Ι?ΙΙΙΟο
[0008]一個(gè)碼元對(duì)應(yīng)10MHz的4位編碼。每一個(gè)碼元開(kāi)始時(shí)第I位為“ 1”,第2位和第3位為輸入信號(hào)信息,第4位是“0”,這樣便可保證在每一個(gè)碼元開(kāi)始時(shí)產(chǎn)生一個(gè)上升沿。該上升沿是一個(gè)非常優(yōu)良的同步時(shí)鐘,只要將上升沿對(duì)準(zhǔn)數(shù)據(jù)的有效位置(編碼的第2,3位),即可恢復(fù)原信號(hào)。
[0009]當(dāng)輸入信號(hào)為“1”,輸出為“1110”;當(dāng)輸入信號(hào)為“0”,輸出為“1000”。其實(shí)質(zhì)就是一個(gè)序列碼發(fā)生器,根據(jù)不同的輸入,產(chǎn)生不同的輸出序列。系統(tǒng)時(shí)鐘由可編程邏輯器件CPLD的PLL倍頻得到,編碼電路也由可編程邏輯器件CPLD實(shí)現(xiàn)。
[0010]通過(guò)上述編碼方式將發(fā)送的數(shù)據(jù)和時(shí)鐘調(diào)制到一根數(shù)據(jù)線上,如圖4所示,以解決串行傳輸中傳輸線多,通信結(jié)構(gòu)復(fù)雜,通信成本高,不適合高速長(zhǎng)距離傳輸?shù)膯?wèn)題。
[0011]所述的解碼方式為(接收端同步時(shí)鐘提取):
解碼過(guò)程是將輸入信號(hào)通過(guò)RC延時(shí)電路延時(shí)得到同步時(shí)鐘,再由同步時(shí)鐘恢復(fù)原信號(hào)。如圖5所示,輸入信號(hào)通過(guò)RC延時(shí)電路得到同步時(shí)鐘,此時(shí),同步時(shí)鐘的上升沿對(duì)準(zhǔn)數(shù)據(jù)編碼的有效位置(編碼的第2、3位的時(shí)間范圍是10ns~30ns),即可恢復(fù)原信號(hào)。當(dāng)信號(hào)通過(guò)RC延時(shí)電路時(shí),信號(hào)的寬度可能會(huì)有變化,把通過(guò)RC延時(shí)電路的信號(hào)作為同步時(shí)鐘,只關(guān)心其上升沿位置,而其寬度的變化不會(huì)影響解碼過(guò)程。
[0012]通過(guò)解碼的方式,將編碼的信息解碼出來(lái),得到原始數(shù)據(jù)和時(shí)鐘。
[0013]這種編碼方式的同步建立時(shí)間短,解碼電路原理和設(shè)計(jì)都極其簡(jiǎn)單,采用一個(gè)幀同步來(lái)檢測(cè)數(shù)據(jù)開(kāi)始,恢復(fù)同步時(shí)鐘,而且對(duì)接收方時(shí)鐘的精度和頻率要求不是很高,在實(shí)際系統(tǒng)中容易實(shí)現(xiàn)。
[0014]所述的一種一主多從方式的高速同步串行數(shù)據(jù)傳輸方法,具體的方式如下:
步驟1:系統(tǒng)初始化:系統(tǒng)上電后,主機(jī)首先向從機(jī)發(fā)送復(fù)位信號(hào),主機(jī)處于發(fā)送狀態(tài),
從機(jī)處于接收狀態(tài);復(fù)位完成后,從機(jī)清除緩沖區(qū)及相關(guān)變量,進(jìn)入到命令循環(huán)檢測(cè)階段,執(zhí)行配置的各種任務(wù)。
[0015]步驟2:主機(jī)發(fā)送采集命令:主機(jī)輪詢各從機(jī)配置啟動(dòng)采集命令,主機(jī)發(fā)送的數(shù)據(jù)幀包含六部分:第一部分為主機(jī)標(biāo)識(shí)符,用來(lái)標(biāo)識(shí)主機(jī)發(fā)送的命令幀;第二部分,主機(jī)讀寫(xiě)標(biāo)識(shí)符;第三部分為地址編碼,存放從機(jī)的地址編碼;第四部分為命令寄存器,存放主機(jī)發(fā)出的操作命令;第五部分為數(shù)據(jù)包,存放命令的內(nèi)容;第六部分為校驗(yàn)碼,保證通信可靠性。
[0016]步驟3:從機(jī)接收采集命令:主機(jī)和各從機(jī)共用一根數(shù)據(jù)線和一根地線,所以各從機(jī)同時(shí)接收到主機(jī)發(fā)送的數(shù)據(jù)幀。各從機(jī)通過(guò)數(shù)據(jù)幀第一部分來(lái)判斷該數(shù)據(jù)幀是否來(lái)至主機(jī),如果來(lái)自主機(jī),則對(duì)比自身預(yù)先設(shè)置的地址編碼與數(shù)據(jù)幀的第二部分地址編碼是否相符,從而判斷是否與主機(jī)開(kāi)始通信。
[0017]步驟4:從機(jī)發(fā)送數(shù)據(jù):從機(jī)確認(rèn)主機(jī)的采集命令后,開(kāi)始向主機(jī)傳送數(shù)據(jù),根據(jù)一主多從的連接方式,從機(jī)傳送的數(shù)據(jù)幀,主機(jī)和其它從機(jī)均能接收到,因此,需要在從機(jī)數(shù)據(jù)幀最高位加一個(gè)從機(jī)標(biāo)識(shí)符。主機(jī)接收到數(shù)據(jù)幀時(shí),通過(guò)數(shù)據(jù)幀的第一位來(lái)判斷該數(shù)據(jù)幀是否來(lái)自從機(jī),如果是,則接收該數(shù)據(jù)幀;而其它從機(jī)接收該數(shù)據(jù)幀時(shí),同樣根據(jù)數(shù)據(jù)幀上的第一位上標(biāo)識(shí)符來(lái)判斷該數(shù)據(jù)幀是否來(lái)自從機(jī),如果是,則其它從機(jī)不予響應(yīng)。
[0018]步驟5:釋放通信鏈路:使用串行傳輸協(xié)議在數(shù)據(jù)傳輸過(guò)程中,為避免數(shù)據(jù)位發(fā)生錯(cuò)亂,主機(jī)在每接收完一幀數(shù)據(jù)后發(fā)送復(fù)位數(shù)據(jù)幀(即復(fù)位陣列),進(jìn)行一次復(fù)位,從機(jī)接收該數(shù)據(jù)幀之后,清除緩沖區(qū)及相關(guān)變量。
[0019]步驟6:當(dāng)從機(jī)收到主機(jī)停止采集命令或通信系統(tǒng)發(fā)生異常時(shí)(當(dāng)傳輸數(shù)據(jù)位出現(xiàn)多個(gè)O時(shí),表示數(shù)據(jù)位錯(cuò)亂),主機(jī)發(fā)出一個(gè)復(fù)位信號(hào),使系統(tǒng)處于復(fù)位狀態(tài),即返回步驟2,從機(jī)繼續(xù)等待命令。
[0020]本發(fā)明所實(shí)現(xiàn)的基于一主多從方式的高速同步串行通信數(shù)據(jù)傳輸方法的優(yōu)點(diǎn)在于:
1.設(shè)計(jì)了一種基于一主多從方式的高速同步串行通信數(shù)據(jù)傳輸方法,該傳輸方法使用同步串行通信傳輸技術(shù),由CPLD控制邏輯直接驅(qū)動(dòng)硬件,滿足測(cè)量及控制系統(tǒng)中高速數(shù)據(jù)傳輸?shù)囊?,并且結(jié)構(gòu)較簡(jiǎn)單,傳輸線少,傳輸誤碼率低。
[0021]2.設(shè)計(jì)了一種高速同步串行數(shù)據(jù)傳輸?shù)木幗獯a方法,將傳輸數(shù)據(jù)和時(shí)鐘調(diào)制到一條傳輸線上,兼具同步串行傳輸和異步串行傳輸?shù)膬?yōu)點(diǎn),并避免了兩者的缺點(diǎn),該方法為主從多通道數(shù)據(jù)的高速傳輸提供保證。
【附圖說(shuō)明】
[0022]圖1為主機(jī)發(fā)送的命令數(shù)據(jù)幀格式;
圖2為從機(jī)發(fā)送的數(shù)據(jù)幀格式;
圖3為主從多機(jī)數(shù)據(jù)傳輸拓?fù)浣Y(jié)構(gòu)圖;
圖4為編碼過(guò)程;
圖5為解碼過(guò)程;
圖6為主從多通道高速數(shù)據(jù)傳輸方法執(zhí)行流程;
圖7為主機(jī)發(fā)送的復(fù)位數(shù)據(jù)幀;
圖8為主機(jī)發(fā)送的命令數(shù)據(jù)幀;
圖9為從機(jī)發(fā)送的數(shù)據(jù)幀;
圖10為主從通信時(shí)序圖;
圖11為發(fā)送端編碼方式;
圖12為異步通信方式圖;
圖13為同步通信方式圖。
【具體實(shí)施方式】
[0023]為了保證復(fù)雜控制系統(tǒng)和測(cè)量系統(tǒng)數(shù)據(jù)的高速有效傳輸,要求數(shù)據(jù)傳輸系統(tǒng)必須支持較高的數(shù)據(jù)傳輸率、較低的誤碼率和較高的實(shí)時(shí)性,這對(duì)數(shù)據(jù)傳輸系統(tǒng)的設(shè)計(jì)提出了較高的要求。
[0024]本發(fā)明的數(shù)據(jù)傳輸拓?fù)浣Y(jié)構(gòu)圖如圖3所示。由圖3中可以看出,本發(fā)明設(shè)計(jì)的基于一主多從方式的高速同步串行數(shù)據(jù)傳輸方法包括主機(jī)A和多個(gè)從機(jī)B。主機(jī)A與各從機(jī)共用一根地線和一根信號(hào)線進(jìn)行數(shù)據(jù)的高速傳輸。