您现在的位置是:首页 > 正文

1、验证1101序列(Moore)

2024-02-29 11:56:52阅读 0

题目要求:
用Moore型状态机验证1101序列。

题目描述:
用使用状态机验证1101序列,注意:允许重复子序列。如图
在这里插入图片描述
端口描述:

module moore_1101(

input clk,//时钟信号

input clr,//reset复位信号,高电平有效

input din,//输入序列

output dout //输出结果

);

方法一:状态机的通用解法——基础状态转移方程

module moore_1101(
	input clk,//时钟信号
	input clr,//reset复位信号,高电平有效
	input din,//输入序列
	output reg dout //输出结果
);

	reg [2 : 0] curr, next;//状态保存
    parameter temp = 3'd0, s1 = 3'd1, s2 = 3'd2, s3 = 3'd3, s4 = 3'd4;
    
    always @ (posedge clk) begin
        if (clr) curr = temp;
        else curr = next;
    end//这一段需要用阻塞赋值
    
    always @ (*) begin
        case(curr)
            temp: next <= din ? s1 : temp;//闲置状态
            s1: next <= din ? s2 : temp;//已有一个1的状态,再得到一个1进s2,得到0则进闲置
            s2: next <= din ? s2 : s3;//已有11的状态,再得到1进s2,得到0进s3
            s3: next <= din ? s4 : temp;//已有110的状态,再得到一个1进s4,得到0进闲置
            s4: next <= din ? s2 : temp;//已经1101,再得到一个1进s2,得到0进闲置
        endcase
    end//状态转移
            
    always @ (posedge clk) begin
        if (clr) dout <= 0;
        else dout <= ((curr == s4) ? 1 : 0);
    end//这一段可以用阻塞赋值也可以用非阻塞赋值
    
endmodule

方法二: D触发器灵活得出状态转移方程

假设需对 n n n位序列进行检测,则最多需要 n n n D D D触发器(很好理解,最多的情况就是储存全部信息,每位一个 D D D触发器)
以四位为例,于是有D触发器 D 0 , D 1 , D 2 , D 3 D_0,D_1,D_2,D_3 D0,D1,D2,D3,现态为 q 0 , q 1 , q 2 , q 3 q_0,q_1,q_2,q_3 q0,q1,q2,q3
显然状态转移方程为
D 0 = c i n D_0= \rm cin D0=cin
D 1 = D 0 D_1=D_0 D1=D0
D 2 = D 1 D_2=D_1 D2=D1
D 3 = D 2 D_3=D_2 D3=D2
注意:如果状态转移方程不显然,则需严格按照设计状态-状态化简-状态转移真值表-状态转移方程过程进行来得出转移方程,相关内容在数电-同步时序电路。

module moore_1101(
	input clk,//时钟信号
	input clr,//reset复位信号,高电平有效
	input din,//输入序列
	output dout //输出结果
);
	reg q3 = 0, q2 = 0, q1 = 0, q0 = 0;
    
    always @ (posedge clk) begin
        if (!clr) begin
            q0 <= din;
            q1 <= q0;
            q2 <= q1;
            q3 <= q2;
        end
        
        else begin
            q0 <= 0;
            q1 <= 0;
            q2 <= 0;
            q3 <= 0;
        end
    end
    assign dout = (({q3, q2, q1, q0} == 4'b1101) ? 1 : 0); 

方法三:
在这里插入图片描述

网站文章

  • Python常用模块

    Python常用模块

    random 模块https://www.cnblogs.com/liangmingshen/p/8909376.html

    2024-02-29 11:56:44
  • java基础10题

    java基础10题

    2024-02-29 11:56:15
  • 资源限制类题目技巧大全

    即使有些碰撞,一个文件中的数据多于1千万条,但没有关系。因为在前面我们算过,一个文件真正可以存的数据条数是1亿两千500条。1千万条只是比较保守的一个数,因此一个文件超了1千万条数据也不会有什么,也不...

    2024-02-29 11:56:09
  • redis专题:redis键值设计、性能优化以及redis连接池配置

    文章目录1.redis键值设计①:key名设计②:value设计2. 命令使用3. redis连接池配置参数设计 1.redis键值设计 redis合理的键值设计,可以增加可读性和可管理性,特别在大型...

    2024-02-29 11:55:48
  • maven项目,正常在main方法中运行正常,部署到tomcat运行时就抛出class not found异常...

    Eclipse中Maven项目无法在Tomcat中运行  出现ClassNotFound异常  看看异常信息,都是Maven依赖包中的类,项目-&gt;属性-&gt;Deployment Assembly-&gt;Add-&gt;Java Build Path Entries-&gt; Maven Dependencies -&gt; Finish -&gt;OK  再次运行,...

    2024-02-29 11:55:18
  • Python高效编程技巧,让你的代码更优雅

    Python编程语言简介 Python是一种高级编程语言。和其他编程语言相比Python的语法更加简单、清晰,易于理解和上手。同时Python还提供了很多常用的标准库和第三方库,方便开发者快速开发出高...

    2024-02-29 11:55:06
  • Java 限流方案

    限流基本概念QPS和连接数控制传输速率黑白名单分布式环境限流方案常用算法令牌桶算法漏桶算法滑动窗口常用的限流方案Nginx限流中间件限流限流组件合法性验证限流Guawa限流网关层限流从架构维度考虑限流设计具体的实现限流的手段:Tomcat限流。

    2024-02-29 11:54:37
  • [RK3399][Android7.1] 调试笔记 --- 添加重启命令恢复出厂设置

    Platform: RK3399 OS: Android 7.1 Kernel: v4.4.83改动:diff --git a/arch/arm64/boot/dts/rockchip/rk3399.dtsi b/arch/arm64/boot/dts/rockchip/rk3399.dtsiindex 1759a91..5bf6cb9 100644--- a/arch/arm...

    2024-02-29 11:54:29
  • Selenium--多表单frame切换

    web应用中会遇到frame或者iframe表单嵌套页面的情况,对于表单内嵌页面上的元素无法直接进行定位,需要将当前定位的主体切换为frame或iframe表单的内嵌页面中才可定位元素。

    2024-02-29 11:54:21
  • 2013年组织社区活动总结

    不觉间,又到了年末岁尾。时间过得真快啊。每到这个时候,总是需要对过去的一年做个总结,再对明年的事情做个计划,今年也不例外,呵呵。接下来我就对程序员社区相关工作,先做下2013年的总结,再计划一下2014年的活动。2013年QClub大连继续发展,一共做了九次各种各样的活动,既包括常见的演讲 + 交流,也包括徒步活动、敏捷游戏等其他形式的聚会,内容也比较广泛。总的来说还是比较有成就感,因为从数量上来

    2024-02-29 11:53:55