今天一个学弟来问我关于状态机的事,我就给他讲了下经典的三段式状态机,然后就让他试着用状态机去点亮几个LED灯。

状态一:让所有的灯全部熄灭;状态二:全部的灯按照奇偶位的来进行闪烁;状态三:全部的灯从左边开始亮,一直到右边;状态四:全部的灯从右边开始亮直到左边。他写了一个小时左右还是做不出来,一气之下,我自己来写,结果我自己也没写出来,我觉得是状态跳转的太快了,所以导致LED看起来不清楚。

于是,我就用序列机写了一个花样流水灯。效果是,开始二十六个灯全部按照奇偶位闪烁八次,然后从左边依次点亮所有的LED灯,再从右边依次点亮所有的LED灯,然后就是普通的流水灯了,一直循环下去。

代码比较简单,就不解释了。刚才导师到酒店里打包回来了一大桌子菜,吃的有点小撑,有一个同学劝我多吃一些,我就说没有干体力劳动,不用多吃,导师就说,干体力活的吃白馒头就行,写代码的消耗更大,要吃肉,终于找到一个能解释为什么我吃这么多了,不是因为贪吃,二十确实是处在巨大消耗当中呀。

  1 module flash_LED(
  2   clk,
  3   rst_n,
  4   LED,
  5 );
  6
  7 input clk;
  8 input rst_n;
  9 output reg[25:0] LED;
 10
 11 reg[27:0] cnt;
 12
 13 always@(posedge clk or negedge rst_n)
 14   if(!rst_n)
 15     cnt <= 28'd0;
 16   else if(cnt == 4999999)               //100ms
 17     cnt <= 28'd0;
 18   else
 19     cnt <= cnt + 1'b1;
 20
 21 reg div_clk;
 22 always@(posedge clk or negedge rst_n)    //10Hz 分频
 23   if(!rst_n)
 24     div_clk <= 0;
 25   else if(cnt == 4999999)
 26     div_clk <= ~div_clk;
 27   else
 28     div_clk <= div_clk;
 29
 30 reg[6:0] counter;
 31 always@(posedge div_clk or negedge rst_n)  //序列机
 32   if(!rst_n)
 33     counter <= 7'd0;
 34   else if(counter == 113)
 35     counter <= 7'd0;
 36   else
 37     counter <= counter + 1'b1;
 38
 39 always@(posedge clk or negedge rst_n)
 40   if(!rst_n)
 41     LED <= 26'b000000000000000000000000000;
 42   else begin
 43     case(counter)
 44         0:LED <= 26'b01010101010101010101010101;
 45         1:LED <= 26'b10101010101010101010101010;
 46         2:LED <= 26'b01010101010101010101010101;
 47         3:LED <= 26'b10101010101010101010101010;
 48         4:LED <= 26'b01010101010101010101010101;
 49         5:LED <= 26'b10101010101010101010101010;
 50         6:LED <= 26'b01010101010101010101010101;
 51         7:LED <= 26'b10101010101010101010101010;
 52         8:LED <= 26'b00000000000000000000000001;
 53         9:LED <= 26'b00000000000000000000000011;
 54         10:LED <= 26'b00000000000000000000000111;
 55         11:LED <= 26'b00000000000000000000001111;
 56         12:LED <= 26'b00000000000000000000011111;
 57         13:LED <= 26'b00000000000000000000111111;
 58         14:LED <= 26'b00000000000000000001111111;
 59         15:LED <= 26'b00000000000000000011111111;
 60         16:LED <= 26'b00000000000000000111111111;
 61         17:LED <= 26'b00000000000000001111111111;
 62         18:LED <= 26'b00000000000000011111111111;
 63         19:LED <= 26'b00000000000000111111111111;
 64         20:LED <= 26'b00000000000001111111111111;
 65         21:LED <= 26'b00000000000011111111111111;
 66         22:LED <= 26'b00000000000111111111111111;
 67         23:LED <= 26'b00000000001111111111111111;
 68         24:LED <= 26'b00000000011111111111111111;
 69         25:LED <= 26'b00000000111111111111111111;
 70         26:LED <= 26'b00000011111111111111111111;
 71         27:LED <= 26'b00000111111111111111111111;
 72         28:LED <= 26'b00001111111111111111111111;
 73         29:LED <= 26'b00011111111111111111111111;
 74         30:LED <= 26'b00111111111111111111111111;
 75         31:LED <= 26'b01111111111111111111111111;
 76         32:LED <= 26'b11111111111111111111111111;
 77         33:LED <= 26'b01111111111111111111111111;
 78         34:LED <= 26'b00111111111111111111111111;
 79         35:LED <= 26'b00011111111111111111111111;
 80         36:LED <= 26'b00001111111111111111111111;
 81         37:LED <= 26'b00000111111111111111111111;
 82         38:LED <= 26'b00000011111111111111111111;
 83         39:LED <= 26'b00000001111111111111111111;
 84         40:LED <= 26'b00000000111111111111111111;
 85         41:LED <= 26'b00000000011111111111111111;
 86         42:LED <= 26'b00000000001111111111111111;
 87         43:LED <= 26'b00000000000111111111111111;
 88         44:LED <= 26'b00000000000011111111111111;
 89         45:LED <= 26'b00000000000001111111111111;
 90         46:LED <= 26'b00000000000000111111111111;
 91         47:LED <= 26'b00000000000000011111111111;
 92         48:LED <= 26'b00000000000000001111111111;
 93         49:LED <= 26'b00000000000000000111111111;
 94         50:LED <= 26'b00000000000000000011111111;
 95         51:LED <= 26'b00000000000000000001111111;
 96         52:LED <= 26'b00000000000000000000111111;
 97         53:LED <= 26'b00000000000000000000011111;
 98         54:LED <= 26'b00000000000000000000001111;
 99         55:LED <= 26'b00000000000000000000000111;
100         56:LED <= 26'b00000000000000000000000011;
101         57:LED <= 26'b00000000000000000000000001;
102         58:LED <= 26'b01010101010101010101010101;
103         59:LED <= 26'b10101010101010101010101010;
104         60:LED <= 26'b01010101010101010101010101;
105         61:LED <= 26'b10101010101010101010101010;
106         62:LED <= 26'b00000000000000000000000001;
107         63:LED <= 26'b00000000000000000000000010;
108         64:LED <= 26'b00000000000000000000000100;
109         65:LED <= 26'b00000000000000000000001000;
110         66:LED <= 26'b00000000000000000000010000;
111         67:LED <= 26'b00000000000000000000100000;
112         68:LED <= 26'b00000000000000000001000000;
113         69:LED <= 26'b00000000000000000010000000;
114         70:LED <= 26'b00000000000000000100000000;
115         71:LED <= 26'b00000000000000001000000000;
116         72:LED <= 26'b00000000000000010000000000;
117         73:LED <= 26'b00000000000000100000000000;
118         74:LED <= 26'b00000000000001000000000000;
119         75:LED <= 26'b00000000000010000000000000;
120         76:LED <= 26'b00000000000100000000000000;
121         77:LED <= 26'b00000000001000000000000000;
122         78:LED <= 26'b00000000010000000000000000;
123         79:LED <= 26'b00000000100000000000000000;
124         80:LED <= 26'b00000001000000000000000000;
125         81:LED <= 26'b00000010000000000000000000;
126         82:LED <= 26'b00000100000000000000000000;
127         83:LED <= 26'b00001000000000000000000000;
128         84:LED <= 26'b00010000000000000000000000;
129         85:LED <= 26'b00100000000000000000000000;
130         86:LED <= 26'b01000000000000000000000000;
131         87:LED <= 26'b10000000000000000000000000;
132         88:LED <= 26'b01000000000000000000000000;
133         89:LED <= 26'b00100000000000000000000000;
134         90:LED <= 26'b00010000000000000000000000;
135         91:LED <= 26'b00001000000000000000000000;
136         92:LED <= 26'b00000100000000000000000000;
137         93:LED <= 26'b00000010000000000000000000;
138         94:LED <= 26'b00000001000000000000000000;
139         95:LED <= 26'b00000000100000000000000000;
140         96:LED <= 26'b00000000010000000000000000;
141         97:LED <= 26'b00000000001000000000000000;
142         98:LED <= 26'b00000000000100000000000000;
143         99:LED <= 26'b00000000000010000000000000;
144         100:LED <= 26'b00000000000010000000000000;
145         101:LED <= 26'b00000000000001000000000000;
146         102:LED <= 26'b00000000000000100000000000;
147         103:LED <= 26'b00000000000000010000000000;
148         104:LED <= 26'b00000000000000001000000000;
149         105:LED <= 26'b00000000000000000100000000;
150         106:LED <= 26'b00000000000000000010000000;
151         107:LED <= 26'b00000000000000000001000000;
152         108:LED <= 26'b00000000000000000000100000;
153         109:LED <= 26'b00000000000000000000010000;
154         110:LED <= 26'b00000000000000000000001000;
155         111:LED <= 26'b00000000000000000000000100;
156         112:LED <= 26'b00000000000000000000000010;
157         113:LED <= 26'b00000000000000000000000001;
158         default:LED<=26'b00000000000000000000000000;
159      endcase
160     end
161 endmodule

转载于:https://www.cnblogs.com/571328401-/p/11053972.html

基于FPGA的花样流水灯相关推荐

  1. 基于FPGA实现的流水灯实验

    版权声明:如需转载,请注明出处 https://blog.csdn.net/chengfengwenalan/article/details/79606351 基于FPGA实现的流水灯实验 一.开发环 ...

  2. 基于FPGA实现的流水灯项目

    基于FPGA实现的流水灯实验 一.开发环境 软件环境:Quartus Prime 17.1 ,notepad++,gvim,modelsim-SE,TimeGen3 硬件环境:DE2-115(Inte ...

  3. 基于proteus的花样流水灯的设计(仅供参考)

    要求: (1)第1轮:第1列自上而下逐一点亮.接着第2列自下而上逐一点亮.最后第3列自上 而下逐一点亮: (2)第2轮:按第1列.第2列.第3列,依次8个LED同时闪亮3次: (3)接着重复上述第1. ...

  4. 基于计算机控制的花样流水灯,花样流水灯文献综述

    文献综述 关于花样流水灯的文献综述 摘要:近年来,以传统的分立元件或逻辑电路构成的控制系统,正逐渐被单片机智能控制系统所代替.而花样流水灯也被大量应用在当今社会的每个角落,本文综述了国内外对流水灯的研 ...

  5. 51单片机实训(二)————基于Proteus的花样流水灯设计

    文章目录 前言 一.项目概述 1.1 系统概述 1.2 功能设计 二.项目硬件设计 2.1 AT89C51单片机最小系统 2.2 外设电路 三.项目软件设计 3.1 程序代码设计 四.项目调试与分析 ...

  6. 用c语言编写流水灯的思路原理,花样流水灯 单片机设课设.doc

    单片机课程设计报告 学院: 任课老师: 班级: 姓名: 学号: 基于单片机的花样流水灯及其数码显示技术 姓名 学号 [引言] 单片机课程设计主要是为了让我们增进对89C51单片机电路的感性认识,加深对 ...

  7. (37)FPGA花样流水灯设计(第8天)

    (37)FPGA花样流水灯设计(第8天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)FPGA花样流水灯设计(第8天) 5)技术交流 6)参考资料 2 FPGA ...

  8. 基于51单片机的花样流水灯设计

    文章目录 一.前言 二.模块介绍及原理说明 三.硬件连接 四.程序说明 五.效果演示 六.代码链接 一.前言 花样流水灯就是让LED灯按照一定规律进行各种变化,流水灯在生活中也随处可见,例如在建筑物的 ...

  9. 基于51单片机的简易花样流水灯3(原理图+程序+仿真)

    目录 硬件电路设计 仿真电路设计 程序设计 学习了LED灯的左移和右移后,下面实现多种方式的花样流水灯. 硬件电路设计 结合51单片机最小系统的知识,利用AD19画好最小系统电路(未包括电源部分). ...

最新文章

  1. 十天学Linux内核之第二天---进程
  2. Windows Server 2012 从入门到精通系列之如何提高DC持续性?
  3. gridView删除提示框
  4. java抓rtp包_Wireshark抓取RTP包,还原语音
  5. SkyEye图形化界面使用技巧篇(一)
  6. 单片机,微控制器和微处理器的主要区别?
  7. Nodejs V8引擎 fast property lookup
  8. 2019-12-18 syscall(SYS_clock_gettime, CLOCK_MONOTONIC_RAW
  9. 计算机网络军训口号,霸气押韵的16字军训口号(精选50句)
  10. NVMe驱动详解系列_第一部:NVMe驱动初始化与注销
  11. jQuery进度条加载插件
  12. mysql的数据库实例名是啥_数据库名、数据库实例名与数据库域名
  13. Android软键盘删除键触发Activity的返回事件
  14. PADS(4)——PADS Logic原理图设计技巧
  15. 外文论文阅读生词积累
  16. 数据分析|基础概念/excel/tableau自学笔记
  17. 2022年最全快手市场研报合集(共61份)
  18. 软件测试面试101问(附答案)
  19. 用料扎实的全模组电源,还有十年换新支持,安钛克HCG 850体验
  20. 如何为您的入耳式监听器制作定制的硅胶耳模

热门文章

  1. 2021级新生程序设计班级天梯赛:2-2 《肖申克的救赎》
  2. html tab focus,tabindex解决div获得焦点focus()和失去焦点blur()的问题
  3. 不写代码?程序员必看的那些电影
  4. 环境变量LC相关设置
  5. 去黑头的方法....
  6. oracle12c 一键卸载
  7. Android 扫码登录案例
  8. java编译类代码_Java的源代码中定义几个类,编译结果就生成几个以“.class”后缀的字节码。...
  9. Word文档重新打开时恢复到上次阅读位置
  10. ffmpeg安装遇错:nasm/yasm not found or too old. Use --disable-x86asm for a crippled build.