习题8 #第8章 Verilog有限状态机设计-2 #Verilog #Quartus #modelsim
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的更多相关文章
- [Python学习笔记][第五章Python函数设计与使用]
2016/1/29学习内容 第四章 Python函数设计与使用 之前的几页忘记保存了 很伤心 变量作用域 -一个变量已在函数外定义,如果在函数内需要修改这个变量的值,并将这个赋值结果反映到函数之外,可 ...
- 《.NET 设计规范》第 5 章:成员设计
<.NET 设计规范>第 5 章:成员设计 5.1 成员设计的通用规范 要尽量用描述性的参数名来说明在较短的重载中使用的默认值. 避免在重载中随意地改变参数的名字.如果两个重载中的某个参数 ...
- MySQL性能调优与架构设计——第 18 章 高可用设计之 MySQL 监控
第 18 章 高可用设计之 MySQL 监控 前言: 一个经过高可用可扩展设计的 MySQL 数据库集群,如果没有一个足够精细足够强大的监控系统,同样可能会让之前在高可用设计方面所做的努力功亏一篑.一 ...
- MySQL性能调优与架构设计——第 17 章 高可用设计之思路及方案
第 17 章 高可用设计之思路及方案 前言: 数据库系统是一个应用系统的核心部分,要想系统整体可用性得到保证,数据库系统就不能出现任何问题.对于一个企业级的系统来说,数据库系统的可用性尤为重要.数据库 ...
- MySQL性能调优与架构设计——第12章 可扩展设计的基本原则
第12章 可扩展设计的基本原则 前言: 随着信息量的飞速增加,硬件设备的发展已经慢慢的无法跟上应用系统对处理能力的要求了.此时,我们如何来解决系统对性能的要求?只有一个办法,那就是通过改造系统的架构体 ...
- 《C++Primer》第五版习题答案--第三章【学习笔记】
[C++Primer]第五版[学习笔记]习题解答第三章 ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考. 作者:cosefy Date: 2020/1/10 第三章:字符串,向量和数组 ...
- 《C++Primer》第五版习题解答--第四章【学习笔记】
[C++Primer]第五版习题解答--第四章[学习笔记] ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考. 作者:cosefy Date: 2020/1/11 第四章:表达式 练习4. ...
- 《C++Primer》第五版习题答案--第五章【学习笔记】
<C++Primer>第五版习题答案--第五章[学习笔记] ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考. 作者:cosefy Date: 2020/1/15 第五章:语句 ...
- 《C++Primer》第五版习题答案--第六章【学习笔记】
<C++Primer>第五版习题答案--第六章[学习笔记] ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考. 作者:cosefy Date: 2020/1/16 第六章:函数 ...
- FPGA Prototyping By Verilog Examples第五章 状态机FSM设计
上升沿检测电路之Moore型FSM // Listing 5.3module edge_detect_moore ( input wire clk, reset, input wire level, ...
随机推荐
- [MySQL]流程控制语句
[版权声明]未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://www.cnblogs.com/cnb-yuchen/p/17991087 出自[进步*于辰的博客] 参考笔记三,P ...
- 探索多种数据格式:JSON、YAML、XML、CSV等数据格式详解与比较
1. 数据格式介绍 数据格式是用于组织和存储数据的规范化结构,不同的数据格式适用于不同的场景.常见的数据格式包括JSON.YAML.XML.CSV等. 数据可视化 | 一个覆盖广泛主题工具的高效在线平 ...
- IntelliJ IDEA集成本地Maven步骤
IntelliJ IDEA集成本地Maven步骤 一.前期准备 Maven已经在本地环境配置完成,步骤可以参考我的这篇文章: https://www.cnblogs.com/rainbow-1/p/1 ...
- 【转载】Vue路由 hash与history 的区别
[转载]Vue路由 hash与history 的区别 两种路由模式原因 对于 Vue 这类渐进式前端开发框架, 为了构建 SPA(单页面应用), 需要引入前端路由系统, 这也就是 Vue-Router ...
- Scala变量和常量的声明
标示符的命名规则 1. 字母或下划线开头 2. 以操作符开头,且只包含操作符(+ - * / # !等) 3. 用反引号`....`包括的任意字符串,即使是 Scala 关键字(39 个)也可以• p ...
- 一篇文章了解CI/CD管道全流程
从CI/CD过程开始,包含所有阶段并负责创建自动化和无缝的软件交付的一系列步骤称为CI/CD管道工作流.使用CI/CD管道,软件发布工件可以从代码提交阶段到测试.构建.部署和生产阶段在管道中移动和前进 ...
- #根号分治,树形dp#CF1039D You Are Given a Tree
题目 给定一棵树,对于 \(k\in [1,n]\) 问最多可以分成多少段长度为 \(k\) 的不交路径 分析 首先考虑对于单个 \(k\) 怎么做. 设 \(dp[x]\) 表示点 \(x\) 往下 ...
- #树状数组,线段树,离散#JZOJ 3854 分组
题目 Bsny所在的精灵社区有\(n\)个居民,每个居民有一定的地位和年龄,\(r_i\)表示第\(i\)个人的地位,\(a_i\)表示第\(i\)个人的年龄. 最近社区里要举行活动,要求几个人分成一 ...
- Debian 11 x64 安装 MySQL 8.0.33
更新 sudo apt update sudo apt install gnupg 安装 DEB Package wget -c https://dev.mysql.com/get/mysql-apt ...
- 使用windbg分析dump文件
使用windbg分析dump文件的步骤. 准备工作. 打开dump文件. 指定符号表文件的路径. 指定可执行文件的路径. 指定源码文件的路径. 在windbg的命令行,输入并执行如下命令 .reloa ...