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