摘 要 在DSP+FPGA實(shí)現(xiàn)的級(jí)聯(lián)H橋型多電平逆變電路中,首要任務(wù)是實(shí)現(xiàn)DSP與FPGA的通信。本文設(shè)計(jì)了DSP+FPGA系統(tǒng)的硬件電路連接方式及通信軟件,由DSP作為上位機(jī),F(xiàn)PGA作為下位機(jī),使用外部接口XINTF將DSP與FPGA二者相連。設(shè)計(jì)了DSP側(cè)的主程序與中斷服務(wù)程序,在FPGA內(nèi)構(gòu)造FIFO儲(chǔ)存數(shù)據(jù),編寫FIFO的讀寫接口邏輯單元代碼。最后用內(nèi)嵌邏輯分析儀采集了XINTF各信號(hào)線及FIFO各引腳的數(shù)據(jù),驗(yàn)證了該并行通信方式的可行性。
【關(guān)鍵詞】DSP FPGA XINTF FIFO 并行通信
1 引言
級(jí)聯(lián)H橋型多電平逆變電路在高壓大功率變流及交流傳動(dòng)系統(tǒng)中有十分廣泛的應(yīng)用。但是在數(shù)字控制的實(shí)現(xiàn)中,單片DSP芯片提供的PWM路數(shù)有限。一個(gè)三相七電平級(jí)聯(lián)H橋型逆變電路就需要36路驅(qū)動(dòng)脈沖,一片DSP上PWM脈沖數(shù)顯然不能滿足需要,而多片DSP并行工作又要考慮時(shí)鐘同步問(wèn)題。因此多采用DSP+FPGA系統(tǒng)生成多路驅(qū)動(dòng)脈沖,其中DSP負(fù)責(zé)采樣計(jì)算并定時(shí)發(fā)送多路脈寬數(shù)據(jù)到FPGA,F(xiàn)PGA產(chǎn)生多路三角載波并與脈寬數(shù)據(jù)實(shí)時(shí)比較生成SPWM波。實(shí)現(xiàn)該方法首要步驟是解決DSP與FPGA之間并行通信的問(wèn)題。選用合適的DSP與FPGA芯片,構(gòu)建實(shí)驗(yàn)平臺(tái)并設(shè)計(jì)并行通信方式,通過(guò)外部接口XINTF進(jìn)行通信,實(shí)現(xiàn)了DSP對(duì)FPGA內(nèi)構(gòu)造的FIFO中數(shù)據(jù)的讀寫,并為基于DSP+FPGA的多電平逆變器驅(qū)動(dòng)脈沖生成系統(tǒng)設(shè)計(jì)提供了依據(jù)。
2 總體結(jié)構(gòu)設(shè)計(jì)
采用TI公司的TMS320F28335型32位浮點(diǎn)數(shù)字信號(hào)處理器與Altera Cyclone III系列的EP3C5E144C8N型現(xiàn)場(chǎng)可編程門陣列,構(gòu)建通信系統(tǒng)。因?yàn)镈SP與FPGA使用不同的時(shí)鐘信號(hào),選擇在FPGA內(nèi)構(gòu)造FIFO進(jìn)行數(shù)據(jù)緩存,編寫FIFO讀寫程序,通過(guò)DSP的外部接口XINTF實(shí)現(xiàn)DSP與FPGA的并行通信,這一系統(tǒng)的硬件連接示意圖如圖1所示,各信號(hào)線的方向在圖中列出。DSP將區(qū)域0的片選信號(hào)線XZCS0、寫操作選通線XWE0、讀操作選通線XRD、19位地址總線XA0~XA18、16位雙向數(shù)據(jù)總線XD0~XD15等信號(hào)線與FPGA的通用I/O口建立起連接。同時(shí)將FPGA的一個(gè)I/O引腳定義為中斷信號(hào)線連接至DSP的通用輸入/輸出引腳GPIO0,作為XINT2的中斷源,觸發(fā)DSP中斷。
使用CPU計(jì)時(shí)器0每秒產(chǎn)生定時(shí)中斷,DSP響應(yīng)該中斷,向FPGA中的FIFO中發(fā)送10個(gè)整型數(shù),用來(lái)代表調(diào)制波脈寬等數(shù)據(jù)。FIFO寫滿10個(gè)數(shù)據(jù)后產(chǎn)生外部中斷信號(hào)XINT2給DSP,DSP響應(yīng)這個(gè)外部中斷,將之前寫入的10個(gè)數(shù)據(jù)讀出并寫到外擴(kuò)RAM存儲(chǔ)器,讀出外擴(kuò)RAM存儲(chǔ)器內(nèi)的數(shù)據(jù),可以驗(yàn)證DSP寫入數(shù)據(jù)的正確性,從而實(shí)現(xiàn)DSP與FPGA兩種芯片的雙向并行通信。
3 DSP與FPGA通信程序設(shè)計(jì)
掌握TMS320F28335型DSP外部接口XINTF的工作時(shí)序及FIFO存儲(chǔ)器IP核的訪問(wèn)方式是實(shí)現(xiàn)DSP與FPGA通信的基礎(chǔ)。DSP的外部接口XINTF分為三個(gè)區(qū)域,分別是ZONE0、ZONE6、ZONE7。訪問(wèn)這三個(gè)區(qū)域所指向的外部空間就像訪問(wèn)DSP外擴(kuò)RAM或FLASH存儲(chǔ)器一樣方便。三個(gè)區(qū)域?qū)?yīng)三個(gè)不同范圍的地址,有各自獨(dú)立的片選信號(hào)線。對(duì)某一區(qū)域訪問(wèn)時(shí),將相應(yīng)的地址送到地址線,該區(qū)域片選信號(hào)變?yōu)榈碗娖剑瑢?duì)該區(qū)域的訪問(wèn)有效。每個(gè)XINTF區(qū)域的讀寫訪問(wèn)時(shí)序都可以分成三個(gè)階段,建立(Lead)、有效(Active)、跟蹤(Trail),每個(gè)階段的時(shí)間都可以配置,以滿足不同速度外部設(shè)備的時(shí)序要求。對(duì)XZCS0區(qū)域進(jìn)行寫操作時(shí),XZCS0信號(hào)首先拉低,寫選通信號(hào)XWE0隨之拉低,數(shù)據(jù)送到數(shù)據(jù)總線XD上;進(jìn)行讀操作時(shí),XZCS0信號(hào)首先拉低,讀選通信號(hào)XRD隨之拉低,將數(shù)據(jù)從數(shù)據(jù)總線XD鎖存到DSP中。片選信號(hào)XZCS0在讀寫訪問(wèn)時(shí)序的三個(gè)階段中均為低電平,但讀選通信號(hào)XRD與寫選通信號(hào)XWE0僅在有效(Active)階段時(shí)為低電平。
3.1 FPGA內(nèi)FIFO與讀寫接口邏輯設(shè)計(jì)
為了實(shí)現(xiàn)預(yù)期的通信功能,需要結(jié)合FIFO存儲(chǔ)器IP核的使用方法編寫FPGA側(cè)讀寫接口邏輯代碼。FIFO即先進(jìn)先出存儲(chǔ)器,特別適用于彼此異步的兩系統(tǒng)間進(jìn)行數(shù)據(jù)緩存、傳輸?shù)葓?chǎng)合。FIFO不同于雙口RAM,它沒(méi)有地址線,只能對(duì)其順序地寫入和讀出數(shù)據(jù),通過(guò)對(duì)內(nèi)部的地址指針連續(xù)進(jìn)行加減,依次訪問(wèn)連續(xù)的數(shù)據(jù)。從而實(shí)現(xiàn)對(duì)FIFO的讀寫操作。使用Quartus II 13.1中的MegaWizard Plug-in Manager插件管理器,可以方便地例化FIFO存儲(chǔ)器IP核并配置其數(shù)據(jù)位寬、深度、空標(biāo)志、滿標(biāo)志、讀時(shí)鐘、寫時(shí)鐘信號(hào)等參數(shù)。選用雙時(shí)鐘FIFO(DCFIFO)作為數(shù)據(jù)存儲(chǔ)器,F(xiàn)IFO的位數(shù)設(shè)置為16bits×256words,表示可以儲(chǔ)存256個(gè)數(shù)據(jù),每個(gè)數(shù)據(jù)長(zhǎng)度為一字節(jié)。rdclk、wrclk分別為讀寫時(shí)鐘信號(hào),均是上升沿觸發(fā),data信號(hào)作為FIFO的數(shù)據(jù)輸入端口,q作為FIFO的數(shù)據(jù)輸出端口,rdreq、wrreq分別為讀寫操作請(qǐng)求確認(rèn)信號(hào)。wrusedw、rdusedw顯示在FIFO內(nèi)存儲(chǔ)的數(shù)據(jù)個(gè)數(shù),初始狀態(tài)下為0。rdempty為FIFO空標(biāo)記信號(hào)。data、wrreq、wrusedw等信號(hào)與wrclk同步;q、rdreq、rdusedw等信號(hào)與rdclk同步。
DSP讀寫數(shù)據(jù)接口邏輯代碼可以在Quartus II 13.1開(kāi)發(fā)環(huán)境下使用Verilog HDL硬件描述語(yǔ)言設(shè)計(jì)編寫。DSP讀寫數(shù)據(jù)接口邏輯又可以分為DSP寫FIFO接口邏輯與DSP讀FIFO接口邏輯兩部分如圖2所示。
3.2 DSP程序設(shè)計(jì)
DSP程序由主程序、定時(shí)中斷子程序、外部中斷子程序三部分組成。DSP初始化后循環(huán)等待,定時(shí)響應(yīng)CPU定時(shí)器0的中斷,該定時(shí)中斷子程序向一個(gè)固定地址連續(xù)寫入10個(gè)數(shù)據(jù),DSP寫FIFO接口邏輯將這10個(gè)數(shù)據(jù)依次經(jīng)過(guò)data端口存儲(chǔ)到FIFO中,在這個(gè)過(guò)程中DSP讀FIFO接口邏輯一直接收來(lái)自FIFO的rdusedw信號(hào),并在該信號(hào)值為10的時(shí)刻,令信號(hào)dsp_int由1變?yōu)?,產(chǎn)生下降沿,表示FIFO已經(jīng)寫滿10個(gè)數(shù)據(jù),該信號(hào)連接至DSP的通用輸入/輸出端口GPIO0,作為外部中斷XINT2,觸發(fā)執(zhí)行讀中斷子程序。讀中斷子程序主要實(shí)現(xiàn)DSP從FIFO中讀出10個(gè)數(shù)據(jù)的功能。每當(dāng)XINTF的地址總線XA值為區(qū)別于定時(shí)中斷子程序中的另一個(gè)固定地址時(shí),DSP讀FIFO接口邏輯順次從FIFO端口q讀出一個(gè)數(shù)據(jù),置于XINTF的數(shù)據(jù)總線XD上,DSP將鎖存其并依次寫入DSP的外擴(kuò)RAM內(nèi)。完成了一個(gè)周期的操作。DSP的主程序流程如圖3所示。
4 實(shí)驗(yàn)結(jié)果
將程序下載到DSP+FPGA開(kāi)發(fā)板上,使用CCS6.0編寫調(diào)試DSP程序,使用Quartus II 13.1內(nèi)置邏輯分析儀Signaltap II Logic Analyzer,采集XINTF接口的時(shí)序信號(hào),對(duì)理論分析進(jìn)行驗(yàn)證,DSP寫、讀FIFO數(shù)據(jù)的采集結(jié)果如圖4、圖5所示。在圖4中,wrreq首次為高電平時(shí),空FIFO開(kāi)始寫入數(shù)據(jù),rdempty信號(hào)產(chǎn)生下降沿,DSP依次向FIFO內(nèi)寫入2Eh~37h共10個(gè)連續(xù)數(shù)據(jù), rdusedw及wrusedw的值由0遞增到10,定時(shí)中斷子程序執(zhí)行結(jié)束,dsp_int產(chǎn)生下降沿,觸發(fā)DSP的外部中斷子程序。
在圖5中,dsp_int恢復(fù)為高電平,rdreq首次為高電平時(shí),開(kāi)始從FIFO中讀出數(shù)據(jù)。DSP依次從FIFO中讀出10個(gè)連續(xù)數(shù)據(jù)2Eh~37h,與定時(shí)中斷子程序中寫入FIFO的數(shù)據(jù)相同,實(shí)現(xiàn)了先進(jìn)先出功能。在這一過(guò)程中rdusedw及wrusedw的值由10遞減為0,最終rdempty信號(hào)由低電平變?yōu)楦唠娖剑鞦IFO中數(shù)據(jù)已全部讀出。同時(shí),在外部中斷子程序執(zhí)行過(guò)程中,通過(guò)CCS6.0的Memory Browser中讀取外擴(kuò)RAM中的數(shù)據(jù)如圖6所示,該結(jié)果驗(yàn)證了通信方式的正確性。
5 結(jié)論
為了解決DSP與FPGA的通信問(wèn)題,本文分析了外部接口XINTF的工作原理,針對(duì)FIFO存儲(chǔ)器IP核的結(jié)構(gòu)及參數(shù),設(shè)計(jì)了DSP讀寫FIFO的接口邏輯代碼。編寫了DSP程序,實(shí)現(xiàn)了通過(guò)FIFO完成DSP與FPGA之間的通信,為基于DSP+FPGA的多路PWM驅(qū)動(dòng)脈沖發(fā)生電路的設(shè)計(jì)提供了參考。
參考文獻(xiàn)
[1]丁凱,鄒云屏,張賢等.級(jí)聯(lián)多電平逆變器研究[J].電力電子技術(shù),2002,36(02):16-19.
[2]戴珂,徐晨,丁玉峰等.載波輪換調(diào)制在級(jí)聯(lián)H橋型STATCOM中的應(yīng)用[J].中國(guó)電機(jī)工程學(xué)報(bào),2013,33(12):99-106.
[3]李建林,王立喬,李彩霞等.基于現(xiàn)場(chǎng)可編程門陣列的多路PWM波形發(fā)生器[J].中國(guó)電機(jī)工程學(xué)報(bào),2005,25(10):55-59.
[4]周京華,李正熙.多載波水平調(diào)制策略的諧波分析及數(shù)字化實(shí)現(xiàn)[J].電氣傳動(dòng),2008,38(12):27-32.
[5]姜楠,馬迎建,馮翔.DSP和FPGA并行通信方法研究[J].電子測(cè)量技術(shù),2008,31(10):146-148.
[6]陳林軍,劉鵬,姜智譯.DSP和FPGA的雙核并行通信方法設(shè)計(jì)與應(yīng)用[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2016,16(01):4-7.
[7]Texas Instruments.TMS320x2833x,2823x External Interface (XINTF) Reference Guide (Rev.D)[ EB/OL].2010.
[8]劉東華.Altera系列FPGA芯片IP核詳解[M].電子工業(yè)出版社,2014.
作者簡(jiǎn)介
劉源康(1992-),男,河北省保定市人。碩士研究生。主要研究方向?yàn)榇笕萘恐蓄l逆變技術(shù)。
作者單位
華東交通大學(xué)電氣與自動(dòng)化工程學(xué)院 江西省南昌市 330013