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