基于FPGA的PROFIBUS-DP集線器設計
SD3的數據域長度可變,常用于SRD(發送數據,且要求回復數據)服務,格式為:
SD4是令牌幀,格式如下:
SC為短應答,格式為:
在PROFIBUS―DP協議中,RS485和光纖通常使用UART編碼格式,而在UART編碼中,每個字符由一個UART結構的11位構成,具體如下:
其中,Start=0;Parity=偶校驗位;Stop=1
為了保證數據的準確傳輸,必須知道起始位和結束位。判斷起始和結束的條件是要知道DP的傳輸速率。
3 DP數據轉發方式比較
DP HUB的數據轉換方式大體可分為兩種,即不檢驗幀結束轉發和檢驗幀結束轉發。
3.1 不檢驗幀結束轉發
不檢驗幀結束轉發是當一路485檢測到信號線上有低電平信號時(DP協議定義信號線上閑時為高電平),由FPGA將其余七路485設置成發送狀態,而把一路進來的低電平脈沖信號轉發給其余七路。低電平脈沖結束后,FPGA再將其余七路恢復成接收狀態,以等待下一個低脈沖的到來。
該方法的優點是實現簡單,缺點是當HUB的主站給從站發送數據時,其余路端如果進來低電平干擾且恰好遇到主站485接收的是高電平信號,則系統就會誤認為主站發送數據結束而將其變為從站。然后將有低電平干擾的從站變為主站,將低電平干擾當作正常數據向其他從站轉發。
3.2 檢驗幀結束轉發
檢驗幀結束式轉發即一路485檢測到信號到來時,由FPGA將其余七路485設置成發送狀態,并按位將其轉發。它采用一定方法判斷幀的結束位,并當判斷這個幀結束時,由FPGA將七路485重新設置成接收狀態,以等待下一個幀的到來。
該方式的優點是數據傳輸準確率高,但是也存在著系統資源占用較多的缺點。事實上,考慮到DP通信的安全性和可靠性,還是先檢測波特率后按位傳輸較好。下文將介紹DP―HUB是如何基于判斷幀結束這種方法來實現數據轉發的。
4 幀結束檢測
幀結束的檢測理論上可以分為碼元寬度檢測法和窮舉法判斷波特率兩種方法。
4.1 碼元寬度檢測法
本方法檢測的基本思想是找出13個脈沖中長度最小的位寬,該位寬即為碼元寬度,因為UART編碼和傳輸的方式使得在一個字節包括11
個編碼位加上其前后2位共13個位,其中一定有1位碼元存在。這個碼元的寬度可用nT表示,其中T為時鐘周期,n為時鐘周期的個數。然后可以檢驗數據的高電平持續長度,如果這個數據有一段高電平的長度大于16nT,則認為該幀結束。這樣設計的依據是:一個幀的最短長度為一個字節,一個字節是由11個碼元組成。通常為了保證結束判斷準確而需要多取幾位,這里將其定為16個碼元。同時由于DP協議中規定報文幀中間的各個字符沒有空閑靜止狀態,而且數據通信上要有33個碼元的空閑時間來做為同步表示(SYN)。這樣,取16個碼元長度既能判斷出幀的結束,而又不會把下一次通信中的高電平信號誤認為是上一個幀的結束。
這種方法的優點是算法簡單,不需要解析幀的結構。缺點是檢測碼元的時鐘頻率要求較高(為了準確的測量碼元的寬度),因而功耗較大。
評論