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

          新聞中心

          EEPW首頁 > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 基于FPGA的ISA總線/MMи總線數(shù)據(jù)轉(zhuǎn)換電路設(shè)計(jì)

          基于FPGA的ISA總線/MMи總線數(shù)據(jù)轉(zhuǎn)換電路設(shè)計(jì)

          作者: 時(shí)間:2012-06-08 來源:網(wǎng)絡(luò) 收藏

          摘要:某型導(dǎo)彈測試設(shè)備控制為通用的,而通信接口為非標(biāo)準(zhǔn)的MMи總線。在此以為核心設(shè)計(jì)了一種總線/MMи總線轉(zhuǎn)換電路,該電路可以完成2種制式的數(shù)據(jù)和控制指令轉(zhuǎn)換。給出了轉(zhuǎn)換電路原理框圖、配置電路和地址比較電路原理圖。實(shí)驗(yàn)結(jié)果表明該電路具有轉(zhuǎn)換數(shù)據(jù)準(zhǔn)確,工作可靠等優(yōu)點(diǎn)。實(shí)際應(yīng)用表明,該電路完全能達(dá)到測試設(shè)備的要求。
          關(guān)鍵詞:;總線;MMи總線;

          總線廣泛應(yīng)用于計(jì)算機(jī)、工業(yè)生產(chǎn)及各種測試設(shè)備。ISA總線為IBM公司推出的基于80286CPU的PC/AT微型計(jì)算機(jī)用擴(kuò)展總線標(biāo)準(zhǔn),MMи總線是俄羅斯國內(nèi)自行設(shè)計(jì)的專用測試總線,主要用于程控單元模塊與MMи總線之間數(shù)據(jù)及控制信息的交換。在某型導(dǎo)彈測試設(shè)備中,工控計(jì)算機(jī)采用了ISA總線,而俄制測試設(shè)備采用了MMи總線,2種總線數(shù)據(jù)模式和傳輸制式不同。本文以FPGA為核心,設(shè)計(jì)了ISA總線/MMи總線2種總線之間的數(shù)據(jù)和控制指令轉(zhuǎn)換電路,實(shí)際應(yīng)用證明了該電路的可靠性。

          1 ISA總線和MMи總線簡介
          1.1 ISA總線
          ISA(Industrial Standard Architecture)總線是IBM公司于1984年進(jìn)一步擴(kuò)充XT總線標(biāo)準(zhǔn)而形成的。ISA總線標(biāo)準(zhǔn)支持24位的地址線、16位的數(shù)據(jù)線;支持11級中斷IRQ3~I(xiàn)RQ7,IRQ9~I(xiàn)RQ12,IRQ14~I(xiàn)RQ15;支持7個(gè)DMA傳輸通道DRQ0~DRQ3,DRQ5~DRQ7;支持主從控制、I/O等待和I/O校驗(yàn)等功能。為了與XT總線保持向下兼容,ISA總線在信號功能的定義和物理接口上均作了特殊的安排,即保持原有的XT總線不變,重新增加一個(gè)36線的連接插槽,分成C,D兩面,擴(kuò)充的功能設(shè)計(jì)在C,D兩面的信號線上。其引腳定義如下:
          (1)數(shù)據(jù)總線SD0~SD7。SD0~SD7為8位雙向三態(tài)數(shù)據(jù)總線,在芯片和主接口間傳輸命令、數(shù)據(jù)和狀態(tài)。SD7為最高位。
          寄存器選擇引腳為SA4~SA9,SW DIP-6(板基址011001)和a.jpg。這些引腳決定轉(zhuǎn)換是否響應(yīng)I/O周期,當(dāng)a.jpg為邏輯低電平且SA4~SA9與6位撥動(dòng)開關(guān)值完全匹配時(shí),內(nèi)部產(chǎn)生一個(gè)片選信號,使轉(zhuǎn)換響應(yīng)I/O周期。
          (2)地址信號SA0~SA3。I/O讀寫操作時(shí)作為轉(zhuǎn)換電路上FPGA芯片內(nèi)的寄存器選擇信號。
          (3)讀寫信號b.jpg,c.jpg。寫操作中,轉(zhuǎn)換在c.jpg上升沿鎖存數(shù)據(jù)。讀操作中,當(dāng)b.jpg有效時(shí),轉(zhuǎn)換模塊直接驅(qū)動(dòng)8位數(shù)據(jù)線。
          (4)中斷信號INTR。中斷狀態(tài)寄存器某使能中斷為真時(shí),INTR有效。對INTR的有效聲明沒有最小脈寬要求。
          (5)I/O通道準(zhǔn)備好信號IO CHRDY。IOCHRDY變低,表明當(dāng)前I/O周期需要被延長。寫周期中,當(dāng)數(shù)據(jù)從ISA總線上被鎖存時(shí)IO CHRDY變高。讀周期中,數(shù)據(jù)有效時(shí)IO CHRDY變高。進(jìn)行寄存器讀寫時(shí)IO CHRDY被拉低。IO CHRDY引腳用集電極開路邏輯門驅(qū)動(dòng),因此此信號會由一個(gè)內(nèi)部上拉電阻上拉至邏輯高電平。
          (6)復(fù)位信號RESET。RESET信號有效時(shí),觸發(fā)轉(zhuǎn)換模塊,使FPGA硬重肩。
          1.2 MMи總線
          MMи總線是俄羅斯國內(nèi)自行設(shè)計(jì)的專用測試總線,主要用于程控單元模塊與MMи總線之間數(shù)字及控制信息的交換,其基本技術(shù)性能如下:
          (1)MMи總線采用異步、字節(jié)串行、位并行、雙向信息傳輸方式。
          (2)MMи總線采用負(fù)邏輯,模塊服務(wù)請求信號(зOм)和轉(zhuǎn)換結(jié)束信號(KПp)除外。低電平電壓為0~0.6 V,表示邏輯1(對于服務(wù)請求信號зOМ和轉(zhuǎn)換結(jié)束信號KПp,邏輯1的電平為2.4~4.5 V);高電平電壓為2.4~4.5 V,表示邏輯0(對于服務(wù)請求信號зOМ和轉(zhuǎn)換結(jié)束信號KПp,邏輯0的電平為0~0.6 V)。
          (3)總線上掛接的程控單元模塊最多為16個(gè)(包括控制器)。
          (4)MMи總線中最多包含92根信號線路。一個(gè)程控單元模塊內(nèi)所使用的線路最多不超過50根,最少不少于15根。每一個(gè)具體的程控單元模塊所用的線路數(shù)量,可根據(jù)此模塊的具體技術(shù)要求確定。
          (5)程控單元模塊與MMи控制器間總線電纜的最大長度不應(yīng)超過1 m。
          (6)總線內(nèi)的信息傳輸最大速度由程控單元模塊與MMи總線的信息處理能力決定,最大不超過100 Kb/s。
          (7)總線控制器與程控單元模塊間的連接方式有2種:鏈型連接及星型連接。鏈型連接總線上的所有裝置,包括控制器,都是并行連接的;其中的信號可以單向或雙向傳輸;星型連接總線將MMи控制器與單個(gè)程控單元模塊一對一地連接到一起,其中的信號單向傳輸。
          (8)MMи總線線路可分以下6類:
          數(shù)據(jù)線:“1 pиM,….8 pиM”線路(數(shù)據(jù)總線);第1電平地址線——“Aдp.эм”線路(程控模塊單元地址);第2電平地址線——“A0…A15”線路(信息寄存器地址);同步線——“ΓT”(準(zhǔn)備好),“Пpиeм”(接收),“Bыд”(發(fā)送),“Kнп”(傳輸結(jié)束)線路;控制線——“иAэм”(初始化),“эaпycK эм”(觸發(fā)),“ПO(jiān)зм”(串行詢問),“KOм.1……KOм.16”(控制指令)線路;中斷線——“зOм”(請求服務(wù)),“Kпp”(轉(zhuǎn)換結(jié)束)線路。
          程控單元模塊從MMи控制器接收的所有指令都是尋址指令。在中斷線內(nèi),模塊服務(wù)請求信號“зOм”具有高優(yōu)先級,轉(zhuǎn)換結(jié)束信號“Kпp”具有低優(yōu)先級。


          上一頁 1 2 3 4 下一頁

          評論


          相關(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); })();