2. 设计一个“1001”串行数据检测器,其输入、输出如下:

输入x:000 101 010 010 011 101 001 110 101

输出z:000 000 000 010 010 000 001 000 000

(1)设计思路:同前,规划状态,无它。

(2)1001序列检测电路源码:

 1 //detect 1001
2 //2020-10-13
3 // by YongFengXie
4 module ex8_2(clk,rst_n,x,z);
5 input clk;
6 input rst_n;
7 input x;
8 output reg z;
9
10 reg [4:0] state;
11
12 parameter s0=5'b00001,
13 s1=5'b00010,
14 s2=5'b00100,
15 s3=5'b01000,
16 s4=5'b10000;
17
18 always @(posedge clk or negedge rst_n)
19 begin
20 if(!rst_n)
21 begin
22 state<=s0;
23 z<=1'b0;
24 end
25 else
26 case(state)
27 s0:begin
28 if(x==1'b0) //0
29 begin
30 state<=s0;
31 z<=1'b0;
32 end
33 else //1
34 begin
35 state<=s1;
36 z<=1'b0;
37 end
38 end
39 s1:begin
40 if(x==1'b0) //10
41 begin
42 state<=s2;
43 z<=1'b0;
44 end
45 else //11
46 begin
47 state<=s1;
48 z<=1'b0;
49 end
50 end
51 s2:begin
52 if(x==1'b0) //100
53 begin
54 state<=s3;
55 z<=1'b0;
56 end
57 else //101
58 begin
59 state<=s1;
60 z<=1'b0;
61 end
62 end
63 s3:begin
64 if(x==1'b0) //1000
65 begin
66 state<=s0;
67 z<=1'b0;
68 end
69 else //1001
70 begin
71 state<=s4;
72 z<=1'b1;
73 end
74 end
75 s4:begin
76 if(x==1'b0) //10010
77 begin
78 state<=s2;
79 z<=1'b0;
80 end
81 else //10011
82 begin
83 state<=s1;
84 z<=1'b0;
85 end
86 end
87 default:begin
88 state<=s0;
89 z<=1'b0;
90 end
91 endcase
92 end
93
94 endmodule

(3) 1001序列检测电路测试代码:

 1 //ex8_2 testbench
2 //2020-10-13
3 // by YongFengXie
4 `timescale 1ns/1ns
5 module ex8_2tb;
6 reg clk;
7 reg rst_n;
8 reg x;
9 wire z;
10
11 ex8_2 ut(clk,rst_n,x,z);
12
13 initial begin
14 clk=1'b0;
15 rst_n=1'b0;
16 x=1'b0;
17 #40 rst_n=1'b1;
18 #10 x=1'b0;
19 #10 x=1'b0; //000
20 #10 x=1'b1;
21 #10 x=1'b0;
22 #10 x=1'b1; //000
23 #10 x=1'b0;
24 #10 x=1'b1;
25 #10 x=1'b0; //010
26 #10 x=1'b0;
27 #10 x=1'b1;
28 #10 x=1'b0; //010
29 #10 x=1'b0;
30 #10 x=1'b1;
31 #10 x=1'b1; //011
32 #10 x=1'b1;
33 #10 x=1'b0;
34 #10 x=1'b1; //101
35 #10 x=1'b0;
36 #10 x=1'b0;
37 #10 x=1'b1; //001
38 #10 x=1'b1;
39 #10 x=1'b1;
40 #10 x=1'b0; //110
41 #10 x=1'b1;
42 #10 x=1'b0;
43 #10 x=1'b1; //101
44 #300 $stop;
45 end
46
47 always #5 clk=~clk;
48
49 endmodule

(4) 1001序列检测电路的仿真结果如图ex8_2_1所示:

图ex8_2_1 1001序列检测电路仿真结果

(5) 1001序列检测电路的状态转换如图ex8_2_2所示:

图ex8_2_2 1001序列检测电路状态转换图

(6)总结:跟习题8.1相比,无它,唯手熟尔。

习题8 #第8章 Verilog有限状态机设计-2 #Verilog #Quartus #modelsim的更多相关文章

  1. [Python学习笔记][第五章Python函数设计与使用]

    2016/1/29学习内容 第四章 Python函数设计与使用 之前的几页忘记保存了 很伤心 变量作用域 -一个变量已在函数外定义,如果在函数内需要修改这个变量的值,并将这个赋值结果反映到函数之外,可 ...

  2. 《.NET 设计规范》第 5 章:成员设计

    <.NET 设计规范>第 5 章:成员设计 5.1 成员设计的通用规范 要尽量用描述性的参数名来说明在较短的重载中使用的默认值. 避免在重载中随意地改变参数的名字.如果两个重载中的某个参数 ...

  3. MySQL性能调优与架构设计——第 18 章 高可用设计之 MySQL 监控

    第 18 章 高可用设计之 MySQL 监控 前言: 一个经过高可用可扩展设计的 MySQL 数据库集群,如果没有一个足够精细足够强大的监控系统,同样可能会让之前在高可用设计方面所做的努力功亏一篑.一 ...

  4. MySQL性能调优与架构设计——第 17 章 高可用设计之思路及方案

    第 17 章 高可用设计之思路及方案 前言: 数据库系统是一个应用系统的核心部分,要想系统整体可用性得到保证,数据库系统就不能出现任何问题.对于一个企业级的系统来说,数据库系统的可用性尤为重要.数据库 ...

  5. MySQL性能调优与架构设计——第12章 可扩展设计的基本原则

    第12章 可扩展设计的基本原则 前言: 随着信息量的飞速增加,硬件设备的发展已经慢慢的无法跟上应用系统对处理能力的要求了.此时,我们如何来解决系统对性能的要求?只有一个办法,那就是通过改造系统的架构体 ...

  6. 《C++Primer》第五版习题答案--第三章【学习笔记】

    [C++Primer]第五版[学习笔记]习题解答第三章 ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考. 作者:cosefy Date: 2020/1/10 第三章:字符串,向量和数组 ...

  7. 《C++Primer》第五版习题解答--第四章【学习笔记】

    [C++Primer]第五版习题解答--第四章[学习笔记] ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考. 作者:cosefy Date: 2020/1/11 第四章:表达式 练习4. ...

  8. 《C++Primer》第五版习题答案--第五章【学习笔记】

    <C++Primer>第五版习题答案--第五章[学习笔记] ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考. 作者:cosefy Date: 2020/1/15 第五章:语句 ...

  9. 《C++Primer》第五版习题答案--第六章【学习笔记】

    <C++Primer>第五版习题答案--第六章[学习笔记] ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考. 作者:cosefy Date: 2020/1/16 第六章:函数 ...

  10. FPGA Prototyping By Verilog Examples第五章 状态机FSM设计

    上升沿检测电路之Moore型FSM // Listing 5.3module edge_detect_moore ( input wire clk, reset, input wire level, ...

随机推荐

  1. 技嘉主板开启VT

    AM4接口主板开启虚拟化: M.I.T.->Advanced Frequency Settings->Advanced CPU Core Settings->SVM Mode (虚拟 ...

  2. AXI4的主机协议代码分析

    AXI4的主机协议代码分析 一.模块分析 (1)端口列表 input wire INIT_AXI_TXN, // Asserts when ERROR is detected output reg E ...

  3. HashMap的三种遍历方式--Java--小白必懂

    初学Hash Map总感觉它的遍历很麻烦,其实看懂后总结一下就是:集合+泛型,没啥特别的 总结一下HashMap的三种遍历方法如下: 保证一看就会>>> 1 // 对HashMap的 ...

  4. SpringBoot配置启动页(首页)控制台打印项目访问入口url

    一.SpringBootApplication 1 package com.reliable.yang; 2 3 /** 4 * @author Administrator 5 * @date 202 ...

  5. HTTP Web安全

    验证安全机制 会话管理机制 SQL注入原理 SELECT * FROM test.user WHERE username='' or 1='1' and password='anyxxxxx'; 当u ...

  6. #主席树,离散,扫描线#洛谷 3168 [CQOI2015]任务查询系统

    题目 分析 询问显然得预处理,考虑以优先级建权值线段树, 将优先级离散化处理,那么第\(k\)大可以用线段树来求 那任务怎么办,考虑时间用扫描线的方法,按照时间建新的线段树 把任务分成两部分,在两端差 ...

  7. Jetty使用入门

    社区当前推荐开发者使用Jetty 12.X版本. 依据End of Community Support for Jetty 9.x - June 2022,社区对Jetty 9.x的支持,已在2022 ...

  8. MyBatis resultMap中collection过滤空字段

    在使用MyBatis查询数据时,返回值可以定义为resultMap. 如果返回的对象中有列表,还可以使用collection标签进行定义. 此时,如果不想某些字段为空的数据加入列表,可以使用notNu ...

  9. Qt调用摄像头二,Pro版

    本示例,为纯Qt调用摄像头,功能会比版本一要多一点:打开摄像头,设置参数,完整拍照,框选拍照,切换分辨率,旋转,水平镜像,垂直镜像,放大,缩小 上一个版本,使用的显示窗口直接显示出摄像头画面,所以可操 ...

  10. Grafana 系列-统一展示-5-AWS Cloudwatch 仪表板

    系列文章 Grafana 系列文章 ️强烈推荐 强烈推荐使用 GitHub 上的 monitoringartist/grafana-aws-cloudwatch-dashboards 仪表板.该 re ...