基于PCI局部總線的1553B總線接口卡設(shè)計(jì)
摘要:根據(jù)1553B數(shù)據(jù)總線協(xié)議及其接口技術(shù)要求,設(shè)計(jì)了一種基于PCI局部總線的1553B總線接口卡。系統(tǒng)使用PLX公司的PCI9052和DDC公司的1553B協(xié)議芯片BU-61580,通過(guò)FPGA芯片EP1C12B進(jìn)行PCI協(xié)議和1553B協(xié)議的轉(zhuǎn)換,使用DSP控制器TMS320F2812作為下位機(jī)的主控單元,并編制了接口卡驅(qū)動(dòng)程序,實(shí)現(xiàn)了1553B總線和PCI總線的轉(zhuǎn)換。
關(guān)鍵詞:PCI局部總線;1553B總線;總線接口卡;數(shù)據(jù)總線協(xié)議
在航電系統(tǒng)的研制初期,通常要先在地面以微型計(jì)算機(jī)為基礎(chǔ)做各種仿真實(shí)驗(yàn)。這使得用于各仿真系統(tǒng)的接口板的研制和革新工作便同時(shí)成為航電系統(tǒng)發(fā)展的一個(gè)重點(diǎn)。接口板的主要任務(wù)是實(shí)現(xiàn)航電系統(tǒng)的數(shù)據(jù)總線與PC機(jī)的數(shù)據(jù)總線之間的通信功能,這使PC機(jī)可以模擬航電系統(tǒng)數(shù)據(jù)總線上所掛接的實(shí)際子系統(tǒng)。PCI(Peripheral Component Interconnect)總線,即外圍部件互連總線,是一種先進(jìn)的高性能32/64位地址數(shù)據(jù)復(fù)用局部總線,可同時(shí)支持多組外圍設(shè)備。PCI局部總線不受制于處理器,為中央處理器及調(diào)整外圍設(shè)備提供一座橋梁,更可作為總線之間的交通指揮員,提高數(shù)據(jù)吞吐量,具有支持線性突發(fā)傳輸、極小的存取延誤、采用總線主控和同步操作、兼容性強(qiáng)等優(yōu)點(diǎn)。本文設(shè)計(jì)了一種基于PCI總線的接口板,其服務(wù)對(duì)象是MIL-STD-1553B總線,并編寫(xiě)其在Windows下的驅(qū)動(dòng)程序。
1 1553B總線協(xié)議
MIL-STD-1553B是一個(gè)關(guān)于數(shù)據(jù)總線電器特性和協(xié)議規(guī)范的軍事標(biāo)準(zhǔn),這個(gè)標(biāo)準(zhǔn)規(guī)定了飛機(jī)內(nèi)部數(shù)字式的命令/響應(yīng)時(shí)分制多路數(shù)據(jù)總線的技術(shù)要求,也規(guī)定了多路數(shù)據(jù)總線的操作方式和總線上的信息流的格式以及電氣要求。其作用是提供一個(gè)在不同系統(tǒng)之間的傳輸數(shù)據(jù)和信息的媒介。
1553B數(shù)據(jù)總線以異步、命令/響應(yīng)方式執(zhí)行數(shù)據(jù)信息的傳輸,是一種計(jì)雙工通信方式,它有3種終端類(lèi)型:總線控制器(BC)、遠(yuǎn)程終端(RT)和總線監(jiān)視器(BM)。BC是總線上惟一被安排為執(zhí)行建立和啟動(dòng)數(shù)據(jù)傳輸任務(wù)的終端,BC控制數(shù)據(jù)總線上所有數(shù)據(jù)信息的傳輸,任何時(shí)候總線上只有一個(gè)BC。RT是用戶(hù)子系統(tǒng)到數(shù)據(jù)總線上的接口,它在BC的控制下提取數(shù)據(jù)或吸收數(shù)據(jù)。MT“監(jiān)控”總線上的信息傳輸,以完成對(duì)總線上的數(shù)據(jù)源進(jìn)行記錄和分析,但它本身不參與總線的通信。各終端之間信息傳輸方式有:BC到RT,RT到BC,RT到RT,廣播方式和系統(tǒng)控制方式。1553B數(shù)據(jù)總線上的信息流由消息組成,一個(gè)完整的消息包括命令字、數(shù)據(jù)字和狀態(tài)字3種類(lèi)型。每個(gè)字的字長(zhǎng)為20 b,其前3位為同步字頭,有效信息位是16位,最后一位是奇偶校驗(yàn)位,采用奇校驗(yàn),消息字采用曼徹斯特Ⅱ型碼調(diào)制信號(hào),所有消息格式都是基于前面所述的3種字類(lèi)型。
2 系統(tǒng)設(shè)計(jì)方案
系統(tǒng)設(shè)計(jì)分為2個(gè)部分:硬件電路的設(shè)計(jì)和軟件驅(qū)動(dòng)程序及應(yīng)用程序的設(shè)計(jì)。
2.1 系統(tǒng)硬件設(shè)計(jì)
系統(tǒng)完整的硬件電路結(jié)構(gòu)如圖1所示,主要包括1553B總線接口模塊、PCI總線接口模塊和邏輯控制模塊。系統(tǒng)設(shè)計(jì)主要實(shí)現(xiàn)1553B總線和PCI總線之間的通信,因?yàn)樵?553B總線上傳輸?shù)氖请p極性差分信號(hào),所以要對(duì)發(fā)送或接收的信號(hào)進(jìn)行電平轉(zhuǎn)換和相應(yīng)的調(diào)制解調(diào),1553B總線接口模塊即用來(lái)完成數(shù)據(jù)的組織和編碼或解碼。PCI總線接口模塊完成接口卡與上位機(jī)的通信。雙端口RAM作為2個(gè)模塊的數(shù)據(jù)中繼,邏輯控制模塊則將這2個(gè)模塊連接成為一個(gè)系統(tǒng)。上位機(jī)通過(guò)PCI總線接口模塊將欲發(fā)送的數(shù)據(jù)存入雙端口RAM中,邏輯控制模塊根據(jù)通信協(xié)議將數(shù)據(jù)送到1553B總線接口模塊,1553B總線接口模塊將此數(shù)據(jù)進(jìn)行組織和編碼,發(fā)送到1553B主總線上;或1553B總線接口模塊從主總線上接收到數(shù)據(jù),進(jìn)行解碼并存放在存儲(chǔ)器。然后通知上位機(jī),上位機(jī)通過(guò)PCI總線接口模塊從存儲(chǔ)器中取出數(shù)據(jù)以及本次1553B總線操作的狀態(tài)信息。
2.1.1 1553B總線接口模塊設(shè)計(jì)
1553B總線接口模塊主要包括1553B協(xié)議芯片、隔離變壓器和時(shí)鐘晶振。1553B協(xié)議芯片采用DDC公司的BU-61580,芯片包含2個(gè)低功耗的雙端收發(fā)器、協(xié)議邏輯、存儲(chǔ)器管理邏輯、處理器接口邏輯及4K×16 b內(nèi)置共享靜態(tài)RAM以及直接面向主處理器的緩存接口組成,最多可擴(kuò)展64K×16 b的外部RAM。協(xié)議芯片通過(guò)短截線與1553B主總線相連。而在協(xié)議芯片與短截線之間需要設(shè)置隔離變壓器,該隔離變壓器將1553B主總線與接口卡直流隔離,防止接口卡上產(chǎn)生的噪聲影響1553B主總線上的信號(hào)。
BU-61580功能上集成了BC/RT/BM一體化設(shè)計(jì),可以編程設(shè)置BU-61580的配置寄存器來(lái)設(shè)定系統(tǒng)的工作方式,例如本系統(tǒng)中,通過(guò)軟件編程BU-61580配置寄存器1的位15為邏輯“1”,位14為邏輯“0”,可使BU-61580工作于RT方式。內(nèi)存管理模式可選是BU-61580的RT的一大特點(diǎn)。為了下位機(jī)處理器可以方便的存取從給定地址接收有效的、完整的數(shù)據(jù)塊,保證為處理器提供最高程度的數(shù)據(jù)采樣一致連貫性,RT方式的內(nèi)存管理采用雙緩沖模式,該模式下可以有選擇地將接收的廣播消息分解為非廣播消息。具體實(shí)現(xiàn)方法是為每一個(gè)接收到的消息提供2個(gè)32位的數(shù)據(jù)字塊,一個(gè)為激活的,另一個(gè)為停止的。當(dāng)前命令結(jié)束后,BU-61580自動(dòng)切換該子地址的數(shù)據(jù)塊的激活區(qū)域與停止區(qū)域,這樣,當(dāng)向同一子地址發(fā)送命令時(shí),如果數(shù)據(jù)有效并且雙緩沖區(qū)允許,數(shù)據(jù)會(huì)保存到另一個(gè)數(shù)據(jù)塊中,而不會(huì)使上一次的數(shù)據(jù)被覆蓋。
與下位機(jī)連接方面,BU-61580的接口配置采用16位緩沖模式,它向下位機(jī)提供了一個(gè)直接共享RAM接口。在該模式下,BU-61580的數(shù)據(jù)、地址總線與主機(jī)的總線地址隔離,并且BU-61580的尋址空間限制在其內(nèi)部RAM4K字的范圍內(nèi)。
2.1.2 邏輯控制模塊設(shè)計(jì)
PCI總線接口模塊與1553B總線接口模塊之間的邏輯控制電路通過(guò)可編程邏輯器件和DSP實(shí)現(xiàn)??删幊踢壿嬈骷捎昧薃ltera公司的EP1C 12B芯片,其主要實(shí)現(xiàn)地址譯碼、數(shù)據(jù)緩存、邏輯控制、握手連接和與BU-61580的協(xié)議轉(zhuǎn)換等功能。EP1C12B芯片內(nèi)部的RAM資源作為雙端口RAM和BU-61580之間的數(shù)據(jù)通道。下位機(jī)主控單元DSP控制器采用TI公司的TMS320F2812,用于控制EP1C12B完成1553B總線接口模塊對(duì)雙端口RAM的數(shù)據(jù)吞吐。上位機(jī)對(duì)1553B協(xié)議芯片進(jìn)行操作時(shí),相應(yīng)的數(shù)據(jù)信號(hào)、地址信號(hào)和控制信號(hào)通過(guò)PCI總線發(fā)送到雙口RAM中。DSP控制FPGA從雙口RAM中取出該地址信號(hào)和控制信號(hào)進(jìn)行譯碼,產(chǎn)生對(duì)應(yīng)的地址信號(hào)以及控制信號(hào)送到BU-61580。如果操作是向1553B主總線發(fā)送數(shù)據(jù),則同時(shí)將數(shù)據(jù)信號(hào)送到BU-61580的數(shù)據(jù)線。一次讀寫(xiě)操作結(jié)束時(shí),BU-61580將輸入FPGA的READY信號(hào)拉低,通知FPGA讀寫(xiě)操作結(jié)束。如果有中斷產(chǎn)生,則在輸入FPGA的INT引腳上產(chǎn)生中斷波形(下降沿或低電平)。根據(jù)BU-61580輸入FPGA的中斷信號(hào)、握手信號(hào)或數(shù)據(jù)信號(hào)等,F(xiàn)PGA相應(yīng)產(chǎn)生上位機(jī)需要的中斷信號(hào)、握手信號(hào)、插入等待信號(hào)和數(shù)據(jù)信號(hào)等,送到PCI總線上。
2.1.3 PCI總線接口模塊
PCI總線接口模塊包括PCI協(xié)議芯片及其配置電路。PCI協(xié)議定義了嚴(yán)格的電氣特性和時(shí)序要求,其接口電路實(shí)現(xiàn)難度大,采用專(zhuān)用的PCI接口芯片,可以避開(kāi)復(fù)雜的PCI協(xié)議的細(xì)節(jié)設(shè)計(jì),大大縮短開(kāi)發(fā)周期。本系統(tǒng)選用的是PLX公司生產(chǎn)的PCI9052接口芯片作為PCI總線控制器,實(shí)現(xiàn)接口卡與PCI總線的橋接。
在進(jìn)行驅(qū)動(dòng)編寫(xiě)前,需要根據(jù)功能需求對(duì)PCI9052芯片進(jìn)行相應(yīng)的配置操作。PCI9052芯片有2類(lèi)寄存器:PCI配置寄存器和局部總線配置寄存器。PCI配置寄存器的內(nèi)容反映配置空間的情況,它的配置空間的內(nèi)容包括PCI設(shè)備號(hào)DID,制造商號(hào)VID、中斷號(hào)、設(shè)備類(lèi)型號(hào)、局部空問(wèn)基地址、局部空間描述符、片選響應(yīng)以及局部響應(yīng)控制CNTRL等信號(hào),這些配置信息在芯片復(fù)位時(shí)通過(guò)串行E2PROM加載。PCI9052會(huì)自動(dòng)根據(jù)該E2PROM的狀態(tài)決定其內(nèi)部寄存器值。E2PROM中的配置信息的正確與否關(guān)系著整個(gè)板卡是否能夠正常工作。當(dāng)系統(tǒng)配置成功后,接口卡可被PC機(jī)識(shí)別,即可進(jìn)行驅(qū)動(dòng)程序的開(kāi)發(fā)。
2.2 系統(tǒng)軟件設(shè)計(jì)
2.2.1 驅(qū)動(dòng)程序設(shè)計(jì)
設(shè)備驅(qū)動(dòng)程序提供連接到計(jì)算機(jī)的硬件的軟件接口,所要完成的任務(wù)是鏈接應(yīng)用層和硬件層,使操作系統(tǒng)識(shí)別具體硬件,并使用硬件資源。微軟公司提供了專(zhuān)門(mén)的驅(qū)動(dòng)程序開(kāi)發(fā)工具包Windows XP DDK,但是DDK開(kāi)發(fā)難度較大,周期長(zhǎng),不容易掌握,Numga公司的開(kāi)發(fā)工具Driv er Studio可以大大簡(jiǎn)化驅(qū)動(dòng)程序的開(kāi)發(fā)過(guò)程,它制作的類(lèi)庫(kù)封裝了DDK的函數(shù),完全兼容所有的DDK函數(shù),它封裝了比較底層的繁復(fù)操作,減少了對(duì)簡(jiǎn)單接口的復(fù)雜操作,專(zhuān)門(mén)提供了的開(kāi)發(fā)向?qū)izard與微軟的Visual C++緊密地集成,驅(qū)動(dòng)程序代碼框架只需要在DrivetWorks工具向?qū)С绦虻闹敢?,根?jù)硬件的具體參數(shù)填寫(xiě)必要步驟即可完成。另外,Driver Wizard還能生成專(zhuān)為特殊設(shè)備定制的代碼,比如PCI設(shè)備,ISA設(shè)備等。
驅(qū)動(dòng)程序的基本功能是完成設(shè)備的初始化、對(duì)端口的讀寫(xiě)操作、中斷的設(shè)備和響應(yīng)及中斷的調(diào)用,以及對(duì)寄存器和內(nèi)存的直接讀寫(xiě)。在Driver Studio生成的程序框架上,根據(jù)具體的要求添加新的類(lèi)對(duì)象和代碼,結(jié)合接口卡的特點(diǎn),編寫(xiě)一些特殊的驅(qū)動(dòng),在VC下編譯后即可得到所需的驅(qū)動(dòng)程序。
2.2.2 應(yīng)用程序設(shè)計(jì)
Windows系統(tǒng)為用戶(hù)提供了一些API函數(shù),用于向WDM結(jié)構(gòu)的驅(qū)動(dòng)程序發(fā)命令以及進(jìn)行數(shù)據(jù)交換,在內(nèi)核區(qū)存在各種與之相對(duì)應(yīng)的處理例程,見(jiàn)表1。
CreateFile用于獲得驅(qū)動(dòng)程序句柄,CloseHandle關(guān)閉驅(qū)動(dòng)程序,而其余函數(shù)用于應(yīng)用程序控制驅(qū)動(dòng)程序或者與驅(qū)動(dòng)程序交換數(shù)據(jù),其中Device Control函數(shù)完成讀取PCI配置空間內(nèi)容的功能。在WDM中實(shí)現(xiàn)輸入輸出處理可以通過(guò)KIoRange類(lèi)實(shí)現(xiàn)。應(yīng)用層通過(guò)DeviceloControl函數(shù)向設(shè)備句柄調(diào)用KIoRange類(lèi)的成員函數(shù),實(shí)現(xiàn)應(yīng)用層對(duì)I/O空間的處理。
應(yīng)用程序的流程如圖2所示。
3 結(jié)語(yǔ)
1553B作為一種高可靠性和穩(wěn)定性的數(shù)據(jù)總線已在軍事和工業(yè)領(lǐng)域得到越來(lái)越廣泛的應(yīng)用。本文設(shè)計(jì)了一種基于PCI總線的1553B總線接口卡,分別使用PCI9052和BU-61580作為PCI總線和1553B總線的協(xié)議芯片,使用FPGA進(jìn)行總線邏輯控制,提高了系統(tǒng)的集成度,驅(qū)動(dòng)程序方面,利用Driver Studio向?qū)沈?qū)動(dòng)程序的框架,極大簡(jiǎn)化了驅(qū)動(dòng)程序的編制。實(shí)驗(yàn)證明,本文設(shè)計(jì)的接口卡可以為電子設(shè)備提供符合1553B標(biāo)準(zhǔn)的接口,完成可靠的數(shù)據(jù)交換,工作穩(wěn)定,功能完善,多個(gè)板卡可組成一個(gè)1553B總線仿真測(cè)試系統(tǒng),通過(guò)仿真設(shè)備可用于模擬航電設(shè)備進(jìn)行仿真測(cè)試,對(duì)開(kāi)發(fā)1553B總線通信系統(tǒng)具有重要的現(xiàn)實(shí)意義和應(yīng)用前景。
c++相關(guān)文章:c++教程
評(píng)論