梁嘉藝,范俊成
(浙江紡織服裝職業技術學院機電與軌道交通學院,浙江寧波)
應答器是一種用于地面向列車傳輸信息的點式設備,分為有源和無源2 種[1]。隨著高鐵建設的快速發展,應答器在列控系統中被廣泛使用。結合應答器設備現場維護的需求,應答器報文讀寫工具是現場維護必不可少的設備。本文提供一種利用基于FPGA 的解碼串口數據信號的電路單元及檢測串口數據流的方案設計,應用該設計解碼串口數據,能夠更快速、更精確,且使用簡單,方便攜帶,彌補了目前應答器讀寫裝置無法判定LEU 工況的功能缺失。
目前在用的應答器讀寫裝置主要由電源單元、信號處理單元、核心處理單元、數字處理單元,顯示單元等組成,如圖1 所示。該裝置可以對無源應答器和有源應答器進行報文的讀寫及分析,讀取的報文即時顯示在液晶屏幕上,具有讀取記錄查看功能,功耗低,具備待機休眠功能[2]。

圖1 應答器讀寫裝置組成框圖
在TCC 與LEU 之間的命令傳遞中,傳輸距離短、傳輸數據量少、傳輸頻率快,且呈現周期性,因此實際應用中最常采用異步串行通信協議,根據不同傳輸距離及可靠性需求,選擇RS232、RS422 以及RS485 等串行通信[3]。目前應答器讀寫裝置可以對現場的無源應答器及有源應答器進行報文的讀寫操作,但無法對TCC 與LEU 間的串口通信數據進行監測,即無法對串口數據進行解碼[4]。
由于每條鐵路線路使用的TCC 所屬生產廠家不盡相同,TCC 與LEU 的串口會出現多種形式(RS485、RS232 等),并且大多情況下無法獲得通信的波特率,因此在對該串口進行數據解碼時通常使用示波器反復采集正負電平變化圖像,通過肉眼觀察數據波形變化,然后猜測波特率,進而解碼數據內容。這種方法不僅效率低下、不能保證解碼的準確性,且示波器不易攜帶、截圖分析等操作繁瑣。
為解決現有方案存在的問題,提出了一種利用基于FPGA 的解碼串口數據信號的電路單元及檢測串口數據流的設計方案。應用該設計解碼串口數據,能夠更快速、更精確,且使用簡單,方便攜帶。解碼單元獨立于應答器讀寫裝置存在,與讀寫裝置之間通過USB 總線通信,通過USB 總線可以給解碼單元進行供電同時解碼單元解碼出的數據可以通過USB 總線上傳給應答器讀寫裝置,并和應答器讀寫裝置讀到的有源應答器的報文進行比對以此判斷出LEU 工況。應答器讀寫裝置與其它外部設備的關聯如圖2 所示。

圖2 應答器讀寫裝置與外部設備關聯
單片機、DSP 等嵌入式器件雖然計算能力強,但是指令周期過長,通常都在4 個時鐘周期以上,無法滿足本發明的檢測精度。因此選用每1 個時鐘周期能夠做出反應的FPGA 作為核心運算芯片。
FPGA 由于具有并行處理能力,且執行效率高,對時鐘周期反應敏銳的特點,一直被工業產品廣泛采用。利用FPGA 能夠精確檢測算出數據流的波特率,以此確保解碼的準確性。本解碼單元中FPGA 芯片采用EP1C3T144C8,該FPGA 是A1tera 公司2003 年9月份推出的,基于1.5v,O.13μm 工藝,Cyclone 是一個性價比很高的FPGA 系列。其中EPlC3T144 是Cyclone 系列中的一員,共有2910 邏輯單元,59904RAM bits,1 個PLLs,最多有104 個用戶I/O,可以說這款FPGA 的資源非常豐富,足夠滿足大型設計的需要[5]。
設計三部分電路:數據采集區域、數據輸出區域、解碼區域。為搭建上述電路,本設計選用主要器件如下:數據采集、與輸出接口均采用標準的DB9 接口。解碼區域中,選用6 個共陽極七段數碼管,用以顯示波特率;解碼區域中,采用基于FPGA 主控制電路。圖3示意了本方案三大區域布局。

圖3 硬件設計區域劃分示意
數據采集區域,三個端口,均配有按鍵,用于使能檢測波特率;數據輸出區域,使用USB 串行通信接口。數據輸出區域,配有一個按鍵,用于使能發送,將接收到的數據不斷發送給應答器讀寫裝置;解碼區域完成波特率檢測、數據接收并存儲、波特率顯示、以及發送控制等功能。
2.2.1 解碼區域的電路設計
解碼區域是以FPGA 芯片(EP1C3T144C8)作為主控制單元解碼核心部分,外圍包括了JTAG 電路、電源電路、復位電路和外圍的數碼管電路。圖4 為解碼區域的電路原理框圖。

圖4 解碼區域的電路原理框圖
電源電路采用LM1085 系列芯片為FPGA 提供穩定的電源,通過與應答器讀寫裝置通信的USB 通信口獲得DC5V,并將DC5V 轉換成DC3.3V 和DC1.5V 給FPGA 供電。復位電路采用了電源監測芯片MAX809TD,用于監測電源電路中的DC3.3V 的工況,一旦DC3.3V 的供電小于該芯片的閾值(2.8V 左右),該芯片就會輸出低電平使FPGA 復位。圖5 為電源電路(輸出DC3.3V)和復位電路的電路原理。JTAG 模式接口電路與數碼管電路為通用常規電路,在此不進行贅述。

圖5 電源電路和復位電路原理
2.2.2 輸出區域的電路設計
圖6 為FPGA 與USB 控制芯片的連接,USB 控制芯片選用Cypress 公司的CY7C68013。USB_Ready 為USB 芯片狀態標志,低電平有效;FPGA_Ready 為FPGA 芯片狀態標志,低電平有效;USB_Clk 為USB 向FPGA 傳送指令的指令時鐘,USB_Data 為USB 傳送給FPGA 的控制指令;FD[15:0]為USB 與FPGA 交互的數據。

圖6 FPGA 與USB 控制芯片的連接
2.2.3 采集區域的電路設計
采集區域均為異步串行通信,三個串行口總線形式分別為RS232、RS485 及RS422,由于本解碼單元知識接收TCC 發送給LEU 的串行數據,因此電路設計時只進行了接收電路的設計,圖7 為RS485 總線的接收電路。接收采用了ADuM1201(SO8)芯片進行隔離設計以防止外部干擾對總線的影響。通信電平轉換芯片采用了MAX485ESA(SO8),將差分信號轉換為單端信號輸入FPGA。其它兩種總線電路與RS485 總線的設計思想相同,在此不再進行贅述。

圖7 RS485 總線的接收電路
將被采集數據連接到采集區域的某一端口,以RS485 端口為例,電路板上電后,數據流通過采集區域的RS485 端口進入解碼單元。按下RS485 端口對應的按鍵,采集區域將RS485 差分信號解碼為串行數據,發送至解碼區域的FPGA。FPGA 從接收到第一個位數據開始計時,得到串行數據中每個位之間發送的間隙時間。FPGA 自動重復上述計時過程,可以得到許多組位間傳輸時間,選擇其中間隙最小的時間作為基礎參數,加以計算確定該數據流的波特率。將計算得到的波特率存儲,同時發送給數碼管顯示。當看到數碼管顯示出數據時,可以按下發送按鍵,被測數據流此時能夠發送給應答器讀寫裝置,在應答器讀寫裝置端能夠方便地看到具體數據內容,至此實現串口數據流解碼。再次按下此按鍵,停止發送數據。如需重新檢測波特率,可以在停止發送數據后,再次按下采集區域的對應端口按鍵,重新檢測。其它被檢測端口的工作過程,與上述內容相同,不再復述。圖8 所示為解碼單元的解碼方式具體實施的工作流程。

圖8 解碼單元的工作流程
由于數據流發送均在us 級別,因此檢測位時間過程在1 ms 以內可以完成,上述所有操作,理論上不足1 s 即可完成,效率遠高于使用示波器肉眼解碼。解碼單元晶振使用25 Mhz,因此對于高達115 200 bps 計算,誤差在0.4%以內,隨著波特率降低,傳輸檢測的誤差將更小,能夠滿足研發和測試的需求[6]。對應端口的檢測按鍵按下一次后,FPGA 自行迭代檢測多次后再確定波特率,因此檢測結果更接近真實波特率值。
本文指出了現階段應答器讀寫裝置存在的無法獲取TCC 與LEU 通信數據的不足,設計了基于FPGA的應答器讀寫裝置解碼單元以此解決目前應答器讀寫裝置存在的問題。本文給出了解碼單元的硬件設計以及解碼方式的具體實施流程,設計過程具體詳細。目前系統處于試驗階段并在現場進行實際運用的檢驗。通過現場反饋,其性能穩定可靠,準備進一步的測試并推廣運用。