基于FPGA的PROFIBUS-DP集線器設計
4.2 窮舉法判斷波特率
由于DP的數據傳輸波特率為9.6 kbps~12 Mbps中有限的10種。因此,對于可靠性要求較高的DP傳輸,可以采用窮舉法來檢測傳輸的波特率。窮舉法即逐個代入法,方法是先假設一個特定的速率,然后檢驗SDl/SD2/SD3/SD4的值是否為0X10、0XA2、0X68、0XDC。在實際檢測中,若檢測到SDl、SD2、SD3、SD4中的任意一個,即認為1次檢驗完成。這樣,連續完成5次便認為傳輸速率符合該波特率。如果不能解析出相應的數值,則換下一個速率,直到可以解析為止,圖2所示是窮舉法波特率檢測流程圖。本文引用地址:http://www.104case.com/article/180727.htm
該方法的優勢是可以準確而且可靠地檢測出波特率,從而明確幀的結束位置。但是,缺點是幀結構解析算法比較復雜,同時要占用FPGA比較多的資源。但無論如何,該方法在實際中的應用還是比較多的。
5 實現過程
本文以8路DP―HUB為例,其默認狀態為所有通道均處于接收狀態。當某一通道有數據傳輸時,可將接收到的數據按位無差別的發送到其他7個通道。而當檢測到幀結束后,則將所有通道轉為接收狀態,以等待新幀的到來。本模塊的功能:一是波特率檢測,二是數據轉發。由于DP協議為主從通訊方式,因此,從應用層就可以保障不會產生數據碰撞,而DP協議同時也有嚴格的響應時間要求,因而只能以按位轉發的方式進行轉發。圖3所示是系統狀態機轉換圖。
6 結束語
通過本文的方法可以解決PROFIBUS―DP在應用中出現的故障隔離問題。因此,將線性拓撲結構變為星形或樹形結構具有一定的實用價值。
評論