聶俊英
(西安睿控創(chuàng)合電子科技有限公司,陜西 西安 710071)
隨著高速信號(hào)在單板設(shè)計(jì)中的應(yīng)用越來(lái)越廣泛,高速數(shù)字信號(hào)快速上升引起的模擬效應(yīng)對(duì)單板設(shè)計(jì)的影響也越來(lái)越大,由此產(chǎn)生了一系列信號(hào)完整性、傳輸線效應(yīng)、阻抗匹配、時(shí)序冗余、電源完整性等問(wèn)題。而在已有的PCB(Printed Circuit Board,印制電路板)上發(fā)現(xiàn)和分析這些問(wèn)題是一件非常困難的事情,即使找到了問(wèn)題,對(duì)于一個(gè)已完成的PCB 要解決這些問(wèn)題也要花費(fèi)大量的時(shí)間和費(fèi)用。如果在設(shè)計(jì)初期和設(shè)計(jì)過(guò)程中就考慮這些方面的影響,修改同樣的問(wèn)題所花費(fèi)的時(shí)間和費(fèi)用就少得多,甚至能避免產(chǎn)生這樣的問(wèn)題。利用Cadence 公司強(qiáng)大的EDA 仿真軟件SigXplorer 就是一種有效的方法,可在PCB 設(shè)計(jì)前期和后期對(duì)高速信號(hào)進(jìn)行仿真和分析,并根據(jù)仿真結(jié)果生成約束條件導(dǎo)入到PCB 設(shè)計(jì)工具中,作為PCB 布線的約束。
要利用SigXplorer 進(jìn)行仿真,必須要有所要仿真器件的 IBIS ( Input/Output Buffer Information Specification,一種基于V/I曲線的對(duì)I/O BUFFER 快速準(zhǔn)確建模的方法)模型。由于IBIS 模型是行為級(jí)模型,一般都可以通過(guò)公開的渠道獲得器件的IBIS 模型。啟動(dòng)SigXplorer 后,通過(guò)菜單Analyze→library 打開庫(kù)瀏覽器,在瀏覽器中可以將IBIS 模型轉(zhuǎn)換為SigXplorer所認(rèn)識(shí)的DML(Data Manipulation Language,數(shù)據(jù)操縱語(yǔ)言)來(lái)進(jìn)行分析。將DML 格式文件裝入庫(kù)管理列表中后就可以進(jìn)行仿真了。本文主要介紹3 種類型仿真,即信號(hào)完整性仿真(Signal Integrality Simulating)、時(shí)序仿真(Timing Simulating)和拓?fù)浣Y(jié)構(gòu)仿真(Topology Simulating)。仿真的對(duì)象可以在PCB 中自動(dòng)提取,也可以手工建立。
目前,高速電路設(shè)計(jì)領(lǐng)域,隨著IC(Internal Circulation,集成電路)輸出開關(guān)速度的提高,不管信號(hào)周期如何,幾乎所有設(shè)計(jì)都遇到了信號(hào)完整性問(wèn)題。信號(hào)完整性問(wèn)題主要指信號(hào)的過(guò)沖和阻尼振蕩現(xiàn)象。SigXplorer 設(shè)計(jì)工具可以仿真實(shí)際物理設(shè)計(jì)中的各種參數(shù),對(duì)系統(tǒng)中的信號(hào)完整性問(wèn)題進(jìn)行定量、定性的分析。根據(jù)傳輸線理論,如果一個(gè)信號(hào)在傳輸線末端的阻抗沒(méi)有被匹配端接,那么將會(huì)在不連續(xù)端被反射,信號(hào)的一部分將會(huì)反射回源端[1]。當(dāng)反射信號(hào)到達(dá)源端時(shí),如果源端阻抗不等于傳輸線阻抗另一個(gè)反射也將產(chǎn)生。因此,如果傳輸線的兩端都不連續(xù)的話,信號(hào)將會(huì)在驅(qū)動(dòng)和接收之間來(lái)回反射,導(dǎo)致接收端波形產(chǎn)生過(guò)沖和振蕩。如果過(guò)沖太大,將會(huì)損壞芯片的內(nèi)部結(jié)構(gòu),使它失效。一般來(lái)說(shuō),上、下過(guò)沖不要超過(guò)0.8 V;最后還要注意振蕩,一般不要超過(guò)3 個(gè)明顯的振蕩波形。圖1 為未加任何處理情況下的仿真模型以及仿真得到的接收端波形,從圖中可以看到,過(guò)沖超過(guò)了0.8 V,且振蕩現(xiàn)象明顯。
圖1 未加串聯(lián)匹配電阻仿真得到的波形
利用以下3個(gè)方法可以減輕反射帶來(lái)的負(fù)面影響:①降低系統(tǒng)頻率以便在另一個(gè)信號(hào)加到傳輸線上之前傳輸線的反射到達(dá)穩(wěn)態(tài),這個(gè)對(duì)于高速系統(tǒng)通常是不可能的;②縮短PCB 走線以便反射在短時(shí)間達(dá)到穩(wěn)態(tài),但是這樣做會(huì)增加PCB 板層,成本提高很多,不切實(shí)際;③在傳輸線的兩端用等于線的特征阻抗的電阻端接以減少甚至排除反射[2]。其中串行端接是最常用的一種端接方式,通過(guò)在盡量靠近源端的位置串行插入一個(gè)電阻R(典型值為10~75 Ω)到傳輸線中實(shí)現(xiàn)。在上個(gè)例子中,在驅(qū)動(dòng)器端端接一個(gè)50 Ω電阻并且仿真得到的波形如圖2 所示,從圖中可以看到,加了串行端接電阻后過(guò)沖明顯減小,并且振蕩現(xiàn)象得到很大緩解,波形很平滑,符合設(shè)計(jì)的要求。一般來(lái)說(shuō),端接電阻越大,吸收反射的效果越好,但是也不能加的太大,一般在30~70 Ω之間,否則會(huì)因?yàn)殡娮杼?,?qū)動(dòng)器驅(qū)動(dòng)能力不足導(dǎo)致接收端波形出現(xiàn)回溝現(xiàn)象。對(duì)于高頻率時(shí)鐘信號(hào),盡量不要出現(xiàn)1 個(gè)驅(qū)動(dòng)源同時(shí)驅(qū)動(dòng)2 個(gè)以上負(fù)載的情況。如果確實(shí)需要接2 個(gè)以上負(fù)載,最好使用時(shí)鐘驅(qū)動(dòng)器。對(duì)時(shí)鐘信號(hào)的仿真,除了滿足一般信號(hào)的信號(hào)完整性要求外,還要求信號(hào)具有良好的單調(diào)性(上升沿和下降沿)。這是為了防止時(shí)鐘信號(hào)在邏輯電平門限附近多次穿越。
圖2 加串聯(lián)匹配電阻后仿真得到的波形
根據(jù)芯片間信號(hào)傳遞方式的不同,信號(hào)類型可分為同步和異步。同步信號(hào)是通過(guò)時(shí)鐘來(lái)同步數(shù)據(jù)傳輸,有嚴(yán)格的時(shí)序關(guān)系,時(shí)序仿真主要針對(duì)的就是同步信號(hào)。對(duì)于異步信號(hào),沒(méi)有時(shí)鐘作為基準(zhǔn),而且工作頻率較低,時(shí)序容易滿足,一般不需要時(shí)序仿真,主要關(guān)注信號(hào)的質(zhì)量,如單調(diào)性、過(guò)沖等。時(shí)序仿真的目的是通過(guò)電路原理、器件手冊(cè)來(lái)獲得一個(gè)最惡劣條件下的時(shí)序最大可用空間,并通過(guò)Cadence 仿真軟件計(jì)算出在滿足這個(gè)條件下的元器件布局布線約束。根據(jù)時(shí)鐘傳遞方式不同,同步信號(hào)可以分為外同步、源同步,2 種同步的差別在于時(shí)鐘和數(shù)據(jù)的相對(duì)關(guān)系,如圖3、圖4 所示。外同步是指數(shù)據(jù)在2 個(gè)芯片間傳輸時(shí),時(shí)鐘由另一塊芯片提供的信號(hào)類型。同步時(shí)鐘不是由發(fā)送數(shù)據(jù)或接收數(shù)據(jù)的芯片提供,一般有獨(dú)立的時(shí)鐘驅(qū)動(dòng)器。外同步方式時(shí)序分析的要點(diǎn)是用發(fā)送數(shù)據(jù)時(shí)鐘的下一個(gè)時(shí)鐘來(lái)接收數(shù)據(jù)。這種結(jié)構(gòu)應(yīng)用的場(chǎng)合比較多,比如處理器外接以太網(wǎng)PHY(物理層)的情況。
圖3 外同步方式
圖4 源同步方式
在slow 和fast 這2 種狀態(tài)下,仿真結(jié)果應(yīng)該滿足以下條件:slow 狀態(tài)應(yīng)滿足TSettleDelay(建立延時(shí)值)<Tflt-max(最大飛行時(shí)間),fast 狀態(tài)應(yīng)滿足TSwitchDelay(開關(guān)延時(shí)值)>Tflt-min(最小飛行時(shí)間)。TSettleDelay和TSwitchDelay是通過(guò)SigXplorer 仿真軟件得到的,如圖5 所示,也可以在波形圖中自己手動(dòng)測(cè)量。
圖5 建立延時(shí)(SettleDelay)和開關(guān)延時(shí)(SwitchDelay)
最大飛行時(shí)間Tflt-max和最小飛行時(shí)間Tflt-min是通過(guò)時(shí)序計(jì)算公式得到的。計(jì)算公式如下:
式中:Tco-max為輸出信號(hào)端輸出時(shí)鐘到數(shù)據(jù)有效的最大時(shí)間的數(shù)值;Tsu為建立時(shí)間的數(shù)值;Tjitter為時(shí)鐘抖動(dòng)(cycle to cycle的抖動(dòng))的數(shù)值;Tskew為時(shí)鐘偏移的數(shù)值,這是指時(shí)鐘驅(qū)動(dòng)器不同輸出端output to output skew;Tmargin-fast和Tmargin-slow為fast和slow這2種狀態(tài)下的時(shí)序設(shè)計(jì)余量的數(shù)值,一般可取300 ps;Tcycle為時(shí)鐘周期的數(shù)值;Tco-min為輸出信號(hào)端輸出時(shí)鐘到數(shù)據(jù)有效的最小時(shí)間的數(shù)值;Thd為保持時(shí)間的數(shù)值。
以上參數(shù)可以通過(guò)查驅(qū)動(dòng)源、接收器、時(shí)鐘驅(qū)動(dòng)器的數(shù)據(jù)手冊(cè)找到。所有的參數(shù)都得到后,就可以計(jì)算出最大飛行時(shí)間Tflt-max和最小飛行時(shí)間Tflt-min了。通過(guò)判斷上面列出的Tmargin-fast和Tmargin-slow2 個(gè)條件就可以知道時(shí)序是否能滿足。對(duì)于速度很高的網(wǎng)絡(luò)或復(fù)雜拓?fù)?,有時(shí)會(huì)難以同時(shí)滿足slow、fast 條件,此時(shí)應(yīng)保證滿足slow 狀態(tài),fast 狀態(tài)可適當(dāng)放寬。此外,當(dāng)時(shí)序不滿足時(shí),也可以通過(guò)調(diào)整PCB 走線來(lái)改變建立延時(shí)和開關(guān)延時(shí)。源同步方式是在送數(shù)據(jù)信號(hào)的同時(shí)提供時(shí)鐘信號(hào)或鎖存信號(hào),比較常見(jiàn)的CPU(Central Processing Unit/Processor,中央處理器)外接SDRAM(Synchronous Dynamic Random-Access Memory,同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器)就是源同步方式。由于源同步方式中時(shí)鐘始終在數(shù)據(jù)中間,這時(shí)就沒(méi)有Tco的概念,而是使用輸出的setup 和hold 參數(shù)來(lái)表示時(shí)鐘和數(shù)據(jù)的相位關(guān)系。由于芯片輸出時(shí)已經(jīng)保證了setup 和hold time,那么設(shè)計(jì)時(shí)主要是要保證時(shí)鐘到達(dá)接收端后,也滿足接收芯片的setup 和hold 時(shí)間要求,發(fā)送和接收的2 個(gè)采樣窗口能夠匹配(最好在中間),那么時(shí)序就滿足了。首先要通過(guò)仿真分別得到時(shí)鐘和數(shù)據(jù)的飛行時(shí)間(從驅(qū)動(dòng)源到接收端總的延時(shí)時(shí)間),飛行時(shí)間的含義和測(cè)量方法如圖6 所示。
圖6 飛行時(shí)間的含義和測(cè)量方法
時(shí)鐘和數(shù)據(jù)線的飛行時(shí)間分別表示為Tflt-clk(時(shí)鐘線飛行時(shí)間)和Tflt-data(數(shù)據(jù)線飛行時(shí)間),首先定義一下方向:若Tflt-clk>Tflt-data,則Tclk-data-skew(時(shí)鐘線和數(shù)據(jù)線之間的時(shí)間偏差)=Tflt-clk-Tflt-data,為正。
時(shí)序計(jì)算公式如下:
式中:Tsu-out為輸出的建立時(shí)間的數(shù)值;Tsu-in為輸入的建立時(shí)間的數(shù)值;Thd-out為輸出的保持時(shí)間的數(shù)值;Thd-in為輸入的保持時(shí)間的數(shù)值。
即Tclk-data-skew=[(Thd-out-Thd-in)-(Tsu-out-Tsu-in)]/2。
通過(guò)調(diào)節(jié)時(shí)鐘和數(shù)據(jù)之間的偏移量Tclk-data-skew,可以將采樣窗口正好落在數(shù)據(jù)中間。
當(dāng)一個(gè)驅(qū)動(dòng)源驅(qū)動(dòng)多路負(fù)載時(shí)必須選用合適的拓?fù)浣Y(jié)構(gòu)以達(dá)到最佳的傳輸效果。常見(jiàn)的點(diǎn)到多點(diǎn)的拓?fù)浣Y(jié)構(gòu)有樹狀拓?fù)浣Y(jié)構(gòu)、菊花鏈拓?fù)浣Y(jié)構(gòu)、星型拓?fù)浣Y(jié)構(gòu)[3]。樹狀拓?fù)溥m合接收器比較多而分散的場(chǎng)合,但每次分支的數(shù)量盡量小于3,否則阻抗匹配不好做。給每條分支都加源端串連電阻,阻值大小根據(jù)仿真結(jié)果選定。這種結(jié)構(gòu)的好處是分支等長(zhǎng)的限制可適當(dāng)放松。樹狀拓?fù)湫枰?qū)動(dòng)源的驅(qū)動(dòng)能力比較強(qiáng),帶的負(fù)載少。菊花鏈拓?fù)浣Y(jié)構(gòu)需要布局時(shí)負(fù)載間隔均衡放置,比如CPU 和外部SDRAM 之間的總線可以采用這種方式。在源端加串連匹配電阻可以顯著改善接收端的波形。星型拓?fù)湟惨筘?fù)載均勻放置、傳輸線等長(zhǎng)、適合驅(qū)動(dòng)器居中、負(fù)載均勻分布在外圍圓周上的布局。在源端加一個(gè)串連匹配電阻。數(shù)據(jù)線或者地址線常常有一個(gè)驅(qū)動(dòng)帶多個(gè)負(fù)載的情況,由于數(shù)據(jù)或者地址線一般都很多,不可能為一根線加三四個(gè)電阻,一般情況是在源端加一個(gè)匹配電阻,所以一般采用菊花鏈或者星型拓?fù)浣Y(jié)構(gòu)。圖7 為66 M 頻率的數(shù)據(jù)線一驅(qū)四采用菊花鏈拓?fù)涞睦?,仿真得到的波形過(guò)沖很小,有輕微振蕩現(xiàn)象,總的來(lái)說(shuō)符合設(shè)計(jì)要求。
圖7 菊花鏈拓?fù)浣Y(jié)構(gòu)下仿真波形
運(yùn)用SigXplorer 設(shè)計(jì)工具進(jìn)行系統(tǒng)級(jí)前仿真可以驗(yàn)證設(shè)計(jì)方案的可實(shí)現(xiàn)性,根據(jù)設(shè)計(jì)對(duì)SI(信號(hào)完整性)與時(shí)序的要求來(lái)選擇關(guān)鍵元器件,優(yōu)化系統(tǒng)時(shí)鐘網(wǎng)絡(luò)及系統(tǒng)各部分的延遲、選擇合理的拓?fù)浣Y(jié)構(gòu),調(diào)整PCB 的元器件布局、確定重要網(wǎng)絡(luò)的端接方案。力爭(zhēng)在設(shè)計(jì)階段解決潛在的問(wèn)題,減少單板改板的次數(shù),從而降低成本,縮短研發(fā)周期。