《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于SoPC技術的1553B總線接口卡設計與實現(xiàn)
基于SoPC技術的1553B總線接口卡設計與實現(xiàn)
來源:電子技術應用2011年第7期
黃 偉1,,吳華興1,魯 藝1, 周 雷2
1.空軍工程大學 工程學院,陜西 西安710038,; 2.解放軍93846部隊,,陜西 西安710038
摘要: 提出了一種1553B總線接口卡設計方案,。通過采用SoPC技術,、基于Verilog的自定義IP模塊設計以及基于郵槽寄存器的雙向中斷設計,快速構建了系統(tǒng)硬件,。在NIOS II開發(fā)環(huán)境下采用C語言開發(fā)了系統(tǒng)核心軟件—1553B協(xié)議處理程序,,給出了BC模塊的設計實例。結合系統(tǒng)驅動,、API和實際應用程序開發(fā)對系統(tǒng)進行了多功能測試,,驗證了其可行性。
中圖分類號: 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總線作為一種高可靠性的軍用數(shù)據(jù)傳輸總線,,在國內外軍事領域的應用極為廣泛,,許多航空航天設備中都包含大量的1553B總線接口電路,通過1553B總線進行系統(tǒng)設備間的主要通信,。目前,,國內自主開發(fā)的1553B總線接口電路設計大多基于進口協(xié)議芯片(如采用DDC公司的BU-61580[1],或基于HOLT公司的HI-6110[2]),,需大量的輔助電路完成緩沖及接口功能,,導致設計成本較高。如果完全自主開發(fā)1553B協(xié)議模塊,,可采用基于NIOS II處理器和SoPC技術的設計方案,,如參考文獻[3]提出了一種基于SoPC的1553B總線通用接口設計方案,并進行了初步設計,,但該方案僅通過串口進行了簡單的功能測試,,未對1553B總線協(xié)議下的BC/RT/BM多功能處理進行詳細描述,也沒有真正應用于PCI總線或其他總線平臺,。因此,,為了設計一款低成本、多功能,、真正實用的1553B總線接口卡,,本文提出了一種基于SoPC技術的1553B總線接口卡設計與實現(xiàn)方法,并結合實際應用對其進行了系統(tǒng)多功能測試,。
1 系統(tǒng)結構
    系統(tǒng)硬件為一塊PCI板卡,,核心為FPGA,系統(tǒng)結構框圖如圖1所示,。其中,,1553B總線的耦合方式采用變壓器耦合(采用PM-DB2725),總線收發(fā)信號需經電平轉換器(采用HI-1567)轉換,。FPGA采用SoPC技術,,通過AVALON總線連接CPU、存儲器,、定時器等設備,,以PCI總線和中斷方式與主機通信,形成一個嵌入式微計算機系統(tǒng),。FPGA內部主要包括總線編解碼模塊,、協(xié)議處理模塊、配置模塊,、PCI總線接口模塊等,。

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

 


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

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

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

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

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

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

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