《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于SoPC技術的1553B總線接口卡設計與實現
NI-LabVIEW 2025
基于SoPC技術的1553B總線接口卡設計與實現
來源:電子技術應用2011年第7期
黃 偉1,吳華興1,魯 藝1, 周 雷2
1.空軍工程大學 工程學院,陜西 西安710038; 2.解放軍93846部隊,陜西 西安710038
摘要: 提出了一種1553B總線接口卡設計方案。通過采用SoPC技術、基于Verilog的自定義IP模塊設計以及基于郵槽寄存器的雙向中斷設計,快速構建了系統硬件。在NIOS II開發環境下采用C語言開發了系統核心軟件—1553B協議處理程序,給出了BC模塊的設計實例。結合系統驅動、API和實際應用程序開發對系統進行了多功能測試,驗證了其可行性。
關鍵詞: SoPC 1553B 中斷 協議處理
中圖分類號: TP336
文獻標識碼: A
文章編號: 0258-7998(2011)07-0057-04
Design and implementation of 1553B bus interface board based on SoPC
Huang Wei1,Wu Huaxing1,Lu Yi1,Zhou Lei2
1.The Engineering Institute of AFEU, Xi′an 710038, China; 2.PLA Unit 93846, Xi′an 710038,China;
Abstract: This paper proposes a design method of 1553B bus interface board. The hardware is quickly built by SoPC technology, Verilog-based design of custom IP module, and design of bidirectional interrupt via MailSlot registers. The core software of 1553B protocol handler program is developed with C language in NIOS II IDE, and a BC module design instance is proposed. System’s multi functions and feasibility are demonstrated, with designs of system driver, API and practical applications.
Key words : 1553B;SoPC;interrupt;protocol handler


    MIL-STD-1553B總線作為一種高可靠性的軍用數據傳輸總線,在國內外軍事領域的應用極為廣泛,許多航空航天設備中都包含大量的1553B總線接口電路,通過1553B總線進行系統設備間的主要通信。目前,國內自主開發的1553B總線接口電路設計大多基于進口協議芯片(如采用DDC公司的BU-61580[1],或基于HOLT公司的HI-6110[2]),需大量的輔助電路完成緩沖及接口功能,導致設計成本較高。如果完全自主開發1553B協議模塊,可采用基于NIOS II處理器和SoPC技術的設計方案,如參考文獻[3]提出了一種基于SoPC的1553B總線通用接口設計方案,并進行了初步設計,但該方案僅通過串口進行了簡單的功能測試,未對1553B總線協議下的BC/RT/BM多功能處理進行詳細描述,也沒有真正應用于PCI總線或其他總線平臺。因此,為了設計一款低成本、多功能、真正實用的1553B總線接口卡,本文提出了一種基于SoPC技術的1553B總線接口卡設計與實現方法,并結合實際應用對其進行了系統多功能測試。
1 系統結構
    系統硬件為一塊PCI板卡,核心為FPGA,系統結構框圖如圖1所示。其中,1553B總線的耦合方式采用變壓器耦合(采用PM-DB2725),總線收發信號需經電平轉換器(采用HI-1567)轉換。FPGA采用SoPC技術,通過AVALON總線連接CPU、存儲器、定時器等設備,以PCI總線和中斷方式與主機通信,形成一個嵌入式微計算機系統。FPGA內部主要包括總線編解碼模塊、協議處理模塊、配置模塊、PCI總線接口模塊等。

2 系統硬件設計關鍵技術
    1553B總線接口卡的硬件設計采用了Altera公司的Quartus II9.0開發環境[4],以下介紹其關鍵內容。
2.1 FPGA內的SoPC設計

 


    系統的FPGA芯片為Altera的EP3C16Q240,本身具有可編程、可裁剪等特點,通過采用SoPC技術并應用Quartus開發環境下提供的可裁減IP模塊,可在FPGA內快速構建一個嵌入式微計算機系統,以實現系統的1553B接口功能。實際系統中應用的IP模塊包括:NIOSII CPU、Timer、SDRAM、PCI-Complier、Onchip-Mem、FIFO,以及用于軟件調試及程序引導的JTAG-UART、EPCS-Control等。
    由于FPGA芯片內部資源有限,如何充分利用現有資源實現系統功能是SoPC設計的關鍵之一。解決的方法是根據需求精簡配置IP模塊。例如,FIFO和Onchip-Mem共用芯片內有限的嵌入式存儲單元,通過權衡二者的空間分配,即保證了編解碼緩存的容量和總線吞吐能力,又保證了雙口RAM有足夠的配置空間。又如將PCI-Complier配置為32 bit從模式,可有效地節省芯片的資源。
    系統通過采用SoPC技術定義必要的模塊及合理分配芯片資源,在實現系統功能的同時加快了開發周期,提升了系統性能。
2.2 總線編解碼模塊的設計
    由于1553B總線采用曼徹斯特Ⅱ編碼方式,而Quartus開發環境系統未提供相關IP模塊,故設計了針對曼徹斯特II的總線編解碼模塊。該自定義IP模塊基于Verilog語言設計,主要完成1553B總線信號同步頭的提取、串并轉換、奇偶校驗及訪問FIFO等功能,實現總線信號的編碼和解碼。圖2所示為從1553B總線讀取信號波形進行解碼的過程,這也是該模塊的主要設計難點。

    解碼過程中,同步頭檢測的設計難點是如何根據不同的跳變斜率和數據有效情況判斷同步頭。根據1553B總線信號編碼方式的特點,同步頭在3 μs時間范圍的中間時刻存在電平跳變,根據其跳變方式的不同,可區分是命令/狀態字還是數據字。考慮到總線信號經遠距離傳輸和變壓器轉換后,同步頭跳變斜率的上升或下降時間發生了一定變化,此外也必須驗證同步頭后的數據位是否有效,因此,編制Verilog程序時必須考慮到同步頭跳變斜率范圍和數據有效情況,如以下語句所示:
    sync_csw<='1' when
    (sftreg(2to21)="1111111111****0000000000"
      and data_edge='1') else '0';
其中,sync_csw='1' 代表已正確找到命令/狀態字的同步頭,data_edge='1'代表同步頭后第一位數據有效,1111111111****0000000000代表由8 MHz時鐘同步采樣的同步頭跳變斜率允許在0.5 &mu;s范圍內。
    此外,總線編解碼模塊設計還包括串行到并行的轉換、并行到串行的轉換、奇偶校驗程序以及讀寫FIFO等。通過將總線編解碼模塊定義成符合AVALON總線接口標準的自定義外設,可將其連接到系統內的AVALON總線上,實現其與系統內其他設備的信息交換,從而保證該模塊的相對獨立性、可重用性和可移植性,便于系統的更新升級。
2.3 雙向中斷的設計與實現
    1553B總線接口卡的雙向中斷處理功能主要通過PCI總線接口模塊實現,包括兩類中斷:一類方向為主機至板卡,是由主機PCI總線控制產生,需要板內NIOSII CPU響應的中斷,稱為向內中斷;另一類方向為板卡至主機,是由1553B總線接口卡控制產生,通過PCI中斷輸出,需要主機CPU響應的中斷,稱為向外中斷。如圖3所示。

    這兩類中斷均通過編譯器PCI-Complier提供的郵槽寄存器(MailSlot)實現,編譯器本身提供了占用PCI配置空間的兩組郵槽寄存器MailSlot1 和MailSlot2,每組含8個寄存器,均為單向訪問方式。MailSlot1僅NIOSII CPU可以訪問,在NIOSII CPU向其寫入數據后,產生PCI中斷,由主機CPU響應,調用板卡驅動程序的中斷服務子程序,且主機只能讀取該組寄存器的數據;MailSlot2僅主機CPU能訪問,在主機CPU向其寫入數據后,產生中斷,由NIOSII CPU響應,執行板內中斷服務程序,且NIOSII CPU只能讀取該組寄存器的數據。為實現雙向中斷,在硬件設計上應注意以下幾點:
    (1)在PCI-Complier配置向導界面中應打開Avalon CRA Port選項;
    (2)在PCI-Complier模塊與NIOSII CPU之間設置相應的中斷類型號;
    (3)PCI總線INTA管腳應具有較強的拉電流能力,可采用集電極開路或總線驅動芯片IDTQS386。
    通過基于郵槽寄存器的雙向中斷方式,把中斷的實現轉換成了對特定寄存器的讀寫操作,實現方式更加簡單,而且在產生中斷的同時,可以通過郵槽寄存器傳遞相關信息,如中斷類型、錯誤狀態和相關數據地址等?;诖耍?553B總線接口卡內,通過內中斷實現了對板卡運行狀態的管理以及對運行時BC和RT消息數據的插入或更換;通過外中斷實現了主機程序對消息的即時處理;此外,還結合中斷掩碼、中斷優先級、中斷日志列表等軟件技術大大增強了1553B接口卡的中斷處理功能。這也正是采用SoPC技術的優勢。
3 系統軟件設計
    1553B總線接口卡的軟件設計指的是板內的1553B協議處理程序設計,主要依托NIOS II9.0集成開發環境[5],采用C語言編寫。協議處理程序負責控制系統硬件,完成1553B總線協議的處理,使系統能工作在BC、RT、BM三種總線工作模式。系統硬件在加電后,將自動引導系統進入協議處理程序的main()入口函數,因此協議處理程序是系統的實際核心。
3.1 1553B協議處理程序總體設計
    協議處理程序主要包括4個主要模塊,如圖4所示。其中初始化模塊和運行處理模塊為main()函數調用的子函數:初始化模塊除了負責加電啟動時硬件的初始化配置,還包括在BC、RT、BM三種不同工作模式時分別進行的初始化;運行處理模塊負責管理系統工作狀態,并在系統進入運行狀態時調用當前工作方式對應的主循環函數。定時中斷處理函數負責BC消息幀的計時以及產生RT/BM消息的時間戳。向內中斷處理模塊負責響應來自外部主機的命令,它占用郵槽寄存器組MailSlot2的兩個寄存器,其中一個寄存器負責接收主機的運行控制命令,并由命令中斷處理子模塊,另外一個寄存器負責響應主機的BC消息更新請求或RT消息讀寫請求,并調用對應的BC或RT中斷子模塊來處理。

    圖5反映了協議處理程序的主要工作流程。系統加電后,進入協議處理程序的main()函數。首先調用啟動初始化模塊,注冊定時器,使能通過郵槽寄存器產生的向外中斷,注冊向內中斷處理服務子程序,初始化Onchip-Mem內的配置寄存器和SDRAM內的全局變量;然后調用usleep()休眠函數,等待向內中斷,直到系統收到向內中斷,并且從郵槽寄存器中讀到初始化命令時,系統將根據Onchip-Mem內的配置寄存器信息(由主機通過PCI內存空間提前寫入),配置板卡為BC、RT、BM三種模式之一,并執行相應的初始化模塊,配置存儲器空間,成功后板卡進入暫停狀態,否則回到未初始化狀態,繼續等待向內中斷;系統在暫停狀態時如果收到向內中斷和來自郵槽寄存器的運行命令,則進入板卡的正常工作循環,根據板卡的BC、RT或BM工作模式反復執行相應的主循環模塊;循環運行期間如果收到向內中斷和來自郵槽寄存器的停止命令,則在處理完當前消息塊后返回暫停狀態,等待下一運行或初始化命令。

    協議處理程序采用的工作流程,使1553B總線接口卡可以同時支持BC、RT、BM三種工作模式,并在三種模式間任意切換,無需硬件復位重啟,減少了系統啟動和切換的延時。限于篇幅,本文僅以BC工作模式為例介紹1553B總線接口卡軟件的具體設計方法。
3.2 BC模塊設計
    BC模塊指的是1553B總線接口卡BC工作BC模式時協議處理程序調用的子功能模塊,主要包括BC初始化模塊、BC主循環模塊和BC中斷處理模塊。
    BC初始化模塊功能包括:復位配置寄存器和全局變量;將Onchip-Mem內的前64 B存儲單位配置成32個16字的寄存器,并按表1定義初始化相關寄存器,賦予默認值;在SDRAM和Onchip-Mem內配置BC消息數據區和中斷日志緩沖區,最多支持4 096個BC消息塊和1 024個中斷。需要注意的是,外部主機必須在板卡初始化完成后和運行前(即系統處于暫停狀態時)對相關寄存器和數據區進行配置,如自定義消息幀周期、中斷屏蔽值,以及加載BC消息數據。

    BC消息數據區的基本單元是數據結構體BcMsgBlock,如下列代碼所示:
    struct  BcMsgBlock  //BC基本消息塊
    { unsigned short m_Control;//控制字
    unsigned short m_MsgStatus;//消息狀態
    unsigned short m_Command1;//命令字1
    unsigned short m_Command2;//命令字2
    unsigned short m_Status1;//狀態字1
    unsigned short m_Status2;//狀態字2
    unsigned short m_Gap_Time;//消息間隔
    unsigned short m_NextMsg;//下一消息
    unsigned m_Data[32]; }
    在控制字內可以定義消息塊的重試次數、A/B總線、中斷使能和控制碼等,從而加入許多BC消息處理功能。每處理完畢一個消息塊,在其消息狀態字內會保存有當前消息執行結果和錯誤類型,可供主機查詢和進一步處理。
    BC主循環模塊在板卡進入運行狀態時被調用,負責按1553B總線協議實現BC功能,其主要流程如圖6所示。

    BC中斷處理模塊的功能相對簡單,主要負責響應外部主機通過MailSlot2中另一個郵槽寄存器發來的BC消息更新請求,將指定的BcMsgBlock數據寫入對應的存儲空間。由于是通過中斷服務子程序調用,它使得系統在暫停和運行狀態時均可以對某個數據塊進行更新,從而增強了系統組織BC消息幀的靈活性。
4 系統應用實例
    通過上述系統硬件和軟件的設計,1553B總線接口卡構成了一個完整的嵌入式微計算機系統,可以完成復雜的BC/RT/BM功能。但是接口卡本身不能獨立起作用,需要外部主機提供驅動和應用程序接口(即API),才能用于第三方開發。
    因此,為了將1553B總線接口卡應用于實際系統中,在WinDriver和Visual C++開發環境下開發了系統的驅動程序和API。仍以板卡的BC模式為例,它的API封裝在DLL中,主要包括以下有關函數:
    bool InitBC_Config();//首先調用,使用默認BC設置
    void SetBC_IntMask(WORD mask);//設置中斷屏蔽值
    void SetBC_FirstMsg(int i);//設置起始消息索引
    void SetBC_ValidMsgCnts(int n);//設置有效消息個數
    void SetBC_Broadcast(bool enable);//使能廣播
    void SetBC_IntLogList(bool enable);//使能中斷日志列表
    void SetBCMsgFrmPeriod(bool enable, int frmTimeUs);
    void SetBC_IntCallback(void* fun);//設置中斷回調函數
    int GetBC_CurrMsgIndex();//獲取當前正執行消息索引
    WORD GetBC_CurrIntInfo();//獲取當前中斷信息
    int LoadBCMsgBlk(int i, BcMsgBlk* pMsg);//加載消息
    bool ReadBCMsgBlk(int i, BcMsgBlk* pMsg);//讀消息
    bool StartBC();//啟動BC
    bool StopBC();//停止BC
    在1553B總線接口卡驅動和API的基礎之上,可以開發板卡的應用程序,用于各種基于1553B總線的系統之中。經實驗驗證了板卡完全可以按照1553B協議工作于BC模式,且功能也較全面,便于各種應用開發。
    目前,1553B總線接口卡已經應用到實際飛機航空電子系統測試設備和仿真設備之中,基于BC、RT和BM功能都進行了有關應用程序開發,充分驗證了其設計方案的 可行性。
    根據本文方法開發的1553B總線接口卡目前已經實現了BC、RT、BM三種總線功能的實際應用,相比其他同類設計有如下優點:
    (1)采用SOPC技術,使用開發環境提供大部分IP模塊,縮短了開發周期,自主開發1553B協議處理模塊,節省經濟成本;
    (2)多功能融合設計,根據需求可配置為BC、RT、BM三者之一,硬件電路具有通用性、可拓展性;
    (3)總線接口卡與主機之間的通信采用雙向中斷方式,避免了查詢方式帶來的CPU利用率低的弊端,增強了系統功能和靈活性;
    (4)以NIOSII CPU為核心,協議處理模塊基于C編寫,軟件可移植性好,系統軟件和API升級簡單,便于第三方應用開發。
    本文所述基于SoPC技術的1553B總線接口卡設計與實現方案,不僅對于類似的系統設計有借鑒意義,同時也具有良好的經濟效益和應用前景。
參考文獻
[1] 史國慶,高曉光.基于DSP的1553B總線接口卡設計與實現[J].計算機測量與控制,2005,13(12):1392-1393.
[2] 劉安,馮金富.基于NIOSII處理器的MIL-STD-1553B接口卡設計[J].電子技術應用,2008(10):138-141.
[3] 謝拴勤,史軍芳.基于SoPC的1553B總線通用接口設計[J].計算機測量與控制,2008,16(5):727-730.
[4] Altera Corporation.Quartus II help version 9.0[M].Altera Corporation,2009.
[5] Altera Corporation. NIOS II help version 9.0[M].Altera Corporation,2009.

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 国产激情一区二区三区在线观看 | 日本欧美一区二区三区在线观看 | 日韩伦理片网站 | 日韩免费视频播播 | 成年人网址在线观看 | 国产成人乱码一区二区三区 | 欧美怀孕色xxxxx | aaa国产一级毛片 | 色老头在线视频 | 天天躁夜夜躁狠狠躁2023 | 一个人看的www片免费中文 | 羞羞视频在线免费 | 精品亚洲综合在线第一区 | 天天曰天天射 | 国产亚洲欧美久久精品 | 视频一区日韩 | 亚洲美女高清aⅴ视频免费 亚洲美女福利 | 久热操 | 国产成人精品高清不卡在线 | 免费看一片 | 香蕉视视频 | 日韩黄色片在线观看 | 在线精品国产 | 午夜tv | 成人18在线观看 | 欧美日韩另类在线观看视频 | 精品国语国产在线对白 | 午夜男人影院 | 国产性大片黄在线观看在线放 | 全免费毛片在线播放 | 午夜爽爽性刺激一区二区视频 | 一级黄色免费 | 一个人在线看的免费视频 | 午夜片网站| 国产精品综合色区在线观看 | 国产精品国产三级在线高清观看 | 亚洲欧美中文v日韩v在线 | 免费视频日韩 | 国产精品久久久久9999高清 | 色婷婷成人网 | 日本精品一区二区 |