基于PLD的嵌入式系统外存模块设计
可以方便地对内存的扩展部分进行读写。下面以MCS-96的汇编语言为例来说明程序中是如何操作的。比如需要从IOPORT0口连续采集数据,然后存放到RAM中指定的数据块等待处理,则可以写出如下程序:
LD40H,地址值;地址值为即将写入的目的地址,16位按字编址。
ST40H,Address_R_WP;设置写位置指针
REPEAT:
LDB40H,IOPORT0
LDB41H,IOPORTO;40H和41H为内部寄存器,因为按字存储所以连续读两次
ST40H,Address_R_W;写入指定位置条件判断退出循环
JMPREPEAT
从上面这个简单的例子可以看出,这种存储器组织方法大大简化了编程的的复杂性,并且可以采用对位置指针赋初值的方法来实现对扩展存储器中任何一个位置的读写操作。
3地址分配
有了上面的存储器扩展方法,再结合系统的技术参数和单片机的特点,就可以做出一套合理的内存地址分配方案。下面给出单片机的地址划分情况:
0000H~01FFH系统寄存器区,保留0200H~1EFFH用户区,直接映射到FlashROM中的
0200H~1EFFH可以用来存放数据、程序等,该区域可以由单片机直接进行寻址。
1FOOH~1FFFH用户区,实际使用中把Address—1lR、Address_F_WP等地址以及一些特殊设备如A/D转换器、LCD显示屏等的访问地址设置在这个区域。
2000H~207FH该区域是中断向量区、芯片配置字节区、保留字区等,直接映射到FlashROM中的2000H-207FH。
2080H~8FFFH用户区,单片机启动也是从2080H处开始执行程序的,因此把这个地址范围直接映射到FlashROM的2080H~8FFFH,该区域设置系统的引导、初始化等程序。
9000H~FFFFH用户区,将这一段映射到RAM的9000H~FFFFH,作为系统程序的运行区域。
上面的分配方案可以通过对地址总线进行译码生成相应的片选信号/CSl和/CS2来实现。这样分配后,FlashROM和RAM的使用情况如图4所示。
图4中白色区域是单
片机通过总线直接寻址的区域,可以由单片机直接进行访问。灰色区域为内存的扩展区域,不能被单片机直接访问,但可以通过前面介绍的方法由EPLD生成地址进行读写操作。下面简要介绍一下各个区域在实际中的用途:FlashROM中的0000H~1FFH和1F00H~1FFFH因为容量很小,没有被利用。系统启动后从FlashROM的2080H处开始执行程序,将2000H~8FFFH的内容复制到RAM中的9000H~FFFFH,然后跳转到RAM中执行系统程序。由于HashROM的速度慢,需要在读写过程中插入一定量的等待周期,因此将程序复制到RAM中执行可以提高系统的性能;同时系统在对FlashROM进行写入操作后,编程阶段的10ms内不能对其进行读取,因此RAM在这个时候也提供了程序运行的位置。这样分配后,程序的长度被限制在28K字节,实际中这个数量完全可以满足系统的需求。HashROM中的9000~FF 《基于PLD的嵌入式系统外存模块设计(第3页)》
本文链接地址:http://www.oyaya.net/fanwen/view/143210.html
LD40H,地址值;地址值为即将写入的目的地址,16位按字编址。
ST40H,Address_R_WP;设置写位置指针
REPEAT:
LDB40H,IOPORT0
LDB41H,IOPORTO;40H和41H为内部寄存器,因为按字存储所以连续读两次
ST40H,Address_R_W;写入指定位置条件判断退出循环
JMPREPEAT
从上面这个简单的例子可以看出,这种存储器组织方法大大简化了编程的的复杂性,并且可以采用对位置指针赋初值的方法来实现对扩展存储器中任何一个位置的读写操作。
3地址分配
有了上面的存储器扩展方法,再结合系统的技术参数和单片机的特点,就可以做出一套合理的内存地址分配方案。下面给出单片机的地址划分情况:
0000H~01FFH系统寄存器区,保留0200H~1EFFH用户区,直接映射到FlashROM中的
0200H~1EFFH可以用来存放数据、程序等,该区域可以由单片机直接进行寻址。
1FOOH~1FFFH用户区,实际使用中把Address—1lR、Address_F_WP等地址以及一些特殊设备如A/D转换器、LCD显示屏等的访问地址设置在这个区域。
2000H~207FH该区域是中断向量区、芯片配置字节区、保留字区等,直接映射到FlashROM中的2000H-207FH。
2080H~8FFFH用户区,单片机启动也是从2080H处开始执行程序的,因此把这个地址范围直接映射到FlashROM的2080H~8FFFH,该区域设置系统的引导、初始化等程序。
9000H~FFFFH用户区,将这一段映射到RAM的9000H~FFFFH,作为系统程序的运行区域。
上面的分配方案可以通过对地址总线进行译码生成相应的片选信号/CSl和/CS2来实现。这样分配后,FlashROM和RAM的使用情况如图4所示。
图4中白色区域是单
片机通过总线直接寻址的区域,可以由单片机直接进行访问。灰色区域为内存的扩展区域,不能被单片机直接访问,但可以通过前面介绍的方法由EPLD生成地址进行读写操作。下面简要介绍一下各个区域在实际中的用途:FlashROM中的0000H~1FFH和1F00H~1FFFH因为容量很小,没有被利用。系统启动后从FlashROM的2080H处开始执行程序,将2000H~8FFFH的内容复制到RAM中的9000H~FFFFH,然后跳转到RAM中执行系统程序。由于HashROM的速度慢,需要在读写过程中插入一定量的等待周期,因此将程序复制到RAM中执行可以提高系统的性能;同时系统在对FlashROM进行写入操作后,编程阶段的10ms内不能对其进行读取,因此RAM在这个时候也提供了程序运行的位置。这样分配后,程序的长度被限制在28K字节,实际中这个数量完全可以满足系统的需求。HashROM中的9000~FF 《基于PLD的嵌入式系统外存模块设计(第3页)》