习题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, ...
随机推荐
- C# Image 图片缩放 截取
从大图中截取一部分图片 /// <summary> /// 从大图中截取一部分图片 /// </summary> /// <param name="fromIm ...
- nuxt环境目录结构
- FFmpeg开发笔记(十)Linux环境给FFmpeg集成vorbis和amr
FFmpeg内置了aac音频格式,在<FFmpeg开发实战:从零基础到短视频上线>一书的"5.2.2 Linux环境集成mp3lame"又介绍了如何给FFmpeg集 ...
- 【已解决】Windows环境下redis启动失败
在redis安装目录下打开cmd窗口: 依次输入: redis-cli.exe shutdown exit redis-server.exe redis.windows.conf ps:启动失败可能是 ...
- Java实现两种队列(数组和链表)
package algorithm; /** @author Administrator @date 2022-09-13 17:50 */ public class QueueLinked{ pri ...
- wordpress自建博客站,在页脚添加网站总运行时间
wordpress自建博客站,在页脚添加网站总运行时间 笔者使用的主题是 GeneratePress 版本:3.1.3 <span id="momk" style=" ...
- #博弈论#Poj 2505 A multiplication game
题目 给你一个整数\(n\),你从1开始乘,乘2-9之间的任意一个数. 最先得到大于等于\(n\)的数的人胜利.Stan先手Ollie后手. 那么,请问给你一个数\(n\),Stan和Ollie都足够 ...
- OpenHarmony支持HDMI接口声卡适配说明
高清多媒体接口(High Definition Multimedia Interface,HDMI )是一种全数字化视频和声音发送接口,可以发送未压缩的音频及视频信号.HDMI可用于机顶盒.DV ...
- HarmonyOS SDK开放能力,服务鸿蒙生态建设,打造优质应用体验
华为开发者大会2023(HDC.Together)于8月4日至6日在东莞松山湖举行,在HarmonyOS端云开放能力技术分论坛上,华为为广大开发者们介绍了HarmonyOS SDK开放能力在基础开发架 ...
- pyqt5报错:qt.qpa.plugin: Could not find the Qt platform plugin "windows" in "" This ap
环境: win10 Python 3.7.5 vs code 解决方法: 新建环境变量,然后重启 vs code 就可以了 QT_QPA_PLATFORM_PLUGIN_PATH C:\Users\ ...