基于CPCI系統的高速數字通信接口電路設計與應用
在CPCI系統環(huán)境下高速數字通信AFDX協(xié)議端系統接口的電路設計與功能實(shí)現。采用Verilog編程實(shí)現基于FPGA的硬件設計部分,采用C編程實(shí)現基于MicroBlaze的嵌入式軟件設計。
0 引 言
隨著(zhù)通信技術(shù)的高速發(fā)展,嵌入式系統對數據傳輸速率的要求更高。在航空等軍用電子設備中,實(shí)現信號處理算法的數字信號處理機,起著(zhù)至關(guān)重要的作用。CPCI總線(xiàn)技術(shù)有效解決了高速互聯(lián)問(wèn)題。
20世紀90年代,PCI總線(xiàn)技術(shù)被廣泛應用,但是它可靠性較低,無(wú)法滿(mǎn)足對正常運行時(shí)間要求較高的高可用性系統。加之其主板連接器可靠性低,更換時(shí)易被損壞。CPCI的高帶寬特點(diǎn),決定了其適用于高速數據通信場(chǎng)合。隨著(zhù)國外著(zhù)名計算機系統公司基于CPCI產(chǎn)品和方案的推廣及PICMG/PRC對CPCI技術(shù)的宣傳,我國工業(yè)控制領(lǐng)域越來(lái)越多地把CPCI應用于高性能嵌入式系統之中。本文研究了在CPCI系統環(huán)境下高速數字通信AFDX協(xié)議端系統接口的電路設計與功能實(shí)現。采用Verilog編程實(shí)現基于FPGA的硬件設計部分,采用C編程實(shí)現基于MicroBlaze的嵌入式軟件設計。
1 基于FPGA的硬件設計
1.1 MAC模塊、FIFO模塊和MII模塊
FIFO模塊分為接收FIFO和發(fā)送FIFO,通過(guò)調用IP核來(lái)實(shí)現。本文所設計的MAC模塊和FIFO模塊的基本結構如圖1所示。MAC核通過(guò)MII接口和PHY芯片進(jìn)行外部通信,通過(guò)發(fā)送FIFO和接收FIFO進(jìn)行FPGA內部數據的通信。
1.2 CRC模塊
CRC模塊通過(guò)檢驗數據的CRC值,判決接收的數據的正確性和有效性。在數據包被發(fā)送后,緊接著(zhù)該數據包的4 B CRC也會(huì )被發(fā)送。接收者通過(guò)數據包和CRC數據就可以得出新的CRC值。若新CRC值為0,表明接收和發(fā)送的數據不一致,crc_error將會(huì )置1。其管腳定義如表2所示。
1.3 規整模塊和冗余管理模塊
規整模塊根據每條VL的BAG,Lmax值,對其數據流進(jìn)行規整。具體方式為:當該VL的BAG時(shí)間達到,且Jitter在最大抖動(dòng)的范圍內、幀長(cháng)小于Lmax,則置FTT標識有效,此時(shí)多路復用器模塊會(huì )申請對該VL進(jìn)行調度;反之,不能對該VL進(jìn)行調度。將固定帶寬分配給每個(gè)VL,等價(jià)于把接收端與發(fā)送端之間的數據傳輸限制在一個(gè)BAG內,即在一個(gè)BAG內只有一次數據傳輸,如果數據包過(guò)大,將其分為多個(gè)幀進(jìn)行發(fā)送,也將會(huì )在各自的BAG內進(jìn)行發(fā)送。所以,為了保證任意時(shí)間段使用的帶寬都是可以被確定的,必須把一個(gè)時(shí)間段合理地分配給不同的終端系統使用,規整器的輸入輸出示意圖如圖3所示。
從圖3可看出,兩個(gè)數據幀之間的長(cháng)度大于BAG,那么正常接收;當兩個(gè)數據幀之間的長(cháng)度小于一個(gè)BAG,就將后一個(gè)數據幀移動(dòng)到第二個(gè)BAG的起始位置。 在A(yíng)FDX網(wǎng)絡(luò )中,通過(guò)不同的AFDX網(wǎng)絡(luò )交換機將兩個(gè)互為冗余的幀傳遞到同一個(gè)目的端系統。只要交換機輸出端口的輸入流量大于輸出流量,就必定會(huì )產(chǎn)生交換延遲。因為不同的交換機的交換延遲不是確定值,所以?xún)蓚(gè)互為冗余的幀到達目的端的時(shí)間間隔也是不確定的。設計時(shí),將SkewMax(最大偏斜)用于A(yíng)FDX的接收冗余管理中以便對冗余幀的接收時(shí)間進(jìn)行限制。冗余管理模塊的功能是對接收幀的有效性進(jìn)行驗證,并將重復的有效幀進(jìn)行消除。冗余管理模塊的框圖如圖4所示。
1.4 發(fā)送和接收模塊
發(fā)送數據的基本過(guò)程如下:要發(fā)送數據時(shí),將待發(fā)送數據傳輸到MAC的發(fā)送緩存中,發(fā)送緩存接收到的數據達到設定值時(shí),數據發(fā)送模塊開(kāi)始進(jìn)行幀間隔計時(shí);發(fā)送幀的前導碼;發(fā)送幀起始定界符;幀長(cháng)計數、CRC校驗和計算,同時(shí)將數據按半位元組(4 b)發(fā)送給MII接口;在發(fā)送過(guò)程中,如果MAC檢測到該幀的長(cháng)度小于最小幀長(cháng)(64 B),則進(jìn)行數據填充達到64 B為止。
AFDX發(fā)送部分的狀態(tài)機如圖6所示,發(fā)送數據主要包括等待、數據長(cháng)度檢測、插入前導碼和幀起始界定符、數據發(fā)送以及CRC校驗結果狀態(tài)。系統在工作的時(shí)候,一直處于wait狀態(tài),當需要發(fā)送數據的時(shí)候,狀態(tài)機將進(jìn)入下一個(gè)狀態(tài)從而開(kāi)始數據的發(fā)送。
接收為發(fā)送的反過(guò)程,首先對接收到的4位信息進(jìn)行幀檢測,當檢測到前導碼和幀起始定界符的時(shí)候,則認為一幀數據接收到了,然后開(kāi)始對數據幀進(jìn)行解析,得到幀數據中的各類(lèi)數據信息。
AFDX接收過(guò)程如下:數據通過(guò)PHY芯片解碼后進(jìn)入到MAC 核,然后進(jìn)入接收FIFO。當MAC接收到數據有效后,從MII接口讀入數據后檢測前導碼和幀起始定界符,當檢測到有效的幀起始定界符,就會(huì )開(kāi)始對幀長(cháng)進(jìn)行計數。接收模塊在接收數據的過(guò)程中將已接收到的幀的前導域,SFD域,CRC域和PAD域進(jìn)行剝離。
2 基于MicroBlaze的軟件設計
2.1 設計說(shuō)明
在MicroBlaze中將主要完成AFDX協(xié)議棧中UDP層和IP層的數據發(fā)送和接收部分,對數據進(jìn)行封裝、解析和控制。發(fā)送部分主要完成以下幾個(gè)工作:當一個(gè)幀數據進(jìn)入AFDX端口時(shí),發(fā)送部分就開(kāi)始對該幀數據進(jìn)行封裝,其中UDP層將對數據添加UDP頭,包括源和目標UDP端口號。IP層將UDP層處理完的數據添加IP 包頭和以太網(wǎng)頭,然后送入虛鏈路層并添加序列號。接收部分主要完成如下幾個(gè)工作:當一個(gè)幀信號通過(guò)PHY解碼送入MAC后,通過(guò)接收FIFO送入AFDX接收模塊,那么接收過(guò)程開(kāi)始。在鏈路層首先對該幀信號進(jìn)行完整性檢測和冗余管理,然后進(jìn)入IP層,進(jìn)行IP 校驗和檢查,然后送入UDP層,通過(guò)多路分配器后將對應的幀數據發(fā)送出去,實(shí)現數據的解封裝功能。
2.2 設計流程
基于MicroBlaze的系統設計需要分別對系統的硬件和軟件進(jìn)行協(xié)同編譯。完成MicroBlaze的軟件設計之后,將MicroBlaze作為ISE工程下的一個(gè)子模塊進(jìn)行調用。為了驗證程序的正確性,利用ISE調用ModelSim對其進(jìn)行仿真。具體做法是在ISE工程中添加一個(gè)以MicroBlaze處理器為基礎的IP核,并編寫(xiě)測試文件,為處理器的輸入信號提供激勵,輸出信號提供端口。
3 測試與驗證
兩個(gè)MAC核的仿真意義是相同的,所以針對第一個(gè)MAC核的仿真波形進(jìn)行說(shuō)明。mii_tx_en_0為幀使能信號,當MAC核正常工作時(shí),有數據發(fā)送的時(shí)候該信號為1;當發(fā)送為0的時(shí)候,該信號使能為0,mii_txd_0為發(fā)送的數據。當有接收信號進(jìn)入MAC核時(shí),mii_rx_dv_0為高電平,對應的數據為接收的數據;當接收的數據發(fā)生錯誤時(shí),mii_rx_er_0會(huì )出現高電平,如果接收到的數據沒(méi)有發(fā)生錯誤,那么該信號為低電平。
在接收端,判斷接收數據的CRC計算結果是否為0,如果為1,則表明接收過(guò)程中有CRC校驗錯誤。CRC 校驗模塊的仿真結果如圖11所示。由圖11可以看出,對接收到的數據以及發(fā)送過(guò)來(lái)的這些數據的CRC 校驗值(d19167bc)一起計算,計算出來(lái)的校驗值為0,證明接收的數據沒(méi)有問(wèn)題。
規整模塊的仿真數據如圖12所示。此處接收到的數據位1,2,3,4,…是不等間隔的,通過(guò)規整之后輸出的數據1,2,3,4是等間隔的,這個(gè)模塊的初始輸出數據是錯誤的,所以會(huì )重復輸出第一幀的數據,后面將輸出正確的數據。
主機要發(fā)送數據時(shí),首先給MAC的發(fā)送緩存中發(fā)送數據。發(fā)送緩存接收到的數據與設定值相符時(shí),開(kāi)始進(jìn)行長(cháng)度檢測,檢測完成后,數據發(fā)送模塊開(kāi)始進(jìn)行幀間隔計時(shí)。根據幀計數器的值開(kāi)始發(fā)送幀的前導碼、幀起始定界符,將4位數據發(fā)送給MII接口,最后把數據從物理層發(fā)送到網(wǎng)絡(luò )介質(zhì)上。發(fā)送模塊的仿真結果如圖13所示。
此處仿真波形的信號i_start_or_not為高電平時(shí),AFDX 發(fā)送模塊開(kāi)始工作,i_data為需要發(fā)送的數據,i_data_number為需要發(fā)送數據的個(gè)數,i_aim_address 為發(fā)送信號的目標地址,i_orig_address為發(fā)送的源地址,i_head_ip為發(fā)送信號的IP頭,i_head_udp為發(fā)送信號。當發(fā)送開(kāi)始時(shí),系統首先檢測需要發(fā)送的數據長(cháng)度,如果數據長(cháng)度大于64,則開(kāi)始發(fā)送,如果發(fā)送數據長(cháng)度小于64,那么進(jìn)行填充,補充到64為止。通過(guò)AFDX發(fā)送模塊,得到發(fā)送的幀數據o_AFDX_data以及幀信號對應的幀使能信號o_afdx_frame,完成了數據的正常發(fā)送。
接收模塊的仿真結果如圖14所示。當外部數據通過(guò)PHY解碼后進(jìn)入MAC核,接收端開(kāi)始進(jìn)入接收狀態(tài)機,首先檢測前導碼和幀起始界定符。如果檢測正確,那么系統進(jìn)入下一個(gè)狀態(tài)。從圖14的仿真結果可以看出,當檢測完前導碼和幀起始界定符時(shí),current_state將進(jìn)入下一個(gè)狀態(tài)。然后開(kāi)始接收數據,o_data就為接收到的數據。 4 結 論
本文在對航空全雙工以太網(wǎng)(AFDX)協(xié)議深入研究的基礎上,介紹了一種通用信號處理平臺中的一塊AFDX接口板卡,該板卡扣在相應的XMC載卡上應用于CPCI系統中。該板卡XMC傳輸速率為3.125 Gb/s,可高速傳輸RapidIO協(xié)議數據,兼容32 b PCI接口和LINK口協(xié)議。由于該板卡支持多種接口模式的背板,為各種高速板卡之間的互聯(lián)提供了平臺。
基于A(yíng)FDX接口板卡,采用FPGA設計了一種AFDX端系統接口功能的實(shí)現方法,該方法基于FPGA的硬件設計和基于MicroBlaze的嵌入式軟件設計,采用FPGA和PHY芯片實(shí)現End System端的AFDX接口,完成傳輸層(UDP)、網(wǎng)絡(luò )層(IP)、鏈路層(Virtual Link)及物理層(PHY)四層協(xié)議數據傳輸,使得該接口具備實(shí)時(shí)、可靠傳輸AFDX 數據的能力。由于該網(wǎng)絡(luò )協(xié)議比較復雜,開(kāi)發(fā)設計具有一定難度。本文的設計基本實(shí)現了AFDX端系統的接口發(fā)送和接收功能,基本達到了預期目標。AFDX端系統作為AFDX網(wǎng)絡(luò )協(xié)議的重要組成部分,為航空電子系統提供了安全可靠的數據交換服務(wù)接口,今后必會(huì )得到更加廣泛的應用。
【基于CPCI系統的高速數字通信接口電路設計與應用】相關(guān)文章:
基于GIS平臺開(kāi)發(fā)的電力調度系統的應用分析論文03-09
數字通信技術(shù)對有線(xiàn)電視的應用論文03-15
探索基于科技傳播的電視臺非線(xiàn)性編輯系統應用03-29
基于協(xié)同商務(wù)系統的人力資源管理的應用及對策研究12-03
基于嵌入式技術(shù)的分布式系統研究及應用論文03-16
計算機高速數字電路設計技術(shù)論文11-11
論述基于web的教學(xué)系統在計算機基礎課程教學(xué)中的應用12-05
信息系統應用論文03-21
分析基于現網(wǎng)的OTN技術(shù)應用01-15
- 相關(guān)推薦