激情综合丁香-激情综合六月-激情综合婷婷亚洲图片-激情综合图区-激情综合网五月

精簡ISA總線擴(kuò)展應(yīng)用實(shí)例

 2008-8-1             

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

 

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

 

        以下是英創(chuàng)公司所提供的精簡ISA擴(kuò)展總線接口的信號定義:

信號名稱及簡要描述

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

PIN#

PIN#

  RESET#,復(fù)位輸出,低有效

12

  SA0,地址總線

  SD0,數(shù)據(jù)總線,LSB

34

  SA1,地址總線

  SD1,數(shù)據(jù)總線

56

  SA2,地址總線

  SD2,數(shù)據(jù)總線

78

  SA3,地址總線

  SD3,數(shù)據(jù)總線

910

  SA4,地址總線

  SD4,數(shù)據(jù)總線

1112

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

  SD5,數(shù)據(jù)總線

1314

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

  SD6,數(shù)據(jù)總線

1516

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

  SD7,數(shù)據(jù)總線,MSB

1718

  VCC,電源輸出

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

1920

  GND,公共地

 

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

系統(tǒng)

ISA讀

ISA寫

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

 

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

 

ISA總線的寫操作:


        C語言ISA總線寫操作函數(shù):

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


 

        EM9000 ISA總線寫操作函數(shù):

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


 

        EM9x6x ISA總線寫操作函數(shù):

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


 

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

 

ISA總線的讀操作:

 

        C語言ISA總線讀操作函數(shù):

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


 

        EM9000 ISA總線讀操作函數(shù):

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


 

        EM9x6x ISA總線讀操作函數(shù): 

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


 

        對應(yīng)的總線時(shí)序關(guān)系為:

 

        如果應(yīng)用程序要讀寫一個(gè)16-bit的數(shù)據(jù),即一個(gè)字時(shí),在x86系統(tǒng)中,可以使用:

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

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

 

        利用C函數(shù)一次性完成操作,在ISA總線上會(huì)自動(dòng)生成兩個(gè)8位數(shù)據(jù)的讀寫周期,分別訪問低位字節(jié)和高位字節(jié)。在AD、DA的訪問中經(jīng)常會(huì)碰到這樣的情形。

 

        對ARM9系統(tǒng),應(yīng)用只能通過兩次調(diào)用總線讀寫函數(shù)分別處理16位數(shù)據(jù)的低位字節(jié)和高位字節(jié),如用EM9000 ISA讀寫操作為例:

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

 

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

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

 

        在使用精簡ISA總線進(jìn)行擴(kuò)展時(shí),為了使總線的信號傳輸更加可靠,應(yīng)在總線上的所有信號線加上RC網(wǎng)絡(luò)以達(dá)到最佳的信號傳輸,同時(shí),在高速的數(shù)據(jù)總線上,可以使用HCT245作一次驅(qū)動(dòng)。如下圖所示:

 

 

 

擴(kuò)展應(yīng)用

 

1、用精簡ISA進(jìn)行數(shù)據(jù)I/O擴(kuò)展

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

 

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

 

        在X86系統(tǒng)下,應(yīng)用程序執(zhí)行讀操作時(shí):

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

 

        在EM9000系統(tǒng)下,應(yīng)用程序執(zhí)行讀操作:

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

 

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

 

        類似的,當(dāng)應(yīng)用程序執(zhí)行寫操作時(shí):

 

        X86系統(tǒng)下寫:

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

 

        在EM9000系統(tǒng)下:

        EM9000_WRITE (CS1# , 0x0 , ub1);

 

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

 

2、用精簡ISA總線進(jìn)行A/D采集擴(kuò)展(應(yīng)用模塊:ETA197)

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

 

        對MAX197進(jìn)行AD轉(zhuǎn)換的基本步驟為:

 

        X86系統(tǒng)下:

        1、寫控制字節(jié),啟動(dòng)AD轉(zhuǎn)換:outportb(0x300, CtrlByte); 
        2、延時(shí)15us
        讀取轉(zhuǎn)換數(shù)據(jù):unsigned int ub1 = inport(0x300);
        // ub1為讀入的16位數(shù)據(jù)

 

        或EM9000系統(tǒng)下:

        1、寫控制字節(jié),啟動(dòng)AD轉(zhuǎn)換:

        EM9000_WRITE(CS1# , 0x0 , CtrlByte );

        2、延時(shí)15us

        3、讀取轉(zhuǎn)換數(shù)據(jù):

        ub1 = EM9000_READ(CS1# , 0x0 );

        ub1 = ub1 << 8 ;

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

 

        對于不同的系統(tǒng),請參見相應(yīng)的ETA197測試程序。

 

3、用精簡ISA總線進(jìn)行串口擴(kuò)展(應(yīng)用模塊:ETA502)

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

 

 

 

 

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

主站蜘蛛池模板: 亚洲综合99| www.91在线播放| 色男人网| 成年男女免费视频网站| 美女亚洲精品一区| 麻豆精品视频在线观看| 亚洲欧美精品成人久久91| 一级啊片| 亚洲综合一区二区三区四区| 国产a级毛片| 国产精品国产三级国快看| 99久久国产综合精品成人影院| 欧美在线免费| 亚洲国产午夜看片| 久久婷婷色| 水蜜桃爱爱yy视频在线观看| 成人福利免费视频| 免费福利片| 欧美视屏在线观看| 请看一下欧美一级毛片| 美女久久久久久久久久久| 手机看片高清国产日韩片| ccmm123在线播放| 久久久网| 亚洲久草| 青青青久在线视频免费观看| 国产一区二区在线视频| 国产色网| 国产视频h| 超91精品手机国产在线| 久久婷婷国产综合精品青草| 亚洲视频二区| 一级特黄aaa大片免色| 久久美女视频| 久久国产精品一区| 久久精品视频一区二区三区| 日本乱人伦片中文三区| 日韩美女毛片| 日韩一区二区在线播放| 伊人骚| 欧美激情一区二区三区蜜桃视频 |