11.22数电第四次报告

《数字逻辑》实验报告

姓名

贾轲

年级

22

学号

20220669

专业、班级

计算机科学与技术计卓01

实验名称

实验十五 摩尔状态机序列检测器&实验十六 米利状态机序列检测器

实验时间

 2023.11.23

实验地点

DS1410

实验成绩

 实验性质

验证性  设计性  综合性

教师评价:

□算法/实验过程正确; □源程序/实验内容提交  □程序结构/实验步骤合理;

□实验结果正确;      □语法、语义正确;     □报告规范;           

评语:                          

                             评价教师签名(电子签名):

一、实验目的

实验十五 摩尔状态机序列检测器(*****)

  1. 设计“1101”序列检测的状态转换图;
  2. 设计一个 8 位并转串输出模块 par2ser。该器件有 8 位输入 d[7:0],1 位输出 q,另有一个 clk 端,一个 set 端。set端上升沿将 8位输入锁存到逻辑右移移位寄存器中。
  3. 调用并转串输出模块,使用Verilog HDL语言的行为描述方式实现一个摩尔状态机,能检测一个8位的二进制数据中是否存在“1101”序列,如果检测到该序列则指定的LED灯亮;
  4. 综合、实现、生成bit流,下载到Nexys4开发板进行验证;

实验十六 米里状态机序列检测器(*****)

设计实现一个米里状态机,能检测一个8位的二进制数据中是否存在“1011”序列。

二、实验项目内容

  1. 设计“1101”序列检测的状态转换图;
  2. 设计一个 8 位并转串输出模块 par2ser。该器件有 8 位输入 d[7:0],1 位输出 q,另有一个 clk 端,一个 set 端。set端上升沿将 8位输入锁存到逻辑右移移位寄存器中。
  3. 调用并转串输出模块,使用Verilog HDL语言的行为描述方式实现一个摩尔状态机,能检测一个8位的二进制数据中是否存在“1101”序列,如果检测到该序列则指定的LED灯亮;
  4. 综合、实现、生成bit流,下载到Nexys4开发板进行验证;

三、实验设计

如图为moore与mealy状态机的状态转移图

11.22数电第四次报告_第1张图片

四、实验过程或算法(关键步骤、核心代码注解等)

文件结构

11.22数电第四次报告_第2张图片

顶层文件串联起对应的模块,消抖模块用于消除按键抖动,转换模块用于并转串,将8位的二进制信号转化为一位一位的信号,状态机模块负责状态转移与输出结果。

顶层文件:

Mealy:

11.22数电第四次报告_第3张图片

Moore:

11.22数电第四次报告_第4张图片

用key模拟时间步

按键消抖模块:

思路为设置多个信号记录按键的输入信号,如果在一定的时间内,检测到信号都相同,那么就可以认为按键在这一段时间内保持稳定,也就是稳定,认为可以使用此时记录的信号

11.22数电第四次报告_第5张图片

信号声明:clk为系统时钟,rst为复位信号,key与debkey分别代表实际按键输入的信号以及最后输出的认为是按键稳定后的信号

11.22数电第四次报告_第6张图片

此部分负责分频,产生一些短暂的延迟,在这些延迟后进行取样。

11.22数电第四次报告_第7张图片

此部分设置三个寄存器,用来连续记录,目的就是实现检测输入的值是否稳定

最后输出就是,如果三个寄存器寄存的值都相同,那么就可以认为按键已经稳定

串并转换模块:

信号声明:

11.22数电第四次报告_第8张图片

Clk为时钟信号,rst为复位信号,en为使能信号,datain为输入的8位信号,dataout显示此时转化出的位上的数是否为1,dout显示这8位信号里是否有1101;data为移位寄存器,当clk循环一次时,寄存器循环右移一位;cnt用于计数,记录当前进行到了8位里的第几位。

11.22数电第四次报告_第9张图片

每次输出移位寄存器里的最高位为当前的并转串结果

11.22数电第四次报告_第10张图片

此部分调用状态机模块,用于状态转换与生成最终输出,其传入的信号即此时并转串的结果,移位寄存器的最高位

状态机代码:

大体可分为现态次态转换,状态转移逻辑,输出逻辑等三部分

现态次态转换的逻辑固定,在每个时钟上升沿来临时执行;

11.22数电第四次报告_第11张图片

状态转移逻辑、输出逻辑依据具体问题与状态机类型确定

Moore:

11.22数电第四次报告_第12张图片

Moore状态机的输出仅取决于现态

Mealy:

11.22数电第四次报告_第13张图片

Mealy状态机的输出由现态与输入信号共同决定

五、实验过程中遇到的问题及解决情况(主要问题及解决情况)

如何完成状态机代码设计?

解决情况:完全解决。

Moore状态机与mealy状态机区别是什么?在解决这一问题上有什么不一样的地方?

解决情况:完全解决。

六、实验结果及分析和(或)源程序调试过程

11.22数电第四次报告_第14张图片

最终实现效果为,

11.22数电第四次报告_第15张图片

R2为复位开关,T1为使能开关,V2~V17从左至右为输出的8位信号的低位到高位,T17为模拟时钟信号,按一次表示一个时间步;V14为当前并转串结果,U16显示当前是否检测到目标序列(1101)

就MOORE与MEALY的不同点,MOORE状态机的输出要在下个时间步里才会输出,例如序列1101000,U16并非在第四个时间步里亮,而是在第五个时间步里亮,这是因为MOORE机的输出仅取决于现态;与之相比,由于MEALY机输出取决于输入与现态,所以可以在当下的时间步里输出结果,即上例中的U16会在第四个时间步里亮。

七、小组分工情况说明

本实验由贾轲20220669完成

你可能感兴趣的:(fpga开发)