在FSM中,一个状态持续一个或多个时钟周期?

时间:2012-05-04 21:12:29

标签: computer-architecture state-machine fsm

需要为学校设计一个简单的。 更具体地说是摩尔FSM。我不确定状态转换是如何发生的,下一个状态是每个时钟吗? 我需要知道,因为我想知道我是否可以移动寄存器并为其添加一个值,所有都处于相同的状态......可以使用波边缘吗?

修改

我必须设计带有寄存器的 ALU 部分作为门级的原理图,因此没有目标 CPU

我制作了算法图,然后根据 Moore FSM 规则将状态置于功能块。每个操作块都有一个状态。

例如,在状态 S1 中,我有以下操作: y0 = shift Reg1 left; y1 = Reg1 = Reg1 + Reg2 。因此,摩尔 FSM 输出的控制部分的微指令将 0000011(yn ... y1,y0)。 这个微指令应该是输入到我需要设计的ALU部分。现在我意识到 y1,y0 会相互冲突,因为两者都使用 Reg1。

它有问题,因为我实际上没有控制部分,我必须想象核心FSM并且只设计带寄存器的ALU。这就是为什么我想知道我是否有一个以上的时钟周期,所以我可以对 y0,y1 进行排序,还是我必须在一个时钟内完成整个操作?

我计划制作并行输入,并行输出非移位寄存器,显然我不能同时执行微指令的两个操作。那我该怎么办:

1. make extra states? which i really dont want to do
2.use edges of a single clock? (might cause problems?)
3.Assume i get a preset amount of ticks from the clock to complete the microcommand ?
This would make the most sense, but i dont know if its the case.
The control unit does "know" the algorithm and thus how many operations need to be performed

我必须再次注意,控制部分是完全抽象的,我不知道在实践中如何处理它。

1 个答案:

答案 0 :(得分:0)

FSM本身没有固有的时间概念(尽管可以定义)。 Moore machine是简化模型,缺乏甚至正式表示不断进步的“时间”的能力(当然,没有完全用状态实现计数);记住,只有一组有限的状态。

在任何情况下,都可以在特定FSM的实现详细信息中引入时间,并且在特定状态之间更改所需的时间可能不是恒定的。 (特定的FSM也可能以不同的方式映射到不同的实现。)在clocked system的情况下,需要研究如何在实现中定义每个“时钟”;它可能是前沿,后缘,两者或完全不同的东西。

不要在这里查看FSM以获得指导(它只是状态的逻辑进展),而是查看FSM所代表的操作码(或任何实现),以及CPU(或任何实现)的方式有问题“执行”他们。

(这些书怎么说?; - )