王凱 海軍裝備部 710043
基于CompactPCI總線和DSP技術的數據采集板的設計
王凱 海軍裝備部 710043
本文是工程實踐中,利用TI高性能DSP器件TMS320LF2407實現對控制系統中轉塔角度的采集、轉速采集,是伺服系統控制中的重要環節,并基于Compact總PCI線遷入控制計算機中,與主機完成實時通訊功能。
Compact;PCIDSP;數據采集;CPLD
并行總線技術的發展,使CompactPCI的優勢很快在電信行業獨樹一幟,其優良的結構規范以及電器特性也正為工業控制、航空、航天領域逐步接受。信息化的發展使人們認識到其基礎是數字化,而數字化的核心技術之一是數字信號處理。數字信號處理的任務在很大程度上需要由DSP器件來完成。同時,DSP在各個領域日益增長的應用帶動了DSP自身的發展, DSP在其他領域的潛力也是巨大的。
數據采集板作為某型號計算機中一塊嵌入式控制板,與伺服控制板、通訊控制板以及CPU板構建成一套高性能整機,處于控制系統的核心控制地位,完成實時采集陀螺、旋轉變壓器的數據,采集系統探測信息,通過伺服軟件的PID算法,由D/ A變換輸出模擬校正量到伺服電子箱,實現伺服系統的閉環控制。
數據采集板采用TI公司的高性能DSP器件TMS320LF2407為核心,通過Compact PCI總線受主控計算機的控制,對系統提供的信息,經過數據采集軟件處理,輸出模擬量給伺服電子箱。高性能D S P器件TMS320LF2407是TI公司2x系列中的高端產品,主頻最高為50MHz,并采用低功耗設計,工作電壓為3.3V,外圍器件工作電壓以3.3V為多,大大降低了數據采集板的功耗。在實際設計中,外部程序可燒入片上FlashRAM 器件(256K×32bit),實現了在線編程的特點,大大提高了系統的可操作性和可維護性。角度采集器件選用高分辨率(19bit)高精度(±2lsb)器件,數據存儲空間選用高速RAM(256x32bit)掛接在DSP的本地總線上,3.3V信號與5V信號采用74LVCC16245A隔離,大容量可編程器件完成DSP對外部資源控制的譯碼以及兩路同步同步串口數據采集變換。
TMS320LF2407 DSP器件采用雙端口RAM 實現與伺服控制板以及與主機通訊,DSP器件分別以5和2、1m s(可選)為采樣和處理周期,實時采集轉塔的位置信息,以及陀螺、旋轉變壓器的數據,并把采集結果發送給主機及伺服控制板。硬件看門狗電路實現對模板軟件監控,在程序跑飛情況下,實現對DSP以及外部電路的軟復位并向主機報錯。主機每隔20m s讀取雙端口RAM中的數據,DSP在完成每次處理5m s(包含2m s或1m s),在雙端口RAM 中寫入相應的處理結果或工作狀態信息,供主機查詢,避免了DSP與主機之間的中斷處理時間。

圖1 數據采集板功能框圖
PCI橋選用PLX公司的PCI9052橋芯片,工作模式為Lacal方式,PCI9052是PLX公司繼PCI9050之后推出的低成本PCI總線接口芯片,低功耗,PQFP160p in s封裝,可以使局部總線快速轉換到PCI總線上。其主要特點如下:
符合PCI2.1規范,支持低成本從屬適配器
包括一個64Byte的寫FIFO和一個32Byte的讀FIFO,通過讀寫FIFOs,可實現高性能的突發式數據傳輸;
支持兩個來自局部總線的中斷,可生成一個PCI中斷,利用軟件寫內部寄存器位也可以達到同樣的目的;
PCI9052的局部總線與PCI總線的時鐘相互獨立運行,局部總線的時鐘頻率范圍為0~40MHz,TTL電平,PCI的時鐘頻率范圍為0~33MHz。兩種總線的異步運行方便了高低速設備的兼容;
可編程的局部總線配置,支持復用或非復用模式的8、16或32位的局部總線;
4個局部設備片選信號,各設備的基址和地址范圍及其映射可由串行EEPROM或主機編程實現;
支持Big/Little Endian 編碼字節的轉換;
局部總線等待狀態,除了用于握手的等待信號LRDYI# 外,PCI9052還有一個內部等待產生器(包括地址到數據周期、數據到數據周期和數據到地址周期的等待);
可編程實現讀寫信號選通的延遲和寫周期的保持;
可編程器件邏輯設計
在CPLD內部邏輯設計上,我們在本文中主要對同步串口的設計進行比較詳細的描述,其余為控制譯碼邏輯設計,在此不再贅述。
本模板的軟件設計包括TMS320LF2407相關軟件的編寫,Vxworks嵌入式操作系統下的驅動程序和測試軟件的編寫。
3.1 TMS320LF2407相關軟件
TMS320LF2407軟件的編寫相信大家也比較熟悉,在此主要強調對.cm d文件的編寫:
C編譯器對C語言程序編譯后生成六個可以重新定位的代碼和數據塊,這些塊可以用不同的方式分配至存儲器以符合不同系統配置的要求。這六個塊可以分為兩種類型:已初始化塊和未初始化塊。已初始化主要包括數據表和可執行代碼。C編譯器共創建三個已初始化塊:.text塊(包括可執行代碼和字符串)、.cinit塊(包含初始化變量和常數表)和.const塊(字符串和. swith表)。未初始化塊用于保留存儲器空間,程序運行時利用這些空間創建和存儲變量。C編譯器創建三個未初始化塊:.bss塊(用于保留全局和靜態變量空間)和. stack塊(為系統堆棧分配存儲器)和. system塊(為動態存儲器函數分配存儲空間)。
依據C33的系統資源分配,構建系統的CMD文件代碼,在生成COFF(*.out)文件過程中,依據CMD內容把六個代碼和數據段定位到RAM區的不同地址段上。
以下是本模板的.cmd 文件:


在程序調試完畢后就可把最終的COFF(.out)可執行文件用文件轉換程序HEX30制作成可寫入FlashRAM 的16進制BOOT文件,燒寫入Flash RAM 中即可。
3.2 VxWorks驅動程序
該模板實際使用時工作在VxWorks操作系統下,因此,必須為它編寫VxWorks操作系統下的驅動程序。
VxWorks中對PCI設備的操作,首先應在系統中找到所需的PCI設備,然后從它的配置空間中將所需的資源信息取出來,如內存基地址、I/O 基地址、中斷號等,再根據這些信息及設備的特性對其進行初始化。
3.2.1 查找PCI設備
在系統中查找PCI設備所必需的是設備的vendor ID和device ID。有了這兩個信息,就可以調用pciFind Device()函數進行查找,pciFind Device()的原型為:這個函數尋找與指定的vendorId和deviceId相同的第index個設備。


該函數若成功執行,則返回OK,此時在pBusNo,pDeviceNo和pFuncNo中存的是找到的PCI設備的總線號、設備號及功能號,這些信息在后面的操作中將會用到。若函數執行不成功,則返回ERROR。
3.2.2 獲取PCI設備信息
找到PCI設備后,下一步就是要將它的資源信息從配置空間中讀出來。對配置空間的讀寫操作一般使用下面的這些函數:

還有一些其它的函數可進行對PCI配置空間的操作,具體內容可以參看VxWorks幫助。
獲取PCI設備的I/O基地址或內存基地址
可以使用下面的函數來獲取PCI設備所分配的內存資源:

其中pActualRes是一個結構體,里面保存與PCI設備相關的信息,定義如下:


pActualRes.pciBus,pActualRes. pciDevice,pActualRes.pciFunc分別是執行pciFindDevice()函數時獲得的pBusNo,pDeviceNo, pFuncNo 。PCI_CFG_BASE_ADDRESS_0 是要讀取的數據在PCI配置空間中的偏移量,它們在文件pciConfigLib.h中定義,BaseAddress為讀出的I/O空間的基地址或內存空間基地址,具體是哪一類空間由讀出數據的最低位來判斷,若最低位為0,則為內存空間,為1,則是I/O空間。
若讀出的是I/O空間基地址,在使用前,需先將它和PCI_IOBASE_MASK 進行與運算,以屏蔽最低兩位。PCI_IOBASE_MASK 也在pciConfigLib.h中定義。
得到基地址后,可用下面的函數進行內存或I/O的讀寫操作:

還有一些其它的相關函數,它們的定義在syslib.h中。
獲取PCI設備的IRQ:
對分配有中斷的設備,可以用下面的函數來得到系統為它分配的中斷資源:

irq中是讀出的PCI設備的IRQ。知道了IRQ后,還需要知道中斷向量,X86平臺的機器上中斷向量為IRQ+0X20。得到中斷向量后,就可以將中斷與中斷服務程序連接起來。一般設備將中斷與中斷服務程序連接時用intConnect()函數,而對于PCI設備則需用pciIntConnect,如:
pciIntConnect (INUM_TO_IVEC(ivec), isr,0)
其中ivec為中斷向量,isr為中斷服務程序,最后是傳給中斷服務例程的參數。
3.3 測試程序的編寫
驅動程序編寫完成后,進行編譯,連接后生成驅動程序目標代碼,將其拷貝到相應bsp目錄下,并在config.h文件中加入對該設備的聲明。
創建一個新的工程文件,在builds->macros->Extra MODULES->Value 中添入生成的驅動程序文件,具體路徑需根據實際情況改變。
使用時驅動程序時,必須先調用先對驅動程序進行安裝,例:

從設備中讀取數據時,使用read()函數,其調用格式如下:

向設備中寫入數據時,使用w rite()函數,其調用格式如下:

其中fd為打開的設備句柄,inbuf為接收緩沖區,outbut為輸出緩沖區,len為輸入輸出的長度。
[1]蘇濤,蔡建隆,何學輝.DSP接口電路設計與編程.西安:西安電子科技大學出版社.2003
[2]http://focus.ti.com/dsp
10.3969/j.issn.1001-8972.2011.09.074