实验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 ...
随机推荐
- KingbaseES V8R6 复制冲突之锁类型冲突
背景 昨天遇到客户现场的一个有关复制冲突的问题 备库报错:ERROR: canceling statement due to conflict with recovery,user was holdi ...
- KingbaseES 实现 MYSQL 的 delete limit 写法
使用MySQL的用户可能会比较熟悉这样的用法,更新或删除时可以指定限制更新或删除多少条记录. update tl set xxx=xxx where xxx limit 10; delete from ...
- 京东一面挂在了CAS算法的三大问题上,痛定思痛不做同一个知识点的小丑
写在开头 在介绍synchronized关键字时,我们提到了锁升级时所用到的CAS算法,那么今天我们就来好好学一学这个CAS算法. CAS算法对build哥来说,可谓是刻骨铭心,记得是研二去找实习的时 ...
- 【Java面试题】Spring
八.Spring 57)什么是 Spring 的依赖注入 IOC( Inversion of Control )的⼀个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象. 其中依赖注入(DI ...
- Spring---AoP(面向切面编程)原理学习笔记【全】
1.AOP 1.1.什么是AOP AOP(Aspect Oriented Programming)意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延 ...
- 无法解析的外部符号 _main
就如提示错误一样,程序找不到入口. 解决方法:
- #线段树#洛谷 4340 [SHOI2016]随机序列
题目 分析 可以发现加号和减号会抵消掉,真正有用的答案就是第一段的乘积. 那也就是 \(\sum_{i=1}^nS_i*2*3^{n-i-1}\),其中 \(S_i\) 表示 \(a_1\) 到 \( ...
- #SG函数,记忆化搜索#HDU 4111 Alice and Bob
题目 Alice和Bob两个好朋友又开始玩取石子了. 游戏开始时,有\(n\)堆石子排成一排,然后他们轮流操作(Alice先手),每次操作时从下面的规则中任选一个: ·从某堆石子中取走一个 ·合并任意 ...
- unknow or unsupported command install
错误原因: 今天使用pip下载labelimg时,出现了"unknow or unsupported command install"的错误,这是由于电脑有多个pip文件路径所导致 ...
- Git 01 概述
版本控制 版本控制(Revision Control)用于在开发过程中管理文件修改历史,方便查看和备份. 它的作用如下: 实现跨区域多人协同开发. 追踪和记载一个或者多个文件的历史记录. 组织和保护你 ...