用FPGA+DSP實(shí)現HDLC(高級數據鏈路控制)功能
interface模塊的主要功能是:DSP通過(guò)數據、地址總線(xiàn)和讀寫(xiě)信號向FPGA讀寫(xiě)并行數據。
在本例中數據總線(xiàn)的寬度取決于所使用的DSP的數據位。由于目前DSP處理器的多為64位或32位,而完成數據交互使用8位就夠了,因此這里采用8位的數據總線(xiàn)cpu_data[7..0]。地址總線(xiàn)包括譯碼選通發(fā)送FIFO和接收FIFO的寄存器地址,命令寄存器和狀態(tài)寄存器。
對于DSP來(lái)說(shuō),FPGA可以看成是一個(gè)普通芯片,通過(guò)片選CS/、讀寫(xiě)信號RD/和WR/,就可以選中FPGA并對其進(jìn)行讀寫(xiě)操作。
當FPGA需要向DSP傳遞信息時(shí),中斷信號輸出端interrupt/ 變?yōu)榈碗娖?,DSP響應后可到FPGA中的狀態(tài)寄存器去讀取詳細的中斷信息并做出相應的處理。
FPGA數據發(fā)送模塊HDLC_Send
HDLC_Send模塊的主要功能是:對HDLC產(chǎn)生內部數據發(fā)送時(shí)鐘tx_clk;鎖存DSP寫(xiě)入FIFO的發(fā)送數據并按指定時(shí)序啟動(dòng)發(fā)送;在發(fā)送數據段前加上7E起始標志;對發(fā)送的數據及CRC計算結果進(jìn)行插零操作并附上7E結束標志把結果輸出(見(jiàn)圖1)。
txhdlc模塊由發(fā)送數據子模塊、標志數據插零子模塊及“7E”發(fā)送等模塊組成。
HDLC的數據發(fā)送時(shí)鐘tx_clk由外部輸入時(shí)鐘分頻得到,能以高于比特發(fā)送的速度執行對內部操作。
待發(fā)送數據是由外DSP通過(guò)interface模塊寫(xiě)入指定地址的緩沖存儲器的。在HDLC中,可以選用的緩沖存儲器類(lèi)型有FIFO存儲器、DPRAM存儲器、移位寄存器等。在本設計中,發(fā)送數據的存儲使用的FIFO存儲器。使用這種寄存器的優(yōu)點(diǎn)是:只對一個(gè)FIFO入口地址進(jìn)行操作,簡(jiǎn)化FPGA設計。DSP向FPGA寫(xiě)完數據后,向狀態(tài)寄存器寫(xiě)標志,表示數據發(fā)完可以發(fā)送,
發(fā)送的數據CRC的計算結果附在數據后面,再經(jīng)插零后附上7E標志就可輸出。發(fā)送數據子模塊監視著(zhù)每一個(gè)串行移出的數據,當發(fā)現數據流中出現5個(gè)連“1”時(shí),就輸出控制信號1f_detect/ 暫停數據移位,此時(shí)子模塊zero_insert向數據流插入一個(gè)0比特。數據發(fā)送完畢后,“7E”發(fā)送子模塊發(fā)出7E作為結束標志,同時(shí)清除標志位。
FGPA數據接收模塊HDLC_Receiver
HDLC_Receiver模塊的主要功能是:接收HDLC數據和時(shí)鐘,并用時(shí)鐘采樣數據;在接收的數據流中檢測有無(wú)“7E”及本機地址標志,如果有則接收數據,當檢測到數據流中有“1F”信號,并后一個(gè)數據是“0”時(shí),對數據進(jìn)行“刪零”操作;對經(jīng)“刪零”后的數據寫(xiě)入收FIFO;收到尾“7E”后,置收標志位,向interface模塊發(fā)出rx_data_ready信號,當DSP通過(guò)中斷接收到結束標志后,讀入數據,清標志位,檢查CRC校驗值是否正確。
rxhdlc模塊由接收數據子模塊rx_data、標志檢測子模塊7e_detector、數據刪零子模塊zero_delete等組成。對比HDLC_receive模塊和HDLC_Send模塊,雖然兩者一些子模塊的功能是相逆的,但原理類(lèi)似,不再重復說(shuō)明。在HDLC_Receiver模塊中采用了FIFO來(lái)作為HDLC接收數據緩存器,因此FPGA內部收數據和DSP讀數據通過(guò)各自的讀寫(xiě)口進(jìn)行。
FPGA中的接收超時(shí)判斷功能
當由于意外情況在總線(xiàn)上出現不完整數據時(shí),需對接收數據進(jìn)行超時(shí)判斷,已防止在收到幀頭“7E”后長(cháng)時(shí)間未收到后續數據或尾“7E”時(shí),死等數據,導致錯判,使用的策略是:當收到“7E”及本機地址后,啟動(dòng)計數器,計數時(shí)間長(cháng)于最長(cháng)幀一倍左右,如果從計時(shí)開(kāi)始到計時(shí)結束未收到“7E”則判超時(shí),重新接收數據;而如果在計時(shí)時(shí)間內收到“7E”則清零計數器,將數據存入收FIFO。
DSP軟件的內容主要包括send模塊和receive模塊和CRC校驗模塊。
DSP功能
DSP中的功能主要分為HDLC接收,HDLC發(fā)送。
DSP中的HDLC接收
DSP從FPGA接收到完成收標志后,接收數據,然后清FPGA標志位,將接收到的數據進(jìn)行CRC校驗后解幀,根據數據幀內容完成相關(guān)操作。
DSP中的HDLC發(fā)送
DSP將數據發(fā)送給FPGA,發(fā)送結束后,置FPGA發(fā)送完成標志位。DSP完成收數后還要進(jìn)行CRC校驗及解幀等操作,這就要根據具體的協(xié)議進(jìn)行。
具體實(shí)現
根據上述設計方法,已成功地實(shí)現了HDLC電路的設計。設計輸入在A(yíng)ltera公司的Quartus 8.0版本及CCS 3.0的軟件平臺上進(jìn)行。首先考慮擬設計的電路需要多少內部存儲器、工作速率多少、對外部處理器的接口有何要求等。根據這些考慮,以電路圖及DSP C語(yǔ)言結合的方法進(jìn)行設計輸入。對于時(shí)序電路,主要采用電路圖輸入的方法。
FPGA芯片選用的是Altera公司的ACEX 1K系列。該系列是Altera公司面向通信和消費類(lèi)數字產(chǎn)品推出的低功耗、高密度的高性能FPGA集成電路,具有可與ASIC相比擬的價(jià)位。DSP使用TI公司TMS320C5416,該芯片集成度高,結構簡(jiǎn)單,體積小可靠性高,價(jià)格低,可以裝入各種儀器儀表及控制裝置中,易于產(chǎn)品化。設計出的具有HDLC功能的FPGA芯片已應用于導航設備樣機的有線(xiàn)通訊鏈路中,成功實(shí)現了雙向數據通信。
結語(yǔ)
基于軟件編程與FPGA來(lái)共同實(shí)現HDLC協(xié)議,方法靈活、速度快。適合于DSP+FPGA的數字硬件平臺的接口設計,實(shí)現后可靠有效。
評論