基于DSP和CPLD的低功耗多路數(shù)據(jù)處理系統(tǒng)
引言
隨著電子技術(shù)的應(yīng)用和發(fā)展,數(shù)字信號(hào)處理內(nèi)容日益復(fù)雜,同時(shí),很多情況下要求整個(gè)系統(tǒng)具有低功耗的特點(diǎn)。為滿(mǎn)足這種要求,DSP芯片設(shè)計(jì)技術(shù)也在向低功耗、高性能的方向發(fā)展。從處理速度來(lái)看,TMS320VC5502的運(yùn)算能力已經(jīng)達(dá)到了600MMACS,即每秒鐘可以完成6億次乘加運(yùn)算。從功耗來(lái)看,TMS320VC5502內(nèi)核電壓只有1.26V,整個(gè)芯片的功耗也大大降低了。本文介紹了基于TMS320VC5502和CPLD XC95144的低功耗多路數(shù)據(jù)處理系統(tǒng)。
模擬信號(hào)的輸入經(jīng)過(guò)50Hz陷波電路(濾除工頻干擾)和信號(hào)預(yù)選頻電路。經(jīng)過(guò)預(yù)處理的模擬信號(hào)作為ADC的模擬輸入進(jìn)行A/D變換,最后由DSP實(shí)現(xiàn)對(duì)數(shù)字信號(hào)的濾波處理。將CPLD和DSP技術(shù)相結(jié)合,利用CPLD編程的靈活性,來(lái)控制6路ADC的啟動(dòng)和停止,簡(jiǎn)化了整個(gè)硬件電路的設(shè)計(jì),達(dá)到動(dòng)態(tài)地選擇采樣通道的目的。同時(shí)將DSP處理后的數(shù)據(jù)發(fā)送到PC ,在PC上利用MATLAB和VC等工具對(duì)處理后的數(shù)據(jù)進(jìn)行后端分析。本文主要介紹基于低功耗TMS320VC5502和CPLD的前端數(shù)據(jù)采集和處理系統(tǒng)。
ADS7805簡(jiǎn)介
ADS7805是一款具有16位量化精度的A/D轉(zhuǎn)換芯片。它的基本組成結(jié)構(gòu)包括16位精度的基于電容網(wǎng)絡(luò)的逐次逼近型ADC、采樣保持電路、時(shí)鐘、對(duì)微處理器的接口和三態(tài)輸出。ADS7805的最高采樣速率為100kHz,模擬信號(hào)輸入范圍為-10V~+10V,5V單電源供電,最大耗散功率為100mW。
ADS7805為5V單電源供電,輸出的數(shù)據(jù)位為‘1’時(shí),電平值為5V,而DSP芯片的I/O電壓采用的是3.3V邏輯電平,因此,還需要在A(yíng)DS7805的數(shù)據(jù)輸出端加上電平轉(zhuǎn)換芯片,設(shè)計(jì)時(shí)選用了74ALVC164245,它可以將5V電平轉(zhuǎn)換為3.3V,也可以將3.3V轉(zhuǎn)換為5V。
硬件接口電路設(shè)計(jì)
從硬件角度來(lái)看,DSP完成濾波運(yùn)算的核心工作,而整個(gè)系統(tǒng)的控制核心是CPLD,DSP對(duì)6路A/D采樣的操作是由CPLD產(chǎn)生控制信號(hào),控制著ADS7805的采樣觸發(fā)信號(hào)、6個(gè)ADC的復(fù)用和解復(fù)用,以及5V轉(zhuǎn)3.3V電壓轉(zhuǎn)換芯片74ALVC164245的選通等。CPLD和DSP的時(shí)鐘輸入采用30MHz有源晶振。CPLD、DSP、ADC和電平轉(zhuǎn)換芯片之間的接口電路如圖1所示。
圖1 DSP、CPLD與ADC接口電路圖
DSP利用片選信號(hào)、地址信號(hào)、讀寫(xiě)使能信號(hào)向CPLD發(fā)出指令,CPLD根據(jù)DSP的指令向6個(gè)ADS7805發(fā)出控制信號(hào),啟動(dòng)芯片進(jìn)行采樣并控制DSP完成對(duì)數(shù)據(jù)的讀取。由于A(yíng)DS7805輸出的數(shù)據(jù)要通過(guò)電平轉(zhuǎn)換芯片,CPLD還需要控制74ALVC164245芯片的選通和轉(zhuǎn)換,就是圖1中的OE[1:0]信號(hào)。因此,DSP必須向CPLD提供的控制信號(hào)包括CE2片選信號(hào)、ARE讀使能信號(hào)和AWE寫(xiě)使能信號(hào),當(dāng)DSP讀取A/D轉(zhuǎn)換數(shù)據(jù)的時(shí)候,選通74ALVC164245進(jìn)行電平轉(zhuǎn)換,當(dāng)ADC對(duì)模擬信號(hào)進(jìn)行A/D轉(zhuǎn)換時(shí),不使能164245芯片,以免造成多路數(shù)據(jù)引起的數(shù)據(jù)總線(xiàn)沖突。由于有6個(gè)ADS7805,所以至少需要分配3根地址線(xiàn)信號(hào)(一般選為最低3位地址線(xiàn)引腳)區(qū)分這6個(gè)ADS7805,但3根地址線(xiàn)信號(hào)實(shí)際上可以用來(lái)表示8個(gè)地址,剩余的2個(gè)地址也可以利用起來(lái),例如,對(duì)剩余的2個(gè)地址中的一個(gè)進(jìn)行讀操作可以視為DSP發(fā)出命令,用以啟動(dòng)ADS7805,這樣就可以省去DSP和CPLD之間AWE信號(hào)的連接了。CPLD需要提供給ADS7805的信號(hào)包括片選信號(hào)CS[5:0]和數(shù)據(jù)讀取/啟動(dòng)轉(zhuǎn)換信號(hào)RC[5:0],此外,CPLD還要提供電平轉(zhuǎn)換芯片的片選信號(hào),并且需要接入一個(gè)時(shí)鐘信號(hào),用來(lái)給CPLD提供時(shí)序邏輯的同步時(shí)鐘信號(hào)。
CPLD程序設(shè)計(jì)
根據(jù)ADS7805的工作原理和DSP讀寫(xiě)特性,對(duì)CPLD進(jìn)行編程來(lái)實(shí)現(xiàn)DSP對(duì)6個(gè)ADS7805的分時(shí)讀取操作以及啟動(dòng)ADS7805的轉(zhuǎn)換。
整個(gè)程序采用Verilog HDL語(yǔ)言設(shè)計(jì)。為了便于測(cè)試,增加了一個(gè)FLAG標(biāo)志信號(hào),當(dāng)FLAG為低的時(shí)候,說(shuō)明DSP正在讀取ADS7805轉(zhuǎn)換過(guò)的數(shù)據(jù)。當(dāng)FLAG為高的時(shí)候,說(shuō)明ADS7805正在進(jìn)行新一輪的轉(zhuǎn)換。程序設(shè)計(jì)的重點(diǎn)在于啟動(dòng)ADS7805的新一輪采樣,而ADS7805啟動(dòng)采樣需要CS和RC同時(shí)為低且保持40ns。當(dāng)DSP讀完6個(gè)ADC的數(shù)據(jù)后就要啟動(dòng)新一輪采樣。當(dāng)對(duì)第6個(gè)ADS7805的讀取操作完成后,F(xiàn)LAG標(biāo)志位被拉高并利用計(jì)數(shù)器進(jìn)行記時(shí),輸入的時(shí)鐘頻率是30MHz。因此需要讓RC[5:0]和CS[5:0]輸出信號(hào)至少保持2個(gè)時(shí)鐘周期的低電平才能成功地啟動(dòng)下一次A/D轉(zhuǎn)換。根據(jù)系統(tǒng)的要求,CPLD程序主要分3個(gè)always塊。
第一個(gè)模塊利用DSP的CE2地址空間選擇信號(hào)、地址線(xiàn)A[4:2]、ARE讀信號(hào)以及定義的3位計(jì)數(shù)器cnt[2:0]作為觸發(fā)信號(hào)。當(dāng)CE2和ARE都為低時(shí),根據(jù)DSP的A[4:2]選擇6個(gè)中的一個(gè)進(jìn)行讀取,其他5個(gè)都被禁止,這時(shí),RC[5:0]應(yīng)該均為高。如果A[4:2]=000,那么CS[5:0]=111110,開(kāi)始讀第一個(gè)ADS7805的數(shù)據(jù)到DSP。為了防止數(shù)據(jù)丟失,在讀數(shù)據(jù)的時(shí)候,RC[5:0]應(yīng)該始終保持為高,因?yàn)槿绻鸆S[5:0]和RC[5:0]信號(hào)中同一位均保持為低超過(guò)40ns,就會(huì)啟動(dòng)一次新的采樣,這樣會(huì)造成沒(méi)有被讀的ADS7805產(chǎn)生一次新的采樣而丟掉之前轉(zhuǎn)換的數(shù)據(jù),對(duì)整個(gè)系統(tǒng)的結(jié)果造成很大的影響。讀完第6個(gè)ADC以后,在A(yíng)RE的上升沿將FLAG標(biāo)志拉高,這時(shí)計(jì)數(shù)器開(kāi)始記數(shù),根據(jù)記數(shù)器的數(shù)值,當(dāng)2
根據(jù)以上設(shè)計(jì)思路,成功地做到了對(duì)6路信號(hào)的采樣和讀取控制,達(dá)到了預(yù)期的效果。仿真波形如圖2所示。
圖2 CPLD仿真波形圖
DSP軟件設(shè)計(jì)
在進(jìn)行DSP程序設(shè)計(jì)之前,先利用MATLAB的FDATOOL工具設(shè)計(jì)數(shù)字濾波器,將濾波器系數(shù)以.h文件形式導(dǎo)出MATLAB,在CCS中定義一個(gè)數(shù)組存放濾波器系數(shù),就可以成功地將濾波器系數(shù)導(dǎo)入CCS。
本文主要介紹DSP對(duì)多路信號(hào)讀取并處理的軟件設(shè)計(jì)方案。圖3是整個(gè)程序的流程圖。首先應(yīng)該對(duì)DSP芯片進(jìn)行初始化,主要包括對(duì)TMS320VC5502的PLL寄存器進(jìn)行初始化、初始化系統(tǒng)中斷向量表、EMIF的初始化和定時(shí)器的初始化。DSP通過(guò)EMIF接口對(duì)外圍ADC的轉(zhuǎn)換數(shù)據(jù)進(jìn)行讀取。整個(gè)數(shù)據(jù)讀取和數(shù)字濾波工作是在定時(shí)器中斷程序中進(jìn)行的。定時(shí)器模塊主要用來(lái)確定采樣周期,即每來(lái)一個(gè)定時(shí)器中斷就對(duì)信號(hào)進(jìn)行一次采樣并完成對(duì)信號(hào)的實(shí)時(shí)處理運(yùn)算。因此,定時(shí)器的中斷周期也就是采樣周期,同時(shí),也規(guī)定了DSP做一次信號(hào)處理運(yùn)算所耗時(shí)間的上限,即必須在相鄰兩次的時(shí)鐘中斷之間完成一次處理所需要的運(yùn)算和操作。然后初始化EMIF模塊,這一部分比較重要,因?yàn)锳DC轉(zhuǎn)換好的數(shù)據(jù)是通過(guò)EMIF接口送進(jìn)DSP芯片的。ADC芯片在本系統(tǒng)中被內(nèi)存化了,也就是說(shuō),從DSP芯片的角度看,讀寫(xiě)ADC芯片和讀寫(xiě)異步SRAM沒(méi)有差別,因此,要將ADC芯片也分配到片外存儲(chǔ)空間里,本系統(tǒng)采用的方法是將ADC芯片分配到CE2空間0x400000~0x400005連續(xù)的6個(gè)地址,使用異步16位SRAM的配置方式來(lái)配置CE2空間的控制寄存器。當(dāng)有中斷請(qǐng)求時(shí),DSP就進(jìn)入頻率為40KHz的定時(shí)器中斷,進(jìn)行讀取和濾波工作。
圖3 DSP程序流程圖
系統(tǒng)功耗估計(jì)
通過(guò)查閱芯片手冊(cè)可以知道,TMS320VC5502需要的1.26V核心電壓供電能力為250mA,3.3V的I/O電壓和鎖相環(huán)I/O電壓的供電能力為50mA, DSP芯片的功耗為480mW。ADS7805芯片的功耗典型值為100mW,6個(gè)共計(jì)600mW。CPLD的3.3V電源消耗電流的典型值為100mA,即330mW。這樣,整個(gè)系統(tǒng)功耗大概為1.5W。在使用電池供電的情況下,這個(gè)功耗大小也是可以接受的。例如,使用一個(gè)12V輸出、50Ah的蓄電池,理想情況下可以對(duì)系統(tǒng)供電400小時(shí)。即使考慮電壓轉(zhuǎn)換過(guò)程中的能量損耗,用上述規(guī)格的蓄電池對(duì)系統(tǒng)供電40個(gè)小時(shí)也是可行的。
結(jié)語(yǔ)
本文介紹了一種基于DSP和CPLD的低功耗多路數(shù)據(jù)采集系統(tǒng)。 CPLD簡(jiǎn)化了硬件設(shè)計(jì),可以很方便地對(duì)系統(tǒng)進(jìn)行在線(xiàn)編程,具有很高的靈活性。本系統(tǒng)已應(yīng)用于軍事等具有低功耗、高性能要求的領(lǐng)域。
評(píng)論