新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ARM CPU CS89712與C5510 DSP 的接口設計

        ARM CPU CS89712與C5510 DSP 的接口設計

        作者: 時間:2008-03-05 來源: 收藏

          摘 要:以Cirrus Logic公司的ARM 芯片和TI 公司的TMS320V DSP 為例,研究了ARM與DSP 的數據接——HPI 接口的相關技術,并給出了在HPI 接口非復用模式下,CS89712 與C5510 的信號連接圖和嵌入式實時操作系統uCOS-II下驅動程序的部分關鍵源代碼。

        本文引用地址:http://www.104case.com/article/79678.htm

          關鍵詞:ARM CS89712;主機接口(HPI);TMS320VC5510

          引 言

          目前嵌入式系統已被廣泛地應用到電子產品領域和無線通信、網絡通信等高端設備領域。32 位ARM嵌入式處理器具有高性能、低功耗的特性,DSP芯片由于功能強大,加上接口方便、軟件可用資源豐富、編程方便、穩定性好、精度高等優點,應用也越來越廣泛。通常在嵌入式系統的設計中,由ARM嵌入式處理器實現整個系統的協調控制和網絡功能,由DSP 芯片來執行復雜計算,因此需要實現ARM處理器和DSP 之間的數據交換。從某種程度上來說,ARM嵌入式處理器和DSP 之間數據交換的速度決定了整個系統的運行速度和性能。

          ARM CPU CS89712 的特點

          CS89712 是Cirrus Logic 公司一款基于ARM7TDMI的SOC 芯片。它一方面具有ARM 處理器的所有優點:低功耗、高性能;同時又具有非常豐富的片上資源,非常適合嵌入式產品的開發。其特點如下:

          a、采用ARM7TDMI 內核,I/O 電壓3.3 V ,內核電壓2.5 V ;

          b、內置鎖相環(PLL),系統主頻最高達74MHz ;

          c、3種工作模式,可以實現電源管理以降低系統功耗;

          d、8KB 的系統高速緩存(CACHE),極大地提高了系統運行速度;

          e、支持8 個MEMORYBANK,最大外部存儲空間達256MB ,并支持SDRAM;

          f、內置單色LCD 控制器;

          g、2 路異步串口(UART);

          h、27 個通用I/O口;

          i、實時時鐘(RTC)和看門狗電路(WATCHDOG)。

          C55X DSP 及其EHPI 接口

          C5510 DSP 的特點

          以高速、低功耗為特征的VC55X 系列DSP 采用先進的改進型哈佛結構,具有分離的數據總線和程序總線,片內集成了ROM、RAM和多個外設,如通用I/O口、定時器、時鐘發生器、軟件可編程等待狀態發生器、可編程塊切換邏輯、串行口、直接存儲器存取控制器(DMA)和與外部處理器通信用的主機接口(HPI)。

          C55X的增強型主機接口(EHPI)

          TI 的C5510 之前的DSP 系列(C54X系列)中的主機接口(HPI)主要有三種:標準8 位HPI8 接口、增強型8 位HPI8 接口和16 位HPI16 接口。其中C542~C549 內含標準型HPI8 ;C5402、C5410 內含增強型HPI8 ;C5410 以上為HPI16 ;C5409、C5416 的HPI 可以由用戶設置為增強型HPI8 或HPI16。C5510 其內部使用的是增強型主機接口,增強型比標準型更優越之處主要在于:增強型允許主機訪問DSP 內部的所有片內RAM,而標準只能訪問RAM 區中指定的2K字。

          C55X為主機提供增強型的16 位并行接口(EHPI)具有以下特點:

          a、20 位主機地址總線;

          b、16 位主機數據總線;

          c、復用和非復用兩種總線模式;

          d、主機可以訪問C5510 的片內SARAM、片內DARAM和片外存儲器;

          e、在高速傳輸數據時可以自增的20 位的地址寄存器(在復用模式下);

          f、多地址、數據探頭為各種主機提供緊密接口;

          g、HRDY信號用來與主機進行握手;

          C5510 與外部主機或微處理器的連接具有單獨的16 根數據線HD0~HD15、20 根地址線HA0~HA19 和10 根控制線。主機主動通過EHPI 口能夠直接訪問DSP 的存儲區。在圖1 所示的HPI 能訪問的地址范圍內,主機和DSP 可以通過DSP 的內部和外部存儲區來交換信息。除了對主機發中斷(通過置HPIC 寄存器的HINT 位,可以使HINT 線有效)或清除主機發來的中斷(通過清HPIC 寄存器的DSPINT標志)需要DSP 干涉外,C5510 幾乎不用進行其他操作。片內的DMA 通道會自動輔助完成RAM區與HPI 數據寄存器的數據傳輸。主機由HCNTL0/1 線來選擇HPI 的某個控制寄存器,如表1 所列。通過對這4 個寄存器的訪問,就可以在所設安全機制的允許范圍下讀/寫DSP 的所有或部分片內RAM。

          主機由HCNTL0/1 線來選擇HPI 的某個控制寄存器。在非復用模式下,HCNTL0 決定HPI 是否訪問控制其(HPIC)寄存器或數據寄存器(HPID),如表1 所示(0 ——低電平,1 ——高電平),此時HCNTL1未被使用。

          表1  HCNTL0/1 的選擇功能描述

          

          圖1  通過HPI 可以訪問的DSP 存儲區圖

          CS89712 與C5510 DSP 的接口設計

          硬件連線

          TMS320VC5510 與CS89712 連接的接口電路如圖3 所示。由圖2 可見,C5510 通過EHPI 與主機設備相連時,除了EHPI 數據總線及控制信號線外,不需要附加其它的邏輯電路,非常方便。

          

          圖2  EHPI接口非復用模式下的連接圖

          從EHPI 寄存器的編址方式可以看出,將HPI16接口安排在CS89712 的BANK3(即地址范圍0X03000000~0X03FFFFFF),而且CS89712 具有內部譯碼器,直接產生片選信號CS3。

          由于C55X HPI16 是一個16 位的并行端口,而C5510 的內部結構為16 位,所以在非復用模式下,只需將數據和地址總線分別連接即可。

          另外,還有幾個關鍵的控制信號需要連接。一個就是HR/W信號,由于CS89712 沒有此信號,使用端口A 的PA3 來代替。當PA3=1 時,代表讀操作,反之為寫操作。

          由于CS89712 和C5510 EHPI 接口的控制邏輯不盡相同,需要使用其它的一些信號線來進行模擬,此時要嚴格遵循EHPI 的讀寫時序。

          軟件設計

          在硬件連接設計好的基礎上,我們還需要通過正確的編程才能實現我們預想的時序。因為我們在ARM CS89712 上運行嵌入式操作系統uCOS-II ,所以在寫程序對HPI 接口進行讀/寫操作時將HPI 接口看作一個外部設備,將完成讀/寫操作的程序看成在uCOS-II 下面的一個字符型驅動。這樣軟件的設計就變成了在uCOS-II 下面驅動程序的開發。考慮到CS89712 不光要將DSP 的數據取過來,而且還要將這些數據處理后再發送出去,這就需要這兩者之間有很好的配合。

          CS89712 與DSP5510 之間的EHPI 接口讀/寫程序主要由兩個部分組成: 11ARM 自身的初始化;21HPI 接口讀寫程序。

          ARM 處理器自身的初始化

          ARM處理器首先要完成自身工作模式等一系列的初始化,才能正常進行EHPI 接口的讀/寫,源代碼如下所示。

          //為了配合EHPI 口的時序,關掉MMU 頁表中

          bank3 的Cache

          Xcount SETA 0x30000c1e

          WHILE Xcount < 0x31000000

          DCD Xcount

          Xcount SETA Xcount + 0x00100000

          WEND

          rMEMCFG1&=0x00ffffff;//設置與DSP 連接的nCS3 :16 位總線寬度、8 個隨機狀態

          rMEMCFG1|=0x01000000;//3 個順序等待狀態、禁止順序訪問、禁止擴展時鐘上面這段代碼主要是對幾個寄存器進行配置。

          在配置好ARM 處理器的工作模式后,對外部I/O 接口BANK3 的對應地址進行讀/寫操作,就可以完成對HPI 接口的相應操作了。

          HPI 接口讀寫程序

          以下的第一句代碼是宏定義,定義了C5510 的EHPI 接口寄存器的地址。在本設計中,已經將HPI口與外部I/O 接口的BANK3 相接,這樣HPI 口將占用外部I/O 接口BANK3 的地址。由于是使用PA3來模擬HPI16 接口的HR/W,所以對DSP 進行讀/寫操作時, 應先將該信號置為相應的讀/寫有效狀態。

          //ARM向DSP 寫數據時

          # define EHPI-BASE 0x3208000

          int t ;

          rPADDR=0x08 ; //PA3 方向定義為輸出

          rPADR=0x00 ; //PA3 為低電平

          t=*(volatile U16* )( EHPI-BASE + Add-offset);//ARM從DSP 讀取數據時

          rPADDR=0x08 ; //PA3 方向定義為輸出

          rPADR=0x08 ; //PA3 為高電平

          (volatile U16*)( EHPI-BASE+Add-offset)=t

          結束語

          以ARM芯片作為主控制器,用DSP 芯片進行運算,然后通過HPI 接口進行通信和交換數據的嵌入式系統設計應用模式的得到越來越廣泛的應用,而這兩者之間能夠高效、快速并且穩定的進行數據交換將是影響系統性能的關鍵部分之一。文中給出的CS89712 和C5510 之間的硬件連接方法和軟件設計經過實踐的驗證,是可行的和滿足要求的。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)


        關鍵詞: ARM 接口 DSP 嵌入式 CPU

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 都昌县| 栾川县| 山阳县| 仁寿县| 新田县| 富裕县| 连山| 郯城县| 旬邑县| 金平| 宁晋县| 金乡县| 阳东县| 永善县| 苗栗市| 图木舒克市| 马鞍山市| 花垣县| 萍乡市| 云和县| 河间市| 福州市| 太原市| 高陵县| 合山市| 平阳县| 安图县| 永平县| 平湖市| 彭阳县| 思南县| 孙吴县| 绵阳市| 密山市| 大方县| 延川县| 泰顺县| 安福县| 华宁县| 武邑县| 如皋市|