基于DM642的實時多協(xié)議轉(zhuǎn)換器設(shè)計
在接收數(shù)據(jù)所遵從的傳輸協(xié)議未知時,先觸發(fā)軟件中斷識別協(xié)議類型,在傳輸協(xié)議已知時,直接觸發(fā)總線管理線程。任務(wù)可以被阻塞和掛起,支持動態(tài)內(nèi)存分配等API函數(shù),對以太網(wǎng)及RS 232等總線建立線程分別建立總線管理線程。各總線管理線程的流程如圖7所示,根據(jù)觸發(fā)的消息類型,建立和釋放緩沖區(qū),編解碼協(xié)議,觸發(fā)數(shù)據(jù)發(fā)送總線,監(jiān)控總線狀態(tài),協(xié)調(diào)總線發(fā)送通道的使用。在識別出傳輸協(xié)議為高優(yōu)先級協(xié)議時,總線管理線程會調(diào)用API函數(shù)提高自身優(yōu)先級,以達(dá)到搶占CPU的目的,處理完協(xié)議后會再次恢復(fù)以前的優(yōu)先級。軟件中斷優(yōu)先級低于硬件中斷,對堆棧要求小,用于低優(yōu)先級協(xié)議的幀頭識別。采用觸發(fā)跳轉(zhuǎn)至相應(yīng)處理程序的方法可以加快數(shù)據(jù)處理,保證高優(yōu)先級協(xié)議的實時性。各級線程都會盡量在等待數(shù)據(jù)或資源時跳轉(zhuǎn)至阻塞狀態(tài),以便釋放CPU。
4 結(jié)語
本設(shè)計采用以下幾個方法保證多協(xié)議轉(zhuǎn)換實時性:采用高速DSP加快數(shù)據(jù)處理速度;將協(xié)議分為高低優(yōu)先級,采用FPGA實時識別高優(yōu)先級協(xié)議,大大提高了高優(yōu)先級協(xié)議匹配速度;按地址將協(xié)議的幀描述表、數(shù)據(jù)元素描述表、數(shù)據(jù)位描述表等信息存儲與FLAsH,提高了協(xié)議信息的查找效率;使用了DSP/BIOS提供的不同類型線程,并采用觸發(fā)不同消息的方法跳轉(zhuǎn)線程,提高了數(shù)據(jù)處理效率,并保證了高優(yōu)先級協(xié)議優(yōu)先編解碼。FPGA識別協(xié)議、DM642編解碼、線程轉(zhuǎn)換所產(chǎn)生的延時均為微秒級至幾十微秒級,因此本設(shè)計在一定程度上可以保證對高優(yōu)先級協(xié)議單個數(shù)據(jù)元素的編解碼延時小于1 ms,但在支持協(xié)議的通用性上可以進(jìn)一步研究。
評論