基于USB接口1553B總線設備檢測系統設計
發布時間:2008/6/16 0:00:00 訪問次數:607
1 引言
mil-std-1553b軍用總線標準,在軍事裝備,特別是飛機系統中得到了廣泛的應用,艦載系統中也正在逐步推廣。對于1553b總線傳輸信息的飛機系統,特別是由該總線網絡構成的綜合航火控系統、通信系統而言,系統時實監測與在線故障診斷均建立在信息錄取的前提下。為了方便錄取1553b總線上傳輸的信息就需要應用1553b總線到計算機標準接口轉換器,目前常用轉換器有1553b-pci、1553b-vxi等,但在工程實踐過程中,它們存在體積大、價格高、使用不方便等缺陷。相比而言,usb接口具有體積小、攜帶方便、熱插拔等特征,具有不可替代的優勢。
本文介紹的1553b設備檢測系統就是基于usb接口的。設計包含兩大部分:硬件設計和軟件設計。硬件設計主要實現1553b接口到usb接口的轉換;軟件設計主要是usb芯片固件開發、usb接口驅動、開發計算機測試1553b設備軟件。
2 硬件系統設計
本系統的硬件設計工作主要集中在1553b與usb總線接口的轉換設計。硬件系統分成三部分:1553b接口轉換電路、fpga譯碼電路和usb接口電路。
2.1 1553b接口轉換電路
目前,1553b接口芯片種類繁多,根據工程應用場合和實際需要,我們選用ddc公司bu-61580芯片。bu-61580芯片除了具有遠程終端(rt)功能外,還可以用作總線控制器(bc)、總線監控器(mt)。其內部功能極強,接口靈活、便于控制,有各種封裝形式和供電電壓供用戶選擇。
2.2 fpga譯碼電路
fpga作為現場可編程器件越來越廣泛地應用到工程設計中。利用fpga對系統中信號進行譯碼可避免由于開始硬件電路設計考慮不周造成的硬件設計錯誤,而且方便系統的以后的升級。本系統中,fpga通過1553b接口芯片讀取1553b總線上的數據并暫存在fpga內部ram中,然后通知usb接口芯片把數據讀出;同時,還要通過usb接口接收從pc下發的數據,重新打包,發送到1553b設備。
2.3 usb接口電路
usb接口控制芯片包含兩大類:一類是需要外置控制器的芯片,還有一類為內置控制器,如cypress公司的cy7c64613芯片。本系統選用philip公司的pdiusbd12芯片,需外置控制器的芯片。
pdiusbd12芯片是帶有并行總線和局部dma傳輸能力的全速usb接口器件。片內集成了高性能usb接口器件、sie、fifo存儲器、收發器以及電壓調整器等,可與任何外部微控制器/微處理器實現高速并行接口(2mb/s),完全能匹配1553b總線最高傳輸速率(1mb/s)[1]。usb 實現模塊的核心是pidusb12。外置控制器at89c52的p0口接pidusbd12的data0~data7,用來傳輸要交換的數據。p0 口所有引腳都要外接上拉電阻。pidusbd12的片選信號和復位信號由at89c52的p1.6與p1.7提供。at89c52 的p3.6與p3.7作為pidusbd12的寫讀控制端,at89c52和pidusbd12的ale相連,pidusbd12的掛起狀態和中斷控制都接高電平。 pidusb12的d+和d-加上+5v電源和地就構成了usb接口,從而能與計算機相連。
pdiusbd12與usb的連接通過1.5k上拉電阻將d+置為高實現,默認狀態不與vcc相連,可用softconnect技術通過at89c52發送專門的命令來實現該連接,允許at89c52在決定與usb建立連接之前完成初始化時序,usb總線連接可以重新初始化而不需要撥出電纜[2]。隨后usb設備識別和通信就要依靠固件程序和驅動程序了。
3 軟件設計
1553b設備測試軟件首先要實現usb接口與pc之間的通信,然后,再對設備進行性能檢測。因此,需要對usb芯片進行固件、pc驅動程序和測試程序設計。
3.1 usb固件設計
at89c52中的固化程序可采用c51 設計,主要功能是:控制pdiusbdl2接受usb驅動程序的請求;控制pdiusbdl2接受應用程序的控制指令;通過pdiusbdl2存儲數據并實時上傳pc機。pdiusbdl2的固件設計成完全的中斷驅動,當cpu處理前臺任務時usb的傳輸可在后臺進行,確保了最佳的傳輸速率和更好的軟件結構,簡化了編程和調試。單片機通過pdiusbdl2與主機通信的過程簡述如下::當pdiusbdl2接收到主機發來的令牌包后就給單片機發中斷,單片機進入中斷服務程序。它將數據從pdiusbd12的內部fifo取回到cpu存儲器并根據中斷寄存器判斷usb令牌包的類型從而建立正確的事件標志以通知主循環程序進行處理,主循環檢查事件標志并進入對應的子程序進行進一步的處理,固件程序流程如圖2所示。系統上電后,先檢測pdiusbd12,如檢測不成功則報錯,要使用者重插usb接口,再次檢測。檢測成功則根據pdiusbd12的中斷類型設定中斷標志位的值,再根據中斷位的值調用相應的功能子程序[3]。
在本設計中,功能子程序主要包括兩部分:
1)通過at89c52的p0端口從fpga接收1553b設備數據,重新打包,再經過p0端口寫入pc機;
2) 通過p0端口接收pc數據,重新打包,通過at89c52的p0端口從fpga寫入1553b設備。
3.2 驅動程序
完成驅動程序設計的方法一般有三種:基于ddk開發、基于windrive開發和基于drivestudi
1 引言
mil-std-1553b軍用總線標準,在軍事裝備,特別是飛機系統中得到了廣泛的應用,艦載系統中也正在逐步推廣。對于1553b總線傳輸信息的飛機系統,特別是由該總線網絡構成的綜合航火控系統、通信系統而言,系統時實監測與在線故障診斷均建立在信息錄取的前提下。為了方便錄取1553b總線上傳輸的信息就需要應用1553b總線到計算機標準接口轉換器,目前常用轉換器有1553b-pci、1553b-vxi等,但在工程實踐過程中,它們存在體積大、價格高、使用不方便等缺陷。相比而言,usb接口具有體積小、攜帶方便、熱插拔等特征,具有不可替代的優勢。
本文介紹的1553b設備檢測系統就是基于usb接口的。設計包含兩大部分:硬件設計和軟件設計。硬件設計主要實現1553b接口到usb接口的轉換;軟件設計主要是usb芯片固件開發、usb接口驅動、開發計算機測試1553b設備軟件。
2 硬件系統設計
本系統的硬件設計工作主要集中在1553b與usb總線接口的轉換設計。硬件系統分成三部分:1553b接口轉換電路、fpga譯碼電路和usb接口電路。
2.1 1553b接口轉換電路
目前,1553b接口芯片種類繁多,根據工程應用場合和實際需要,我們選用ddc公司bu-61580芯片。bu-61580芯片除了具有遠程終端(rt)功能外,還可以用作總線控制器(bc)、總線監控器(mt)。其內部功能極強,接口靈活、便于控制,有各種封裝形式和供電電壓供用戶選擇。
2.2 fpga譯碼電路
fpga作為現場可編程器件越來越廣泛地應用到工程設計中。利用fpga對系統中信號進行譯碼可避免由于開始硬件電路設計考慮不周造成的硬件設計錯誤,而且方便系統的以后的升級。本系統中,fpga通過1553b接口芯片讀取1553b總線上的數據并暫存在fpga內部ram中,然后通知usb接口芯片把數據讀出;同時,還要通過usb接口接收從pc下發的數據,重新打包,發送到1553b設備。
2.3 usb接口電路
usb接口控制芯片包含兩大類:一類是需要外置控制器的芯片,還有一類為內置控制器,如cypress公司的cy7c64613芯片。本系統選用philip公司的pdiusbd12芯片,需外置控制器的芯片。
pdiusbd12芯片是帶有并行總線和局部dma傳輸能力的全速usb接口器件。片內集成了高性能usb接口器件、sie、fifo存儲器、收發器以及電壓調整器等,可與任何外部微控制器/微處理器實現高速并行接口(2mb/s),完全能匹配1553b總線最高傳輸速率(1mb/s)[1]。usb 實現模塊的核心是pidusb12。外置控制器at89c52的p0口接pidusbd12的data0~data7,用來傳輸要交換的數據。p0 口所有引腳都要外接上拉電阻。pidusbd12的片選信號和復位信號由at89c52的p1.6與p1.7提供。at89c52 的p3.6與p3.7作為pidusbd12的寫讀控制端,at89c52和pidusbd12的ale相連,pidusbd12的掛起狀態和中斷控制都接高電平。 pidusb12的d+和d-加上+5v電源和地就構成了usb接口,從而能與計算機相連。
pdiusbd12與usb的連接通過1.5k上拉電阻將d+置為高實現,默認狀態不與vcc相連,可用softconnect技術通過at89c52發送專門的命令來實現該連接,允許at89c52在決定與usb建立連接之前完成初始化時序,usb總線連接可以重新初始化而不需要撥出電纜[2]。隨后usb設備識別和通信就要依靠固件程序和驅動程序了。
3 軟件設計
1553b設備測試軟件首先要實現usb接口與pc之間的通信,然后,再對設備進行性能檢測。因此,需要對usb芯片進行固件、pc驅動程序和測試程序設計。
3.1 usb固件設計
at89c52中的固化程序可采用c51 設計,主要功能是:控制pdiusbdl2接受usb驅動程序的請求;控制pdiusbdl2接受應用程序的控制指令;通過pdiusbdl2存儲數據并實時上傳pc機。pdiusbdl2的固件設計成完全的中斷驅動,當cpu處理前臺任務時usb的傳輸可在后臺進行,確保了最佳的傳輸速率和更好的軟件結構,簡化了編程和調試。單片機通過pdiusbdl2與主機通信的過程簡述如下::當pdiusbdl2接收到主機發來的令牌包后就給單片機發中斷,單片機進入中斷服務程序。它將數據從pdiusbd12的內部fifo取回到cpu存儲器并根據中斷寄存器判斷usb令牌包的類型從而建立正確的事件標志以通知主循環程序進行處理,主循環檢查事件標志并進入對應的子程序進行進一步的處理,固件程序流程如圖2所示。系統上電后,先檢測pdiusbd12,如檢測不成功則報錯,要使用者重插usb接口,再次檢測。檢測成功則根據pdiusbd12的中斷類型設定中斷標志位的值,再根據中斷位的值調用相應的功能子程序[3]。
在本設計中,功能子程序主要包括兩部分:
1)通過at89c52的p0端口從fpga接收1553b設備數據,重新打包,再經過p0端口寫入pc機;
2) 通過p0端口接收pc數據,重新打包,通過at89c52的p0端口從fpga寫入1553b設備。
3.2 驅動程序
完成驅動程序設計的方法一般有三種:基于ddk開發、基于windrive開發和基于drivestudi