基于SoC的NCSF總線系統(tǒng)的研究與設計術
如圖6所示。其中命令函數是用戶層行規(guī)為數控系統(tǒng)軟件提供的應用接口,數控系統(tǒng)軟件通過調用命令函數封裝命令數據結構并寫數據到命令數據結構數組。每個函數根據自己的功能將數據寫人數組不同的位置,具體內存地址為基地址加偏移地址。行規(guī)接口程序主要工作包括:讀取命令數據結構數組中的數據并映射到PIC的輸出緩存中;讀取PCI輸入緩存中的數據并映射到應答數據結構數組中。由于NCSF總線支持集總幀(一個大的數據幀,里面包含所有從站的數據,適用于主從環(huán)形總線拓撲結構)和非集總幀報文,因此一次函數執(zhí)行將讀寫整個數組,即一個通訊周期內所需要發(fā)送的周期性數據和非周期性數據;所有的安全性檢查、出錯重傳、時鐘同步、PCI內存與從站地址的映射等控制功能完全由FPGA部分實現。
圖6行規(guī)接口程序數據流向程序間的數據流向
3.2 FPGA上總線系統(tǒng)程序設計
FPGA上實現部分主要完成站點初始化、從站信息搜集、拓撲判斷、數據收發(fā)等工作。其中站點初始化、從站信息搜集、拓撲判斷工作通常只在FPGA上電時執(zhí)行,除非出現通信故障需要重新初始化;數據收發(fā)以及時鐘同步等過程則要以中斷的形式周期執(zhí)行。當MicroBlaze處理器接收到時鐘計數器的脈沖信號時,將調用應用層程序處理中斷即開始進行周期通信,主要工作包括數據的收發(fā)、狀態(tài)機維護、安全性檢查、出錯重傳、地址映射、時鐘同步等。
3.2.1 應用層處理程序設計
應用層程序可處于不同的運行狀態(tài),如初始態(tài)、就緒態(tài)、異步連接態(tài)、同步連接態(tài)、連接釋放態(tài)、故障態(tài)、結束態(tài)等,程序根據所處狀態(tài)提供不同的傳輸服務,應用層服務需要調用數據鏈路層提供的基本服務命令接口實現。
當處理器接收到時鐘脈沖信號開始進行中斷處理時應用層程序處于就緒狀態(tài),之后程序會參照從站的反饋信息進入不同狀態(tài)。該程序的主要工作包括:讀取PCI接口中命令數據結構數組的映射數據,寫從站的應答信息到PCI的應答數據結構數組的映射內存中。應用層與數據鏈路層的信息交換通過傳輸APDU進行。APDU由用戶數據負載和控制信息組成,用戶數據負載存儲用戶層行規(guī)數據,控制信息用來描述APDU屬性。APDU控制信息數據結構設計如下,具體實現可以根據實際應用進行調整。
應用層處理程序首先讀取PCI緩沖區(qū)映射的命令數據結構數組并進行掃描,分析命令數據結構中的命令分組號和組內命令確定APDU控制信息,然后將命令數據結構數組封裝成APDU數組,這一過程可以通過維護命令數據結構到APDU控制信息的映射表進行簡化。下一步調用數據鏈路層基本服務命令接口發(fā)送APDU數組中的周期數據,接著檢查發(fā)送狀態(tài)進行差錯控制、出錯重傳或發(fā)送非周期數據。最后時鐘同步。每個通信周期都劃分為若干個階段執(zhí)行,上述各操作必須在各自時間段內完成,其中出錯重發(fā)和非周期數據發(fā)送共用同一個時間段(需要進行動態(tài)決策)。應用層處理程序具體執(zhí)行過程如圖7所示,具體實現可以根據實際提供的服務進行調整。
圖7應用層處理程序執(zhí)行流程
3.2.2數據鏈路層程序設計
NCSF總線的數據鏈路層劃分成兩個子層:LLC(Logic Line Control,邏輯鏈路控制子層)和MAC(Media Access Control,介質訪問控制子層)。向上層提供服務是LLC子層的主要功能,它負責識別數據鏈路層的上層協議,然后對它們進行解析;控制對傳輸介質的訪問是MAC子層的主要功能,主要包括數據幀的封裝與卸裝,鏈路管理,幀尋址與識別,幀差錯控制等。
(1)LLC子層程序設計
LLC子層通過向應用層提供基本服務命令接口提供服務,包括通信服務命令接口和管理服務命令接口。應用層調用通信服務命令接口收發(fā)APDU;調用管理服務命令接口進行差錯控制、數據安全管理、時鐘管理以及通信管理。
基本服務命令接口對應用層是透明的,LLC子層需要對應用層調用的接口函數和傳遞的APDU進行解析,這一過程可以通過維護對象字典來實現。對象字典為LLC子層服務和數據管理提供對應的MAC子層解釋和定義,應包括服務對象字典和協議對象字典。LLC子層程序通過查詢對象字典,完成應用層數據通信任務到MAC子層數據通信任務間的轉換。
評論