data_post_process是解码数据确认及串并转换模块。解调后的数据经过了解码预处理模块的初步判断,只是符合了一定的编码规则,在解码过程中还可能会出现诸如帧头出错、结尾数据不为1等其他错误。该模块通过判断解码模块的error和data_success信号,确认此次解码是否成功,若成功,将接收解码数据,同时考虑到串行数据传输速度较慢,本模块会对解码数据进行串并转换,然后8位并行地将解码后的数据传输给其他模块。

fm_and_miller_decode是解码模块。其组成框图如图7所示。

图7 miller2 解码结构图

该解码模块主要由解码状态机控制。状态机的状态由初始态、数据解码态,以及最后的解码成功和解码失败状态组成。接收到解码开始信号时,状态机由初始态跳转到数据解码态开始解码,在解码过程中,如果发现输入的数据违背了编码规则或不符合命令的设置,则直接跳入失败状态。在该状态下,会有一个解码失败信号error产生并输出。如果解码顺利进行到结束,则跳转到解码成功状态,会有一个解码成功信号data_success产生并输出,控制下一个模块的工作。这样解码状态机一边接收待解码数据,进行解码处理,一边将前面处理完的数据输出给CRC5/16校验模块,实现了类似于流水线的工作,节省了解码时间。