王薇
(四川財經職業學院 電子商務系,四川 成都 610101)
現代工業生產和科學研究對數據采集的要求日益提高,要求數據采集系統接口有較高數據傳輸率的同時還需要配備高性能控制器件對數據做出快速準確的處理[1]。可編程邏輯門陣列(FPGA)可現場直接根據系統要求定義和修改其邏輯功能,采用FPGA能短時間完成低成本、低功耗的數據采集系統設計[2-3]。
針對絕對編碼器等SSI接口傳感器的應用,文中設計了一種基于FPGA的多通道數據采集與處理系統。系統的數據分析和輸出顯示完全由PC機軟件來完成,而數據采集是在SOPC軟件的控制下由FPGA上運行的邏輯語言實現的。
根據常見的SSI接口傳感器實際需求,綜合考慮數據采集系統開發難易程度及元器件性能和優勢等多方面因素后,設計的多通道數據采集系統硬件總功能框圖如圖1所示。
圖1 數據采集系統硬件功能總框圖Fig.1 Data acquisition system total block diagram of the hardware capabilities
數據采集系統的核心微處理器FPGA采用了ALTERA公司的CYCLONE系列芯片EP1C12Q240C8,主要用于實現同步串口(SSI)時鐘產生、數據采集與整理、數據碼制轉換、數據通道選擇、波特率轉換及FIFO存儲等功能,系統的所有控制語言都是在FPGA內部編程實現的。所設計的數據采集系統通過PCI9054橋接芯片實現FPGA局部總線到PMC/PCI總線的轉換,而后通過PMC/PCI總線完成數據采集系統與上層母板的連接和通訊。數據采集系統的采集接口部分通過RS422串口來實現傳感器到采集系統的數據傳輸,因工業現場數據大部分存在大量的電磁干擾,設計中采用雙溝道配置高速光耦HCPL263對輸入信號進行隔離,同時為滿足光耦隔離電路輸出信號電平需求,系統選用ADG3304 BRU進行電平轉換。
TTL-RS422電平轉換電路采用MAXIM公司生產的MAX3030E芯片,主要用來完成SSI控制時鐘的TTL-RS422電平轉換。系統通過DB9與PC機相連,采用PC機中使用最廣泛的RS232接口,物理接口符合RS232電氣標準,自定義通訊協議,實現了可編程片上系統(SOPC)對系統的管理。方便用戶清楚的了解數據采集系統的工作狀態,系統設計了一個專用的電源和一個供用戶自定義的LED狀態指示燈。同時為了應對數據采集系統工作中出現故障等緊急情況,還設計了兩個供用戶自定義的復位開關。數據采集系統通過40MHz的有源晶振系統提供時鐘,其中PCI9054局部總線的時鐘由FPGA內部鎖相環分頻得到,而PCI9054的PMC總線側的時鐘由PMC端口通過PCLK引針提供33MHz的工作頻率。數據采集系統通過EPCS4配置芯片對FPGA進行上電配置,具體可采用串行配置和并行配置,也可通過外部下載接口進行FPGA的在線內部代碼更新。
系統主要電路設計:1)電源設計,通過AMS1117-ADJ和LM1117-3.3芯片將PMC總線Pn1/Jn1接口提供的5 V電源轉換為FPGA芯片(EP1C12Q240C8)及其它器件所需的1.5 V及3.3 V電源;2)FPGA設計,通過基于Flash的可在線多次編程EPCS4芯片實現FPGA的配置,并設計電路實現被動串行和主動串行兩種配置方式;3)RS232設計,通過MAXIM公司的MAX3232E轉換芯片完成LVTTL和RS232信號電平的轉換與傳輸,其中一路收發信號與DB9接插件相連,另一路收發信號與CON3相連以作備用收發端,其余信號直接輸入FPGA。
FPGA數據采集系統軟件用于實現:1)與計算機的信息交互,即接收波特率、數據分辨率、數據編碼方式、工作模式以及運行控制等信息;2)實現對傳感器的SSI接口協議;3)實現傳感器數據的傳輸。主要包括固化在數據采集卡存儲器裝置內的嵌入式軟件和邏輯。其中用戶邏輯包括數據處理、數據緩存、數據傳輸、波特率發生器以及SSI配置接口模塊等,而SOPC系統包含Nios II軟核、BRAM、EPCS控制器、RS232控制器、SSI寄存器接口部件以及系統互聯[4]。
通過FPGA開發軟件Quartus II進行主要模塊的設計:1)波特率發生器,根據輸入的波特率選擇信號產生相應的波特率作為多路數據的輸入時鐘以及數據處理模塊的時鐘;2)數據接收整理模塊,接收符合SSI接口協議的數據,實現了SSI接口協議以及數據的串并轉換;3)碼制轉換模塊,根據輸入的編碼方式按需要進行格雷碼與二進制間的轉換[4-6];4)數據輸出模塊,接收碼制轉換輸出的數據并經握手操作將數據傳給數據復接模塊;5)數據復接模塊,接收多路數據輸出模塊的數據并再對每路數據組幀以后輸入數據緩存(FIFO)[4-6];6)數據源發生器以及切換器,根據輸入的數據源選擇信號選擇內數據源發生器還是所采集數據進行輸出;7)數據緩存,異步FIFO通過Show-ahead/First-word Fall-through模式存儲復接模塊的輸出數據;8)數據傳輸模塊,將數據緩存中讀取的數據傳輸到PCI 9054的 Local Bus上;9)SSI配置接口模塊,包含針對系統以及SSI接口的命令和控制寄存器控制系統運行及配置等[4]。
軟件設計中沒有對中斷處理及處理器執行效率很高的要求,SOPC設計中沒有使用TCM,這樣可以節省FPGA器件內部的嵌入式RAM塊;SOPC對應的嵌入式軟件的代碼量不大,所以指令和數據Cache大小采取最小設置,這樣可以節省FPGA器件內部的嵌入式RAM塊;Nios II軟件的調試中因為沒有使用硬件斷點、數據觸發、指令跟蹤、片內跟蹤及片外跟蹤等高級調試手段,所以SOPC中只選擇了最簡單的JTAG調試級別。
通過VxWorks進行PMC總線的驅動程序設計。進行處理器驅動程序編程時首先編寫處理器的I/O接口子程序SSICreate()、SSIDelete()、SSIOpen ()、SSIClose()、SSIRead ()、SSIWrite()及SSIIoctl (),SSICreate()的作用是通過調用iosDevAdd()函數將設備添加到I/O系統。然后編寫驅動程序的主要部分PMC_FPGA_Init(),其用于實現設備查找、物理空間的獲取、中斷初始化、信號量使用、加載I/O函數。同時編寫中斷服務子程序intHandle(),實現中斷響應后需要執行的操作。
調試時,主要通過Siemens公司生產的SSI接口的絕對編碼器對所設計數據采集處理系統的SSI接口和內外數據源特性進行了驗證。
進行SSI接口特性測試,將編寫的邏輯寫入FPGA配置芯片后,對所設計的采集系統和絕對編碼器分別供給5 V和24 V電源,把編碼器的接口依次與采集卡的4路時鐘和數據信號相連,用示波器觀察輸入輸出信號。其中絕對編碼器輸出的差分數據信號和經光耦隔離之后輸入FPGA的TTL電平的數據信號分別如圖2與圖3所示,可見所設計的SSI接口可以實現數據采集功能。
圖2 SSI接口測試--編碼器輸出的差分數據信號Fig.2 SSI interface test--differential data signal output of the encoder
圖3 SSI接口測試--輸入FPGA的TTL電平信號Fig.3 SSI interface Test--TTL level input FPGA signal
文中主要設計了一個基于FPGA的多通道數據采集處理系統,該系統前端接口為SSI接口,可應用于符合SSI接口的絕對編碼器和磁致伸縮型磁尺等。設計時選用Altera公司的FPGA作為核心處理器,并配置有PCI9054作為FPGA與PMC總線的數據傳輸通道[4]。以SSI絕對式編碼器為標準對所設計的系統進行了調試,可見所設計的數據采集與處理系統能夠以較高的精度實現預定的功能。
[1]張琴,馬游春,李錦明.基于 PCI Express高速數據采集卡的接口設計[J].測控技術,2010,29(2):63-66.ZHANG Qin,MA You-chun,LI Jin-ming.High-Speed data acquisition card interface design based on PCI expres[J].Measurement&Control Technology,2010,29(2):63-66.
[2]龍雷.基于FPGA的多通道數據采集系統設計[J].電子科技,2014,7(1):128-130.LONG Lei.Design of multichannel data acquisition system based on FPGA[J].Electronic Science and Technology,2014,7(1):128-130.
[3]余林,張厚武,姚凱學.基于 FPGA和單片機的 PCI數據采集卡[J].儀表技術與傳感器,2011(12):108-110.YU Lin,ZHANG Hou-wu,YAO Kai-xue.Design of PCI data acquisition card based on FPGA and microcontroller[J].Instrument Technique and Sensor,2011(12):108-110.
[4]郭耀華,姚明林,張銀蒲.基于FPGA的SSI接口傳感器通信系統[J].儀表技術與傳感器,2010(11):11-15.GUO Yao-hua,YAO Ming-lin,ZHANG Yin-pu.Design of communication system for SSI interface sensor based on FPGA[J].Instrument Technique and Sensor,2010(11):11-15.
[5]劉懌恒.基于FPGA的數據采集與處理系統設計[D].長沙:湖南大學,2013.
[6]徐祥,蔣哲,王威廉.基于FPGA的高速數據采集、緩存與處理系統[J].電子測量技術,2013,36(4):68-71.XU Xiang,JIANG Zhe,WANG Wei-lian.High-speed data acquisition,caching and processing system based on FPGA[J].Electronic Measurement Technology,2013,36(4):68-71.