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