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