模三/模七整除器
输入的信号是单bit信号,先输入的在高位,及输入之后数据左移
输入0,表示数据×2
输入1,表示数据×2+1
(1)模三整除器(Moore状态机)
S0:x初始状态
输入0,2x除以3余数为0,还是进入S0.
输入1,2x+1除以3余数为1,进入S1.
S1:x除以3余数为1的状态
输入0,2x除以3余数为2,进入S2.
输入1,2x+1除以3余数为0,进入S3.
S2:x除以3余数为2的状态
输入0,2x除以3余数为1,进入S1.
输入1,2x+1除以3余数为2,进入S2.
S3:x整除3的状态
输入0,2x整除3的状态,进入S3.
输入1,2x+1除以3余数为1,进入S1.
使用的Moore状态机,输出信号延迟一个周期

(2)模三整除器(Mealy状态机)
Mealy状态机比Moore状态机少一个状态,但是判断输出会提前一个周期
Mealy状态机不仅仅和当前状态有关,还和输入信号有关
1)所以Mealy状态机为异步输出,Moore状态机同步输出,Moore状态机更加安全
2)Mealy状态机的状态更少,节省面积
3)Moore状态机面积大,但是为同步输出,时序好
Mealy状态机分析模三整除器:
S0:x初始状态
输入0,2x除以3余数为0,还是进入S0.
输入1,2x+1除以3余数为1,进入S1.
S1:x除以3余数为1的状态
输入0,2x除以3余数为2,进入S2.
输入1,2x+1除以3余数为0,进入S3.
S2:x除以3余数为2的状态
输入0,2x除以3余数为1,进入S1.
输入1,2x+1除以3余数为2,进入S2.
S3:x整除3的状态
输入0,2x整除3的状态,进入S3.
输入1,2x+1除以3余数为1,进入S1.
此处Mealy状态机的状态没有变少的原因是需要将初始状态和被3整除之后的状态区分开
即初始化情况下不算被整除,有数据来了之后被整除才算,所以保留S0和S3状态。
主要改变的输出状态的判断,即Mealy的输出和输入信号也有关系

(3)按照上述的写法编写模7整除器(联发科笔试题)