精简ISA总线扩展应用实例_第1页
精简ISA总线扩展应用实例_第2页
精简ISA总线扩展应用实例_第3页
精简ISA总线扩展应用实例_第4页
精简ISA总线扩展应用实例_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上精简ISA总线扩展应用实例  ARM的嵌入式主板系列产品为了支持客户的各种应用扩展,所有的ARM9系列和X86系列的嵌入式主板均带有精简ISA扩展总线。ISA总线是PC机最经典的扩展总线(在嵌入式领域,通常以PC104总线的形式出现),在工业控制领域有着广泛的应用,以及深厚的应用基础。所谓精简ISA总线就是在保持通用ISA总线时序不变的前提下,仅保留常用的总线信号,以最大限度的减少总线总的信号数量,以适应模块的小型化。ARM的精简ISA总线包括8位数据总线、5位地址总线(可扩展到13位)、片选控制线、读写控制线以及中断请求线。ARM所提供的评估开发底板将这些

2、信号线制定了一个接口标准,采用双排20芯 IDC插针,用户可利用精简ISA总线进行系统功能的扩展。         在ARM的精简ISA总线中,设置了2条独特的片选控制信号CS0#和CS1#,这样就省去了大量的高位地址总线。CS0#和CS1#为低电平有效的脉冲信号。在x86 系列的嵌入式产品中,CS0#片选信号的地址区域为0x2000x21F,CS1#片选信号的地址区域为0x300 0x31F。在ARM9系列的嵌入式产品中,客户就不用关心精简ISA总线的绝对地址,只要选定一个片选信号及基于这个片选的地址偏移量即可。

3、如在X86系统下选用了CS1作片选信号,对0x301进行操作,则相对于ARM系统,可使用CS1#、地址偏移量为1的端口。ARM9系列板卡的CS0#、CS1#所对应的地址区域范围有所不同。EM9000有13条地址线,每位片选可访问8K的地址空间。EM9160、EM9161的每位片选可访问32 个地址空间。EM9260、EM9360的CS0#可访问到8K的地址空间,CS1#可访问到1K的地址空间。         以下是ARM所提供的精简ISA扩展总线接口的信号定义:信号名称及简要描述精简ISA信号名称及简要描述PIN

4、#PIN#  RESET#,复位输出,低有效12  SA0,地址总线  SD0,数据总线,LSB34  SA1,地址总线  SD1,数据总线56  SA2,地址总线  SD2,数据总线78  SA3,地址总线  SD3,数据总线910  SA4,地址总线  SD4,数据总线1112  WE#,写信号控制线,低有效  SD5,数据总线1314  RD#,读信号控制线,低有效  SD6,数据总线1516  CS1#,I/O片选线,低有效&#

5、160; SD7,数据总线,MSB1718  VCC,电源输出  IRQ,中断请求,上升沿有效1920  GND,公共地         为了便于用户理解精简ISA总线接口如何进行编程,本节以x86指令和ARM系统为例,简单介绍基于ARM嵌入式主板的精简ISA的应用。由于x86、EM9000、EM9x6x三种系统的ISA总线读写操作函数不一样,所以在具体使用时,应当参考相应的'*.h'文件。以下是基于ARM的嵌入式主板的精简ISA总线操作指令表,以便查询:系统ISA读I

6、SA写  x86系列  inport( ) 或 inportb( )  outport( ) 或 outportb( )  EM9000  EM9000_READ( )  EM9000_WRITE( )  EM9x6x系列  ISA_ReadUchar( )  ISA_WriteUchar( )         X86系统使用DOS操作系统,其指令也是标准的C函数,所以操作ISA时使用的时绝对地址。ARM嵌入式主板使用的WIN

7、CE操作系统,存在地址映射问题,同时使用户更加方便对ISA的使用,所以对ISA操作的过程被封装成一个操作函数后再提供给用户,在对ISA操作时不需要给出绝对地址,但是需要指明所使用的片选信号及基于当前片选信号的偏移地址。下面的读操作也是相同的。 ISA总线的写操作:        C语言ISA总线写操作函数:        outportb ( 0x301,  ub1 ); / 将ub1的数据写入0x301地址或寄存器 

8、;        EM9000 ISA总线写操作函数:        #define CS1# 1  / ARM系统的CS1片选信号的定义,以下不再说明        EM9000_WRITE ( CS1# , 0x1 , ub1 ); / 将ub1的数据写入CS1片选信号使能的1偏移地址    &

9、#160;    EM9x6x ISA总线写操作函数:        ISA_WriteUchar ( CS1#, 0x1 , ub1); / 将ub1的数据写入CS1片选信号使能的1偏移地址         对应的总线写时序图为(本文中的总线周期示意图以ARM系列模块为例): ISA总线的读操作:         C

10、语言ISA总线读操作函数:        UCHAR ub1 = inportb ( 0x301 ); / 将0x301地址或寄存器的数据读入ub1         EM9000 ISA总线读操作函数:        UCHAR ub1 = EM9000_READ ( CS1# , 0x1 ); / 将CS1片选信号使

11、能的1偏移地址的数据读入ub1          EM9x6x ISA总线读操作函数:         ISA_ReadUchar ( CS1#, 0x1 , &ub1); / 将CS1片选信号使能的1偏移地址的数据读入ub1         对应的总线时序关系为:    

12、0;    如果应用程序要读写一个16-bit的数据,即一个字时,在x86系统中,可以使用:        unsigned int ui1 = inport(0x301);  / 读16位数据        outport(0x301, ui1);     / 写16位数据     &#

13、160;   利用C函数一次性完成操作,在ISA总线上会自动生成两个8位数据的读写周期,分别访问低位字节和高位字节。在AD、DA的访问中经常会碰到这样的情形。         对ARM9系统,应用只能通过两次调用总线读写函数分别处理16位数据的低位字节和高位字节,如用EM9000 ISA读写操作为例:        UCHAR ub1 = EM9000_READ ( CS1# , 0x1 );  

14、/ 获得低位字节。        UCHAR ub2 = EM9000_READ ( CS1# , 0x2 );  / 获得高位字节。        ui1 =( ub2 << 8)| ub1;               / 高低位字节合成16位数据  &

15、#160;      如果是写操作,则使用同样的方式:        EM9000_WRITE ( CS1# , 0x1 , (ub1&0xff) );     / 写低字节数据        EM9000_WRITE ( CS1# , 0x2 , (ub1>>8) );  / 写高字节数据     

16、;    在使用精简ISA总线进行扩展时,为了使总线的信号传输更加可靠,应在总线上的所有信号线加上RC网络以达到最佳的信号传输,同时,在高速的数据总线上,可以使用HCT245作一次驱动。如下图所示:   扩展应用 1、用精简ISA进行数据I/O扩展        用户如果使用的I/O较多,ARM提供的嵌入式主板上的数据I/O又不够使用要求,则用户可以使用精简ISA总线来进行扩展。仅使用3片简单的74逻辑器件,就可方便扩展出8路输入8路输出。ARM的ETA7

17、16扩展模块就是按照这种方式来实现的。         接口译码电路用一片74HCT139做完成。         在X86系统下,应用程序执行读操作时:        unsigned char ub1 = inportb ( 0x300 );  / 把外部状态读取并存放到ub1中     

18、60;   在EM9000系统下,应用程序执行读操作:        UCHAR ub1 = EM9000_READ (CS1# , 0x0);         74HCT245被译码信号RD300H#选通,外部的输入状态INPUT0 INPUT7将呈现在数据总线SD0 SD7上,CPU将在RD300H#的上升沿时刻把总线上的数据锁存到ub1。       

19、  类似的,当应用程序执行写操作时:         X86系统下写:        outportb ( 0x300 , ub1 );  / 把ub1数据输出送到0x300端口         在EM9000系统下:        EM9000_WRITE (CS1# , 0x

20、0 , ub1);         把ub1的数据送到ISA数据总线上,译码信号WE300H#变低有效,并在其上升沿时刻把总线上的数据锁存到74HCT273的8个寄存器中,74HCT273的8个寄存器的输出OUTPUT0 OUTPUT7将保持不变,直至有新数据写入。当系统复位或上电启动时,低有效的复位信号RESET#将保证把74HCT273的输出清零。 2、用精简ISA总线进行A/D采集扩展(应用模块:ETA197)        用户

21、还可以通过精简ISA总线来扩展具有通用并行接口的A/D转换器,以实现简单的数据采集。以下是通过ISA总线连接MAX197的信号接法,由于MAX197只有12位数据宽度,这里使用SA0地址线来作为高、低字节数据的选择,正好形成了两个连续的地址,方便函数的操作。         对MAX197进行AD转换的基本步骤为:         X86系统下:        1、写控制字节,

22、启动AD转换:outportb(0x300, CtrlByte);         2、延时15us        读取转换数据:unsigned int ub1 = inport(0x300);        / ub1为读入的16位数据         或EM9000系统下: 

23、;       1、写控制字节,启动AD转换:        EM9000_WRITE(CS1# , 0x0 , CtrlByte );        2、延时15us        3、读取转换数据:        ub1 = EM9000_READ(CS1# , 0x0 );   

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论