本 論 文 我 們 使 用 模 擬 軟 體MATLAB中的Simulink來進行系統模 擬,並同時觀察輸出結果是否穩定及符合我們所設計的要求。
Simulink是一種對動態系統進行模型化、模擬和分析的軟體。它支 援連續、離散或是二者混合使用在線性及非線性系統。Simulink提供了 圖形化的使用者介面(GUI),只要使用時點選和拖曳滑鼠就可以操作及
用,如電源系統的模擬(SimPowerSystems),圖3-8 即為用Simulink建立 的切換式降壓型直流至直流轉換器電路。
圖 3-8 Simulink之切換式降壓型直流至直流轉換器電路
圖3-8中可分成四大區塊,依序為Buck converter、ADC、PID compensator及DPWM,其各區塊之功能介紹如下:
圖3-9為Buck converter之內部架構圖,模擬5V降至2.7V之直流電源 轉換器,我們將量測電感電流、輸出電壓及輸出電流並用Scope功能來 觀察電壓及電流的變化。
圖 3-9 Simulink之Buck converter之內部架構圖
圖3-10為ADC,輸出電壓會與參考電壓相比,產生的誤差值經過取 樣並量化,即可獲得轉換後的數位誤差信號。
圖 3-10 Simulink之ADC
圖3-11為PID compensator區塊,其作用及執行(3-23 )式,d[n-1]是前
差信號,e[n-1]為前一週期的數位誤差信號,e[n-2]為前二週期的數位誤 差信號,在此區塊中我們會代入之前利用 Ziegler-Nichols 調整法算出的 PID 控制器參數,最後這些資料經處理並相加後即可得到新的 d[n]責任 週期命令值,並送至DPWM。
圖 3-11 Simulink之PID compensator區塊圖
圖3-12為DPWM區塊,此區塊是接收來自PID compensator的責任週 期命令值 d[n],並依DPWM解析位元數輸出一相對應之責任週期,進而 控制開關切換。
圖 3-12 Simulink之DPWM區塊圖
圖3-13為由啟動至穩定及改變負載時之模擬圖形,由上而下依序 是電感電流、輸出電壓及輸出電流波形。
由圖 3-13中可以看出由啟動至穩定所需時間約0.002秒。
圖 3-13由啟動至穩定之模擬圖形(電感電流、輸出電壓及輸出電流)
第4章 數位脈波寬度調變控制電壓轉 換電路硬體實現
本章主要在利用硬體去實現整個數位脈波寬度調變控制電路。使用 的硬體描述語言(HDL)為Verilog 硬體描述語言。撰寫程式的工作環境為 使用Xilinx ISE 發展軟體。這是一套由Xilinx 公司所推出用來設計 FPGA/CPLD 或嵌入式系統的發展軟體,其操作畫面如圖4-1 所示。另 外在硬體功能方面亦使用了為希科技公司所推出的系統發展實驗板
(ULINX_MB_XC3S250E_PQ208_V20A),如圖4-2 所示。
圖 4-1 Xilinx發展環境
圖 4-2 Xilinx系統發展實驗板
.1 Verilog 硬體描述語言簡介
Verilog 是一個標準化的硬體描述語言,它被廣泛地使用在積體電
4
次的專用語言,在同一個模組中可以有不同層次的表示法共同存在。所 以設計者可以在同一模組中混合使用邏輯閘層次模型(Gate Level Model)、暫存器轉移層次模型(Register Transfer Level Model)以及行 為模型(Behavioral Model)等三種不同的層次的表示法來描述所設計的 電路。
Verilog 有下列有幾項特色:
法。
路。
數庫。
.2 A/D 轉換器
我們所使用的ADC型號為ADC0820,其參考電壓由第11腳(Vref(-))
與第
因此,ADC0820 的每一位元的解析度計算公式如下列所表示之:
z 提供多種不同的設計方
z 不同的製程特性也不用考量。
z 可以用來設計各式各樣的數位電
z 一般的邏輯合成工具普遍支援Verilog。
z 許多的製造廠商也都有提供Verilog 的函
4
12腳(Vref(+))所決定。所以參考電壓如可以由下列式子表示之:
V
ref = Vref(+) – Vref(-)256
V
refLSB
=由上面公式知道,當我們輸入Vref(+)=5V、Vref(-)=0V 時,這時候 ADC0820 每位元(bit)之解析度即為:
5 0 0.0195
LSB= 256− = mV
當ADC0820 的第一腳(Vin)取樣到5V 電壓時,ADC0820的輸出 資料
壓的取樣,而該轉換器的輸出 電壓
(DB0~DB7)即為〝11111111〞。
由於我們要對直流至直流轉換器做電
規格可為0V~5V,所以符合我們ADC0820 的規格。另外,根據我 們目標所設計的控制積體電路規格,我們重新規劃了ADC0820電壓取樣 的特性圖,如圖4-3 所示。
e
V
oV
ref( Δ V
o)
max q19.6 V = mV
V
oΔ
圖 4-3ADC0820電壓取樣的特性圖
表中的Vq 即為ADC0820 的解析度,V = 5 =19.6mV。 256
q
由上表可知,當切換式直流至直流的輸出電壓大於或小於Vref 的值時,
ADC0820 會輸出誤差信號(e[n])值(+16~-16)。
ADC0820我們操作在WR-RD模式下的stand-alone的工作模式,所以 4-4所示。
ADC0820的控制接腳如圖
圖 4-4ADC0820 取樣電路方塊圖
.2.1 Verilog 描述A/D 轉換器控制信號
下為我們使用 erilog 去描述ADC0820 的控制信號,使ADC0820 能正常動作。
,datain,countin,e,wrout);
clk,reset;
4
圖4-5 即為控制ADC0820的Verilog 描述程式,以 V
module adc0820(clk,reset,intin input
input [7:0]datain;
input [7:0]countin;
ways@(negedge reset or posedge count_divact) if(!reset)
if(count_div4 == 2'd3) ount_div4 <= 0;
e
4 + 1;
_act = (count_div4==0) & (~intin);
ways@(negedge reset or posedge clk) if(!reset)
begin
if(adc_act == 1)
dccount <= adccount + 1;
e
egedge reset or posedge clk) egin
if(!reset)
if((adccount>132) && (adccount<288))
end
set or posedge clk) if(!reset)
if(adccount==24) egin
datain > 8'd154) 000;
(datain < 8'd122) 0;
e<=(9'd138) + {1'b1,(~datain)} + 1;
圖 4-5 ADC0820控制時序電路Verilog程式
4.3 數位補償器
我們利用查表法來實現數位脈波寬度調變器中的補償器。在3.2.2章 a、b 及c 的值,現在我們就利用這些值來建立 end
end end endmodule
節中,我們已經求得了
一個查表。我們所需求的誤差信號(e[n])其值為+16~-16,其中代表負 數的二進位值,我們以2補數法表示之。我們取a=32、b=-62、c=30建立 此查表。其中負數的值皆使用2補數的做法。表4-1到表4-3即為所建立的 查表。
表 4-1 a=32之查表
表 4-2 b=-62之查表
表 4-3 c=30之查表
4.3.1 Verilog 描述數位補償器
以下為我們使用Verilog 去描述數位補償器的實現方式。由之前建立 之查表,將這些數值帶入硬體描述語言中。圖4-6 即為數位補償器的
Verilog 描述程式。
reg [11:0]lut_mam1[0:32]; //TABLE_1 reg [11:0]lut_mam2[0:32]; //TABLE_2 reg [11:0]lut_mam3[0:32]; //TABLE_3 reg [11:0]ae,be,ce;
dutycom<=d[10:0]+11'b10001010001 ; end
else begin
if((~d[11:0]+1'b1)>11'b10000000000) dutycom<=11'b00001010001;
else
dutycom<=d[10:0]+11'b10001010001 ; end
end
always@(posedge adc_clk or negedge reset) begin
if (~reset) begin e_n1<=0;
e_n2<=0;
else
begin
6'b110110: ce=lut_mam3[6];
圖4-7為PID之輸入與輸出的模擬結果。
圖 4-7 PID輸入與輸出模擬圖
4.4 數位脈波寬度調變器
我們要設計一個數位脈波寬度調變器,其電路方塊如圖4-8所示,其 中包含一個4-bit計數器、二個4-bit比較器、16個D型正反器、16×12的多 工器、二個AND閘及一個RS正反器。
nc
nc
nc
2 :1nd
nc
nd
n
nc
圖 4-8 混合式(Hybrid)DWPM架構圖
由圖可知,此混合式(Hybrid)DWPM中4 bits Delay-line型的DPWM 與一個4-bit 計數型DPWM合成,讓這個數位脈波寬度調變器可以提供 8-bit的解析度。
4.4.1 Verilog 描述數位數位脈波寬度調變器
圖4-9所示,為我們使用Verilog 去描述數位數位脈波寬度調變器的 控制信號及功能。
`include "delayline.v"
`include "counter.v"
module hydpwm(clk, ,reset,duty_dith,pwmout);
counter u1(clk,reset,countout);
delayline delayline1(reset,delayin,delay,q,q15,delayreset);
assign delayin = test;
assign delayreset =0;
//-- SET RS_Flip-Flop at counter=0 ----
always@(negedge reset or countout or duty_dith[6:0] or q15) begin always@(countout or duty_dith_reg[7:4]) begin
if(countout[3:0]>=duty_dith_reg[7:4]) compareout <= 1;
else
//----Counter Check (set=1 one times in switch cycle)
always@(negedge reset or negedge fsw_clk or negedge pwmffsr_s) begin
always@(duty_dith_reg[3:0] or q or delay or compareout) begin
case(duty_dith_reg[3:0])
4'b0000 : pwmffsr_r <= delay[0] & compareout; nor norqbar(pwmqbar,pwmffsr_s,pwm);
nor norq(pwm,pwmffsr_r,pwmqbar);
always@(posedge clk or negedge reset)
output delayelementout;
nor #4 nor1(delayelementout,delayelementin);
endmodule
`include "delayelement.v"
module delaycell(delayin,delayout,delayreset);
input delayin,delayreset;
output delayout;
delayelement delayelement0(delayelementout,delayin);
nor nor1(delayout,delayelementout,delayreset);
endmodule
`include "delaycell.v"
`include "d_ff.v"
module delayline(reset,delayin,delay,q,q15,delayreset);
input reset,delayin,delayreset;
output [14:0]q;
delaycell delaycell01(delay[0],delay[1],delayreset);
delaycell delaycell02(delay[1],delay[2],delayreset);
delaycell delaycell03(delay[2],delay[3],delayreset);
delaycell delaycell05(delay[4],delay[5],delayreset);
delaycell delaycell06(delay[5],delay[6],delayreset);
delaycell delaycell07(delay[6],delay[7],delayreset);
delaycell delaycell08(delay[7],delay[8],delayreset);
delaycell delaycell9(delay[8],delay[9],delayreset);
delaycell delaycell10(delay[9],delay[10],delayreset);
delaycell delaycell11(delay[10],delay[11],delayreset);
delaycell delaycell12(delay[11],delay[12],delayreset);
delaycell delaycell13(delay[12],delay[13],delayreset);
delaycell delaycell14(delay[13],delay[14],delayreset);
delaycell delaycell15(delay[14],delay[15],delayreset);
delaycell delaycell16(delay[15],delay[16],delayreset);
d_ff d1(delay[1],reset,q[1],q[0]);
d_ff d2(delay[2],reset,q[2],q[1]);
d_ff d3(delay[3],reset,q[3],q[2]);
d_ff d4(delay[4],reset,q[4],q[3]);
d_ff d5(delay[5],reset,q[5],q[4]);
d_ff d6(delay[6],reset,q[6],q[5]);
d_ff d7(delay[7],reset,q[7],q[6]);
d_ff d8(delay[8],reset,q[8],q[7]);
d_ff d9(delay[9],reset,q[9],q[8]);
d_ff d10(delay[10],reset,q[10],q[9]);
d_ff d11(delay[11],reset,q[11],q[10]);
d_ff d12(delay[12],reset,q[12],q[11]);
d_ff d13(delay[13],reset,q[13],q[12]);
d_ff d14(delay[14],reset,q[14],q[13]);
d_ff d15(delay[15],reset,q15,q[14]);
always@(posedge delay[16] or negedge reset or posedge q[0]) begin
圖4-10為DPWM之輸入與輸出的模擬結果,我們將duty_dith分別輸入 00111010、00001110、11111100、01000000、00000100時所輸出的脈波 寬度輸出。
圖 4-10 DPWM 輸入與輸出模擬圖
4.5 數位顫抖控制電路
wire[7:0]dith_word,duty_dith;
wire[10:0]dutycom;
always@(posedge fsw_clk or negedge reset) begin
if (~reset) begin
dutycom1<=11'b00000000000;
countout<=0;
end
else if(dutycom!=dutycom1) begin
countout<=0;
dutycom1<=dutycom;
end
else if(fsw_clk)
countout<=countout+1;
end
assign dith_word=mam[dutycom[2:0]];
assign duty_dith=dutycom[10:3]+dith_bit;
always@(countout) case(countout)
3'b000: dith_bit=dith_word[7];
3'b001: dith_bit=dith_word[6];
3'b010: dith_bit=dith_word[5];
3'b011: dith_bit=dith_word[4];
3'b100: dith_bit=dith_word[3];
3'b101: dith_bit=dith_word[2];
3'b110: dith_bit=dith_word[1];
3'b111: dith_bit=dith_word[0];
endcase endmodule
圖 4-11 數位數位顫抖控制電路 Verilog 描述程式
圖4-12為Digital Dither之輸入與輸出的模擬結果。
4.6 低通濾波器 LP(z)之實現
圖 4-14 低通濾波器 LP(z)之輸入與輸出的模擬
4.7 盲時(Dead-time)最佳化實現
藉由3.6.6章節介紹的Dead-time最佳化演算法,我們可以從最小的穩 態責任週期命令D中,尋找最佳的dead-time時間。在程式撰寫方面,我 們可以利用Finite State Machine的概念將演算法加以實現。
4.7.1 Verilog 描述盲時(Dead-time)最佳化電路
圖4-13為我們使用Verilog 去描述盲時(Dead-time)最佳化電路。
module dead_time_opt(adc_clk,reset,D,f,k,td1,td2,CS);
input adc_clk,reset;
input[10:0]D;
input [8:0]f;
output[7:0]td1,td2;
output[5:0]k;
output[2:0]CS;
wire [8:0]f;
wire[10:0]D;
reg[5:0]k;
reg[2:0]CS,NS;
reg[7:0]td1,td2,tdopt;
parameter
T0=3'b000,T1=3'b001,T2=3'b010,T3=3'b011,T4=3'b100,T5=3'b101,T6=3'b110;
always@(posedge adc_clk or negedge reset) //Current State Register begin
if (~reset) begin CS<=T0;
Dold<=11'b11111111111;
end else CS<=NS;
end
always@(D,CS) //Next State Logic case(CS)
always@(posedge adc_clk or negedge reset) //Output Logic begin
T0:
圖 4-15 盲時(Dead-time)最佳化電路 Verilog 描述程式
圖4-16為盲時(Dead-time)最佳化電路之輸入與輸出的模擬結果。
圖 4-16 盲時(Dead-time)最佳化電路之輸入與輸出的模擬波形
4.8 實驗結果
圖4-17為實驗系統示意圖,我們使用FPGA實驗版及設計之外部電路 將ADC、數位PID、DPWM、Digital Dither、Dead-time最佳化電路及Power Stage做系統整合驗證,使用規格如下:
● 系統操作頻率(取樣頻率):300KHz。
● 輸入電壓(Vi):5V~10V
● 輸出電壓(Vo): 2.7 V。
圖 4-17 實驗系統接線示意圖
圖4.18為輸出電壓及PWM輸出波形,由示波器可以看出輸出電壓可 以穩壓在2.7V。
圖 4-18 輸出電壓及PWM波形
2.7V
PWM
波形
圖4.19為採用一般電路實現時的dead-time波形,而圖4.20為加入盲 時(Dead-time)最佳化電路所實現之修正dead-time效果,由二圖可以明顯 發現,加入盲時(Dead-time)最佳化電路後可以得到最佳的dead-time,有 效提升系統效率。
圖 4-19一般無Dead-time最佳化之電路
td1≒150ns
td1
td2≒135ns
td2
圖 4-20 使用 dead-time 最佳化之 dead-time 輸出波形 td1
td1≒45ns
td2
td2≒65ns
第5章結論與未來研究方向
4. 利用盲時最佳化電路(Dead-Time Optimizer)尋找最佳 dead-time,使系 統整體效能提升。
整個電路由 MATLAB 及 Verilog 模擬並用 FPGA 進行實驗驗證,實 驗結果證實我們所設計的數位脈波寬度調變控制電路,其功能皆能符合 我們的要求。
5.2 未來方向
本論文中所設計的電路架構為單相位的切換式降壓型直流至直流 轉換器,未來可進一步以多相位並聯之架構來實現,不但能增進系統的 穩定性、降低所需系統頻率且對於負載較大的系統更能發揮其作用。
在設計PID控制器方面,最重要的是相關參數的計算,當採用 Ziegler-Nichols 調整法來計算時,因為其為經驗公式,所得的解並非最 佳解,所以未來在設計PID參數時,可以利用如NCD、類神經網路、基 因演算法、Fuzzy理論..等等方法來搜尋PID參數的最佳解,使系統能夠 有更佳的暫態響應。
數位式電源轉換器主要的優點是容易重新設計,我們可以根據不同 的電源電路規格做調整與轉換,容易的設計出其他不同類型的電壓轉換 器,或更進一步將不同的系統加以整合,所以未來的目標將是以數位控 制技術的優勢來達到更大整合度、更小尺寸、更高效率、更高安全可靠 性、更快瞬時響應、更高靈活性,以及更低的成本。
參考文獻
[1] A. Prodic. D. Maksimovic, and R. W. Erickson "Design and Implementation of a Digital PWM Controller for a High-Frequency Switch DC-DC Power Converters," in Proc. IEEE Conference 2001.
[2] A.Prodic, D.Maksimovic, “Design of a digital PID regulator based on look-up tables for control of high-frequency DC-DC converters,” IEEE
COMPEL, 2002, pp.18-22.
[3] B. J. Patella, A. Prodic, A. Zirger, and D. Maksimovic, "High-frequency digital PWM controller IC for DC–DC converters, " IEEE Trans. Power
Electron., vol. 18, no. 1, pp. 438–446, Jan. 2003.
[4] A. V. Peterchev, S. R. Sanders, "Quantization resolution and limit cycling in digitally controlled PWM converters, " IEEE Trans. on Power
Electronics, Vol.18, No.1, January 2003, pp.301-308.
[5] L. Peng, X. Kong, Y. Kang, and J. Chen, “A novel PWM technique in digital control and its application to an improved DC/DC converter,” in
Proc. IEEE Power Electron. Spec. Conf., 2001.
[6] V. Yousefzadeh, S. Member, D. Maksimovic "Sensorless Optimization of Dead Times in DC–DC Converters With Synchronous Rectifiers"
IEEE Trans. Power Electron., vol. 32, no. 5, pp. 134-139, Apr. 2003.
[7] B. C. Kuo "Automatic Control System" seventh edition,1997.
[8] N. Minorsky, ''Directional Stability of Automatically Steered Bodies,'' J.
Amer. Soc. Naval Engineers, 42(2),pp.280-309, 1922
[9] A. Callender,D.R. Hartree and A.Porter, ''Time-Lag in a Control System,'' Phil.Trans. Roy. Soc. London,235(756),PP.415-444, 1936
[10] J.G. Ziegler and N.B. Nichols, ''Optimum Settings for Automatic Controllers, '' Trans. ASMS, 64, PP.759-768,1942
[11] Angel V. Peterchev, ''Digital Pulse-Width Modulation Control in Power Electronic Circuits: Theory and Applications'', GRADUATE DIVISION
of the UNIVERSITY OF CALIFORNIA, BERKELEY
[12] R. F. Foley, R. C. Kavanagh, " An Area-Efficient Digital Pulse Width Modulation Architecture Suitable for FPGA Implementation" IEEE
Applied Power Electronic Conference,2005,pp.480-484.
[13] Datasheet:ADC0820 8-bit High Speed uP compatible A/D Converter with Track/Hold Function.
[13] Datasheet:ADC0820 8-bit High Speed uP compatible A/D Converter with Track/Hold Function.