[BUAA-CO-Lab] P0 Logisim 模块及状态机

Posted by roife on Sun, Oct 25, 2020

课上总结

第一题是建一个 Mealy 状态机。 已经摆渡车有两条路线,可以在某一个站换乘,状态机需要输出下一个位置:

  1. line0: 00 -> 11 -> 01 -> 10 -> 00
  2. line1: 01 -> 10 -> 11 -> 01

第二题是一个简单组合电路。输入三个数字计算和,如果第三个数字为 0 则结果为 0。

第三题是稍微复杂一些的组合电路(计算 md5 加密,需要用 bitfinder),题目表述分为 3 步: 1. 输入一个 32 位的串,由前置 0 + 串 10101 + 需要处理的串 u 三部分拼接而成(串 u 的长度小于等于 27) 2. 若串的长度小于 27 位,则在后面补 1000… 直至达到 27 位 3. 结果为补全后的串 u' 加上串 u 的长度

第一次的题目应该不算难,但是不知是什么原因没做出来第一题,可能我平时对状态机也不是很对付。总之还是勉强过了 P0(前一天还用了 2 小时专门复习,结果还是这样,导致心情极差)。

第三题需要找一个 32 位二进制数中第一次出现 10101 的位置,一开始以为是类似于 GRF 一样的题目,建了一半发现可以用 bit finder 做(但是好像也有爷爷用倍增找,太牛了)。

多谢助教出了两个组合电路救我狗命,希望下周 Verilog 不要再翻车了,回去一定好好看计组(悲)。

总结:

  1. 考试快结束了不要慌,特别是应用题,多猜出题人的想法
  2. 课下多熟悉 Logisim 左边冷门组件的用法,关键时刻说不定可以救命

课下总结

状态机类型

Mealy

Figure 1: Mealy

Figure 1: Mealy

Moore

Figure 2: Moore

Figure 2: Moore

reset 信号

  • 异步清 0:reset 信号接寄存器和 counter,输出信号接 MUX 后面
  • 同步清 0:reset 信号接 counter,输出信号接 MUX 前面

易错点

  • splitter 高低位分清
  • 状态机使用独热码