2012年11月18日 星期日

[轉錄EDN]switch regulator 和linear regulator的區别


很多有關電源的書籍在這方面都有詳盡的論述。概括地講,linear regulator 的調整管工作在線性狀態,根據負載的變化情況來調節自身的內電阻從而穩定輸出電壓。它只能做降壓轉換,電路簡單,雜訊低,轉換效率可以簡單地看作輸出與輸入電壓之比,一般用於低壓差,小功率的場合。switch regulator調整管工作在開關狀態,通過調節導通和關斷的時間比例穩定輸出電壓,可靈活實現電壓的大小和極性的不同轉換。良好的設計可實現較高的轉換效率,電路相對複雜,存在開關雜訊。在linear regulator不適用的場合都可以應用。


switch 方式最主要的好處是效率(Po/Pi)的提升, 而且可以做升壓(boost), 降壓(buck), 升降壓(boost-buck). Linear regulator 效率低於switch, 由於輸出電壓小於輸入電壓. 目前Power supply 需求大功率(etc. 200W) 都是採用switch. 而小電流(mA)的就比較常見用regulator.

再補充一點:
switching regulator
需要外加電感,電阻和電容,如果要提供超過500mA的情況,通常會比較建議採用外加Power MOSFET
如果是linear regulator,一般來說大都是on-chip build-in,所能提供的電流大都不會超過100mA(泛指在SOC),因為若要提供大電流,POWER MOSFETSize就要很大,而且會有current density的問題,如果要linear regulator且又要超過100mA,絕大部份是採用外接的BJT

補充一下在應用方面
由於LDOnoise較小,故常用在RF電路上

 
LDO
Switching Converter
Efficiency
poor
Up to 95% and average about 90%
Conversion ratio
step down only
step down/up inverting
Output ripple
small
moderate
load capability
moderate
Be able to above 500 mA
Footprint area
small
 large



各種直接電源轉換技術之優劣比較

 在瞭解手持裝置內有哪些用電組件,以及有哪些可用的供電來源後,接著我們將來討論供電與用電間的電源轉換方式,而絕大多數都是DC/DC的直流間轉換,原因是AC/DC的交直流轉換多半在外部變壓器中轉換完成(透過橋式整流器、濾波電容),到裝置內已無需考慮此段過程。

 直流轉換主要分成兩種方式,即是線性調整Linear Regulator)與切換式調整Switch Regulator,亦稱:開關式、交換式),線性調整僅能用在降低輸出電壓,因此也稱線性降壓;而切換式調整則可以升壓(Boost)、降壓(Buck)、甚至反相(Invert,轉成負向電壓)。

 進一步的,切換調整又分成電容式切換電感式切換,電容式切換多被另稱成Charge Pump(電荷泵、或稱電荷幫浦);而一般若無特別指明,則提到切換式調整即是指電感式切換。

 從性質而言僅有上述的分類,但筆者發現各元件供應商會再進行更多的延伸區別,如Linear Regulator方面多出了一種LDOLow Drop Out,低消散)類型,強調輸入電壓不需高出輸出電壓太多即可穩壓運作,但本質上依然是線性降壓,只是電氣表現上更為卓越。

 另外,Switch Regulator也在DC/DC Switch Controller外衍生出一種DC/DC Switch Converter,差別只在於把Controller外部搭配的三個離散元件:P FETN FET、電感,其中P FETN FET改成內建,但仍需要外接電感,此作法主要是讓設計時更方便、製造時更省空間,然也因為採內建式的FET切換開關,使轉換能力受到限制,多半低於Controller的供電力,而運作原理與特性皆與Controller相同。不過即便供電力較DC/DC Controller小,但對手持裝置而言卻都已足夠,所以手持裝置內幾乎都用DC/DC Converter,少見DC/DC Controller,且有助於減少機內空間的佔用。

 除了轉換、調整方式的不同,Linear RegulatorCharge PumpSwitch Regulator三者所轉換出的直流電源潔淨度、以及轉換效率等也各有不同,而電路的複雜度、組件的成本也有差別。

 以Linear而言,它的實現電路最為簡易,電源潔淨度最佳(少漣波Ripple、雜訊Noise、幹擾EMI),但電源轉換率也最差,即是所有輸入電壓高出輸出電壓的準位統統以熱能方式消散,無法供輸出電路運用。且高功率型的Linear Regulator經常要外接散熱片,才能讓散熱加速,不過高功率型在手持裝置內使用的機會不多。

 至於Charge Pump,雖能夠升壓、降壓、反相,但多數的運用情況皆在升壓,Charge Pump的電源轉換率較Linear為高,但由於切換過程中只用上外接電容,未用及電感,使其轉換率仍不如電感式切換的Switch Regulator,且供電力也小於Switch Regulator,電源潔淨度未如Linear Regulator來得理想

 而Switch Regulator方面,其電源轉換率最高,但電源潔淨度卻也最難掌控,實現上的電路佔用面積亦最大(涉及電感線圈的配置),為讓外接電感縮小,多半是將Switch Regulator的切換頻率拉高(達MHz以上),在實際運用上則是升壓、降壓、反相皆有可能。同時前述三者在組件價格上,也以Linear較廉,Charge Pump次之、Switch Regulator較高。(見表:直流電源調整、轉換方式比較表)

■因應各部件的用電特性,給予不同的供電方式

 對用電、供電等部件有所瞭解,以及對各種直接電源轉換的差異有所認知後,即可以進行各自的供電對應。

 在MPU上,至少需要兩種電壓:VcoreVmain(有時亦稱Vi/o),由於要求的電流較大,為了電源利用率通常會用DC/DC Converter,同時若有DVS/AVS的動態調壓需要,還必須使用能彈性輸出電壓準位的DC/DC Converter,通常是用外部電阻的分壓值來操作輸出電壓,或依循各MPU的省電規範來設計。

 在DRAM記憶體上,少量的記憶體仍可使用Linear Regulator來供電,並有低雜訊(Low Noise)、低消散(Low Drop Out)、高漣波拒斥比(PSSR)等要求,然記憶體容量大時耗電也會增加,屆時改用DC/DC Converter較為合適。

 至於顯示方面則較為複雜,特別是背光部分,STNTFT需要背光,無論採用ELCCFL,都需要進行偏壓(Bias)處理,將數伏特的電壓提升至十多伏以上,並要有反相電壓,理由是ELCCFL需要交流驅動(如+15V-10V)。不過,ELCCFL驅動的電壓雖高,但電流耗用卻小(uA~數mA),因此使用Charge Pump進行升壓、反相來供電即可,不需使用供電力較大的DC/DC Converter

 至於用LED充當Backlight,現在普遍是用白光發光二極體(White LED),許多業者已經推出專為驅動White LED的晶片,設計時可直接沿用,並且也可支援相機閃光燈所用的White LED。然而即便不使用驅動晶片,也不一定要進行升壓、降壓才能供電,直接將White LED進行串並聯組合即可,例如將White LED串接,用多個White LED的內阻來承受較高的供電電壓。比較特別的是,White LED的用電較ELCCFL兇,每一個約要數mA以上才能驅動,因此建議從DC/DC Converter取得供電

圖一:ZETEX半導體公司的DC/DC轉換器:ZXSC100,外部只需要再加裝一個電感、一個開關電晶體、一個蕭特基二極體、及電阻、電感元件,即可將1.2V的輸入電壓轉換成3.3V,及最高1A的輸出。(圖片來源:ZETEX

圖二:若使用DC/DC Controller,則在進行切換式電源轉換時,外部依然要有P/N FET開關搭配,圖為多款ZETEX公司的表面黏著式P通道MOSFET。(圖片來源:ZETEX

2012年11月13日 星期二

專業詞彙 atomic 和 nonatomic



[轉錄自歐萊禮譯者的解釋]
完成性的「部分完成」(nonatomic)及「不可部分完成」(atomic)。

「部分完成」是指事情可以不用全部做完,縱使沒做完也能繼續而沒關係。
「不可部分完成」是指事情一定要全部做完,如果沒做完,就要恢復成開始之前的狀態。

根據如上的解釋可以發現,不可部分完成比部分完成更為嚴格,雖然會因此較為穩固,但可能也會更為耗時、耗資源,所以通常會用在重要的事情(例如存取重要資料),或者複雜的事情(例如多工)。

因此,關於屬性的「完成性」自訂特性,它的預設值是不可部分完成的atomic,但如果指定成nonatomic,則會讓存取方法可以部分完成。儘管相對之下指定成nonatomic可能會不夠穩固,但優點是速度快,所以適合用在iPhone應用程式。

希望以上解釋有助您理解。再次感謝您的寶貴意見!

VIO在chipscope的設定


假設在設計中寫著以下的 vio宣告
vio vio (
.CONTROL(CONTROL0), // INOUT BUS [35:0]
.ASYNC_OUT(
{
start2,//開始
fwd_inv_we2,
scale_sch2,//10
scale_sch_we2,
rst,

start,
fwd_inv,
fwd_inv_we,
scale_sch,//10
scale_sch_we
}) // OUT BUS [13:0]
);

到了chipscope必須自己命名,此時要注意,AsyncOut[0]是scale_sch_we,不是start2

2012年10月23日 星期二

Xilinx 高速IP的參考時脈

每個高速IP有固定的reference clock,然而卻也可以使用上下兩個bank的reference clokc給內部PLL來震盪到高速,必須修改TX_PLL以及RX_PLL的數值

2012年10月17日 星期三

Microblaze single input clock

預設為P/N 差動輸入,必須先移除後,再新增,即為single input

UART? RS232 ??

UART訊號格式 不等於 RS232訊號,就電器準位以及邏輯上是不同的。

2012年10月1日 星期一

2012年9月24日 星期一

c語言 #include 用法

#include <stdio.h> 表示這個stdio.h在某個資料夾下,非當下的資料夾
#include "stdio.h" 才是當下的資料夾下面有stdio.h
使用#include表示將某檔案加入專案,但是有一種加入方式是利用IDE(編譯器)加入,若已經使用IDE加入,就不需要使用#include

2012年9月17日 星期一

microblaze example code

SPI
1.須將所有相關code 加到src中 ,設定正確device id, 拿掉loopback的設定
2.必須設定XSpi_SetSlaveSelect(不是XSpi_SetSlaveSelectReg)而且必須在初始化之後

MISO,意思是,如果是master mode,就當作input;如果是slave mode, 就當作output

2012年9月7日 星期五

Xilinx 編譯指令:`define,`ifdef

//這樣的程式只會跑 c<=a+b 那一段,而不會跑c<=2,除非拿掉`define full
`define full
module top(
input rst,
input clk,
input [width-1:0] a,
input [width-1:0] b,
output reg [width:0] c
    );

parameter width=1;
`ifdef full
always@(posedge clk or posedge rst)begin
if(rst)
c<=0;
else
c<=a+b;
end
`else
always@(posedge clk or posedge rst)begin
if(rst)
c<=0;
else
c<=2;
end
`endif

endmodule

2012年9月4日 星期二

Xilinx Microblaze (2) -- 加入EDK 內部IP

若想在現有的XPS中新增 EDK IP,首先透過XPS中的IP catalog 將所想要的IP拖曳到System Assembly View中,切換到Address 頁面重新generate address。
回到Port頁面,Port頁面可分成兩部分,External Ports以及其他port。
External Port,顧名思義是system對外I/O設置。
其他port則是AXI匯流排系統的設置,一般port會有兩個子項目,BUS_IF 和IO_IF。
BUS_IF通常AXI(若是採AXI匯流排架構),而IO_IF就依照該IP所需要做設定,會有input or output or inout or tri-state 看是要連到外部(Make External)或只是新的接線(New Connection)或是接地(net_gnd)pull-high(net-vcc)等等。
注意!若是自己拖曳EDK IP需在完成XPS後,自行在verilog/VHDL加入訊號(腳位)宣告


2012年8月31日 星期五

Xilinx 外掛的Flash,腳位要設定嗎?

今天突然想到一個問題,如果要燒錄mcs file(fpga code for flash)的話,在top裏頭需不需要宣告flash的腳位?像是spi_clk, spi_miso, spi_mosi, spi_ss等等?似乎是不用~

2012年8月30日 星期四

microblaze-客製化SPI module

0.標準SPI有五根腳位(xilinx), MISO,MOSI,CLK,CS,SPISEL
1. 若是用Wizard增加SPI的話,只能增加一個,要是有多個 SPI需求的話,則必須要透過IP catalog慢慢新增。
然而,發現會多一根pin叫做SPISEL,若是採用SP605 package方式的話,並不會有該 pin,所以可能因為目前的project是一項項新增周邊,而XPS不曉得該SPI是master or slave所以放上了slave所特有的spisel 腳位。
若是master則必須在net選項中,選擇net vcc,也就是pull high,並且delete SPISEL此external port
若是slave則必須使其成為external port並且接到master的cs
2. 必須初始化,找出當下的旗標位置
example:
          XSpi * spiptr
       

2012年8月20日 星期一

xilinx verilog 寫法

當一個模組的reset是採用另一個模組的rdy(或其他訊號)時,進行behavior simulation會極慢!
所以最好還是採用global reset的設計。

2012年8月19日 星期日

Verilog 檔案處理

integer file_handle;                  //file_handle自取

file_handle=$fopen("file_name");//file_name自取

$fwrite=(file_handle,"%b\n ", dout);
         //%b or %h 看想使用者想儲存甚麼樣子的資料格式,而dout是使用者想要儲存的資料
$fclose(file_handle);

2012年8月13日 星期一

Xilinx Microblaze (1) -- 流程

Xilinx將MicroBlaze的使用流程做滿大的改變,以前的書已經無法勝任,除了使用流程改變、檔案產生的位置改變以外,最重要的是現在Xilinx主要架構是AXI(Arm Xilinx Interface)/AXI-Lite匯流排架構,不是過去的PLB(待查)。

1. 打開ISE,新增new source 新增一個Embedded Processor
2.進入Xilinx Platform Studio(XPS)透過wizard 設定所需的IP,此XPS產生兩個重要的file: MHS(Microprocessor Hardware Specification) file & UCF(User Constraints File) file,回到ISE
3.copy ucf 檔到project中,generate top HDL  source
4.在embedded processor 中點選 Export Hardware Design To SDK with bitstream,
   會開始synthesis->translate->MAP->P&R自動打開SDK 開始進行軟體工程

ELF file:在SDK中,進行編譯過的application(意即,經過編譯的C/C++)


Xilinx 給ngc

除了synthesis的選項中,IO buf 以及 bufg為零以外,還必須將相關IP 的ngc一起給,最後,製作一個.v file
module xxx {
input a,
input b,
output [1:0] c
}


endmodule

2012年2月3日 星期五

[FPGA] Xilinx SmartGuide 使用

在同一個project中,先跑完一次implementation,接著將目錄下叫做top_guide.ncd改名為reference.ncd(也可以不取reference),回到ISE視窗在top按下右鍵,點選SmartGuide,選取剛剛的reference.ncd。如此一來,當你增加新的電路時,ISE會參考該檔案來place&route。

2012年1月11日 星期三

[Verilog]命名

如果要複製module"A",命名須為A_1a,不可以(不建議)是A_a1