精簡ISA總線擴(kuò)展應(yīng)用實(shí)例_第1頁
精簡ISA總線擴(kuò)展應(yīng)用實(shí)例_第2頁
精簡ISA總線擴(kuò)展應(yīng)用實(shí)例_第3頁
精簡ISA總線擴(kuò)展應(yīng)用實(shí)例_第4頁
精簡ISA總線擴(kuò)展應(yīng)用實(shí)例_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、精簡ISA總線擴(kuò)展應(yīng)用實(shí)例  ARM的嵌入式主板系列產(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í)序不變的前提下,僅保留常用的總線信號(hào),以最大限度的減少總線總的信號(hào)數(shù)量,以適應(yīng)模塊的小型化。ARM的精簡ISA總線包括8位數(shù)據(jù)總線、5位地址總線(可擴(kuò)展到13位)、片選控制線、讀寫控制線以及中斷請(qǐng)求線。ARM所提供的評(píng)估開發(fā)底板將這些信號(hào)線制定了一個(gè)接口標(biāo)準(zhǔn),

2、采用雙排20芯 IDC插針,用戶可利用精簡ISA總線進(jìn)行系統(tǒng)功能的擴(kuò)展。         在ARM的精簡ISA總線中,設(shè)置了2條獨(dú)特的片選控制信號(hào)CS0#和CS1#,這樣就省去了大量的高位地址總線。CS0#和CS1#為低電平有效的脈沖信號(hào)。在x86 系列的嵌入式產(chǎn)品中,CS0#片選信號(hào)的地址區(qū)域?yàn)?x2000x21F,CS1#片選信號(hào)的地址區(qū)域?yàn)?x300 0x31F。在ARM9系列的嵌入式產(chǎn)品中,客戶就不用關(guān)心精簡ISA總線的絕對(duì)地址,只要選定一個(gè)片選信號(hào)及基于這個(gè)片選的地址偏移量即可。如在X86系統(tǒng)下選用了CS

3、1作片選信號(hào),對(duì)0x301進(jìn)行操作,則相對(duì)于ARM系統(tǒng),可使用CS1#、地址偏移量為1的端口。ARM9系列板卡的CS0#、CS1#所對(duì)應(yīng)的地址區(qū)域范圍有所不同。EM9000有13條地址線,每位片選可訪問8K的地址空間。EM9160、EM9161的每位片選可訪問32 個(gè)地址空間。EM9260、EM9360的CS0#可訪問到8K的地址空間,CS1#可訪問到1K的地址空間。         以下是ARM所提供的精簡ISA擴(kuò)展總線接口的信號(hào)定義:信號(hào)名稱及簡要描述精簡ISA信號(hào)名稱及簡要描述PIN#PIN#  R

4、ESET#,復(fù)位輸出,低有效12  SA0,地址總線  SD0,數(shù)據(jù)總線,LSB34  SA1,地址總線  SD1,數(shù)據(jù)總線56  SA2,地址總線  SD2,數(shù)據(jù)總線78  SA3,地址總線  SD3,數(shù)據(jù)總線910  SA4,地址總線  SD4,數(shù)據(jù)總線1112  WE#,寫信號(hào)控制線,低有效  SD5,數(shù)據(jù)總線1314  RD#,讀信號(hào)控制線,低有效  SD6,數(shù)據(jù)總線1516  CS1#,I/O片選線,低有效  SD7,數(shù)據(jù)總線

5、,MSB1718  VCC,電源輸出  IRQ,中斷請(qǐng)求,上升沿有效1920  GND,公共地         為了便于用戶理解精簡ISA總線接口如何進(jìn)行編程,本節(jié)以x86指令和ARM系統(tǒng)為例,簡單介紹基于ARM嵌入式主板的精簡ISA的應(yīng)用。由于x86、EM9000、EM9x6x三種系統(tǒng)的ISA總線讀寫操作函數(shù)不一樣,所以在具體使用時(shí),應(yīng)當(dāng)參考相應(yīng)的'*.h'文件。以下是基于ARM的嵌入式主板的精簡ISA總線操作指令表,以便查詢:系統(tǒng)ISA讀ISA寫  x86

6、系列  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í)絕對(duì)地址。ARM嵌入式主板使用的WINCE操作系統(tǒng),存在地址映射

7、問題,同時(shí)使用戶更加方便對(duì)ISA的使用,所以對(duì)ISA操作的過程被封裝成一個(gè)操作函數(shù)后再提供給用戶,在對(duì)ISA操作時(shí)不需要給出絕對(duì)地址,但是需要指明所使用的片選信號(hào)及基于當(dāng)前片選信號(hào)的偏移地址。下面的讀操作也是相同的。 ISA總線的寫操作:        C語言ISA總線寫操作函數(shù):        outportb ( 0x301,  ub1 ); / 將ub1的數(shù)據(jù)寫入0x301地址或寄存器   

8、      EM9000 ISA總線寫操作函數(shù):        #define CS1# 1  / ARM系統(tǒng)的CS1片選信號(hào)的定義,以下不再說明        EM9000_WRITE ( CS1# , 0x1 , ub1 ); / 將ub1的數(shù)據(jù)寫入CS1片選信號(hào)使能的1偏移地址      &#

9、160;  EM9x6x ISA總線寫操作函數(shù):        ISA_WriteUchar ( CS1#, 0x1 , ub1); / 將ub1的數(shù)據(jù)寫入CS1片選信號(hào)使能的1偏移地址         對(duì)應(yīng)的總線寫時(shí)序圖為(本文中的總線周期示意圖以ARM系列模塊為例): ISA總線的讀操作:         C語言ISA總線讀操作函數(shù):

10、        UCHAR ub1 = inportb ( 0x301 ); / 將0x301地址或寄存器的數(shù)據(jù)讀入ub1         EM9000 ISA總線讀操作函數(shù):        UCHAR ub1 = EM9000_READ ( CS1# , 0x1 ); / 將CS1片選信號(hào)使能的1偏移地址的數(shù)據(jù)讀入u

11、b1          EM9x6x ISA總線讀操作函數(shù):         ISA_ReadUchar ( CS1#, 0x1 , &ub1); / 將CS1片選信號(hào)使能的1偏移地址的數(shù)據(jù)讀入ub1         對(duì)應(yīng)的總線時(shí)序關(guān)系為:       

12、;  如果應(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ù)       

13、60; 利用C函數(shù)一次性完成操作,在ISA總線上會(huì)自動(dòng)生成兩個(gè)8位數(shù)據(jù)的讀寫周期,分別訪問低位字節(jié)和高位字節(jié)。在AD、DA的訪問中經(jīng)常會(huì)碰到這樣的情形。         對(duì)ARM9系統(tǒng),應(yīng)用只能通過兩次調(diào)用總線讀寫函數(shù)分別處理16位數(shù)據(jù)的低位字節(jié)和高位字節(jié),如用EM9000 ISA讀寫操作為例:        UCHAR ub1 = EM9000_READ ( CS1# , 0x1 );  / 獲得低位字節(jié)。

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

15、#160;   如果是寫操作,則使用同樣的方式:        EM9000_WRITE ( CS1# , 0x1 , (ub1&0xff) );     / 寫低字節(jié)數(shù)據(jù)        EM9000_WRITE ( CS1# , 0x2 , (ub1>>8) );  / 寫高字節(jié)數(shù)據(jù)       

16、  在使用精簡ISA總線進(jìn)行擴(kuò)展時(shí),為了使總線的信號(hào)傳輸更加可靠,應(yīng)在總線上的所有信號(hào)線加上RC網(wǎng)絡(luò)以達(dá)到最佳的信號(hào)傳輸,同時(shí),在高速的數(shù)據(jù)總線上,可以使用HCT245作一次驅(qū)動(dòng)。如下圖所示:   擴(kuò)展應(yīng)用 1、用精簡ISA進(jìn)行數(shù)據(jù)I/O擴(kuò)展        用戶如果使用的I/O較多,ARM提供的嵌入式主板上的數(shù)據(jù)I/O又不夠使用要求,則用戶可以使用精簡ISA總線來進(jìn)行擴(kuò)展。僅使用3片簡單的74邏輯器件,就可方便擴(kuò)展出8路輸入8路輸出。ARM的ETA716擴(kuò)展模塊就是按照這種方

17、式來實(shí)現(xiàn)的。         接口譯碼電路用一片74HCT139做完成。         在X86系統(tǒng)下,應(yīng)用程序執(zhí)行讀操作時(shí):        unsigned char ub1 = inportb ( 0x300 );  / 把外部狀態(tài)讀取并存放到ub1中       

18、0; 在EM9000系統(tǒng)下,應(yīng)用程序執(zhí)行讀操作:        UCHAR ub1 = EM9000_READ (CS1# , 0x0);         74HCT245被譯碼信號(hào)RD300H#選通,外部的輸入狀態(tài)INPUT0 INPUT7將呈現(xiàn)在數(shù)據(jù)總線SD0 SD7上,CPU將在RD300H#的上升沿時(shí)刻把總線上的數(shù)據(jù)鎖存到ub1。         類似的,當(dāng)應(yīng)

19、用程序執(zhí)行寫操作時(shí):         X86系統(tǒng)下寫:        outportb ( 0x300 , ub1 );  / 把ub1數(shù)據(jù)輸出送到0x300端口         在EM9000系統(tǒng)下:        EM9000_WRITE (CS1# , 0x0 , ub1);

20、0;        把ub1的數(shù)據(jù)送到ISA數(shù)據(jù)總線上,譯碼信號(hào)WE300H#變低有效,并在其上升沿時(shí)刻把總線上的數(shù)據(jù)鎖存到74HCT273的8個(gè)寄存器中,74HCT273的8個(gè)寄存器的輸出OUTPUT0 OUTPUT7將保持不變,直至有新數(shù)據(jù)寫入。當(dāng)系統(tǒng)復(fù)位或上電啟動(dòng)時(shí),低有效的復(fù)位信號(hào)RESET#將保證把74HCT273的輸出清零。 2、用精簡ISA總線進(jìn)行A/D采集擴(kuò)展(應(yīng)用模塊:ETA197)        用戶還可以通過精簡ISA總線來

21、擴(kuò)展具有通用并行接口的A/D轉(zhuǎn)換器,以實(shí)現(xiàn)簡單的數(shù)據(jù)采集。以下是通過ISA總線連接MAX197的信號(hào)接法,由于MAX197只有12位數(shù)據(jù)寬度,這里使用SA0地址線來作為高、低字節(jié)數(shù)據(jù)的選擇,正好形成了兩個(gè)連續(xù)的地址,方便函數(shù)的操作。         對(duì)MAX197進(jìn)行AD轉(zhuǎn)換的基本步驟為:         X86系統(tǒng)下:        1、寫控制字節(jié),啟動(dòng)AD轉(zhuǎn)換:outpor

22、tb(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 );  

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論