1

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

编辑

我必须设计带有寄存器的ALU部分作为门级的示意图,所以没有目标CPU

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

例如在状态S1,我有以下操作:y0 = shift Reg1 left; y1 = Reg1 = Reg1 + Reg2所以Moore 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

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

4

1 回答 1

0

FSM本身没有固有的时间概念(尽管可以定义)。摩尔机器是简化模型,甚至无法正式表示一个不断前进的“时间”(当然,没有完全用状态来实现计数);请记住,只有一组有限的状态。

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

与其在此处查看 FSM 以获得指导(它只是状态的逻辑进展),不如查看 FSM 所代表的操作码(或任何实现方式),以及所讨论的 CPU(或任何实现方式)如何”执行”他们。

(书上怎么说?;-)

于 2012-05-04T21:22:03.620 回答