习题8 #第8章 Verilog有限状态机设计-3 #Verilog #Quartus #modelsim
3. 编写一个8路彩灯控制程序,要求彩灯有以下3种演示花型。
(1) 8路彩灯同时亮灭;
(2) 从左至右逐个亮(每次只有1路亮);
(3) 8路彩灯每次4路灯亮,4路灯灭,且亮灭相间,交替亮灭。
在演示过程中,只有当一种花型演示完毕才能转向其他演示花型。
3.1 设计思路:8个灯,3种花型,顺序展示。穷举法。8个灯的所有花型状态,共计有:亮灭2种,
逐个亮8种,4亮4灭交替2种。即:8'b0000_0000,
8'b1111_1111,
8'b1000_0000,
... ...
共12种状态。
3.2 8路彩灯,3种花型,控制电路源码:
1 // 8-bit light and 3 shows
2 //2020-10-13
3 // by YongFengXie
4 module ex8_3(clk,rst_n,lamb);
5 input clk;
6 input rst_n;
7 output reg [7:0] lamb;
8
9 reg [3:0] state;
10
11 parameter s0=4'b0000,
12 s1=4'b0001,
13 s2=4'b0011,
14 s3=4'b0010,
15 s4=4'b0110,
16 s5=4'b0111,
17 s6=4'b0101,
18 s7=4'b0100,
19 s8=4'b1100,
20 s9=4'b1101,
21 s10=4'b1111,
22 s11=4'b1110;
23
24 always @(posedge clk or negedge rst_n)
25 begin
26 if(!rst_n)
27 begin
28 state<=s0;
29 lamb<=8'b0000_0000; // all off
30 end
31 else
32 begin
33 case(state)
34 s0:begin // 1 mode
35 state<=s1;
36 lamb<=8'b0000_0000; // all off
37 end
38 s1:begin
39 state<=s2;
40 lamb<=8'b1111_1111; // all on
41 end
42 s2:begin // 2 mode
43 state<=s3;
44 lamb<=8'b1000_0000; // 1st on(from left to right)
45 end
46 s3:begin
47 state<=s4;
48 lamb<=8'b0100_0000; // 2nd on
49 end
50 s4:begin
51 state<=s5;
52 lamb<=8'b0010_0000; // 3rd on(from left to right)
53 end
54 s5:begin
55 state<=s6;
56 lamb<=8'b0001_0000; // 4th on
57 end
58 s6:begin
59 state<=s7;
60 lamb<=8'b0000_1000; // 5th on
61 end
62 s7:begin
63 state<=s8;
64 lamb<=8'b0000_0100; // 6th on
65 end
66 s8:begin
67 state<=s9;
68 lamb<=8'b0000_0010; // 7th on
69 end
70 s9:begin
71 state<=s10;
72 lamb<=8'b0000_0001; // 8th on
73 end
74 s10:begin // 3 mode
75 state<=s11;
76 lamb<=8'b0101_0101; // 4 on 4 off
77 end
78 s11:begin
79 state<=s0;
80 lamb<=8'b1010_1010; // 4 on 4 off
81 end
82 default:begin
83 state<=s0;
84 lamb<=8'b0000_0000;
85 end
86 endcase
87 end
88 end
89
90 endmodule
3.3 8路彩灯3种花型测试代码:
1 //ex8_3 testbench
2 //2020-10-13
3 // by YongFengXie
4 `timescale 1ns/1ns
5 module ex8_3tb;
6 reg clk;
7 reg rst_n;
8 wire [7:0] lamb;
9
10 initial begin
11 clk=1'b0;
12 rst_n=1'b0;
13 #40 rst_n=1'b1;
14 #200 $stop;
15 end
16
17 always #5 clk=~clk;
18
19 ex8_3 ub(clk,rst_n,lamb);
20
21 endmodule
3.4 8路彩灯3种花型控制电路的仿真结果如图ex8_3_1所示:

图ex8_3_1 8路彩灯控制电路仿真结果
3.5 8路彩灯控制电路状态转化图如图ex8_3_2所示:
图ex8_3_2 8路彩灯控制电路状态转换图
3.6 总结:8路彩灯花型显示的控制电路采用了穷举法来规划12种状态。其中3种演示模式自动按顺序循环演示,可添加模式控制端口,手动切换不同模式。这里投机,省略。其实就是if else。另外,模式2,应该可以用右移来实验。
习题8 #第8章 Verilog有限状态机设计-3 #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, ...
随机推荐
- .Net 8.0 下的新RPC,IceRPC之接口定义语言 [Slice] VS [Protobuf]
作者引言 很高兴啊,我们来到了接口定义语言(IDL)篇,RPC之基石,有了它,可以在各种各种语言中实现RPC通讯. Slice 和 Protobuf 是什么? IceRPC的核心是一个面向字节byte ...
- js判断对象数组等是否为空
//是否为空 /** * null undefined NaN false " " {} [] 为空 * 为空 true 不为空 false * @param {*} value ...
- FastJson反序列化2-1.2.24漏洞利用
1.1.2.24漏洞利用-JNDI 漏洞利用思路,如果某个类的set()方法中使用了JNDI,那么则可以使用JDNI注入执行任意命令.事实上在JDK8中就存在这样的类:JDBCRowSetImpl; ...
- KingbaseES V8R6 集群运维案例 -- 自动故障转移失败处理
KingbaseES V8R6版本 数据库自动故障转移失败(Automatic Database Failover Fails) 适用于: KingbaseES V8R6 版本. repmgr配置信息 ...
- KingbaseES json操作符
下表列出了常用的json数据类型操作符: 操作符 操作符右侧数据类型 返回类型 描述 -> int json or jsonb 获得 JSON 数组元素(索引从 0 开始,负整数从末尾开始计) ...
- HashMap对key或value进行排序--Java--小白必懂2
HashMap对key进行排序 public static void main (String[]args){ HashMap<String, Integer> map = new Has ...
- hadoop集群实现分发文件命令xsync脚本文件
1 #!/bin/bash 2 3 #1. 判断参数个数 4 if [ $# -lt 1 ] 5 then 6 echo Not Enough Arguement! 7 exit; 8 fi 9 10 ...
- #欧拉序,线段树#洛谷 6845 [CEOI2019] Dynamic Diameter
题目 动态修改边权,强制在线询问树的直径. 分析 设 \(dis[x]\) 表示 \(x\) 到1号点的距离. 那么树的直径就可以表示成 \(dis[x]+dis[y]-2*dis[lca]\) 只需 ...
- SynchronousQueue详解
目录 简介 举例说明 总结 SynchronousQueue详解 简介 SynchronousQueue是BlockingQueue的一种,所以SynchronousQueue是线程安全的.Synch ...
- 动态规划(五)——坐标dp
传纸条 题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵, 而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了 ...