新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于DSP和CPLD的低功耗多路數(shù)據(jù)處理系統(tǒng)設(shè)計方案

基于DSP和CPLD的低功耗多路數(shù)據(jù)處理系統(tǒng)設(shè)計方案

作者: 時間:2012-06-13 來源:網(wǎng)絡(luò) 收藏

引言

本文引用地址:http://2s4d.com/article/257438.htm

隨著電子技術(shù)的應(yīng)用和發(fā)展,數(shù)字信號處理內(nèi)容日益復(fù)雜,同時,很多情況下要求整個系統(tǒng)具有低功耗的特點(diǎn)。為滿足這種要求,芯片設(shè)計技術(shù)也在向低功耗、高性能的方向發(fā)展。從處理速度來看,TMS320VC5502的運(yùn)算能力已經(jīng)達(dá)到了600MMACS,即每秒鐘可以完成6億次乘加運(yùn)算。從功耗來看,TMS320VC5502內(nèi)核電壓只有1.26V,整個芯片的功耗也大大降低了。本文介紹了基于TMS320VC5502和 XC95144的低功耗多路系統(tǒng)。

模擬信號的輸入經(jīng)過50Hz陷波電路(濾除工頻干擾)和信號預(yù)選頻電路。經(jīng)過預(yù)處理的模擬信號作為ADC的模擬輸入進(jìn)行A/D變換,最后由實現(xiàn)對數(shù)字信號的濾波處理。將技術(shù)相結(jié)合,利用編程的靈活性,來控制6路ADC的啟動和停止,簡化了整個硬件電路的設(shè)計,達(dá)到動態(tài)地選擇采樣通道的目的。同時將DSP處理后的數(shù)據(jù)發(fā)送到PC ,在PC上利用MATLAB和VC等工具對處理后的數(shù)據(jù)進(jìn)行后端分析。本文主要介紹基于低功耗TMS320VC5502和CPLD的前端數(shù)據(jù)采集和處理系統(tǒng)。

ADS7805簡介

ADS7805是一款具有16位量化精度的A/D轉(zhuǎn)換芯片。它的基本組成結(jié)構(gòu)包括16位精度的基于電容網(wǎng)絡(luò)的逐次逼近型ADC、采樣保持電路、時鐘、對微處理器的接口和三態(tài)輸出。ADS7805的最高采樣速率為100kHz,模擬信號輸入范圍為-10V~+10V,5V單電源供電,最大耗散功率為100mW。

ADS7805為5V單電源供電,輸出的數(shù)據(jù)位為‘1’時,電平值為5V,而DSP芯片的I/O電壓采用的是3.3V邏輯電平,因此,還需要在ADS7805的數(shù)據(jù)輸出端加上電平轉(zhuǎn)換芯片,設(shè)計時選用了74ALVC164245,它可以將5V電平轉(zhuǎn)換為3.3V,也可以將3.3V轉(zhuǎn)換為5V。

硬件接口電路設(shè)計

從硬件角度來看,DSP完成濾波運(yùn)算的核心工作,而整個系統(tǒng)的控制核心是CPLD,DSP對6路A/D采樣的操作是由CPLD產(chǎn)生控制信號,控制著ADS7805的采樣觸發(fā)信號、6個ADC的復(fù)用和解復(fù)用,以及5V轉(zhuǎn)3.3V電壓轉(zhuǎn)換芯片74ALVC164245的選通等。CPLD和DSP的時鐘輸入采用30MHz有源晶振。CPLD、DSP、ADC和電平轉(zhuǎn)換芯片之間的接口電路如圖1所示。

  
圖1 DSP、CPLD與ADC接口電路圖

DSP利用片選信號、地址信號、讀寫使能信號向CPLD發(fā)出指令,CPLD根據(jù)DSP的指令向6個ADS7805發(fā)出控制信號,啟動芯片進(jìn)行采樣并控制DSP完成對數(shù)據(jù)的讀取。由于ADS7805輸出的數(shù)據(jù)要通過電平轉(zhuǎn)換芯片,CPLD還需要控制74ALVC164245芯片的選通和轉(zhuǎn)換,就是圖1中的OE[1:0]信號。因此,DSP必須向CPLD提供的控制信號包括CE2片選信號、ARE讀使能信號和AWE寫使能信號,當(dāng)DSP讀取A/D轉(zhuǎn)換數(shù)據(jù)的時候,選通74ALVC164245進(jìn)行電平轉(zhuǎn)換,當(dāng)ADC對模擬信號進(jìn)行A/D轉(zhuǎn)換時,不使能164245芯片,以免造成多路數(shù)據(jù)引起的數(shù)據(jù)總線沖突。由于有6個ADS7805,所以至少需要分配3根地址線信號(一般選為最低3位地址線引腳)區(qū)分這6個ADS7805,但3根地址線信號實際上可以用來表示8個地址,剩余的2個地址也可以利用起來,例如,對剩余的2個地址中的一個進(jìn)行讀操作可以視為DSP發(fā)出命令,用以啟動ADS7805,這樣就可以省去DSP和CPLD之間AWE信號的連接了。CPLD需要提供給ADS7805的信號包括片選信號CS[5:0]和數(shù)據(jù)讀取/啟動轉(zhuǎn)換信號RC[5:0],此外,CPLD還要提供電平轉(zhuǎn)換芯片的片選信號,并且需要接入一個時鐘信號,用來給CPLD提供時序邏輯的同步時鐘信號。

CPLD程序設(shè)計

根據(jù)ADS7805的工作原理和DSP讀寫特性,對CPLD進(jìn)行編程來實現(xiàn)DSP對6個ADS7805的分時讀取操作以及啟動ADS7805的轉(zhuǎn)換。

整個程序采用Verilog HDL語言設(shè)計。為了便于測試,增加了一個FLAG標(biāo)志信號,當(dāng)FLAG為低的時候,說明DSP正在讀取ADS7805轉(zhuǎn)換過的數(shù)據(jù)。當(dāng)FLAG為高的時候,說明ADS7805正在進(jìn)行新一輪的轉(zhuǎn)換。程序設(shè)計的重點(diǎn)在于啟動ADS7805的新一輪采樣,而ADS7805啟動采樣需要CS和RC同時為低且保持40ns。當(dāng)DSP讀完6個ADC的數(shù)據(jù)后就要啟動新一輪采樣。當(dāng)對第6個ADS7805的讀取操作完成后,F(xiàn)LAG標(biāo)志位被拉高并利用計數(shù)器進(jìn)行記時,輸入的時鐘頻率是30MHz。因此需要讓RC[5:0]和CS[5:0]輸出信號至少保持2個時鐘周期的低電平才能成功地啟動下一次A/D轉(zhuǎn)換。根據(jù)系統(tǒng)的要求,CPLD程序主要分3個always塊。

第一個模塊利用DSP的CE2地址空間選擇信號、地址線A[4:2]、ARE讀信號以及定義的3位計數(shù)器cnt[2:0]作為觸發(fā)信號。當(dāng)CE2和ARE都為低時,根據(jù)DSP的A[4:2]選擇6個中的一個進(jìn)行讀取,其他5個都被禁止,這時,RC[5:0]應(yīng)該均為高。如果A[4:2]=000,那么CS[5:0]=111110,開始讀第一個ADS7805的數(shù)據(jù)到DSP。為了防止數(shù)據(jù)丟失,在讀數(shù)據(jù)的時候,RC[5:0]應(yīng)該始終保持為高,因為如果CS[5:0]和RC[5:0]信號中同一位均保持為低超過40ns,就會啟動一次新的采樣,這樣會造成沒有被讀的ADS7805產(chǎn)生一次新的采樣而丟掉之前轉(zhuǎn)換的數(shù)據(jù),對整個系統(tǒng)的結(jié)果造成很大的影響。讀完第6個ADC以后,在ARE的上升沿將FLAG標(biāo)志拉高,這時計數(shù)器開始記數(shù),根據(jù)記數(shù)器的數(shù)值,當(dāng)2cnt[2:0]6的時候,將RC[5:0]和CS[5:0]同時拉低,這樣有3個時鐘周期的長度大概有100ns,保證了同時為低的時間不小于40ns,啟動新一輪的采樣。第二個always模塊主要實現(xiàn)對FLAG標(biāo)志位的判斷和設(shè)定。當(dāng)A[4:2]=000時,說明DSP開始讀A/D采樣數(shù)據(jù),這時FLAG=0。當(dāng)A[4:2]=101時,說明6個ADS7805數(shù)據(jù)已經(jīng)被讀完,需要進(jìn)行新的采樣,這時FALG=1。第三個always模塊主要實現(xiàn)計數(shù)器的設(shè)計。記數(shù)時鐘頻率為30MHz。當(dāng)FLAG為高且cnt[2:0]7時,開始記數(shù)。當(dāng)FALG為低時,對計數(shù)器進(jìn)行復(fù)位。

根據(jù)以上設(shè)計思路,成功地做到了對6路信號的采樣和讀取控制,達(dá)到了預(yù)期的效果。仿真波形如圖2所示。

 
圖2 CPLD仿真波形圖

DSP軟件設(shè)計

在進(jìn)行DSP程序設(shè)計之前,先利用MATLAB的FDATOOL工具設(shè)計數(shù)字濾波器,將濾波器系數(shù)以.h文件形式導(dǎo)出MATLAB,在CCS中定義一個數(shù)組存放濾波器系數(shù),就可以成功地將濾波器系數(shù)導(dǎo)入CCS。

本文主要介紹DSP對多路信號讀取并處理的軟件設(shè)計方案。圖3是整個程序的流程圖。首先應(yīng)該對DSP芯片進(jìn)行初始化,主要包括對TMS320VC5502的PLL寄存器進(jìn)行初始化、初始化系統(tǒng)中斷向量表、EMIF的初始化和定時器的初始化。DSP通過EMIF接口對外圍ADC的轉(zhuǎn)換數(shù)據(jù)進(jìn)行讀取。整個數(shù)據(jù)讀取和數(shù)字濾波工作是在定時器中斷程序中進(jìn)行的。定時器模塊主要用來確定采樣周期,即每來一個定時器中斷就對信號進(jìn)行一次采樣并完成對信號的實時處理運(yùn)算。因此,定時器的中斷周期也就是采樣周期,同時,也規(guī)定了DSP做一次信號處理運(yùn)算所耗時間的上限,即必須在相鄰兩次的時鐘中斷之間完成一次處理所需要的運(yùn)算和操作。然后初始化EMIF模塊,這一部分比較重要,因為ADC轉(zhuǎn)換好的數(shù)據(jù)是通過EMIF接口送進(jìn)DSP芯片的。ADC芯片在本系統(tǒng)中被內(nèi)存化了,也就是說,從DSP芯片的角度看,讀寫ADC芯片和讀寫異步SRAM沒有差別,因此,要將ADC芯片也分配到片外存儲空間里,本系統(tǒng)采用的方法是將ADC芯片分配到CE2空間0x400000~0x400005連續(xù)的6個地址,使用異步16位SRAM的配置方式來配置CE2空間的控制寄存器。當(dāng)有中斷請求時,DSP就進(jìn)入頻率為40KHz的定時器中斷,進(jìn)行讀取和濾波工作。

 
圖3 DSP程序流程圖

系統(tǒng)功耗估計

通過查閱芯片手冊可以知道,TMS320VC5502需要的1.26V核心電壓供電能力為250mA,3.3V的I/O電壓和鎖相環(huán)I/O電壓的供電能力為50mA, DSP芯片的功耗為480mW。ADS7805芯片的功耗典型值為100mW,6個共計600mW。CPLD的3.3V電源消耗電流的典型值為100mA,即330mW。這樣,整個系統(tǒng)功耗大概為1.5W。在使用電池供電的情況下,這個功耗大小也是可以接受的。例如,使用一個12V輸出、50Ah的蓄電池,理想情況下可以對系統(tǒng)供電400小時。即使考慮電壓轉(zhuǎn)換過程中的能量損耗,用上述規(guī)格的蓄電池對系統(tǒng)供電40個小時也是可行的。

結(jié)語

本文介紹了一種基于DSP和CPLD的低功耗多路數(shù)據(jù)采集系統(tǒng)。 CPLD簡化了硬件設(shè)計,可以很方便地對系統(tǒng)進(jìn)行在線編程,具有很高的靈活性。本系統(tǒng)已應(yīng)用于軍事等具有低功耗、高性能要求的領(lǐng)域。



關(guān)鍵詞: DSP 數(shù)據(jù)處理 CPLD

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉