1 引言 隨著信息技術的發展,數字信號處理技術成為數字化社會最重要的技術之一。由于數字信號處理器(DSP)速度快,穩定性高,功耗小,近些年來在通信、圖像處理、自動控制等領域中得到了廣泛的應用。其中,美國德州儀器的TMS320系列DSP占據了世界DSP 市場的主要份額,TI也因此成為了世界上最大的DSP制造商。本系統采用了TMS320C6722浮點型DSP芯片。 EMIF接口(External Memory Interface)是TMS320系列DSP上具有的一種高速接口,其設計初衷是實現DSP與不同類型的外部擴展存儲器(如 SDRAM,FLASH等)之間的高速連接。在當前的一些應用中,為了更充分的應用DSP的運算能力,擴展其引腳資源,工程師們常用EMIF接口連接FPGA,再通過FPGA與多種外部設備相連。這樣,FPGA成為了一個中轉站,各種數字芯片的數據都可以通過FPGA傳輸至DSP.對于更加復雜的系統,當一塊FPGA芯片的引腳資源都被用盡時,可以在DSP 的EMIF接口上連接多塊FPGA芯片,再將功能各異的芯片連接至FPGA。這樣,DSP芯片僅通過EMIF接口就能實現對復雜系統的控制。 2 基于EMIF接口的DSP+FPGA系統實現 2.1 系統架構 圖1 是本人所使用的系統,DSP芯片通過EMIF接口連接了2 片FPGA,其中EP2C8F256I8 主要負責DSP核心處理所需數據的交換,連接了FLASH 芯片,SDRAM芯片,A/D 芯片。另一塊FPGA 芯片EP2C8F144I8 負責與外部通信,連接了USB 接口芯片,I2C通信芯片和CAN總線通信芯片。 TMS320C6722 型DSP的EMIF接口設計初衷是與外部擴展存儲器連接,EMIF接口有兩種工作方式:SDRAM工作模式與異步工作模式。SDRAM工作模式是專為 SDRAM設計的同步工作模式,EMIF接口能自動給SDRAM進行刷新;異步工作模式是與SRAM、FLASH等異步器件工作時采用的模式。 圖2 所示是DSP與一片FPGA的接口連接圖,DSP與多片FPGA連接時,接口可以按圖的方式復用,TMS320C6722型DSP的EMIF接口有14根地址線,與不同FPGA進行通信時,要使用不同的地址。 2.2 DSP 與FPGA 通信時序 2.2.1 異步讀操作 DSP發出對FPGA的讀申請時,就會進行異步讀操作。當讀操作不能在外部器件的一個訪問周期內完成時,EMIF就會進行多個周期的操作,直到完成整個申請。 一個EMIF讀操作分為建立時間、觸發時間和保持時間三部分。在建立時間開始時,EM_CS[2]片選信號拉低,同時地址線EM_A與EM_BA給出所讀取數據的地址。觸發時間開始時,EM_OE信號拉低,同時FPGA在EM_D信號線上傳輸數據,DSP將在觸發時間的最后一個時鐘處對數據采樣。保持時間中EM_OE 信號將拉高,并在保持時間結束后,EM_CS[2]信號拉高。在整個周期中EM_WE_DQM、EM_WE、EM_RW信號始終為高電平。 2.2.2 異步寫操作 DSP發出對FPGA的寫申請時,就會進行異步寫操作。當寫操作不能在外部器件的一個訪問周期內完成時,EMIF就會進行多個周期的操作,直到完成整個申請。 類似于讀操作,EMIF 寫操作分為建立時間、觸發時間和保持時間三部分。在建立時間開始時,EM_CS[2]片選信號拉低,EM_RW信號拉低,同時地址線EM_A與EM_BA給出所讀取數據的地址,數據線EM_D 給出需要寫入FPGA的數據。觸發時間開始時,EM_WE信號拉低,EM_WE_DMQ信號給出字節使能信號。保持時間開始時EM_WE_DMQ信號與 EM_WE信號拉高,并在保持時間結束后,EM_CS[2]信號與EM_RW信號拉高。在整個寫操作周期中EM_OE信號始終為高電平。 DSP 通過配置EMIF 接口的寄存器來實現上述時序,FPGA可采用IP 核來實現EMIF協議,不同的FPGA芯片要采用不同的地址。 3 系統BOOT方法 TMS320C6722 型DSP的內部沒有可寫的ROM,DSP的程序必須存放在外部器件中,DSP芯片上電后必須首先從外部芯片下載程序。本款DSP可以通過SPI總線啟動、通過I2C總線啟動和通過EMIF接口啟動。這幾種Boot方式和對應的引腳配置如表1所示,在本系統中,EMIF接口除了實現通常的數據交換,還兼任帶動DSP啟動的功能。 系統上電后,DSP的RESET引腳要通過下拉電阻拉低,使DSP 處于復位態。FPGA芯片EP2C8F256I8上電后從FPGA 配置芯片EPCS4中下載程序啟動。FPGA啟動成功后將DSP芯片的SPI0SOMI引腳與SPI0CLK引腳拉低,將SPI0SIMO引腳拉高,然后再將RESET引腳拉高。這樣配置是為了使DSP退出復位態時能根據上述3個引腳的電平獲知DSP芯片將通過EMIF接口啟動。此后,DSP芯片將從EMIF接口讀取1KB數據,并將這1KB數據存放于DSP的RAM中,再執行這1KB的程序。 上述過程稱為DSP的第一次啟動過程。這1KB的程序是由匯編語言編寫并通過CCStudio 軟件編譯成機器語言,存放于FPGA中(通過mif 文件編譯進FPGA的程序)。該1KB程序的功能是再次調用EMIF 接口,操作FPGA,使得FPGA 通過IP 核從FLASH芯片中將其余的程序(本系統的程序約為32K)拷入DSP的RAM 中并執行這些新拷入的程序。這是DSP 的第二次啟動。第一次啟動是硬件啟動,是TMS320C6722 型DSP已經設定好的啟動方式,第二次啟動是軟件啟動,所執行的啟動程序由用戶編寫。 綜上,本文介紹了DSP芯片通過EMIF接口連接FPGA的硬件電路與時序,根據本文介紹的方法,DSP芯片通過FPGA能控制大量外部芯片工作,僅使用DSP的EMIF接口就能實現DSP啟動和控制復雜系統工作的功能,大大擴展了DSP芯片的靈活性,使其強大的運算功能得以更好的發揮。 |