⑴ keil4 同樣的源程序, 每次編譯生成的hex文件crc校驗碼都不一樣,為什麼如何使生成的hex文件校驗碼一樣
這個沒什麼奇怪的,編譯後的Hex文件和CRC校驗碼一定是不一察茄謹樣的,因為編譯器在編譯的時候,會自動插入一些隨機數,進行冗餘計算,這個是為了保密的需要,試想,如果一個編譯器不進行保密的冗餘計算,那麼,稍微有點知識的人,就可以很容易的從HEX文件反推回匯編語言,這樣的編譯器,哪個廠家敢用?自己辛苦寫的軟體,很容易的就被人盜版了。
所以,敗基這個是沒有辦法的事納答情。
⑵ 基於CPCI系統的高速數字通信介面電路設計與應用
基於CPCI系統的高速數字通信介面電路設計與應用
在CPCI系統環境下高速數字通信AFDX協議端系統介面的電路設計與功能實現。採用Verilog編程實現基於FPGA的硬體設計部分,採用C編程實現基於MicroBlaze的嵌入式軟體設計。
0 引 言
隨著通信技術的高速發展,嵌入式系統對數據傳輸速率的要求更高。在航空等軍用電子設備中,實現信號處理演算法的數字信號處理機,起著至關重要的作用。CPCI匯流排技術有效解決了高速互聯問題。
20世紀90年代,PCI匯流排技術被廣泛應用,但是它可靠性較低,無法滿足對正常運行時間要求較高的高可用性系統。加之其主板連接器可靠性低,更換時易被損壞。CPCI的高帶寬特點,決定了其適用於高速數據通信場合。隨著國外著名計算機系統公司基於CPCI產品和方案的推廣及PICMG/PRC對CPCI技術的宣傳,我國工業控制領域越來越多地把CPCI應用於高性能嵌入式系統之中。本文研究了在CPCI系統環境下高速數字通信AFDX協議端系統介面的電路設計與功能實現。採用Verilog編程實現基於FPGA的硬體設計部分,採用C編程實現基於MicroBlaze的嵌入式軟體設計。
1 基於FPGA的硬體設計
攔核1.1 MAC模塊、FIFO模塊和MII模塊
FIFO模塊分為接收FIFO和發送FIFO,通過調用IP核來實現。本文所設計的MAC模塊和FIFO模塊的基本結構如圖1所示。MAC核通過MII介面和PHY晶元進行外部通信,通過發送FIFO和接收FIFO進行FPGA內部數據的通信。
1.2 CRC模塊
CRC模塊通過檢驗數據的CRC值,判決接收的數據的正確性和有效性。在數據包被發送後,緊接著該數據包的4 B CRC也會被發送。接收者通過數據包和CRC數據就可以得出新的CRC值。若新CRC值為0,表明接收和發送的數據不一致,crc_error將會置1。其管腳定義如表2所示。
1.3 規整模塊和冗餘管理模塊
規整模塊根據每條VL的BAG,Lmax值,對其數據流進行規整。具體方式為:當該VL的BAG時間達到,且Jitter在最大抖動的范圍內、幀長小於Lmax,則置FTT標識有效,此時多路復用器模塊會派衡纖申請對該VL進行調度;反塵仿之,不能對該VL進行調度。將固定帶寬分配給每個VL,等價於把接收端與發送端之間的數據傳輸限制在一個BAG內,即在一個BAG內只有一次數據傳輸,如果數據包過大,將其分為多個幀進行發送,也將會在各自的BAG內進行發送。所以,為了保證任意時間段使用的帶寬都是可以被確定的,必須把一個時間段合理地分配給不同的終端系統使用,規整器的輸入輸出示意圖如圖3所示。
從圖3可看出,兩個數據幀之間的長度大於BAG,那麼正常接收;當兩個數據幀之間的長度小於一個BAG,就將後一個數據幀移動到第二個BAG的起始位置。 在AFDX網路中,通過不同的AFDX網路交換機將兩個互為冗餘的幀傳遞到同一個目的端系統。只要交換機輸出埠的輸入流量大於輸出流量,就必定會產生交換延遲。因為不同的交換機的交換延遲不是確定值,所以兩個互為冗餘的幀到達目的端的時間間隔也是不確定的。設計時,將SkewMax(最大偏斜)用於AFDX的接收冗餘管理中以便對冗餘幀的接收時間進行限制。冗餘管理模塊的功能是對接收幀的有效性進行驗證,並將重復的有效幀進行消除。冗餘管理模塊的框圖如圖4所示。
1.4 發送和接收模塊
發送數據的基本過程如下:要發送數據時,將待發送數據傳輸到MAC的發送緩存中,發送緩存接收到的數據達到設定值時,數據發送模塊開始進行幀間隔計時;發送幀的前導碼;發送幀起始定界符;幀長計數、CRC校驗和計算,同時將數據按半位元組(4 b)發送給MII介面;在發送過程中,如果MAC檢測到該幀的長度小於最小幀長(64 B),則進行數據填充達到64 B為止。
AFDX發送部分的狀態機如圖6所示,發送數據主要包括等待、數據長度檢測、插入前導碼和幀起始界定符、數據發送以及CRC校驗結果狀態。系統在工作的時候,一直處於wait狀態,當需要發送數據的時候,狀態機將進入下一個狀態從而開始數據的發送。
接收為發送的反過程,首先對接收到的4位信息進行幀檢測,當檢測到前導碼和幀起始定界符的時候,則認為一幀數據接收到了,然後開始對數據幀進行解析,得到幀數據中的各類數據信息。
AFDX接收過程如下:數據通過PHY晶元解碼後進入到MAC 核,然後進入接收FIFO。當MAC接收到數據有效後,從MII介面讀入數據後檢測前導碼和幀起始定界符,當檢測到有效的幀起始定界符,就會開始對幀長進行計數。接收模塊在接收數據的過程中將已接收到的幀的`前導域,SFD域,CRC域和PAD域進行剝離。
2 基於MicroBlaze的軟體設計
2.1 設計說明
在MicroBlaze中將主要完成AFDX協議棧中UDP層和IP層的數據發送和接收部分,對數據進行封裝、解析和控制。發送部分主要完成以下幾個工作:當一個幀數據進入AFDX埠時,發送部分就開始對該幀數據進行封裝,其中UDP層將對數據添加UDP頭,包括源和目標UDP埠號。IP層將UDP層處理完的數據添加IP 包頭和乙太網頭,然後送入虛鏈路層並添加序列號。接收部分主要完成如下幾個工作:當一個幀信號通過PHY解碼送入MAC後,通過接收FIFO送入AFDX接收模塊,那麼接收過程開始。在鏈路層首先對該幀信號進行完整性檢測和冗餘管理,然後進入IP層,進行IP 校驗和檢查,然後送入UDP層,通過多路分配器後將對應的幀數據發送出去,實現數據的解封裝功能。
2.2 設計流程
基於MicroBlaze的系統設計需要分別對系統的硬體和軟體進行協同編譯。完成MicroBlaze的軟體設計之後,將MicroBlaze作為ISE工程下的一個子模塊進行調用。為了驗證程序的正確性,利用ISE調用ModelSim對其進行模擬。具體做法是在ISE工程中添加一個以MicroBlaze處理器為基礎的IP核,並編寫測試文件,為處理器的輸入信號提供激勵,輸出信號提供埠。
3 測試與驗證
兩個MAC核的模擬意義是相同的,所以針對第一個MAC核的模擬波形進行說明。mii_tx_en_0為幀使能信號,當MAC核正常工作時,有數據發送的時候該信號為1;當發送為0的時候,該信號使能為0,mii_txd_0為發送的數據。當有接收信號進入MAC核時,mii_rx_dv_0為高電平,對應的數據為接收的數據;當接收的數據發生錯誤時,mii_rx_er_0會出現高電平,如果接收到的數據沒有發生錯誤,那麼該信號為低電平。
在接收端,判斷接收數據的CRC計算結果是否為0,如果為1,則表明接收過程中有CRC校驗錯誤。CRC 校驗模塊的模擬結果如圖11所示。由圖11可以看出,對接收到的數據以及發送過來的這些數據的CRC 校驗值(d19167bc)一起計算,計算出來的校驗值為0,證明接收的數據沒有問題。
規整模塊的模擬數據如圖12所示。此處接收到的數據位1,2,3,4,…是不等間隔的,通過規整之後輸出的數據1,2,3,4是等間隔的,這個模塊的初始輸出數據是錯誤的,所以會重復輸出第一幀的數據,後面將輸出正確的數據。
主機要發送數據時,首先給MAC的發送緩存中發送數據。發送緩存接收到的數據與設定值相符時,開始進行長度檢測,檢測完成後,數據發送模塊開始進行幀間隔計時。根據幀計數器的值開始發送幀的前導碼、幀起始定界符,將4位數據發送給MII介面,最後把數據從物理層發送到網路介質上。發送模塊的模擬結果如圖13所示。
此處模擬波形的信號i_start_or_not為高電平時,AFDX 發送模塊開始工作,i_data為需要發送的數據,i_data_number為需要發送數據的個數,i_aim_address 為發送信號的目標地址,i_orig_address為發送的源地址,i_head_ip為發送信號的IP頭,i_head_udp為發送信號。當發送開始時,系統首先檢測需要發送的數據長度,如果數據長度大於64,則開始發送,如果發送數據長度小於64,那麼進行填充,補充到64為止。通過AFDX發送模塊,得到發送的幀數據o_AFDX_data以及幀信號對應的幀使能信號o_afdx_frame,完成了數據的正常發送。
接收模塊的模擬結果如圖14所示。當外部數據通過PHY解碼後進入MAC核,接收端開始進入接收狀態機,首先檢測前導碼和幀起始界定符。如果檢測正確,那麼系統進入下一個狀態。從圖14的模擬結果可以看出,當檢測完前導碼和幀起始界定符時,current_state將進入下一個狀態。然後開始接收數據,o_data就為接收到的數據。 4 結 論
本文在對航空全雙工乙太網(AFDX)協議深入研究的基礎上,介紹了一種通用信號處理平台中的一塊AFDX介面板卡,該板卡扣在相應的XMC載卡上應用於CPCI系統中。該板卡XMC傳輸速率為3.125 Gb/s,可高速傳輸RapidIO協議數據,兼容32 b PCI介面和LINK口協議。由於該板卡支持多種介面模式的背板,為各種高速板卡之間的互聯提供了平台。
基於AFDX介面板卡,採用FPGA設計了一種AFDX端系統介面功能的實現方法,該方法基於FPGA的硬體設計和基於MicroBlaze的嵌入式軟體設計,採用FPGA和PHY晶元實現End System端的AFDX介面,完成傳輸層(UDP)、網路層(IP)、鏈路層(Virtual Link)及物理層(PHY)四層協議數據傳輸,使得該介面具備實時、可靠傳輸AFDX 數據的能力。由於該網路協議比較復雜,開發設計具有一定難度。本文的設計基本實現了AFDX端系統的介面發送和接收功能,基本達到了預期目標。AFDX端系統作為AFDX網路協議的重要組成部分,為航空電子系統提供了安全可靠的數據交換服務介面,今後必會得到更加廣泛的應用。
;⑶ 威綸通觸摸屏宏指令,自定義函數怎麼輸入數組
定義成如下試高氏試
sub char CrcCheck(char *Dp, int n, unsigned Dl)
你要把數組大小也作為參數氏孝值傳進去,你的殲念稿char Dp[256] 等效於 char *Dp,它是一個形參。