基于FPGA的PROFIBUS-DP總線光電收發器設計
3.2 波特率檢測邏輯
首先應對由數據傳輸方向檢測功能塊選擇輸出的數據進行濾波。不同的波特率分別用相應的時鐘對濾波后的數據進行采樣,若采到連續16個“1”,則說明總線目前處于空閑狀態,下一個到來的低電平既是數據字節的起始位,之后即可開始接收數據,在一個字節(8 bits)的數據接收完畢后,即可判斷接收到的數據是否為關鍵字(關鍵字為PROFIBUS-DP總線協議數據幀的開始定界符SDx)。如果某一波特率連續找到3次關鍵字,則將其它波特率連續找到關鍵字的次數清零。并將原來已經確定的波特率位清零。而當該波特率連續找到6次關鍵字時,則代表找到了新的波特率,此時可將剛找到的波特率確定為當前系統通訊速率,并將相應標志位置1。
3.3 數據交換邏輯
數據傳輸方向和波特率確定之后,就可以進行電端和光端的數據交換了。當數據傳輸方向為電端到光端時,電端RS-485收發器處于接收狀態,數據由電端經光發送器發送到光端線線路上;當數據傳輸方向為光端到電端時,在起始位數據“0”發送完畢之后,即可將電端RS-485收發器改為發送狀態,在經過10個當前通訊波特率的bit時間后,再將RS-485收發器改為接收狀態,并等待接收新的數據。圖5所示為數據交換流程圖。本文引用地址:http://www.104case.com/article/156953.htm
4 結束語
該設計的創新點在于其采用FPGA硬件實現光電信號之間的轉換,可以自適應波特率變化,并自動檢測波特率變化。能支持PROFIBUS-DP協議規定的所有波特率,且轉發數據無錯包。與一般的RS-485中繼設備相比,不但在傳輸距離和總線的負載能力上有很大提高。而且在抗干擾和通訊的穩定性方面也有突出優勢,可用于各種的PROFIBUS-DP總線工業現場。
評論