于東英,陳 俊,康令州
(中國電子科技集團公司第三十研究所,四川 成都 610041)
2015年5月國務(wù)院印發(fā)《中國制造2025》,是中國政府實施制造強國戰(zhàn)略第一個十年行動綱領(lǐng)。在該行動綱領(lǐng)的指導(dǎo)下,為了提高國家綜合國力,成功實現(xiàn)各個產(chǎn)業(yè)升級轉(zhuǎn)型,創(chuàng)新與自主發(fā)展成為其核心理念之一。
2018年上半年,美國商務(wù)部發(fā)布對中興通信的禁止出口令。該消息一石激起千層浪,對所有國人敲響了警鐘,同時明白在很多高科技行業(yè)尤其在有“工業(yè)石油”之稱的芯片方面,必須擁有自主研發(fā)的產(chǎn)品,否則將會受制于人。如果不是在中國自主研發(fā)的芯片上進行開發(fā)和應(yīng)用,取得的一切成果就如一座建立在沙子上的城堡。
在提倡創(chuàng)新和自主發(fā)展的大背景下,在外部環(huán)境瞬息萬變的情況下,為了行業(yè)長遠和健康的發(fā)展,必須在芯片領(lǐng)域堅持自主研發(fā)和應(yīng)用。
本文主要是在國產(chǎn)自主研發(fā)的FPGA平臺上實現(xiàn)高速數(shù)據(jù)通信接口SRIO的設(shè)計與驗證。
本文使用的FPGA平臺[1]是深圳市紫光同創(chuàng)電子有限公司推出的全新高性能FPGA,具有完全自主產(chǎn)權(quán)的體系結(jié)構(gòu)與自主開發(fā)套件。
該芯片包括創(chuàng)新的可配置邏輯單元(CLM)、專用的18 kB存儲單元(DRM)、算術(shù)處理單元(APM)、高速串行接口模塊(HSST)、多功能高性能IO以及豐富的片上時鐘資源等。該芯片的詳細列表如表1所示。
表1 國產(chǎn)FPGA資源詳細列表
該國產(chǎn)FPGA芯片內(nèi)置高速串行模塊(HSST),數(shù)據(jù)傳輸速率可達6.375 Gb/s,可以靈活運用于各種串行協(xié)議標準。本文通過配置FPGA內(nèi)置的HSST接口作為SRIO接口設(shè)計的硬件接口基礎(chǔ)。
SRIO接口是一個開放式互聯(lián)體系結(jié)構(gòu)。該接口類型基于包交換的新一代高速互聯(lián)技術(shù),具有高可靠性、低時延、低管腳數(shù)、低傳輸開銷以及接口頻率和端口寬度可升級等優(yōu)點,解決了嵌入式系統(tǒng)內(nèi)串行數(shù)據(jù)平面連接、DSP、FPGA與串行背板之間的高速串行數(shù)據(jù)傳輸穩(wěn)定性和時效性的問題。
SRIO協(xié)議體系包含了3層結(jié)構(gòu)(傳輸層、邏輯層和物理層)[2],各個協(xié)議層之間的詳細關(guān)系如圖1所示。
圖1 SRIO協(xié)議體系結(jié)構(gòu)
協(xié)議體系中3個結(jié)構(gòu)層詳細定義了串行數(shù)據(jù)傳輸過程中涉及到的傳輸機制和傳輸特性,詳細定義范圍如表2所示。
表2 國產(chǎn)SRIO協(xié)議中層功能定義范圍列表
在國產(chǎn)FPGA平臺的基礎(chǔ)上,使用FPGA內(nèi)置的HSST模塊與廠家提供的SRIO core,通過邏輯模擬IPcore的讀寫時序(與xilinx的rapidio IP core的用戶側(cè)時序相同)[3],實現(xiàn)了速率為2.5 Gb/s,接口模式為1X的SRIO接口設(shè)計和驗證。
對于用戶使用來說,SRIO core主要分為4個部分。
發(fā)起模塊:主動發(fā)起事務(wù)請求以及接收對端接收模塊響應(yīng)本端發(fā)起模塊的事物請求。
接收模塊:接收對端發(fā)起模塊發(fā)起的事物請求,并根據(jù)請求作出相應(yīng)的響應(yīng)。
時鐘模塊:參考SRIO core輸出的時鐘作為整個設(shè)計的參考時鐘。
復(fù)位模塊:通過對系統(tǒng)時鐘以及一些配置標志信號進行綜合處理,最終形成SRIO core的復(fù)位信號。
FPGA內(nèi)部設(shè)計主要包括三個部分[4]:SRIO core、initial_module和 dest_module。 在 設(shè) 計 SRIO接口時,需要注意硬件設(shè)計必須提供125 MHz的差分時鐘給HSST參考時鐘接口。模塊之間的互聯(lián)關(guān)系如圖2所示。
SRIO core:SRIO core實現(xiàn)了協(xié)議中規(guī)定的3個結(jié)構(gòu)層,用戶側(cè)接口部分主要包括用戶接口(user interface)、鏈路接口(link interface)和管理接口(Maintenance Interface)[2]。用戶在使用SRIO core傳輸數(shù)據(jù)時主要使用的是用戶接口。
用戶接口主要包括四個部分:發(fā)起方請求事務(wù)(ireq_xx)、發(fā)起方響應(yīng)事務(wù)(iresp_xx)、目標方發(fā)起事務(wù)(treq_xx)與目標方響應(yīng)事務(wù)(tresp_xx)。
圖2 FPGA內(nèi)部設(shè)計
用戶可以通過用戶側(cè)接口中相應(yīng)的控制和標志信號實現(xiàn)特定的數(shù)據(jù)長度、發(fā)送方信息、目標方信息等。
Initi_module模塊:該模塊的功能是通過邏輯設(shè)計實現(xiàn)SRIO core的發(fā)起方請求事務(wù)與響應(yīng)事務(wù)相關(guān)的控制與標志信號時序。
dest_module模塊:該模塊的功能是通過邏輯設(shè)計實現(xiàn)SRIO core的目標方請求事務(wù)與響應(yīng)事務(wù)相關(guān)的控制與標志信號時序。
SRIO core用戶接口發(fā)起方與接收方的信號接口完全獨立。驗證時采用兩塊板卡進行通信,板卡之間通過SMA接口進行互聯(lián)。為了設(shè)計驗證,在FPGA內(nèi)部添加了DRAM模塊用于存放需要交互的數(shù)據(jù),compare_module用于發(fā)起方接收和發(fā)送數(shù)據(jù)的比對。SRIO接口通信數(shù)據(jù)的數(shù)據(jù)流向如圖3所示。
圖3 SRIO接口數(shù)據(jù)流
SRIO core包括數(shù)據(jù)處理流程如下。
用戶可以通過ireq_byte_count信號控制傳輸?shù)臄?shù)據(jù)長度,通過ireq_addr信號控制數(shù)據(jù)存儲到DRAM2中的目的地址。下面以FPGA1中的initi_module發(fā)起寫事務(wù)請求和讀事務(wù)請求,F(xiàn)PGA2中的dest_module響應(yīng)其讀寫事務(wù)請求。
Initi_module從DRAM1中讀取需要發(fā)送的數(shù)據(jù),開始進行寫事件請求,通過控制ireq1_sof_n(開始標志)、ireq1_eof_n(結(jié)束標志)、ireq1_vld_n(有效標志)信號等信號,檢測SRIO core的ireq1_rdy_n(備妥信號)有效性,將數(shù)據(jù)發(fā)送到SRIO core,經(jīng)過SRIO core處理的數(shù)據(jù)通過SMA接口發(fā)送到FPGA2內(nèi)的SRIO core。經(jīng)過IP core處理后的數(shù)據(jù)通過treq2_xx信號將接收到的數(shù)據(jù)按照ireq1_addr設(shè)定的目的地址存儲到DRAM2中。
Initi_module完成了寫事件請求后,將執(zhí)行讀事件請求。dest_module接收到讀請求后,從DRAM2中讀取req1_addr設(shè)定的目的地址上的數(shù)據(jù),并開始進行讀響應(yīng),通過控制tresp2_sof_n(開始標志)、tresp2_eof_n(結(jié)束標志)、tresp2_vld_n(有效標志)信號等信號,檢測SRIO core的tresp2_rdy_n(備妥信號)有效性,將數(shù)據(jù)發(fā)送到SRIO core。經(jīng)過SRIO core處理的數(shù)據(jù)通過SMA接口發(fā)送到FPGA1內(nèi)的SRIO core,經(jīng)過IP core處理后的數(shù)據(jù)通過iresp2_xx信號接收有效數(shù)據(jù),并將接收到到的數(shù)據(jù)與發(fā)送的數(shù)據(jù)進行比對。
上述過程是FPGA1內(nèi)Initi_module發(fā)起事情請求,F(xiàn)PGA2內(nèi)的dest_module響應(yīng)請求;反之,數(shù)據(jù)流向類似。
本文中接口驗證過程采用國產(chǎn)FPGA生成的SRIO通過SMA接口連線與xlinx的開發(fā)板SP605進行互通。該開發(fā)板上搭載一片XC6SLX45T-3FGG484 FPGA。將SP605作為第三方驗證國產(chǎn)FPGA中SRIO接口設(shè)計的正確性。
SRIO接口的傳輸類型中經(jīng)常用到的模式有NWRITE和NREAD(不要求接收端響應(yīng))、NWRITE_R(要求接收端響應(yīng))、SWRITE(流寫操作,數(shù)據(jù)長度必須是8的整數(shù)倍)等。這些傳輸類型通過控制信號ftype與ttype進行選擇。
本文中用到的示例采用的模式為工程實例中較常用的NWRITE(ftype=5,ttype=4)和NREAD(ftype=2,ttype=4)。測試過程中開發(fā)板SP605和國產(chǎn)FPGA同時進行NWRITE與NREAD循環(huán)操作,即在SRIO全雙工工作模式下,通過FPGA自帶的邏輯分析儀得到如圖4所示的時序圖。
圖4 發(fā)送、接收時序圖
通過FPGA內(nèi)部比對模塊的比對結(jié)果和邏輯分析儀抓取到的測試圖可以看到,國產(chǎn)FPGA實現(xiàn)的SRIO接口可以與xilinx開發(fā)板SP605進行長時間正常通信,證明國產(chǎn)FPGA實現(xiàn)了SRIO接口的穩(wěn)定性和正確性。
在目前的實際形式下,芯片國產(chǎn)化勢在必行,且SRIO接口具有公開發(fā)布標準,高可靠性、低時延等特性使得其使用范圍極廣。本文在自主國產(chǎn)FPGA的平臺上,使用廠家自主研發(fā)的IP CORE實現(xiàn)了SRIO接口的設(shè)計,并通過與xilinx的SP605開發(fā)板SRIO接口進行通信,驗證了國產(chǎn)FPGA平臺上SRIO設(shè)計的穩(wěn)定性與正確性。