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的更多相关文章

  1. [Python学习笔记][第五章Python函数设计与使用]

    2016/1/29学习内容 第四章 Python函数设计与使用 之前的几页忘记保存了 很伤心 变量作用域 -一个变量已在函数外定义,如果在函数内需要修改这个变量的值,并将这个赋值结果反映到函数之外,可 ...

  2. 《.NET 设计规范》第 5 章:成员设计

    <.NET 设计规范>第 5 章:成员设计 5.1 成员设计的通用规范 要尽量用描述性的参数名来说明在较短的重载中使用的默认值. 避免在重载中随意地改变参数的名字.如果两个重载中的某个参数 ...

  3. MySQL性能调优与架构设计——第 18 章 高可用设计之 MySQL 监控

    第 18 章 高可用设计之 MySQL 监控 前言: 一个经过高可用可扩展设计的 MySQL 数据库集群,如果没有一个足够精细足够强大的监控系统,同样可能会让之前在高可用设计方面所做的努力功亏一篑.一 ...

  4. MySQL性能调优与架构设计——第 17 章 高可用设计之思路及方案

    第 17 章 高可用设计之思路及方案 前言: 数据库系统是一个应用系统的核心部分,要想系统整体可用性得到保证,数据库系统就不能出现任何问题.对于一个企业级的系统来说,数据库系统的可用性尤为重要.数据库 ...

  5. MySQL性能调优与架构设计——第12章 可扩展设计的基本原则

    第12章 可扩展设计的基本原则 前言: 随着信息量的飞速增加,硬件设备的发展已经慢慢的无法跟上应用系统对处理能力的要求了.此时,我们如何来解决系统对性能的要求?只有一个办法,那就是通过改造系统的架构体 ...

  6. 《C++Primer》第五版习题答案--第三章【学习笔记】

    [C++Primer]第五版[学习笔记]习题解答第三章 ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考. 作者:cosefy Date: 2020/1/10 第三章:字符串,向量和数组 ...

  7. 《C++Primer》第五版习题解答--第四章【学习笔记】

    [C++Primer]第五版习题解答--第四章[学习笔记] ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考. 作者:cosefy Date: 2020/1/11 第四章:表达式 练习4. ...

  8. 《C++Primer》第五版习题答案--第五章【学习笔记】

    <C++Primer>第五版习题答案--第五章[学习笔记] ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考. 作者:cosefy Date: 2020/1/15 第五章:语句 ...

  9. 《C++Primer》第五版习题答案--第六章【学习笔记】

    <C++Primer>第五版习题答案--第六章[学习笔记] ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考. 作者:cosefy Date: 2020/1/16 第六章:函数 ...

  10. FPGA Prototyping By Verilog Examples第五章 状态机FSM设计

    上升沿检测电路之Moore型FSM // Listing 5.3module edge_detect_moore ( input wire clk, reset, input wire level, ...

随机推荐

  1. GO 协程【VS】C# 多线程【Go-C# Round 1】

    〇.前言 最近接触到 Go 语言相关的内容,由于之前都是用的 C# 语言,然后就萌生了对这两种语言进行多方面比较. 本文将在 Go 的优势项目协程,来与 C# 的多线程操作进行比较,看下差距有多大. ...

  2. C# 二维码生成、识别

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  3. DenseBox:思想超前的早期Anchor-free研究 | CVPR 2015

    DenseBox检测算法的设计十分超前,如今很多Anchor-free方法有其影子,如果当时不是比Faster R-CNN晚了一点出现,可能目标检测领域很早就开始往Anchor-free的方向发展了 ...

  4. KingbaseES V8R6集群运维案例-- 备库数据库服务意外down分析

    案例说明: KingbaseES V8R6一主二备架构的集群,两个备库节点sys_log日志分别不同时间点收到'fast shutdown request'的日志信息,导致备库数据库服务down,需要 ...

  5. 01 jQuery初使用

    01 jQuery初使用 jQuery是一个曾经火遍大江南北的一个Javascript的第三方库. jQuery的理念: write less do more. 其含义就是让前端程序员从繁琐的js代码 ...

  6. #BFS,二进制#CF1776J Italian Data Centers

    洛谷题面 CF1776J 分析 将原图的点所拆开的点按二进制编号,那么同一个点之间连边当且仅当恰好一个二进制位不同, 不同点之间连边颜色相同则其二进制相同,否则完全相反. 可以钦定起点就是 \((x, ...

  7. #树状数组#洛谷 5677 [GZOI2017]配对统计

    题目 分析 考虑处理出所有右端点的能够匹配的左端点,然后用树状数组离线查询 代码 #include <cstdio> #include <cctype> #include &l ...

  8. Mac 使用 Nginx 在本地部署静态网站

    安装 安装 Brew /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/i ...

  9. nginx启用HTTP2特性

    本文于2017年2月底完成,发布在个人博客网站上. 考虑个人博客因某种原因无法修复,于是在博客园安家,之前发布的文章逐步搬迁过来. 查看当前nginx的编译选项 #./nginx -V nginx v ...

  10. 使用IDEA直接连接数据库报错:Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' property manually.

    错误详情:使用IDEA直接连接数据库报错:Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' ...