文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2015.11.013
中文引用格式: 馮龍輝,,張興明,楊鎮(zhèn)西,,等. 基于RapidIO控制符產生單元設計與實現[J].電子技術應用,,2015,41(11):48-50.
英文引用格式: Feng Longhui,,Zhang Xingming,,Yang Zhenxi,et al. Design and realization of the control symbols module based on RapidIO specification[J].Application of Electronic Technique,,2015,,41(11):48-50.
0 引言
RapidIO是一種高性能、低引腳數,、基于包交換的互連架構,,是為滿足未來高性能嵌入式系統(tǒng)需求而設計的一種開放式互連技術標準,同時也是國際標準組織(ISO)唯一授權的嵌入式互連技術標準,。RapidIO互連接口延時小,、吞吐量高,在電子對抗,、聲納以及雷達等軍用設備中應用廣泛[1],。控制符作為協議的重要組成部分,主要用于鏈路維護,,包定界,,錯誤報告以及錯誤恢復等,,是進行正常通信必不可少的信息單元,在RapidIO端點設備和交換設備中均發(fā)揮不可替代作用,,占據重要的地位[2],。本文針對RapidIO_2.2規(guī)范,提出一種快速正確產生控制符的設計實現方法[3],。仿真結果表明,,在滿足控制條件的情況下,下一周期即可產生正確的控制符,,達到了設計的預期目的,。
1 控制符格式的介紹
控制符分為長控制符和短控制符,長短控制符的格式分別如圖1所示,,其中(a)為短控制符格式,,(b)為長控制符格式??刂品袃蓚€字段,,一個是stype0字段,一個是stype1字段,。stype0與parameter0和parameter1配合工作,,構成信息字段,表明端口傳遞各種類型控制符的狀態(tài),,其編碼如表1[2]所示,。stype1則與cmd配合工作,構成功能字段,,用于鏈路維護或者傳輸定界的請求等,,其編碼如表2[2]所示。短控制符有24位,,長控制符有48位,,長控制符與短控制符相似,其對應字段的名稱,、功能和編碼都相同,,唯一不同的是某些字段的位寬不同,這里不再贅述,。
2 控制符產生的設計
綜上可知,,控制符主要由三個部分構成,分別為stype0,、stype1和CRC,,其中CRC為鏈路檢錯機制[2],這里不予討論,,stype0和stype1分別為控制符的兩個域,。parameter0和parameter1配合stype0一起工作,,根據stype0的功能產生對應的字段,,用于指示鏈路的各種狀態(tài)信息,;cmd則配合stype1一起工作,根據stype1的功能產生對應的cmd字段,,用于鏈路各種控制功能,。基于此,,本設計將stype0和stype1兩個域拆分為stype0 function generator和stype1 function generator,,兩個域分別設計分別產生對應的控制符。對于stype0 function generator來說,,首先根據鏈路控制信號產生stype0的類型,,然后根據stype0的類型選擇并產生對應的parameter0字段和parameter1字段[4],stype1 function generator工作機制與此相同,。值得說明的是:status控制符是stype0默認的也是常用的控制符,,同時也是鏈路初始化時使用的控制符;NOP則是stype1默認的控制符[2],??刂品怯蓅type0和stype1的任意組合共同構成,例如,,當stype0要發(fā)送一個包接收控制符PA,,stype1不需要產生特定的控制符時,則產生NOP,,由PA和NOP共同構成控制符,。形成的各個控制信號在一定的控制條件下產生對應的字段,然后根據鏈路IDLE的使用情況產生長控制符或短控制符[5],,最后通過控制符選擇模塊發(fā)送出去,。本設計結構框圖如圖2所示[6],下面對框圖中每個模塊的作用進行闡述,。
(1)Initialization sequence:初始化序列模塊用于初始化序列及初始化鏈路,。當端口完成初始化以后要對鏈路進行初始化,當端口收到連續(xù)的指定數量無錯誤的狀態(tài)控制符以后,,則表明鏈路初始化已經完成,。
(2)Stype0 function generator:此模塊用于產生stype0的狀態(tài)信息并且根據狀態(tài)信息產生對應的parameter0字段和parameter1字段。若控制信號無效,,即不需要產生特定的控制符時,,status即為默認的stype0控制符。
(3)Stype1 function generator:Stype1是功能字段,,此模塊用于產生stype1功能字段并且根據功能字段產生對應的cmd字段,。若控制信號無效,,即不需要產生特定的控制符時,NOP為默認的stype1控制符,。
(4)Short control symbol creation:在IDLE1(短空閑序列)置位的情況下,,根據控制信號產生對應的短控制符。
(5)Long control symbol creation:在IDLE2(長空閑序列)置位的情況下,,根據控制信號產生對應的長控制符,。
(6)Control symbol selector:根據鏈路上IDLE1和IDLE2的使用情況,選擇合適的控制符,。長短控制符在鏈路上的使用情況是依據IDLE(空閑序列)的使用情況而定的,。當鏈路使用IDLE1時,此時傳輸控制符為短控制符,,當鏈路使用IDLE2時,,傳輸控制符為長控制符。而IDLE的使用情況主要依據鏈路速率而定,,當鏈路小于5.5 GB并且收發(fā)兩端不使用自適應均衡(Adaptive Equalization,,AE)的情況下,鏈路使用IDLE1,;而鏈路速率大于5.5 GB并且收發(fā)兩端具有AE功能的情況下鏈路使用IDLE2[2],。若鏈路雙方都支持IDLE2且鏈路速率小于5.5 GB時,也可通過鏈路協商進而使用IDLE2,。
綜上所述,,本設計采用流水線設計的思想將控制符根據其不同功能、不同字段進行拆分,,拆分后根據控制條件分別設計產生對應字段,,最后將設計的結果拼接、選擇進而發(fā)送,,可以達到快速正確產生控制符的目的,,并且可以連續(xù)地產生不同的控制符。
3 仿真測試
將本文中控制符產生的設計進行仿真測試,,仿真結果如圖3所示,。其中圖3(a)所示為短控制符的產生。協議規(guī)定當端口初始化完成以后,,在VC=0的情況下,,要連續(xù)發(fā)送16個status控制符以使鏈路初始化;若VC=1,,則要連續(xù)發(fā)送15個status控制符和1個vcstatus控制符來完成鏈路初始化[2],。本次仿真以VC=0為例,從圖中信號可以看出,,在端口初始化完成以后,,連續(xù)發(fā)送了16個status控制符,,從而使得鏈路初始化完成。
圖3(b)為產生長控制符仿真測試圖,。stype0產生的是PA,,stype1產生的是sop。產生PA的情況有多種,,有一個計數器outstanding_pa_ctr專門計數未能及時處理發(fā)送的PA的數目,,當鏈路初始化完成以后,,只要outstanding_pa_ctr的值不為零則發(fā)送PA控制符,;或者當PA的數目太多超過一定值之后,亦或buf的狀態(tài)已經過期,,都要產生PA控制符,,本仿真圖以第一種情況為例。對于sop的產生也有多種情況,,若sop信號有效,,同時配置模塊允許其advance,此時會產生sop控制符,;若上個周期eop有效,,但是下個周期即將到來sop,此時要把eop重寫為sop,,產生sop控制符,。本文以第二種情況為例。本設計短控制符為32位,,其中頭部包含8位的包定界符,;長控制符為64位,其中頭部和尾部各自包含一個包定界符,。
4 結論
本文針對RapidIO_2.2協議進行開發(fā),,設計并且實現了控制符的產生。根據控制符的特點,,對其不同的功能字段進行拆分,,采用流水線的設計思想,流水產生各個字段最后拼接發(fā)送,。仿真結果表明,,本設計可以快速正確地產生對應功能的長短控制符,滿足預期目標,,為器件的正常通信提供了有力的保障,。
參考文獻
[1] 陳程.串行RapidIO總線在存儲系統(tǒng)中的應用研究[D].西安:西安電子科技大學,2013.
[2] ASSOCIATION R T.RapidIOTM Interconnect Specification Part 6:LP-Serial Physical Layer Specification[D].2011.
[3] 楊卿.RapidIO高速互聯接口的設計研究與應用[D].成都:電子科技大學,,2009.
[4] 陳宏銘,,李蕾,,姚益武,等.基于AXI總線串行RapidIO端點控制器的FPGA實現[J].北京大學學報,,2014,,50(4).
[5] 吳峰鋒.一種低時延的串行RapidIO端點設計方案[J].北京大學學報(自然科學版),2013,,49(4).
[6] 張強.串行RapidIO互連系統(tǒng)的設計與實現[D].南京:南京理工大學,,2013.