×
接口总线驱动 > 总线 > 详情

精简ISA扩展总线应用

发布时间:2020-05-24 发布时间:
|

    英创公司的嵌入式网络模块系列产品均具有精简ISA扩展总线,通常包括若干地址总线、8位数据总线、读写控制线、片选控制线以及中断请求线。英创公司所提供的评估开发底板将这些信号线制定了一个接口标准,采用双排20芯IDC插针,交错排列,用户可用该扩展总线进行硬件扩展。片选线CS1出厂默认选择地址段为300H—37FH,例如,当(A6A5A4A3A2A1A0)=(0000101’b),CS1加5条地址线的译码输出端口地址为305H,以下是扩展总线接口的定义:


1、总线时序图,以及和C语言、汇编指令之间的关系
 
    为了便于用户理解精简ISA总线接口如何进行编程,本文简单介绍C语言中的指令、用户操作的函数与总线的时序之间的关系。各个不同模块的CS1#片选地址范围不同,详见相关技术手册,下面以ETR232i的使用为例进行讲解,在此CS1#对应的片选地址范围为300h——37Fh,其中A0——A6的译码为0ah。
 
        C语言端口输出函数:
                outportb ( 0x30a,  ub1 ); //把ub1字节送到0x30a寄存器
        对应的汇编指令为:
                mov  dx ,  0x30a
                mov  al ,   byte ptr ub1;byte ptr ub1为变量ub1对应的存储器
                out   dx ,  al
        对应的总线写时序图为(本文中的总线周期均以ETR232i模块为例):


        C语言端口输入函数:
                char ub1 = inportb ( 0x30a );  //把0x30a地址寄存器的内容读入变量ub1
        对应的汇编指令为:
                mov  dx ,  0x30a
                in    al ,   dx
                mov  byte ptr ub1,  al ; byte ptr ub1为变量ub1对应的存储器[page]
        对应的总线时序关系为:
 


2、用74’s逻辑器件扩展8路输入8路输出
 
    电路如下图所示,用一片74HCT139做译码,则在读300H端口(由于只有A0地址线参与译码,所以302H,304H等地址同样也选通该片74HCT245)的时候,74HCT245将外部输入的状态送到数据总线,此值存储在300H地址中,300H.D0为INPUT0,以此类推,300H.D7为INPUT7。输入操作的C语言语句为:
    Data = inportb ( 0x300 );  //把外部状态存储在0x300端口
 
    同理,在写300H端口的时候,74HCT273将数据总线上的数据锁存,只有当下一次再有数据输出的时候此锁存值才会改变。300H.D0为OUTPUT0,以此类推,300H.D7为OUTPUT7。当系统复位或上电启动时,74HCT273的输出清零。输出操作的C语言语句为:
    outportb ( 0x300,  data );  //把输出字节送到0x300端口
 
    为了电平兼容起见,建议在选用上述器件的时候选择HCT系列。

3、用精简ISA总线进行串口扩展
 
    在需要使用中断控制的场合,利用扩展中的IRQ中断请求信号线,可以实现。以扩展一片16C550为实例进行说明,电路图如下所示。

 


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
SPI总线的特点.工作方式及常见错误解答