实验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 ...
随机推荐
- Linux开发相关命令整理
1. 反转shell 2. ldd 3. objdump 4. ldconfig 5. telnet 6. nc 7. netstat 8. ss 9. tcpdump 10. lsof 11. st ...
- Spring Cloud相关组件说明
1.Spring Cloud版本 现有Spring Cloud有两代实现,分为Spring Cloud Netflix和Spring Cloud Alibaba,由于SpringCloud Netfl ...
- C++中std::function常见用法
C++标准库中的std::function是一个通用的函数封装,可以用来存储.复制.调用任何可调用对象(函数.函数指针.成员函数指针.lambda表达式等).以下是std::function的一些常见 ...
- 一个可以让你有更多时间摸鱼的WPF控件(一)
前言 我们平时在开发软件的过程中,有这样一类比较常见的功能,它没什么技术含量,开发起来也没有什么成就感,但是你又不得不花大量的时间来处理它,它就是对数据的增删改查.当我们每增加一个需求就需要对应若干个 ...
- python爬虫等获取实时数据+Flume+Kafka+Spark Streaming+mysql+Echarts实现数据动态实时采集、分析、展示
使用爬虫等获取实时数据+Flume+Kafka+Spark Streaming+mysql+Echarts实现数据动态实时采集.分析.展示 [获取完整源码关注公众号:靠谱杨阅读人生 回复kafka获取 ...
- SQL PRIMARY KEY 约束- 唯一标识表中记录的关键约束
SQL NOT NULL 约束 SQL NOT NULL 约束用于强制确保列不接受 NULL 值.这意味着该字段始终包含一个值,而不允许插入新记录或更新记录时不提供此字段的值. 在 CREATE TA ...
- springboot整合redis之发送手机验证码
阿里云服务发送手机短信验证码-----(第二篇) 文章概述:springboot整合redis之发送手机验证码注册登录 注:搭建springboot项目可以参考这篇文章: 前言:短信验证码是通过发送验 ...
- Qt:获取WIFI列表
示例:使用QT来获取Windows电脑WIFI列表中所有WIFI的名称,实际是执行CMD命令来完成(netsh wlan show networks) // 获取WIFI列表 QProcess pro ...
- jenkins安装卸载和下载
环境 :docker容器 卸载 jenkins 1.rpm卸载rpm -e jenkins 2.检查是否卸载成功rpm -ql jenkins 3.彻底删除残留文件:find / -iname jen ...
- 【鸿蒙千帆起】高德地图携手HarmonyOS NEXT,开启智能出行新篇章
2024年1月18日下午,华为举办了鸿蒙生态千帆启航仪式,对外宣布HarmonyOS NEXT星河预览版现已开放申请,同时,首批200+鸿蒙原生应用加速开发,鸿蒙生态设备数量更是突破了8亿大关.这些进 ...