前言:中文翻做”連續(xù)時(shí)間性線性均衡器”的continuous time linear equalizer (以下簡(jiǎn)寫為CTLE), 常在現(xiàn)今通信渠道(communication channel)里被使用; 當(dāng)一channel信號(hào)損耗較大時(shí), CTLE常被拿來為接收端或下游的鏈路做為減少失真、恢復(fù)原始信號(hào)的一種方式; 在網(wǎng)上已有許多有關(guān)CTLE在理論如何運(yùn)作的探討, 更深入的設(shè)計(jì)細(xì)節(jié)也在大學(xué)/研究所程度的教科書里找得到;在這篇貼文里, 在簡(jiǎn)短介紹CTLE為何之后,我想要以為CTLE 建IBIS-AMI模型的角度談一些實(shí)務(wù)上的考量;其中雖然一些關(guān)鍵處為了業(yè)務(wù)機(jī)密的考量只能點(diǎn)到為止, 但仍希望會(huì)對(duì)考量建模步驟或流程的讀者有些幫助。 [Credit]: 這篇貼文的一些用圖來自Sam Palermo教授的課程摘要(連結(jié)于下), 雖然共事時(shí)彼此不認(rèn)識(shí),但我們之前都同一時(shí)期在在Intel工作過… ECEN 720: High-Speed Links Circuits and Systems什么是CTLE及為何用它:上圖為兩個(gè)常見的SERDES通道原理圖, 上方者在TX及RX間直接為被動(dòng)性的channel所連接;而下方者則是透過了位于中央的repeater把上下游兩個(gè)Channel連接起來;在很多界面里(如USB3), 這種串接(cascade)可以連續(xù)好幾次, 所以會(huì)有兩個(gè)或更多的channel相連接;這些通道里的Rx端或Repeater/Redriver里就可能會(huì)有CTLE;而圖中的”S” 方塊系泛指如封裝、通孔VIA、傳輸線及連接器connector等等被動(dòng)元件的合成S參數(shù);這些通道元件有些共通的特性..如在頻域上對(duì)不同頻率會(huì)有不同的耗損/速率改變, 這種現(xiàn)象一般稱為色散(dispersion) 舉例來說, 我們可以把這些以S參數(shù)代表的差分輸入/輸出曲線在頻域上畫出來, 就會(huì)得到如上圖的不同損耗曲線。 在現(xiàn)今數(shù)位通信的傳送的位元信號(hào)多是以方波來表示0與1, 我們知道這些波形里的快速上升或下降轉(zhuǎn)換過程(rising/falling transition)含有豐富頻率成分的部份;理論上來說,要保持被傳信號(hào)不失真,這些不同頻率的成分應(yīng)被一視同仁地被續(xù)傳下去,但現(xiàn)實(shí)上這種所謂的unit-gain all pass filter并不存在, 所以各種頻率成份也就或多或少地被放大或縮減了; 如果下圖中的綠框代表我們想要得到的這種理想無失真狀態(tài): 而實(shí)際上的通道卻是如紅框所示, 則要為信號(hào)加以補(bǔ)償,吾人所需加入的就是如藍(lán)框的線性均衡器,而這也就是為什么均衡器常被使用于有損通道的原因:由于線性關(guān)系其在頻域上可和通道的特性曲線直接相乘而得到趨進(jìn)理想的傳輸特性;這里有兩點(diǎn)值得注意: 其一是均衡器和所欲補(bǔ)償?shù)暮膿p是配對(duì)的, 也就是說若拿同一均衡器來套到不同損耗的通路,就可能會(huì)有補(bǔ)償過度或不足的情形;其二是CTLE只是這里所示均衡器里的一種或一個(gè)環(huán)節(jié)。 CTLE 只是linear equalizer里的一種:線性均衡器可以用很多方式來設(shè)計(jì)或呈現(xiàn);舉例來說, 如下的feed-forward equalizer就被常被用于Tx及DFE端: 這類的均衡器的頻響有部份限制, 但其作用較易于理解且AMI實(shí)作上也不難, 比如說如果只有一個(gè)tap的話, 其對(duì)波峰/波谷在時(shí)域上的作用可以很容易地被了解, 適當(dāng)值也可借由掃描而后做內(nèi)/外插: 但本文所談的CTLE則是代表廣義的均衡器,所以我們常用其頻域上的響應(yīng)來代表其行為作用;也就是說, 為了如之前所提地對(duì)不同耗損的通道做信號(hào)的補(bǔ)償,吾人就要有許多不同、相對(duì)應(yīng)的CTLE特性曲線如下所示: 那我們要如何才能得到代表這些行為的資料以便建模呢: 建CTLE IBIS-AMI模型的不同資料形態(tài):雖然到此為止我們只說到頻域的部份,但拿到以AMI為主的鏈路分析上還是要回到時(shí)域來和輸入信號(hào)做卷積, 這是因?yàn)榫蚐PEC規(guī)格上的定義來說, 一個(gè)AMI模型所會(huì)接收到的輸入不是時(shí)域的突波(impulse response)就是時(shí)域上的位元波; 前者系用于statistical 模式而后者主要用于bit-by-bit模式,這么一來,我們就有兩種為模型提供資料的可能: 分別是提供頻域或時(shí)域上的資料; 前者(頻域)的好處是其可針對(duì)要做鏈路分析的脈波速率及取樣頻率當(dāng)場(chǎng)在模型里來做傅利葉反轉(zhuǎn)(iFFT), 后者(時(shí)域)的好處則是所提供的資料已事先檢查過而可確認(rèn)具有適當(dāng)?shù)钠焚|(zhì);雖然實(shí)務(wù)上這兩者擇一而用即可,但最具延展性、擴(kuò)充性的實(shí)做方式(也就是本司的實(shí)作方式:-) )則是對(duì)兩者均支援而能減少對(duì)AMI模型的改寫、編譯次數(shù)。
建CTLE IBIS-AMI模型時(shí)的種種考量:好不容易終于有可建模的資料了, 下一步是如何把這些資料以C/C++的形態(tài)呈現(xiàn)以符會(huì)AMI的API 所需, 比如說下面幾點(diǎn)都要想到:
常見的方式是在模型使用手冊(cè)里明載而讓用戶依據(jù)其自己現(xiàn)有通道的耗損來自行決定, 這就沒什么學(xué)問了; 更進(jìn)一步的可能是在CTLE的模型里設(shè)有自動(dòng)調(diào)適化的機(jī)制(adaptive), 則這就又是另一課題… 簡(jiǎn)單來說, 要做可自動(dòng)調(diào)適的CTLE首先必需把能使用的曲線/頻響做一EQ程度的排序, 而后要對(duì)模型針對(duì)某一輸入信號(hào)所均衡出的結(jié)果做一效能的定義(figure of merit, or FOM), 則當(dāng)模型得到一輸入信號(hào)時(shí), 先就現(xiàn)有的CTLE設(shè)定做信號(hào)均衡、而后計(jì)算出FOM值, 接著繼續(xù)以相鄰的CTLE設(shè)定去做同樣的步驟,以結(jié)果FOM的正負(fù)變化來決定繼續(xù)往上或往下”走”, 如此重復(fù)直到FOM已穩(wěn)定 (locked)于某一設(shè)定或達(dá)到所有的CTLE的極值(第一條或最后一條頻響)為止, 因?yàn)槿绱瞬襟E的結(jié)果應(yīng)對(duì)某個(gè)通道的不同信號(hào)都適用, 所以在鏈路仿真之初會(huì)要有一段時(shí)間的training period以便能鎖定到要用的CTLE值之后才不再改變等等。
這里開始可能更多的是computer science上的考量而和原始CTLE設(shè)計(jì)無關(guān)了, 總的來說是方便及速度的間的考量: 比如說我們可能想把所有資料的全部頻域/時(shí)域資料都以極細(xì)頻率/時(shí)步的方式提供,但發(fā)現(xiàn)這樣一來模型太大且仍不可避免要做內(nèi)插, 或是如果所給的資料非等步且非2^N(常為FFT/iFFT所需), 又要如何有效的重新取樣? 最后, 這些資料如果直接一同編進(jìn)DLL/SO二進(jìn)制檔里則每次設(shè)計(jì)更改(design revision)都要重新編譯, 放在外面呢又要如何的加密以確保原始資料的IP等等,這些都是在開始寫CODE編程之前都要先做好的規(guī)劃及考量。
現(xiàn)實(shí)里要能一次達(dá)標(biāo)或一試中的機(jī)率大概和買樂透中獎(jiǎng)的機(jī)率差不多, 所以多半的情況模型做出來后接下來的是折磨人的除錯(cuò)階段; 在AMI模型之外, 要能得到上述結(jié)果也不可不考慮到的還包括了IBIS模型的部份(類比前端), 因?yàn)檫@些IBIS里的parasitic, loading 乃至于 rising/falling waveform 再再都會(huì)影響結(jié)果, 關(guān)于此點(diǎn)我們之前的貼文也有詳述, 其次,仍是點(diǎn)到為止的是IBIS-AMI是有高阻抗假設(shè)的, 所以要直接取代(drop-in replacement)手上現(xiàn)有的其它原始模組還要考慮到的是匹配的問題; 最后, 一個(gè)設(shè)計(jì)完善的CTLE AMI模型(或AMI模型)都要有很完善的除錯(cuò)設(shè)計(jì), 如此可指引出所給資料是否在重新取樣后質(zhì)變、轉(zhuǎn)成時(shí)域后有問題、或是按時(shí)步縮放結(jié)果恰當(dāng)與否等等而毋需反復(fù)重新編譯模型搞得不知手上的波形是那一版本的AMI跑出來的結(jié)果。 結(jié)語:凡此種種,應(yīng)可讓有興趣的讀者看出一CTLE雖然理論上不難了解,但一旦要落實(shí)到低階的、以C/C++編寫的AMI模型時(shí)則又是另一番境地;本司就看過堂堂EDA大廠做出的CTLE模型是如何的便宜行事, 以至于后來原建案的硅智財(cái)廠商僅僅為了一些design revision(也僅是要容納更多的頻響選擇)就必需砍掉全部重練的案例, 這當(dāng)然也是因?yàn)槠浒阉械脑O(shè)定都編進(jìn)模型了又漫天喊價(jià)以至于硅智財(cái)廠不甘從此被綁架而找上經(jīng)濟(jì)實(shí)惠的本司之故 。希望本文所提的幾點(diǎn), 能做為有心直接下海實(shí)做AMI模型的諸君一些實(shí)務(wù)上的考量, 或是能了解其中”眉角”之一二之后決定由經(jīng)驗(yàn)如我司者來為您服務(wù)更為方便有效率:-) |
|