一種基于FPGA+ARM架構HDLC協(xié)議控制器設計
本文引用地址:http://dyxdggzs.com/article/255887.htm

在發(fā)送端,接收到ARM啟動(dòng)發(fā)送指令后,發(fā)送相應個(gè)數幀頭0x7E,然后將數據從發(fā)送FIFO中取出,進(jìn)行并串轉換,在根據設置的時(shí)鐘TCLK的下降沿,逐位發(fā)送數據到Tx線(xiàn)路上,并且在連續發(fā)送了5個(gè)比特“1”后,自動(dòng)插入比特“0”,發(fā)送結束后發(fā)送相應個(gè)數幀尾0x7E,結束該次發(fā)送。發(fā)送幀狀態(tài)轉移圖如圖4所示。

2.3 HDLC數據處理單元
HDLC數據處理單元主要完成信息的幀的CRC校驗和打包解包任務(wù),其處理芯片采用意法半導體的STM32F103系列ARM芯片,該芯片具有開(kāi)發(fā)簡(jiǎn)單靈活,成本較低的優(yōu)勢。數據處理單元對數據的處理同樣包括接收和發(fā)送兩部分,以接收為例,具體工作流程圖如圖5所示。
當進(jìn)入接收中斷進(jìn)程時(shí),首先讀空接收FIFO,其中最后兩次讀出的數據為該幀信息的CRC校驗碼,利用該校驗碼進(jìn)行CRC校驗,校驗采用CRC-16-CCITT標準,生成r取值為16,其生成多項式為:C(x)=x16+x12+x2+1傳統CRC校驗是對消息逐位處理,對于ARM來(lái)說(shuō),這樣效率是很低的。為了提高時(shí)間效率,通常的思想是以空間換時(shí)間??紤]到內循環(huán)只與當前的消息字節和crc_reg的低字節有關(guān),針對crc_reg低字節建立數表進(jìn)行查詢(xún)相應的CRC校驗碼,最終循環(huán)完畢如果沒(méi)有差錯發(fā)生則結果應為0。
發(fā)送單元與接收單元類(lèi)似,為其逆過(guò)程,首先將信息按約定幀格式打包,然后進(jìn)行CRC校驗,將校驗碼放入信息幀的最后2個(gè)字節,并將該信息幀通過(guò)數據總線(xiàn)存入FPGA的發(fā)送FIFO中,最后寫(xiě)入發(fā)送標志字,啟動(dòng)FPGA發(fā)送傳輸控制邏輯。
3 驗證及結果
為完成設計,首先采用ModelSim進(jìn)行仿真驗證,如圖6所示通過(guò)激勵文件生成ARM與FPCA的讀寫(xiě)時(shí)序,給出符合HDLC幀格式的一組數據寫(xiě)入FPGA發(fā)送FIFO,并啟動(dòng)發(fā)送,在激勵文件中將RX/RCLK與TX/TCLK短接,形成回環(huán),FPGA根據協(xié)議控制器接收到數據,并將數據存入接收FIFO,完成驗證。其邏輯時(shí)序滿(mǎn)足HDLC協(xié)議幀格式和通信時(shí)序要求。

最后按照設計要求將設計好的HDLC通信協(xié)議控制器加載至FPGA與ARM上,并與串口通信卡BST23109進(jìn)行回環(huán)測試,該卡能夠實(shí)現串口同步模式,通信滿(mǎn)足HDLC協(xié)議要求。試驗結果表明在5 m通信距離內,波特率可達2 Mb/s,誤碼率為10-8。
4 結論
文中針對飛行模擬裝置中HDLC協(xié)議的應用需求開(kāi)展了HDLC協(xié)議控制器的設計,文中首先介紹了HDLC協(xié)議的相關(guān)內容,然后重點(diǎn)介紹了HDLC協(xié)議控制器軟硬件實(shí)現,詳細給出于HDLC協(xié)議控制器的沒(méi)計實(shí)現過(guò)程。通過(guò)仿真和實(shí)測試驗表明在5m通信距離內,波特率可達2Mb/s,誤碼率為10-8。在該飛行模擬裝置交付使用過(guò)程中,該控制器功能完整,能夠很好地滿(mǎn)足各項指標的技術(shù)要求。
fpga相關(guān)文章:fpga是什么
塵埃粒子計數器相關(guān)文章:塵埃粒子計數器原理
評論