多CPU单片机系统设计在社区安防系统中的应用
发布时间:2008/6/3 0:00:00 访问次数:481
    
    
    来源:单片机与嵌入式系统应用 作者:华东地质学院 周建勇 海南省公安厅 何为民 [字体:大 中 小]
    
    摘要:本文较为详细地介绍基于多cpu的单片机系统设计思想,并给出它在社区安全防范系统中的应用。
    
    关键词:多cpu 安全防范 系统设计
    
    概述
    
    随着人们生活水平的提高和科学技术的发展,安全防范的问题引起了越来越多的关注。人们在承受现代文明所带来的高效率、快节奏压力的同时,都希望能拥有一个安全、舒适的家庭环境。因此,越来越多的安防产品应运而生,尤其是蓬勃发展的现代化社区物业管理,通过监控网络把家庭和社区值班室紧密地联系起来,给人们的生活带来了极大的方便。但是,有些社区监控网络并不能完全履行其职责,存在一定的安全隐患。主要原因是目前大多数的监控节点都是采用1个cpu完成所有的功能,包括扫描各传输器模块状态、信息处理、数据显示、报警、与上位机通信等等。这无疑给此cpu带来了很大的压力:一旦出现故障,使得此单片机不能正常工作,则该监控节点将完全瘫痪,报警信息将得不到有效的处理。另外,在一些实时性要求较高的多任务系统中,单cpu结构也将显得力不从心。那么,能否找到一种既简单又经济的解决办法,把目前服务器中较为流行的多cpu并行处理的设计思想融入到社区监控网络中来呢?答案是肯定的。随着单片机技术的发展,单片机的价格在不断下降,其价格甚至比一些常用的接口芯片还要低,这就使多cpu的单片机系统的成本大大降低。此外,由于采用多cpu的设计思想,将使系统在并行处理和实时采集数据方面具有明显的优势,能极大地提高系统的稳定性和可靠性。尤其是对一些功能稍微复杂一点的系统,多cpu系统设计方法将更能显示出它的优越性。那么,如何实现多cpu的单片机系统设计呢?本文将在这方面进行一些有益的探索。
    
    
    一、多cpu系统的设计原理
    
    顾名思义,多cpu系统就是在1个系统中含有多个cpu。每个cpu独立地处理1个或少量的事务,然后通信某种方法,控制数据的合理流动,以完成设计要求的系统。其典型结构如图1所示。
    
    从图1中可以看到,多cpu系统中一个非常重要的问题,是如何解决好各cpu之间数据的合理流动问题,以下是几种常用的方法。
    
    1.利用双口ram实现cpu之间的通信
    
    双口ram是一种高速的并行传输芯片,是实现cpu之间通信的一种简便有效的方法。常用的cmos双口ram有idt7132、idt7142等型号。idt7132和6116类似,都是cmos静态ram,存储容量均为2kb。不同点在于idt7132有两套i/o口,并有一套竞争裁决电路。因此,idt7132内部的2kb存储器可以通过左右两边的任一组i/o口进行全异步的存储器读写操作,能方便地实现cpu之间的数据交换。采用双口ram实现多cpu系统的示意图如图2所示。
    
    
    利用这种方法可以实现数据的高速传输。cpu对idt7132的读写时间小于120ns,通常为几十ns。当工作电源为+5v时,其读写的最大功耗为325mw,而在维持工作时最大功耗仅为5mw。另外,由于双口ram是一种通用芯片,因此,它在选择与cpu接口时具有较大的灵活性。不过这种方法也会增加电路设计的难度和成本。
    
    2.利用共享内存的方法实现cpu之间的通信
    
    这种方法与前面的方法类似。所不同的是,前一种方法是利用双口ram的一套竞争裁决电路实现对ram的访问,而这里是利用不同的时序实现共享内存的。lon网络中的neuron节点芯片设计都是采用这种方法的,其典型结构如图3所示。
    
    
    在neuron芯片中,每个cpu最小周期等于3个系统周期;每个系统时钟周期等于2个输入钟周期;3个cpu的最小周期分别间隔1个系统钟周期。这样,每个cpu在1个指令周期内部能访问存储区和alu一次。系统对3个cpu采用了管道
    
    
    来源:单片机与嵌入式系统应用 作者:华东地质学院 周建勇 海南省公安厅 何为民 [字体:大 中 小]
    
    摘要:本文较为详细地介绍基于多cpu的单片机系统设计思想,并给出它在社区安全防范系统中的应用。
    
    关键词:多cpu 安全防范 系统设计
    
    概述
    
    随着人们生活水平的提高和科学技术的发展,安全防范的问题引起了越来越多的关注。人们在承受现代文明所带来的高效率、快节奏压力的同时,都希望能拥有一个安全、舒适的家庭环境。因此,越来越多的安防产品应运而生,尤其是蓬勃发展的现代化社区物业管理,通过监控网络把家庭和社区值班室紧密地联系起来,给人们的生活带来了极大的方便。但是,有些社区监控网络并不能完全履行其职责,存在一定的安全隐患。主要原因是目前大多数的监控节点都是采用1个cpu完成所有的功能,包括扫描各传输器模块状态、信息处理、数据显示、报警、与上位机通信等等。这无疑给此cpu带来了很大的压力:一旦出现故障,使得此单片机不能正常工作,则该监控节点将完全瘫痪,报警信息将得不到有效的处理。另外,在一些实时性要求较高的多任务系统中,单cpu结构也将显得力不从心。那么,能否找到一种既简单又经济的解决办法,把目前服务器中较为流行的多cpu并行处理的设计思想融入到社区监控网络中来呢?答案是肯定的。随着单片机技术的发展,单片机的价格在不断下降,其价格甚至比一些常用的接口芯片还要低,这就使多cpu的单片机系统的成本大大降低。此外,由于采用多cpu的设计思想,将使系统在并行处理和实时采集数据方面具有明显的优势,能极大地提高系统的稳定性和可靠性。尤其是对一些功能稍微复杂一点的系统,多cpu系统设计方法将更能显示出它的优越性。那么,如何实现多cpu的单片机系统设计呢?本文将在这方面进行一些有益的探索。
    
    
    一、多cpu系统的设计原理
    
    顾名思义,多cpu系统就是在1个系统中含有多个cpu。每个cpu独立地处理1个或少量的事务,然后通信某种方法,控制数据的合理流动,以完成设计要求的系统。其典型结构如图1所示。
    
    从图1中可以看到,多cpu系统中一个非常重要的问题,是如何解决好各cpu之间数据的合理流动问题,以下是几种常用的方法。
    
    1.利用双口ram实现cpu之间的通信
    
    双口ram是一种高速的并行传输芯片,是实现cpu之间通信的一种简便有效的方法。常用的cmos双口ram有idt7132、idt7142等型号。idt7132和6116类似,都是cmos静态ram,存储容量均为2kb。不同点在于idt7132有两套i/o口,并有一套竞争裁决电路。因此,idt7132内部的2kb存储器可以通过左右两边的任一组i/o口进行全异步的存储器读写操作,能方便地实现cpu之间的数据交换。采用双口ram实现多cpu系统的示意图如图2所示。
    
    
    利用这种方法可以实现数据的高速传输。cpu对idt7132的读写时间小于120ns,通常为几十ns。当工作电源为+5v时,其读写的最大功耗为325mw,而在维持工作时最大功耗仅为5mw。另外,由于双口ram是一种通用芯片,因此,它在选择与cpu接口时具有较大的灵活性。不过这种方法也会增加电路设计的难度和成本。
    
    2.利用共享内存的方法实现cpu之间的通信
    
    这种方法与前面的方法类似。所不同的是,前一种方法是利用双口ram的一套竞争裁决电路实现对ram的访问,而这里是利用不同的时序实现共享内存的。lon网络中的neuron节点芯片设计都是采用这种方法的,其典型结构如图3所示。
    
    
    在neuron芯片中,每个cpu最小周期等于3个系统周期;每个系统时钟周期等于2个输入钟周期;3个cpu的最小周期分别间隔1个系统钟周期。这样,每个cpu在1个指令周期内部能访问存储区和alu一次。系统对3个cpu采用了管道