本發(fā)明涉及通信技術(shù)領(lǐng)域和軌道交通領(lǐng)域,尤其涉及一種基于FPGA的HDLC收發(fā)控制器。
背景技術(shù):
高級數(shù)據(jù)鏈路控制(High-Level Data Control,以下簡稱:HDLC)是一種同步數(shù)據(jù)傳輸、面向比特的數(shù)據(jù)鏈路層協(xié)議,具有差錯檢測功能強(qiáng)大、高效和同步傳輸?shù)奶攸c,目前HDLC協(xié)議已成為是通信領(lǐng)域中應(yīng)用最廣泛的協(xié)議之一。HDLC收發(fā)控制器完成了HDLC幀的編碼和解碼功能,負(fù)責(zé)HDLC協(xié)議幀數(shù)據(jù)的發(fā)送和接收。
現(xiàn)有的HDLC收發(fā)控制器主要是通過使用HDLC專用芯片和軟件編程的方式來實現(xiàn)。HDLC專用芯片有很多資源使用不上,造成了資源浪費,而且在電路設(shè)計時不得不考慮其復(fù)雜的布局布線,此外,HDLC專用芯片升級速度太快,通用性差。軟件編程實現(xiàn)方式是通過處理器的應(yīng)用程序?qū)崿F(xiàn)HDLC收發(fā)控制,但是使用該方法會占用處理器的資源從而降低處理器的執(zhí)行速度,其次不易預(yù)測信號的時延和同步性,針對不同時序的處理器,需要重新修改程序和調(diào)試。
技術(shù)實現(xiàn)要素:
本發(fā)明提供一種基于FPGA的HDLC收發(fā)控制器,可兼容不同時序的處理器進(jìn)行HDLC幀收發(fā)控制,兼?zhèn)滠浖幊毯虷DLC專用芯片的優(yōu)點,不占用處理器的資源,通用性好。
本發(fā)明提供的基于FPGA的HDLC收發(fā)控制器,所述HDLC收發(fā)控制器在FPGA上實現(xiàn)HDLC的收發(fā)控制功能,所述HDLC收發(fā)控制器包括:
處理器接口模塊、HDLC發(fā)送模塊和HDLC接收模塊;
所述處理器接口模塊用于:為處理器提供接口,與所述處理器進(jìn)行數(shù)據(jù) 交換,控制所述HDLC發(fā)送模塊和HDLC接收模塊,若所述處理器的處理周期小于所述HDLC收發(fā)控制器的處理周期,在所述處理器執(zhí)行完一次讀/寫操作后所述處理器接口模塊即回歸空閑狀態(tài),若所述處理器的處理周期大于或等于所述HDLC收發(fā)控制器的處理周期,在所述處理器執(zhí)行一次讀/寫操作時所述處理器接口模塊進(jìn)入寫等待狀態(tài),直至所述讀/寫操作結(jié)束才回歸空閑狀態(tài);
所述HDLC發(fā)送模塊用于:接收所述處理器寫入的數(shù)據(jù)并編碼成HDLC幀,向與所述處理器通信的裝置發(fā)送編碼后的HDLC幀;
所述HDLC接收模塊用于:接收與所述處理器通信的裝置發(fā)送的HDLC幀并進(jìn)行解碼,存儲解碼后的數(shù)據(jù),并向所述處理器發(fā)送中斷信號以使所述處理器讀取所述解碼后的數(shù)據(jù)。
進(jìn)一步地,所述HDLC發(fā)送模塊包括:
HDLC發(fā)送狀態(tài)寄存器,用于標(biāo)識所述HDLC發(fā)送模塊的狀態(tài);
第一數(shù)據(jù)緩存器,用于接收并存儲所述處理器寫入的數(shù)據(jù);
校驗碼生成單元,用于將所述第一數(shù)據(jù)緩存器中存儲的數(shù)據(jù)生成循環(huán)冗余檢查CRC-16校驗碼;
時鐘同步單元,用于對所述校驗碼進(jìn)行時鐘同步;
數(shù)據(jù)插0單元,用于對時鐘同步后的校驗碼進(jìn)行并/串轉(zhuǎn)換和插0處理;
標(biāo)志位插入單元,用于對進(jìn)行并/串轉(zhuǎn)換和插0操作后的數(shù)據(jù)插上幀頭幀尾,得到編碼后的HDLC幀;
發(fā)送單元,用于向與所述處理器通信的裝置發(fā)送編碼后的HDLC幀。
進(jìn)一步地,所述HDLC接收模塊包括:
接收單元,用于接收與所述處理器通信的裝置發(fā)送的HDLC幀;
幀識別單元,用于對接收到的HDLC幀進(jìn)行幀識別并去掉幀頭幀尾;
去除零碼單元,用于對幀識別后的HDLC幀數(shù)據(jù)進(jìn)行去除零碼處理和串/并轉(zhuǎn)換;
時鐘同步單元,用于對去除零碼處理和串/并轉(zhuǎn)換后的數(shù)據(jù)進(jìn)行時鐘同步;
校驗單元,用于對時鐘同步后的數(shù)據(jù)進(jìn)行CRC校驗;
第二數(shù)據(jù)緩存器,用于存儲進(jìn)行CRC校驗后的數(shù)據(jù),并在滿足預(yù)設(shè)條件 時向所述處理器發(fā)送中斷信號以使所述處理器讀取所述解碼后的數(shù)據(jù);
HDLC接收狀態(tài)寄存器,用于標(biāo)識所述HDLC接收模塊的狀態(tài)。
進(jìn)一步地,所述處理器接口模塊包括:地址線、數(shù)據(jù)線、片選信號、寫信號、讀信號和中斷信號。
本發(fā)明提供的基于FPGA的HDLC收發(fā)控制器,通過處理器接口模塊的特殊處理,可兼容不同時序的處理器進(jìn)行HDLC幀收發(fā)控制,具備軟件編程和HDLC專用芯片的優(yōu)點,由于HDLC收發(fā)控制器是通過FPGA實現(xiàn)的,因此不占用處理器的資源,且可以在不同型號的FPGA芯片移植代碼,從而能夠適應(yīng)在不同場景的HDLC幀收發(fā)控制,通用性好。
附圖說明
為了更清楚地說明本發(fā)明或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明基于FPGA的HDLC收發(fā)控制器實施例一的結(jié)構(gòu)示意圖;
圖2為本發(fā)明基于FPGA的HDLC收發(fā)控制器實施例一中處理器接口模塊的工作狀態(tài)示意圖;
圖3為本發(fā)明基于FPGA的HDLC收發(fā)控制器實施例二的結(jié)構(gòu)示意圖;
圖4為本發(fā)明硬件系統(tǒng)結(jié)構(gòu)示意圖。
具體實施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明中的附圖,對本發(fā)明中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明提供一種基于FPGA的HDLC收發(fā)控制器,通過FPGA實現(xiàn)HDLC幀收發(fā)控制功能。對不同工作時序的處理器能夠很好地適應(yīng),不需要修改FPGA代碼就可直接使用,作為一獨立硬件模塊,不存在占用處理器資源的 情況,且硬件電路設(shè)計基本不用更改,可以在不同型號的FPGA芯片移植代碼,能夠適應(yīng)不同場景的HDLC幀收發(fā)控制,通用性好,同時具備軟件編程和HDLC專用芯片的優(yōu)點。下面結(jié)合附圖詳細(xì)進(jìn)行說明。
圖1為本發(fā)明基于FPGA的HDLC收發(fā)控制器實施例一的結(jié)構(gòu)示意圖,如圖1所示,本實施例的HDLC收發(fā)控制器可以包括:處理器接口模塊10、HDLC發(fā)送模塊11和HDLC接收模塊12,其中,處理器接口模塊10用于:為處理器提供接口,與處理器進(jìn)行數(shù)據(jù)交換,控制HDLC發(fā)送模塊11和HDLC接收模塊12,圖2為本發(fā)明基于FPGA的HDLC收發(fā)控制器實施例一中處理器接口模塊的工作狀態(tài)示意圖,圖2中以HDLC收發(fā)控制器的處理周期為8個時鐘周期為例,如圖2所示,若處理器的處理周期小于HDLC收發(fā)控制器的處理周期,在處理器執(zhí)行完一次讀/寫操作后處理器接口模塊10即回歸空閑狀態(tài);若處理器的處理周期大于或等于HDLC收發(fā)控制器的處理周期,在處理器執(zhí)行一次讀/寫操作時處理器接口模塊10進(jìn)入寫等待狀態(tài),直至讀/寫操作結(jié)束才回歸空閑狀態(tài),這樣做保證了處理器讀/寫HDLC收發(fā)控制器的唯一、準(zhǔn)確。如此以來,對于不同時序的處理器,本發(fā)明的HDLC收發(fā)控制器都可以正常工作,因此可兼容不同時序的處理器進(jìn)行HDLC幀收發(fā)控制。
HDLC發(fā)送模塊11用于:接收處理器寫入的數(shù)據(jù)并編碼成HDLC幀,向與處理器通信的裝置發(fā)送編碼后的HDLC幀。
具體地,當(dāng)處理器需要向HDLC收發(fā)控制器發(fā)送數(shù)據(jù)時,通過讀HDLC發(fā)送模塊11以判斷HDLC發(fā)送模塊的狀態(tài),判斷其是否空閑,在判斷HDLC發(fā)送模塊11空閑時,處理器可發(fā)送數(shù)據(jù)。
HDLC接收模塊12用于:接收與處理器通信的裝置發(fā)送的HDLC幀并進(jìn)行解碼,存儲解碼后的數(shù)據(jù),并向處理器發(fā)送中斷信號以使處理器讀取解碼后的數(shù)據(jù)。
具體地,當(dāng)HDLC接收模塊有供處理器讀取的數(shù)據(jù)時,就會向處理器發(fā)出中斷信號,然后處理器通過讀HDLC接收模塊12以判斷HDLC接收模塊的狀態(tài),確定HDLC接收模塊有多少數(shù)據(jù)可以讀取,最后讀取該數(shù)據(jù)。
本實施例提供的基于FPGA的HDLC收發(fā)控制器,通過處理器接口模塊的特殊處理,可兼容不同時序的處理器進(jìn)行HDLC幀收發(fā)控制,具備軟件編程和HDLC專用芯片的優(yōu)點,由于HDLC收發(fā)控制器是通過FPGA實現(xiàn)的, 因此不占用處理器的資源,且可以在不同型號的FPGA芯片移植代碼,從而能夠適應(yīng)在不同場景的HDLC幀收發(fā)控制,通用性好。
圖3為本發(fā)明基于FPGA的HDLC收發(fā)控制器實施例二的結(jié)構(gòu)示意圖,如圖3所示,本實施例在圖1所示實施例的基礎(chǔ)上,HDLC發(fā)送模塊11具體可以包括:HDLC發(fā)送狀態(tài)寄存器110,用于標(biāo)識HDLC發(fā)送模塊的狀態(tài)。第一數(shù)據(jù)緩存器111,用于接收并存儲處理器寫入的數(shù)據(jù)。校驗碼生成單元112,用于將第一數(shù)據(jù)緩存器中存儲的數(shù)據(jù)生成循環(huán)冗余檢查CRC-16校驗碼。時鐘同步單元113,用于對校驗碼進(jìn)行時鐘同步。數(shù)據(jù)插0單元114,用于對時鐘同步后的校驗碼進(jìn)行并/串轉(zhuǎn)換和插0處理。標(biāo)志位插入單元115,用于對進(jìn)行并/串轉(zhuǎn)換和插0操作后的數(shù)據(jù)插上幀頭幀尾,得到編碼后的HDLC幀。發(fā)送單元116,用于向與處理器通信的裝置發(fā)送編碼后的HDLC幀。
HDLC接收模塊12可以包括:接收單元120,用于接收與處理器通信的裝置發(fā)送的HDLC幀。幀識別單元121,用于對接收到的HDLC幀進(jìn)行幀識別。去除零碼單元122,用于對幀識別后的HDLC幀進(jìn)行去除零碼處理和串/并轉(zhuǎn)換。時鐘同步單元123,用于對去除零碼處理和串/并轉(zhuǎn)換后的數(shù)據(jù)進(jìn)行時鐘同步。校驗單元124,用于對時鐘同步后的數(shù)據(jù)進(jìn)行CRC校驗。第二數(shù)據(jù)緩存器125,用于存儲進(jìn)行CRC校驗后的數(shù)據(jù),并在滿足預(yù)設(shè)條件時向處理器發(fā)送中斷信號。HDLC接收狀態(tài)寄存器126,用于標(biāo)識HDLC接收模塊的狀態(tài)。
其中,具體地,處理器接口模塊10包括:地址線、數(shù)據(jù)線、片選信號、寫信號、讀信號和中斷信號。
本實施例提供的基于FPGA的HDLC收發(fā)控制器,通過處理器接口模塊的特殊處理,可兼容不同時序的處理器進(jìn)行HDLC幀收發(fā)控制,具備軟件編程和HDLC專用芯片的優(yōu)點,由于HDLC收發(fā)控制器是通過FPGA實現(xiàn)的,因此不占用處理器的資源,且可以在不同型號的FPGA芯片移植代碼,從而能夠適應(yīng)在不同場景的HDLC幀收發(fā)控制,通用性好。
下面采用一個具體的實施例來詳細(xì)說明本發(fā)明提供的基于FPGA的HDLC收發(fā)控制器的工作過程。
本實施例中采用AT91處理器作為系統(tǒng)的CPU,AT91處理器的讀寫測試程序使用C語言編程,控制數(shù)據(jù)的發(fā)送與接收,使用VHDL語言實現(xiàn)HDLC 收發(fā)控制器,下載到FPGA芯片,實現(xiàn)HDLC幀收發(fā)控制。圖4為本發(fā)明硬件系統(tǒng)結(jié)構(gòu)示意圖,如圖4所示。在FPGA內(nèi)部把HDLC發(fā)送模塊和HDLC接收模塊相連接,AT91處理器通過預(yù)留的地址總線、數(shù)據(jù)總線和I/O接口訪問FPGA,應(yīng)用層測試HDLC收發(fā)控制器的各項功能。測試過程如下:
AT91處理器通過讀HDLC發(fā)送模塊11中的HDLC發(fā)送狀態(tài)寄存器以判斷HDLC發(fā)送模塊11的狀態(tài),在判斷HDLC發(fā)送模塊11空閑時,向FPGA寫數(shù)據(jù),F(xiàn)PGA的HDLC收發(fā)控制器把AT91處理器寫入的數(shù)據(jù)編碼成HDLC幀,HDLC接收模塊12接收到該幀后進(jìn)行解碼,并存儲解碼后的數(shù)據(jù),然后向AT91處理器發(fā)送中斷信號,收到中斷信號后AT91處理器對HDLC接收狀態(tài)寄存器發(fā)起讀操作判斷HDLC接收模塊12狀態(tài)并讀取HDLC接收模塊12的數(shù)據(jù)。最后AT91處理器會把接收到的數(shù)據(jù)與發(fā)送的數(shù)據(jù)進(jìn)行比較,以確定數(shù)據(jù)是否錯幀丟幀。調(diào)試成功后,在FPGA內(nèi)部把HDLC發(fā)送模塊和HDLC接收模塊斷開,就可以正常使用了。
本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述各方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成。前述的程序可以存儲于計算機(jī)可讀取存儲介質(zhì)中。該程序在執(zhí)行時,執(zhí)行包括上述各方法實施例的步驟;而前述的存儲介質(zhì)包括:ROM、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
最后應(yīng)說明的是:以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的范圍。