隨著現(xiàn)代測試技術(shù)的發(fā)展,要求能夠?qū)Ω黝愇⑷跣盘?、高頻信號以及復(fù)雜信號進行快速、精確的記錄和測量,對數(shù)據(jù)采集系統(tǒng)的采樣速率、精度、存儲量等提出了越來越高的要求。為了對電控噴油器的噴霧粒度進行精確測試,我們通過充分利用數(shù)字信號處理器(Digital Sign al Processing,DSP)強大的控制及數(shù)字信號處理能力,配合現(xiàn)場可編程門陣列(Field-Programmable Gate Array,F(xiàn)PGA)高速靈活的數(shù)字邏輯電路實現(xiàn)能力,提出一種基于DSP+FPC認結(jié)構(gòu)的31路微電流信號的采集與實時處理系統(tǒng)來對噴霧粒度進行精確測試。
FPGA和DSP處理器具有截然不同的架構(gòu)。在一種器件上非常有效的算法,在另一種器件上卻可能效率非常低。如果目標應(yīng)用要求大量的并行處理或最大的多通道流量,那么單純基于DSP處理器的硬件系統(tǒng)就可能需要更大的面積、成本或功耗。一個FPGA協(xié)處理器僅在一個器件上就能提供多達550個并行乘法和累加運算,從而以較少的器件和較低的功耗為許多應(yīng)用提供同樣的性能。盡管FPGA在處理大量并行數(shù)據(jù)方面出類拔萃,但對于定期系數(shù)更新、決策控制任務(wù)或高速串行數(shù)學(xué)運算這類任務(wù)來說,它們的優(yōu)化程度比不上DSP處理器。因此,F(xiàn)PGA和DSP處理器的結(jié)合為廣泛的應(yīng)用提供了制勝的解決方案。
FPGA和DSP各有特點,在實際系統(tǒng)中經(jīng)常分工不同的角色。隨著大規(guī)??删幊唐骷陌l(fā)展,采用DSP+FPGA結(jié)構(gòu)的信號處理系統(tǒng)顯示出了其優(yōu)越性,正逐步得到重視。FPGA是在專用ASIC的基礎(chǔ)上發(fā)展起來的,它克服了專用ASIC不夠靈活的缺點,與其他中小規(guī)模集成電路相比。其優(yōu)點主要在于它有很強的靈活性,即其內(nèi)部的具體邏輯功能可以根據(jù)需要配置,對電路的修改和維護很方便,而且在大批量應(yīng)用時,可降低成本。DSP+FPGA結(jié)構(gòu)最大的特點是結(jié)構(gòu)靈活,有較強的通用性,適于模塊化設(shè)計,從而能夠提高算法效率;同時其開發(fā)周期較短,系統(tǒng)易于維護和擴展,適合于實時信號處理。
現(xiàn)在,數(shù)字信號處理器(DSP)正越來越多地應(yīng)用到各種場合,大多數(shù)情況下,模擬信號通過A/D轉(zhuǎn)換后,轉(zhuǎn)成高速的數(shù)字信號發(fā)送給FPGA,經(jīng)過緩沖FPGA向DSP傳送數(shù)據(jù),在DSP中進行核心算法的處理后,再把信號發(fā)回給FPGA,通過FPGA把發(fā)回的信號進行邏輯組合后通過D/A轉(zhuǎn)換成模擬信號輸出??梢?,F(xiàn)PGA和DSP的通信是數(shù)據(jù)傳輸?shù)年P(guān)鍵。
1 DSP與FPGA相關(guān)原理和外設(shè)
本實驗所用的是TMS320C6713系列DSP芯片和ALTERA Cyclone II系列FPGA芯片。FPGA通過DSP的EMIF接口,在DSP的EDMA控制下與DSP進行數(shù)據(jù)傳輸。因此,DSP與FPGA的相關(guān)原理和DSP的EMIF接口的結(jié)構(gòu)和各端口的功能需要簡單的了解。
EMIF是外部存儲器和TMS320C6713片內(nèi)單元間的接口。CPU訪問片外存儲器時必須通過EMIF,EMIF接口由一組存儲器映射的寄存器進行控制與維護,包括配置各個空間的存儲器類型和設(shè)置讀寫時序等。
擴展的直接存儲器訪問控制器(EDMA)主要負責(zé)片內(nèi)的存儲器與其他外設(shè)之間的數(shù)據(jù)傳輸。EDMA進行數(shù)據(jù)傳輸時,有2種啟動方式:一種是由CPU啟動,另一種是由同步事件觸發(fā)。每一個EDMA通道的啟動是相互獨立的。
FPGA分為兩種:基于查找表的FPGA和基于乘積項的FPGA。查找表(Look Up Table,LUT)本質(zhì)上就是一個RAM。當用戶通過原理圖或HDL語言描述了一個邏輯電路以后,F(xiàn)PGA開發(fā)軟件會自動計算邏輯電路的所有可能的結(jié)果,并把結(jié)果事先寫入RAM。這樣,每輸入一個信號進行邏輯運算就等于輸入一個地址進行查表,找出地址對應(yīng)的內(nèi)容,然后輸出即可?;诔朔e項的FPGA可分為3塊:宏單元(Macrocell)、可編程連線(PIA)和I/O控制塊。宏單元是器件的基本結(jié)構(gòu),由它來實現(xiàn)基本的邏輯功能;可編程連線負責(zé)信號傳遞,連接所有的宏單元;I/O控制塊負責(zé)輸入輸出的電氣特性控制,比如可以設(shè)定集電極開路輸出,擺率控制,三態(tài)輸出等。
2 DSP與FPGA的通信模塊設(shè)計流程
DSP的軟件開發(fā)大體有3種方式:第一種是直接編寫匯編語言程序進行編譯連接;第2種是編寫C語言程序,用C語言優(yōu)化軟件進行編譯連接;第3種是混合編程模式,程序中既有匯編代碼,又含有C語言代碼。使用匯編語言開發(fā)程序的設(shè)計人員必須熟悉DSP芯片的內(nèi)部結(jié)構(gòu)。相比C語言,匯編語言開發(fā)程序要繁瑣的多,但是匯編程序執(zhí)行起來更加高效。所以對于耗時較大的算法或在實時性要求較高的場合最好用匯編語言開發(fā)程序,而在DSP應(yīng)用較為復(fù)雜而實時性要求較低的場合可以用C語言進行開發(fā)。這樣,既滿足了系統(tǒng)的實時性要求,又加快了程序開發(fā)的進度。最靈活的方法還是采用混合編程模式開發(fā)DSP的用戶程序。
FPGA的常用設(shè)計方法包括“自頂向下”和“自下而上”,目前大規(guī)模FPGA設(shè)計一般選擇“自頂向下”的設(shè)計方法。所謂“自頂向下”設(shè)計方法,簡單地說,就是采用可完全獨立于芯片廠商及其產(chǎn)品結(jié)構(gòu)的描述語言,在功能級對設(shè)計產(chǎn)品進行定義,并結(jié)合功能仿真技術(shù),以確保設(shè)計的正確性,在功能定義完成后,利用邏輯綜合技術(shù),把功能描述轉(zhuǎn)換成某一具體結(jié)構(gòu)芯片的網(wǎng)表文件,輸出給廠商的布局布線器進行布局布線。布局布線結(jié)果還可返回同一仿真器,進行包括功能和時序的后驗證,以保證布局布線所帶來的門延時和線延時不會影響設(shè)計的性能。
基于DSP的FPGA通信模塊設(shè)計流程如圖1所示。首先在FPGA中創(chuàng)建雙口RAMl和RAM2,A/D采樣的數(shù)據(jù)傳送到RAMl中,然后RAM1中的數(shù)據(jù)經(jīng)過EMIF被讀入到DSP中進行實時處理運算,處理后的結(jié)果數(shù)據(jù)在經(jīng)過EMIF寫入到RAM2中,RAM2可以外接LED顯示屏顯示處理運算結(jié)果。在此過程中,RAM1和RAM2共用地址總線和數(shù)據(jù)總線,在RAM1讀和RAM2寫數(shù)據(jù)總線之間插入高阻模塊,以防止數(shù)據(jù)總線沖突。