最近在学习状态机,用状态机实现序列检测器10010.

思路如下:

1. S0代表当前数据0,如果检测到0就停在S0,如果检测到1就进入S1。

2. S1代表当前数据1,如果检测到0就进入S2,如果检测到1就停在S1。

3. S2 代表数据10,如果检测到0就进入S3,如果检测到1就回到S1。

4. S3代表数据100,如果检测到0就回到S0,如果检测到1就进入S4。

5. S4代表数据1001,如果检测到0就进入S5,如果检测到1就回到S1。

6. S5代表数据10010,如果检测到0就回到S0,如果检测到1就进入S1。

状态机图如下:

代码如下:

module Xulie(
input wire clk,
input wire rst_n,
input wire in,
output wire Bingo ); reg [:] state; parameter [:] S0 = 'b00_0001;
parameter [:] S1 = 'b00_0010;
parameter [:] S2 = 'b00_0100;
parameter [:] S3 = 'b00_1000;
parameter [:] S4 = 'b01_0000;
parameter [:] S5 = 'b10_0000; always @ (posedge clk or rst_n) begin
if(!rst_n)
state <= S0;
else case(state)
S0: begin
if(in == 'b1)
state <= S1;
else
state <= S0;
end
S1: begin
if(in == 'b0)
state <= S2;
else
state <= S1;
end
S2: begin
if(in == 'b0)
state <= S3;
else
state <= S1;
end
S3: begin
if(in == 'b1)
state <= S4;
else
state <= S0;
end
S4: begin
if(in == 'b0)
state <= S5;
else
state <= S1;
end
S5: begin
if(in == 'b0)
state <= S0;
else
state <= S1;
end default:
state <= S0; endcase
end assign Bingo = state == S5; endmodule

Testbench如下:

`timescale 1ns/1ns

module Tb_Xulie;

reg  clk, rst_n,in;
wire Bingo; initial begin
clk = ;
rst_n = ;
in = ;
#;
rst_n =;
end initial begin
#;
in = ;
#;
in = ;
#;
in = ;
#;
in = ;
#;
in = ;
#;
in = ;
#;
in = ;
#;
in = ;
#;
in = ;
#;
in = ;
#;
in = ;
#;
in = ;
#;
in = ;
#;
in = ;
#;
in = ;
end always # clk <= ~clk; Xulie Xulie_inst(
.clk (clk),
.rst_n (rst_n),
.in (in),
.Bingo (Bingo)
); endmodule

波形图如下:

基于FPGA的序列检测器10010的更多相关文章

  1. FPGA 状态机-序列检测器verilog

    实现功能:检测出串行输入数据4位Data二进制序列0101,当检测到该序列的时候,out=1,否则out=0 (1)给出状态编码,画出状态图 (2)门电路实现 (3)verilog实现 首先规定Q3Q ...

  2. 10010序列检测器的三段式状态机实现(verilog)

    序列检测器是时序数字电路设计中经典的教学范例,夏宇闻的<verilog数字系统设计教程>一书中有这个例子,用verilog设计一个“10010”序列的检测器.看完后我觉得F和G两个状态多余 ...

  3. 基于FPGA的音频信号的FIR滤波(Matlab+Modelsim验证)

    1 设计内容 本设计是基于FPGA的音频信号FIR低通滤波,根据要求,采用Matlab对WAV音频文件进行读取和添加噪声信号.FFT分析.FIR滤波处理,并分析滤波的效果.通过Matlab的分析验证滤 ...

  4. 基于FPGA的IIR滤波器

    基于FPGA的IIR滤波器                                                         by方阳 版权声明:本文为博主原创文章,转载请指明转载地址 ...

  5. 基于FPGA的中值滤波算法实现

    在这一篇开篇之前,我需要解决一个问题,上一篇我们实现了基于FPGA的均值滤波算法的实现,最后的显示效果图上发现有一些黑白色的斑点,我以为是椒盐噪声,然后在做基于FPGA的中值滤波算法的实验时,我发现黑 ...

  6. 基于FPGA的有限状态机浅析

    前言:状态机大法好,状态机几乎可以实现一切时序逻辑电路. 有限状态机(Finite State Machine, FSM),根据状态机的输出是否与输入有关,可分为Moore型状态机和Mealy型状态机 ...

  7. 基于FPGA的数字识别的实现

    欢迎大家关注我的微信公众号:FPGA开源工作室     基于FPGA的数字识别的实现二 作者:lee神 1 背景知识 1.1基于FPGA的数字识别的方法 通常,针对印刷体数字识别使用的算法有:基于模版 ...

  8. 基于FPGA的XPT2046触摸控制器设计

    基于FPGA的XPT2046触摸控制器设计 小梅哥编写,未经许可,文章内容和所涉及代码不得用于其他商业销售的板卡 本实例所涉及代码均可通过向 xiaomeige_fpga@foxmail.com  发 ...

  9. 基于FPGA的HDMI显示设计(三)

    上一篇:基于FPGA的VGA显示设计(二) 10月10日 ~ 20日期间实习,令我万万没想到的是实习题目是 “便携式高清电视显示屏测试系统原型设计” 也就是 “基于FPGA的视频显示”. 实习要求用 ...

随机推荐

  1. 加载Assetbundle需要注意的地方

    WWW:异步实现,手机上不能用于同步代码,需要监测其完成状态.不用www.dispose. CreateFromFile:阻塞,但是移动平台上面的路径格式有点坑,没时间看,不用. 以下两个方式需要先使 ...

  2. Telsa显卡比较

    1. T4 2. P4/ P40 3. P100 4. V100

  3. JS对象的拷贝

    1:对数据进行备份的时候,如果这个数据是基本的数据类型,那么很好办,通过赋值实现复制即可. 赋值与浅拷贝的区别 var obj1 = { 'name' : 'zhangsan', 'age' : '1 ...

  4. java实现哈夫曼编码

    java实现哈夫曼编码 哈夫曼树   既然是学习哈夫曼编码,我们首先需要知道什么是哈夫曼树:给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫 ...

  5. 按比例缩放DIV

    class ResponsiveDiv extends React.Component { constructor(props) { super(props); this.state = { widt ...

  6. YII2 console中引用其他模块(子项目)的model时出现model找不到命名空间的问题解决

    YII2 console中写定时任务, 想使用其他模块的model, 在 console的yii.php 入口文件中引入其他模块的配置文件, 否者会出现model等命名空间找不到的问题. 还有, 命名 ...

  7. git HEAD detached from origin 问题的解决

    这个问题是因为分支选错了,所以说后续的提交都提交到了一个匿名分支之上,整个状态是游离了的 下面说一下我解决问题的步骤 1.查看在游离状态下提交的最新commit号 git branch -v 2.创建 ...

  8. Matrix [POJ3685] [二分套二分]

    Description 有一个N阶方阵 第i行,j列的值Aij =i2 + 100000 × i + j2 - 100000 × j + i × j,需要找出这个方阵的第M小值. Input 第一行输 ...

  9. 构建MHA实现MySQL高可用集群架构

    一.MHA简介 MHA(Master HighAvailability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开 ...

  10. centos7下部署nginx与php

    背景介绍 相信读者在看这篇文章之前已经fastcgi,php-fpm有所了解.大概来讲php语言需要fastcgi程序,即php解释器解释,而php解释器需要php-fpm管理器进行调度. 以下对CG ...