HDLC的DSP與FPGA實現
FGPA數據接收模塊HDLC_Receiver
本文引用地址:http://www.j9360.com/article/112019.htmHDLC_Receiver模塊的主要功能是:接收HDLC數據和時鐘,并用時鐘采樣數據;在接收的數據流中檢測有無“7E”及本機地址標志,如果有則接收數據,當檢測到數據流中有“1F”信號,并后一個數據是“0”時,對數據進行“刪零”操作;對經“刪零”后的數據寫入收FIFO;收到尾“7E”后,置收標志位,向interface模塊發出rx_data_ready信號,當DSP通過中斷接收到結束標志后,讀入數據,清標志位,檢查CRC校驗值是否正確。
rxhdlc模塊由接收數據子模塊rx_data、標志檢測子模塊7e_detector、數據刪零子模塊zero_delete等組成。對比HDLC_receive模塊和HDLC_Send模塊,雖然兩者一些子模塊的功能是相逆的,但原理類似,不再重復說明。在HDLC_Receiver模塊中采用了FIFO來作為HDLC接收數據緩存器,因此FPGA內部收數據和DSP讀數據通過各自的讀寫口進行。
FPGA中的接收超時判斷功能
當由于意外情況在總線上出現不完整數據時,需對接收數據進行超時判斷,已防止在收到幀頭“7E”后長時間未收到后續數據或尾“7E”時,死等數據,導致錯判,使用的策略是:當收到“7E”及本機地址后,啟動計數器,計數時間長于最長幀一倍左右,如果從計時開始到計時結束未收到“7E”則判超時,重新接收數據;而如果在計時時間內收到“7E”則清零計數器,將數據存入收FIFO。
DSP軟件的內容主要包括send模塊和receive模塊和CRC校驗模塊。
DSP功能
DSP中的功能主要分為HDLC接收,HDLC發送。
DSP中的HDLC接收
DSP從FPGA接收到完成收標志后,接收數據,然后清FPGA標志位,將接收到的數據進行CRC校驗后解幀,根據數據幀內容完成相關操作。
DSP中的HDLC發送
DSP將數據發送給FPGA,發送結束后,置FPGA發送完成標志位。DSP完成收數后還要進行CRC校驗及解幀等操作,這就要根據具體的協議進行。
具體實現
根據上述設計方法,已成功地實現了HDLC電路的設計。設計輸入在Altera公司的Quartus 8.0版本及CCS 3.0的軟件平臺上進行。首先考慮擬設計的電路需要多少內部存儲器、工作速率多少、對外部處理器的接口有何要求等。根據這些考慮,以電路圖及DSP C語言結合的方法進行設計輸入。對于時序電路,主要采用電路圖輸入的方法。
FPGA芯片選用的是Altera公司的ACEX 1K系列。該系列是Altera公司面向通信和消費類數字產品推出的低功耗、高密度的高性能FPGA集成電路,具有可與ASIC相比擬的價位。DSP使用TI公司TMS320C5416,該芯片集成度高,結構簡單,體積小可靠性高,價格低,可以裝入各種儀器儀表及控制裝置中,易于產品化。設計出的具有HDLC功能的FPGA芯片已應用于導航設備樣機的有線通訊鏈路中,成功實現了雙向數據通信。
結語
基于軟件編程與FPGA來共同實現HDLC協議,方法靈活、速度快。適合于DSP+FPGA的數字硬件平臺的接口設計,實現后可靠有效。
參考文獻:
[1]張德民. 數據通信[M]. 北京:科學技術文獻出版社,1997
[2]ISO/IEC 3309: Information technology-Telecommunications and information exchange between systems-High-level data link control (HDLC) procedures-Frame structure, P.4. Switzerland: International Electrotechnical Commission, Jun 2002
[3]TMS320C5416 DSP design reference
[4]Altera Corporation. MAX+plus II, Version 10.0, Sep 2000
[5]Altera Corporation. ACEX 1K Programmable Logic Family Data Sheet, Altera Digital Library,Version 3,2001
評論