需要为学校设计一个简单的。 更具体地说是摩尔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
我必须再次注意,控制部分是完全抽象的,我不知道在实践中如何处理它。
答案 0 :(得分:0)
FSM本身没有固有的时间概念(尽管可以定义)。 Moore machine是简化模型,缺乏甚至正式表示不断进步的“时间”的能力(当然,没有完全用状态实现计数);记住,只有一组有限的状态。
在任何情况下,都可以在特定FSM的实现详细信息中引入时间,并且在特定状态之间更改所需的时间可能不是恒定的。 (特定的FSM也可能以不同的方式映射到不同的实现。)在clocked system的情况下,需要研究如何在实现中定义每个“时钟”;它可能是前沿,后缘,两者或完全不同的东西。
不要在这里查看FSM以获得指导(它只是状态的逻辑进展),而是查看FSM所代表的操作码(或任何实现),以及CPU(或任何实现)的方式有问题“执行”他们。
(这些书怎么说?; - )