兼容MCS-51微处理器的逻辑设计
2013-09-12周霁
周 霁
(中国电子科技集团公司第四十七研究所,沈阳 110032)
1 引言
与工业MCS-51产品指令兼容的低功耗微处理器,广泛应用于我们生活的各个领域,包括各种智能控制、办公自动化,或是工业测控领域的各种机器人、智能仪表、实时控制和数据处理,各种医疗设备以及汽车安全保障系统等。在这些广泛的嵌入式控制系统领域,提供了灵活有效、性价比极高的解决方案。
2 微处理器特点及工作原理介绍
此类低功耗、高性能控制器芯片,具有在系统可编程(ISP)Flash存储器,与工业MCS-51产品指令和引脚兼容。通常这类存储器(比如ATMEL公司的AT89S52)片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有全指令集的8位CPU和在系统可编程8K字节Flash,256字节RAM,32个I/O口,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个7向量2级中断结构,全双工UART串行口,片内晶振及时钟电路。另外,可支持0Hz~33MHz主频时钟操作,支持2种软件可选节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,CPU停止工作,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。芯片架构框图如图1所示。
从图中可以看出,此芯片的核心是C8052 CPU,通过ROM bus从flash中读取指令并执行;并通过RAM_bus访问256 bytes的内部RAM。从CPU中出来的SFR_bus可用来访问特殊功能寄存器,通过这些寄存器来控制芯片外围设备。中断控制模块将产生的中断信号经过处理后,产生中断,送给CPU,这将中断CPU正在执行的指令,而跳转到相应的中断处理入口。
Watch-dog用于防止CPU执行指令时由于某种干扰而出现错误时,产生复位信号而使CPU复位重新执行。
Port控制模块用来控制四个输入/输出端口的输入和输出。
Flash_control模块用来控制内部flash的程序烧写,加密等。
Power_ctrl模块用来实现在不需要CPU工作时,能使整个芯片工作在最小的电流下,以节省功耗。同时它也允许外部事件来将CPU从低功耗模式切换到正常工作模式。
图1 微处理器架构框图
3 微处理器使用模式
用户在使用时,首先将编写好的代码下载到芯片内部的flash中。芯片上电后首先启动CPU从内部的flash中读取代码,将代码放入指令译码器中,CPU再根据指令做出相应的动作,比如操作端口、特殊寄存器、进入省电模式或进行控制、数据运算等。
使用模式方面的特点包括如下几个方面,复位方面包括上电复位、外部引脚复位、WDT溢出复位;时钟方面包括外部晶振、外部时钟直接输入;编程方面包括串行ISP编程、并行ISP编程;定时器方面包括有三个16bit的通用定时器;功耗方面分普通全速工作模式、省电空闲模式、低功耗睡眠模式;储存方面有内部程序模式、外部程序模式。
4 微处理器部分逻辑设计
4.1 程序存储器与数据存储器的设计
程序存储器与数据存储器独立分开,且有内部和外部存储器之分。如果RESET后,EA引脚接地,程序读取只从外部存储器开始。如果EA接电源,程序读写先从内部存储器开始,接着从外部寻址。芯片有256字节片内数据存储器,高128字节与特殊功能寄存器重叠,高128字节与特殊功能寄存器有相同的地址,而物理上是分开的。当一条指令访问高于7FH的地址时,寻址方式决定CPU访问高128字节RAM还是特殊功能寄存器空间。直接寻址方式访问特殊功能寄存器(SFR)。
例如,下面的直接寻址指令访问0A0H(P2口)存储单元
MOV 0A0H,#data
使用间接寻址方式访问高128字节RAM。例如,下面的间接寻址方式中,R0内容为0A0H,访问的是地址0A0H的寄存器。
MOV@R0,#data
4.2 低功耗模式设计
在空闲工作模式下,CPU处于睡眠状态,而片上外部设备保持激活状态。这种状态可以通过软件产生。在这种状态下,片上RAM和特殊功能寄存器的内容保持不变。空闲模式可以被任一个中断或硬件复位终止。
在掉电模式下,晶振停止工作,激活掉电模式的指令是最后一条执行指令。片上RAM和特殊功能寄存器保持原值,直到掉电模式终止。掉电模式可以通过硬件复位和外部中断进行退出。复位重新定义了SFR的数据,但不改变片上RAM的数据。
在掉电模式下唤醒时,会保证电流变化不能太大,且保证时钟能有足够时间稳定。故采用了分阶段完成的办法。如图2所示。
进入掉电模式:当PCON寄存器写入0x01时,进入掉电模式。分两阶段完成:关掉cpu clock,关掉外围部件的clock,等待1024时钟周期,关闭晶振,关掉 regulator。
图2 低功耗模式状态转换图
从掉电模式唤醒:当检测到外部复位信号或外部中断信号后,第一步,打开regulator,打开晶振,并开始计数,当计到100时,去检查reset或外部中断信号,看其是否有效。如果无效,则重新关掉晶振,关掉regulator。如果reset信号或外部中断信号有效,则等待1024时钟周期。第二步,打开外围部件的clock等待1024时钟周期。第三步,打开CPU的clock。
4.3 Timer2 设计
定时器2是一个16位定时/计数器,它既可以做定时器,又可以做事件计数器。其工作方式由特殊寄存器T2CON中的C/T2位选择。定时器2有二种工作模式:捕捉方式,自动重载(向下或向上计数)。工作模式由T2CON中的相关位选择。
在捕捉模式下,通过T2CON中的EXEN2来选择两种方式。如果EXEN2=0时,定时器2的一个16位定时/计数器溢出时,对T2CON的TF2标志置位,产生相应中断。如果EXEN2=1时定时器2做相同的操作。
当DCEN=0时,定时器2为向上计数。当计到0xFFFF时,定时器溢出,定时器重新加载16位计数值。如果EXEN2=1,计数溢出或在外部T2EX引脚上的1到0的下跳变都会触发重载。当DCEN=1时,外部输入T2EX引脚将决定向上还是向下计数。T2EX=1为向上计数,T2EX=0为向下计数。说明如表1,表2示。
表1 T2CON控制寄存器
TF2:定时器2溢出标志位。
EXF2:定时器2外部标志位。EXEN2=1时,T2EX上的负跳变出现捕捉或重载时,EXF2会被硬件置位。
RCLK:串行口接收数据时钟标志位。若RCLK=1,串行口将使用定时器2溢出脉冲作为串口接收时钟;RCLK=0,将使用定时器1计数溢出作为串口接收时钟。
TCLK:串行口发送数据时钟标志位。若TCLK=1,串行口将使用定时器2溢出脉冲作为串行口工作模式1和3的串口发送时钟;TCLK=0,将使用定时器1计数溢出作为串口发送时钟。
EXEN2:定时器2外部允许标志位。
TR2:开始/停止控制定时器2。TR2=1,定时器2开始工作。
C/T2:定时器2定时/计数选择标志位。
CP/RL2:捕捉/重载选择标志位。当EXEN2=1时,CP/RL2=1,T2EX出现负脉冲,产生捕捉操作;当定时器2溢出或EXEN2=1时,T2EX出现负跳变,会出现自动重载操作。CP/RL2=0,T2EX产生负脉冲。当RCKL=1或TCKL=1时,此标志位无效,定时器2溢出时,强制做自动重载操作。
T2OE是定时器2输出允许位。DCEN置1后,定时器2可配置成向上/向下计数。
表2 T2MOD模式控制寄存器
5 结 束 语
目前,这类微处理器产品仍有较为广阔的市场,国外公司此类产品也较多,在设计这类产品时,重点注意对MCS-51产品指令的兼容,这样可以使其更方便的在不同领域中做为配套产品使用,其成熟的设计经验,也可以移植到相似的产品设计之中。在广泛的嵌入式控制系统领域,产品可以提供灵活有效、性价比极高的解决方案。
[1]王永军,李景华.数字逻辑与数字系统[M].北京:电子工业出版社,2005.
[2]朱子玉.李亚民.CPU芯片逻辑设计技术[M].北京:清华大学出版社,2005.
[3]张明.Verilog HDL实用教程[M].成都:电子科技大学出版社,1999.