1.引言
脈寬調(diào)制技術(shù)( Pulse Width Modulation, PWM)起源很早,隨著科學(xué)技術(shù)的發(fā)展,廣泛應(yīng)用在電力、電子、微型計(jì)算機(jī)、自動控制等多個(gè)學(xué)科領(lǐng)域。自 80年代初以來,出現(xiàn)了多種 PWM實(shí)現(xiàn)方法,歸納起來有自然采樣法、規(guī)則采樣法或諧波消去法等等,其中自然采樣法最能真實(shí)地反映 PWM的控制思想,效果最好。對于傳統(tǒng)的控制器而言,自然采樣法算法是一個(gè)超越方程,需用計(jì)算機(jī)迭代求解,運(yùn)算時(shí)間較長。如果事先算好存入存儲器,則不僅浪費(fèi)了存儲空間,而且設(shè)計(jì)不靈活,精度低。近幾年推出的 DSP處理器雖然在芯片內(nèi)部整合 PWM發(fā)生器模塊,但是這些模塊已經(jīng)在硅片上實(shí)現(xiàn)了,不能夠隨意調(diào)整系統(tǒng)參數(shù),缺乏靈活性,不能夠適應(yīng)復(fù)雜的系統(tǒng)設(shè)計(jì)。
本課題在 FPGA上實(shí)現(xiàn)了高精度的PWM發(fā)生器,在 Xilinx公司的 Spartan3(-4速度級別 )主流低端 FPGA器件上可以約束到高達(dá) 200MHz工作頻率,并支持 14位以上的可調(diào)數(shù)據(jù)位寬。設(shè)計(jì)全參數(shù)化配置,作為可重用模塊能夠嵌入到更大的 FPGA應(yīng)用系統(tǒng)中,具有較高的工程應(yīng)用價(jià)值 。
2.高精度 PWM發(fā)生器的設(shè)計(jì)與實(shí)現(xiàn)
a) RTL級邏輯設(shè)計(jì)
本設(shè)計(jì)采用的是自然采樣法產(chǎn)生 PWM波形。首先對實(shí)際的模擬電壓值進(jìn)行離散化,然后將離散化后的調(diào)制數(shù)據(jù)與載波數(shù)據(jù)進(jìn)行實(shí)時(shí)比較,比較結(jié)果輸送給死區(qū)信號發(fā)生器模塊,該模塊將死區(qū)保護(hù)時(shí)間附加到比較結(jié)果中,并輸出 PWM波形。其中死區(qū)信號發(fā)生器的死區(qū)時(shí)間是可調(diào)的,以適應(yīng)不同場合下的死區(qū)時(shí)間要求。
本設(shè)計(jì)主要有三個(gè)主要模塊組成,分別是載波發(fā)生器、時(shí)序等于比較器和死區(qū)保護(hù)發(fā)生器。設(shè)模塊位寬為 W,現(xiàn)分別介紹設(shè)計(jì)要點(diǎn)如下。
1、載波發(fā)生器:設(shè)計(jì)采用了鋸齒波作為 PWM載波。從電路的角度來講設(shè)計(jì)鋸齒波發(fā)生器會比設(shè)計(jì)三角波發(fā)生器使用更少的組合邏輯資源,從而有利于時(shí)序約束到較高的頻率。為減少寬位寬的計(jì)數(shù)器的進(jìn)位鏈長度,采用 Prescaled結(jié)構(gòu)的計(jì)數(shù)器,將其拆分為 2位計(jì)數(shù)器和(W-2)位計(jì)數(shù)器,
減少了組合邏輯延遲。在優(yōu)化階段通過設(shè)定 MultiCycle約束,還可以進(jìn)一步提高器件工作速度。
2、時(shí)序等于比較器:該比較器不同于普通的純組合邏輯等于比較器。通過例化 FPGA的底層子元件,在該等于比較器內(nèi)部插入了一級 D觸發(fā)器,大大減少了由于數(shù)據(jù)位寬增加而增加組合邏輯延遲。由于存在一級寄存器,比較結(jié)果需要延遲一個(gè)時(shí)鐘周期才能夠輸出。對于 PWM調(diào)制這種應(yīng)用場合,高精度情況下可以接受比較結(jié)果的一個(gè)時(shí)鐘周期延遲,因此使用該比較器造成的比較誤差非常小。
3、死區(qū)保護(hù)發(fā)生器:根據(jù)給定的死區(qū)長度數(shù)據(jù),將輸入的 PX信號輸出為 PH和 PL信號,并在 PH和 PL數(shù)據(jù)的變沿時(shí)刻插入死區(qū)保護(hù)(同時(shí)置為高電平)。具體方式是通過上升計(jì)數(shù)器和下降計(jì)數(shù)器來實(shí)現(xiàn)的:上橋臂控制信號 PH在 PX信號為 1并且上升計(jì)數(shù)器計(jì)數(shù)完成后才置 1,此時(shí)上橋臂開通;下橋臂控制信號 PL在 PX信號為 0并且下降計(jì)數(shù)器計(jì)數(shù)完成后才置 1,此時(shí)下橋臂開通。這個(gè)機(jī)制能夠保證上下橋臂不會同時(shí)導(dǎo)通。
為了保證時(shí)序收斂,根據(jù)實(shí)際情況,考慮到死區(qū)保護(hù)發(fā)生器模塊的任務(wù)是插入保護(hù)時(shí)間,因此工作速度可以較低,故工作頻率設(shè)計(jì)為 100MHz;其余兩個(gè)模塊的工作頻率設(shè)計(jì)為 200MHz。如圖 2-1所示,跨越異步時(shí)鐘域的信號線只有 PX。由于這兩個(gè)時(shí)鐘域同相且具有二分頻關(guān)系,只需要對比較器輸出信號進(jìn)行二倍脈沖展寬即可。
由于死區(qū)時(shí)間在不同的應(yīng)用場合下也是不同的,且一般都在 1us以上。因此根據(jù)設(shè)計(jì)的技術(shù)指標(biāo),設(shè)計(jì)了一個(gè) 6位寄存器保存死區(qū)寬度數(shù)據(jù),并在設(shè)計(jì)內(nèi)部對輸入數(shù)據(jù)進(jìn)行重新移位,以適應(yīng)死區(qū)時(shí)間的區(qū)間可調(diào)特性。據(jù)設(shè)計(jì)測算,模塊工作頻率在 100MHz下,死區(qū)時(shí)間可以在 2.5us到 5us區(qū)間內(nèi)實(shí)現(xiàn) 64檔調(diào)整。
b)結(jié)構(gòu)優(yōu)化實(shí)現(xiàn)
經(jīng)過 RTL級設(shè)計(jì)之后,進(jìn)行軟件默認(rèn)的綜合和布局布線并不能夠收斂到 200MHz。根據(jù)靜態(tài)時(shí)序分析報(bào)告,發(fā)現(xiàn)關(guān)鍵路徑仍存在于比較器的組合邏輯上。根據(jù)路徑分析,雖然比較器進(jìn)行了優(yōu)化設(shè)計(jì)后減小了組合邏輯本身的延遲,但是軟件自動布局布線之后的網(wǎng)線延遲很大,沒有達(dá)到預(yù)期的優(yōu)化效果。因此對該部分邏輯采用 Floorplanner工具進(jìn)行手動布局,如圖 2-2所示。
圖 2-2中 DFF為 D觸發(fā)器,實(shí)現(xiàn)了中間結(jié)果的一個(gè)時(shí)鐘周期寄存; LUT為查找表,在此處用法為 FG(Function Generator,功能發(fā)生器 ),比較器的內(nèi)含邏輯即保存在查找表中; Carrylink為進(jìn)位鏈,布局到 FPGA中的直接進(jìn)位鏈上,這樣進(jìn)位延遲最小。通過手動布局約束,可以讓軟件在自動布局布線過程中預(yù)先分配好這些關(guān)鍵邏輯的布局資源,減小關(guān)鍵路徑上的連線延遲。
圖 2-3是本 PWM發(fā)生器應(yīng)用在一個(gè)三相步進(jìn)電動驅(qū)動器中的布局實(shí)例。該實(shí)例例化了三個(gè)本 PWM發(fā)生器以驅(qū)動三相橋臂,參見圖 2-2右上部分。通過該實(shí)例,充分說明了只要手動布局關(guān)鍵資源,模塊可以以同樣的優(yōu)化結(jié)構(gòu)復(fù)用到更大的 FPGA應(yīng)用當(dāng)中去。
經(jīng)過 Floorplanner布局之后,時(shí)序收斂。靜態(tài)時(shí)序分析表明該模塊的最大周期時(shí)間為 4.642ns(折算過來的頻率達(dá)到 215MHz),其中 3.409ns為邏輯延遲 , 1.233ns為布線延遲,邏輯延遲占到了總延遲的 73.4%,達(dá)到這個(gè)優(yōu)化效果是非常令人滿意的。
進(jìn)行布局布線后仿真時(shí)發(fā)現(xiàn)設(shè)計(jì)有些情況下會出現(xiàn)模塊 reset失敗的現(xiàn)象。經(jīng)過分析,發(fā)現(xiàn)是異步重置的 recovery time和 removal time無法滿足某些 200MHz工作的 D觸發(fā)器的要求。這是因?yàn)楸灸K都是采用的異步 reset,而異步 reset網(wǎng)絡(luò)在 FPGA內(nèi)部是唯一的,具有非常大的全局扇出,對于大型設(shè)計(jì)很容易造成數(shù)納秒級別的傳輸延遲。而 200MHz的 D觸發(fā)器工作周期才只有 5納秒,很容易造成時(shí)序錯(cuò)誤。根據(jù)這一情況,對進(jìn)行本模塊的異步 reset信號進(jìn)行了本地同步化,將異步 reset信號同步到三個(gè)完全相同的 D觸發(fā)器內(nèi)部,再分派給三個(gè)子模塊,有效的減低了扇出系數(shù)。修改后的設(shè)計(jì)就沒有再出現(xiàn)過 reset失敗的現(xiàn)象了。
3.設(shè)計(jì)的仿真與驗(yàn)證本設(shè)計(jì)采用 ModelSim軟件進(jìn)行仿真驗(yàn)證。通過功能仿真驗(yàn)證設(shè)計(jì)的正確性,通過布局布線后仿真驗(yàn)證實(shí)際工作的正確性和穩(wěn)定性。
圖 3-1是 PWM發(fā)生器的功能仿真波形。圖中的 ph和 pl兩根信號線就是 PWM發(fā)生器的輸出信號。該仿真采用了 14位數(shù)據(jù)寬度,其 PWM輸出的載波頻率為 200MHz / 214 = 12.2KHz。死區(qū)保護(hù)時(shí)間在 2.5us~5us時(shí)間內(nèi)可調(diào)。在給定 pwm寄存器和 deadprotect寄存器的輸入后,該發(fā)生器能夠正確地產(chǎn)生指定的 PWM波形輸出。使用仿真波形圖中的游標(biāo)進(jìn)行測算,所有波形數(shù)據(jù)符合設(shè)計(jì)預(yù)期。功能仿真通過。
3-2是 PWM發(fā)生器的布局布線后仿真波形圖。根據(jù)同樣的方法,測算在不同輸入波形的寬度,并計(jì)算驗(yàn)證,所有波形數(shù)據(jù)符合設(shè)計(jì)預(yù)期。布局布線后仿真通過。
本設(shè)計(jì)最終占用 FPGA資源如表 3-1所示??梢姳驹O(shè)計(jì)經(jīng)過優(yōu)化后,綜合后工作速度高,資源占用非常小。參數(shù)化的設(shè)計(jì),可重用性也非常好。
4.結(jié)束語
本文提出了一種在 FPGA器件上實(shí)現(xiàn)高精度 PWM發(fā)生器的設(shè)計(jì)方法 [4]。首先根據(jù) PWM調(diào)制原理選擇了其中效果最好的采用自然采樣法調(diào)制 PWM信號。根據(jù)自然采樣法的思想,將設(shè)計(jì)分拆為三個(gè)子模塊,每個(gè)子模塊都相對功能簡單,并且易于設(shè)計(jì)和優(yōu)化??紤]到以后工程應(yīng)用的移植性,設(shè)計(jì)采用了參數(shù)化方式,主要的數(shù)據(jù)位寬和參數(shù)都可以直接在常數(shù)聲明文件中進(jìn)行配置。在每一個(gè)子模塊的設(shè)計(jì)工程中,都分為了 RTL功能設(shè)計(jì)和結(jié)構(gòu)優(yōu)化兩部分——RTL功能設(shè)計(jì)實(shí)現(xiàn)模塊功能,結(jié)構(gòu)優(yōu)化是在功能不變的前提下,通過等效結(jié)構(gòu)變換減小設(shè)計(jì)的組合邏輯延遲,避免高扇出網(wǎng)絡(luò),提高設(shè)計(jì)穩(wěn)定性。在結(jié)構(gòu)優(yōu)化中,還解決了 200MHz以上高速設(shè)計(jì)中異步 reset信號存在的潛在不穩(wěn)定性問題。完成了設(shè)計(jì)和優(yōu)化工序后,對設(shè)計(jì)進(jìn)行了功能仿真和布局布線后仿真,經(jīng)過人工計(jì)算比對, PWM發(fā)生器的輸出完全符合預(yù)期,保證了之前的設(shè)計(jì)工作的正確性。最后給出了 FPGA資源占用表格,供重用該模塊評估時(shí)使用。
本文作者創(chuàng)新點(diǎn):在比較器部分的設(shè)計(jì)當(dāng)中,創(chuàng)造性地設(shè)計(jì)了內(nèi)部帶有一級 D觸發(fā)器的等于比較器,并給出了最佳的 Floorplanner布局圖,解決了高位寬下過長的進(jìn)位鏈帶來的大延遲的問題,在控制精度和器件工作頻率之間找到了一個(gè)兼顧二者的契合點(diǎn)。采用了這種類型的比較器之后,本 PWM發(fā)生器可以在 200MHz的工作頻率下支持非常高的數(shù)據(jù)位寬,提供非常精確的 PWM調(diào)制波形。
責(zé)任編輯:gt
評論
查看更多