序列检测“1101”

这篇具有很好参考价值的文章主要介绍了序列检测“1101”。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.题意描述

2.利用摩尔型状态机求解

 3.利用米利型状态机求解

4.摩尔型状态机与米利型状态机的区别


1.题意描述

用状态机检测“1101”序列,当检测到后将o_valid标志信号拉高。考虑序列叠加情况,即“1101101101”将会识别出3个“1101”

2.利用摩尔型状态机求解

摩尔型状态机:输出只与当前状态有关,与当前输入无关

摩尔型状态机状态定义:IDLE, S_1,S_11,S_110,S_1101

摩尔型状态机状态转移图:

序列检测“1101”

摩尔型状态机RTL代码:

module sequence_test_more(
        i_clk   ,
        i_rst_n ,
        i_data  ,
        o_valid
);

input           i_clk   ;
input           i_rst_n ;
input           i_data  ;
output          o_valid ;

reg             o_valid ;

parameter       IDLE    =       3'b000;
parameter       S_1     =       3'b001;
parameter       S_11    =       3'b010;
parameter       S_110   =       3'b011;
parameter       S_1101  =       3'b100;

reg     [2:0]   current_state   ;
reg     [2:0]   next_state      ;

always@(posedge i_clk or negedge i_rst_n)
begin
        if(!i_rst_n)
                current_state <= #1 IDLE        ;
        else
                current_state <= #1 next_state  ;
end

always@(*)
begin
        case(current_state)
        IDLE    :
                if(i_data==1'b1)
                        next_state = S_1 ;
                else
                        next_state = IDLE ;
        S_1     :
                if(i_data==1'b1)
                        next_state = S_11 ;
                else
                        next_state = IDLE ;
        S_11    :
                if(i_data==1'b0)
                        next_state = S_110 ;
                else
                        next_state = S_11 ;

        S_110   :
                if(i_data==1'b1)
                        next_state = S_1101 ;
                else
                        next_state = IDLE ;

        S_1101  :
                if(i_data==1'b1)
                        next_state = S_11 ;
                else
                        next_state = IDLE ;

        default :
                        next_state = IDLE ;
        endcase

end

always@(posedge i_clk or negedge i_rst_n)
begin
        if(!i_rst_n)
                o_valid <= #1 1'b0      ;
        else if(next_state==S_1101)
                o_valid <= #1 1'b1      ;
        else
                o_valid <= #1 1'b0      ;
end
endmodule

仿真文件:输入序列11101101011010

`timescale 1ns/1ns
module test;

//************i_clk and i_rst_n*************
reg i_rst_n     ;
reg i_clk       ;

initial
begin
        i_rst_n = 1'b0  ;
        i_clk   = 1'b0  ;
        #20;
        i_rst_n = 1'b1  ;
end
always #5 i_clk<=~i_clk;
//************define******************
reg             i_data  ;
wire            o_valid ;


//************instance****************
sequence_test_more      U1(
        .i_clk          (i_clk  ),
        .i_rst_n        (i_rst_n),
        .i_data         (i_data ),
        .o_valid        (o_valid)
);
//************main source*************
parameter       TEST_DATA = 14'b1110_1101_0110_10;
initial
begin
        i_data = 1'b0;
        #50;
        @(posedge i_clk)
        i_data <=#1 TEST_DATA[13];
        @(posedge i_clk)
        i_data <=#1 TEST_DATA[12];
        @(posedge i_clk)
        i_data <=#1 TEST_DATA[11];
        @(posedge i_clk)
        i_data <=#1 TEST_DATA[10];
        @(posedge i_clk)
        i_data <=#1 TEST_DATA[9];
        @(posedge i_clk)
        i_data <=#1 TEST_DATA[8];
        @(posedge i_clk)
        i_data <=#1 TEST_DATA[7];
        @(posedge i_clk)
        i_data <=#1 TEST_DATA[6];
        @(posedge i_clk)
        i_data <=#1 TEST_DATA[5];
        @(posedge i_clk)
        i_data <=#1 TEST_DATA[4];
        @(posedge i_clk)
        i_data <=#1 TEST_DATA[3];
        @(posedge i_clk)
        i_data <=#1 TEST_DATA[2];
        @(posedge i_clk)
        i_data <=#1 TEST_DATA[1];
        @(posedge i_clk)
        i_data <=#1 TEST_DATA[0];
        #50;
        $finish;
end

//***************fsdb****************
initial
begin
        $fsdbDumpfile("test.fsdb");
        $fsdbDumpvars(0,test);
end

endmodule

仿真波形:

序列检测“1101”

 3.利用米利型状态机求解

米利型状态机:输出不仅当前状态有关,还与当前输入有关

米利型状态机状态定义:IDLE, S_1,S_11,S_110

米利型状态机状态转移图:

序列检测“1101”

米利型状态机RTL代码:


module sequence_test_mely(
        i_clk   ,
        i_rst_n ,
        i_data  ,
        o_valid
);

input           i_clk   ;
input           i_rst_n ;
input           i_data  ;
output          o_valid ;

reg             o_valid ;

parameter       IDLE    =       3'b000;
parameter       S_1     =       3'b001;
parameter       S_11    =       3'b010;
parameter       S_110   =       3'b011;
//parameter     S_1101  =       3'b100;

reg     [2:0]   current_state   ;
reg     [2:0]   next_state      ;

always@(posedge i_clk or negedge i_rst_n)
begin
        if(!i_rst_n)
                current_state <= #1 IDLE        ;
        else
                current_state <= #1 next_state  ;
end

always@(*)
begin
        case(current_state)
        IDLE    :
                if(i_data==1'b1)
                        next_state = S_1 ;
                else
                        next_state = IDLE ;
        S_1     :
                if(i_data==1'b1)
                        next_state = S_11 ;
                else
                        next_state = IDLE ;
        S_11    :
                if(i_data==1'b0)
                        next_state = S_110 ;
                else
                        next_state = S_11 ;

        S_110   :
                if(i_data==1'b1)
                        next_state = S_1 ;
                else
                        next_state = IDLE ;

        default :
                        next_state = IDLE ;
        endcase

end

always@(posedge i_clk or negedge i_rst_n)
begin
        if(!i_rst_n)
                o_valid <= #1 1'b0;
        else if((current_state==S_110) && (i_data == 1'b1))
                o_valid <= #1 1'b1      ;
        else
                o_valid <= #1 1'b0      ;
end
endmodule

仿真文件:输入序列11101101011010(与摩尔型仿真激励相同)

仿真波形:

序列检测“1101”

4.摩尔型状态机与米利型状态机的区别

在状态定义上米利型状态机比摩尔型状态机少一个状态。文章来源地址https://www.toymoban.com/news/detail-455996.html

到了这里,关于序列检测“1101”的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Nuxt3】nuxt3目录文件详情描述:.nuxt、.output、assets、public、utils(一)

    nuxt3的中文网站 上次简单介绍了nuxt3创建项目的方法和目录文件大概用处。 这次详细说下.nuxt、.output、assets、public、utils五个文件夹的用处。 Nuxt在开发中使用.nuxt/目录来生成你的Vue应用程序。 为了避免将开发构建的输出推送到你的代码仓库中,你应该将这个目录添加到你的

    2024年01月18日
    浏览(83)
  • 计算机视觉中的特征检测和描述

            这篇文章是关于计算机视觉中特征检测和描述概念的简要理解。在其中,我们探讨了它们的定义、常用技术、简单的 python 实现和一些限制。         特征检测和描述是计算机视觉中的基本概念,在图像识别、对象跟踪和图像拼接等各种任务中起着至关重要的

    2024年02月13日
    浏览(42)
  • “ORB技术解析:快速检测和描述图像特征点的算法“

    ORB(Oriented FAST and Rotated BRIEF)是一种计算机视觉算法,用于检测和描述图像中的特征点。它结合了FAST算法和BRIEF算法,使其具有快速的计算速度和对不同光照条件和视角变化的鲁棒性。 ORB算法的主要原理是使用FAST算法快速检测图像中的关键点,然后使用BRIEF算法描述这些关

    2024年02月09日
    浏览(39)
  • OpenCV之摩尔纹

            用数码相机拍摄景物中,如果有密纹的纹理,常常会出现莫名其妙的水波样条纹。这就是摩尔纹。简单的说,摩尔纹是差拍原理的一种表现。从数学上讲,两个频率接近的等幅正弦波叠加,合成信号的幅度将按照两个频率之差变化。差拍原理广泛应用到广播电视和

    2024年02月01日
    浏览(29)
  • 排序算法笔记--摩尔投票算法

    摩尔投票算法是一种用于在数组中查找出现次数超过一半的元素的有效算法。算法的核心思想是利用候选元素和计数器进行投票,通过消除不同元素之间的抵消来找到出现次数超过一半的元素。 如果数组中存在一个出现次数超过一半的元素,那么这个元素的剩余部分一定会抵

    2024年02月16日
    浏览(37)
  • 嵌套列表,与摩尔投票进阶

    0.请问 == 运算符和 is 运算符有什么区别呢? 在Python中==运算符用于比较两个变量的值是否相等,而is运算符用于判断两个变量引用对象是否为同一个,即所引用的对象的内存地址是否一致。 1.请问下面代码的执行结果是? 执行错误结果为 [[1, 2, 3], [4, 5, 6], [7, 8, 9]] ,正确结果

    2023年04月17日
    浏览(34)
  • 169. 多数元素(摩尔投票法) 题解

    给定一个大小为  n   的数组  nums  ,返回其中的多数元素。多数元素是指在数组中出现次数  大于   ⌊ n/2 ⌋  的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 : 可以使用摩尔投票算法(Boyer-Moore Voting Algorithm)来解决这个问题,它是解决这

    2024年02月12日
    浏览(35)
  • P1101 单词方阵

    网址如下: P1101 单词方阵 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 开学哩 水了一题 代码如下:

    2024年02月19日
    浏览(28)
  • opencv 进阶15-检测DoG特征并提取SIFT描述符cv2.SIFT_create()

    前面我们已经了解了Harris函数来进行角点检测,因为角点的特性,这些角点在图像旋转的时候也可以被检测到。但是,如果我们放大或缩小图像时,就可能会丢失图像的某些部分,甚至有可能增加角点的质量。这种损失的现象需要一种与图像比例无关的角点检测方法来解决。

    2024年02月11日
    浏览(52)
  • 摩尔状型态机和米利型状态机区别

    摩尔型(Moore):输出只与状态有关与输入无关 米利型(Mealy):输出不仅与状态有关还和输入有关 例如:我们进行检测序列:1101 输入/输出   图 1摩尔型状态机   图 2米利型状态机 总结 :        我们通过对比可以看出,摩尔型状态机要比米利型状态机多一个状态,同时

    2024年02月12日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包