《数字逻辑》实验报告
姓名 | 贾轲 | 年级 | 22 | |||
学号 | 20220669 | 专业、班级 | 计算机科学与技术计卓01 | |||
实验名称 | 实验十五 摩尔状态机序列检测器&实验十六 米利状态机序列检测器 | |||||
实验时间 | 2023.11.23 | 实验地点 | DS1410 | |||
实验成绩 | 实验性质 | □验证性 □设计性 □综合性 | ||||
教师评价: □算法/实验过程正确; □源程序/实验内容提交 □程序结构/实验步骤合理; □实验结果正确; □语法、语义正确; □报告规范; 评语: 评价教师签名(电子签名): | ||||||
一、实验目的 实验十五 摩尔状态机序列检测器(*****)
实验十六 米里状态机序列检测器(*****) 设计实现一个米里状态机,能检测一个8位的二进制数据中是否存在“1011”序列。 | ||||||
二、实验项目内容
| ||||||
三、实验设计 如图为moore与mealy状态机的状态转移图 | ||||||
四、实验过程或算法(关键步骤、核心代码注解等) 文件结构 顶层文件串联起对应的模块,消抖模块用于消除按键抖动,转换模块用于并转串,将8位的二进制信号转化为一位一位的信号,状态机模块负责状态转移与输出结果。 顶层文件: Mealy: Moore: 用key模拟时间步 按键消抖模块: 思路为设置多个信号记录按键的输入信号,如果在一定的时间内,检测到信号都相同,那么就可以认为按键在这一段时间内保持稳定,也就是稳定,认为可以使用此时记录的信号 信号声明:clk为系统时钟,rst为复位信号,key与debkey分别代表实际按键输入的信号以及最后输出的认为是按键稳定后的信号 此部分负责分频,产生一些短暂的延迟,在这些延迟后进行取样。 此部分设置三个寄存器,用来连续记录,目的就是实现检测输入的值是否稳定 最后输出就是,如果三个寄存器寄存的值都相同,那么就可以认为按键已经稳定 串并转换模块: 信号声明: Clk为时钟信号,rst为复位信号,en为使能信号,datain为输入的8位信号,dataout显示此时转化出的位上的数是否为1,dout显示这8位信号里是否有1101;data为移位寄存器,当clk循环一次时,寄存器循环右移一位;cnt用于计数,记录当前进行到了8位里的第几位。 每次输出移位寄存器里的最高位为当前的并转串结果 此部分调用状态机模块,用于状态转换与生成最终输出,其传入的信号即此时并转串的结果,移位寄存器的最高位 状态机代码: 大体可分为现态次态转换,状态转移逻辑,输出逻辑等三部分 现态次态转换的逻辑固定,在每个时钟上升沿来临时执行; 状态转移逻辑、输出逻辑依据具体问题与状态机类型确定 Moore: Moore状态机的输出仅取决于现态 Mealy: Mealy状态机的输出由现态与输入信号共同决定 | ||||||
五、实验过程中遇到的问题及解决情况(主要问题及解决情况) 如何完成状态机代码设计? 解决情况:完全解决。 Moore状态机与mealy状态机区别是什么?在解决这一问题上有什么不一样的地方? 解决情况:完全解决。 | ||||||
六、实验结果及分析和(或)源程序调试过程 最终实现效果为, R2为复位开关,T1为使能开关,V2~V17从左至右为输出的8位信号的低位到高位,T17为模拟时钟信号,按一次表示一个时间步;V14为当前并转串结果,U16显示当前是否检测到目标序列(1101) 就MOORE与MEALY的不同点,MOORE状态机的输出要在下个时间步里才会输出,例如序列1101000,U16并非在第四个时间步里亮,而是在第五个时间步里亮,这是因为MOORE机的输出仅取决于现态;与之相比,由于MEALY机输出取决于输入与现态,所以可以在当下的时间步里输出结果,即上例中的U16会在第四个时间步里亮。 七、小组分工情况说明 本实验由贾轲20220669完成 | ||||||