基于Protel SDK的傳輸線分析與端接處理系統(tǒng)
摘要:印刷電路板走線傳輸線效應是影響印刷電路板走線信號質(zhì)量的主要因素。本文結(jié)合ProtelSDK,提出一種采用Client/Server結(jié)構(gòu)嵌入于Protel的計算機自動印刷電路板走線傳輸線分析及端接處理系統(tǒng),該系統(tǒng)能對印刷電路板走線傳輸線分析,對存在問題的走線給出處理策略。
關鍵字:傳輸線;端接;走線;客戶/服務器結(jié)構(gòu)
1、引言
隨著電子信息產(chǎn)業(yè)的發(fā)展,電子產(chǎn)品正向高性能、小型化發(fā)展。電子產(chǎn)品的主要載體是印刷電路板(Printed Circuit Board簡稱PCB),在電子產(chǎn)品的小型化過程中PCB板面積減少,層數(shù)增多,器件密集,走線復雜;電子產(chǎn)品追求高性能使產(chǎn)品內(nèi)部時鐘頻率(如MCU的主頻)增高,信號邊沿變陡,從而使PCB板走線信號質(zhì)量下降,造成電子產(chǎn)品的性能下降,甚至功能失效。
造成PCB板走線信號質(zhì)量(即信號完整性)下降的主要因素有:反射、串擾和電源/地噪聲。在高速數(shù)字系統(tǒng)中,反射問題尤其突出。各電子產(chǎn)品廠商都非常重視其產(chǎn)品中PCB走線信號完整性,各ECAD和EDA軟件廠商也都推出信號完整性分析軟件或軟件模塊,如:Protel Signal Integrity。這些軟件一般都能對PCB走線進行傳輸線分析,并能仿真信號反射波形,但是它們一般都不提供合理的端接方式和端接參數(shù)。也有一些專門用于傳輸線特征阻抗計算的軟件,如:Si6000b,這些軟件一般獨立于PCB板圖,需要用戶自己輸入PCB走線參數(shù),使用不方便。本文結(jié)合傳輸線理論、端接技術并采用Protel SDK提出一種嵌入于Protel的傳輸線分析和端接處理系統(tǒng),該系統(tǒng)能對Protel PCB走線進行傳輸線分析,并給出合理的端接方式和端接參數(shù)。
2、Protel SDK
2.1 Protel的Client/Server結(jié)構(gòu)
Protel是國內(nèi)使用最廣泛的EDA軟件之一,它最大且鮮為人知的特點是采用了Client/Server結(jié)構(gòu)(Protel自3.X版起采用Client/Server結(jié)構(gòu))。采用Client/Server結(jié)構(gòu)的Protel有兩大部分組成:設計資源管理器和插入式服務器,參見圖1所示。
設計資源管理器是運行于Windows操作系統(tǒng)的應用程序,它一方面為用戶提供統(tǒng)一的集成工作環(huán)境,使用戶在電路設計的各個階段無需更換工作環(huán)境,方便用戶操作;同時為插入式服務器提供公共數(shù)據(jù)交換和命令傳遞平臺,保證各插入式服務器間順暢的命令和數(shù)據(jù)的傳遞。
插入式服務器不是獨立的運行于Windows操作系統(tǒng)的應用程序,它是運行于設計資源管理器的動態(tài)連接庫(.DLL文件)。Protel向用戶提供的完成電路設計的各項功能由各個插入式服務器完成。如:Schematic Server:原理圖編輯服務器;PCB server:印刷電路板設計服務器。用戶運行Protel時,首先啟動的是設計資源管理器,再由設計資源管理器根據(jù)用戶要打開的文件啟動相應的插入式服務器,如:用戶要打開原理圖文件(.SCH文件),設計資源管理器就啟動原理圖編輯服務器(Schematic Server),屏幕上顯示原理圖編輯服務器的菜單,用戶通過操作原理圖編輯服務器完成原理圖編輯工作。
在Protel自身提供的插入式服務器中,許多插入式服務器功能非常強大,如:原理圖編輯服務器,能完成原理圖編輯的各種操作。為方便功能模塊的劃分,Protel將插入式服務器按照功能分成一個個處理(Process),每一個處理完成特定的功能,如:Sch:ZoomRedraw是指Sch(原理圖編輯)服務器中的ZoomRedraw(屏幕刷新)處理。
2.2 Protel SDK
設計資源管理器為第三方EDA軟件(插入式服務器)提供公共數(shù)據(jù)、命令平臺,同時為方便第三方廠商開發(fā)基于Protel的EDA軟件,即第三方EDA軟件, Protel向用戶提供SDK軟件包。SDK軟件包包括:服務器生成向?qū)Ш蚉rotel API及相關文檔資料。
服務器生成向?qū)且粋€運行于設計資源管理器的插入式服務器,它為用戶生成第三方EDA軟件模板的原代碼和安裝文件(.INS文件),安裝文件用于將用戶開發(fā)的第三方EDA軟件安裝在設計資源管理器平臺上。服務器生成向?qū)Э梢詾橛脩羯蓛煞N格式的原代碼:Delphi和C++ Builder。
為方便用戶開發(fā)第三方EDA軟件,Protel向用戶提供了大量的API,如:Schematic API、PCB API和Client API等,為方便用戶使用這些API,Protel向用戶提供有關API文檔及RTL(Run Time Library:運行庫)。
3、PCB走線傳輸線分析、端接處理系統(tǒng)
根據(jù)傳輸線理論以及Protel結(jié)構(gòu),將PCB走線傳輸線分析、端接處理系統(tǒng)劃分為三個模塊:走線獲取模塊、傳輸線分析模塊和端接處理模塊。走線獲取模塊的功能是獲取用戶選擇的走線,以對此走線進行傳輸線分析和端接處理。傳輸線分析模塊的功能是判別PCB走線是否需要當作傳輸線看待。端接模塊的功能是對以傳輸線看待的走線給出合理的端接方式和端接參數(shù)。系統(tǒng)結(jié)構(gòu)如圖2所示。
PCB走線傳輸線分析、端接處理系統(tǒng)的流程如圖3所示。
3.1、走線獲取
走線獲取模塊的主要功能是根據(jù)用戶在PCB編輯器(即PCB服務器)選擇的走線獲取走線網(wǎng)絡名,以便后續(xù)模塊(傳輸線分析模塊和端接處理模塊)根據(jù)此網(wǎng)絡名確定該走線網(wǎng)絡的所有走線。
Protel PCB編輯器為每一個打開的PCB文件建立一個數(shù)據(jù)庫DDPCB文檔數(shù)據(jù)庫,用于儲存PCB版圖中的PCB對象,如:元器件、走線、焊盤等,以及每一個對象的屬性。PCB API采用Protel累接器(Iterator)訪問PCB文檔數(shù)據(jù)庫,利用累接器可以查詢、修改、添加和刪除PCB文檔數(shù)據(jù)庫中的PCB對象及其相應屬性,即查詢、修改、添加和刪除PCB版圖中的PCB對象及其相應屬性。相關代碼如下:
BoardHandle := PcbApi_GetCurrentBoardHandle; // 獲取PCB板句柄
IteratorHandle := PcbApi_CreateIterator(BoardHandle,eNetObject,eProcessAll,
eIgnoreLayer); // 生成走線網(wǎng)絡累接器
QueryNetHandle := PcbApi_GetFirstObject(IteratorHandle); //獲取第一個走線網(wǎng)絡句柄
PCB API提供TPcbNet類,供用戶訪問PCB板圖中的走線網(wǎng)絡信息,API函數(shù)PcbApi_QueryNet供用戶獲取/設置走線網(wǎng)絡屬性,獲取走線網(wǎng)絡名的相關代碼如下:
PcbApi_QueryNet(eGetState,QueryNetHandle,QueryNetIndex, QueryNetName,QueryNetVisible,QueryNetColor);
If QueryNetVisible = True then
SearchNetName := QueryNetName; // SearchNetName即用戶選擇走線網(wǎng)絡名
3.2 傳輸線分析
傳輸線分析模塊的主要功能是判別用戶選中的走線是否看成傳輸線,即是否滿足式(1),
(1)
L :走線網(wǎng)絡長度
:帶負載信號傳播速度
:驅(qū)動器輸出信號上升時間
:驅(qū)動器輸出信號下降時間
根據(jù)傳輸線理論,對于微帶結(jié)構(gòu)走線(PCB貼附在介質(zhì)材料平面直接暴露在空氣中的走線,如:單面板和雙面板的走線以及多層板的頂層和底層的走線)可得(參見參考文獻[3]P119~P150):
εγ:介電常數(shù)
Cd:負載電容,即考慮接收器輸入電容
H :走線高度,即走線與地電平面之間的距離,一般可認為板基厚度
W :走線寬度
T :走線厚度,即走線銅箔厚度
判斷是否滿足式(1)需要獲取大量參數(shù),如: 、 、 、 等,其中部分參數(shù)可以從PCB板圖中獲取,部分參數(shù)需要用戶輸入,系統(tǒng)設計用戶界面如圖4所示,用戶可直接輸入相關參數(shù),用戶也可選擇相關工藝,系統(tǒng)內(nèi)建有數(shù)據(jù)庫將工藝轉(zhuǎn)換成相關參數(shù)。
走線長度和走線寬度可以從PCB板圖中獲取,走線寬度的獲取方式基本與走線網(wǎng)絡名獲取方式相似。走線長度L是走線網(wǎng)絡中各走線長度的疊加,PCB_API提供TPcbTrack類供用戶訪問PCB板圖中走線信息,由于TPcbTrack類不提供走線長度屬性,只能由走線的起點和終點坐標通過勾股定理求得。計算走線長度的相關如下:
BoardHandle := PcbApi_GetCurrentBoardHandle;
IteratorHandle := PcbApi_CreateIterator(BoardHandle, eTrackObject,eProcessAll,eIgnoreLayer);
TrackHandle := PcbApi_GetFirstObject(IteratorHandle);
While (TrackHandle > 0) do
Begin
……
If (Net.Name = SearchNetName) Then // SearchNetName:為指定走線網(wǎng)絡名
RealL := RealL + sqrt(sqr(Track.x2 - Track.x1) + sqr(Track.y2 - track.y1));
Net.Free; // RealL:為走線網(wǎng)絡長度
Track.Free;
TrackHandle := PcbApi_GetNextObject(IteratorHandle);
End;
3.3 端接處理
傳輸線上傳輸?shù)男盘栐谧杩共贿B續(xù)點會發(fā)生信號反射,進而產(chǎn)生振鈴現(xiàn)象。PCB走線只要寬度不變,其特征阻抗固定不變,阻抗連續(xù)。而驅(qū)動器輸出阻抗較小,往往小于PCB走線特征阻抗;接收器輸入阻抗較大,往往大于PCB走線特征阻抗。信號會在驅(qū)動器與PCB走線連接處和PCB走線與接收器連接處來回反射,形成振鈴,影響電路正常工作。反射問題的主要解決辦法是在驅(qū)動器與PCB走線連接處或PCB走線與接收器連接處端接匹配阻抗,使整個回路阻抗連續(xù),避免信號反射,防止振鈴現(xiàn)象出現(xiàn)。端接方式有很多,如:串聯(lián)端接、并聯(lián)端接、戴維寧端接等,PCB走線端接方式的選擇與PCB走線拓撲結(jié)構(gòu)、PCB走線特征阻抗、驅(qū)動器、接收器以及負載類型等參數(shù)有關(各種端接方式的選擇及端接參數(shù)的計算參見參考文獻[3]P159~P183和參考文獻[4]P178~P190)。端接處理的流程如圖5所示。
4、結(jié)束語
本設計最終生成.DLL文件,以第三方服務器形式安裝于Protel,使Protel具有傳輸線分析和端接處理功能,能自動對印刷電路板走線進行傳輸線分析,對存在問題的印刷電路板走線給出合理的端接策略。即使沒有豐富傳輸線分析和處理經(jīng)驗的普通電子線路工程師運用該功能也能設計出走線信號質(zhì)量良好的印刷電路板,從而提高電子線路以及電子產(chǎn)品的功能和性能。
參考文獻:
[1] 呂昂. 基于Protel的自動降額設計系統(tǒng)的設計與實現(xiàn)[J]. 浙江萬里學院學報,2004,(5):82-86.
[2] 呂昂,鄭紅平,王曉勇. 基于Protel SDK的EDA軟件開發(fā)[J]. 農(nóng)機化研究,2004,(5):238-240.
[3] Mark I. Montrose著. 劉元安,李書芳,高攸綱譯. 電磁兼容性和印刷電路板理論、設計和布線[M]. 北京:人民郵電出版社,2002.
[4] Howard Johnson,Martin Graham著. 沈立,朱來文,陳宏偉等譯. 高速數(shù)字設計[M]. 北京:電子工業(yè)出版社,2004.
[5] 呂昂,王曉勇. 基于Protel的信號完整性分析[J]. 浙江萬里學院學報,2003,(4):111-114.
評論