当前位置:
文档之家› 基于VHDL的有限状态机设计
基于VHDL的有限状态机设计
图F "#$% F
编码状态机仿真图
O*4#2$ ,-.-/ (.01#2/ ,#(3+.-/ 4#.$5.(
从仿真结果可以看出, 采用编码状态机的设计方法, 可以克服符号状态机综合后存在的不可靠问题 % 当进入无效状态时, 系统可以在下一个周期时恢复到正常状态, 即具有自启动功能 % 这样的状态机才会保 持稳定, 具有很好的可靠性 %
!"#$%& ’( )$&$*" +*,*" -,./$&" 0,#"1 ’& 23!4
,V+2 F75H4./,D0%+ Q7.5W;4
( D-997/7 -> %97:<C4:;9 L.>-CH;<4-. ;.J D-.<C-9 %./4.77C4./, A74B4./ 1.4N7C=4<6 -> ?7:@.-9-/6, A74B4./ $)))"",D@4.;)
[$]潘松, 黄继业 ! %&’ 技术实用教程 [(] 科学出版社, ! 北京: "))" ! [(] *’+ ,-./, 01’+2 34567! ’8894:;<4-.= -> %&’ ?7:@.-9-/6 ! A7B4./:,:47.:7 *C7==, "))" !( 4. D@4.7=7) ["]黄正谨, 徐坚, 章小丽, 等 ! D*E& 系统设计技术入门与应用 [(] 电子工业出版社, ! 北京: "))" ! — — 2I4J4./ ;.J ’8894:;<4-.= [ (] 01’+2 F@7./5B4., G1 34;., F0’+2 G4;-594,7< ;9! D*E& ,6=<7H &7=4/.— ! A74B4./:*IK94=@4./ 0-I=7 -> %97:<C-.4:= L.JI=<C6,"))" !( 4. D@4.7=7) [M]李广军, 孟宪元 ! 可编程 ’,LD 设计及应用 [(] 电子科技大学出版社, ! 成都: "))) ! [ (] EL 2I;./5BI., (%+2 G4;.56I;.! *C-/C;HH;K97 ’,LD &7=4/. ;.J ’8894:;<4-.= ! D@7./JI: 1.4N7C=4<6 -> %97:<C-.4: ,:47.:7 ;.J "))" !( 4. D@4.7=7) ?7:@.-9-/6 *C7==, [O]潘松, 王国栋 ! P0&E 实用教程 [(] 电子科技大学出版社, ! 成都: "))" ! [(] *’+ ,-./, Q’+2 2I-5J-./! *C-/C;HH;K97 ’,LD J7=4/. ;.J ’8894:;<4-.= ! D@7./JI: 1.4N7C=4<6 -> %97:<C-.4: ,:47.:7 ;.J ?7:@5 .-9-/6 *C7==, "))" !( 4. D@4.7=7) [R]$)ST L%%%, [ ,] ,<;.J;CJ P0&E E;./I;/7 U7>7C7.:7 (;.I;9 !
第 +! 卷 第 ! 期 #""/ 年 ! 月
北
京
工
业
大
学
学
报
IJKLE.’ J5 MCFIFEH KEF$CL6F)N J5 )CB%EJ’JHN
$OP( +! EO( ! I>:( #""/
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
!
结束语
使用 6789 设计的有限状态机并不总是稳定可靠的 % 当有限状态机的状态个数是 F 的乘幂时, 且采
"O
北
京
报
"))R 年
用的编码方式是二进制编码或格雷码编码时, 有限状态机是稳定可靠的 ! 若有限状态机的状态个数不是 " 的乘幂, 且采用符号状态机, 或是状态机的状态个数是 " 的乘幂, 而采用的是独热码编码方式时, 状态机就 不是稳定可靠的 ! 所以, 当设计有限状态机时, 如果状态数 ! 与所使用的状态寄存器数 " 满足 ! # " " 的 关系, 则既可以采用符号状态机, 也可以采用编码状态机 ! 若不满足此关系式, 则应采用编码状态机的方 法来设计, 这样才能保证所设计的有限状态机的稳定与可靠 ! 参考文献:
收稿日期:#""+2"-2"- ( 作者简介:宋泽明 (!3-4 1 ) , 男, 黑龙江宝清人, 硕士 (
!!
北
京
工
业
大
学
学
报
!77L 年
!"!
符号状态机的设计 通常的有限状态机设计中, 使用 ! 个进程来描述状态机, 一个进程描述组合逻辑, 另一个进程描述时
序逻辑 " 在本设计中为了突出显示状态的转换, 只使用描述组合逻辑的进程, 并把当前状态 #$%&%’ 作为输 入, 次态 ($%&%’ 作为输出, 以便于仿真观察 " 而省略了时序逻辑进程 " 其源代码简写如下: )*+,&,- *’’’; .$’ *’’’ " $%/ )01*# 2234 " &)); 5&1’ 561 *$ ; %-5’ $%&%’ *$( $%7, $%2, $%!, $%8, $%4) ’(/ 561; )*+,&,- *’’’; .$’ *’’’ " $%/ )01*# 2234 " &)); .$’ 90,6 " 561 " &)); ’(%*%- :$; *$ ( 50,% :*( $%/ )01*# <’#%0, (2 /09(%0 7) ; #$%&%’ :*( $%&%’; ($%&%’ :0.% $%&%’; *(5.% (! /09(%0 7) ) ; 0.%5.% :0.% $%/ )01*# <’#%0, ’(/ :$;; &,#=*%’#%.,’ +’=&< 0: :$; *$ +’1*( ( #$%&%’, 5,0#’$$ *(5.%) +’1*( #&$’ #$%&%’ *$ 9=’( $%7 > ? “777” ; 0.%5.% @ > “77”%=’( ($%&%’ @ > $%7; *: *(5.% > ’)$’ ($%&%’ @ > $%2; ’(/ *:; …… 9=’( $%4 > ? “277” ; 0.%5.% @ > “77”%=’( ($%&%’ @ > $%4; *: *(5.% > ’)$’ ($%&%’ @ > $%7; ’(/ *:; 9=’( 0%=’,$ > ? “222” ; 0.%5.% @ > ($%&%’ @ > $%7; ’(/ #&$’; ’(/ 5,0#’$$; ’(/ +’=&<; 使用 A-(5)*:- 进行综合, 目标器件选择 B)%’,)& 公司的 CDEF27G27, A-(5)*:- 默认其编码方式为独热码, 综合后采用 HBF I JDKA!进行仿真, 仿真结果如图 2 所示 "
有限状态机 567 ( 89:9;< =;>;< ?>@A9:<) 及其设计技术是实用数字系统设计中实现高效率高可靠逻辑控 制的重要途径 ( 用 $%’& 语言可以设计不同表达方式和不同实用功能的状态机, 都有相对固定语句和程 序表达方式, 只要把握了这些固定的语句表达部分, 就能根据实际需要写出各种不同风格的 $%&’ 状态
[!] 绘制状态表、 化简次态方程等, 而利用 $%&’ 可以 机 ( 传统的状态机设计方法需进行繁琐的状态分配、
避免这些繁琐的过程, 直接利用状态转移图进行状态机的描述, 所有的状态均可表达为 B.6C D%CE 结 构中的一条 B.6C 语句, 而状态的转移则通过 F5 )%CE C’6C 语句实现 ( 此外, 与 $%&’ 的其它描述方式 相比, 状态机的 $%&’ 表述丰富多样, 程序层次分明, 结构清晰, 易读易懂; 在排错、 修改和模块移植方面也
第!期
宋泽明等:基于 6789 的有限状态机设计
FG
图! "#$% !
符号状态机仿真图
&’()*+ ,-.-/ (.01#2/ ,#(3+.-/ 4#.$5.(
[:, ;] 从图 ! 的仿真结果可以看出, 使用 6789 语言设计的符号状态机, 在使用综合工具进行综合时, 综
合器会删除掉那些未定义的状态, 进而使生成的电路得到优化 % 有时这种优化并不可靠 % 例如: 电路上电 时进入一种无效状态, 或者由于工作环境的影响使得电路进入到一种不期望的工作状态, 那么电路就有可 能不能恢复到正常的工作状态 % 从传统的设计状态机方法的角度来看, 就是电路不具有自启动功能 % 即 该状态机具有不稳定性 % !"! 编码状态机的设计 为便于比较, 仍采用独热码编码方式编码, 对上述源程序包集合 <=> 改动如下: +#)5.5’ #///; 3,/ #/// % ,-4 +*$#0 !!?: % .++; @.0A.$/ @A$ #, (: 4*C2-* D) ; ,3)-’@/ ,-.-/ #, ,-4 +*$#0 B/0-*5 “DDDD!” ; 0*2,-.2- ,-D : ,-.-/ : E “DDD!D” ; 0*2,-.2- ,-! : ,-.-/ : E “DD!DD” ; 0*2,-.2- ,-F : ,-.-/ : E “D!DDD” ; 0*2,-.2- ,-G : ,-.-/ : E “!DDDD” ; 0*2,-.2- ,-: : ,-.-/ : E /24 @A$; 经 &’2@+#H’ 综合, 目标器件仍选择 I+-/5+. 公司的 "9JK!D=!D, 再采用 LIK M <9N&! 进行仿真, 仿真结 果如图 F 所示 %