<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 1553B總線在嵌入式系統(tǒng)中的應(yīng)用

          1553B總線在嵌入式系統(tǒng)中的應(yīng)用

          作者: 時間:2007-03-09 來源:網(wǎng)絡(luò) 收藏
          作者Email: cai_yang@etang.com 1 介紹 MIL-STD-1553是為數(shù)據(jù)總線定義的軍方標準。這種數(shù)據(jù)總線被用來為各種的系統(tǒng)之間的數(shù)據(jù)和信息的交換提供媒介,它類似“局域網(wǎng)或者LAN”。 1950年至60年代中,航空電子學是簡單、獨立的系統(tǒng),航空、通信、飛行控制和顯示器由模擬系統(tǒng)構(gòu)成;信號主要由模擬電壓、同-異步信號和接觸式開關(guān)構(gòu)成。 MIL-STD-1553總線的傳輸速度為每秒1M比特,字的長度為20個比特,數(shù)據(jù)有效長度為16個比特,信息量最大長度為32個字,傳輸方式為半雙工方式,傳輸協(xié)議為命令/響應(yīng)方式,故障容錯有典型的雙冗余方式,第二條總線處于熱備份狀態(tài);信息格式有BC到RT、RT到BC、RT到RT、廣播方式和系統(tǒng)控制方式;能掛31個遠置終端,終端類型有總線控制器(BC)、遠置終端(RT)和總線監(jiān)聽器(BM);傳輸媒介為屏蔽雙絞線,MIL-STD-1553總線耦合方式有直接耦合和變壓器耦合。 2 硬件系統(tǒng) 本系統(tǒng)采用PCI總線接口,PCI橋芯片采用PLX公司的PCI9052。1553B總線芯片采用DDC61580,CPLD主要實現(xiàn)DDC61580和PCI9052之間的時序及邏輯控制。硬件框圖如圖1所示。 詳細的邏輯控制信號見CPLD邏輯部分。 2.1 PCI9052的主要特點 PCI9052是PLX技術(shù)公司為擴展適配板卡推出的能提供一種混合的高性能PCI總線目標(從)模式的接口芯片。該芯片可與多種局部總線相連,并且支持相對慢的局部總線在PCI總線上的突發(fā)傳送速率達到132MB/s。9052可編程配置直接與復用或非復用的8/16/32位局部總線相連,8位和16位模式便于ISA卡直接向PCI卡轉(zhuǎn)換。 PCI9052的內(nèi)部結(jié)構(gòu)中包含了一個獨立的ISA邏輯接口,通過這個邏輯接口可以完成由ISA到PCI的平滑轉(zhuǎn)換。它支持8位和16位數(shù)據(jù)寬度的ISA設(shè)備,該設(shè)備可以是內(nèi)存映射,也可以是I/O映射。先讀模式用于提高讀取數(shù)據(jù)的吞吐量。一旦ISA接口模式使能,PCI9052只執(zhí)行單個周期操作。特別指出的是,串行EEPROM必需使ISA接口模式使能。 可以使用兩種方法配置PCI9052用于ISA接口模式。方法一:燒寫串行EEPROM方法。使用燒寫器,將數(shù)據(jù)寫入串行EEPROM,參照PCI9052的DataSheet來寫入恰當?shù)臄?shù)據(jù)。需要注意的是,對于ISA模式,LRESET引腳必須始終為高電平,并確認MODE引腳置為0,處于非復用模式。 方法二:熱配置方法。從PCI總線通過PCI9052芯片來燒寫串行EEPROM。該方法需要注意的是,LRESET引腳的極性在ISA模式時由低變?yōu)楦撸⒋_認MODE引腳置為低。 當為ISA接口模式配置時必須注意以下幾點:(1)存取ISA接口引腳時要參照PCI9052引腳的C/ISA模式引腳圖來連線。(2)空間0分配給ISA接口的內(nèi)存存取。(3)空間1分配給ISA接口的I/O存取。(4)無論空間0的局部地址處于CS0#范圍還是空間1的局部地址處于CS1#范圍,ISA存取均有效。(5)標準的從周期可以使用空間2、空間3和串行EEPROM來存取。 2.2 DDC61580的主要特點 DDC61580具有以下特點: ● 全兼容MIL-STD-1553接口 ● 靈活的處理器/內(nèi)存接口 ● 標準的4K%26;#215;16RAM ● 自動BC重試 ● 可編程BC間隔時間 ● 靈活的RT數(shù)據(jù)緩沖區(qū) ● 可編程非法區(qū) ● 可選擇消息監(jiān)控 ● 支持同時RT/Monitor模式 下面將詳細介紹BC、RT以及MT模式的內(nèi)存組織,編程方法等。 2.3 BC模式操作 BC協(xié)議支持所有的MIL-STD-1553消息格式,通過編程BC控制字和命令字的T/R*位來確定消息格式。另外,BC控制字還允許選擇通道、自測試、重試、中斷以及狀態(tài)字掩碼等。BC模式內(nèi)存映射包含有8個固定的內(nèi)存位置,即堆棧指針A,B、消息計數(shù)器A,B、初始堆棧指針A,B和初始消息計數(shù)器A,B。在啟動消息幀之前,必須首先初始化堆棧指針和消息計數(shù)器。特別應(yīng)注意的是,BC消息塊最大是38個字,比如對于RT->RT傳輸,它包含32個數(shù)據(jù),1個控制字,2個命令字,1個LoopBack字和2個狀態(tài)字。 2.3.1 BC內(nèi)存管理 BC內(nèi)存管理如圖2所示。該圖說明了堆棧指針包含四個字的消息塊描述符,即塊狀態(tài)字,時間標志字,消息間隔時間和消息塊地址。塊狀態(tài)字包括消息狀態(tài)、完成、有效性及總線通道;時間標志字反映了當前消息起始和結(jié)束時時間標志寄存器的值,它可以編程為分辨率為2~64us/LSB(2的冪);消息間隔時間指的是當前消息的開始到下一條消息的開始之間的時間;消息塊地址提供了指向消息塊第一個字的指針。 2.3.2 BC編程 對于BC編程,首先要初始化相應(yīng)的寄存器以及堆棧指針、消息計數(shù)器;然后定義消息的控制字、命令字等;最后啟動BC。需要注意的是BC控制字不會在1553總線上傳輸。BC的消息格式通過編程BC控制字的最低3位來控制。如表1所示。 BC消息幀可以通過查詢和中斷來進行處理。如果采用查詢模式,那么可以查詢配置寄存器1、中斷狀態(tài)寄存器、堆棧指針和消息計數(shù)器寄存器。另外,每一條BC消息結(jié)束后堆棧指針加4,所以如果要讀取RT-To-BC的消息,我們應(yīng)該首先從堆棧指針A中讀取當前消息的堆棧指針,然后減4后來分別讀出塊狀態(tài)字、時間標志字、消息時間間隔和上一條消息的塊地址,最后從此塊地址讀出接收到的數(shù)據(jù)。在系統(tǒng)軟件處理中,我們應(yīng)盡量采用中斷方式。 表1 MIL-STD-1553消息格式 BIT2(MODE CODE) BIT1(BROADCAST) BIT0(RT-TO-RT) Message Format 0 0 0 BC-To-RT(if T/R*=0) or RT-To-BC(if T/R*=1) 0 0 1 RT-To-RT 0 1 0 Broadcast 0 1 1 RT-To-RTs(Broadcast) 1 0 0 Mode Code 1 0 1 Not Used 1 1 0 Broadcast Mode Code 1 1 1 Not Used 2.4 RT模式操作 RT,即遠程終端,它包含了所有MIL-STD-1553的格式,雙冗余模式編碼,內(nèi)部命令非法,內(nèi)部格式化的BIT字和錯誤檢測。RT的反映時間大約為4.8us。RT內(nèi)存管理包含單消息模式,循環(huán)緩沖區(qū)模式(支持批量數(shù)據(jù)傳輸)和雙緩沖區(qū)模式。通過使用雙緩沖區(qū),主機處理器很容易訪問最近接收到有效數(shù)據(jù)塊。對于發(fā)送、接收或廣播子地址,數(shù)據(jù)塊存儲緩沖區(qū)可以采用單緩沖、雙緩沖(兩個交替的數(shù)據(jù)塊)和循環(huán)緩沖區(qū)(可編程大小為128到8192個字)。在增強模式下,ACE提供RT子地址雙緩沖區(qū),RT子地址雙緩沖區(qū)模式給指定的子地址分配了兩個32字數(shù)據(jù)緩沖區(qū),接收到的數(shù)據(jù)交替的存儲在這兩個緩沖區(qū)中。 2.4.1 RT內(nèi)存管理 RT內(nèi)存管理包含單消息模式,循環(huán)緩沖區(qū)模式(支持批量數(shù)據(jù)傳輸)和雙緩沖區(qū)模式。在此主要介紹循環(huán)緩沖區(qū)模式,如圖3所示。這意味著在我們設(shè)置發(fā)送、接收或廣播的初始地址后,數(shù)據(jù)塊地址從此地址開始到所設(shè)置的最大長度(如1024字)進行環(huán)繞。這在大批量數(shù)據(jù)傳輸中非常有效,它可以減輕處理器的負荷,我們在處理時可以設(shè)置循環(huán)緩沖區(qū)Rollover中斷來一次性讀取數(shù)據(jù)。 2.4.2 RT子地址控制字 在增強RT內(nèi)存管理方式下,32個子地址控制字控制了各自的內(nèi)存管理和中斷。對于每一個子地址控制字,發(fā)送、接收和廣播各5位控制內(nèi)存大小及中斷,第15位用來控制使能子地址雙緩沖區(qū)。子地址控制字位如表2所示。 表2 子地址控制字位 15 RX: DOUBLE BUFFER ENABLE 14 TX: EOM INT 13 TX: CIRC BUF INT 12 TX: MEMORY MANAGEMENT 2 (MM2) 11 TX: MEMORY MANAGEMENT 1 (MM1) 10 TX: MEMORY MANAGEMENT 0 (MM0) 9 RX: EOM INT 8 RX: CIRC BUF INT 7 RX: MEMORY MANAGEMENT 2 (MM2) 6 RX: MEMORY MANAGEMENT 1 (MM1) 5 RX: MEMORY MANAGEMENT 0 (MM0) 4 BCST: EOM INT 3 BCST: CIRC BUF INT 2 BCST: MEMORY MANAGEMENT 2 (MM2) 1 BCST: MEMORY MANAGEMENT 1 (MM1) 0 BCST: MEMORY MANAGEMENT 0 (MM0) 注意,對于發(fā)送子地址,我們可以選擇使用單緩沖或循環(huán)緩沖內(nèi)存方式,而雙緩沖模式則不用于發(fā)送子地址。 2.4.3 RT編程 對于RT編程,首先初始化相應(yīng)的寄存器;然后設(shè)置非法區(qū)、初始化相應(yīng)子地址的查詢表及子地址控制字;最后設(shè)置配置寄存器1使設(shè)備處于RT模式。此后該設(shè)備就處于在線,只要BC發(fā)送一條消息命令與該設(shè)備相關(guān),那么該設(shè)備就會做出反映。處理RT消息時,這里也有四個字的塊描述符,即塊狀態(tài)字、時間標志字、數(shù)據(jù)塊起始地址指針和接收到的16位命令字。與BC模式一樣,要讀取接收到的消息,我們應(yīng)該首先從堆棧指針A中讀取當前消息的堆棧指針,然后減4后來分別讀出塊狀態(tài)字、時間標志字、上一條消息的塊地址和命令字(該命令字中包含數(shù)據(jù)長度、RT地址、子地址以及是發(fā)送或接收標志);最后根據(jù)數(shù)據(jù)長度從此塊地址讀出接收到的數(shù)據(jù)。 2.5 MT模式操作 MT,即監(jiān)控模式,它包含三種不同的總線監(jiān)控模式:(1)字監(jiān)控;(2)可選擇的消息監(jiān)控;(3)組合的RT/可選擇的消息監(jiān)控模式。本文主要介紹可選擇的消息監(jiān)控方式。消息監(jiān)控包含一個命令堆棧和一個數(shù)據(jù)堆棧,它們位于RAM中固定的位置。 2.5.1 消息監(jiān)控格式 在數(shù)據(jù)堆棧中的消息格式取決于要處理的消息類型。BC-To-RT命令傳輸會把命令字存儲在監(jiān)控命令字堆棧中,數(shù)據(jù)跟隨在接收到的RT狀態(tài)字后面一起存儲在監(jiān)控數(shù)據(jù)堆棧中。注意,讀取到的監(jiān)控消息需要:塊狀態(tài)字(用來決定消息是否是RT-To-RT傳輸),命令字(用來決定消息格式和字數(shù),如發(fā)送、接收、模式編碼、廣播等),數(shù)據(jù)指針。 2.5.2 MT編程 對于MT編程,首先初始化相應(yīng)寄存器及配置寄存器1來使該設(shè)備處于MT模式;然后初始化監(jiān)控命令堆棧指針和數(shù)據(jù)堆棧指針,初始化可選擇的監(jiān)控查詢表;最后啟動MT。中斷處理時,首先讀取中斷狀態(tài)寄存器,判斷是否是EOM中斷;其次從命令字堆棧所初始化的堆棧地址開始讀取塊狀態(tài)字、時間標志字、數(shù)據(jù)指針及命令字;最后從數(shù)據(jù)指針所指的地址中讀取狀態(tài)字和數(shù)據(jù)。注意,此后堆棧指針應(yīng)該加4,一直到1K環(huán)繞。 3 軟件部分 該軟件部分主要工作在VxWorks操作系統(tǒng)中,軟件的任務(wù)首先是通過PCI總線查找PCI9052的存在與否,然后獲取IO、內(nèi)存以及中斷資源以供驅(qū)動程序使用。軟件的主要任務(wù)就是初始化DDC61580相關(guān)寄存器以及內(nèi)存,并使之工作于其中一種模式(BC、RT或MT)。比如下面一段程序就是使DDC61580工作于RT模式。 //Start RT Test for(i=0;i<256;i++) _acMemWrite(STACK_A + i ,0x0000); _acMemWrite(STACK_POINTER_A ,0x0000); //Initialize Stack //Initialize lookup for(i=0;i<128;i++) _acMemWrite((LOOKUP_A + i) ,0xffff); for(i=0;i<32;i++) _acMemWrite((0x400 + i) ,0xffff); _acMemWrite(0x162 ,0x0260); //sa2,transmit _acMemWrite(0x1a2 ,0x8000); //sa2 _acMemWrite(0x143 ,0x0400); //sa3,receive _acMemWrite(0x1a3 ,0x0260); //sa3,single message,EOM interrupt enabled for(i=0;i<32;i++) _acMemWrite((0x3c0 +i) ,0x0000); //sa2 for(i=0;i<32;i++) _acMemWrite((0x400 + i) ,i); _acRegWrite(REG_CFG1_RW,0x8f80); //0x8f80 4 CPLD邏輯部分 在該系統(tǒng)中,PCI9052采用的是ISA模式。對于ISA模式,首先必須確保硬件按照Datasheet上所說的進行配置,其次是EPROM內(nèi)容的編寫。EPROM內(nèi)容最重要的就是LAS0RR、LAS1RR、LAS0BA、LAS1BA、CS0BASE和CS1BASE。它們分別對應(yīng)于Local Configuration Registers偏移值為00h、04h、14h和18h。LAS0RR定義了內(nèi)存地址空間大小,如0x1fff,那么它的值應(yīng)為0xFFFE000;LAS1RR定義了IO地址空間大小,如0x3f,那么它的值應(yīng)為0xFFFFFC1;LAS0BA為內(nèi)存地址的基地址,也就是訪問外部設(shè)備用的基地址,如0xD0001,表示外部設(shè)備內(nèi)存基地址為0xD0000;LAS1BA為IO地址的基地址,也就是訪問外部設(shè)備用的IO基地址,如0x201,表示外部設(shè)備內(nèi)存基地址為0x200。CS0BASE和CS1BASE根據(jù)基地址和地址范圍來定義。具體請參考PCI9052數(shù)據(jù)手冊。 要訪問外部設(shè)備(如基地址為0x200),PCI9052與外部設(shè)備之間就必須有相應(yīng)的邏輯控制以使能夠訪問到外部設(shè)備。在PC機端只需要訪問PCI配置寄存器讀取的局部地址空間0、1即可。因為ISA->PCI之間的轉(zhuǎn)換是PCI9052自動完成的。對于DDC61580,需要控制的信號有:/SELECT、/STRBD、MEM//REG、RD//WR、/MSTCLR、/READY;而對于PCI9052則需要/MEMRD、/MEMWR、/IORD、/IOWR、LRESET、CHRDY以及需要的地址信號,至于所需要的地址信號,我們可以和ISA總線進行地址譯碼一樣。 懂得了上述PCI9052和DDC61580之間的邏輯關(guān)系,要表達出來就很容易了。具體的代碼在此就不寫了。 5 注意 在硬件設(shè)計上,必須嚴格按照DDC61580和PCI9052說明書上進行相關(guān)引腳的處理。比如對于DDC61580工作有幾種模式,必須正確設(shè)置;而PCI9052 EEPROM內(nèi)容的編寫也一定要正確。 linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();