找回密码
 注册
关于网站域名变更的通知
查看: 233|回复: 2
打印 上一主题 下一主题

一款基于CPLD的一种容错状态机的设计

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-11-23 07:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
一款基于cpld的一种容错状态机的设计
1 h6 j# D# r; T2 |$ N, X; S  t0 a- ^
. p) H- P) |; P$ L
状态机是一种十分重要的时序电路,常用于描述数字系统的控制单元,在数字系统有着广泛的应用,如步进电机、数据存储器的读写、总线控制器等。本文结合具体课题;采用ALTERA的CPLD器件EPM7032实现了一种容错的状态机;采用VHDL语言编程,实际使用效果良好,不仅调试方便,而且增加了系统配置的灵活性,大大缩短了系统开发周期。 $ t( T6 K. G! T2 ]
1 状态机的真值表及状态转移
& h, M/ h8 Z( K&nBSP;   该状态机是一种Moore型的,其真值表如表1。
! N4 D3 }5 p% i8 C. B9 p  z$ y) L3 P
    该状态机编码方式采用顺序方式,共采用4位编码。这样就存在两个非法的状态(即在状态机中,未定义的状态);采用该编码方式与一位有效编码方式相比,大大减少了非法状态的存在。8 Q9 `$ @2 y# n& J1 c# n
    状态转移图如图1所示。$ o( E8 m$ w" Y0 W- n$ I" N
& q: U3 t1 h* a& N
7 a; _+ {: Y$ ?# P
2 VHDL的描述
7 E# j6 n% u! ~6 k+ W& y1 i8 W    采用VHDL语言描述时、主要应包括:状态变量、时钟、状态转移指定、输出指定、复位信号等几个方面。
. h# g+ `* h2 \  A; \1 K(1)状态机的状态变量定义如下:
) Y+ i, q, @) fTYPE StateTYPE is (idle, deci, reci1, reci2, reci3,reci4 ,out1,out2,out3,out4,out5,out6,out7,out8);
0 z0 l& L. y, h8 Ysignal present_state,next_state:statetype;+ L, d+ ]/ g0 F$ _0 v/ l  w( \
signal codin:std_logic_vector(3 downto 0);/ `1 ?2 j1 M& i  K
(2)状态机的部分状态转移指定:
' _% g( X5 a. v* ?3 S4 [statedesc: process (reset, data, present_state, burst,ou_rec,ready)
+ _6 d" w+ r  i) J& abegin
( ~& q( B$ s- D3 z4 D  `! {# l  y.........................: G8 i( B8 m! J4 n. Z1 y; z
  Case  present_state is
; `% I$ t: r4 O  ^$ ~  RWhen idle=>codin<="0000";. |1 M6 C0 ^+ b& d7 a6 F6 O, J2 V
If(data="11111111")then next_state<=deci;
+ l  f, A* D1 k8 n5 S: M4 o6 K$ ]: Z' CElse
0 `& z5 o9 O3 h* ~9 L$ F4 i: t9 ?Next_state<=idle;
0 m! N: i9 ?: Vend if;1 G. t8 I  l/ i. u! G2 b6 l
..............: F; R+ Q9 X7 S; z4 ^* E) I# a
When out1=>codin<="0110";3 B) ^. \. O' t. g; t2 y% T! r' l
    If(ready=' 0' )then& f1 k. @% o6 h  ^3 c: j
Next_state<=out1;* g1 C1 }. N2 G# K/ h3 E1 t$ I  w
Elsif (burst=' 0' )then  next_state<=idle;
  O- d% m1 O# r5 o( A, z" A3 xElse next_state<=out2;        - j9 ~3 d6 {) K% {  I
end if;8 V: W/ k) W, v4 K# B/ O4 T# `; [
...............# o1 e/ r! D2 t/ x; w
(3)状态机的输出指定0 c' R+ _' q# f. m  B! e2 a  E5 J
    状态机的输出需要对codin进行译码才能输出,输出指定放在另一个进程(在该进程中同时还实现次态到现态的转化)中, VHDL的描述为:
; Y, V) q* _* g. L' x9 _$ hstate-change:process(clk)
: B0 i3 K& F# x) o/ B( Z. x% Xbegin) F; U) d. T" |; s% T
case codin is
& X# L  ?8 v( E- `. c- [1 X5 j      when "0000"=> get<=' 0' ;we<=' 0' ;addr<="000";     
. R3 ]  Z) s& Z% Q..............................................." t9 r  w* Q! v! M9 y
when"1101"=>get<=' 1' ;we<=' 0' ;addr< ="111";  d0 V! i  I/ S, r
when others= >get< = ' 0' ;we< = ' 0' ;addr< ="000";2 q3 g+ b- y( T8 d& Z5 a! w
end case;
3 x! @2 n0 D4 t. lend process state-change;
4 J( \% n) R+ H % n& W8 i4 ~8 e3 L0 i- v
3 纠错功能的实现
/ C3 w: E. c  ~( {    在实际的工作当中,由于硬件电路中,干扰、钟摆、噪声、电源的变化等都可能使触发器翻转,从而使状态机误入非法状态。一旦出现这种情况将无法预见系统的反应,可能会出现状态锁死、系统非法输出;信号冲突,过大的拉电流和灌电流,毁坏系统。$ L- u+ e/ t4 g* t) E2 f3 b0 @
    在进行容错设计时,首先在枚举类型的状态定义中定义所有的非法状态。因此状态定义改为:# {- Z  ~8 v# o; J7 y/ r6 s
TYPE StateTYPE is (idle, deci, reci1, reci2, reci3,reci4, out1,out2,out3, out4,out5,out6,out7,out8,undefine1,undefine2);
/ T9 t$ i  d4 e    最后,需要定义转移出非法状态的代码。程序片段如下:) w) |! e, V; p9 q% t% }8 P8 ^
..................' B% k" R: r) o3 m. _, P$ y" g! X
case present_state is
  b0 G4 x% x" O* M.................
; P# {( D) H/ a9 ?) z7 Twhen others =>next_state <=idle,err<=' 1' ;" S$ P/ k% d7 x; C7 m
end case;
& N( c5 m2 d! \- ~( ^    另外在进程的设计时,还需要充分注意信号的同步问题,这样才能避免竞争冒险的问题。进行容错设计,虽然牺牲了资源,但却可获得了高可靠的系统。7 K. L4 C; r: k  `& R  ^6 ]7 |/ D$ t! G
: [1 y$ a3 i9 G0 |! {8 U- r# b& l- o
4 结束语8 ?  Q+ ]" ^! ?$ y) f
    实践证明使用可编程逻辑器件可以非常方便地实现状态机。而采用VHDL语言设计,不仅描述方便,而且具有良好的可移植性,可以非常方便地应用于其它公司的CPLD,FPGA芯片中。实际使用中该芯片运行良好,同时可以随时对芯片内部逻辑进行在线更改,体现了可编程逻辑器件的优越性。* Y9 x7 E/ I' A4 M9 D
游客,如果您要查看本帖隐藏内容请回复

9 a' e3 G" ^9 q9 ~6 p0 ~7 ~- \  J

该用户从未签到

3#
发表于 2022-8-10 15:32 | 只看该作者
一款基于CPLD的一种容错状态机的设计
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-22 08:47 , Processed in 0.125000 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表