实验8 #第8章 Verilog有限状态机设计-1 #Verilog #Quartus #modelsim
8-1 流水灯控制器
1. 实验要求:采用有限状态机设计彩灯控制器,控制LED灯实现预想的演示花型。
2. 实验内容:
(1)功能:设计彩灯控制器,要求控制18个LED灯实现如下的演示花型:
- 从两边往中间逐个亮,全灭;
- 从中间往两头逐个亮,全灭;
- 循环执行上述过程;
2.1 流水灯控制器用两个always语句时间,条理更清晰。源码如下:
1 //water lamp
2 //2020-10-16
3 //by YongFengXie
4 module water_lamp(clk,rst_n,lamp);
5 input clk;
6 input rst_n;
7 output reg [17:0] lamp;
8
9 reg [4:0] state;
10 parameter s0=5'b00000, // all 0
11 s1=5'b00001, // light from edge to middle
12 s2=5'b00011,
13 s3=5'b00010,
14 s4=5'b00110,
15 s5=5'b00111,
16 s6=5'b00101,
17 s7=5'b00100,
18 s8=5'b01100,
19 s9=5'b01101, // all 1
20 s10=5'b01111, //all 00
21 s11=5'b01110, // light from middle to edge
22 s12=5'b01010,
23 s13=5'b01011,
24 s14=5'b01001,
25 s15=5'b01000,
26 s16=5'b11000,
27 s17=5'b11001,
28 s18=5'b11011,
29 s19=5'b11010; // all 1
30
31 always @(posedge clk or negedge rst_n) // state transition
32 begin
33 if(~rst_n)
34 state<=s0;
35 else case(state)
36 s0:state<=s1;
37 s1:state<=s2;
38 s2:state<=s3;
39 s3:state<=s4;
40 s4:state<=s5;
41 s5:state<=s6;
42 s6:state<=s7;
43 s7:state<=s8;
44 s8:state<=s9;
45 s9:state<=s10;
46 s10:state<=s11;
47 s11:state<=s12;
48 s12:state<=s13;
49 s13:state<=s14;
50 s14:state<=s15;
51 s15:state<=s16;
52 s16:state<=s17;
53 s17:state<=s18;
54 s18:state<=s19;
55 s19:state<=s0;
56 default:state<=s0;
57 endcase
58 end
59
60 always @(state) // demonstration pattern
61 begin
62 case(state)
63 s0:lamp<=18'b000_000_000_000_000_000;
64 s1:lamp<=18'b100_000_000_000_000_001;
65 s2:lamp<=18'b110_000_000_000_000_011;
66 s3:lamp<=18'b111_000_000_000_000_111;
67 s4:lamp<=18'b111_100_000_000_001_111;
68 s5:lamp<=18'b111_110_000_000_011_111;
69 s6:lamp<=18'b111_111_000_000_111_111;
70 s7:lamp<=18'b111_111_100_001_111_111;
71 s8:lamp<=18'b111_111_110_011_111_111;
72 s9:lamp<=18'b111_111_111_111_111_111;
73 s10:lamp<=18'b000_000_000_000_000_000;
74 s11:lamp<=18'b000_000_001_100_000_000;
75 s12:lamp<=18'b000_000_011_110_000_000;
76 s13:lamp<=18'b000_000_111_111_000_000;
77 s14:lamp<=18'b000_001_111_111_100_000;
78 s15:lamp<=18'b000_011_111_111_110_000;
79 s16:lamp<=18'b000_111_111_111_111_000;
80 s17:lamp<=18'b001_111_111_111_111_100;
81 s18:lamp<=18'b011_111_111_111_111_110;
82 s19:lamp<=18'b011_111_111_111_111_110;
83 default:lamp<=18'b000_000_000_000_000_000;
84 endcase
85 end
86
87 endmodule
88
2.2 流水灯控制电路的测试代码如下:
1 //water lamp testbench
2 //2020-10-16
3 //by YongFengXie
4 module water_lamp_tb;
5 reg clk;
6 reg rst_n;
7 wire [17:0] lamp;
8
9 water_lamp ub(clk,rst_n,lamp);
10
11 initial begin
12 clk=1'b0;
13 rst_n=1'b0;
14 #20 rst_n=1'b1;
15 #1000 $stop;
16 end
17
18 always #5 clk=~clk;
19
20 endmodule
2.3 流水灯花型演示电路的ModelSim仿真结果如图2-1,图2-2所示:
图2-1 流水灯仿真结果1
图2-2 流水灯仿真结果2
2.4 总结:流水灯控制电路的设计,或者说花型演示,规划好花型的个数,即状态,剩下就是纯体力活,这里状态编码尝试用了格雷码,毕竟
误码跳变的概率小,当然书上(王金明 数字系统设计与Verilog HDL 7th ,page 230)用的顺序码。
实验8 #第8章 Verilog有限状态机设计-1 #Verilog #Quartus #modelsim的更多相关文章
- 第2章 面向对象的设计原则(SOLID):2_里氏替换原则(LSP)
2. 里氏替换原则(Liskov Substitution Principle,LSP) 2.1 定义 (1)所有使用基类的地方必须能透明地使用子类替换,而程序的行为没有任何变化(不会产生运行结果错误 ...
- [Python学习笔记][第五章Python函数设计与使用]
2016/1/29学习内容 第四章 Python函数设计与使用 之前的几页忘记保存了 很伤心 变量作用域 -一个变量已在函数外定义,如果在函数内需要修改这个变量的值,并将这个赋值结果反映到函数之外,可 ...
- 《.NET 设计规范》第 5 章:成员设计
<.NET 设计规范>第 5 章:成员设计 5.1 成员设计的通用规范 要尽量用描述性的参数名来说明在较短的重载中使用的默认值. 避免在重载中随意地改变参数的名字.如果两个重载中的某个参数 ...
- MySQL性能调优与架构设计——第 18 章 高可用设计之 MySQL 监控
第 18 章 高可用设计之 MySQL 监控 前言: 一个经过高可用可扩展设计的 MySQL 数据库集群,如果没有一个足够精细足够强大的监控系统,同样可能会让之前在高可用设计方面所做的努力功亏一篑.一 ...
- MySQL性能调优与架构设计——第 17 章 高可用设计之思路及方案
第 17 章 高可用设计之思路及方案 前言: 数据库系统是一个应用系统的核心部分,要想系统整体可用性得到保证,数据库系统就不能出现任何问题.对于一个企业级的系统来说,数据库系统的可用性尤为重要.数据库 ...
- MySQL性能调优与架构设计——第12章 可扩展设计的基本原则
第12章 可扩展设计的基本原则 前言: 随着信息量的飞速增加,硬件设备的发展已经慢慢的无法跟上应用系统对处理能力的要求了.此时,我们如何来解决系统对性能的要求?只有一个办法,那就是通过改造系统的架构体 ...
- FPGA Prototyping By Verilog Examples第五章 状态机FSM设计
上升沿检测电路之Moore型FSM // Listing 5.3module edge_detect_moore ( input wire clk, reset, input wire level, ...
- 第2章 面向对象的设计原则(SOLID):3_依赖倒置原则(DIP)
3. 依赖倒置原则(Dependence Inversion Principle,DIP) 3.1 定义 (1)要依赖抽象,不要依赖具体的实现类.简单的说就是对抽象(或接口)进行编程,不要依赖实现进行 ...
- 【基本知识】FMS有限状态机设计
有限状态机是Verilog中十分基本也是十分重要的知识.本文对有限状态机做了一个简单介绍. 1.状态机三要素 有限状态机具有三个要素:状态跳转.跳转判断.状态操作: 1)状态跳转:现态跳转到次态: 2 ...
- 实验六 序列信号检测器的VHDL设计
一.实验目的 (1)进一步熟悉Quartus II软件和GW48-PK2S实验系统的使用方法: (2)用状态机实现序列检测器的设计,了解一般状态机的设计与应用 二.实验内容 1. 基本命题 利用Qua ...
随机推荐
- dynatrace统计sql执行时间要考虑网络延时
对一个系统的功能环境做压测,响应时间特别慢,开发环境却很快. 原因是,开发的应用服务器在北方,功能的应用服务器在南方,数据库服务器共用一个,在北方. 北方的应用调北方的数据库,响应时间2s,互相pin ...
- Scratch基础(一):安装和了解软件
Scratch基础(一):安装和了解软件 编写计算机程序代码的能力是当今社会读写能力的重要组成部分.当人们学习使用Scratch进行编码时,他们将学习解决问题,设计项目和交流思想的重要策略. 1.安装 ...
- KingbaseES V8R6 常用的系统函数
查看当前日志文件lsn位置: select sys_current_wal_lsn(); 查看某个lsn对应的日志名: select sys_walfile_name('0/1162FBA0'); 查 ...
- PicGo图床配置github仓库上传typora图片
(前提是已注册github并新建一个仓库作为你上传图片的位置) 首先在PicGo官网下载软件:https://picgo.github.io/PicGo-Doc/zh/ 打开typora,找到偏好设置 ...
- 快捷转换/互转 Markdown 文档和 TypeScript/TypeDoc 注释
背景 作为文档工具人,经常需要把代码里面的注释转换成语义化的 Markdown 文档,有时也需要进行反向操作.以前是写正则表达式全局匹配,时间长了这种方式也变得繁琐乏味.所以写了脚本来互转,增加一些便 ...
- 使用OHOS SDK构建assimp
参照OHOS IDE和SDK的安装方法配置好开发环境. 从github下载源码. 执行如下命令: git clone https://github.com/assimp/assimp.git 进入源码 ...
- MCM箱模型建模方法及大气O3来源解析
OBM箱模型可用于模拟光化学污染的发生.演变过程,研究臭氧的生成机制和进行敏感性分析,探讨前体物的排放对光化学污染的影响.箱模型通常由化学机理.物理过程.初始条件.输入和输出模块构成,化学机理是其核心 ...
- C#/.NET/.NET Core拾遗补漏合集(24年4月更新)
前言 在这个快速发展的技术世界中,时常会有一些重要的知识点.信息或细节被忽略或遗漏.<C#/.NET/.NET Core拾遗补漏>专栏我们将探讨一些可能被忽略或遗漏的重要知识点.信息或细节 ...
- webpack 配置热更新
正文 代码 const path=require('path'); module.exports={ devtool:'', entry:{ entry:'./src/entry.js', entry ...
- WPF随笔收录-实时绘制心率曲线
一.前言 在自己的项目中,涉及到实时心率曲线的绘制,项目上的曲线绘制,一般很难找到能直接用的第三方库,而且有些还是定制化的功能,所以还是自己绘制比较方便.很多人一听到自己画就害怕,感觉很难,今天就分享 ...