<track id="zxlr8"></track>
<u id="zxlr8"><sub id="zxlr8"></sub></u>
  • <track id="zxlr8"></track>
    1. <ins id="zxlr8"><table id="zxlr8"></table></ins><wbr id="zxlr8"><ins id="zxlr8"></ins></wbr>
      <wbr id="zxlr8"><table id="zxlr8"></table></wbr><u id="zxlr8"><bdo id="zxlr8"></bdo></u>
    2. <video id="zxlr8"></video>
      <rp id="zxlr8"><input id="zxlr8"></input></rp>
    3. <u id="zxlr8"></u>

      精簡ISA總線擴展應用實例

       2008-8-1         

              英創公司的嵌入式主板系列產品為了支持客戶的各種應用擴展,所有的ARM9系列和X86系列的嵌入式主板均帶有精簡ISA擴展總線。ISA總線是PC機最經典的擴展總線(在嵌入式領域,通常以PC104總線的形式出現),在工業控制領域有著廣泛的應用,以及深厚的應用基礎。所謂精簡ISA總線就是在保持通用ISA總線時序不變的前提下,僅保留常用的總線信號,以最大限度的減少總線總的信號數量,以適應模塊的小型化。英創公司的精簡ISA總線包括8位數據總線、5位地址總線(可擴展到13位)、片選控制線、讀寫控制線以及中斷請求線。英創公司所提供的評估開發底板將這些信號線制定了一個接口標準,采用雙排20芯 IDC插針,用戶可利用精簡ISA總線進行系統功能的擴展。

       

              在英創的精簡ISA總線中,設置了2條獨特的片選控制信號CS0#和CS1#,這樣就省去了大量的高位地址總線。CS0#和CS1#為低電平有效的脈沖信號。在x86 系列的嵌入式產品中,CS0#片選信號的地址區域為0x200–0x21F,CS1#片選信號的地址區域為0x300 – 0x31F。在ARM9系列的嵌入式產品中,客戶就不用關心精簡ISA總線的絕對地址,只要選定一個片選信號及基于這個片選的地址偏移量即可。如在X86系統下選用了CS1作片選信號,對0x301進行操作,則相對于ARM系統,可使用CS1#、地址偏移量為1的端口。ARM9系列板卡的CS0#、CS1#所對應的地址區域范圍有所不同。EM9000有13條地址線,每位片選可訪問8K的地址空間。EM9160、EM9161的每位片選可訪問32 個地址空間。EM9260、EM9360的CS0#可訪問到8K的地址空間,CS1#可訪問到1K的地址空間。

       

              以下是英創公司所提供的精簡ISA擴展總線接口的信號定義:

      信號名稱及簡要描述

      精簡ISA信號名稱及簡要描述

      PIN#

      PIN#

        RESET#,復位輸出,低有效

      12

        SA0,地址總線

        SD0,數據總線,LSB

      34

        SA1,地址總線

        SD1,數據總線

      56

        SA2,地址總線

        SD2,數據總線

      78

        SA3,地址總線

        SD3,數據總線

      910

        SA4,地址總線

        SD4,數據總線

      1112

        WE#,寫信號控制線,低有效

        SD5,數據總線

      1314

        RD#,讀信號控制線,低有效

        SD6,數據總線

      1516

        CS1#,I/O片選線,低有效

        SD7,數據總線,MSB

      1718

        VCC,電源輸出

        IRQ,中斷請求,上升沿有效

      1920

        GND,公共地

       

              為了便于用戶理解精簡ISA總線接口如何進行編程,本節以x86指令和ARM系統為例,簡單介紹基于英創嵌入式主板的精簡ISA的應用。由于x86、EM9000、EM9x6x三種系統的ISA總線讀寫操作函數不一樣,所以在具體使用時,應當參考相應的'*.h'文件。以下是基于英創的嵌入式主板的精簡ISA總線操作指令表,以便查詢:

      系統

      ISA讀

      ISA寫

        x86系列  inport( ) 或 inportb( )  outport( ) 或 outportb( )
        EM9000  EM9000_READ( )  EM9000_WRITE( )
        EM9x6x系列  ISA_ReadUchar( )  ISA_WriteUchar( )

       

              X86系統使用DOS操作系統,其指令也是標準的C函數,所以操作ISA時使用的時絕對地址。ARM嵌入式主板使用的WINCE操作系統,存在地址映射問題,同時使用戶更加方便對ISA的使用,所以對ISA操作的過程被封裝成一個操作函數后再提供給用戶,在對ISA操作時不需要給出絕對地址,但是需要指明所使用的片選信號及基于當前片選信號的偏移地址。下面的讀操作也是相同的。

       

      ISA總線的寫操作:


              C語言ISA總線寫操作函數:

              outportb ( 0x301,  ub1 ); // 將ub1的數據寫入0x301地址或寄存器


       

              EM9000 ISA總線寫操作函數:

              #define CS1# 1  // ARM系統的CS1片選信號的定義,以下不再說明
              EM9000_WRITE ( CS1# , 0x1 , ub1 ); // 將ub1的數據寫入CS1片選信號使能的1偏移地址


       

              EM9x6x ISA總線寫操作函數:

              ISA_WriteUchar ( CS1#, 0x1 , ub1); // 將ub1的數據寫入CS1片選信號使能的1偏移地址


       

              對應的總線寫時序圖為(本文中的總線周期示意圖以ARM系列模塊為例):

       

      ISA總線的讀操作:

       

              C語言ISA總線讀操作函數:

              UCHAR ub1 = inportb ( 0x301 ); // 將0x301地址或寄存器的數據讀入ub1


       

              EM9000 ISA總線讀操作函數:

              UCHAR ub1 = EM9000_READ ( CS1# , 0x1 ); // 將CS1片選信號使能的1偏移地址的數據讀入ub1 


       

              EM9x6x ISA總線讀操作函數: 

              ISA_ReadUchar ( CS1#, 0x1 , &ub1); // 將CS1片選信號使能的1偏移地址的數據讀入ub1


       

              對應的總線時序關系為:

       

              如果應用程序要讀寫一個16-bit的數據,即一個字時,在x86系統中,可以使用:

              unsigned int ui1 = inport(0x301);  // 讀16位數據

              outport(0x301, ui1);     // 寫16位數據

       

              利用C函數一次性完成操作,在ISA總線上會自動生成兩個8位數據的讀寫周期,分別訪問低位字節和高位字節。在AD、DA的訪問中經常會碰到這樣的情形。

       

              對ARM9系統,應用只能通過兩次調用總線讀寫函數分別處理16位數據的低位字節和高位字節,如用EM9000 ISA讀寫操作為例:

              UCHAR ub1 = EM9000_READ ( CS1# , 0x1 );  // 獲得低位字節。
              UCHAR ub2 = EM9000_READ ( CS1# , 0x2 );  // 獲得高位字節。
              ui1 =( ub2 << 8)| ub1;               // 高低位字節合成16位數據

       

              如果是寫操作,則使用同樣的方式:

              EM9000_WRITE ( CS1# , 0x1 , (ub1&0xff) );     // 寫低字節數據
              EM9000_WRITE ( CS1# , 0x2 , (ub1>>8) );  // 寫高字節數據

       

              在使用精簡ISA總線進行擴展時,為了使總線的信號傳輸更加可靠,應在總線上的所有信號線加上RC網絡以達到最佳的信號傳輸,同時,在高速的數據總線上,可以使用HCT245作一次驅動。如下圖所示:

       

       

       

      擴展應用

       

      1、用精簡ISA進行數據I/O擴展

              用戶如果使用的I/O較多,英創提供的嵌入式主板上的數據I/O又不夠使用要求,則用戶可以使用精簡ISA總線來進行擴展。僅使用3片簡單的74邏輯器件,就可方便擴展出8路輸入8路輸出。英創公司的ETA716擴展模塊就是按照這種方式來實現的。

       

              接口譯碼電路用一片74HCT139做完成。

       

              在X86系統下,應用程序執行讀操作時:

              unsigned char ub1 = inportb ( 0x300 );  // 把外部狀態讀取并存放到ub1中

       

              在EM9000系統下,應用程序執行讀操作:

              UCHAR ub1 = EM9000_READ (CS1# , 0x0);

       

              74HCT245被譯碼信號RD300H#選通,外部的輸入狀態INPUT0 – INPUT7將呈現在數據總線SD0 – SD7上,CPU將在RD300H#的上升沿時刻把總線上的數據鎖存到ub1。

       

              類似的,當應用程序執行寫操作時:

       

              X86系統下寫:

              outportb ( 0x300 , ub1 );  // 把ub1數據輸出送到0x300端口

       

              在EM9000系統下:

              EM9000_WRITE (CS1# , 0x0 , ub1);

       

              把ub1的數據送到ISA數據總線上,譯碼信號WE300H#變低有效,并在其上升沿時刻把總線上的數據鎖存到74HCT273的8個寄存器中,74HCT273的8個寄存器的輸出OUTPUT0 – OUTPUT7將保持不變,直至有新數據寫入。當系統復位或上電啟動時,低有效的復位信號RESET#將保證把74HCT273的輸出清零。

       

      2、用精簡ISA總線進行A/D采集擴展(應用模塊:ETA197)

              用戶還可以通過精簡ISA總線來擴展具有通用并行接口的A/D轉換器,以實現簡單的數據采集。以下是通過ISA總線連接MAX197的信號接法,由于MAX197只有12位數據寬度,這里使用SA0地址線來作為高、低字節數據的選擇,正好形成了兩個連續的地址,方便函數的操作。

       

              對MAX197進行AD轉換的基本步驟為:

       

              X86系統下:

              1、寫控制字節,啟動AD轉換:outportb(0x300, CtrlByte); 
              2、延時15us
              讀取轉換數據:unsigned int ub1 = inport(0x300);
              // ub1為讀入的16位數據

       

              或EM9000系統下:

              1、寫控制字節,啟動AD轉換:

              EM9000_WRITE(CS1# , 0x0 , CtrlByte );

              2、延時15us

              3、讀取轉換數據:

              ub1 = EM9000_READ(CS1# , 0x0 );

              ub1 = ub1 << 8 ;

              ub1 = ub1 | (EM9000_READ(CS1# , 0x0 ) & 0xff );

       

              對于不同的系統,請參見相應的ETA197測試程序。

       

      3、用精簡ISA總線進行串口擴展(應用模塊:ETA502)

              同樣的,用戶也可以使用精簡ISA總線來擴展串口,如使用16C550芯片等。一片16C550需要占用8個I/O端口地址,所以,要使用到三條地址線,且這三條地址線最好是連續的地址線,以方便應用程序的開發與控制。 要注意的是,16C550的復位是高電平復位,而精簡ISA總線上的復位信號是低信號復位有效,所以在使用時,要將ISA總線上的復位信號進行反向,再連接到16C550的復位上。如果要控制MODEM,則需要將16C550輸出的信號經過RS232電平信號轉換芯片的轉換,再接一個DB9的接頭,則構成了一個標準的RS232通訊接口。

       

       

       

       

              除了以上的應用以外,用戶還可以利用英創的精簡ISA總線,方便地完成其它多種功能模塊的擴展,如10M/100M以太網口、CAN總線接口、USB主控模塊、24位通用數字IO等等,英創公司也相應地提供了應用模塊ETA719、ETA718、ETA701、ETA608、 ETA724等供客戶參考。

      A毛看片免费观看视频视频在线播放,国产a片欧美一级毛 片在线观看,2019午夜75福利不卡片在线,久久精品国产99国产精,最近更新中文字幕免费,久久人人97超碰,中文字幕无码A片久久东京热 亚洲伊人成综合人影院,亚洲国产中文字幕在线视频,天天五月缴情在线观看,97国产在线看片免费人成视频,天干夜天天夜天干天,免费A级毛片高清视频,窝窝午夜色视频国产精品 92福利视频合集100午夜,人人天天夜夜曰曰狠狠狠,免费观看网站 亚洲自国产拍偷拍,国产免费888在线观看,久久天天躁狠狠躁夜夜躁2020,无羞耻肉动漫在线观看 欧美成人电影,日本不卡免费一区二区,老司机精品视频在线观看,快播影院在线观看,无遮挡又色又黄的免费视频,美女一黄色网站,成年无码AV片在线观看,亚洲AVAV天堂Av在线不卡 色就色欧美综合在线影院,亚洲欧美卡通另类丝袜美腿,老司机福利在线观看,夜夜爽8888免费视频,国内自拍99re久久,2018Av天堂在线视频精品观看,少妇无码精品12p 午夜天堂欧美成人在线视频,超碰91自拍国产自拍,激情综合色综合啪啪五月,男人的天堂在线视频,午夜理理伦A级毛片天天看,无码熟妇人妻AV在线偷拍,大量偷拍情侣自拍视频 精品国产自在现线拍在线,无码专区人妻系列日韩,色婷婷色综合缴情网站,猛男操的我高潮连连,国产片av国语在线观看手机版,久久人人97超碰精品,亚洲最大AV网站在线观看
      久久亚洲精品无码爱剪辑,亚洲欧美国产vr在线观,国产真实乱子伦精品视频,日韩精品一区二区中文免费在线观看,在线A亚洲V天堂网2018,免费观看欧美大片毛片不用播放器 日本极品高清不卡AV,亚洲AⅤ天堂AV在线电影猫咪,五月色婷婷综合狠狠爱,碰超79网站,印度女人牲交视频免费播放,va在线看国产免费,狠狠躁夜夜躁人人爽天天古典 免费 在线 av 日本,免费A片在线观看,一本道久在道最新2021,人妻无码不卡中文字幕系列,午夜爽爽爽男女免费观看HD,日本高清视频永久网站www,东京热人妻无码人av 人人插人人莫人人干在线,AV天堂久久天堂AV色综合,欧美A色爱综合网欧美V,亚洲图欧美日韩在线,亚洲中文字幕曰本毛片,中文字幕97超碰大香寡妇蕉,久爱在线 亚洲AV片不卡无码久久,亚洲人成免费观看视频在线,欧洲亚洲偷自拍第一页,av在线播放日韩亚洲欧,一日本道不卡高清A无码,97碰碰碰人妻无码视频,加勒比最新无码AV免费资源 国内精品自线在拍,日韩一区二区三不卡高清,伊人中文字幕无码专区视频在线播放网站,看全黄大色黄大片美女蓝光在线看,无码av高清毛片在线看,人人超人人超碰超国产 小草视频手机在线视频,免费黃色大片,偷欧洲亚洲另类图片AV天堂,久久国产乱子伦,国产乱子伦精品视频,日本高清色本在线视频观看,加勒比一本HEYZO高清视频 AV无码东京热亚洲男人的天堂,315电影网A级毛片,深夜A级毛片视频免费,亚洲日本VA午夜在线电影,日本无码免费不卡AV二区,在线看午夜福利片国产,亚洲中文字幕aⅴ天堂 无码刺激性A片,成上人色爱A∨综合网,午夜性影院在线观看视频播放,手机国产乱子伦精品视频,无码99久热只有精品视频在线,狠狠噜天天噜日日黑人亚洲,在线观看无码不卡 真实国产乱子伦对白视频不卡,国产成人亚洲精品,老司机亚洲精品影院无码,亚洲成av人片在线观看天堂无码,美国一级a片,狠狠狠的在啪线香蕉亚洲,AV男人的天堂在线观看第三区