基于NiosⅡ的1553B總線通訊模塊設計與開發
2.4 以太網接口設計
本文引用地址:http://www.104case.com/article/268250.htm以太網控制器選用DM9000A,芯片為48管腳的LQFP封裝,支持處理器接口以字節/字模式的I/O命令操作內部存儲器數據,集成10/100M帶有AUTO-MDIX的接收器,支持用于全雙工流控制的IEEE802.3x標準,提供IP/TCP/UDP校驗和生成以及校驗過程,可選的EEPROM配置。
DM9000A與控制器和RJ45連接器的連接如圖4所示。DM9000A與控制器有兩種數據總線寬度的連接方式,即8位/16位模式,論文選用16位操作模式。DM9000A通過TX+、TX-、RX+和RX- 4條線與自帶隔離變壓器的RJ45轉換器相連。RESET引腳為DM9000A的復位引腳,低電平有效;X1外接25 Hz時鐘頻率。

2.5 1553B接口設計
BU-61580與控制器的接口形式非常靈活,本文根據需求和資源情況選擇16位緩沖連接方式。為了提高本模塊的抗干擾性,論文采用變壓器耦合方式。BU-61580的外圍電路連接圖如圖5所示。

3 模塊軟件設計與開發
3.1 軟件結構設計
軟件結構層次由NiosII處理器系統硬件、設備驅動程序、HAL API、μC/OSII、LwIP協議棧、系統初始化和應用程序7部分組成,如圖6所示。

1)NiosII處理器系統硬件:模型的核心,包括在FPGA中實現的NiosII軟核處理器和硬件外設;2)設備驅動程序:管理以太網、1553B組件和其它外設的軟件函數;3)HAL API:硬件抽象層應用程序接口,對設備驅動程序提供標準化的接口,對外層提供類似于POSIX的API;4)μC /OSII:實時操作系統層,為LwIP協議棧、1553B任務和嵌入式Web任務提供多任務和任務間通訊服務;5)LwIP協議棧:通過套接字API為應用程序和應用系統初始化提供網絡服務;6)系統初始化:包括μC/OSII、LwIP協議棧和1553B組件初始化函數,也包括所有應用程序的任務、信號量、隊列和事件性標志等實時操作系統任務間通訊資源的創建;7)應用程序:最外一層是建立的各項應用任務。
應用程序工作過程如下:首先進行系統初始化,然后進入工作等待狀態。以太網任務等待客戶端通過以太網發來的數據包,當有數包到達時,經物理層處理后交于TCP/IP層處理。在TCP/IP協議層之上,建立了3個套接字接口來偵聽套接字連接:嵌入式Web端口、PING端口和1553B端口。對于1553B任務,根據客戶端不同的請求,將啟動不同的任務來完成相應的數據命令的發送或狀態的讀取。
3.2 基于μC/OSII的LwIP協議實現
輕量型IP(Light Weight IP,LwIP)協議是用于嵌入式系統開放源代碼的TCP/IP協議棧。LwIP在保持TCP協議主要功能的基礎上減少對RAM的占用,非常適合在嵌入式系統中使用。
LwIP協議棧在設計時就考慮了移植問題,把所有與硬件、OS和編譯器相關的部分獨立了出來,因此LwIP在μC/OSII上移植只需修改目錄下的文件即可。
3.3 1553B總線協議任務的實現
為方便對BU-61580芯片操作,開發了BU-61580的驅動程序。驅動程序包括BU-61580芯片的初始化函數、BC發送接收命令函數、BC發送發送命令函數、BC發送接收/發送命令函數、BC發送不帶數據字的方式命令函數和BC發送帶數據字的方式命令函數。
參考嵌入式Web服務器的實現方式,基于LwIP和μC/OSII建立了端口號為8000的1553B套字接口任務,流程如圖7所示。

首先建立1553B任務接口守護進程,創建TCP套接字,綁定端口,將TCP套接字轉換成偵聽套接字,進入循環結構,等待接受用戶的連接請求。當有客戶端請求連接端口8000時,調用套接字數據接收函數recv()將客戶端發送的數據讀取過來,將數據映射到定義的結構體變量alt_avalon_BU61580*bdev上;用請求解析函數int 1553B_request(alt_avalon BU61580*bdev)根據messagemode判斷需要采取什么操作方式:然后BU-61580的發送數據函數將數據內容寫到相應的寄存器或存儲器內,啟動BC發送;如果調用讀取數據函數,則將存儲器或寄存器地址傳遞給讀取函數,將讀取到的數據調用函數int 1553B_transmit(&bdev[i],i)經以太網打包后發送給客戶端。
tcp/ip相關文章:tcp/ip是什么
通信相關文章:通信原理
存儲器相關文章:存儲器原理
評論