当前位置: 首页 > 专利查询>上海大学专利>正文

基于MCS-51架构的16M字节程序存储器寻址空间扩充方法技术

技术编号:2856101 阅读:399 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种16M字节程序存储器寻址空间扩充方法。本方法是基于8051体系,采用分时复用的方法,对程序存储器进行分段辅助设计,将可寻址16M字节的程序存储空间划分为256段,段地址由高八位程序地址决定,共有256个段地址,每一个段内有64K字节的程序寻址空间,由程序地址的中八位和低八位程序地址决定段内地址,在地址总线不增加,和整个指令体系不变的情况下,使外部程序存储器寻址空间从64K字节扩充到16M字节,从而使基于MCS-51架构的微控制器能够运行大量算法极其复杂的程序。本16M字节程序存储器寻址空间扩充方法可应用于基于8051指令体系的单片微控制器,亦可应用于其它微控制器、微处理器等领域。

【技术实现步骤摘要】

本专利技术涉及一种基于MCS-51架构的16M字节程序存储器寻址空间扩充方法,可应用于基于8051指令体系的单片微控制器,亦可应用于其它微控制器、微处理器等领域。
技术介绍
程序存储器(Code Memory)是用来存放用户指令程序的一段空间,微控制器或是微处理器通过执行这些指令程序,从而实现和完成某种特殊的功能和任务。基于Intel MCS-51架构的微处理器有16位地址总线,可以寻址64K字节的程序存储器空间。根据系统的特定需要和相应的功能要求,这个64K字节的空间一般包括程序主模块以及许多的调用子模块和中段子模块。对于含有算法及其复杂、程序量巨大的系统,主程序有可能包括许多子模块,子模块还有可能嵌套其他子模块,由于算法很复杂,所以每个子模块的容量也极有可能非常庞大,譬如数字图像处理系统,数字图像处理本身就含有海量的算法,且每种算法可能非常复杂,如果此系统还包括知识库的管理、知识自学习等功能,那么64K字节的程序存储器空间将远远不能满足此类系统的需求。又由于基于Intel MCS-51架构的微控制器是应用极为广泛的一类处理器,使用历史悠久,有丰富的第三方支持软件和仿真工具,为广大工程师所熟悉,因此如能在既不改变指令系统又不增加地址总线的情况下,扩充程序存储器的寻址空间到16M字节,将大大提高8051架构微控制器的性能。
技术实现思路
本专利技术的目的在于提供一种基于MCS-51架构的程序存储器寻址空间扩充方法,在地址总线不增加,和整个指令体系不变的情况下,外部程序存储器寻址空间从64K字节扩充到16M字节,从而使基于MCS-51架构的微控制器能够运行大量算法极其复杂的程序。为达到上述目的,本专利技术的构思如下要实现基于MCS-51架构的16M字节程序存储器的寻址能力,不修改与标准8051相兼容的指令集,而采用将程序存储器进行分段的辅助设计方法。即将可寻址16M字节的程序存储空间划分为256个段,段地址由高八位程序地址决定,共有256个段地址。每一个段内有64K字节的程序寻址空间,由程序地址的中八位和低八位程序地址决定段内地址。程序地址寄存器PROGA(Program Address)设计成由段地址和低16位地址组成的24位地址,使之可以访问16M字节的程序存储空间;程序指针计数器PROGRAM_COUNTER(Program Counter)保持低16位地址不变。根据上述构思,本专利技术采用下述技术方案一种基于MCS-51架构的16M字节程序存储器寻址空间扩充方法,基于8051体系,其特征在于采用分时复用的方法,对程序存储器进行分段辅助设计,将可寻址16M字节的程序存储空间划分为256个段,段地址由高八位程序地址决定,共有256个段地址,每一个段内有64K字节的程序寻址空间,由程序地址的中八位和低八位程序地址决定段内地址,在地址总线不增加,和整个指令体系不变的情况下,对外部程序存储器寻址空间从64K字节扩充到16M字节;其具体步骤为a.设定段地址特殊功能寄存器ROM_DUAN,来确定高八位程序地址;b.根据段地址产生的条件和情况的不同,对程序存储器寻址空间扩充操作中高八位程序地址的产生考虑以下四种情况,并设定相关信号(a)用户直接给出的段地址;(b)中断/调用操作后返回的段地址;(c)段地址自增;(d)相对跳转后的段地址;c.程序指针计数器PROGRAM_COUNTER的确定;d.程序地址寄存器PROGA的确定。上述的设定段地址特殊功能寄存器ROM_DUAN方法为确定段地址特殊功能寄存器ROM_DUAN的地址为FFH,大小为8位,程序存储器16M字节寻址空间的高八位地址由此寄存器内的内容决定。系统复位后,ROM_DUAN的值为#00H;它的值除了可以由用户自行定义以外,还可以由系统自动更新,来确定下一条指令地址的高八位。上述的根据段地址产生的四种情况下设定相关信号的具体步骤为a)与用户自定义段地址内容有关的寄存器和信号REG_RESULT用户自行定义的段地址内容8位寄存器;ROM_DUAN_WRITE对段地址特殊功能寄存器ROM_DUAN进行写操作的写有效信号(低电平有效);当ROM_DUAN_WRITE信号为低电平时,REG_RESULT的值写入段地址特殊功能寄存器ROM_DUAN内。b)两个由堆栈内弹出的8位数据XRAMDI从外部数据存储器堆栈弹出的段地址内容;SOURCE_DI从内部数据存储器堆栈弹出的段地址内容;当ISP_INUSE信号为“1”时,SOURCE_DI的值在C1P3先传送给中间变量寄存器ROM_DUAN_RET,先暂存24位程序地址的高八位,在CLP2由ROM_DUAN_RET寄存器传给段地址特殊功能寄存器ROM_DUAN;当ISP_INUSE信号为“0”时,XRAMDI的值在C2P2先传送给中间变量寄存器ROM_DUAN_RET,先暂存24位程序地址的高8位,在CLP2由ROM_DUAN_RET寄存器传给段地址特殊功能寄存器ROM_DUAN。ISP_INUSE是一个判断信号,值为1时,表示堆栈处在内部数据存储器上;值为0时,表示堆栈处在外部数据存储器上。c)ROM_0用户无法访问,由硬件自动产生的值,保存着段地址自增一以后的值;当程序顺序执行(无跳转和调用情况),发生跨段情况时,既当程序指针计数器PROGRAM_COUNTER的当前值为#0FFFFH时,并且下一个程序地址寄存器NEXT_PROGRAM_ADDR的值为#0000H时,ROM_0的值赋给段地址特殊功能寄存器ROM_DUAN,形成新的程序地址寄存器PROGA高八位值。d)ROM_1用户无法访问,由硬件自动产生的值,保存着段地址自减一以后的值;当程序执行相对跳转指令后,如果发生了跨段的情况,即程序指针指向了下一个段或上一个段时,段地址特殊功能寄存器会自动更新。如果向下跳转,那么ROM_0的值赋给ROM_DUAN;如果向上跳转,那么ROM_1的值赋给ROM_DUAN。上述程序确定指针计数器PROGRAM_COUNTER的具体步骤为16位程序指针计数器PROGRAM_COUNTER由下一个程序地址寄存器NEXT_PROGRAM_ADDR组成。上述的确定程序地址寄存器PROGA的具体步骤为24位程序地址寄存器PROGA由段地址特殊功能寄存器ROM_DUAN和下一个程序地址寄存器NEXT_PROGRAM_ADDR组成。程序地址寄存器PROGA除执行MOVCS指令外,后十六位地址均与程序指针寄存器PROGRAM_COUNTER相同;当执行诸如MOVC A,@A+PC或MOVC A,@A+DPTR指令的过程中,PROGRAM_COUNTER寄存器的值始终不变,而PROGA寄存器的内容改变为由8位段地址和16位(A+PC)或(A+DPTR)组成,使微控制器能从更新的地址处读取数据赋值给累加器A。上述的REG_RESULT寄存器的具体设置步骤为8位REG_RESULT寄存器的值来自于8位程序存储器输入数据寄存器PROGDI,PROGDI的内容是由外部程序存储器数据线输出的8位数据组成的,既有用户自己定义的段地址的内容。PROGDI与PORT0I相连,PORT0I是微控制器的8位数据输入口,它可以连接在外部程序存储器数据输出线上。上述本文档来自技高网...

【技术保护点】
一种基于MCS-51架构的16M字节程序存储器寻址空间扩充方法,基于8051体系,其特征在于:采用分时复用的方法,对程序存储器进行分段辅助设计,将可寻址16M字节的程序存储空间划分为256个段,段地址由高八位程序地址决定,共有256个段地址,每一个段内有64K字节的程序寻址空间,由程序地址的中八位和低八位程序地址决定段内地址,在地址总线不增加,和整个指令体系不变的情况下使外部程序存储器寻址空间从64K字节扩充到16M字节;其具体步骤为:a.设定段地址特殊功能寄 存器ROM_DUAN,来确定高八位程序地址;b.根据段地址产生的条件和情况的不同,对程序存储器寻址空间扩充操作中高八位程序地址的产生考虑以下四种情况,并设定相关信号:(a)用户直接给出的段地址;(b)中断/调用操作后 返回的段地址;(c)段地址自增;(d)相对跳转后的段地址;c.程序指针计数器PROGRAM_COUNTER的确定;d.程序地址寄存器PROGA的确定。

【技术特征摘要】
1.一种基于MCS-51架构的16M字节程序存储器寻址空间扩充方法,基于8051体系,其特征在于采用分时复用的方法,对程序存储器进行分段辅助设计,将可寻址16M字节的程序存储空间划分为256个段,段地址由高八位程序地址决定,共有256个段地址,每一个段内有64K字节的程序寻址空间,由程序地址的中八位和低八位程序地址决定段内地址,在地址总线不增加,和整个指令体系不变的情况下使外部程序存储器寻址空间从64K字节扩充到16M字节;其具体步骤为a.设定段地址特殊功能寄存器ROM_DUAN,来确定高八位程序地址;b.根据段地址产生的条件和情况的不同,对程序存储器寻址空间扩充操作中高八位程序地址的产生考虑以下四种情况,并设定相关信号(a)用户直接给出的段地址;(b)中断/调用操作后返回的段地址;(c)段地址自增;(d)相对跳转后的段地址;c.程序指针计数器PROGRAM_COUNTER的确定;d.程序地址寄存器PROGA的确定。2.根据权利要求1所述的基于MCS-51架构的16M字节程序存储器寻址空间扩充方法,其特征在于所述的设定段地址特殊功能寄存器ROM_DUAN的方法为确定段地址特殊功能寄存器ROM_DUAN的地址为FFH,大小为8位,程序存储器16M字节寻址空间的高八位地址由此寄存器内的内容决定;系统复位后,ROM_DUAN的值为#00H;它的值除了可以由用户自行定义以外,还可以由系统自动更新,来确定下一条指令地址的高八位。3.根据权利要求1所述的基于MSC-51架构的16M字节程序存储器寻址空间扩充方法,其特征在于所述的根据段地址产生的四种情况下设定相关信号的具体步骤为a.REG_RESULT用户自行定义的段地址内容8位寄存器;ROM_DUAN_WRITE对段地址特殊功能寄存器ROM_DUAN进行写操作的写有效信号(低电平有效);当ROM_DUAN_WRITE信号为低电平时,REG_RESULT的值写入段地址特殊功能寄存器ROM_DUAN内;b.两个由堆栈内弹出的8位数据XRAMDI从外部数据存储器堆栈弹出的段地址内容;SOURCE_DI从内部数据存储器堆栈弹出的段地址内容;当ISP_INUSE信号为“1”时,SOURCE_DI的值在C1P3先传送给中间变量寄存器ROM_DUAN_RET,先暂存24位程序地址的高八位,在CLP2由ROM_DUAN_RET寄存器传给段地址特殊功能寄存器ROM_DUAN;当ISP_INUSE信号为“0”时,XRAMDI的值在C2P2先传送给中间变量寄存器ROM_DUAN_RET,先暂存24位程序地址的高8位,在CLP2由ROM_DUAN_RET寄存器传给段地址特殊功能寄存器ROM_DUAN。ISP_INUSE是一个判断信号,值为1时,表示堆栈处在内部数据存储器上;值为0时,表示堆栈处在外部数据存储器上;c.ROM_0用户无法访问,由硬件自动产生的值,保存着段地址自增一以后的值当程序顺序执行(无跳转和调用情况),发生跨段情况时,既当程序指针计数器PROGRAM_COUNTER的当前值为#0FFFFH时,并且下一个程序地址寄存器NEXT_PROGRAM_ADDR的值为#0000H时,ROM_0的值赋给段地址特殊功能寄存器ROM_DUAN,形成新的程序地址寄存器PROGA高八位值;d.ROM_1用户无法访问,由硬件自动产生的值,保存着段地址自减一以后的值当程序执行相对跳转指令后,如果发生了跨段的情况,即程序指针指向了下一个段或上一个段时,段地址特殊功能寄存器会自动更新。如果向下跳转,那么ROM_0的值赋给ROM_DUAN;如果向上跳转,那么ROM_1的值赋给ROM_DUAN。4.根据权利要求1所述的基于MCS-51架构的16M字节程序存储器寻址空间扩充方法,其特征在于所述的确定程序指针计数器PROGRAM_COUNTER的具体步骤为16位程序指针计数器PROGRAM_COUNTER由下一个程序地址寄存器NEXT_PROGRAM_ADDR组成。5.根据权利要求1所述的基于...

【专利技术属性】
技术研发人员:胡越黎曹家麟冉峰景蔚亮
申请(专利权)人:上海大学上海电力学院
类型:发明
国别省市:31[中国|上海]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1