時間:2023-03-21 16:50:48
序論:在您撰寫FPGA的雙路FC數據合并輸出模塊設計時,參考他人的優秀作品可以開闊視野,小編為您整理的1篇范文,希望這些建議能夠激發您的創作熱情,引導您走向新的創作高度。
0引言
隨著計算機技術、通信技術和網絡構建技術的發展,航空電子設備、武器裝置、飛機控制等電子系統也趨于完善和復雜,飛機的性能有了很大的提高,飛機內各種設備的集成和復雜性越來越高,機內設備間的通信需求也更加迫切,其功能、性能的正確性、可靠性將直接影響飛機的飛行,FC由于其強實時性、高可靠性、高帶寬、低延遲的特點被廣泛應用于航空電子領域中[1]。在機載環境中構建FC網絡的初期階段,由于FC網絡的復雜性和高數據帶寬的特征,若能在機載應用環境中對FC網絡中傳輸的FC數據進行長時間、高可靠性的實時記錄、高速采集將對分析和研究FC網絡的功能、性能,定位和排除網絡中潛在的故障有著積極的推動作用[2]。從以上的實際需求出發,文中主要講述了一款機載光纖通道數據采集記錄器中的數據處理模塊的設計。
1系統統總體結構
機載光纖通道數據采集記錄器對來自飛機上相關設備的FC數據進行完整性檢測和余度去除,同時該采集設備接收IRIG-B時間碼信號,并對接收到的每個FC數據附加IRIG-B碼等時間信息,將符合要求的FC幀數據通過千兆以太網輸出給機載數據記錄系統和100%完整的存儲在機載光纖通道數據采集記錄器的固態存儲盤中;記錄在固態存儲盤中的數據待飛行結束后再由地面卸載設備卸載后,供事后處理[3]。記錄器整體框圖如圖1所示。光纖數據接收模塊以fpga為處理核心,主要完成由fc通信交換機傳送過來的兩路FC數據的采集工作,并對采集到的兩路FC數據,進行余度選擇,然后對余度選擇后的數據分別采用兩種不同的過濾機制進行過濾(可以通過各自的配置寄存器對過濾機制進行獨立配置),加以標志和區分后,將處理好的數據發送到數據處理模塊進行處理[4]。數據處理模塊完成兩路FC數據的接收緩存以及組幀控制等工作,該模塊也采用FPGA技術來實現,數據處理模塊和光纖數據接收模塊之間的互聯采用Aurora接口,每路FC接口使用一路Aurora接口。本文主要設計了機載光纖通道數據采集記錄器中的數據處理模塊,而數據處理模塊目的是實現兩路FC數據合并后進行高效、穩定地傳輸,經過對系統功能和性能要求進行分析,設計了如圖2所示模塊方案,該數據處理模塊主要由AuroraIP模塊、FC數據接收模塊、調度控制模塊、輸出控制模塊以及緩存模塊所組成,所有模塊都在一塊FPGA上完成。根據邏輯資源的評估及系統功能需求與功耗的考慮,設計選用XLINX-7系列的XC7Z045-FFG900I實現,該芯片是目前XLINX推出的基于SoC架構開發的低功耗的FPGA,在性能上完全滿足目前設備設計需求。
2數據處理模塊個子模塊詳細設計
該模塊主要由Aurora模塊、FC數據接收模塊、調度控制模塊、輸出控制模塊以及緩存模塊所組成。Aurora模塊主要實現對FC數據的高速串行傳輸,采用Aurora8B10B編碼方式;FC數據接收模塊用來接收從Aurora模塊進來的axi_stream接口數據,并且將幀寫入到緩存模塊中;緩存模塊主要緩存長度信息、幀長錯誤標志和幀負載;調度控制模塊主要是進行兩路Aurora輸入數據調度,由兩路指令FIFO的空信號控制狀態機,實現兩路并發情況下的數據乒乓調度;輸出控制模塊則主要完成兩路并行輸入數據的串行輸出控制并按照要求調整輸出幀格式。
2.1AuroraIP核實例化Aurora協議在2002年由Xilinx公司首次提出,是一個可擴展且輕量級的鏈路層串行傳輸通信協議,可以實現點到點的串行數據傳輸[5]。Aurora協議針對FPGA間的高速數據傳輸,能夠為物理層提供透明接口??梢允褂肰ivado提供的IPCatalog工具完成IP核的定制與生成。調用該IP核不僅可以降低設計的難度,節省設計的時間,同時還能提高設計的可靠性和穩定性。在調用AuroraIP核時,各項參數需要根據實際情況和需求進行合理的選擇[6]。下面介紹配置該IP核時需要注意的一些重要參數。(1)LaneRate:Aurora總線的傳輸速度,ZYNQ7000系列FPGA的Aurora總線可支持0.5~6.6Gbit/s內的任意值,此處設置為2.125Gbit/s。(2)GTRefclk:提供給Aurora所采用的GTH時鐘,有多個速率可選,這里選擇為106.25MHz。(3)INITclk:Aurora初始化時鐘頻率,此處采用50MHz。(4)Data?owMode:Aurora協議可支持雙工模式和單工模式,根據設計的需求選擇雙工Duplex模式。(5)Interface:AuroraIP提供了兩種數據接口類型,一種為幀模式,另一種為流模式。幀模式的用戶接口采用AXI_Stream協議,支持對任意幀長度的封裝,并提供了幀收發時的一些幀結構控制參數。流模式以數據流方式傳輸數據。前者使得數據流傳輸比較規范,但占用的資源比較多,實現難度大于后者[7-9]。本次設計采用幀模式接口類型。
2.2FC數據接收模塊FC數據接收模塊主要用來接收auroraIP模塊通過的axi_stream接口數據,并且將幀的負載寫入數據FIFO(d?fo)當中,將長度信息及幀長錯誤標志寫入指令FIFO(i?fo)當中。其中分兩個FIFO緩存主要是因為如果放在一個FIFO里面,如果出現幀長錯誤后,丟幀這里就會很難控制,會造成錯誤向下蔓延,后續的幀可能都會傳輸錯誤,如果分開存儲,出現傳輸的幀長錯誤后,僅丟掉當前幀就可以了,不再影響后續正確幀的傳輸。接收數據幀可以通過狀態機來實現,如圖3所示各個狀態機功能詳述如下:RX_IDLE:空閑狀態。當不接收數據時,接收模塊處于空閑狀態,當接收到接收數據有效信號時,狀態機跳轉到接收數據狀態;當接收d?fo滿信號時,狀態機從空閑狀態跳到接收丟棄狀態。RX_DATA:接收數據狀態。當接收數據完成狀態信號時,狀態機從接收數據狀態跳轉到接收完成狀態;當檢測到幀長錯誤時,狀態機從接收數據狀態跳轉到接收錯誤狀態。RX_END:接收完成狀態。在數據接收完成一個時鐘周期后跳轉到空閑狀態。RX_DIS:接收丟棄狀態。當檢測到d?fo滿信號時,跳轉到該狀態,當接收數據有效信號時,狀態機從接收丟棄狀態跳轉到空閑狀態。RX_ERR:接收錯誤狀態。當檢測到幀長錯誤時,跳轉到該狀態,當接收數據完成狀態信號時,狀態機從接收錯誤狀態跳轉到接收完成狀態。
2.3調度控制模塊該模塊的主要功能是進行兩路輸入數據調度,由兩路i?fo空信號控制狀態機,實現兩路并發情況下的乒乓調度。
2.3.1乒乓調度原理乒乓調度是種經常應用于數據流控制的處理方法,常用于需要提高數據效率的地方[10]。其主要特點有:(1)實現數據的無縫緩沖和處理;(2)可節約緩沖區空間;(3)可實現低速模塊處理高速模塊。如圖4為調度控制模塊中乒乓調度的操作示意圖。乒乓調度的主要流程為:輸入FC數據流通過“輸入數據分配器”將數據流輪流分配到兩個數據暫存單元,兩個數據暫存單元選擇FIFO。在第一個周期,將輸入的數據流緩存到“數據暫存單元1;在第2個周期,通過“輸入數據分配器”的切換,將輸入的數據流緩存到“數據暫存單元2”,同時將“數據暫存單元1”緩存的第1個周期數據通過“輸出數據選擇器”的選擇,輸送到“數據處理單元”中進行處理;在第3個緩沖周期通過“輸入數據分配器”的再次切換,將輸入的數據流緩存到“數據暫存單元1”,同時將“數據暫存單元2”緩存的第2個周期的數據通過“輸出數據選擇器”切換,輸送到“數據處理單元”進行處理,如此循環。
2.3.2狀態機乒乓調度模塊內部邏輯采用狀態機來實現FC數據的平滑輸出,切換狀態流程如圖5所示,各個狀態功能詳述如下。IDLE:空閑狀態,當緩存模塊中的指令FIFO為空時,狀態機處于空閑狀態,當通路1的指令FIFO為非空,通路2的指令FIFO為空時,跳轉到REQ0_a狀態,開始讀取1通道FIFO中的數據,當通路1的指令FIFO為空,通路2的指令FIFO為非空時,跳轉到REQ1_a狀態,開始讀取2通道FIFO中的數據,當兩個FIFO全為非空時,優先讀取通路1中的數據,全部讀取完成后再開始讀取通路2。REQ0_a:通路1讀狀態,當接收到幀結尾標志rev_eof_?g0,表示通路1讀取完成,跳轉到REQ0_b狀態。REQ1_a:通路2讀狀態,當接收到幀結尾標志rev_eof_?g1,表示通路2讀取完成,跳轉到REQ1_b狀態。REQ0_b:通路1完成狀態,該狀態表示通路1讀取完成,此時如果通路2的FIFO為非空時,則跳轉到REQ1_a狀態,開始讀取通路2中的數據,如果通路1的FIFO為非空時,跳轉到REQ0_a狀態,繼續讀取通路1中的數據。REQ1_b:通路2完成狀態,該狀態表示通路2讀取完成,當通路2的FIFO為非空時,跳轉到REQ1_a狀態,繼續讀取通路2中的數據。
2.4輸出控制模塊輸出控制模塊主要功能是完成兩路并行輸入數據的串行輸出控制,在幀頭前添加固定識別字以及用來區分來自哪個通道的通道號,并按照要求調整輸出幀格式的順序[11]。輸出控制模塊內部邏輯采用狀態機來接收由數據FIFO來的FC數據,切換狀態流程如圖6所示,各個狀態功能詳述如下。圖6輸出控制狀態機RX_IDLE:空閑狀態,當通道1接收FIFO讀使能信號或者通道2接收FIFO讀使能信號為高電平時該狀態機開始接收由緩存模塊來的FC數據。RX_RD0:接收幀讀狀態0,接收固定識別字。RX_RD1:接收幀讀狀態1,獲取通道號。RX_RD2:接收幀讀狀態2,獲取幀長及幀錯誤標志。RX_WR0:接收幀寫狀態0,獲取系統時標高32位。RX_WR1:接收幀寫狀態1,獲取系統時標低32位。RX_WR2:接收幀寫狀態2,獲取本地時標高32位。RX_WR3:接收幀寫狀態3,獲取本地時標低32位。RX_PD:接收幀寫等待完成狀態,等待EOF,當接收到幀尾標志Rev_eof_?g時,跳轉至接收幀完成狀態RX_EOF。RX_EOF:接收幀寫完成狀態。
3模塊調試與仿真驗證設計通過
Questasim對每個模塊進行功能仿真,具體仿真結果如下所述:如圖7和圖8所示為FC數據接收模塊接收完整一幀的仿真波形圖,由圖7和圖8可知,當上電后,狀態機進入接收狀態,圖中rx_tdata為接收到的數據幀信號,當rx_tvalid=1時,開始接收數據,rx_tlast=1表示接收到數據幀的最后一個字節,由接收數據幀可以看出接收到的數據幀格式正確,包括幀計數,幀長度,時標信息,幀負載和幀尾EOF。仿真時發送了長度為16’h258,幀尾為32’hBC957575的FC數據幀,可以看到接收到的數據幀完全一致。rx_d??_wrdata和rx_i?fo_wrdata為緩存到d?fo和i?fo中的數據,由圖7和圖8可以看到接收到的數據幀會在下一個時鐘周期后緩存到d?fo和i?fo中,暫存到?fo中的數據幀完整并與接收到的數據幀完全一致。如圖9所示為輸出控制模塊的仿真波形圖,rev_buff_dout為輸出的數據幀,可以看到在接收到的數據幀的頭部添加了固定的識別字和區分來源于哪個通道的通道號,然后將組好的數據幀發送出去,符合所要求的數據幀的幀格式。
4結語
文中設計并實現了機載光纖通道數據采集記錄器中的數據處理模塊,通過Aurora接口將兩路FC數據進行高效、穩定地傳輸,按要求調整幀格式,并合并為一路輸出。該模塊在數據接收和發送方面都具有較好的應用價值。
參考文獻:
[1]高潤蓮,周晴.基于光纖通道數據收發系統的設計與實現[J].電子設計工程,2018,26(2):189-193.
[2]王曉瀾.一種光纖通道收發器的設計與驗證[D].電子科技大學,2021.
[3]田澤,徐文龍,許恒,等.FC光纖通道技術研究綜述[J].電子技術應用,2016,42(9):143-146.
[4]焦新泉,杜凱旋,楊志文,等.Aurora協議的高速光纖存儲系統優化設計[J].單片機與嵌入式系統應用,2022,22(4):88-91.
[5]蘇秀妮.基于RocketIO高速串行通信接口的研究與實現[D].西安電子科技大學.
[6]王新剛.基于Aurora協議的萬兆串行數據傳輸研究[D].河北科技大學,2019.
[7]許超.基于Aurora的高速數據記錄裝置設計與實現[D].中北大學,2021.
作者:康磊 王云云 任麗華 單位:西安石油大學計算機學院 西安翔騰微電子科技有限公司