Gerber Format是電子業之間通用的資料格式,而它是被用於設計完成與上線制造PCB(Printed Circuit Board印刷電路板)的中間媒介,就像土木或機械五金業常用的Autocad軟件所輸出的DXF或HPGL格式一般,當設計師把圖稿設計完成后所產生的與其它系統連結的工作資料檔。這本是美國Gerber公司自行制定出來給該公司所生產的光學繪圖機來使用的,也因此而稱為Gerber data,但因為該格式頗能符合電子業間的需求,也因此大家廣泛使用久而久之演變成一種業界標准的資料格式。Gerber格式是EIA標准RS一274D的子集。擴展Gerber格式是EIA標准RS一274D格式的超集,又叫RS一274X。RS一274X增強了處理多邊形填充,正負圖組合和自定義D碼及其它功能。它還定義了Gerber數據文件中嵌入光圈表的規則。為了能夠准確分析Gerber文件的數據格式,下文將先簡析矢量光繪機的工作原理。
矢量光繪機工作原理
矢量光繪機是在光源與膠片之間使用不同形狀的曝光孔/符號盤/光圈(Aperture),從而在膠片上得到不同形狀的圖素。在光繪機上有一個光孔輪,一般是個小圓盤,上面排布着一圈曝光孔,數量為24~70。光繪機在繪圖時,光頭行走到指定位置,光孔輪旋轉到期望的曝光孔正好出現在光源與膠片之間,然后光線穿過曝光孔在底片上曝光。將光孔輪上的曝光孔旋轉到指定位置上的命令稱為D碼(圖樣碼/設計圖碼)。曝光孔可制作成任何形狀,曝光孔制作很麻煩,是一件很費時的工作,因此多數廠家都使用一種標准光孔輪。矢量光繪機在曝光焊盤時采用閃光曝光(Flash)方式,即光繪機在曝光該焊盤的瞬間靜止不動,停留在焊盤所在坐標位置上,快門開啟,光源閃亮曝光。而在曝光線條時,使用移動曝光方式,光繪機在線條的起始位置打開快門,開始曝光,同時光繪機按一定的速率移動至線條結束位置,關閉快門,結束曝光。光斑在底片上的移動軌跡形成線條。光繪機的移動速度和光源亮度決定了底片的感光量。在曝光焊盤時使用閃光曝光,光源開閉頻繁,且曝光時間短,因此要求光源亮度高,可靠耐用;而在曝光線條時,光繪機的移動速度相對較慢,要求亮度較低,所以光繪機通常使用不同的光源分別曝光焊盤和線條,如使用高壓氙燈做焊盤的曝光 光源,使用鎢燈作為線條的曝光光源。
Gerber文件的數據格式
從某種意義上來說,RS-274X文件(一般后綴為GBX,GBR等)是一種腳本文件,它用於指示光繪機進行各種繪制或運動形為。
一、數據塊(Data Blocks)
RS-274X 文件是由數據塊組成的,每個數據塊都是以(*) 結尾,每個數據塊都包括了一個或多個參數,如示例:
X0Y0D02*
X10000Y0DO1*
為了增強可讀性,建議相關的數據塊在一行(因為一個數據塊可以在多行),
二、數據類型
數據類型主要包括以下幾種類型,坐標數據(Coordinate Data),功能指令(Function Codes) ,參數(Parameters)
三、坐標數據
坐標數據主要是定義在平面的中點數據,在RS274D的術語中稱為地址。
坐標數據可能是:
- 1)X和Y坐標定義的點,
- 2)相對於X,Y方向的便移量數據,稱為I,J數據
FS(Format Specification) 格式定義指示了數字如何被解釋的。
坐標系采用右手坐標系。
坐標是模態(modal) 的,如果一個X被忽略,則X將保留上一次的X坐標值,如果在當前層的第一個X被忽略,因為沒有上一次的X的坐標值,那么X坐標將被視為零。類似地,Y坐標也是這樣處理的。
偏移量不是模態上的,如果I或J被忽略,則缺省值為零。
注意:
GERBER的讀者有時候會錯誤地處理缺省值零。為了清晰和魯棒性,推薦總是顯式地指定第一個坐標(即便就是零,也顯式指定),這樣就不用考慮缺省的零。
示例:
1: X100Y200* 點(+100, +200)
2: Y-300* 點(+100, -300)
3: I200J100* 平移(+200, +100)
4: X300Y200I150J50* 點(+300,+200)且平移(+150,+50)
5: X+100I-50* 點(+100,+200)且平移(-50,0)
四、功能指令(Function Codes):
功能指令描述的是如何解析相關聯的坐標數據。如,畫一條線或畫一個圓。(通常,但不是所有,這些代碼是延續已經過時的RS-274D的格式,它們被稱為字(words)或代碼(codes))。
如
G74*
每個指令都會影響到其后的數據塊,直到遇到另外一個相同類型的代碼或生成新層時結束。我們稱這種持續性的活動為模態(modal)。例如G02指示的是順時針圓弧插補(CCI, clockwise circular interpolation)。在遇到另外一個插補指令或生成新層之前,該指令后的所有坐標數據都被解釋為順時針圓弧插補。指令的細節描述后序再討論。
五、參數 (Parameters)
參數定義了整個圖像或單層的各種特征。它們被用於解釋其他的數據類型,(通常,這些參數被稱為Mass 參數)。控制整個圖像的參數通常會放在文件的開始處。產生新層的參數被放置在文件恰當的位置。參數由兩個字符加一個或多個緊隨其后的可選修改符組成。參數的限定符號為“%”.每個包含在數據塊內的參數必須以“*”結束。並且參數限定符必須立即跟在塊結束符后面,不允許插入空格。
例如:
%FSLAX23Y23*%
參數必須是在成對的參數限定符內,限定符內可以放一個或多個參數,兩個限定符之間最大的字符數為4096個。
例如:
%SFA1.0B1.0*ASAXBY*%
為了提高可讀性,兩個參數間允許換行,如:
%SFA1.0B1.0*
ASAXBY*%
當然,為了簡化和可讀性,推薦每行是只設置一個參數。與參數聯合的所有數值都使用顯式的小數點,如果不使用小數點,數值應當認為是整數。
參數的語法為:
%參數指令<必選修飾符>[可選修飾符]%
語法|說明|
---|:--😐---:
參數指令(parameter code)|兩個字符的指令,如AD,AM,FS等
必選修飾符(required modifiers)|必須是完整的定義
可選修飾符(optional modifiers)|依賴必選修飾符的定義
PCB各層含義及Gerber
對於不同的PCB設計就有不同的輸出Gerber文件數,特別是不同板層的PCB設計差別更大。但是通常來講有七種板層數據需要輸出,這們分別是:
-
(1)Routing(絲印層):如果是兩層以上板,將分為上、下或中間走線層
-
(2)Silkscreen(絲印層):多層板有上、下兩層,如果底層沒有絲印,則不用出;
-
(3)Plane(電源、地平面層):只是針對多層板而言(以負片輸出);
-
(4)Paste Mask(SMD貼片層);
主要針對PCB板上的SMD元件。如果板全部放置的是Dip(通孔)元件,這一層就不用輸出Gerber文件了。在將SMD元件貼PCB板上以前,必須在每一個SMD焊盤上先塗上錫膏,在塗錫用的鋼網就一定需要這個Paste Mask文件,菲林膠片才可以加工出來。
Paste Mask層的Gerber輸出最重要的一點要清楚,即這個層主要針對SMD元件,同時將這個層與下面即將介紹的Solder Mask作一比較,弄清兩者的不同作用,因為從菲林膠片圖中看這兩個膠片圖很相似。 -
(5)Solder Mask(主焊層);
主要用途是保證被選項(比如元件腳焊盤和某些特殊的銅皮等)在PCB板上不被綠油覆蓋而直接以銅皮的形式出現在板上,凡是需要焊接與貼的對象都一定要選擇,簡單地講,在設計中如果希望某對象以裸銅的形式出現在板上,那么在輸出主焊層就可以把它選上。
對於主焊層Gerber,輸出選項Pads(焊盤)一定需要選擇,但是主焊層的Pads(元件腳焊盤)跟PastMask中不一樣,它包括了SMD和Dip兩種焊盤,而PastMask卻只包含SMD焊盤。 -
(6)NC Drill(NC鑽孔層);
對於有通孔的PCB板設計,NC Drill輸出文件必不可少的,沒有這個文件就沒法給PCB板鑽孔。 -
(7)Drill Drawing(鑽孔參考圖層);
鑽孔參考圖是為鑽孔提供的一個數據參考圖。輸出該層時要注意在進行選項設置時,有鑽孔的對象一般都需要選上,因為它的輸出主要就是針對鑽孔對象,比如Pads(焊盤)與Vias(過孔)等。
Gerber文件后綴名及含義
Gerber文件本身就是一個文本文件,沒有固定的后綴名(像通常的Windows上的文件那樣)。但通常Gerber文件還是會約定俗成地附上一個后綴名,下面是一個后綴名及其對應的含義的列表:
后綴名|含義
---|:--😐---:
.APR|光圈文件 Aperture Data
.EXTREP| 額外文件(比如中心點位置)
.REP|光圈表文件
.RUL|規則表
.GKO|Keep Out Layer 禁止布線層(可做板子外形) outline
.GTO|Top Overlay 頂層絲印 silkscreen
.GBO|Bottom Overlay 底層絲印 silkscreen
.GPT|Top Pad Master 頂層主焊盤 Parts
.GPB|Bottom Pad Master 底層主焊盤 Parts
.GTS|Top Solder 頂層阻焊(也叫防錫層,負片) solder mask
.GBS|Bottom Solder 底層阻焊(也叫防錫層,負片) solder mask
.GTL|Top Layer 頂層走線 signal
.GBL|Bottom Layer 底層走線 signal
.GTP|Top Paste 頂層表貼(做激光模板用)
.GBP|Bottom Paste 底層表貼(做激光模板用)
.G1|MidLayer1 內部走線層1
.G2|MidLayer2 內部走線層2
.G3|MidLayer3 內部走線層3
.G4|MidLayer4 內部走線層4
.GP1| lnternal Plane1 內平面1(負片)
.GP2| lnternal Plane2 內平面2(負片)
.GM1|Mechanical1 機械層1
.GM2| Mechanical2 機械層2
.GM3| Mechanical3 機械層3
.GM4|Mechanical4 機械層4
.GD1|Drill Drawing 鑽孔數據
.DRL|Drill Data 鑽孔數據
.TXT|Drill Position 鑽孔位置
.DRR|Drill Tool size 鑽孔尺寸
.LDP|Drill Report 鑽孔報告
附上一個開源的Gerber渲染庫(C++).
