任何一種自動控制系統(tǒng)都離不開數(shù)據(jù)采集裝置,它的性能直接影響整體系統(tǒng)的工作性能。數(shù)據(jù)采集裝置向著高速、實時方向發(fā)展,對數(shù)據(jù)的傳輸和控制速度也提出了較高要求。DSP(數(shù)字信號處理器)是一種適合于實現(xiàn)各種數(shù)字信號處理運算的微處理器,具有哈佛結(jié)構(gòu)、支持流水線處理、快速的指令周期等優(yōu)點,因而在嵌入式系統(tǒng)中得到廣泛的應(yīng)用。事實上,以DSP為核心來構(gòu)建數(shù)據(jù)采集裝置也已經(jīng)成為一種常用的有效方法。
在多任務(wù)信號處理系統(tǒng)中,考慮到設(shè)計系統(tǒng)的復雜性,經(jīng)常需要使用雙DSP協(xié)同工作來構(gòu)成系統(tǒng)。雙DSP系統(tǒng)的優(yōu)點在于,可以通過計算能力的均勻分布,使系統(tǒng)具有較好的冗余能力、更快的處理速度、模塊化的體系結(jié)構(gòu)。正因為雙DSP系統(tǒng)的應(yīng)用越來越廣泛,如何解決好雙DSP間的數(shù)據(jù)共享也變得越來越重要。如果需要進行大量數(shù)據(jù)的高速交換,依靠控制器自帶的串口實現(xiàn)數(shù)據(jù)的串行傳輸已很難滿足需求,必須尋求一種能進行高速數(shù)據(jù)通信的方法。而采用雙端口RAM是解決雙DSP之間高速數(shù)據(jù)通信的有效辦法,該方法能夠方便地構(gòu)成各種工作方式下的高速數(shù)據(jù)傳送介質(zhì),很好地解決因數(shù)據(jù)傳輸速度低所引起的瓶頸問題。
隨著信息技術(shù)的飛速發(fā)展,數(shù)字信號處理器(DSP)得到了廣泛的應(yīng)用,基于A/D,DSP,D/A的數(shù)據(jù)采集模式已經(jīng)被大多數(shù)人所接受。在現(xiàn)代生物信號采集方案中,人們不僅要求系統(tǒng)有高速的數(shù)據(jù)處理能力,而且還要求其有高速的數(shù)據(jù)處理能力和高精度、多通道的D/A轉(zhuǎn)換能力。
基于 TI 公司的 TMS320VC5509 為核心的數(shù)據(jù)采集系統(tǒng) ,著重介紹了如何利用 DSP5509 的 DMA 控制器 ,實現(xiàn)系統(tǒng)中圖像數(shù)據(jù)的傳輸功能。
基于 DSP5509 的數(shù)據(jù)采集系統(tǒng)
系統(tǒng)采用了 DSP + FP GA 的雙核結(jié)構(gòu) ,由 CMOS 感光芯片 OV7620 采集圖像 , 得到數(shù)據(jù)源 , FP GA 作為輔助處理器 ,控制部分外圍器件并協(xié)助采集數(shù)據(jù) ,DSP 芯片 TMS320VC5509 作為核心芯片 ,主要負責數(shù)據(jù)處理。系統(tǒng)結(jié)構(gòu)如圖 1 所示:
DSP 芯片除了連接電、時鐘和J TA G 等其工作所必須電路外 ,還外接了一塊 FLASH 作為程序存儲器 ,一塊SDRAM 作為數(shù)據(jù)存儲器。F IFO 作為 CMOS 所采集的圖像數(shù)據(jù)的暫存器 ,待 DSP 發(fā)出特定信號 ,便可把其內(nèi)部存儲的數(shù)據(jù)傳至 DSP 。
用 DMA 控制器實現(xiàn)數(shù)據(jù)傳輸?shù)乃枷?/strong>
硬件電路接口
DSP 與 F IFO 的接口系統(tǒng)中 ,F(xiàn) IFO 采用的是 AL422B ,這是一款由AverLogic 公司專門推出的視頻幀存儲器 ,它的容量大小為 384 K 3 8bit ,其電路連接如圖 2 所示。此款 F IFO 的容量比較大 , 可以完整存放由OV7620 所采集的一幀圖像。F IFO 的具體工作方式為 ,當系統(tǒng)發(fā)出采集信號 ,DSP 的/ AWE 和/ CE2管腳都輸出低電平 , 通過 FP GA 所實現(xiàn)的或門 , 使得 AL422B 的/ W 管腳為低 , 此時 F IFO 可寫 , 圖像數(shù)據(jù)由OV7620 進入 F IFO ;當采集完一幀圖像后 ,DSP 的/ ARE 和/ CE2 管腳都輸出低電平 ,通過 FP GA 所實現(xiàn)的或門 ,使得 AL422B 的/ R 管腳為低 ,此時 F IFO 可讀 ,圖像數(shù)據(jù)由 F IFO 進入 DSP 。 31112 DSP 與 SDRAM 的接口
通過外部存儲器接口 ( EM IF) DSP 可與 SDRAM 實現(xiàn)無縫連接 , 系統(tǒng) SDRAM 采用的是 H YN IX 公司的H Y57V641620 ,其存儲容量為 4 3 1M ,連接電路如圖 3 所示。
DSP 的 CE0 為片選信號 ,B E02B E1 為字節(jié)使能信號 ,CL KM EM 為同步時鐘信號 ,行選通信號/ SDRAS ,列選通信號/ SDCAS 和寫使能信號/ SDWE 分別于SDRAM 的/ RAS 、/CAS 、/WE 管腳相連 , DSP 的地址線 A 和數(shù)據(jù)線 D 直接與 SDRAM 的相連。
TMS320 VC5509 的 DMA 控制器的特點
DMA 可獨立于 CPU 工作; 有 4 個標準端口與內(nèi)部 DARAM 、SARAM 、外部存儲器和外設(shè)相連;有一個輔助端口用于 HPI 和存儲器之間的數(shù)據(jù)傳輸; 具有 6個通道;可以設(shè)置每個通道的優(yōu)先級;每個通道的傳輸可以由選定事件觸發(fā); 當操作完成后 ,DMA 控制器可向 CPU 發(fā)出中斷。
DMA 傳輸
TMS320VC5509 的存儲空間包括統(tǒng)一的數(shù)據(jù)/ 程序空間和 I/ O 空間 ,數(shù)據(jù)空間地址用于訪問存儲器和內(nèi)存影射寄存器。DSP5509 的內(nèi)部地址線為 24 位 ,但當訪問數(shù)據(jù)空間時使用 23 位地址 ,并將 23 位地址左移一位 ,最低有效位置 0 ,使得地址總線傳輸 24 位地址。故 DSP 在數(shù)據(jù)空間的尋址范圍為 8M ,其 M EMRO Y MA P 如圖 4所示。
由圖 4 可以看到 ,以 CE0 為片選信號的 4M 容量 SDRAM 占用了 DSP 數(shù)尋址空間的 CE02CE1 兩個片區(qū) ,以 CE2 為讀寫控制信號的 F IFO 始終為 CE2 片區(qū)的起始地址0x800000 。F IFO 是作為數(shù)據(jù)源 ,且地址固定不變 ,SDRAM 是作為數(shù)據(jù)傳輸?shù)哪康?,其起始地址為 0x040000 ,且每接收一個數(shù)據(jù)單元后 ,地址增加 1 。
DMA 通道傳輸?shù)哪康亩丝诤驮炊丝谟?a target="_blank">參數(shù)寄存器 DMACS2DP 中的 DST ( SRC) 字段來確定:
當 DST ( SRC) = xx00 時 ,目的(源) 端口為 SARAM ;
當 DST ( SRC) = xx01 時 ,目的(源) 端口為 DARAM ;
當 DST ( SRC) = xx10 時 ,目的(源) 端口為 EM IF ;
當 DST ( SRC) = xx11 時 ,目的(源) 端口為 Perip heral 。
DMA 通道在數(shù)據(jù)傳輸過程中的地址修改方式由 DMACCR
寄存器中的 DST ( SRC) AMODE 字段來確定:
當DST ( SRC) AMODE = 00 時 ,目的(源) 地址為固定地址 ,用于單元傳輸;
當DST ( SRC) AMODE = 01 時 ,目的(源) 地址再每個單元傳輸完后自動增加 ,根據(jù)數(shù)據(jù)的位數(shù)是 8 位、16 位還是 32 位 ,地址分別增加 1 、2 或 4 。
當DST ( SRC) AMOD E = 10 時 ,目的(源) 地址再每個單元傳輸完后自動增加一個索引值 ,索引值由單元索引寄存器 DMACEI/ DMACSEI 確定。
當DST ( SRC) AMOD E = 11 時 ,目的(源) 地址再每個單元傳輸完后按單元索引和幀索引自動增加 ,索引值由單元索引寄存器 DMACEI/ DMACSEI 和幀索引寄存器 DMACF I/ DMACSF I 確定 ,又稱為雙索引。
4 程序加載
調(diào)用 DMA 庫函數(shù)首先要在頭文件中包含 csl - dma. h 文件 ,文件中定義了一名為 DMA - Config 的結(jié)構(gòu)體如:
typedef st ruct {
Uint16 dmacsdp ; DMA 通道控制寄存器
Uint16 dmaccr ; DMA 通道中斷寄存器
Uint16 dmacicr ; DMA 通道狀態(tài)寄存器
DMA - Adr Pt r dmacssal ; DMA 通道源起始地址(低字段)
Uint16 dmacssau ; DMA 通道源起始地址(高字段)
DMA - Adr Pt r dmacdsal ; DMA 通道目的地址(低字段)
Uint16 dmacdsau ; DMA 通道目的地址(高字段)
Uint16 dmacen ; DMA 通道數(shù)據(jù)單元數(shù)量寄存器
Uint16 dmacf n ; DMA 通道幀數(shù)寄存器
# if DMA DST AND SRC INDEX SU PPOR T
- - - - - -
對于 5509A ,5510 P G2
Uint16 dmacsfi ;
Uint16 dmacsei ;
Uint16 dmacdfi ;
Uint16 dmacdei ;
# else 對于 5509 ,5510 P G1
Uint16 dmacfi ; DMA 通道幀索引寄存器
Uint16 dmacei ; DMA 通道單元索引寄存器
# endif
} DMA - Config ;
在定義了結(jié)構(gòu)體 DMA - Config 后 ,便可以在主程序中聲明所需的配置:
DMA - Config myconfig = {
。。。。。。
}
聲明配置結(jié)構(gòu)后 ,需調(diào)用 DMA - open 函數(shù)初始化 DMA 句柄:
DMA - Handle myhDma ;
然后打開 DMA 通道 0 :
myhDma = DMA - open (DMA - CHA0 , 0) ;
調(diào)用 DMA - config 函數(shù)對 DMA 進行配置:
myconfig. dmacssal =
(DMA - Adr Pt r) ( ( ( Uint32) ( myconfig. dmacssal) 《 《 1)
&0xFFFF) ;
myconfig. dmacdsal =
(DMA - Adr Pt r) ( ( ( Uint32) ( myconfig. dmacdsal) 《 《 1)
0xFFFF) ;
配置通道:
DMA - config ( myhDma , &myconfig) ;
調(diào)用 DMA - start 函數(shù)開始 DMA 傳送:
DMA - start ( myhDma) ;
等待 DMA 狀態(tài)寄存器的幀狀態(tài)位指示傳輸結(jié)束:
while ( ! DMA - F GETH ( myhDma ,DMACSR ,F(xiàn)RAM E) ) {
}
關(guān)閉句柄:
DMA - close ( myhDma) ;
著重介紹了如何利用 DSP 的 DMA 控制器在系統(tǒng)中從 F IFO 向 SDRAM 傳輸數(shù)據(jù) ,經(jīng)實踐檢驗 ,此方法結(jié)構(gòu)簡單、可靠性高 ,并實現(xiàn)了 DSP 對并行數(shù)據(jù)的高速采集 ,不僅在系統(tǒng)中得到了很好的應(yīng)用 ,在其它需要實時數(shù)據(jù)采集系統(tǒng)中也有很廣泛的應(yīng)用前景。
評論