一種基于FPGA+ARM架構(gòu)HDLC協(xié)議控制器設(shè)計(jì)
本文引用地址:http://2s4d.com/article/255887.htm
在發(fā)送端,接收到ARM啟動發(fā)送指令后,發(fā)送相應(yīng)個數(shù)幀頭0x7E,然后將數(shù)據(jù)從發(fā)送FIFO中取出,進(jìn)行并串轉(zhuǎn)換,在根據(jù)設(shè)置的時鐘TCLK的下降沿,逐位發(fā)送數(shù)據(jù)到Tx線路上,并且在連續(xù)發(fā)送了5個比特“1”后,自動插入比特“0”,發(fā)送結(jié)束后發(fā)送相應(yīng)個數(shù)幀尾0x7E,結(jié)束該次發(fā)送。發(fā)送幀狀態(tài)轉(zhuǎn)移圖如圖4所示。
2.3 HDLC數(shù)據(jù)處理單元
HDLC數(shù)據(jù)處理單元主要完成信息的幀的CRC校驗(yàn)和打包解包任務(wù),其處理芯片采用意法半導(dǎo)體的STM32F103系列ARM芯片,該芯片具有開發(fā)簡單靈活,成本較低的優(yōu)勢。數(shù)據(jù)處理單元對數(shù)據(jù)的處理同樣包括接收和發(fā)送兩部分,以接收為例,具體工作流程圖如圖5所示。
當(dāng)進(jìn)入接收中斷進(jìn)程時,首先讀空接收FIFO,其中最后兩次讀出的數(shù)據(jù)為該幀信息的CRC校驗(yàn)碼,利用該校驗(yàn)碼進(jìn)行CRC校驗(yàn),校驗(yàn)采用CRC-16-CCITT標(biāo)準(zhǔn),生成r取值為16,其生成多項(xiàng)式為:C(x)=x16+x12+x2+1傳統(tǒng)CRC校驗(yàn)是對消息逐位處理,對于ARM來說,這樣效率是很低的。為了提高時間效率,通常的思想是以空間換時間。考慮到內(nèi)循環(huán)只與當(dāng)前的消息字節(jié)和crc_reg的低字節(jié)有關(guān),針對crc_reg低字節(jié)建立數(shù)表進(jìn)行查詢相應(yīng)的CRC校驗(yàn)碼,最終循環(huán)完畢如果沒有差錯發(fā)生則結(jié)果應(yīng)為0。
發(fā)送單元與接收單元類似,為其逆過程,首先將信息按約定幀格式打包,然后進(jìn)行CRC校驗(yàn),將校驗(yàn)碼放入信息幀的最后2個字節(jié),并將該信息幀通過數(shù)據(jù)總線存入FPGA的發(fā)送FIFO中,最后寫入發(fā)送標(biāo)志字,啟動FPGA發(fā)送傳輸控制邏輯。
3 驗(yàn)證及結(jié)果
為完成設(shè)計(jì),首先采用ModelSim進(jìn)行仿真驗(yàn)證,如圖6所示通過激勵文件生成ARM與FPCA的讀寫時序,給出符合HDLC幀格式的一組數(shù)據(jù)寫入FPGA發(fā)送FIFO,并啟動發(fā)送,在激勵文件中將RX/RCLK與TX/TCLK短接,形成回環(huán),F(xiàn)PGA根據(jù)協(xié)議控制器接收到數(shù)據(jù),并將數(shù)據(jù)存入接收FIFO,完成驗(yàn)證。其邏輯時序滿足HDLC協(xié)議幀格式和通信時序要求。
最后按照設(shè)計(jì)要求將設(shè)計(jì)好的HDLC通信協(xié)議控制器加載至FPGA與ARM上,并與串口通信卡BST23109進(jìn)行回環(huán)測試,該卡能夠?qū)崿F(xiàn)串口同步模式,通信滿足HDLC協(xié)議要求。試驗(yàn)結(jié)果表明在5 m通信距離內(nèi),波特率可達(dá)2 Mb/s,誤碼率為10-8。
4 結(jié)論
文中針對飛行模擬裝置中HDLC協(xié)議的應(yīng)用需求開展了HDLC協(xié)議控制器的設(shè)計(jì),文中首先介紹了HDLC協(xié)議的相關(guān)內(nèi)容,然后重點(diǎn)介紹了HDLC協(xié)議控制器軟硬件實(shí)現(xiàn),詳細(xì)給出于HDLC協(xié)議控制器的沒計(jì)實(shí)現(xiàn)過程。通過仿真和實(shí)測試驗(yàn)表明在5m通信距離內(nèi),波特率可達(dá)2Mb/s,誤碼率為10-8。在該飛行模擬裝置交付使用過程中,該控制器功能完整,能夠很好地滿足各項(xiàng)指標(biāo)的技術(shù)要求。
fpga相關(guān)文章:fpga是什么
塵埃粒子計(jì)數(shù)器相關(guān)文章:塵埃粒子計(jì)數(shù)器原理
評論