基于FPGA的PROFIBUS-DP集線器設(shè)計(jì)
4.2 窮舉法判斷波特率
由于DP的數(shù)據(jù)傳輸波特率為9.6 kbps~12 Mbps中有限的10種。因此,對(duì)于可靠性要求較高的DP傳輸,可以采用窮舉法來(lái)檢測(cè)傳輸?shù)牟ㄌ芈?。窮舉法即逐個(gè)代入法,方法是先假設(shè)一個(gè)特定的速率,然后檢驗(yàn)SDl/SD2/SD3/SD4的值是否為0X10、0XA2、0X68、0XDC。在實(shí)際檢測(cè)中,若檢測(cè)到SDl、SD2、SD3、SD4中的任意一個(gè),即認(rèn)為1次檢驗(yàn)完成。這樣,連續(xù)完成5次便認(rèn)為傳輸速率符合該波特率。如果不能解析出相應(yīng)的數(shù)值,則換下一個(gè)速率,直到可以解析為止,圖2所示是窮舉法波特率檢測(cè)流程圖。本文引用地址:http://m.butianyuan.cn/article/180727.htm
該方法的優(yōu)勢(shì)是可以準(zhǔn)確而且可靠地檢測(cè)出波特率,從而明確幀的結(jié)束位置。但是,缺點(diǎn)是幀結(jié)構(gòu)解析算法比較復(fù)雜,同時(shí)要占用FPGA比較多的資源。但無(wú)論如何,該方法在實(shí)際中的應(yīng)用還是比較多的。
5 實(shí)現(xiàn)過(guò)程
本文以8路DP―HUB為例,其默認(rèn)狀態(tài)為所有通道均處于接收狀態(tài)。當(dāng)某一通道有數(shù)據(jù)傳輸時(shí),可將接收到的數(shù)據(jù)按位無(wú)差別的發(fā)送到其他7個(gè)通道。而當(dāng)檢測(cè)到幀結(jié)束后,則將所有通道轉(zhuǎn)為接收狀態(tài),以等待新幀的到來(lái)。本模塊的功能:一是波特率檢測(cè),二是數(shù)據(jù)轉(zhuǎn)發(fā)。由于DP協(xié)議為主從通訊方式,因此,從應(yīng)用層就可以保障不會(huì)產(chǎn)生數(shù)據(jù)碰撞,而DP協(xié)議同時(shí)也有嚴(yán)格的響應(yīng)時(shí)間要求,因而只能以按位轉(zhuǎn)發(fā)的方式進(jìn)行轉(zhuǎn)發(fā)。圖3所示是系統(tǒng)狀態(tài)機(jī)轉(zhuǎn)換圖。
6 結(jié)束語(yǔ)
通過(guò)本文的方法可以解決PROFIBUS―DP在應(yīng)用中出現(xiàn)的故障隔離問(wèn)題。因此,將線性拓?fù)浣Y(jié)構(gòu)變?yōu)樾切位驑?shù)形結(jié)構(gòu)具有一定的實(shí)用價(jià)值。
評(píng)論