当前位置:首页 > 单片机 > 单片机
[导读]本文提出一种表决式单片机多机冗余设计方案。该方案不同于中央系统的多机冗余设计。大规模系统冗余大多采用完善而复杂的机间通讯协议实现系统重构,不太注重系统的实时性。本方案结构简单,易于实现,具有极强的实时

本文提出一种表决式单片机多机冗余设计方案。该方案不同于中央系统的多机冗余设计。大规模系统冗余大多采用完善而复杂的机间通讯协议实现系统重构,不太注重系统的实时性。本方案结构简单,易于实现,具有极强的实时性,没有电子开关切换总线的咔嗒声输出。单片机价格低廉、功能灵活,也使得该设计在类似仪器仪表的小系统中的运用成为可能。

1 设计原理

设计结构如图1所示。

完成整个冗余设计的电路被置于一个核心控制模块中,如果该模块以FPGA实现也就是一块芯片。图1中单片机1、2、3被假定为冗余的三个单片机,它们的输入总线并联,接收核心控制模块中输入缓冲的输出。输出总线分别接到模块的输出总线仲裁器。核心控制模块包括输入缓冲、输出总线仲裁、电源控制、时钟产生、复位电路和报警控制输出六个部分。

 

1.1 输入缓冲

为了消除输入端并联输入阻抗带来的影响,在输入端增加了一级缓冲器,减小外围电路的影响。采用输入缓冲,可以实现单片机和外围电路的输入隔离。

1.2 输出总线仲裁

该总线仲裁是建立在所有单片机在时钟级上同步的基础上,通常采用总线表决法。即相同输出总线上的值作为仲裁的结构输出,不同输出总线被当作出错而封止,所有的输出皆不相同同是失败状态,无表决输出。表决的实现当然不能采用软件比较,以三个单片机系统的一位为例介绍表决方法。假设位输入变量X1、X2、X3,输出Q,状态指示:正常N、X1出错E1、X2出错E2、X3出错E3。真值表如表1所示,位仲裁单元如图2所示。

显然以上位单片机用数字电路难实现,后面给出整体的VHDL语言描述。总线仲裁由多个这样的位单元组成,个数由单片机输出总线的最大数n决定。仲裁器除了n根输出线,同时还对每个位单元的状态位进行逻辑组合输出正常、出错、失败三个状态指示。失败信号也用作报警保护控制输出,或重新复位输出。失败输出有效时输出失效。

以三个单片机的系统为例,如果将仲裁器的三个总线某一时刻输入看作为n位二进制变量X,Y,Z。如果X,Y,Z在任何时钟都逐位相同,而系统处于正常工作状态。如果三者中有两个变量逐位相同,而另一个不同,则系统处于出错状态。如果三者皆不相则系统失败。正常和出错状态可以运行,而失败状态必须保护和处理。

FPGA技术的发展,使得设计中的比较、决策等数字电路的设计实现变得非常容易,而且系统简明可靠。如果采用中规模集成电路来实现的话,将相当烦琐和复杂。

1.3 单片机时钟级同步的实现

系统的所有单片机必须达到时钟级的同步。单片机选用相同的型号(可以是不同的厂家),完全相同的程序和同一机器时钟。

同一时钟是实现时钟同步的第一步。时钟发生电路在控制模块内产生并送到各单片机的时钟输入端,要求单片机可外接时钟输入。时钟同步并不容易,以89C51为例,51系列单片机上电后振荡器起振输出,ALE脉冲由时钟经分频电路得到,一旦形成,机器周期脉冲和时钟脉冲相位关系固定,不受复位电路影响,直到电源掉电为止。

第二步是实现机器周期脉冲同步。MCS51一个机器周期包括6个状态周期,每个状态周期包括2个节拍,对应2个时钟节拍有效期。也就是说一个机器周期包括12个振荡周期,指令工作在时钟节拍上,同时更是同步工作在机器周期上。不论是单字节指令还是双字节指令,指令周期均是机器周期的1、2、4倍。要同步单片机节拍,必须同步机器周期。考虑到上电时间上可能产生的差异,采用先上电后加时钟脉冲的方法。上电时确保时钟输入端没有干扰脉冲引入,所有单片机上电后的内部分频电路起始点一致,然后加入时钟脉冲,各单片机获得同步的机器周期。

 

第三步是同步指令周期。指令的同步需要依靠复位电路来实现。在时钟脉冲正常输入和分频电路正常工作的情况下,复位操作是在复位端加上至少2个机器周期的复位电平而实现的。复位信号由核心控制器发出送至每片单片机。复位后,统一了片内主要寄存器内容,所有单片机程序从起始位置开始执行。

单片机时钟级同步的实现主要依靠电源控制、时钟产生、复位电路三部分硬件。

1.3.1 电源控制

三个单片机的供电电源由控制模块控制。主控远件需要保证足够电流容量,可采用功率三极管或场效应管实现。不能采用继电器在,以避免触点电源跳变。

1.3.2 时钟产生

晶体振荡器输出脉冲作为单片机时钟,中间增加可控的缓冲级。缓冲级可以增加时钟信号的输出负载能力,并可被控制模块控制。

1.3.3 复位电路

三个单片机的复位端并联接至同一个复位端。复位信号在信号极性和脉冲宽度上满足单片机复位要求,驱动能力满足多单片机需要。复位电路同样是受控于控制模块,用以实现单片机同步。

1.4 报警与控制

不同状态下核心控制模块有不同的信号输出,异常状态同时也是报警信号。正常状态输出绿灯,出错状态输出黄灯,失败状态输出红灯。黄灯输出时系统可以暂时继续工作,等到系统空闲或许可时进行纠错。红灯输出时系统立即进入保护状态,输出端呈现高阻状态,需要时可以马上纠错,恢复系统。

系统恢复需要对控制模块进行复位,复位脉冲可以是自身的失败状态输出,也可以是出错脉冲输出和其他信号的组合逻辑。控制模块的复位,实际是对各单片机重新进行时序对齐和复位单片机程序。此处设计需结合具体使用场合考虑。

2 控制模块的VHDL语言描述

控制模块主要采用VHDL语言进行描述。

library ieee;

  use ieee.std_1164.all;
  use ieee.std_logic_unsigned.all;
  Entity redu_control is
  Port (a_bus,b_bus,c_bus:in std_logic_vector(7-三输入总线,--本设计定为8位)
  o_bus: out std_logic_vector(7 downto 0);--8位输出总线
  error_out,fail_out:out std_logic;--出错、失败输出
  reset_in,clock_in: in std_logic;--复位、时钟输入
  power,clock,reset:out std_logic;--电源、时钟、复位输出
  )
  end;
  architecture control_pro of redu_control_is
  signal int: std_logic;
  begin
  bus_pro:process(a_bus,b_bus,c_bus) -总线控制过程
  begin
  if a_bus=b_bus then
  o+bus<=a_bus;
  if a_bus=c_bus then - 正常输出
  error_out<='0';
  fail_out<='0';
  else
  error_out<='1'; --给出出错信号
  fail_out='0';
  end if
  elsif a_bus=c_bus then
  o_bus<=a_bus;
  error_out<='1'; --给出出错信号
  fail_out<='0'; 
  elsif b_bus=c_bus then -不同的出错情况
  o_bus<=b_bus;
  error_out<='1';
  fail_out<='0';
  else --失败输出
  o_bus<=(others=>'z');
  fail_out<='1';
  end if
  end process bus_pro; --总线过程结束
  start_pro process -启动过程
  begin
  wait until reset_in='1'; --等待外部复位启动
  power<='0';
  clock<='0';
  reset<='0'; --停止电源、时钟、复位输出
  power<='1' after 3 s; --3s后输出电源信号
  clock<=clock_in after 6 s; --6s后输出时钟信号
  reset<='1' after 9 s;--9s后输出复位信号
  reset<='0'after 10 s;--复位信号回到高电平
  end process start_pro;--启动过程结束
  end;

本文所述的时钟对齐方法实现比较简单但并不唯一。复杂一点的方法可以采用不同时钟输出到不同单片机,比较反馈后,调整时钟输出个数达到调节目标。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

单片机是一种嵌入式系统,它是一块集成电路芯片,内部包含了处理器、存储器和输入输出接口等功能。

关键字: 单片机 编写程序 嵌入式

在现代电子技术的快速发展中,单片机以其高度的集成性、稳定性和可靠性,在工业自动化、智能家居、医疗设备、航空航天等诸多领域得到了广泛应用。S32单片机,作为其中的佼佼者,其引脚功能丰富多样,是实现与外部设备通信、控制、数据...

关键字: s32单片机引脚 单片机

在微控制器领域,MSP430与STM32无疑是两颗璀璨的明星。它们各自凭借其独特的技术特点和广泛的应用领域,在市场上占据了重要的位置。本文将深入解析MSP430与STM32之间的区别,探讨它们在不同应用场景下的优势和局限...

关键字: MSP430 STM32 单片机

该系列产品有助于嵌入式设计人员在更广泛的系统中轻松实现USB功能

关键字: 单片机 嵌入式设计 USB

单片机编程语言是程序员与微控制器进行交流的桥梁,它们构成了单片机系统的软件开发基石,决定着如何有效、高效地控制和管理单片机的各项资源。随着微控制器技术的不断发展,针对不同应用场景的需求,形成了丰富多样的编程语言体系。本文...

关键字: 单片机 微控制器

单片机,全称为“单片微型计算机”或“微控制器”(Microcontroller Unit,简称MCU),是一种高度集成化的电子器件,它是现代科技领域的关键组件,尤其在自动化控制、物联网、消费电子、汽车电子、工业控制等领域...

关键字: 单片机 MCU

STM32是由意法半导体公司(STMicroelectronics)推出的基于ARM Cortex-M内核的32位微控制器系列,以其高性能、低功耗、丰富的外设接口和强大的生态系统深受广大嵌入式开发者喜爱。本文将详细介绍S...

关键字: STM32 单片机

在当前的科技浪潮中,单片机作为嵌入式系统的重要组成部分,正以其强大的功能和广泛的应用领域受到越来越多行业的青睐。在众多单片机中,W79E2051以其卓越的性能和稳定的工作特性,成为市场上的明星产品。本文将深入探讨W79E...

关键字: 单片机 w79e2051单片机

单片机,又称为微控制器或微处理器,是现代电子设备中的核心部件之一。它集成了中央处理器、存储器、输入输出接口等电路,通过外部信号引脚与外部设备进行通信,实现对设备的控制和管理。本文将详细介绍单片机的外部信号引脚名称及其功能...

关键字: 单片机 微控制器 中央处理器

随着科技的飞速发展,单片机和嵌入式系统在现代电子设备中的应用越来越广泛。它们不仅提高了设备的智能化水平,还推动了各行各业的创新与发展。在单片机和嵌入式系统的开发中,编程语言的选择至关重要。本文将深入探讨单片机和嵌入式系统...

关键字: 单片机 嵌入式系统 电子设备
关闭
关闭