新聞中心

EEPW首頁 > 模擬技術 > 設計應用 > 復雜模塊接口的獨立設計

復雜模塊接口的獨立設計

作者: 時間:2012-09-19 來源:網絡 收藏

一、引言

本文引用地址:http://2s4d.com/article/185752.htm

  在越來越發(fā)達的通訊世界里,新產品、新設備層出不窮,隨之而來的問題是各產品與設備之間的接口也越來越多樣化,雖然標準化組織定義了許多接口標準,比較著名的接口協議如USB,PCI等,但是由于各種接口的性能、價格、應用范圍等因素的不同,新的接口協議仍舊層出不窮,如何設計接口一直是困擾著電子工程師,尤其是對復雜的接口協議,問題尤為突出。在國外,已經推出用于接口設計的專用軟件。

  在過去的一年多時間里,我們對高性能串行總線IEEE-1394(2000A)做了研究,并設計了基于IEEE-1394(2000A)的物理層和鏈路層芯片。在芯片設計的過程中,我們對IEEE-1394(2000A)芯片中的PHY/link接口進行了研究和設計,并探尋到了一些接口設計的經驗。現在我們以IEEE-1394接口為例,把心得拿出來與大家分享,希望能夠起到拋磚引玉的結果。

  二、接口功能結構分析

  接口的主要功能就是使數據通過接口使之能夠在不同模塊或系統(tǒng)間自由流動,達到數據共享的目的。應用接口的原因多種多樣的。通常的情況是由于模塊之間協議不匹配使得我們采用接口。另外還有各式各樣的原因使得我們不得不采用接口技術,如傳輸環(huán)境惡劣,需要接口把數據按照一定的協議使之能夠安全地傳輸。這方面的一個典型的例子是GSM系統(tǒng)和CDMA的空中接口協議。而在IEEE-1394協議中,定義接口主要用于連接相同廠商或不同廠商的1394串行總線接口的物理層和鏈路層專用集成電路(ASIC),并為1394系統(tǒng)未來的升級提供支持。國內電子工程師應當在系統(tǒng)設計過程中借鑒這方面的經驗。

  總而言之,隨著各種新設備,新產品的產生,接口的廣泛應用是不言而喻的,它需要我們針對不同的情況,高效快捷地解決數據互連的問題。

  在應用接口的環(huán)境中,情況總是這樣:模塊A的數據輸入和輸出采用一種接口協議M,而模塊B的數據輸入和輸出采用另外一種接口協議N,因此數據無法在模塊A和模塊B之間直接傳遞,模塊A和模塊B也不能直接互連。

  通常的解決方法是這樣的:在模塊A和模塊B之間進行加上一個接口。這樣,接口把模塊A發(fā)來的數據用協議M接收下來,再在接口中把數據分解出來,按照協議N組成數據包,把數據包發(fā)送到模塊B,這樣模塊B就能夠接收下到所有模塊A發(fā)來的數據包。

  三、復雜設計

  通常我們說某個接口復雜主要指的是接口連接協議很復雜,通常它必須高速處理很多寄存器和多種封裝形式復雜數據的存取。對接口設計者來說,必須與接口連接模塊的設計者充分地溝通,以得到足夠的信息,才能設計出有效的接口連接模塊A和模塊B。這勢必需要接口設計者和模塊A、B的設計者多次溝通,以共同制定接口的設計方案。這樣的溝通需要很多時間,并可能引起設計交接時的扯皮,所以必須制定設計小組之間的接口文檔。這樣復雜的工作流程很難保證設計的高效和高正確率。

  在設計實現中,我們更改了通常的接口設計結構,在這種結構的支持下,我們能夠很快捷地設計出我們需要的接口,在進行很少的幾次討論之后,各模塊的設計者都明白如何進行模塊間的連接,使得我們在較短時間內設計出這個復雜接口。

  我們可以看到與一般意義的接口功能結構圖的區(qū)別在于在接口與模塊之間增加了一個發(fā)送接收緩沖區(qū),用以存儲接口在連接傳輸數據時需要模塊提供的數據,包括相應寄存器的值和需要傳送的數據包。

  在接口設計時只要和PHY模塊設計者商定好,把需要的信息放在那個寄存器地址下,合作制定好寄存器和發(fā)送接收數據包列表就可以了。甚至可以由設計者直接向接口雙方模塊提供一個寄存器和發(fā)送接收數據包清單就可以。這樣接口設計者可以有更大的發(fā)揮空間,由此使得接口設計者能夠細致分析接口需求,設計出性能更好的接口。

  下面,我們以IEEE-1394總線物理層和鏈路層芯片間的PHY/link接口為例來討論一下接口的設計。

  四、高性能串行總線IEEE-1394簡介

  IEEE-1394A 它不僅僅是一項只能在某些領域使用的新技術,它有著廣泛的市場空間,甚至有可能成為未來的總線標準。盡管IEEE-1394A目前還沒有被PC廠商廣泛采用,但是它在數字圖像領域內的重要作用已經為世人所關注。作為一種數據傳輸的開放式技術標準,IEEE-1394A被應用在許多領域。目前,IEEE-1394技術使用最廣的還是數字圖像領域,支持的產品包括數字相機或攝像機等。然而IEEE-1394的潛在市場遠非這些,無論在計算機硬盤還是在網絡互連等方面,該協議都有其廣闊的用武之地。總體上,IEEE-1394A具有廉價,占用空間小,速度快,支持熱插拔,支持同步和異步傳輸等特點。

  從系統(tǒng)結構而言,IEEE-1394系統(tǒng)分為應用層、管理層,事務層、鏈路層(link)和物理層(PHY)幾個部分。物理層和鏈路層由于相對穩(wěn)定,性能要求較高,往往做成ASIC,其余部分通常由相關軟件來完成。

  這里定義的接口用于連接相同廠商或不同廠商的1394串行總線接口的物理層和鏈路層專用集成電路(ASIC),并為1394系統(tǒng)未來的升級提供了支持。在IEEE-1394A中,PHY/link層接口單列成一章,足見其重要性。本文在IEEE-1394A的基礎上,提出了這種接口的解決方案,性能經過驗證達到了該協議中所要求的指標。

  五、復雜數字邏輯EDA簡介

  EDA(Electronic Design Automation),是在計算機平臺上,利用軟件開發(fā)工具進行數字,模擬,數?;旌想娮与娐吩O計的方法,是電子設計領域中最具活力和最有發(fā)展前途的一項技術。其中數字邏輯設計已經比較成熟。與傳統(tǒng)的設計方法相比,EDA工具縮短了設計周期,降低了開發(fā)成本,提高了設計的可靠性。

  IEEE-1394A的PHY/link接口的復雜邏輯設計,采用了先進的EDA技術,進行 Top-Down的設計。邏輯設計的結果通過FPGA/CPLD驗證后,進一步制成ASIC。復雜邏輯的開發(fā)需要兩部分工具:1)邏輯仿真和綜合工具; 2)FPGA/CPLD布局布線工具;

  FPGA/CPLD都是可編程邏輯器件,生產廠家較多,型號各異。其中比較典型的就是Xilinx公司的FPGA(現場可編程門陣列)器件系列和Altera公司的CPLD(復雜可編程邏輯器件)器件系列。采用 FPGA/CPLD芯片進行系統(tǒng)開發(fā),具有以下幾個優(yōu)點:

  可實現強大功能。隨著VLSI工藝的不斷提高,其單片邏輯門數已達到百萬門級,內嵌多種特殊模塊,所能實現的功能也越來越強,同時也可以實現系統(tǒng)集成。

  研發(fā)投入低。FPGA/CPLD芯片在出廠之前都做過可靠的測試,設計人員只需通過相關的軟硬件環(huán)境來完成芯片的功能設計,所以節(jié)省了許多潛在的花費。

  開發(fā)周期短,采用EDA設計方法,設計人員不需要具備專門的IC深層次知識,在較短的時間內就可完成電路的邏輯設計和芯片的制作,快速將產品推向市場。

  可在線編程。基于SRAM/FLASH的FPGA/CPLD,用戶可以反復地編程、擦除、使調試/升級都十分方便,亦可用同一芯片實現不同的功能。

  FPGA/CPLD開發(fā)工具包括軟件和編程器,開發(fā)軟件一般有芯片生產廠家提供,也有一些優(yōu)秀的第三方軟件可以選用。EDA開發(fā)軟件包括輸入工具、編譯器仿真工具、綜合工具、及布局布線、版圖設計等工具。Verilog 高級硬件描述語言的使用,使邏輯設計輸入更為簡化,更為準確。

  在設計測試中使用的EDA工具有:硬件描述語言Verilog,仿真工具ModelSim,綜合工具Synplify,布局布線工具Maxplus等。設計測試采用ALTERA公司的ACEX1K系列低價位的CPLD芯片,它具有3萬基本邏輯單元多,位內嵌存儲單元,基本可以滿足一般的邏輯設計要求。

六、接口結構功能簡介

  接口分別屬于IEEE-1394節(jié)點系統(tǒng)的物理層和鏈路層模塊,是物理層和鏈路層的子模塊,負責物理層和鏈路層的控制信號、數據包和狀態(tài)報告的傳輸。物理層和鏈路層之間主要依靠Ctrl[1:0]、Dn[n:0]、LReq、LPS、LinkOn和SClk 六組信號線來進行傳輸控制信號和其間的多種數據包。

  鏈路層取得接口控制權時,可能需要傳輸的包括:讀數據請求包(RdReg)、寫數據請求包(WrReg)、立即仲裁請求數據包(ImmReq)、公平仲裁請求數據包(FairReq)、優(yōu)先仲裁請求數據包(PriReq),和等時仲裁請求數據包(IsoReq)。

  物理層取得接口控制權時,除了可能傳輸總線上傳來的所有的數據包,還可能傳輸狀態(tài)信息包和讀請求響應包。

  在1394總線系統(tǒng)中,物理層/鏈路層主要實現物理層和鏈路層模塊之間的定時服務,數據請求,數據服務,仲裁請求和仲裁服務。

  Ctrl[1:0]是該接口的控制信號。相同的信號隨接口控制權所屬模塊不同而不同。Dn[n:0]是接口的數據線,用來傳輸接口的數據包,也是該接口獨具特色的一點。它支持S100,S200和S400和更高的速度,數據總線的帶寬與總線速度相適應:在以100Mbps傳輸時,接口只用D[0:1]來傳輸數據,傳輸速度每增加100Mbps,傳輸數據時接口將多用兩根數據線。由于項目要求系統(tǒng)傳輸最高速度為400Mbps,所以接口中共有八根數據線。這樣,如果加快傳輸速度,只是物理層芯片模擬部分提高處理頻率,在整個芯片數字部分,數據時鐘頻率保持不變,與串行總線速度相,使得未來的系統(tǒng)升級成為可能。LReq信號線來傳輸請求信號,包括讀寫寄存器請求和仲裁請求等,根據請求,物理層響應傳輸操作。

  LPS是用于指示鏈路層電源和功能是否正常。

  另外,協議中還規(guī)定了該接口配有Direct數字微分編碼器(digital differentiators)選通端,用以增加對物理層和鏈路層芯片之間隔離的支持。根據接口模塊獨立設計的思想,該接口實現過程中,主要技術難點主要有以下幾點:

  接口與上下層模塊之間的握手協議需要仔細的設計。由于該接口傳輸的數據包大小不一,使接口同上下層模塊內部的連接變得復雜,這部分協議沒有提及,必須自己小心地設計該協議,目標是使上下層模塊同接口的連接簡明扼要,并且高效,盡可能地減少接口到相應模塊的傳輸延遲,這樣物理層和鏈路層的握手等動作所消耗的時間也將相應減少,得到更高的數據吞吐量。

  接口傳輸多種格式和功能的數據包,傳送不同的數據包時,物理/鏈路層接口的動作和響應都不同。如果處理不當,會極大地增加了接口實現時的復雜度和規(guī)模。

  規(guī)范定義的Ctrl和Dn定時匹配成為很主要的矛盾。接口依靠Ctrl[1:0]來傳輸和識別控制信號,以產生相應動作。在物理層把接口控制權交接給鏈路層時,協議中要求不超過兩個周期。但在系統(tǒng)中,各層發(fā)送和識別控制信號需要一定的時間,接口必須盡可能少地減少這個時間,使響應模塊識別控制信號。

  以下將針對以上幾個難點簡述我們在項目中的實現方法。

  接口和物理/鏈路模塊的握手協議

七、接口和物理/鏈路模塊的握手協議

  物理層/鏈路層模塊和接口的握手協議在IEEE-1394A中沒有定義,給設計者留下了思考的空間。1394總線系統(tǒng)本身旨在提供一種高速的數據傳輸方式, 而物理/鏈路接口處于所有數據流必經的通路,所以在設計協議時,我們的目標是盡可能地減小數據流通過接口的延遲,以避免接口的“瓶頸”效應。

  基于以上的考慮,我們考慮了這種方案:

  (注:由于物理層和鏈路層模塊處于對等的地位,限于篇幅,我只描述物理層模塊的情形,鏈路層模塊以此類推。)

  在上述方案中,各引腳功能定義如下:

  Preq_En[1:0]是物理層數據包傳輸使能位,而且代表請求的優(yōu)先級。2 'b00代表無請求,2 'b01代表該請求具有最高的優(yōu)先級,可以終止現在的正在操作的請求,2 'b10代表請求優(yōu)先級較低,它將等待接口正在處理的請求完成后再執(zhí)行。

  Preq_Data[31:0]是物理層請求數據,包含請求類型,包長度,速度及相關參數。0~15位請求相關數據,16~31位數據包長度及格式信息,最大情況支持65536個32位字節(jié)組成的數據包(可以容納協議中最大的數據包)。

  Preq_Pkt[31:0]是物理層數據包輸入端口,一次能夠輸入一個32位字節(jié)。

  PktUpdt_Req是數據包輸入端口數據更新請求位,物理數據包輸入端口上的字節(jié)已經傳輸完畢,請求更新數據以便傳輸。

  Link_Pkt[31:0]是鏈路層數據包輸出端口。

  Link_Pkt_On是鏈路層數據包到達指示。用以判斷鏈路層的新數據是否被傳輸完畢。

  INTF_Busy是接口物理層模塊忙指示,表明此時接口忙。用以判斷總線上的數據包(物理層接收的數據包)是否可以向鏈路層傳輸。

  在總線數據包即將向鏈路層傳輸時,接口先置位INTF_Busy,阻止在此操作的同時,阻止其他的總線數據包向上傳輸。與此同時,置位Preq_En,設置請求使能和優(yōu)先級。接著當接口物理層模塊做好準備后,置位PktUp-dt_Req,物理層模塊檢測到該信號置位后,立即把數據放在Preq_Data上。接口物理層層模塊傳輸完后,再次置位PktUpdt_Req以得到數據包的下一個字節(jié),同時接口內部計數器加一,在重復該過程,直至該數據包被傳輸完畢。當鏈路層有數據包要求傳至總線上時,接口物理層模塊轉交總線控制權,同時置位INTF_Busy,阻止總線上的數據包上傳。當接口物理層模塊接收到數據包的第一個32位字節(jié)后,置位Li-nk_Pkt_On,同時置位Link_Pkt。物理層模塊檢測到Link_Pkt_On后讀取Link_Pkt上得到第一個32位數據包,計數器加一,重復此過程,直至該數據包接收完畢。

  在實際的應用過程中,我們采取了提前準備數據的方法,在每個32位字節(jié)最后一位開始傳輸的同時,發(fā)出更新數據的請求,使數據包從物理層模塊傳輸到鏈路層模塊的過程中,基本上沒有握手協議上的延遲。

  設計之初,我們曾經考慮過把請求數據位用一個控制數據包代替,并把所有數據一次性地讀到一個ram中去,并用ram的讀寫協議進行操作。

  容易看出,改進后的協議在處理大的數據包時顯現出了無法比擬的優(yōu)勢,付出的代價是增加了握手信號的數量,由于這些信號線處于模塊內,相對增加的成本微乎其微。

  八、多個數據包處理狀態(tài)機化簡合并

  在協議中規(guī)定接口必須完成傳輸多種格式和功能的數據包。對各種數據包,其傳輸方式也各不一樣。類似地,對接口物理層模塊的每種請求相應的操作也都不一樣。我們考察各種請求操作流程后,我們對這些流程進行的多次化簡歸納,最后采用了如下這種狀態(tài)機。

  在接口物理層模塊和鏈路層模塊實現時,我們采用了一個主狀態(tài)機和一個從狀態(tài)機的結構。

  采用了主狀態(tài)機和從狀態(tài)機的結構,不僅很大程度上簡化了狀態(tài)機,而且是結構清晰,其次操作相近的仲裁請求包被合為一類,并依據請求類型來編寫從控制狀態(tài)機。在實現過程中,在主從狀態(tài)機的前提下我們開始使用另外一種依據Ctrl控制線的狀態(tài)編寫從控制狀態(tài)機。從綜合后的結果來比較,現在的這個改進狀態(tài)機節(jié)省了50%以上的資源。從這點看,可見同樣的功能,不同的設計會產生截然不同的效果。

  九、Ctrl和Dn定時匹配

  在IEEE-1394A協議中要求支持數字微分編碼器(digital differe-ntiators),所以接口引入了微分編碼延遲。此時,從數字信號產生到接口相應信號線上的延遲如果超過半個SClk時鐘周期,可以依據IEEE1394-2000A協議推斷出:對應的接收模塊不能準確地接收到有效信號。所以數字微分編碼器的設計成為了整個設計的“瓶頸”之一。

  十、結束語

  把復雜協議內部模塊間的接口獨立出來進行設計,是一種加快和簡化設計過程、提高設計可重用性和可維護性的好方法,值得重視和推廣。目前國外產品一般采用鎖相環(huán)(PLL)技術,把外部時鐘倍頻至SClk的八倍頻以作為系統(tǒng)的工作頻率,而本接口設計只有部分電路用了SClk的兩倍頻,在很大程度上降低了對元器件的要求和系統(tǒng)的功耗。

  PHY/link接口在IEEE-1394協議中具有非常重要的作用,對芯片處理速度的提高有較大的影響。本文通過對該接口的分析,提出了解決該接口設計難點的方案。以上方案經過FPGA布線后仿真測試,證明是切實可行的。



關鍵詞: 模塊接口 獨立

評論


相關推薦

技術專區(qū)

關閉