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