一種基于fpga的容錯(cuò)主從同步串行通訊系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本實(shí)用新型涉及工業(yè)現(xiàn)場(chǎng)應(yīng)用中的容錯(cuò)通訊,尤其涉及一種基于FPGA芯片的容錯(cuò)主從同步串行通訊系統(tǒng)。
【背景技術(shù)】
[0002]在工業(yè)控制領(lǐng)域,隨著技術(shù)水平的不斷提高,各種現(xiàn)場(chǎng)總線技術(shù)被開(kāi)發(fā)出來(lái),如PROFIBUS、CAN等,但基于RS485的主從總線因其簡(jiǎn)單成熟而仍然被廣泛采用。
[0003]RS485兩根線,采用差分信號(hào)負(fù)邏輯,+2V?+6V表示“0”,-6V?-2V表示“I”?;谥鲝目偩€技術(shù)的串行通訊鏈路設(shè)計(jì)通常采用圖1所示菊花鏈形式的拓?fù)浣Y(jié)構(gòu),該拓?fù)浣Y(jié)構(gòu)中有一個(gè)主節(jié)點(diǎn)與多個(gè)從節(jié)點(diǎn),從節(jié)點(diǎn)個(gè)數(shù)取決于傳輸距離、傳輸速率、電纜品質(zhì)以及電磁兼容環(huán)境等因素。
[0004]主從協(xié)議與ISO/OSI七層協(xié)議的對(duì)應(yīng)關(guān)系如圖1所示,圖1主從協(xié)議與ISO/OSI七層協(xié)議的關(guān)系圖在物理層使用EIA/TIA 485協(xié)議。數(shù)據(jù)鏈路層由串行數(shù)據(jù)鏈路協(xié)議定義,串行數(shù)據(jù)鏈路協(xié)議為主從協(xié)議。
[0005]自定義應(yīng)用層協(xié)議位于ISO/OSI的第7層,提供連接在總線上的各個(gè)設(shè)備之間的C/S通信??蛻魧?duì)應(yīng)主節(jié)點(diǎn),服務(wù)器對(duì)應(yīng)從節(jié)點(diǎn)。主從協(xié)議串行數(shù)據(jù)鏈路協(xié)議為主從協(xié)議,只有一個(gè)主節(jié)點(diǎn)與一個(gè)或多個(gè)從節(jié)點(diǎn)同時(shí)連接在一條總線上,主節(jié)點(diǎn)負(fù)責(zé)命令的發(fā)起,從節(jié)點(diǎn)接收命令并響應(yīng),從節(jié)點(diǎn)只有收到主節(jié)點(diǎn)命令時(shí)才會(huì)做出響應(yīng),從節(jié)點(diǎn)之間不能相互通信。
[0006]如圖2所示的典型應(yīng)用中,其特點(diǎn)是采用單通訊鏈路進(jìn)行異步串行通訊,該拓?fù)浣Y(jié)構(gòu)優(yōu)點(diǎn)是簡(jiǎn)單易于實(shí)現(xiàn),缺點(diǎn)是可靠性低、傳輸效率低。
[0007]在工業(yè)現(xiàn)場(chǎng)應(yīng)用中,可靠性和實(shí)時(shí)性是非常重要的一個(gè)指標(biāo),如何提高采用RS485串行通訊鏈路的可靠性和實(shí)時(shí)性,是需要研宄的重要內(nèi)容。
[0008]圖3是異步串行通訊數(shù)據(jù)傳輸示意圖,主站發(fā)送數(shù)據(jù)與接收從站的響應(yīng)數(shù)據(jù)之間的時(shí)間間隔t是包括多個(gè)時(shí)鐘周期,該時(shí)間間隔t為毫秒級(jí)。如果發(fā)生超時(shí),時(shí)間間隔t將更長(zhǎng),因而造成異步串行通訊的數(shù)據(jù)傳輸效率非常低。
[0009]本領(lǐng)域技術(shù)人員致力于提供一種采用RS485串行通訊鏈路的通訊系統(tǒng),該串行通訊系統(tǒng)可靠性高,且傳輸效率高。
【發(fā)明內(nèi)容】
[0010]針對(duì)常用的基于RS485單通訊鏈路具有可靠性低、傳輸效率低的缺點(diǎn),本實(shí)用新型提出了一種基于FPGA的容錯(cuò)主從同步串行通訊系統(tǒng),其突出特點(diǎn)是:具有容錯(cuò)雙鏈路,雙鏈路自動(dòng)檢測(cè)、自動(dòng)切換,提尚串彳丁通訊系統(tǒng)的可靠性;米用同步串彳丁通訊,提尚串彳丁通訊系統(tǒng)的傳輸效率。
[0011]圖4是同步串行通訊數(shù)據(jù)傳輸示意圖,主站發(fā)送的數(shù)據(jù)與接收從站的響應(yīng)的數(shù)據(jù)之間的時(shí)間間隔t是一個(gè)時(shí)鐘周期,可以做到幾個(gè)微妙,與圖3中的異步串行通訊數(shù)據(jù)傳輸?shù)暮撩爰?jí)時(shí)間間隔相比,能夠有效地提高通訊系統(tǒng)的傳輸效率。
[0012]本實(shí)用新型的基于FPGA的容錯(cuò)主從同步串行通訊系統(tǒng)中,每個(gè)鏈路包括兩個(gè)通道,一個(gè)用于傳輸同步時(shí)鐘,一個(gè)用于傳輸數(shù)據(jù),每個(gè)通道的物理層采用RS485,數(shù)據(jù)鏈路層采用串行數(shù)據(jù)傳輸。
[0013]本實(shí)用新型的基于FPGA的容錯(cuò)主從同步串行通訊系統(tǒng)另一個(gè)突出特點(diǎn)是采用邏輯芯片F(xiàn)PGA實(shí)現(xiàn)上述所有功能。
[0014]FPGA內(nèi)部設(shè)計(jì)通道選擇模塊對(duì)兩個(gè)串行通訊鏈路進(jìn)行選擇,選擇一個(gè)串行通訊鏈路用于接收數(shù)據(jù),同時(shí)實(shí)時(shí)檢測(cè)另一串行通訊鏈路的通訊狀態(tài)。一旦用于接收數(shù)據(jù)的串行通訊鏈路出現(xiàn)故障,而另一串行通訊鏈路通信正常,自動(dòng)進(jìn)行串行通訊鏈路切換,從而實(shí)現(xiàn)了串行通訊鏈路的通訊狀態(tài)的實(shí)時(shí)檢測(cè),串行通訊鏈路的故障無(wú)擾切換。
[0015]本實(shí)用新型提供一種基于FPGA的容錯(cuò)主從同步串行通訊系統(tǒng),基于FPGA的容錯(cuò)主從同步串行通訊系統(tǒng)包括一個(gè)主站模塊、一個(gè)或多個(gè)從站模塊以及兩條串行通訊鏈路,主站模塊與從站模塊分別與兩條串行通訊鏈路連接,每個(gè)串行通訊鏈路包括同步時(shí)鐘通道與數(shù)據(jù)通道,主站模塊與從站模塊利用同步時(shí)鐘通道傳輸?shù)耐綍r(shí)鐘,實(shí)現(xiàn)數(shù)據(jù)通道傳輸?shù)拇谢瘮?shù)據(jù)的同步接收和同步發(fā)送。
[0016]進(jìn)一步地,從站模塊包括通道選擇模塊,通道選擇模塊用于選擇兩條串行通訊鏈路中的一條,同步接收串行化數(shù)據(jù)和/或同步發(fā)送串行化數(shù)據(jù)。
[0017]通道選擇模塊初始時(shí)默認(rèn)選擇第一串行通訊鏈路,如果第一串行通訊鏈路接收正常,選擇第一串行通訊鏈路進(jìn)行接收;如果第一串行通訊鏈路接收不正常,根據(jù)第一串行通訊鏈路的通訊狀態(tài)檢測(cè)結(jié)果,確定是否需要切換。
[0018]進(jìn)一步地,從站模塊包括第一接收模塊與第二接收模塊,第一接收模塊用于接收、校驗(yàn)與存儲(chǔ)主站模塊發(fā)送的數(shù)據(jù),第二接收模塊用于檢測(cè)串行通訊鏈路的通訊狀態(tài)。
[0019]進(jìn)一步地,第一接收模塊與通道選擇模塊選中的串行通訊鏈路的數(shù)據(jù)通道連接,以便接收、校驗(yàn)與存儲(chǔ)主站模塊發(fā)送的數(shù)據(jù)。
[0020]進(jìn)一步地,第二接收模塊與通道選擇模塊未選中的串行通訊鏈路的數(shù)據(jù)通道連接,以便檢測(cè)通道選擇模塊未選中的串行通訊鏈路的通訊狀態(tài)。
[0021]本實(shí)用新型提供的基于FPGA的容錯(cuò)主從同步串行通訊系統(tǒng),第二接收模塊接收通道選擇模塊未選中的串行通訊鏈路的數(shù)據(jù)通道傳輸?shù)臄?shù)據(jù),并對(duì)接收的數(shù)據(jù)進(jìn)行CRC校驗(yàn),如果校驗(yàn)通過(guò),認(rèn)為通道選擇模塊未選中的串行通訊鏈路通訊正常,否則認(rèn)為通道選擇模塊未選中的串行通訊鏈路通訊異常。
[0022]進(jìn)一步地,第一接收模塊在設(shè)定的時(shí)間內(nèi)未收到有效數(shù)據(jù),如果第二接收模塊檢測(cè)通道選擇模塊未選中的串行通訊鏈路的通訊狀態(tài)為正常時(shí),通道選擇模塊進(jìn)行串行通訊鏈路切換。
[0023]本實(shí)用新型提供的基于FPGA的容錯(cuò)主從同步串行通訊系統(tǒng),當(dāng)?shù)谝唤邮漳K在設(shè)定的時(shí)間內(nèi)收不到有效數(shù)據(jù),表示當(dāng)前串行通訊鏈路通訊異常,這時(shí)如果第二接收模塊檢測(cè)到另一個(gè)串行通訊鏈路通訊正常,也就是通道選擇模塊未選中的串行通訊鏈路通訊正常時(shí),通道選擇模塊選擇的串行通訊鏈路改變?yōu)榱硪淮型ㄓ嶆溌?,即進(jìn)行鏈路切換,從而保證通訊正常進(jìn)行,提高了本實(shí)施例的容錯(cuò)主從同步串行通訊系統(tǒng)的可靠性。
[0024]進(jìn)一步地,第一接收模塊與通道選擇模塊切換后選中的串行通訊鏈路的數(shù)據(jù)通道連接,第二接收模塊與通道選擇模塊切換后未選中的串行通訊鏈路的數(shù)據(jù)通道連接。
[0025]進(jìn)一步地,從站模塊還包括地址偏移計(jì)算模塊,用于數(shù)據(jù)存儲(chǔ)區(qū)域的偏移地址計(jì)笪并ο
[0026]進(jìn)一步地,從站模塊還包括發(fā)送模塊,用于同步發(fā)送串行化數(shù)據(jù)。
[0027]與現(xiàn)有技術(shù)相比,本實(shí)用新型提供的基于FPGA的容錯(cuò)主從同步串行通訊系統(tǒng)具有以下有益效果:
[0028](I)主站模塊與從站模塊分別與兩條串行通訊鏈路連接,采用雙鏈路容錯(cuò)通訊,提高串行通訊系統(tǒng)的可靠性;
[0029](2)通道選擇模塊對(duì)兩個(gè)串行通訊鏈路進(jìn)行選擇,選擇一個(gè)串行通訊鏈路用于接收數(shù)據(jù),同時(shí)實(shí)時(shí)檢測(cè)另一串行通訊鏈路的通訊狀態(tài)。一旦用于接收數(shù)據(jù)的串行通訊鏈路出現(xiàn)故障,而另一串行通訊鏈路通信正常,自動(dòng)進(jìn)行串行通訊鏈路切換,從而實(shí)現(xiàn)了串行通訊鏈路的通訊狀態(tài)的實(shí)時(shí)檢測(cè),串行通訊鏈路的故障無(wú)擾切換;
[0030](3)采用同步時(shí)鐘實(shí)現(xiàn)串行化數(shù)據(jù)的同步接收和同步發(fā)送,提高了串行通訊系統(tǒng)的傳輸效率。
【附圖說(shuō)明】
[0031]圖1是主從協(xié)議與ISO/OSI七層協(xié)議的關(guān)系圖;
[0032]圖2是現(xiàn)有技術(shù)中串行通訊系統(tǒng)菊花鏈形式的拓?fù)浣Y(jié)構(gòu)圖;
[0033]圖3是異步串行通訊數(shù)據(jù)傳輸示意圖;
[0034]圖4是同步串行通訊數(shù)據(jù)傳輸示意圖;
[0035]圖5是本實(shí)用新型的一個(gè)實(shí)施例的容錯(cuò)主從同步串行通訊系統(tǒng)的拓?fù)浣Y(jié)構(gòu)圖;
[0036]圖6是圖5所示的容錯(cuò)主從同步串行通訊系統(tǒng)的主站模塊的功能框圖;
[0037]圖7是圖5所示的容錯(cuò)主從同步串行通訊系統(tǒng)的從站模塊的功能框圖;
[0038]圖8是圖5所示的容錯(cuò)主從同步串行通訊系統(tǒng)的從站模塊的接收狀態(tài)機(jī);
[0039]圖9是圖5所示的容錯(cuò)主從同步串行通訊系統(tǒng)的從站模塊的第一接收模塊的功能框圖;
[0040]圖10是圖5所示的容錯(cuò)主從同步串行通訊系統(tǒng)的從站模塊的第二接收模塊的功能框圖;
[0041]圖11是圖5所示的容錯(cuò)主從同步串行通訊系統(tǒng)的從站模塊發(fā)送模塊的功能框圖;
[0042]圖12是圖5所示的容錯(cuò)主從同步串行通訊系統(tǒng)的從站模塊的發(fā)送狀態(tài)機(jī);
[0043]圖13是圖5所示的容錯(cuò)主從同步串行通訊系統(tǒng)的從站模塊的地址偏移計(jì)算模塊的功能框圖。
【具體實(shí)施方式】
[0044]如圖5所示,本實(shí)用新型的一個(gè)實(shí)施例的基于FPGA的容錯(cuò)主從同步串行通訊系統(tǒng),包括一個(gè)主站模塊、一個(gè)或多個(gè)從站模塊以及兩條串行通訊鏈路,主站模塊與從站模塊分別與兩條串行通訊鏈路連接,每個(gè)串行通訊鏈路包括同步時(shí)鐘通道與數(shù)據(jù)通道,主站模塊與從站模塊利用同步時(shí)鐘通道傳輸?shù)耐綍r(shí)鐘,實(shí)現(xiàn)數(shù)據(jù)通道傳輸?shù)拇谢瘮?shù)據(jù)的同步接收和同步發(fā)送。
[0045]采用主從通訊方式,主站模塊和從站模塊分別與兩條通訊鏈路連接,每條通訊鏈路的物理層是基于RS485,主站模塊和從站模塊的串行傳輸數(shù)據(jù)鏈路層都采用FPGA實(shí)現(xiàn)。
[0046]主站模塊配置冗余串行通訊鏈路,每個(gè)串行通訊鏈路包含兩個(gè)通道,一個(gè)通道是同步時(shí)鐘通道,用于傳輸同步時(shí)鐘,另一個(gè)通道是串行化數(shù)據(jù)通道。
[0047]如圖6所示,每個(gè)串行通訊鏈路從功能上來(lái)說(shuō),包括I個(gè)發(fā)送模塊、I個(gè)接收模塊、讀寫控制模塊以及同步信號(hào)發(fā)生器,讀/寫控制模塊實(shí)現(xiàn)對(duì)雙口 RAM的讀寫操作;同步時(shí)鐘發(fā)生器用于為數(shù)據(jù)的串行化傳輸提供同步時(shí)鐘,該同步時(shí)鐘信號(hào)被所有的從站模塊接收并使用。
[0048]由于對(duì)于所有從站模塊來(lái)說(shuō),使用一個(gè)同步時(shí)鐘,并且依靠同步時(shí)鐘進(jìn)行串行化數(shù)據(jù)的接收和發(fā)送,減小了串行化數(shù)據(jù)異步接收和發(fā)送的時(shí)間間隔,提高了通訊的效率。
[0049]從站模塊的設(shè)計(jì)是本實(shí)