復雜模塊接口的獨立設計經(jīng)驗分享
一、引言
在越來越發(fā)達的通訊世界里,新產(chǎn)品、新設備層出不窮,隨之而來的問題是各產(chǎn)品與設備之間的接口也越來越多樣化,雖然標準化組織定義了許多接口標準,比較著名的接口協(xié)議如USB,PCI等,但是由于各種接口的性能、價格、應用范圍等因素的不同,新的接口協(xié)議仍舊層出不窮,如何設計接口一直是困擾著電子工程師,尤其是對復雜的接口協(xié)議,問題尤為突出。在國外,已經(jīng)推出用于接口設計的專用軟件。
在過去的一年多時間里,我們對高性能串行總線IEEE-1394(2000A)做了研究,并設計了基于IEEE-1394(2000A)的物理層和鏈路層芯片。在芯片設計的過程中,我們對IEEE-1394(2000A)芯片中的PHY/link接口進行了研究和設計,并探尋到了一些接口設計的經(jīng)驗?,F(xiàn)在我們以IEEE-1394接口為例,把心得拿出來與大家分享,希望能夠起到拋磚引玉的結(jié)果。
二、接口功能結(jié)構(gòu)分析
接口的主要功能就是使數(shù)據(jù)通過接口使之能夠在不同模塊或系統(tǒng)間自由流動,達到數(shù)據(jù)共享的目的。應用接口的原因多種多樣的。通常的情況是由于模塊之間協(xié)議不匹配使得我們采用接口。另外還有各式各樣的原因使得我們不得不采用接口技術(shù),如傳輸環(huán)境惡劣,需要接口把數(shù)據(jù)按照一定的協(xié)議使之能夠安全地傳輸。這方面的一個典型的例子是GSM系統(tǒng)和CDMA的空中接口協(xié)議。而在IEEE-1394協(xié)議中,定義接口主要用于連接相同廠商或不同廠商的1394串行總線接口的物理層和鏈路層專用集成電路(ASIC),并為1394系統(tǒng)未來的升級提供支持。國內(nèi)電子工程師應當在系統(tǒng)設計過程中借鑒這方面的經(jīng)驗。
總而言之,隨著各種新設備,新產(chǎn)品的產(chǎn)生,接口的廣泛應用是不言而喻的,它需要我們針對不同的情況,高效快捷地解決數(shù)據(jù)互連的問題。
在應用接口的環(huán)境中,情況總是這樣:模塊A的數(shù)據(jù)輸入和輸出采用一種接口協(xié)議M,而模塊B的數(shù)據(jù)輸入和輸出采用另外一種接口協(xié)議N,因此數(shù)據(jù)無法在模塊A和模塊B之間直接傳遞,模塊A和模塊B也不能直接互連。
通常的解決方法是這樣的:在模塊A和模塊B之間進行加上一個接口。這樣,接口把模塊A發(fā)來的數(shù)據(jù)用協(xié)議M接收下來,再在接口中把數(shù)據(jù)分解出來,按照協(xié)議N組成數(shù)據(jù)包,把數(shù)據(jù)包發(fā)送到模塊B,這樣模塊B就能夠接收下到所有模塊A發(fā)來的數(shù)據(jù)包。
三、復雜模塊接口的獨立設計
通常我們說某個接口復雜主要指的是接口連接協(xié)議很復雜,通常它必須高速處理很多寄存器和多種封裝形式復雜數(shù)據(jù)的存取。對接口設計者來說,必須與接口連接模塊的設計者充分地溝通,以得到足夠的信息,才能設計出有效的接口連接模塊A和模塊B。這勢必需要接口設計者和模塊A、B的設計者多次溝通,以共同制定接口的設計方案。這樣的溝通需要很多時間,并可能引起設計交接時的扯皮,所以必須制定設計小組之間的接口文檔。這樣復雜的工作流程很難保證設計的高效和高正確率。
在設計實現(xiàn)中,我們更改了通常的接口設計結(jié)構(gòu),在這種結(jié)構(gòu)的支持下,我們能夠很快捷地設計出我們需要的接口,在進行很少的幾次討論之后,各模塊的設計者都明白如何進行模塊間的連接,使得我們在較短時間內(nèi)設計出這個復雜接口。
我們可以看到與一般意義的接口功能結(jié)構(gòu)圖的區(qū)別在于在接口與模塊之間增加了一個發(fā)送接收緩沖區(qū),用以存儲接口在連接傳輸數(shù)據(jù)時需要模塊提供的數(shù)據(jù),包括相應寄存器的值和需要傳送的數(shù)據(jù)包。
在接口設計時只要和PHY模塊設計者商定好,把需要的信息放在那個寄存器地址下,合作制定好寄存器和發(fā)送接收數(shù)據(jù)包列表就可以了。甚至可以由設計者直接向接口雙方模塊提供一個寄存器和發(fā)送接收數(shù)據(jù)包清單就可以。這樣接口設計者可以有更大的發(fā)揮空間,由此使得接口設計者能夠細致分析接口需求,設計出性能更好的接口。
下面,我們以IEEE-1394總線物理層和鏈路層芯片間的PHY/link接口為例來討論一下接口的獨立設計。
四、高性能串行總線IEEE-1394簡介
IEEE-1394A 它不僅僅是一項只能在某些領(lǐng)域使用的新技術(shù),它有著廣泛的市場空間,甚至有可能成為未來的總線標準。盡管IEEE-1394A目前還沒有被PC廠商廣泛采用,但是它在數(shù)字圖像領(lǐng)域內(nèi)的重要作用已經(jīng)為世人所關(guān)注。作為一種數(shù)據(jù)傳輸?shù)拈_放式技術(shù)標準,IEEE-1394A被應用在許多領(lǐng)域。目前,IEEE-1394技術(shù)使用最廣的還是數(shù)字圖像領(lǐng)域,支持的產(chǎn)品包括數(shù)字相機或攝像機等。然而IEEE-1394的潛在市場遠非這些,無論在計算機硬盤還是在網(wǎng)絡互連等方面,該協(xié)議都有其廣闊的用武之地??傮w上,IEEE-1394A具有廉價,占用空間小,速度快,支持熱插拔,支持同步和異步傳輸?shù)忍攸c。
從系統(tǒng)結(jié)構(gòu)而言,IEEE-1394系統(tǒng)分為應用層、管理層,事務層、鏈路層(link)和物理層(PHY)幾個部分。物理層和鏈路層由于相對穩(wěn)定,性能要求較高,往往做成ASIC,其余部分通常由相關(guān)軟件來完成。
這里定義的接口用于連接相同廠商或不同廠商的1394串行總線接口的物理層和鏈路層專用集成電路(ASIC),并為1394系統(tǒng)未來的升級提供了支持。在IEEE-1394A中,PHY/link層接口單列成一章,足見其重要性。本文在IEEE-1394A的基礎上,提出了這種接口的解決方案,性能經(jīng)過驗證達到了該協(xié)議中所要求的指標。
五、復雜數(shù)字邏輯EDA簡介
EDA(Electronic Design Automation),是在計算機平臺上,利用軟件開發(fā)工具進行數(shù)字,模擬,數(shù)?;旌想娮与娐吩O計的方法,是電子設計領(lǐng)域中最具活力和最有發(fā)展前途的一項技術(shù)。其中數(shù)字邏輯設計已經(jīng)比較成熟。與傳統(tǒng)的設計方法相比,EDA工具縮短了設計周期,降低了開發(fā)成本,提高了設計的可靠性。
IEEE-1394A的PHY/link接口的復雜邏輯設計,采用了先進的EDA技術(shù),進行 Top-Down的設計。邏輯設計的結(jié)果通過FPGA/CPLD驗證后,進一步制成ASIC。復雜邏輯的開發(fā)需要兩部分工具:1)邏輯仿真和綜合工具; 2)FPGA/CPLD布局布線工具;
FPGA/CPLD都是可編程邏輯器件,生產(chǎn)廠家較多,型號各異。其中比較典型的就是Xilinx公司的FPGA(現(xiàn)場可編程門陣列)器件系列和Altera公司的CPLD(復雜可編程邏輯器件)器件系列。采用 FPGA/CPLD芯片進行系統(tǒng)開發(fā),具有以下幾個優(yōu)點:
可實現(xiàn)強大功能。隨著VLSI工藝的不斷提高,其單片邏輯門數(shù)已達到百萬門級,內(nèi)嵌多種特殊模塊,所能實現(xiàn)的功能也越來越強,同時也可以實現(xiàn)系統(tǒng)集成。
研發(fā)投入低。FPGA/CPLD芯片在出廠之前都做過可靠的測試,設計人員只需通過相關(guān)的軟硬件環(huán)境來完成芯片的功能設計,所以節(jié)省了許多潛在的花費。
開發(fā)周期短,采用EDA設計方法,設計人員不需要具備專門的IC深層次知識,在較短的時間內(nèi)就可完成電路的邏輯設計和芯片的制作,快速將產(chǎn)品推向市場。
可在線編程。基于SRAM/FLASH的FPGA/CPLD,用戶可以反復地編程、擦除、使調(diào)試/升級都十分方便,亦可用同一芯片實現(xiàn)不同的功能。
FPGA/CPLD開發(fā)工具包括軟件和編程器,開發(fā)軟件一般有芯片生產(chǎn)廠家提供,也有一些優(yōu)秀的第三方軟件可以選用。EDA開發(fā)軟件包括輸入工具、編譯器仿真工具、綜合工具、及布局布線、版圖設計等工具。Verilog 高級硬件描述語言的使用,使邏輯設計輸入更為簡化,更為準確。
在設計測試中使用的EDA工具有:硬件描述語言Verilog,仿真工具ModelSim,綜合工具Synplify,布局布線工具Maxplus等。設計測試采用ALTERA公司的ACEX1K系列低價位的CPLD芯片,它具有3萬基本邏輯單元多,位內(nèi)嵌存儲單元,基本可以滿足一般的邏輯設計要求。
六、接口結(jié)構(gòu)功能簡介
接口分別屬于IEEE-1394節(jié)點系統(tǒng)的物理層和鏈路層模塊,是物理層和鏈路層的子模塊,負責物理層和鏈路層的控制信號、數(shù)據(jù)包和狀態(tài)報告的傳輸。物理層和鏈路層之間主要依靠Ctrl[1:0]、Dn[n:0]、LReq、LPS、LinkOn和SClk 六組信號線來進行傳輸控制信號和其間的多種數(shù)據(jù)包。
鏈路層取得接口控制權(quán)時,可能需要傳輸?shù)陌ǎ鹤x數(shù)據(jù)請求包(RdReg)、寫數(shù)據(jù)請求包(WrReg)、立即仲裁請求數(shù)據(jù)包(ImmReq)、公平仲裁請求數(shù)據(jù)包(FairReq)、優(yōu)先仲裁請求數(shù)據(jù)包(PriReq),和等時仲裁請求數(shù)據(jù)包(IsoReq)。
物理層取得接口控制權(quán)時,除了可能傳輸總線上傳來的所有的數(shù)據(jù)包,還可能傳輸狀態(tài)信息包和讀請求響應包。
在1394總線系統(tǒng)中,物理層/鏈路層主要實現(xiàn)物理層和鏈路層模塊之間的定時服務,數(shù)據(jù)請求,數(shù)據(jù)服務,仲裁請求和仲裁服務。
Ctrl[1:0]是該接口的控制信號。相同的信號隨接口控制權(quán)所屬模塊不同而不同。Dn[n:0]是接口的數(shù)據(jù)線,用來傳輸接口的數(shù)據(jù)包,也是該接口獨具特色的一點。它支持S100,S200和S400和更高的速度,數(shù)據(jù)總線的帶寬與總線速度相適應:在以100Mbps傳輸時,接口只用D[0:1]來傳輸數(shù)據(jù),傳輸速度每增加100Mbps,傳輸數(shù)據(jù)時接口將多用兩根數(shù)據(jù)線。由于項目要求系統(tǒng)傳輸最高速度為400Mbps,所以接口中共有八根數(shù)據(jù)線。這樣,如果加快傳輸速度,只是物理層芯片模擬部分提高處理頻率,在整個芯片數(shù)字部分,數(shù)據(jù)時鐘頻率保持不變,與串行總線速度相獨立,使得未來的系統(tǒng)升級成為可能。LReq信號線來傳輸請求信號,包括讀寫寄存器請求和仲裁請求等,根據(jù)請求,物理層響應傳輸操作。
LPS是用于指示鏈路層電源和功能是否正常。
另外,協(xié)議中還規(guī)定了該接口配有Direct數(shù)字微分編碼器(digital differentiators)選通端,用以增加對物理層和鏈路層芯片之間隔離的支持。根據(jù)接口模塊獨立設計的思想,該接口實現(xiàn)過程中,主要技術(shù)難點主要有以下幾點:
接口與上下層模塊之間的握手協(xié)議需要仔細的設計。由于該接口傳輸?shù)臄?shù)據(jù)包大小不一,使接口同上下層模塊內(nèi)部的連接變得復雜,這部分協(xié)議沒有提及,必須自己小心地設計該協(xié)議,目標是使上下層模塊同接口的連接簡明扼要,并且高效,盡可能地減少接口到相應模塊的傳輸延遲,這樣物理層和鏈路層的握手等動作所消耗的時間也將相應減少,得到更高的數(shù)據(jù)吞吐量。
接口傳輸多種格式和功能的數(shù)據(jù)包,傳送不同的數(shù)據(jù)包時,物理/鏈路層接口的動作和響應都不同。如果處理不當,會極大地增加了接口實現(xiàn)時的復雜度和規(guī)模。
規(guī)范定義的Ctrl和Dn定時匹配成為很主要的矛盾。接口依靠Ctrl[1:0]來傳輸和識別控制信號,以產(chǎn)生相應動作。在物理層把接口控制權(quán)交接給鏈路層時,協(xié)議中要求不超過兩個周期。但在系統(tǒng)中,各層發(fā)送和識別控制信號需要一定的時間,接口必須盡可能少地減少這個時間,使響應模塊識別控制信號。
以下將針對以上幾個難點簡述我們在項目中的實現(xiàn)方法。
接口和物理/鏈路模塊的握手協(xié)議
七、接口和物理/鏈路模塊的握手協(xié)議
物理層/鏈路層模塊和接口的握手協(xié)議在IEEE-1394A中沒有定義,給設計者留下了思考的空間。1394總線系統(tǒng)本身旨在提供一種高速的數(shù)據(jù)傳輸方式, 而物理/鏈路接口處于所有數(shù)據(jù)流必經(jīng)的通路,所以在設計協(xié)議時,我們的目標是盡可能地減小數(shù)據(jù)流通過接口的延遲,以避免接口的“瓶頸”效應。
基于以上的考慮,我們考慮了這種方案:
(注:由于物理層和鏈路層模塊處于對等的地位,限于篇幅,我只描述物理層模塊的情形,鏈路層模塊以此類推。)
在上述方案中,各引腳功能定義如下:
Preq_En[1:0]是物理層數(shù)據(jù)包傳輸使能位,而且代表請求的優(yōu)先級。2 'b00代表無請求,2 'b01代表該請求具有最高的優(yōu)先級,可以終止現(xiàn)在的正在操作的請求,2 'b10代表請求優(yōu)先級較低,它將等待接口正在處理的請求完成后再執(zhí)行。
Preq_Data[31:0]是物理層請求數(shù)據(jù),包含請求類型,包長度,速度及相關(guān)參數(shù)。0~15位請求相關(guān)數(shù)據(jù),16~31位數(shù)據(jù)包長度及格式信息,最大情況支持65536個32位字節(jié)組成的數(shù)據(jù)包(可以容納協(xié)議中最大的數(shù)據(jù)包)。
Preq_Pkt[31:0]是物理層數(shù)據(jù)包輸入端口,一次能夠輸入一個32位字節(jié)。
PktUpdt_Req是數(shù)據(jù)包輸入端口數(shù)據(jù)更新請求位,物理數(shù)據(jù)包輸入端口上的字節(jié)已經(jīng)傳輸完畢,請求更新數(shù)據(jù)以便傳輸。
Link_Pkt[31:0]是鏈路層數(shù)據(jù)包輸出端口。
Link_Pkt_On是鏈路層數(shù)據(jù)包到達指示。用以判斷鏈路層的新數(shù)據(jù)是否被傳輸完畢。
INTF_Busy是接口物理層模塊忙指示,表明此時接口忙。用以判斷總線上的數(shù)據(jù)包(物理層接收的數(shù)據(jù)包)是否可以向鏈路層傳輸。
在總線數(shù)據(jù)包即將向鏈路層傳輸時,接口先置位INTF_Busy,阻止在此操作的同時,阻止其他的總線數(shù)據(jù)包向上傳輸。與此同時,置位Preq_En,設置請求使能和優(yōu)先級。接著當接口物理層模塊做好準備后,置位PktUp-dt_Req,物理層模塊檢測到該信號置位后,立即把數(shù)據(jù)放在Preq_Data上。接口物理層層模塊傳輸完后,再次置位PktUpdt_Req以得到數(shù)據(jù)包的下一個字節(jié),同時接口內(nèi)部計數(shù)器加一,在重復該過程,直至該數(shù)據(jù)包被傳輸完畢。當鏈路層有數(shù)據(jù)包要求傳至總線上時,接口物理層模塊轉(zhuǎn)交總線控制權(quán),同時置位INTF_Busy,阻止總線上的數(shù)據(jù)包上傳。當接口物理層模塊接收到數(shù)據(jù)包的第一個32位字節(jié)后,置位Li-nk_Pkt_On,同時置位Link_Pkt。物理層模塊檢測到Link_Pkt_On后讀取Link_Pkt上得到第一個32位數(shù)據(jù)包,計數(shù)器加一,重復此過程,直至該數(shù)據(jù)包接收完畢。
在實際的應用過程中,我們采取了提前準備數(shù)據(jù)的方法,在每個32位字節(jié)最后一位開始傳輸?shù)耐瑫r,發(fā)出更新數(shù)據(jù)的請求,使數(shù)據(jù)包從物理層模塊傳輸?shù)芥溌穼幽K的過程中,基本上沒有握手協(xié)議上的延遲。
設計之初,我們曾經(jīng)考慮過把請求數(shù)據(jù)位用一個控制數(shù)據(jù)包代替,并把所有數(shù)據(jù)一次性地讀到一個ram中去,并用ram的讀寫協(xié)議進行操作。
容易看出,改進后的協(xié)議在處理大的數(shù)據(jù)包時顯現(xiàn)出了無法比擬的優(yōu)勢,付出的代價是增加了握手信號的數(shù)量,由于這些信號線處于模塊內(nèi),相對增加的成本微乎其微。
八、多個數(shù)據(jù)包處理狀態(tài)機化簡合并
在協(xié)議中規(guī)定接口必須完成傳輸多種格式和功能的數(shù)據(jù)包。對各種數(shù)據(jù)包,其傳輸方式也各不一樣。類似地,對接口物理層模塊的每種請求相應的操作也都不一樣。我們考察各種請求操作流程后,我們對這些流程進行的多次化簡歸納,最后采用了如下這種狀態(tài)機。
在接口物理層模塊和鏈路層模塊實現(xiàn)時,我們采用了一個主狀態(tài)機和一個從狀態(tài)機的結(jié)構(gòu)。
采用了主狀態(tài)機和從狀態(tài)機的結(jié)構(gòu),不僅很大程度上簡化了狀態(tài)機,而且是結(jié)構(gòu)清晰,其次操作相近的仲裁請求包被合為一類,并依據(jù)請求類型來編寫從控制狀態(tài)機。在實現(xiàn)過程中,在主從狀態(tài)機的前提下我們開始使用另外一種依據(jù)Ctrl控制線的狀態(tài)編寫從控制狀態(tài)機。從綜合后的結(jié)果來比較,現(xiàn)在的這個改進狀態(tài)機節(jié)省了50%以上的資源。從這點看,可見同樣的功能,不同的設計會產(chǎn)生截然不同的效果。
九、Ctrl和Dn定時匹配
在IEEE-1394A協(xié)議中要求支持數(shù)字微分編碼器(digital differe-ntiators),所以接口引入了微分編碼延遲。此時,從數(shù)字信號產(chǎn)生到接口相應信號線上的延遲如果超過半個SClk時鐘周期,可以依據(jù)IEEE1394-2000A協(xié)議推斷出:對應的接收模塊不能準確地接收到有效信號。所以數(shù)字微分編碼器的設計成為了整個設計的“瓶頸”之一。
十、結(jié)束語
把復雜協(xié)議內(nèi)部模塊間的接口獨立出來進行設計,是一種加快和簡化設計過程、提高設計可重用性和可維護性的好方法,值得重視和推廣。目前國外產(chǎn)品一般采用鎖相環(huán)(PLL)技術(shù),把外部時鐘倍頻至SClk的八倍頻以作為系統(tǒng)的工作頻率,而本接口設計只有部分電路用了SClk的兩倍頻,在很大程度上降低了對元器件的要求和系統(tǒng)的功耗。
PHY/link接口在IEEE-1394協(xié)議中具有非常重要的作用,對芯片處理速度的提高有較大的影響。本文通過對該接口的分析,提出了解決該接口設計難點的方案。以上方案經(jīng)過FPGA布線后仿真測試,證明是切實可行的。
評論