Verilog HDL 学习笔记三

基于状态机的序列检测器
检测序列11001,其状态转移图如下所示:

三段式:在两个always模块描述方法基础上,使用三个always模块,一个always模块采用同步时序描述状态转移,一个always采用组合逻辑判断状态转移条件,描述状态转移规律,另一个always模块描述状态输出(可以用组合电路输出,也可以时序电路输出)。

设计代码:

module seqdet_11001(dout,din,clk,rst_n);input clk,rst_n;input din;output reg dout;reg [2:0] cst,nst;localparam [2:0]  s0=3'b000,s1=3'b001,s2=3'b010,s3=3'b011,s4=3'b100;always @(posedge clk or negedge rst_n )
beginif(!rst_n)cst <= 0;elsecst <= nst;
end always @(din or cst)
begincase(cst)s0:if(din==1)nst <= s1;else nst <= s0;s1:if(din==1)nst <= s2;else nst <= s0;s2:if(din==0)   nst <= s3;elsenst <= s2;s3:if(din==0)nst <= s4;else nst <= s1;s4:if(din==1)nst <= s1;elsenst <= s0;default: nst <= s0;endcase
endalways @(posedge clk or negedge rst_n)
beginif(!rst_n)dout <= 0;else if((din==1)&&cst==s4)dout <= 1;elsedout <= 0;
endendmodule

序列信号发生器可以通过三种方法实现:
1.状态转移型
用一个不断循环的状态机,循环产生序列信号1100_1100_1001_1001;
2.移位寄存器型
通过移位寄存器构成序列信号发生器,定义一个16位的寄存器1100_1100_1001_1001,输入信号的最高位移入最低位,其他位依次向左移一位,在每个时钟上升沿到来时,将输入信号的最高位通过dout输出,从而循环产生序列信号。
3.计数器加组合输出网络类型
根据序列的长度M设计模为M的计数器,计数器的状态可以自定,可列出真值表和卡诺图进行化简,得出逻辑表达式,根据逻辑表达式设计代码。比如以下y要产生的序列1100_1100_1001_1001,则需要模为16位的计数器。

本测试代码采用第二种方法——移位寄存器实现序列信号产生器。

测试代码:

module seqdet_11001_tb;reg clk,rst_n;reg din;wire dout;reg [15:0] DIN;seqdet_11001 uint(.clk(clk),.rst_n(rst_n),.din(din),.dout(dout)
);always        #10   clk = ~clk;
initial
beginclk=0;rst_n=0;din=0;DIN=16'b0;#10 rst_n=1;DIN=16'b1100_1100_1001_1001;#340 $stop;
endalways @(posedge clk)
begindin <= DIN[15];DIN <={DIN[14:0],DIN[15]};
endendmodule

具体的三种实现序列信号产生器的方法可参考[]https://blog.csdn.net/Reborn_Lee/article/details/80378670

序列检测器(三段式状态机)相关推荐

  1. 重迭式三段式状态机序列检测器-检测10110110

    重迭式三段式状态机序列检测器-检测10110110 要求:序列检测器 clk input clock input rst_n input asynchronous reset, low active ...

  2. 三段式状态机_FPGA笔试题——序列检测(FSM状态机)

    FSM有限状态机,是FPGA和数字IC相关岗位必须要掌握的知识点,在笔试和面试中都非常常见. (1)了解状态机:什么是摩尔型状态机,什么是米利型状态机,两者的区别是什么?一段式.二段式.三段式状态机的 ...

  3. 【 FPGA 】序列检测器的Mealy状态机实现

    上篇博文讲了使用Moore状态机来设计一个序列检测器:序列检测器的Moore状态机实现 原理一致,这里只不过采用了Mealy状态机实现,快速给出: 状态转移图如下:被检测序列为1101,也就是说,如果 ...

  4. 三段式状态机_Verilog实战篇(5)——FIFO amp; 状态机

    今天的暑期培训课依旧是由邸志雄老师主讲:FIFO基本原理及状态机的编写和应用. 下面先说一下FIFO:     一.FIFO 常见参数主要有:   1. FIFO的宽度:即 FIFO 一次读写操作的数 ...

  5. 小梅哥三段式状态机按键消抖改写

    小梅哥三段式状态机按键消抖改写 小梅哥资料中按键消抖部分是用一段式.二段式状态机写的.我用三段式状态机改写了一下,仿真和板载测试通过. 代码记录如下: module key_filter1(input ...

  6. fpga时序逻辑(三段式状态机模板、rom实现、边沿检测)

    目录 VL21 根据状态转移表实现时序电路 VL22 根据状态转移图实现时序电路 VL23 ROM的简单实现 VL24 边沿检测 VL21 根据状态转移表实现时序电路 题目分析: 1.使用三段式状态机 ...

  7. SJA1000 CAN总线verilog写的SJA1000 CAN总线控制器。 程序使用三段式状态机,对于语句均有箱子的中文注释

    SJA1000 CAN总线verilog写的SJA1000 CAN总线控制器. 程序使用三段式状态机,对于语句均有箱子的中文注释,同时还有相关的文档说明. 可直接拿来使用,同时适合新手学习规范写作代码 ...

  8. system verilog 三段式状态机和interface

    1.结构体和C语言类似,system verilog定义的package,也是一个sv文件,需要被工程当作文件一样添加.如果是inclue的文件,要在工程中设置搜索路径,否则在引用时要用相对工程启动文 ...

  9. DSP嵌入式C语言状态机,三段式状态机描述及模版

    三段式状态机描述及模版 [复制链接] 本帖最后由 Aguilera 于 2018-11-10 20:23 编辑 时序电路的状态是一个状态变量集合,这些状态变量在任意时刻的值都包含了为确定电路的未来行为 ...

  10. 三段式状态机-FSM

    三段式代码多,但是有时钟同步,延时少,组合逻辑跟时序逻辑分开并行出错少. (1)同步状态转移 (2)当前状态判断接下来的状态 (3)动作输出 如果程序复杂可以不止三个always   .always ...

最新文章

  1. 实用ListView加载提示工具类
  2. codeforces B. Eight Point Sets 解题报告
  3. LeetCode_每日一题今日份_剑指Offer11.旋转数组的最小数字
  4. Sql server时间转时间long
  5. 不是每个人都适合linux
  6. 箭头函数的使用用法(一)
  7. Orchard架构介绍
  8. Linq之ToDictionaryTSource, TKey, TElement的写法
  9. yolov4 开发环境搭建_YOLOv4 的各种新实现、配置、测试、训练资源汇总
  10. PowerPC家族谱系详解
  11. data协议,好玩,好用
  12. 基于CIM的馈线建模和应用(论文学习)
  13. rfcn 共享_rfcn卷积网络
  14. Oculus内下游戏报错,OVR40779122解决办法
  15. 自然语言处理中的迁移学习(下)
  16. DDNS动态域名解析IPv6地址
  17. QQ、微信、新浪 利用refresh_token重新登录
  18. JavaFX 布局——VBox
  19. excel将常规数字转为日期格式
  20. 利用RSS进行学术期刊订阅

热门文章

  1. 数据分析求职之费米估算解析
  2. (最新)cpu天梯图 (CPU)- Processor Benchmarks
  3. QUIC浅析,android开发者模式
  4. SDU软件17级大一下离散期末真题(回忆版)
  5. 计算机一级操作题题库在线,全国计算机一级考试题库操作题
  6. 开源一款娱乐的qq机器人-QQRobot
  7. dropout层加在哪里_常用层 - Keras中文文档
  8. jdk11新特性,是否有必要从JDK8切换到JDK11
  9. 软件测试行业好干吗,软件测试可以干到多少岁?
  10. 孪生网络图像相似度_论文浅尝 | 使用孪生BERT网络生成句子的嵌入表示