新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于SoC的NCSF總線系統的研究與設計術

        基于SoC的NCSF總線系統的研究與設計術

        作者: 時間:2016-12-21 來源:網絡 收藏

        如圖6所示。其中命令函數是用戶層行規為數控系統軟件提供的應用接口,數控系統軟件通過調用命令函數封裝命令數據結構并寫數據到命令數據結構數組。每個函數根據自己的功能將數據寫人數組不同的位置,具體內存地址為基地址加偏移地址。行規接口程序主要工作包括:讀取命令數據結構數組中的數據并映射到PIC的輸出緩存中;讀取PCI輸入緩存中的數據并映射到應答數據結構數組中。由于NCSF總線支持集總幀(一個大的數據幀,里面包含所有從站的數據,適用于主從環形總線拓撲結構)和非集總幀報文,因此一次函數執行將讀寫整個數組,即一個通訊周期內所需要發送的周期性數據和非周期性數據;所有的安全性檢查、出錯重傳、時鐘同步、PCI內存與從站地址的映射等控制功能完全由FPGA部分實現。


        圖6行規接口程序數據流向程序間的數據流向

        3.2 FPGA上總線系統程序設計

        FPGA上實現部分主要完成站點初始化、從站信息搜集、拓撲判斷、數據收發等工作。其中站點初始化、從站信息搜集、拓撲判斷工作通常只在FPGA上電時執行,除非出現通信故障需要重新初始化;數據收發以及時鐘同步等過程則要以中斷的形式周期執行。當MicroBlaze處理器接收到時鐘計數器的脈沖信號時,將調用應用層程序處理中斷即開始進行周期通信,主要工作包括數據的收發、狀態機維護、安全性檢查、出錯重傳、地址映射、時鐘同步等。

        3.2.1 應用層處理程序設計

        應用層程序可處于不同的運行狀態,如初始態、就緒態、異步連接態、同步連接態、連接釋放態、故障態、結束態等,程序根據所處狀態提供不同的傳輸服務,應用層服務需要調用數據鏈路層提供的基本服務命令接口實現。

        當處理器接收到時鐘脈沖信號開始進行中斷處理時應用層程序處于就緒狀態,之后程序會參照從站的反饋信息進入不同狀態。該程序的主要工作包括:讀取PCI接口中命令數據結構數組的映射數據,寫從站的應答信息到PCI的應答數據結構數組的映射內存中。應用層與數據鏈路層的信息交換通過傳輸APDU進行。APDU由用戶數據負載和控制信息組成,用戶數據負載存儲用戶層行規數據,控制信息用來描述APDU屬性。APDU控制信息數據結構設計如下,具體實現可以根據實際應用進行調整。

        應用層處理程序首先讀取PCI緩沖區映射的命令數據結構數組并進行掃描,分析命令數據結構中的命令分組號和組內命令確定APDU控制信息,然后將命令數據結構數組封裝成APDU數組,這一過程可以通過維護命令數據結構到APDU控制信息的映射表進行簡化。下一步調用數據鏈路層基本服務命令接口發送APDU數組中的周期數據,接著檢查發送狀態進行差錯控制、出錯重傳或發送非周期數據。最后時鐘同步。每個通信周期都劃分為若干個階段執行,上述各操作必須在各自時間段內完成,其中出錯重發和非周期數據發送共用同一個時間段(需要進行動態決策)。應用層處理程序具體執行過程如圖7所示,具體實現可以根據實際提供的服務進行調整。


        圖7應用層處理程序執行流程

        3.2.2數據鏈路層程序設計

        NCSF總線的數據鏈路層劃分成兩個子層:LLC(Logic Line Control,邏輯鏈路控制子層)和MAC(Media Access Control,介質訪問控制子層)。向上層提供服務是LLC子層的主要功能,它負責識別數據鏈路層的上層協議,然后對它們進行解析;控制對傳輸介質的訪問是MAC子層的主要功能,主要包括數據幀的封裝與卸裝,鏈路管理,幀尋址與識別,幀差錯控制等。

        (1)LLC子層程序設計

        LLC子層通過向應用層提供基本服務命令接口提供服務,包括通信服務命令接口和管理服務命令接口。應用層調用通信服務命令接口收發APDU;調用管理服務命令接口進行差錯控制、數據安全管理、時鐘管理以及通信管理。

        基本服務命令接口對應用層是透明的,LLC子層需要對應用層調用的接口函數和傳遞的APDU進行解析,這一過程可以通過維護對象字典來實現。對象字典為LLC子層服務和數據管理提供對應的MAC子層解釋和定義,應包括服務對象字典和協議對象字典。LLC子層程序通過查詢對象字典,完成應用層數據通信任務到MAC子層數據通信任務間的轉換。



        關鍵詞: SoCNCSF總線系

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 华亭县| 盘山县| 上高县| 康乐县| 焦作市| 奈曼旗| 宣汉县| 临泽县| 西吉县| 阿拉尔市| 简阳市| 岫岩| 惠水县| 博罗县| 德江县| 彭泽县| 根河市| 乐都县| 肇庆市| 奉化市| 隆德县| 孟州市| 汾西县| 无为县| 清水县| 邵武市| 府谷县| 潍坊市| 富平县| 乐清市| 什邡市| 日土县| 长春市| 新邵县| 康乐县| 沾益县| 剑河县| 年辖:市辖区| 磐安县| 吉水县| 平阳县|