习题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, ...
随机推荐
- 英语文档阅读学习系列之Zynq-7000 EPP Software Developers Guide
阅读ug821-zynq-7000-swdev记录 1.略看目录Table 依旧采用总说加解释的模式,这种方式易于查找,是可靠的框架.目录词条依次为: Introduction Software Ap ...
- reinterpret_cast 和 static_cast 的区别
安全性: static_cast 是一个安全的类型转换,它只能转换具有继承关系或密切相关的类型,并且在编译时进行类型检查. reinterpret_cast 是一个不安全的类型转换,它可以将任何类型的 ...
- java反序列化-CC1
CC1 目录 CC1 1.Transformer接口 2.Transformer的实现类 ConstantTransformer ChainedTransformer InvokerTransform ...
- MySQL数据过滤和搜索
操作符 AND操作符 mysql> SELECT prod_id,prod_price,prod_name FROM products WHERE vend_id=1003 AND prod_p ...
- 实用 Linux 命令 Windos 命令 实例演示 持续更新中
实用 Linux 命令 Windos 命令 实例演示 持续更新中 目录 实用 Linux 命令 Windos 命令 实例演示 持续更新中 Linux 命令 [Command [options] [lo ...
- 我为OpenHarmony 写代码,战“码”先锋第二期正式开启!
OpenAtom OpenHarmony(以下简称"OpenHarmony")问世以来,两年多时间汇聚了160万+社区用户,全球下载次数高达6300万,5.5万+次代码提交,吸引了 ...
- Python 变量:创建、类型、命名规则和作用域详解
变量 变量是用于存储数据值的容器. 创建变量 Python没有用于声明变量的命令. 变量在您第一次为其分配值时被创建. 示例 x = 5 y = "John" print(x) p ...
- 【译】如何在 Visual Studio 中安装 GitHub Copilot
GitHub Copilot 简介 GitHub Copilot 是一个新工具,可以帮助您在人工智能的帮助下更快,更智能地编写代码.它可以建议代码补全,生成代码片段,甚至为您编写整个函数.GitHub ...
- python3 引入requests报错ImportError的处理方案
执行python3 import requests时抛出错误:ImportError: No module named requests 使用python3写爬虫时,有些小伙伴会遇到这种坑,使用发现导 ...
- linux 性能自我学习 ———— cpu 高怎么办 [三]
前言 linux 性能分析自我学习. 正文 一般我们说cpu,一般是什么高呢? 一般是指cpu 使用率高. 那么什么是cpu 使用率呢? cpu 使用率 = 1- 空闲时间/总cpu 时间 平均cpu ...