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