微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于PLD的嵌入式系统外存模块设计

基于PLD的嵌入式系统外存模块设计

时间:04-29 来源:互联网 点击:

下面以读Flash ROM为例介绍地址扩展方法。对于可以直接寻址的地址,EPLD作为锁存器,将AD0~AD15分时的地址数据总线分开,生成独立的地址和数据总线。在这里定义了两个特殊的地址:Flash ROM数据块的读地址Address_F_R和读位置指针地址Address_F_RP。首先向Ad-dress_F_RP写入一个16位的二进制数,该数代表了将要读取的数据块的首地址,16位表示范围是0~65535,因此可以指定的首地址范围是64K字即128K字节;然后连续地从Address_F_R进行读取操作,每读一次,位置指针会自动加1而不需要重新设置。如果需要读取新的位置,只需要向Address_F_RP地址写入新的位置数据即可。该功能在EPLD器件内部的实现方法见图3。计数器可同步设置初值、同步计数,在AHDL语言中声明为1pm_counter[5]。其中,CNT_EN为计数使能控制,当CNT_EN为高电平时,每当CLOCK上升沿到来时计数器便会自动加一,从而实现了地址自动增加的功能;CLOCK为同步时钟输入端,上升沿有效;SLOAD为计数器同步设置初值信号,当该信号为高电平时,在CLOCK上升沿的作用下,计数器的输出Q[15..0]=D[15..0],从而实现初始化读取位置的功能。计数器用AHDL语言描述如下:

counter : lPm_counter with(1pm_width=16);

counter.clock=/rd(/we#(a[15..0]!=Address_F_RP);

counter.sload=(a[15..0]==Address_F_RP);

counter.cnt_en=(a[15..0]=Address_F_R);

counter.data[15..0]=D[15..0];

LD 40H,地址值;地址值为即将写入的目的地址,16位按字编址。

ST 40H,Address_R_WP;设置写位置指针

REPEAT:

LDB 40H,IOPORT0

LDB 41H,IOPORTO;40H和41H为内部寄存器,因为按字存储所以连续读两次

ST 40H,Address_R_W ;写入指定位置条件判断退出循环

JMP REPEAT

3 地址分配

有了上面的存储器扩展方法,再结合系统的技术参数和单片机的特点,就可以做出一套合理的内存地址分配方案。下面给出单片机的地址划分情况:

0000H~01FFH 系统寄存器区,保留0200H~1EFFH用户区,直接映射到Flash ROM中的

0200H~1EFFH 可以用来存放数据、程序等,该区域可以由单片机直接进行寻址。

1FOOH~1FFFH 用户区,实际使用中把Address—1lR、Address_F_WP等地址以及一些特殊设备如A/D转换器、LCD显示屏等的访问地址设置在这个区域。

2000H~207FH 该区域是中断向量区、芯片配置字节区、保留字区等,直接映射到Flash ROM中的2000H-207FH。

2080H~8FFFH 用户区,单片机启动也是从 2080H 处开始执行程序的,因此把这个地址范围直接映射到 Flash ROM 的2080H~8FFFH,该区域设置系统的引导、初始化等程序。

9000H~FFFFH 用户区,将这一段映射到 RAM 的9000H~FFFFH,作为系统程序的运行区域。

图4中白色区域是单片机通过总线直接寻址的区域,可以由单片机直接进行访问。灰色区域为内存的扩展区域,不能被单片机直接访问,但可以通过前面介绍的方法由EPLD生成地址进行读写操作。下面简要介绍一下各个区域在实际中的用途:Flash ROM中的0000H~1FFH和1F00H~1FFFH因为容量很小,没有被利用。系统启动后从Flash ROM的2080H处开始执行程序,将2000H~8FFFH的内容复制到RAM中的9000H~FFFFH,然后跳转到RAM中执行系统程序。由于Hash ROM的速度慢,需要在读写过程中插入一定量的等待周期,因此将程序复制到RAM中执行可以提高系统的性能;同时系统在对Flash ROM进行写入操作后,编程阶段的10ms内不能对其进行读取,因此RAM在这个时候也提供了程序运行的位置。这样分配后,程序的长度被限制在28K字节,实际中这个数量完全可以满足系统的需求。Hash ROM中的9000~FFFFH共28K字节,用来保存4段系统运行配置程序,每段长度可达7K字节;10000H-

1FFFFH共64K字节,用来作为采集数据的保存区域。RAM中的0000H~8FFFH共36K字节,用来作为数据的缓存区域。从上面的分析可以看出,最终设计的各项指标都已经超过实际的需求,能很好地解决实际应用问题。

4 合理利用日EADY信号

最后介绍一下单片机就绪信号READY在这个系统中的关键作用。从前面的设计中可以看出系统存在着高速RAM和慢速Hash ROM存储器,开始时,Hash ROM选用了AT29C1024-70JCt31,它是该型号中速度最快的,有效数据建立时间仅为70ns。单片机不插入等待周期的读写时序,如图5所示。

从ALE下降沿地址有效到/RD上升沿的时间是80ns,Hash的响应时间为70ns,再加上EPLD的延时就造成了单片机从Hash ROM读取数据的不稳定,表现在无法对Flash ROM进行在线写入、经常发生错误的执行结果、死机等。为此必须加入等待

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top