一种三MCU系统的硬件实现
扫描二维码
随时随地手机看文章
摘 要: 介绍以两片80C196KC为主处理MCU、一片89C51进行动态LED显示的三MCU系统。两80C196KC之间通过互访数据存储器进行数据交换,80C196KC与89C51的通讯使用串行口。
关键词: 单片机 多处理器 总线控制 存储器共享
MCS96系列单片机是16位单片机。运算速度高、I/0资源丰富、具有10位A/D转换器,特别适合于实时处理、实时控制的各类自动控制系统,如工业过程控制系统、伺服系统、分布式控制系统、变频调速电机控制系统等。在国内有成熟的开发系统和稳定的供货来源,相关资料也非常丰富,开发非常方便。
本文介绍的三MCU系统,使用两片80C196KC作数据处理及控制,一片89C51进行显示。应用于液压缸活塞杆的位移检测控制[1]。
1 系统的总体结构
系统的总体结构如图1所示。为了提高系统数据处理能力,使用两片80C196KC作为主处理芯片。两片80C196KC各自扩展了程序存储器ROM和数据存储器RAM。不需要交换数据时,两片80C196KC独立工作;当需要交换数据时,首先征求对方同意,在对方允许的情况下,通过双向总线开关访问对方的数据存储器。
传感器的信号接到80C196KC的A/D转换器输入端。
系统有两种输出:模拟量输出和PWM输出。这两种输出都通过80C196KC的PWM功能实现。
串行口是一个双向数据通道,可接收其他设备或上位机来的数字信号,也可将测量结果和液压缸本身的一些状态信息传送给其他设备或上位机。
系统测量结果的显示使用LED数码管,显示数据由80C196KC通过串行口传送。显示使用动态方式,控制芯片使用89C51单片机。89C51单片机把80C196KC送来的数据先进行运算,转化为显示用字型码,一路通过I/O口送到显示译码驱动器,另一路完成位选通控制。
2 80C196KC之间相互访问数据存储器的硬件实现方法
2.1 80C196KC提供的总线控制信号
80C196KC提供了一组总线控制信号和。它们支持总线交换协议,可用于共享存储器的多处理器系统或DMA传输。
是总线占用信号,80C196KC的输入信号由外部设备或其他单片机、微处理器发出。有效,表示外设要求占用系统总线。
为总线占用应答信号由80C196KC发出。当80C196KC检测到有效后,就释放总线和有关的控制信号,并向对方发出有效作为应答信号,表示已经放弃了对总线的控制权。
外设访问80C196KC的存储器结束后,使无效,并交还对系统总线的控制权。80C196KC撤去应答信号(使之无效),重新获得对总线的控制权。
在系统总线占用期间,80C196KC仍可以继续执行内部ROM/EPROM中的程序。这时若产生了外部操作,CPU就会把该外部总线悬挂起来,并发出(总线请求)有效信号。在撤消有效信号的同时,80C196KC也撤消了信号。
当80C196KC应答了总线占用请求时,地址/数据总线、和INST的三态输出缓冲器被置为高阻态,完全放弃了对总线的占用和控制。
2.2 80C196KC互访数据存储器的方法
由于使用外部程序存储器,当一片80C196KC的总线应答信号有效、此片CPU放弃总线控制权的第二个机器周期,总线请求信号有效出现。为了不让此信号干扰另一片CPU对总线的使用,使本片CPU的P1.0与对方的相或,如图2所示。在申请总线占用前,先对本CPU的P1.0置1,屏蔽对方的信号。直到本CPU使用总线完毕,再使本CPU的P1.0置0,释放对方的信号。
总线应答信号由P1.2检测。
总线开关使用双向总线驱动器74LS245,每片可驱动8路信号,共使用3片。由于三片74LS245属于同一个开关的3个部分,所以三片74LS245的使能端E连在一起,控制端DIR也连在一起。
74LS245只有在总线应答信号有效后才能起作用,所以将两片80C196KC的相与后接在74LS245的使能端这样,当任何一片80C196KC的有效时,74LS245就进入使能状态。
74LS245控制数据方向的DIR端接在80C196KC(1)的端。当80C196KC(1)的有效时,80C196KC(1)的数据访问指向80C196KC(2)的数据存储器;当80C196KC(2)的有效时,80C196KC(2)的数据访问指向80C196KC(1)的数据存储器。
在访问对方的数据存储器时,必须保证仍在访问本方的程序存储器,否则程序将无法正常进行。为了实现这一点,采用图3的连接方法。地址线最高位P4.7(AD15)不直接连在程序存储器28256的片选端,而是与的反向信号相或后再接在28256的片选端。这样,当本方CPU应答对方占用总线信号后,本方信号有效,经过非门后变成高电平,28256的片选端也为高电平,使本方程序存储器28256无法选中,只能选中本方数据存储器。从而实现在程序运行正常的情况下访问对方的数据存储器。
与程序存储器相同,数据存储器也面临着同样的问题:在需要访问对方的数据存储器时,要使本方的数据存储器无效。数据存储器6264有两个使能端:CS1和CS2。CS1作为控制端已经与80C196KC的地址最高位通过非门相连,可以使用CS2完成这个功能,具体连接方法如图4所示。每一片80C196KC的数据存储器的CS2都与对方的相连。这样,当本方CPU出让总线控制权时,有效,使对方数据存储器6264的CS2端为低电平,进入非使能状态。对方CPU在访问数据存储器时,访问的就是本方的数据存储器。
3 PWM和模拟量输出
在数字系统中,模拟量输出一般是使用D/A转换器,但80C196KC具有PWM输出功能,可通过此功能获得模拟量输出。通过PWM获得模拟量输出的原理图如图5所示。由于内部脉宽调制器输出的是TTL电平的调制脉冲,为了获得高精度的模拟量输出,需要进行缓冲,使PWM信号的电平摆幅变为0~5V。缓冲选用带有TTL电平到CMOS电平转换功能的CMOS型反向缓冲器CD4049,缓冲之后进行滤波。
4 LED显示
LED显示部分由两排LED组成:第一排6位数字,1位符号位;第二排5位数字,1位符号位。显示部分的LED位数较多,为了简化电路,减少能量消耗,用动态显示方式。由于动态显示方式比较消耗CPU资源,用一片89C51专门负责显示之前的数据变换和LED的动态扫描。这一片89C51与一片80C196KC通过串行口进行数据传递。这样,显示就不再占用两片80C196KC的资源,系统的编程也非常方便。
本文介绍的三MCU处理系统的两片80C196KC的存储器扩展使用独立编址方式,所以两片80C196KC的地址空间全部可用,非常适合于程序和数据量比较大的场合。每片80C196KC都具有一个A/D转换器,可同时进行两路转换和处理,大大增加了处理速度。本系统应用于液压缸活塞杆的位移检测,取得了比较好的效果。
参考文献
1 潘 峰,丁 凡.基于超松弛法的行程传感液压缸磁路结构的研究.动力工程,2001;10
2 陈隆道,许 昌,周箭. 智能仪器的双CPU技术. 电测与仪表,1998;35(1)
3 孙涵芳. Intel 16位单片机.北京:北京航空航天大学出版社,1995.11
4 何立民.MCS-51系列单片机应用系统设计.系统配置与接口技术.北京:北京航空航天大学出版社,1993.7
5 余永权.ATMEL89系列Flash单片机原理及应用.北京:电子工业出版社,1997.10