本發(fā)明屬于數(shù)據(jù)通信領(lǐng)域,具體涉及一種基于FPGA的多路HDLC-UART通信協(xié)議轉(zhuǎn)換控制器的實(shí)現(xiàn)方法。
背景技術(shù):
HDLC協(xié)議是國際標(biāo)準(zhǔn)化組織制定的高級數(shù)據(jù)鏈路控制規(guī)程,其可以傳輸任意比特位的數(shù)據(jù),且可根據(jù)需求選擇多種差錯檢測方式,具有強(qiáng)大的差錯檢測能力,是一種高效的同步傳輸協(xié)議。UART全稱為通用異步收發(fā)器,是一種適用于短距離通信的串行接口,具有結(jié)構(gòu)簡單、性價比高的特點(diǎn)。一套大型系統(tǒng)中由于存在多種設(shè)備,往往會同時涉及這兩種通信協(xié)議,由于二者的數(shù)據(jù)傳輸格式不同,無法直接通信,這時需要設(shè)計(jì)HDLC-UART通信協(xié)議轉(zhuǎn)換控制器實(shí)現(xiàn)系統(tǒng)中的通信互聯(lián)。
利用UART傳輸?shù)臄?shù)據(jù)幀,在不同應(yīng)用中往往具有多種構(gòu)成方式,各種方式的幀頭、幀尾以及校驗(yàn)方法也各不相同。目前市場上尚未存在一種可實(shí)現(xiàn)自由配置UART數(shù)據(jù)幀解包、編碼并轉(zhuǎn)換為HDLC協(xié)議傳輸?shù)奶幚硇酒谕瑫r存在這兩種通信協(xié)議并需要實(shí)現(xiàn)信息互通的大型系統(tǒng)中,亟需一種多路HDLC-UART通信協(xié)議轉(zhuǎn)換控制器。FPGA芯片是一種可編程邏輯器件,具備高度靈活性,特別適合用戶實(shí)現(xiàn)特殊應(yīng)用場景中的定制功能。使用FPGA實(shí)現(xiàn)的多路HDLC-UART通信協(xié)議轉(zhuǎn)換控制器具有良好的可移植性,可根據(jù)需要在不同廠商不同型號FPGA芯片上自由實(shí)現(xiàn),還可自定義UART數(shù)據(jù)幀的結(jié)構(gòu)與校驗(yàn)方式、HDLC校驗(yàn)方式與時鐘模式,能夠適用于需要進(jìn)行HDLC-UART通信協(xié)議轉(zhuǎn)換的多種場合,具備良好的商用價值和研究意義。
技術(shù)實(shí)現(xiàn)要素:
發(fā)明目的:針對上述現(xiàn)有技術(shù)存在的缺陷,本發(fā)明旨在提供一種在FPGA中實(shí)現(xiàn)多路HDLC-UART通信協(xié)議轉(zhuǎn)換控制器的方法,不僅能夠同時實(shí)現(xiàn)多路HDLC-UART通信協(xié)議轉(zhuǎn)換功能,還可根據(jù)不同系統(tǒng)中對于UART數(shù)據(jù)幀的結(jié)構(gòu)與校驗(yàn)方法的不同,以及HDLC校驗(yàn)方式與時鐘模式的不同對相關(guān)模塊進(jìn)行設(shè)置,具備高度可移植性與靈活性。
技術(shù)方案:為實(shí)現(xiàn)上述目的,本發(fā)明所提供的一種基于FPGA的多路HDLC-UART轉(zhuǎn)換系統(tǒng),包括:
UART數(shù)據(jù)幀的采集與解包模塊,用于采集UART數(shù)據(jù),按照約定的UART數(shù)據(jù)幀結(jié)構(gòu)解包數(shù)據(jù),校驗(yàn)數(shù)據(jù)幀正確性并存儲,根據(jù)應(yīng)用需求,配置模塊中的UART數(shù)據(jù)幀結(jié)構(gòu);
UART數(shù)據(jù)幀轉(zhuǎn)換為HDLC數(shù)據(jù)幀的校驗(yàn)處理模塊,用于將解包的數(shù)據(jù)轉(zhuǎn)化為HDLC數(shù)據(jù)幀格式,并嵌入校驗(yàn)信息;
HDLC數(shù)據(jù)幀編碼輸出模塊,用于按照設(shè)置的時鐘配置方式發(fā)送HDLC數(shù)據(jù)幀;
HDLC數(shù)據(jù)幀的采集與解包模塊,用于采集HDLC數(shù)據(jù),校驗(yàn)數(shù)據(jù)幀正確性并存儲;
HDLC數(shù)據(jù)幀轉(zhuǎn)換為UART數(shù)據(jù)幀的校驗(yàn)處理模塊,用于按照約定的UART數(shù)據(jù)幀結(jié)構(gòu)重新構(gòu)建數(shù)據(jù)幀,并嵌入校驗(yàn)信息;
UART數(shù)據(jù)幀編碼輸出模塊,用于按照約定的波特率、數(shù)據(jù)位、停止位和校驗(yàn)位設(shè)置,發(fā)送UART數(shù)據(jù)幀;
UART數(shù)據(jù)幀直通轉(zhuǎn)發(fā)模塊,用于將UART數(shù)據(jù)幀直接轉(zhuǎn)發(fā)到特定的UART通道;
UART控制命令響應(yīng)模塊,用于接收上位機(jī)的配置命令,控制轉(zhuǎn)發(fā)模式及HDLC時鐘,并將配置信息存儲至非易失存儲器中,在板卡上電復(fù)位之后載入存儲器中的配置;
轉(zhuǎn)發(fā)模式控制模塊,用于根據(jù)配置的轉(zhuǎn)發(fā)模式信息控制不同的轉(zhuǎn)發(fā)模式。
HDLC時鐘控制模塊,用于根據(jù)HDLC時鐘配置信息,設(shè)置并控制HDLC鏈路時鐘實(shí)現(xiàn)方式。
進(jìn)一步的,UART數(shù)據(jù)幀的采集與解包模塊和HDLC數(shù)據(jù)幀的采集與解包模塊所述的校驗(yàn)數(shù)據(jù)幀正確性并存儲,均存儲在模塊內(nèi)構(gòu)的FIFO緩存中。
進(jìn)一步的,UART數(shù)據(jù)幀轉(zhuǎn)換為HDLC數(shù)據(jù)幀的校驗(yàn)處理模塊所述嵌入校驗(yàn)信息,采用的校驗(yàn)方式為CCITT-16。
進(jìn)一步的,所述HDLC鏈路的時鐘設(shè)置為采用外部時鐘或使用模塊內(nèi)部產(chǎn)生的不同頻率的時鐘。
一種基于FPGA的多路HDLC-UART轉(zhuǎn)換方法,具體步驟如下:上電復(fù)位之后,UART控制命令響應(yīng)模塊從非易失存儲器中載入配置信息,各路接口按照配置信息實(shí)現(xiàn)UART數(shù)據(jù)幀的直通轉(zhuǎn)發(fā)或HDLC數(shù)據(jù)幀的轉(zhuǎn)發(fā)傳輸;同時通信協(xié)議轉(zhuǎn)換控制器可在工作狀態(tài)下,實(shí)時接收UART控制命令,并根據(jù)UART控制命令進(jìn)行UART數(shù)據(jù)幀的直通轉(zhuǎn)發(fā)模式和轉(zhuǎn)發(fā)為HDLC數(shù)據(jù)幀模式之間的轉(zhuǎn)換。
進(jìn)一步的,工作在所述UART數(shù)據(jù)幀的直通轉(zhuǎn)發(fā)模式時,F(xiàn)PGA通過內(nèi)部邏輯直接將對應(yīng)的UART信號線相連,實(shí)現(xiàn)直通轉(zhuǎn)發(fā)。
進(jìn)一步的,工作在轉(zhuǎn)發(fā)為HDLC數(shù)據(jù)幀模式時,數(shù)據(jù)從UART接口輸入到HDLC接口輸出,或者數(shù)據(jù)從HDLC接口輸入到UART接口輸出。
進(jìn)一步的,所述數(shù)據(jù)從UART接口輸入到HDLC接口輸出具體包括如下步驟:
(A)UART數(shù)據(jù)幀的采集與解包模塊進(jìn)行UART數(shù)據(jù)幀的采集,按照約定的UART數(shù)據(jù)幀結(jié)構(gòu)解包數(shù)據(jù),完成對數(shù)據(jù)幀正確性的校驗(yàn),并存入模塊內(nèi)構(gòu)的FIFO緩存中;
(B)UART數(shù)據(jù)幀轉(zhuǎn)換為HDLC數(shù)據(jù)幀的校驗(yàn)處理模塊將步驟(A)得到的解包數(shù)據(jù)轉(zhuǎn)化為HDLC數(shù)據(jù)幀格式,并嵌入校驗(yàn)信息;
(C)HDLC數(shù)據(jù)幀編碼輸出模塊按照設(shè)置的時鐘配置方式發(fā)送步驟(B)中得到的HDLC數(shù)據(jù)幀。
進(jìn)一步的,所述數(shù)據(jù)從HDLC接口輸入到UART接口輸出具體包括如下步驟:
(a)HDLC數(shù)據(jù)幀的采集與解包模塊按照設(shè)置的時鐘配置方式采集HDLC數(shù)據(jù),校驗(yàn)數(shù)據(jù)幀的正確性,并存入模塊內(nèi)構(gòu)的FIFO緩存中;
(b)HDLC數(shù)據(jù)幀轉(zhuǎn)換為UART數(shù)據(jù)幀的校驗(yàn)處理模塊將步驟(a)得到的HDLC數(shù)據(jù)按照約定的UART數(shù)據(jù)幀結(jié)構(gòu)重新構(gòu)建數(shù)據(jù)幀,并嵌入校驗(yàn)信息;
(c)UART數(shù)據(jù)幀編碼輸出模塊按照約定的波特率、數(shù)據(jù)位、停止位和校驗(yàn)位設(shè)置,發(fā)送步驟(b)得到的UART數(shù)據(jù)幀。
進(jìn)一步的,步驟(B)中所述嵌入校驗(yàn)信息具體為嵌入CCITT-16校驗(yàn)信息。
有益效果:本發(fā)明采用硬件描述語言在FPGA上實(shí)現(xiàn)多路HDLC-UART通信協(xié)議轉(zhuǎn)換控制,其優(yōu)勢在于利用了FPGA芯片的高度靈活性,實(shí)現(xiàn)的多路HDLC-UART通信協(xié)議轉(zhuǎn)換控制器具有良好的可移植性,還可自定義UART數(shù)據(jù)幀的結(jié)構(gòu)與校驗(yàn)方式、HDLC校驗(yàn)方式與時鐘模式,能夠適用于需要進(jìn)行HDLC-UART通信協(xié)議轉(zhuǎn)換的多種場合,解決了同時存在這兩種通信協(xié)議并需要實(shí)現(xiàn)通信互聯(lián)的大型系統(tǒng)中缺乏方便有效的協(xié)議轉(zhuǎn)發(fā)互聯(lián)芯片的現(xiàn)狀,具備較高的實(shí)際應(yīng)用價值。
附圖說明
圖1為多路HDLC-UART通信協(xié)議轉(zhuǎn)換控制器總體結(jié)構(gòu)示意圖;
圖2為采用本發(fā)明設(shè)計(jì)的某通信協(xié)議轉(zhuǎn)換控制板卡組成示意圖。
具體實(shí)施方式
下面通過一個最佳實(shí)施例并結(jié)合附圖對本技術(shù)方案進(jìn)行詳細(xì)說明。
一種基于FPGA的多路HDLC-UART轉(zhuǎn)換系統(tǒng),其特征在于,包括:
UART數(shù)據(jù)幀的采集與解包模塊,用于采集UART數(shù)據(jù),按照約定的UART數(shù)據(jù)幀結(jié)構(gòu)解包數(shù)據(jù),校驗(yàn)數(shù)據(jù)幀正確性并存儲,存儲在模塊內(nèi)構(gòu)的FIFO緩存中,根據(jù)應(yīng)用需求,配置模塊中的UART數(shù)據(jù)幀結(jié)構(gòu);
UART數(shù)據(jù)幀轉(zhuǎn)換為HDLC數(shù)據(jù)幀的校驗(yàn)處理模塊,用于將解包的數(shù)據(jù)轉(zhuǎn)化為HDLC數(shù)據(jù)幀格式,并嵌入CCITT-16校驗(yàn)信息;本實(shí)施例選擇CCITT-16的校驗(yàn)方式,實(shí)際應(yīng)用中也可根據(jù)不同應(yīng)用的需求將CCITT-16替換為其他校驗(yàn)方式。
HDLC數(shù)據(jù)幀編碼輸出模塊,用于按照設(shè)置的時鐘配置方式發(fā)送HDLC數(shù)據(jù)幀;
HDLC數(shù)據(jù)幀的采集與解包模塊,用于采集HDLC數(shù)據(jù),根據(jù)CCITT-16校驗(yàn)方式校驗(yàn)數(shù)據(jù)幀正確性并存儲,存儲在模塊內(nèi)構(gòu)的FIFO緩存中;該模塊可根據(jù)用戶的需求將CCITT-16校驗(yàn)替換為其他校驗(yàn)方式。
HDLC數(shù)據(jù)幀轉(zhuǎn)換為UART數(shù)據(jù)幀的校驗(yàn)處理模塊,用于按照約定的UART數(shù)據(jù)幀結(jié)構(gòu)重新構(gòu)建數(shù)據(jù)幀,并嵌入校驗(yàn)信息;該模塊可根據(jù)不用應(yīng)用的需求,自定義UART數(shù)據(jù)幀結(jié)構(gòu)與校驗(yàn)方式。
UART數(shù)據(jù)幀編碼輸出模塊,用于按照約定的波特率、數(shù)據(jù)位、停止位和校驗(yàn)位設(shè)置,發(fā)送UART數(shù)據(jù)幀;
UART數(shù)據(jù)幀直通轉(zhuǎn)發(fā)模塊,用于將UART數(shù)據(jù)幀直接轉(zhuǎn)發(fā)到特定的UART通道;
UART控制命令響應(yīng)模塊,用于接收上位機(jī)的配置命令,控制轉(zhuǎn)發(fā)模式及HDLC時鐘,并將配置信息存儲至非易失存儲器中,在板卡上電復(fù)位之后載入存儲器中的配置;
轉(zhuǎn)發(fā)模式控制模塊,用于根據(jù)配置的轉(zhuǎn)發(fā)模式信息控制不同的轉(zhuǎn)發(fā)模式。
HDLC時鐘控制模塊,用于根據(jù)配置的HDLC時鐘信息,控制HDLC鏈路的時鐘。HDLC鏈路可設(shè)置為采用外部時鐘或使用模塊內(nèi)部產(chǎn)生的不同頻率的時鐘。
本實(shí)施例中的UART數(shù)據(jù)幀以0xC0作為幀頭與幀尾的標(biāo)志,數(shù)據(jù)幀的最后一個字節(jié)為數(shù)據(jù)幀中所有數(shù)據(jù)的異或檢驗(yàn)值。數(shù)據(jù)幀(包括校驗(yàn)值)長度最多可達(dá)1024個字節(jié)。數(shù)據(jù)幀(包括校驗(yàn)值)中出現(xiàn)0xC0則轉(zhuǎn)義為0xDB 0xDC,出現(xiàn)0xDB則轉(zhuǎn)義為0xDB 0xDD。實(shí)施例中的HDLC數(shù)據(jù)幀以二進(jìn)制數(shù)值01111110作為數(shù)據(jù)的起始與結(jié)束標(biāo)志,數(shù)據(jù)幀的最后16個比特位為數(shù)據(jù)幀CCITT-16校驗(yàn)值。數(shù)據(jù)幀(包括校驗(yàn)位)中出現(xiàn)連續(xù)5個1則在編碼時進(jìn)行補(bǔ)0操作。
本實(shí)施例中的FPGA芯片接收由PCIE總線轉(zhuǎn)出的8路UART數(shù)據(jù),其中前4路為UART數(shù)據(jù)幀通信鏈路,第5路為UART控制命令接口,第6至8路UART數(shù)據(jù)接口功能保留。UART數(shù)據(jù)的傳輸特性如下:波特率115200,8位數(shù)據(jù)位,無檢驗(yàn)位,1位停止位。FPGA芯片向外提供2組HDLC-UART復(fù)合接口,其中每組接口通過復(fù)用部分引腳可實(shí)現(xiàn)2路UART直通轉(zhuǎn)發(fā)數(shù)據(jù)傳輸或1路HDLC鏈路數(shù)據(jù)傳輸。通過向UART控制命令接口寫入控制字,可實(shí)現(xiàn)不同數(shù)據(jù)轉(zhuǎn)發(fā)模式與HDLC時鐘的控制,控制字與相應(yīng)的響應(yīng)字如表1所示:
表1 UART控制命令的發(fā)送控制字與響應(yīng)字
一種基于FPGA的多路HDLC-UART轉(zhuǎn)換方法,具體步驟如下:上電復(fù)位之后,UART控制命令響應(yīng)模塊從非易失存儲器中載入配置信息,各路接口按照配置信息實(shí)現(xiàn)UART數(shù)據(jù)幀的直通轉(zhuǎn)發(fā)或HDLC數(shù)據(jù)幀的轉(zhuǎn)發(fā)傳輸;同時通信協(xié)議轉(zhuǎn)換控制器可在工作狀態(tài)下,實(shí)時接收UART控制命令,并根據(jù)UART控制命令進(jìn)行UART數(shù)據(jù)幀的直通轉(zhuǎn)發(fā)模式和轉(zhuǎn)發(fā)為HDLC數(shù)據(jù)幀模式之間的轉(zhuǎn)換。
工作在所述UART數(shù)據(jù)幀的直通轉(zhuǎn)發(fā)模式時,F(xiàn)PGA通過內(nèi)部邏輯直接將對應(yīng)的UART信號線相連,實(shí)現(xiàn)直通轉(zhuǎn)發(fā)。
工作在轉(zhuǎn)發(fā)為HDLC數(shù)據(jù)幀模式時,數(shù)據(jù)從UART接口輸入到HDLC接口輸出,或者數(shù)據(jù)從HDLC接口輸入到UART接口輸出。
數(shù)據(jù)從UART接口輸入到HDLC接口輸出時具體包括如下步驟:
(A)UART數(shù)據(jù)幀的采集與解包模塊進(jìn)行UART數(shù)據(jù)幀的采集,按照約定的UART數(shù)據(jù)幀結(jié)構(gòu)解包數(shù)據(jù),完成對數(shù)據(jù)幀正確性的校驗(yàn),并存入模塊內(nèi)構(gòu)的FIFO緩存中;
(B)UART數(shù)據(jù)幀轉(zhuǎn)換為HDLC數(shù)據(jù)幀的校驗(yàn)處理模塊將步驟(A)得到的解包數(shù)據(jù)轉(zhuǎn)化為HDLC數(shù)據(jù)幀格式,并嵌入CCITT-16校驗(yàn)信息;
(C)HDLC數(shù)據(jù)幀編碼輸出模塊按照設(shè)置的時鐘配置方式(使用內(nèi)部生成時鐘或外部時鐘)發(fā)送步驟(B)中得到的HDLC數(shù)據(jù)幀。
數(shù)據(jù)從HDLC接口輸入到UART接口輸出時具體包括如下步驟:
(a)HDLC數(shù)據(jù)幀的采集與解包模塊按照設(shè)置的時鐘配置方式(使用內(nèi)部生成時鐘或外部時鐘)采集HDLC數(shù)據(jù),根據(jù)CCITT-16校驗(yàn)方式校驗(yàn)數(shù)據(jù)幀的正確性,并存入模塊內(nèi)構(gòu)的FIFO緩存中;
(b)HDLC數(shù)據(jù)幀轉(zhuǎn)換為UART數(shù)據(jù)幀的校驗(yàn)處理模塊將步驟(a)得到的HDLC數(shù)據(jù)按照約定的UART數(shù)據(jù)幀結(jié)構(gòu)重新構(gòu)建數(shù)據(jù)幀,并嵌入校驗(yàn)信息;
(c)UART數(shù)據(jù)幀編碼輸出模塊按照約定的波特率、數(shù)據(jù)位、停止位和校驗(yàn)位設(shè)置,發(fā)送步驟(b)得到的UART數(shù)據(jù)幀。
圖2所示為采用本發(fā)明設(shè)計(jì)的某通信協(xié)議轉(zhuǎn)換控制板卡的組成示意圖。圖中采用了本發(fā)明的方法實(shí)現(xiàn)了2路HDLC-UART通信協(xié)議轉(zhuǎn)換或4路UART通信直通傳輸。該通信協(xié)議轉(zhuǎn)換控制卡可用于實(shí)現(xiàn)同時存在HDLC和UART通信協(xié)議的大型系統(tǒng)中的通信互聯(lián)。
本發(fā)明采用硬件描述語言在FPGA上實(shí)現(xiàn)多路HDLC-UART通信協(xié)議轉(zhuǎn)換控制器,如實(shí)施例所描述,本發(fā)明能夠靈活地定制實(shí)現(xiàn)多路HDLC-UART通信協(xié)議轉(zhuǎn)換控制器的特性功能,能夠?qū)νǖ罃?shù)量進(jìn)行靈活擴(kuò)展,提高了系統(tǒng)設(shè)計(jì)的靈活性和設(shè)計(jì)效率,解決了同時存在這兩種通信協(xié)議并需要實(shí)現(xiàn)通信互聯(lián)的大型系統(tǒng)中缺乏方便有效的協(xié)議轉(zhuǎn)發(fā)互聯(lián)芯片的現(xiàn)狀,具備較高的實(shí)際應(yīng)用價值。
以上僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出:對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。