单片机大容量数据存储器的扩展
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
一、 1.1摘要 (2)
1.2关键词 (2)
1.3基本原理 (2)
二、设计方案 (2)
三、硬件设计 (2)
2.1系统的硬件设计及功能 (2)
2.2各元件的功能及作用 (3)
2.3简单大容量数据存储器系统扩展 (8)
三、系统软件设计 (10)
四、结束语 (12)
参考文献 (13)
一、
1.1摘要
在单片机构成的实际测控系统中,仅靠单片机内部资源是不行的,单片机的最小系统也常常不能满足要求,因此,在单片机应用系统硬件设计中首先要解决系统扩展问题。51单片机有很强的外部扩功能,传统的用IO口线直接控制大容量数据存储器的片选信号的扩展系统存在运行C51编译的程序时容易死机的缺点。文中介绍了一种改进的基于CPLD的51系列单片机大容量数据存储器的扩展方法,包括硬件组成和软件处理方法。
1.2关键词
CPLD 数据存储器 EPM7128
1.3基本原理
MCS-51 单片机系统扩展时,一般使用P0 口作为地址低8位(与数据口分时复用),而P2口作为地址高8位,它共有16根地址总线,最大寻址空间为64KB。但在实际应用中,有一些特殊场合,例如,基于单片机的图像采集传输系统,程控交换机话单的存储等,需要有大于64KB 的数据存储器。
二、设计方案
在以往的扩展大容量数据存储器的设计中,一般是用单片机的IO口直接控制大容量数据存储器的片选信号来实现,但是这种设计在运行以C51编写的程序(以LARGE 方式编译)时往往会出现系统程序跑飞的问题,尤其是在程序访问大容量数据存储器(如FLASH)的同时系统产生异常(如中断),由于此时由IO 口控制的片选使FLASH 被选中而SRAM 无法被选中,堆栈处理和函数参数的传递无法实现从而导致程序跑飞的现象。文章介绍一种基于CPLD 的大容量数据存储器的扩展系统,避免了上述问题的产生,提高了扩展大容量数据存储器系统的可靠性。该系统MCU 采用89C52,译码逻辑的实现使用了一片EPM7128 CPLD 芯片,系统扩展了一片128K 的SRAM,一片4M 字节的NOR FLASH,以上芯片均为5V 供电。
三、硬件设计
2.1 系统的硬件构成及功能
W241024A 是128K × 8 位的静态RAM,共需17 根地址线,其A0~A7 接经CPLD 锁存输出的
A0~A7,A8~A14 接89C52 的A 8 ~ A 1 4 ,A 1 5 、A 1 6 分别接C P L D 输出的S R A M _ A 1 5 、SRAM_A16;M29F032D 是4M × 8 位的NOR 型FLASH,共需22 根地址线。A0~A14 的接法与W241024A 的相同,A15~A21接经CPLD 锁存输出AL15~AL21;所有数据存储器的读写控制线与M C U 相应的读写控制线相连。S R A M 和F L A S H 的片选信号由C P L D 内部译码产生:/ C S _ S R A M 接S R A M 的片选,/ C S _ F L A S H 接F L A S H 的片选。
2.2各元件的功能及作用
1.CPLD 的功能实现
CPLD就是复杂可编程逻辑器件复杂可编程逻辑器件(CPLD)。CPLD提供了非常好的可预测性,因此对于关键的控制应用非常理想。CPLD主要是由可编程逻辑宏单元(MC,Macro Cell)围绕中心的可编程互连矩阵单元组成。其中MC结构较复杂,并具有复杂的I/O单元互连结构,可由用户根据需要生成特定的电路结构,完成一定的功能。由于CPLD内部采用固定长度的金属线进行各逻辑块的互连,所以设计的逻辑电路具有时间可预测性,避免了分段式互连结构时序不完全预测的缺点。
IDT7205为FIFO型异步读写的存储器芯片,容量为8192×9比特,存取时间为12ns,有空、半满、满三个标志位,最大功耗为660mW,工作电压为+5V。
EPM7128是可编程的大规模逻辑器件,为ALTERA公司的MAX7000系列产品,具有高阻抗、电可擦等特点,可用门单元为2500个,管脚间最大延迟为5ns,工作电压为+5V。
MSM486DX属于PC104嵌入式系统的5X86系列,为AMD-133MHz CPU,具有COM1、COM2两个串口,一个LPT并口,一个FLOPPY接口,一个IDE接口,一个VGA/LCD接口,一个AT-KEYBOARD 接口,16个中断,额定功率为8W,工作电压为+5V。
使用CPLD 器件可以提高系统设计的灵活性,并且可以简化电路设计,节省很多常规电路中的接口器件和I/O 口线。系统将单片机的地址线、各种控制和状态信号均引入CPLD,实现系统的地址译码和部分I/O 控制。系统中C P L D 采用的是MAX7000 系列的EPM7128STC100 - 10。AL15~AL22 为系统锁存出来的高8 位地址,该地址锁存器的地址为:0x7F00;状态缓冲器地址为:0x7F20,通过状态缓冲器可以读取FLASH 的当前状态,判断FLASH 当前状态是忙还是空闲,如果应用系统中还有其它状态信号可以接至该状态缓冲器的输入端。/CS2~/CS7 可以用作其他器件的片选。
1 2 8 K 的S R A M 被S R A M _ A 1 5 和S R A M _ A 1 6 分成4 个B A N K ,每个B A N K 均为3 2 K ,其中B A N K 0 地址范围是:0x0000~0x7EFF,当A15 为0 时BANK0 被选中,BANK0 可用来存储用户定义的各种变量,以LARGE 方式编译的C51 用户函数的参数传递也在该
区实现,只要设置C51 编译器的片外SRAM 的大小为0x7F00 字节 (32K - 256 字节),起止地址为:0x0000。这样当系统在访问外部大容量数据存储器(如4M 的F L A S H )并且系统产生中断时,由于系统在函数调用时自动使A15 为0 ,故此时BANK0 是可用的,这样保证了系统在这种情况下能稳定的运行。由于访问B A N K 1 ~ B A N K 3 时A 1 5 必须为1 ,故BANK1~BANK3 的地址范围均为:0x8000~0xFEFF,通过SRAM_A15 和SRAM_A16 来区分它们是属于哪个BANK 的,访问BANK1~BANK3 的前提是AL22 为0 。BANK1~BANK3 可用来存储用户数据。当AL22 和A15 均为1 时4M 的FLASH 被选中,FLASH 被AL15~AL21 分成了128 页,每页为32K。
图2 CPLD的内部结构图
2、 AT89C52简介
89C52是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含8Kbytes的可反复擦写的只读程序存储器和256byte的随机数据存储器,器件采用ATMEL公司高密度\非易失性存储技术生产,与标准的51指令系统以8052产品引脚兼容,片内置通用8位中央处理器和FLASH存储单元,功能强大89C52单片机适合于许多较为复杂控制应用场合.
主要性能参数:
.与MCS-51产品指令和引脚完全兼容
.8K字节可重擦写FLASH闪速存储器
.1000次擦写周期
.全静态操作:0Hz-24 Hz
.三级加密程序存储器
.256*8字节内部RAM