<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于SoC的NCSF總線(xiàn)系統的研究與設計術(shù)

基于SoC的NCSF總線(xiàn)系統的研究與設計術(shù)

作者: 時(shí)間:2016-12-21 來(lái)源:網(wǎng)絡(luò ) 收藏

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


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

3.2 FPGA上總線(xiàn)系統程序設計

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

3.2.1 應用層處理程序設計

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

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

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


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

3.2.2數據鏈路層程序設計

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

(1)LLC子層程序設計

LLC子層通過(guò)向應用層提供基本服務(wù)命令接口提供服務(wù),包括通信服務(wù)命令接口和管理服務(wù)命令接口。應用層調用通信服務(wù)命令接口收發(fā)APDU;調用管理服務(wù)命令接口進(jìn)行差錯控制、數據安全管理、時(shí)鐘管理以及通信管理。

基本服務(wù)命令接口對應用層是透明的,LLC子層需要對應用層調用的接口函數和傳遞的APDU進(jìn)行解析,這一過(guò)程可以通過(guò)維護對象字典來(lái)實(shí)現。對象字典為L(cháng)LC子層服務(wù)和數據管理提供對應的MAC子層解釋和定義,應包括服務(wù)對象字典和協(xié)議對象字典。LLC子層程序通過(guò)查詢(xún)對象字典,完成應用層數據通信任務(wù)到MAC子層數據通信任務(wù)間的轉換。



關(guān)鍵詞: SoCNCSF總線(xiàn)系

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>