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