| | 网站首页 | 技术文章 | 专业论文 | PLC可编程 | 单片机 | 变频器 | 传感器 | 嵌入式系统 | 电源技术 | 运动与伺服 | | 校园招聘 | 留言板 | |
|
![]() |
|
| 您现在的位置: 自动化学习网 >> 技术文章 >> 单片机 >> 文章正文 |
|
|||||
| C8051与SRAM的高速接口 | |||||
作者:佚名 文章来源:不详 点击数: 更新时间:2007-5-12 ![]() |
|||||
|
摘要:C8051是美国Cygnal公司生产的、与标准51兼容的高速单片机,速度高达25 MIPS,但它扩展外部SRAM的方式与标准51单片机不同。单片机访问外部存储器的速度直接影响系统的性能。本文介绍两种提高C8051访问外部存储器速度的接口方法,其速度均超过现有文献所给出的接口方法。 关键词:单片机 SRAM C8051 接口方法 C8051系列单片机没有与标准的51单片机那样的数据总线(RD、WR、ALE)等,只能采用通用I/O口模拟总线方式访问外部存储器。 1 扩展外部SRAM的高速接口电路之一 图1 所示电路可提高访问外部SRAM的速度。该电路充分利用C8051系列口线多的优势,避免采用端口复用的费时方法。采用该接口电路的读和写周期的时序波形分别修改为如图2和图3所示。为节省篇幅,这里略去初始化部分(初始化数字交叉开关和设置端口)的程序,直接给出读、写程序。 SRAM_Read: MOV P2,DPH ;输出外部地址A15..A8 MOV P3,DPL ;输出外部地址A7..A0 ANL P1,#0b7h ;选择SRAM,发出读选通 MOV A,P0 ;读数据 ORL P1,#48h ;使读选通和SRAM片选无效 RET 同样,完成写1个字节到外部SRAM的操作共需15字节、19个周期,需要0.95μs(包括执行RET指令的0.25μs)。 图4给出了C8051扩展外部SRAM的接口电路,图5和图6分别给出了C8051访问(读或写)外部存储器的时序图。 由图4可以看出,此外部扩展RAM的高速接口电路的改进为:①高、低位地址都由P2口提供,而不是由P3口分时复用地提供低位地址和数据(总线)。这样,可以节省每次读写都要改变P3口的设置而消耗的时间。②尽可能地把控制信号同步给出,特别是在读外部数据存储器时,同时给出CS、ALE和WR信号,可以节省1~2个指令周期的时间。 为方便起见,下面根据图4的接口电路,给出常量和声明: DATA1 EQU P3 ;数据端口引脚(AD7..0) DATACF EQU PRT3CF ;端口配置寄存器对数据 ADDR EQU P2 ;地址端口引脚(A15..8) ADDRCF EQU PRT2CF ;端口配置寄存器对地址 A16 EQU P1.5 ;最高地址位(地址块选择) RD EQU P1.4 ;读选通(低电平有效) WR EQU P1.3 ;写选通(低电平有效) ALE EQU P1.2 ;地址锁存信号(低电平有效) CS EQU P1.1 ;SRAM片选信号(低电平有效) 下面为主程序中与访问外部SRAM有关的部分(初始化数字交叉开关和端口、数据指针等): ORG 0B3H ;禁止看门狗定时器,中断尚未被允许。如果中 ;断被允许,应用确禁止中断,以保证下面的两 ;条指令能在4个时钟周期内执行完 Main: MOV WDTCN,#0DEH MOV WDTCN,#0ADH ;设置交叉开关 MOV XBR2,#40h ;弱上拉允许交叉开关 LCALL SRAM_Init ;初始化SRAM MOV R0,#0ffh MOV DPH,#00h ;初始化16位地址 MOV DPL,#00h MOV A,R0 ;装写入值 . . . 下面的子程序初始化SRAM接口逻辑,必须在任何SRAM_Read或SRAM_Write操作之前调用一次,该程序可作为复位操作的一部分。该程序假定交叉开关已经被允许(XBR2.6=“1”)。 “读”初始化SRAM接口逻辑子程序: SRAM_Read_Init: MOV DRATACF,#00h ;允许端口3(DATA)作为输入总线 MOV ADDRCF,#0ffh ;允许端口2(ADDR)作为输出 MOV ADDR,#0ffh ;驱动为高电平($ff) ORL PRT1CF,#00111110b ;允许P1.7..3作为输出 ANL P1,#11011011b ;A16=ALE=“0”,选择存储块1 ORL P1,#00011010b ;RD,WR,CS=“1” RET “写”初始化SRAM接口逻辑子程序: SRAM_Write_Init: MOV DATACF,#0FFh ;允许端口3(DATA)作为输出总线 MOV DATA1,#0ffh ;驱动为高电平($ff) MOV ADDRCF,#0ffh ;允许端口2(ADDR)作为输出 MOV ADDR,#0ffh ;驱动为高电平($ff) ORL PRT1CF,#00111110b ;允许P1.7..3作为输出ANL P1,#11011011b ;A16=ALE=“0”,选择存储块1 ORL P1,#00011010b ;RD,WR,CS=“1” RET 相应地从外部SRAM读1个字节的数据的程序(SRAM_Read)为: ;该程序从DPTR指向的地址读取数据存到ACC。此处未处; 理存储块选择(操作A16); SRAM_Read: MOV ADDR,DPL ;输出外部地址A7..A0 SETB ALE ;锁存该地址 ANL P1,#0C7h ;选择SRAM,发出读选通、ALE=0 MOV ADDR,DPH :输出外部地址A15..A8 MOV A,DATA1 ;读数据(注对于这片SRAM读操作建立时间为 ;45ns,在SYSCLK=20MHz时,该指令需2个时; ;钟周期,或50ns×2=100ns ORL P1,#48h ;使读选通和SRAM片选无效 RET 完成从外部SRAM读1个字节的操作共需17字节、21个周期,即每从外部SRAM中读1个字节需要1.05μs(包括执行RET指令的0.25μs)。 同样,写1个字节的数据到外部SRAM的程序 (SRAM_Write)为: ;该程序将ACC中的字节写到DPTR指向地址的外部 ;SRAM单元,此处未处理存储块选择 SRAM_Write: MOV ADDR,DPL ;输出外部地址A7..A0 SETB ALE ;锁存该地址 CLR ALE MOV ADDR,DPL ;输出外部地址A15..A8 MOV DATA1,a ;将数据送到数据总线 ANL P1,#0d7h ;选择外部SRAM和启动写操作 ORL P1,#028h ;写选通无效和SRAM片选无效 RET:注:在sysclk=20MHz时,这种方式将产生100ns ;宽的写脉冲。该SRAM所要求的最小值为7ns 同样,完成写1个字节到外部SRAM的操作共需19字节、23个周期,需要1.15μs(包括执行RET指令的0.25μs)。在不增加I/O口的情况下,比现有文献给出的接口电路速度提高了50%。 应用指出的是,上述程序是读或写1个字节所需的时间。如果是读或写1个数据块,则平均读或写1个字节所需的时间将缩短到0.8μs(读)或0.9μs(写),比标准51执行1条MOVX指令所需的时间(20MHz时钟时为1.2μs)快30%~50%。 类似地,也可以用八D锁存器锁存低8位地址。 本文介绍了2种提高C8051访问外部SRAM速度的接口电路和相应的程序。第一种方法能够大幅度提高C8051访问外部SRAM的速度,使读或写1个字节的时间缩短到0.95μs(包括执行RET指令的0.25μs时间),但这种方法要多使用1个8位的I/O口。第二种方法既提高C8051访问外部SRAM的速度,使读或写1个字节的时间由1.7μs缩短到1.15μs,同时,还不多占用I/O口线。 利用本文介绍的方法,可以显著地提高单片机C8051的系统性能。该方法不仅仅用于扩展外部RAM,也可用于扩展单片机的其它并行接口上。 |
|||||
| 文章录入:admin 责任编辑:admin | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| 基于PIC的无线数据传输发射机… 基于PSD3XX与ADMC401接口设计… 基于ST72单片机的快速充电系… 基于单片机的MicroDrive接口… 基于单片机的喷墨打印机控制… 利用ASSP实现成本节约,加速… 如何仿真单片机的外围设备 非接触式e5551读写器的开发 基于80C166单片机PEC服务的P… 基于8位微控制器控制硬盘进行… |
网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 文章索引 | 网站地图 | |
| 声明:本网站资源均来源于网络,如涉及版权问题,请通知我们,我们将尽快删除! QQ:279619038 备案序号:吉ICP备06005743号 自动化学习网版权所有 站长:guxing |
|