陳雪坤,扈宏杰
(北京航空航天大學 自動化科學與電氣工程學院,北京100191)
轉臺(包括仿真轉臺、測試轉臺及程控轉臺),是航空航天及兵器系統中的型號研制及生產標檢過程的關鍵設備,除其系統精度要求高以外,其可靠性也是極其重要的指標。 基于工控機的轉臺控制系統中,早期采用ISA(industry standard architecture,工業標準體系結構)總線,后為提高速度采用PCI(peripheral component interconnect, 外設部件互連標準)總線與外設接口,而板卡連接“金手指”易受潮濕、振動等復雜環境影響[1-2],引發連接故障,致使整個轉臺系統的可靠性下降。 針對以上問題,可采用CPCI 總線(compact PCI,緊湊型PCI)的方法,拋棄金手指互連方式,可靠性得到保證[3-4],但是成本較高,適合于型號設備。另一種解決方法是采用PC104總線接口,物理連接采用插針形式,可靠性很高,且適合實驗室設備環境。
PC104+總線兼容PCI 協議,既可滿足系統的實時性,又可保證系統可靠性[5-6]。 故在此,轉臺控制系統采用了基于PC104+總線的嵌入式計算機作為的主控計算機,設計了PCI 協議的信號處理卡,基于DSP(digital signal processor,數字信號處理器)和FPGA(field programmable gate array,現場可編程門陣列)核心元件,實現了成碼盤信號采集、數字輸入輸出信號處理、控制結果輸出、集串口遠程通訊等功能于一體。
轉臺控制系統總體結構如圖1 所示。

圖1 轉臺系統結構Fig.1 Turntable system overall structure
主控計算機采用PC104+嵌入式計算機, 搭載Windows XP 系統, 通過VC++編寫人機交互界面,完成界面管理、參數配置、指令等功能。 具體功能如圖2 所示。

圖2 人機界面功能Fig.2 Function of human-machine interface
轉臺直接控制級為RTX 實時子系統,構成3 個獨立的伺服控制回路,實現控制算法。 信號處理卡主要由CH365 橋路芯片,DSP、PFGA 主控芯片、雙口RAM、D/A 轉換、運放等外圍電路組成,主要完成D/A 輸出、碼盤信號采集、與遠程計算機及主控計算機的通信的功能。DSP 和CH365 負責與主控計算機的通訊,FPGA 負責與遠程計算機的串口通信和碼盤數據采集和處理。
PC104+總線兼容PCI 協議,PCI 總線分別32 位和64 位,最大傳輸率可達264 MB/s。 其獨立于CPU總線,故能夠支持多種處理器,但是相較于ISA 等總線,PCI 總線協議復雜, 使用FPGA 設計比較困難。 在此轉臺系統采用專門的PCI 接口芯片CH365進行接口設計。
CH365 是PCI 總線的通用橋路芯片,其應用如圖3 所示,能夠實現32 位PCI 總線接口,將其轉換為8 位數據并行接口, 帶有16 為地址線, 可直接DSP、FPGA 等主控芯片。 由于轉臺系統通信數據量較大,故使用雙口RAM 進行緩沖。

圖3 PCI 接口Fig.3 PCI interface
PCI 接口芯片CH365 的PCI 總線端與嵌入式計算機通過插針連接, 本地總線端與雙端口SRAM連接,雙口SRAM 另一總線端與DSP 總線連接。 通過接口芯片,可以直接通過計算機的端口操作對雙端口SRAM 中的數據進行讀寫。 通過對雙端口SRAM 指定地址的寫入產生的外部中斷,對DSP 進行控制。
FPGA 根據碼盤協議要求發送時鐘信號,經電平轉換,差動轉換后輸出,同樣碼盤信號經過差動轉換,電平轉換后進入FPGA。 FPGA 電路如圖4所示。

圖4 FPGA 電路Fig.4 FPGA circuit
信號處理器軟件按照功能可分為以下幾部分:①串口通信 采用RS422 協議實現與測發控的通信;②PCI 通訊 將串口接收的測發控信息與碼盤卡接收的碼盤信息通過PCI 總線協議實現與計算機的通訊;③SPI 輸出 將計算機的控制指令通過SPI 串口輸出,經D/A 以及放大后送至驅動器;④信號采集 主要利用FPGA 器件實現對外圍器件的邏輯控制,讀取碼盤數據信號。
以FPGA 為核心的數據采集模塊如圖5 所示。該系統選用Intel 公司Altera 系列芯片,有較高的波特率,能夠實時讀取三路碼盤信息,同時生成內部硬件邏輯模塊雙口RAM,將采集到的碼盤信息存于雙口RAM 等待DSP 讀取。

圖5 以FPGA 為核心的數據采集模塊Fig.5 FPGA-based data acquisition module
數據采集模塊的主要工作內容如下:
1)碼盤數據的采集。 編碼器協議為BISS 協議,BISS 是一種同步串行通訊協議,時序如圖6 所示。

圖6 BISS 碼盤時序圖Fig.6 BISS encoder timing diagram
根據協議要求,FPGA 向編碼器輸入時鐘信號,編碼器即按該時鐘信號進行數據傳輸,FPGA 按該時鐘信號按位接收,去掉幀頭幀尾,經過校驗后存入內部RAM 的指定地址,等待DSP 訪問。部分程序如下:
assign ma =(scl_r || flag2);
ma 為FPGA 輸出時鐘信號;scl_r 為內部分頻出的合適波特率;flag2 為控制開關。

此為接收模塊,FPGA 按照編碼器發送的波特率按位接收數據。

通過校驗的數據賦給16 位數組ram1 和ram2等待存入雙口RAM。

通過對寫信號置高, 并將數據賦給數據總線,地址賦給地址總線, 將采集的碼盤數據存入雙口RAM 指定區域。
2)與DSP 之間的通訊。 FPGA 生成DRAM 邏輯模塊,與DSP 的16 位數據總線、外部尋址片選信號線、讀信號線、寫信號線以及地址總線相連。 DSP 通過訪問FPGA 內部DRAM 讀取碼盤數據。
3)FPGA 讀取雙口RAM 中上位機的控制指令,通過SPI 輸出, 經D/A 轉換并放大后送至驅動器,完成對電機的控制。
為使上位機能夠對PCI 設備操作,需要有相應的驅動程序,進行地址映射。PCI 設備查找流程如圖7 所示。
主要步驟如下:
步驟1遍歷PCI 插槽,尋找信號處理卡。主要程序如下:


圖7 PCI 設備查找流程Fig.7 PCI device discovery flow chart
由于計算機的多級總線結構, 遍歷PCI 設備時,首先從PCI Bus0 開始,然后在PCI Bus0 總線上遍歷掛接在其上的所有PCI 設備。另外,單個PCI設備可能還有多個功能, 因此還需要遍歷其功能號,找到PCI 設備后,獲得其設備信息PciData,對比其設備號,廠商號是否與目標設備一致。

信息一致則進行內存映射,否則繼續查找PCI 設備。
步驟2調用CH365Map()函數,對板卡進行內存映射和端口映射,得到基地址BaseAddr365,之后可以通過(PUCHAR)((int)基地址+偏移量)直接對本地總線進行讀寫。 主要程序如下:

其中,RtTranslateBusAddress()函數作用為,將PCI 設備地址變為CPU 可直接訪問的物理地址,RtMapMemory()函數則把該物理地址映射到虛擬地址。
計算機通過CH365 橋路芯片對雙口RAM 進行讀寫, 另一端信號處理板主控芯片DSP 對雙口RAM 進行讀寫,實現數據交換。 雙口RAM 允許兩端CPU 同時對不同存儲單位進行讀寫,但是不允許同時對同一單位進行一讀一寫。 在此采用郵箱中斷的方式,中斷機制如圖8 所示。

圖8 中斷機制Fig.8 Interrupt mechanism
圖中, 上位機通過CH365 向雙口RAM 最高位寫入數據觸發DSP 側中斷,DSP 在外部中斷中判斷中斷信息, 執行讀取碼盤數據并寫入雙口RAM 或讀取雙口RAM 中指令信息。 在DSP 讀取數據后該中斷清除,以此郵箱中斷的方式完成上位機與DSP的通訊。 DSP 程序設計流程如圖9 所示。

圖9 DSP 軟件流程Fig.9 DSP software flow chart
所設計的信號處理卡包括信號采集、信號處理、遠程通訊、PCI 接口和DA 輸出等模塊;已成功運用于轉臺系統,取得較好效果,良好的集成度及豐富的功能減少了轉臺系統的外設數量,提高了系統可靠性。