|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
电磁干扰源所产生的干扰信号在一些特定的情况下(比如在一些电磁环境比较恶劣的情况下)是无法完全消除的,终极将会进进CPU处理的的核心单元,这样在一些大规模集成电路经常会受到干扰,导致不能正常工作或在错误状态下工作。特别是像RAM这种利用双稳态进行存储的器件,往往会在强干扰下发生翻转,使原来存储的“0”变为“1”,或者“1”变为“0”;一些串行传输的时序及数据会因干扰而发生改变;更严重的会破坏一些重要的数据参数等;造成的后果往往是很严重的。在这种情况下软件设计的好坏直接影响到整个系统的抗干扰能力的高低。
$ V; f% V6 n) Y$ ]# \9 n. G! s' W( b) D: S' f% E4 d9 `: U4 m
]3 C" V9 ^( E' N) y
* q1 q8 E5 k2 W# h$ u4 Y1.程序会由于电磁干扰大致会一下几种情况:2 g# ^, i7 Y; m- G. Z
+ Y! `& U$ ~1 B0 m0 O0 @! u( i1 w, B" X$ G( q) O+ o
# v9 C5 W9 ]2 _' D' q: B8 Z①程序跑飞。' F1 t: W$ b, w3 o7 F) |
# y3 b2 e: P% d$ ~: L
4 W& y5 }) X' m, H9 F: u! V- l& _这种情况是最常见的干扰结果,一般来说有一个好的复位系统或软件帧测系统即可,对整个运行系统的不会产生太大的影响。+ Y1 {9 v: s/ c0 |. l3 b* I+ K! b, t; X
" X: s: A b; W- }
% t2 ]- L: Q1 y l
②死循环或不正常程序代码运行。
6 j2 F6 L5 m G) R9 V2 ~3 W5 O8 t# `3 T' b3 f
8 Z! f5 D) X( J5 ]' S& w* W4 C0 }, _1 _$ Q: ]* y4 h/ u
当然这种死循环和不正常程序代码并非设计职员有意写进的,我们知道程序的指令是由字节组成的,有的是单字节指令而有的是多字节指令,当干扰产生后使得PC指针发生变化,从而使原来的程序代码发生了重组产生了不可猜测的可执行的程序代码,那么,这种错误是致命的,它会有可能会往修改重要的数据参数,有可能产生不可猜测的控制输出等一系列错误状态。- m9 X4 ^" Q* Y* H
7 q! A, |) \1 p. u7 S6 p5 P! u/ A% Q: s; B4 W8 P
5 }3 p' w4 F) \; \) B$ i5 [3 R, S& b& H, Q' A8 u+ q
& f6 L2 l4 u4 x, F& h1 ]2.对重要参数储存的措施+ _8 |! e F+ O8 `% V M1 |& j# t; e, @/ Y6 R) h
9 ?% ~" c( ~" T3 U& }; h( C n
* q5 |+ j. G2 r5 ~6 g( d7 I8 Y) s$ v3 p
一般情况下,我们可以采用错误检测与纠正来有效地减少或避免这种情况的出现。根据检错、纠错的原理,主要思想是在数据写进时,根据写进的数据天生一定位数的校验码,与相应的数据一起保存起来;当读出时,同时也将校验码读出,进行判决。假如出现一位错误则自动纠正,将正确的数据送出,并同时将改正以后的数据回写覆盖原来错误的数据;假如出现两位错误则产生中断报告,通知CPU进行异常处理。所有这一切动作都是靠软件设计自动完成的,具有实时性和自动完成的特点。通过这样的设计,能大大进步系统的抗干扰能力,从而进步系统的可靠性。& ^3 y6 R# o! K4 b% _# G
% ~2 _7 b" T3 g7 N ]/ ~( ]/ H- ]4 h6 Q. [4 B6 a. E S. h+ B' _; ]% Y9 N& B
5 C" L, ] x6 X) V7 o+ `& t- ^* t5 z9 ^
: j8 q3 j R. ~3 C- `& x3 A检错与纠错原理: A! p6 i3 }1 O9 D. D: T" ~
. t9 H q/ _# }& x; F6 K- a" V
" e6 f! k% v8 v/ l" w, s# k# N5 {
首先来看看检错和纠错的基本原理。进行差错控制的基本思想是在信息码组中以一定规则加进不同方式的冗余码,以便在信息读出的时候依靠多余的监视码或校码码来发现或自动纠正错误。
! q5 l {' R; ^# L
& z7 I6 I- V5 S0 {' e- Q2 z' j5 F5 q L) ^: F0 ^4 l: a
针对误码发生的特点,即错误发生的随机性和小概任性,它几乎总是随机地影响某个字节中的某一位(bit),因此,假如能够设计自动纠正一位错误,而检查两位错误的编码方式。就可以大大进步系统的可靠性。
: K5 d5 W+ L3 J# H! w3 R1 g8 h- ~) w7 s: K
, I9 C8 K4 G" c" D2 B+ \
7 l& b" A. ]$ C% @: f3.对RAM和FLASH(ROM)的检测: x& Y) c& j5 h/ f) |: g
' ?( e2 h) A$ m# |
' N# K" B; J0 m7 s# o在编制程序时我们最好是写进一些检测程序来测试RAM和FLASH(ROM)的数据代码,看有无发生错误,一旦发生要立即纠正,纠正不了的要及时给出错误指示,以便用户往处理。5 k8 }- G0 o9 l) t, L# W' L) t) c/ Y# w1 A
8 E3 M7 H& O: F' O
' G3 [# ^( v# `6 G% m) Q, k: _
另外,在编制程序时加进程序冗余是不可缺少的。在一定的地方加进三条或三条以上NOP指令对程序的重组有着很有效防止作用。同时,在程序的运行状态中要引进标志数据和检测状态,从而及时发现和纠正错误产生。
8 d/ b& j! b2 o; | |
|