关于状态机的问题
本帖最后由 fpgaw 于 2010-11-19 09:43 编辑我想请问一下,不同的项目要求不同的状态,也就是说状态数目是编写代码的人根据定的,那么这个数目有没有与别的例如时序之类的因素有关呢?<br>
或者这么说,会不会出现同一种情况不同数目不同状态的状态机最后殊途同归? 你说的什么意思嘛,搞不懂得,我觉得一般状态机就是根据输入和上一个状态,决定状态机的下一个状态,而输出是根据当前状态(有时和输入一起)决定的。时序电路一般都是同步时钟来控制的,如果状态机处理上一个状态和时间花费的时间超过了一个时钟周期,我们可以分频更小,就可以了啊。 我得意思是<br>
比如会不会出现同一个过程<br>
我们可以把它分为A-B-C-D-E五个状态<br>
也可以分成A-B-C-D-E-F6各状态<br>
用不同的状态机都可以达到相同的目的?<br>
如果可以得话,前者需要5个时钟沿,后者需要6个,在时钟方面是不是无所谓? 显然可以<br>
产生一个单周期脉冲<br>
可以用两个状态,第一个置1,接着第二个置0<br>
Case state<br>
when ready_1=><br>
r<=‘1’;<br>
state<=ready_2;<br>
when ready_2=><br>
r<=‘0’;<br>
state<=state_others;<br>
……<br>
<br>
也可以用一个状态实现<br>
Case state<br>
when ready=><br>
if r=‘0’ then<br>
r<=‘1’;<br>
else<br>
r<=‘0’;<br>
state<=state_others;<br>
end if;<br>
……<br> 那如果我拿到一个过程,初步分析之后比如觉得可以分解成5个状态,仿真时出现问题,那么我是应该着重检查逻辑关系还是状态的分配?<br>
有没有把一般过程分解状态的指导性原则或者经验? 呵呵,没考虑过。<br>
同时作的事分在同一个状态把<br>
不同时作的事按顺序分状态把<br>
如果不怕多花几个时钟周期或者输出没有相应的时间要求,多分几个状态应该没有什么问题。 我得意思是<br>
比如会不会出现同一个过程<br>
我们可以把它分为A-B-C-D-E五个状态<br>
也可以分成A-B-C-D-E-F6各状态<br>
用不同的状态机都可以达到相同的目的?<br>
如果可以得话,前者需要5个时钟沿,后者需要6个,在时钟方面是不是无所谓?
页:
[1]