基于TMS320C6713和FPGA的高速實(shí)時(shí)采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
2008-03-27
作者:林 林, 侯春萍, 閆 浩, 柳
摘 要:介紹了基于TMS320C6713和Altera EP2C20F256的高速實(shí)時(shí)數(shù)據(jù)采集" title="實(shí)時(shí)數(shù)據(jù)采集">實(shí)時(shí)數(shù)據(jù)采集處理系統(tǒng)的軟硬件設(shè)計(jì)方案。該方案以TMS320C6713為核心處理器,用EP2C20F256實(shí)現(xiàn)輸入輸出FIFO。實(shí)驗(yàn)結(jié)果表明,在一定的算法復(fù)雜度的情況下,對(duì)信號(hào)的采樣頻率可達(dá)到6MHz,該方案完全可以滿足大多數(shù)場(chǎng)合對(duì)數(shù)據(jù)采集及處理的精確度和實(shí)時(shí)性" title="實(shí)時(shí)性">實(shí)時(shí)性的要求。
關(guān)鍵詞: TMS320C6713 EP2C20F256 高速實(shí)時(shí)采集
高速實(shí)時(shí)采集處理系統(tǒng)是現(xiàn)代以微處理器為核心的各種控制、實(shí)時(shí)監(jiān)控、實(shí)時(shí)信號(hào)處理系統(tǒng)的核心組成部分。由于在控制、實(shí)時(shí)監(jiān)控等領(lǐng)域?qū)λO(jiān)控信號(hào)精確度的要求越來(lái)越高,所以這種系統(tǒng)必須可以提供高速的采樣速率" title="采樣速率">采樣速率,以滿足在一定的時(shí)間內(nèi)可以采集更多個(gè)采樣點(diǎn)的要求,使采樣系統(tǒng)更加精確。同時(shí),又由于一些應(yīng)用對(duì)于實(shí)時(shí)性的要求,系統(tǒng)必須在滿足高速采樣的條件下,還可以對(duì)信號(hào)進(jìn)行快速、實(shí)時(shí)地處理。針對(duì)以上問(wèn)題本文提出了一種既能滿足高速采樣要求,又能提供實(shí)時(shí)處理能力的數(shù)據(jù)采集處理系統(tǒng)的設(shè)計(jì)方案。
該方案根據(jù)實(shí)際要求,采用了美國(guó)德州儀器公司推出的TMS320C6713作為核心處理器。TMS320C6713是德州儀器公司推出的一款浮點(diǎn)型高性能DSP,主頻為167MHz,處理能力達(dá)到1200MFOLPS。其主要特點(diǎn)如下[1]:
?。?)采用了超長(zhǎng)指令字(VLIW)體系結(jié)構(gòu),有8個(gè)獨(dú)立功能單元,32個(gè)32bit通用寄存器,一個(gè)時(shí)鐘周期同時(shí)執(zhí)行8條32bit指令,且所有指令都是條件指令。
?。?)硬件支持IEEE的單精度和雙精度指令,字節(jié)尋址(8、16、32bit 數(shù)據(jù))。
(3)L1/L2存儲(chǔ)器結(jié)構(gòu),4KB一級(jí)程序緩存,4KB一級(jí)數(shù)據(jù)緩存,64KB二級(jí)緩存。
(4)16個(gè)獨(dú)立通道的EDMA,每個(gè)通道對(duì)應(yīng)一個(gè)專用同步觸發(fā)事件,使得EDMA可以被外設(shè)中斷、EDMA傳輸完成等事件觸發(fā)。
?。?)32bit外部存儲(chǔ)器接口(EMIF),與異步器件(SRAM、EPROM)和同步器件(SDRAM、SBSRAM)無(wú)縫連接,一共有256M可尋址范圍。
Altera公司的EP2C20F256是低功耗Cyclone II FPGA家族成員之一[2],具有18K個(gè)邏輯單元,240KB的嵌入式RAM,26個(gè)18×18的嵌入式乘法器,4個(gè)系統(tǒng)時(shí)鐘管理鎖相環(huán),最大可達(dá)315個(gè)I/O口。本系統(tǒng)用此款FPGA設(shè)計(jì)了復(fù)雜的邏輯,充分利用了FPGA的優(yōu)勢(shì),使盡可能多的工作軟件化,這樣無(wú)論調(diào)試還是修改都極為方便。利用EP2C20F256在本系統(tǒng)中設(shè)計(jì)兩個(gè)軟FIFO作為DSP接收數(shù)據(jù)的緩存,這樣可以減少外部對(duì)DSP的中斷次數(shù),提高DSP處理的效率。此外,還有與DSP接口的外圍電路,實(shí)現(xiàn)與DSP的無(wú)縫連接。
1 高速實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)的硬件設(shè)計(jì)
系統(tǒng)由兩組A/D、D/A" title="D/A">D/A組成,一組為12bit,可配置:另一組是雙路10bit,可以通過(guò)軟件設(shè)置選擇哪一路A/D、D/A來(lái)工作。為了保證系統(tǒng)的高速實(shí)時(shí)性,用EP2C20F256(FPGA)設(shè)計(jì)了兩個(gè)軟FIFO,以減少對(duì)DSP的中斷次數(shù)。雖然總體會(huì)有延時(shí),但避免了DSP中斷帶來(lái)的開(kāi)銷(xiāo)。時(shí)鐘的同步設(shè)計(jì)對(duì)于系統(tǒng)的正常工作起到了至關(guān)重要的作用。DSP掛載了用兩片4M×16bit的SDRAM組成一個(gè)4M×32bit的SDRAM,以便與TMS320C6713的32位數(shù)據(jù)總線相匹配,充分利用6000系列DSP的性能優(yōu)勢(shì)。DSP還掛載了一個(gè)128KB的ROM,用于固化程序。因?yàn)镈SP的EMIF接口外接了多個(gè)存儲(chǔ)器(利用FPGA設(shè)計(jì)的FIFO及控制線),所以必須設(shè)計(jì)總線隔離使各個(gè)存儲(chǔ)器工作都與其他存儲(chǔ)器互不影響。此外,系統(tǒng)外圍包含了電源模塊、下載接口、時(shí)鐘同步與系統(tǒng)復(fù)位電路。系統(tǒng)的硬件示意圖如圖1所示。
1.1 基于 FPGA的兩個(gè)4M、12bit FIFO的設(shè)計(jì)
FIFO在整個(gè)系統(tǒng)中被用作輸入數(shù)據(jù)和輸出數(shù)據(jù)的緩存,最主要的目的就是減少A/D對(duì)DSP的中斷次數(shù),將一個(gè)數(shù)據(jù)中斷一次變?yōu)? 048個(gè)數(shù)據(jù)中斷一次,這樣減少了中斷的斷點(diǎn)保護(hù)、現(xiàn)場(chǎng)保護(hù)等額外開(kāi)銷(xiāo),給處理數(shù)據(jù)爭(zhēng)取了盡可能大的時(shí)間,但是整體的時(shí)延將會(huì)增大,不過(guò)所引起的時(shí)延是在設(shè)計(jì)指標(biāo)限定內(nèi)。采用quartus II設(shè)計(jì)的FIFO結(jié)構(gòu)圖如圖2[2]所示,屬于異步FIFO,故與DSP的異步讀寫(xiě)相匹配。
圖中,AOE、CE_wr_en_n、fifo1_rd_clk_ARE、fifo2_wr_clk_AWE、dspdata[11..0] 是與DSP的EMIF相接的信號(hào),wruseword[11..0]再做些邏輯作為中斷信號(hào)給到DSP的INT4引腳,所有這些都按照標(biāo)準(zhǔn)異步時(shí)序[1~2]來(lái)完成與DSP的通信, Fifo1_wr_en、fifo1_wr_clk、AD2FPGA_data[11..0]用來(lái)與A/D完成數(shù)據(jù)的讀入。fifi2_read_clk、FPGA2DA_data[11..0]用來(lái)與D/A完成數(shù)據(jù)的寫(xiě)出。
1.2 硬件系統(tǒng)中時(shí)鐘的提供與各設(shè)備間的同步
硬件系統(tǒng)中A/D、D/A、FIFO等設(shè)備的時(shí)鐘由DSP控制FPGA來(lái)產(chǎn)生,DSP通過(guò)EMIF接口把采樣速率通知FPGA,F(xiàn)PGA則根據(jù)這個(gè)信息用鎖相環(huán)將晶振的時(shí)鐘進(jìn)行分頻,然后提供給A/D、D/A、FIFO。
本系統(tǒng)將A/D、D/A、FIFO由同一時(shí)鐘控制,這種同步關(guān)系保證了通信的穩(wěn)定性。由于入FIFO與出FIFO是同一時(shí)鐘,在入FIFO收到一個(gè)數(shù)的同時(shí),出FIFO也輸出了一個(gè)數(shù)據(jù),從而避免了FIFO的上下溢出。
1.3 EMIF接口[3]、總線隔離與地址空間的分配
EMIF接口是6000系列DSP以并行總線方式訪問(wèn)外部設(shè)備的唯一途徑,它支持的同步器件包括SBSRAM、SDRAM,異步器件包括SRAM、ROM以及FIFO等,本系統(tǒng)中SDRAM、Flash ROM、FIFO都是通過(guò)EMIF與DSP進(jìn)行通信的。
因?yàn)檫@些器件都是通過(guò)同一數(shù)據(jù)總線和地址總線進(jìn)行數(shù)據(jù)通信,所以需要進(jìn)行總線隔離,本系統(tǒng)在每個(gè)器件前都加了三態(tài)門(mén),通過(guò)EMIF的控制總線,如ARE、AWE、AOE、CE和地址總線進(jìn)行控制,以使DSP在訪問(wèn)一個(gè)器件時(shí)其他器件都為高阻狀態(tài)。
C6713的地址空間被分為四個(gè)部分:CE0、CE1、CE2、CE3。本系統(tǒng)將CE0作為SDRAM的尋址空間,CE1作為Flash ROM的尋址空間,CE2作為FIFO與DSP之間數(shù)據(jù)信息的尋址空間,CE3作為FIFO與DSP間控制信息的尋址空間。
1.4電源管理、JTAG接口和FPGA配置芯片[4]
本系統(tǒng)需要外部直接提供一個(gè)5V的電源,電源的輸出電流不能小于3A,這個(gè)數(shù)據(jù)是根據(jù)所有器件的功耗算得的。系統(tǒng)中需要的其他電壓,如3.3V、2.5V、1.8V、1.2V等由若干電源芯片如MAX660、MAX603、MAX604從5V變壓得到。
本系統(tǒng)對(duì)DSP和FPGA都提供了程序下載口,TMS320C6713(DSP)的七個(gè)JTAG仿真腳/TRST、TMS、TDI、TDO、TCK、EMU1和EMU0連接到一個(gè)14腳雙排插頭上,可與XDS510仿真器相連,系統(tǒng)調(diào)試時(shí)可通過(guò)PC機(jī)下載程序進(jìn)行調(diào)試。EP2C20F256(FPGA)的TMS、TDI、TDO、TCK接到一個(gè)10腳雙排插頭上,作為JTAG模式的下載口。
此外,F(xiàn)PGA還需要加上一個(gè)配置芯片EPCS4SI8,作用類(lèi)似于DSP的Flash ROM,把程序固化在里面,在每次上電時(shí)配置芯片的程序會(huì)加載到FPGA中。
2 高速實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)的軟件設(shè)計(jì)
整個(gè)系統(tǒng)的工作流程如圖3所示,分為初始化DSP、初始化FPGA、等待中斷、中斷處理幾個(gè)過(guò)程。DSP程序由DSP BIOS和CSL相結(jié)合完成。
2.1 初始化DSP、FPGA
初始化DSP主要完成對(duì)DSP寄存器的初始化設(shè)置,根據(jù)選擇來(lái)決定是通過(guò)EDMA搬移數(shù)據(jù)還是由C程序編寫(xiě)搬移數(shù)據(jù)來(lái)初始化不同的寄存器。如果選擇EDMA搬移數(shù)據(jù),那么需要初始化的內(nèi)容包括:使能全局中斷、使能EDMA完成中斷、對(duì)讀通道事件寄存器清0、對(duì)讀寫(xiě)通道的CIPR清0、使能讀寫(xiě)通道的通道中斷使能寄存器。如果選擇由C程序編寫(xiě)搬移數(shù)據(jù),那么需要使能EINT4中斷[5]。
初始化FPGA是DSP通過(guò)EMIF告訴FPGA選擇哪路A/D、D/A,軟FIFO存滿多少給出中斷,以及FPGA產(chǎn)生多大的時(shí)鐘給A/D、D/A和軟FIFO。
2.2 數(shù)據(jù)的搬移與處理
數(shù)據(jù)搬移方式有兩種:EDMA搬移方式及通過(guò)C語(yǔ)言來(lái)實(shí)現(xiàn)數(shù)據(jù)搬移,本系統(tǒng)可以工作在兩種方式下,由軟件來(lái)決定。EDMA工作方式不需要由CPU參與,所以減輕了CPU的工作壓力,使其可以做其他的工作,同時(shí)EDMA方式可以用更少的機(jī)器周期來(lái)實(shí)現(xiàn)讀、寫(xiě)操作。
當(dāng)選擇EDMA方式時(shí),EINT4的到來(lái)觸發(fā)一個(gè)EDMA事件,此事件根據(jù)BIOS中設(shè)置的源地址、目的地址、傳輸計(jì)數(shù)等來(lái)完成采樣數(shù)據(jù)從FIFO讀入到DSP的外部SDRAM中,傳輸完成后觸發(fā)EDMA控制器的中斷,進(jìn)入中斷函數(shù)" title="中斷函數(shù)">中斷函數(shù)。因?yàn)镈SP 6000系列為所有的EDMA通道只提供了一個(gè)EDMA中斷事件,所以進(jìn)入中斷函數(shù)后由程序判斷此次中斷是由搬入EDMA引起的還是由搬出EDMA引起的,如果是搬入EDMA引起,則DSP首先需要對(duì)數(shù)據(jù)進(jìn)行處理,然后對(duì)CIPR相應(yīng)位清0(為使下次搬入EDMA可以進(jìn)入中斷函數(shù))。觸發(fā)搬出的EDMA事件,它同樣根據(jù)BIOS的設(shè)置將處理后的數(shù)據(jù)從DSP外部SDRAM搬到輸出FIFO中,如果事件是由搬出EDMA引起的,則使能EDMA的事件使能寄存器(是對(duì)下一次搬入EDMA進(jìn)行的使能)進(jìn)入等待狀態(tài)。需要注意的是,下一次FIFO中斷信號(hào)的到來(lái)必須在此次過(guò)程進(jìn)入等待狀態(tài)之后,這樣才能不丟失數(shù)據(jù)。所以要對(duì)DSP處理時(shí)間進(jìn)行優(yōu)化控制,使其不能溢出。
當(dāng)選擇通過(guò)C語(yǔ)言來(lái)實(shí)現(xiàn)數(shù)據(jù)搬移時(shí),EINT4的到來(lái)觸發(fā)HWI_INT4的中斷函數(shù),在中斷函數(shù)中,通過(guò)C語(yǔ)言把數(shù)據(jù)從FIFO搬到DSP外部的SDRAM,DSP再對(duì)其處理,然后再搬出去,再次使能EINT4,進(jìn)入等待狀態(tài)。這個(gè)過(guò)程也需要注意整個(gè)時(shí)間不能大于兩次中斷的間隔。
2.3 處理時(shí)間T與采樣速率Fs的數(shù)學(xué)關(guān)系
假定搬入時(shí)間為T(mén)in,搬出時(shí)間為T(mén)out, FIFO讀進(jìn)m個(gè)數(shù)據(jù)產(chǎn)生中斷。則有:
m/Fs>=Tin+T+Tout
在硬件設(shè)計(jì)中,設(shè)定EMIF的讀、寫(xiě)的Setup、Strobe、Hold分別為3、6、2,那么:
T<=m/Fs-2×(2+6+3)×m
在CCS如果測(cè)得處理時(shí)間T小于m/Fs-2×(2+6+3)×m,就能保證系統(tǒng)的實(shí)時(shí)性。此外,如果T一定, Fs一定有一個(gè)上界。
基于TMS320C6713和EP2C20F256設(shè)計(jì)的高速實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)經(jīng)實(shí)驗(yàn)證明,在保證一定復(fù)雜度的實(shí)時(shí)處理的前提下,采樣速率可以達(dá)到6MHz,這足以滿足大多數(shù)場(chǎng)合對(duì)數(shù)據(jù)采集處理的精確度以及實(shí)時(shí)性的需要。該方案具有硬件結(jié)構(gòu)簡(jiǎn)單、成本低的優(yōu)點(diǎn)。同時(shí)由于該系統(tǒng)具有DSP微處理器特性和FPGA的邏輯可編程特性相結(jié)合的特點(diǎn),使該方案又具有設(shè)計(jì)、修改靈活的優(yōu)點(diǎn)。
參考文獻(xiàn)
1 TMS320C6713 data sheet. Texas Instrument, 2005:1~18
2 Cyclone II device handbook. Altera. 2005:17~19
3 TMS320C6000 EMIF overview of support. Texas Instrument,2005:12~15
4 Ludvig, J, McCarthy J, Neuendorffer S et al.Reprogrammable platforms for high-speed data acquisition, Design Automation for Embedded System, 2002:1~24
5 TMS320C6000 chip support library API reference guide.Texas Instrument, 2005:133~147
6 李方慧,王 飛,何佩琨. TMS320C6000系列DSPs原理與應(yīng)用(第二版). 北京:電子工業(yè)出版社,2003:390~408