摘 要:設計了利用TI公司的TMS320LF2407A系列DSP和Altera公司的MAX II EPM570系列CPLD控制MAXIM公司的MAX194 A/D轉換器實現一個多通道數據采集系統的結構。分析了MAX194 A/D轉換器的工作性能,使用Altera 公司的MAX II EPM570系列CPLD在Quartus Ⅱ環境下使用VHDL語言實現了MAX194的模數轉換器接口。介紹該系統的工作原理,并詳細描述了CPLD,DSP以及MAX194之間具體的硬件電路接口的設計以及軟件的實現。
關鍵詞:DSP;CPLD;MAX194;CD4067
中圖分類號:TP274.2 文獻標識碼:B 文章編號:1004373X(2008)1511403
Multi-channel Data Acquisition System Based on DSP and CPLD
LUO Yiqun,DAI Zuoxiao
(Shanghai Institute of Technical Physics,Chinese Academy of Science,Shanghai,200083,China)
Abstract:This paper introduces a system structure multi-channel data acquisition based on TI TMS320LF2407A DSP,Altera MAX II EPM570 and MAX194 A/D converter.It analyses the interior architecture of the MAX194,uses the VHDL language under QuartusII environment to carry out the MAX194 A/D converter interface with the MAXII series CPLD.And explains the principle of this system and describes the hardware design and software design for the interfaces among MAX194,DSP and CPLD.
Keywords:DSP;CPLD;MAX194;CD4067
用于實時控制系統的嵌入式系統經常需要對模擬量進行測量,通常的方法是以MCU為主產生采集控制時序控制模數轉換器,并通過中斷或查詢的方式讀取轉換后的結果。由MCU產生采集控制時序將占用較多的系統軟硬件資源。而在一般復雜的多路信號測控系統中,MCU需要進行數據存儲,通訊,數據處理等多項工作,如果再需要其頻繁地產生模數轉換控制器的控制時序,將會影響系統的性能,嚴重時將會成為系統的瓶頸。本文采用CPLD產生A/D轉換器的控制時序,使得CPLD主要實現A/D時序控制的功能,DSP主要實現閉環控制算法的功能。
1 系統總體結構
系統以DSP和CPLD為核心,模擬信號從模擬多路開關CD4067接入,利用CPLD進行使能其輸入。使用DSP的GPIO口作為模擬多路開關的通道號的選擇。A/D轉換器使用MAXIM公司的MAX194,其控制時序由CPLD產生。當A/D轉換結束后,將會產生一個EOC信號,該信號作為LF2407的外部中斷,當DSP接收到該轉換結束信號,進入相應的外部中斷程序,使用SPI總線來接收A/D轉換的數字值,并進行相應的處理。系統的總體結構圖如圖1所示。
2 硬件設計
2.1 主控DSP芯片TMS320LF2407A
系統的主控制器采用了TMS320LF2407A,3.3 V靜態CMOS工藝,40 MIPS,具有16位地址總線,16位數據總線,3個獨立的存儲空間,包括可用的64 kB程序空間,35.5 kB數據空間以及64 kB的I/O空間。訪問不同的存儲空間時,DSP有相應的引腳作為選通信號,PS對應程序空間,DS對應數據空間,IS對應IO空間,均為低電平有效。本系統將MAX194 A/D轉換器映射到I/O空間0000H-7fffH,其使能的邏輯表達式為:CS=A15+IS。多路模擬開關映射到I/O空間的8000H-ffffH,其使能邏輯表達式為:CS=A15+IS。式中IS是I/O空間選通信號線。
TMS320LF2407A的內部具有32 kB FLASH程序存儲器,2.5 kB RAM數據存儲器。FLASH可滿足DSP系統程序存儲的需要,而2.5 kB的數據存儲器可能不夠。而且研發階段一般將程序寫在RAM上,所以設計選用了Cypress Semiconductor 公司的CY7C1021V33的SRAM,該SRAM為64 kB,設計中設定0000H-7ffffH為程序空間,8000H-ffffH為數據空間。外擴SRAM的邏輯表達式為:CS=(A15+PS+DS)(A15+PS+DS)。式中CS是SRAM的片選信號線,A15是DSP的第16根地址線,PS是程序空間選通信號線,DS是數據空間選通信號線。
2.2 模數轉換模塊MAX194
TMS320LF2407A芯片內置16通道A/D轉換器,但是只能輸入單極性電壓,只有10位的分辨率,精度很不理想,所以需要外擴A/D轉換芯片。經過多方比較,筆者選用了MAXIM公司的MAX194芯片,它是一種逐漸次比較型的模數轉換器,具有高精度,低功耗等特點。MAX194的內部設有校準電路,用于保證全溫度范圍內的線性度,且不需要外部的調整電路。分開的模擬和數字供電,最大限度地減少了數字耦合噪聲。其主要特征有:14位分辨率,1/2 LSB非線性度,82 dB的信噪比,低功耗,單極性或雙極性輸入,三態串行輸出。
MAX194具有兩種接口模式:同步模式和異步模式。同步模式:MAX194在轉換過程中,每轉換完一個,數據位就輸出一位。此時,SCLK應該接地,CLK即作為ADC的轉換時鐘又作為串行接口的移位輸出時鐘。異步模式:DSP只能在MAX194完成一次轉換之后才能將轉換結果讀出,然后啟動下一次的轉換。這種模式降低了MAX194連續轉換的速度。
使用CPLD來控制MAX194,可以方便地控制MAX194工作在同步或者異步狀態,而不需要對硬件電路做任何改動,僅需要修改CPLD中的程序即可。本設計將MAX194設定在異步工作模式下,MAX194異步模式時序圖如圖2所示。
根據圖2所示的時序圖,將采樣控制過程分成了4個狀態:
(1) 初始狀態: MAX194采樣控制信號初始化,各采樣控制狀態置零。
(2) 啟動采樣狀態:將MAX194的啟動轉換信號START置低并保持至少兩個CLK周期。
(3) 轉換結束狀態:將MAX194的啟動信號START置高并檢測轉換結束狀態信號EOC,當它由高電平變成低電平時即表示轉換已經結束。因此,這個狀態與上個狀態一樣是看EOC 信號是否有變化,若是有變化,則轉到下個狀態,若是沒有變化,則將一直在這個狀態中循環,直到EOC信號有變化為止。
(4) 轉換結果輸出狀態:將MAX194的芯片使能信號CS置低,DSP通過SPI口將A/D轉換得到的數據傳入DSP中。
根據以上工作狀態的描述,使用了VHDL語言編寫了A/D轉換采樣控制模塊的程序,并進行了仿真,仿真結果如圖3所示。從仿真圖中看出設計的A/D轉換控制模塊是完全符合設計要求的。
3 軟件設計
TMS320LF2407A是基于C2000平臺的,提供兩種編程語言:C/C++語言或匯編語言。其中,C語言編寫的程序可讀性、可移植性強,且大大縮短了開發周期,但執行效率低,程序出錯時不易診斷。匯編語言程序效率高,但編寫比較繁瑣。通常做法是程序核心部分(即經常調用部分)采用匯編語言編寫,以提高整個系統的執行效率,對實時性要求不高的部分采用C語言編寫以降低程序的復雜度,提高程序的可讀性和可修改性。本文采用C語言和匯編語言混合編寫的多文件結構,主要包括主程序、讀取A/D轉換結果的中斷程序的設計。
軟件流程如圖4所示。主要分成三部分:SPI配置部分,模擬開關控制部分,A/D轉換控制和轉換結果的讀取。
3.1 SPI配置部分
對于LF2407A,串行SPI外設接口有9個寄存器,用于控制其操作。在本設計中將LF2407A的SPI接口設定在主模式下,在該模式下,采用主控制器發送偽數據,從控制器發送數據。主控制器可在任何時刻啟動數據傳送,因為它控制著SPICLK信號。但軟件決定了主控制器如何檢測從控制器何時準備發送數據。SPI接口模塊的初始化程序如下:
int SPIINTITIAL()
{
*SPICCR=0X000F;//16char bits,在SPICLK的上升沿
發送數據,在下降沿接收數據
*SPICTL=0X0006;//使能主動模式,一般的時鐘方式,使能TALK
*SPIBRR=0X0027;//SPI的波特率為1M,CLKOUT=40M
*SPICCR=*SPICCR|OX0080;//使SPI退出復位狀態
}
3.2 模擬多路開關選通部分
由于多路模擬開關映射到DSP的I/O空間中的0X8000-0XFFFF之間,所以在DSP程序中,對0X8000-0XFFFF之間進行一個讀操作,由DSP的GPIO選擇的通道就被選通,信號由CD4067輸出到A/D轉換器MAX194。
讀地址產生的低電平信號CS的保持時間由訪問I/O空間的等待時間決定的,通過設置等待狀態寄存器來保證獲得有效的延時時間。
//設置狀態寄存器
WSGR=0x01C0;//bit8-6=111,訪問I/O空間插入了7個等待狀態
//聲明CD4067映射到I/O空間
#define mux port8000;
volatile ioport unsigned int port8000
//CD4067通道選擇函數
*PADATDIR=0Xff3f;//bit7,bit6清0
*PBDATDIR=0Xfffc;//bit1,bit0清0
*PADATDIR|=(chanel0x3)<<6;//設置bit7,bit6
*PBDATDIR|= (chanel0xC) <<2;//設置bit1,bit0
mux=3;//產生使能信號
3.3 MAX194轉換控制部分
由于A/D映射DSP的I/O空間的0x0000~0x7fff之間,類似于模擬多路開關,也需要對該空間進行一個讀操作。
//聲明MAX194映射到I/O空間
#define MAX194 port1000;
volatile ioport unsigned int port1000
max194=3;//產生MAX194的使能信號
在使MAX194開始轉換后,產生一個EOC信號,使DSP進入外部中斷,該中斷服務程序為:
int ADresult;
*IFR=0x20;//清除外部中斷位
ADresult=temp<<2;//讀轉換結果的高14位
asm(“ clrc INTM”);//重新使能中斷
4 結 語
多路數據采集系統在嵌入式測控系統中具有很強的實用價值。本文設計了一個基于TMS320LF2407A與EPM570T100C5N的MAX194的多通道采集系統,詳細描述了MAX194,CPLD與DSP之間的硬件與軟件設計,該系統在筆者參與的嵌入式測量控制系統中得到了成功的應用。
參 考 文 獻
[1]徐科軍,張興,肖本賢,等.TMS320LF/LC24系列DSP的CPU與外設[M].北京:清華大學出版社,2004.
[2]李輝.PLD與數字系統設計[M].西安:西安電子科技大學出版社,2005.
[3]劉和平,王維俊,江渝,等.TMS320LF240x DSP C 語言開發應用[M].北京:北京航空航天大學出版社,2003.
[4]楊占錄,董保國.14位A/D轉換器MAX194在ARM單片機系統中的應用[J].電子元器件應用,2006,8(12):5-8.
[5]MAXIM.14-Bit,85 ks/s ADC with 10 μA Shutdown\\.2001.
[6]梅紅偉,吳學杰,商秋芳,等.基于PC104和CPLP的高速多通道數據采集系統的設計與實現\\.現代電子技術,2007,30(5):152-154,159.
作者簡介 羅軼群 男,1983年出生,上海人,碩士研究生。研究方向為硬件開發應用。