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