可控线性序列机:

可控:有个控制端控制何时输出线性序列。

线性序列机:输出一个线性序列。

知识点:

1.包含多个判定条件时用英文()括起来,用&&连接。

2.使能端EN的设置(类似于D触发器 1触发,0保持),注意不能在最后一个状态时立即跳0,要让这个状态跑完。

3.有多个跳变点时,设计多个计数器就可以(仍要注意位数)。

4.在仿真波形中查看除了inout端口外的其他变量的波形的方法:在scope中选择你设计的源文件,右键选择add to wave window。这时可以在波形图中看到出现了更多的变量,但仍然没有波形。我们就得右键simulation,选择relaunch simulation,便可以看到变量的波形了。

  1. module led_change7( //可控线性序列机.
  2. clk,
  3. reset,
  4. ctrl,
  5. tim,
  6. led
  7. );
  8. input clk;
  9. input reset;
  10. input [7:0]ctrl;
  11. input [5:0]tim;
  12. output reg led ;
  13.  
  14. reg [5:0]counter0;//计数每个状态持续时间 50次,持续1us
  15. always@( posedge clk or negedge reset )
  16. begin
  17. if ( reset == 0 )
  18. counter0 <= 6'b0 ;
  19. else if (counter0 == tim - 1 )
  20. counter0 <= 6'b0 ;
  21. else
  22. counter0 <= counter0 + 1'd1;
  23. end
  24.  
  25. reg [9:0]counter2 ;//整个循环周期 20us
  26. always@( posedge clk or negedge reset )
  27. begin
  28. if ( reset == 0 )
  29. counter2 <= 10'b0 ;
  30. else if (counter2 == 20 * tim - 1 )
  31. counter2 <= 10'b0 ;
  32. else
  33. counter2 <= counter2 + 1'd1;
  34. end
  35.  
  36. reg EN = 1'b1 ;//使能端
  37. always@( posedge clk or negedge reset )
  38. begin
  39. if ( reset == 0 )
  40. EN <= 1'b0 ;
  41. else if ((counter0 == tim - 1 ) && ( counter1 == 3'b111 ))
  42. EN <= 1'b0 ;
  43. else if ( counter2 == 10'd0 )
  44. EN <= 1;
  45. else
  46. EN <= EN ;
  47. end
  48.  
  49. reg [2:0]counter1;//计数led的状态
  50. always@( posedge clk or negedge reset )
  51. begin
  52. if ( reset == 0 )
  53. counter1 <= 3'b0 ;
  54. else if ((counter0 == tim - 1 ) && ( EN == 1'b1))
  55. counter1 <= counter1 + 3'd1 ;
  56. else if ( EN == 1'b0 )
  57. counter1 <= 3'b0 ;
  58. else
  59. counter1 <= counter1 ;
  60. end
  61.  
  62. always@( posedge clk or negedge reset )
  63. begin
  64. if ( reset == 0 )
  65. led <= 0 ;
  66. else case( counter1 )
  67. 3'b000 : led <= ctrl[0] ;
  68. 3'b001 : led <= ctrl[1] ;
  69. 3'b010 : led <= ctrl[2] ;
  70. 3'b011 : led <= ctrl[3] ;
  71. 3'b100 : led <= ctrl[4] ;
  72. 3'b101 : led <= ctrl[5] ;
  73. 3'b110 : led <= ctrl[6] ;
  74. 3'b111 : led <= ctrl[7] ;
  75. default led <= led ;
  76. endcase
  77. end
  78. endmodule

可控线性序列机(查看除了inout端口外的其他变量的波形的方法)的更多相关文章

  1. 基于FPGA的UART协议实现(通过线性序列机)

    //////////////////2018/10/15 更新源代码: 实现uart这东西其实早就写了,不过不太完善,对于一个完美主义者来说,必须解决掉它. 1.什么是UART?        通用异 ...

  2. 小梅哥FPGA数字逻辑设计教程——基于线性序列机的TLC5620型DAC驱动设计

    基于线性序列机的TLC5620型DAC驱动设计 目录 TLC5620型DAC芯片概述:    2 TLC5620型DAC芯片引脚说明:    2 TLC5620型DAC芯片详细介绍:    3 TLC ...

  3. 【Linux基础】查看某一端口是否开放(1025为例)

    1.使用lsof 命令来查看端口是否开放 lsof -i:1025 //如果有显示说明已经开放了,如果没有显示说明没有开放 lsof(list open files)是一个列出当前系统打开文件的工具. ...

  4. linux下查看进程占用端口和端口占用进程命令

    Linux下查看进程占用端口: 查看程序对应进程号:ps –ef|grep 进程名 REDHAT :查看进程号所占用的端口号:netstat –nltp|grep 进程号 ubuntu:查看进程占用端 ...

  5. [linux]查看linux下端口占用

    netstat netstat -an | grep 23 (查看是否打开23端口) 查看端口占用情况的命令:lsof -i [root@www ~]# lsof -i COMMAND PID USE ...

  6. 查看Linux下端口占用情况的命令

    在使用Linux系统的过程中,有时候会遇到端口被占用而导致服务无法启动的情况.比如HTTP使用80端口,但当启动Apache时,却发现此端口正在使用. 这种情况大多数是由于软件冲突.或者默认端口设置不 ...

  7. linux 查看某一端口的占用情况

    查看某一端口的占用情况: lsof -i:端口号,例如查看端口21是否被占用 lsof -i: 实例:查看端口是否被占用,如果被占用结束掉该端口 [root@localhost splunk]# ls ...

  8. C++线性序列容器<vector>简单总结

    C++线性序列容器<vector>简单总结 vector是一个长度可变的数组,使用的时候无须声明上限,随着元素的增加,Vector的长度会自动增加:Vector类提供额外的方法来增加.删除 ...

  9. 在windows命令行窗口下执行:查看所有的端口占用情况

    开始--运行--cmd 进入命令提示符 输入netstat -ano 即可看到所有连接的PID 之后在任务管理器中找到这个PID所对应的程序如果任务管理器中没有PID这一项,可以在任务管理器中选&qu ...

随机推荐

  1. 五三想休息,今天还学习,图解二叉树的层序遍历BFS(广度优先)模板,附面试题题解

    壹 ❀ 引 我在从JS执行栈角度图解递归以及二叉树的前.中.后遍历的底层差异一文中,从一个最基本的数组遍历引出递归,在掌握递归的书写规则后,又从JS执行栈角度解释了二叉树三种深度优先(前序.中序后序) ...

  2. Spring按业务模块输出日志到不同的文件

    一.背景 在我们开发的过程中,可能存在如下情况: 1.有些时候我们需要调用第三方的接口,一般情况下,调用接口,我们都会记录请求的入参和响应的.如果我们自己系统的日志和第三方的日志混合到一个日志文件中, ...

  3. kNN-画图

    现在我们想要展示一些可视化内容 首先导包,如果是在jupyter notebook上,需要加入魔法函数:%matplotlib inline,这表示可以在jupyter上直接画图 import dat ...

  4. Spring Cloud Feign+Hystrix自定义异常处理

    开启Hystrix spring-cloud-dependencies Dalston版本之后,默认Feign对Hystrix的支持默认是关闭的,需要手动开启. feign.hystrix.enabl ...

  5. 并发编程系列之Lock锁可重入性与公平性

    一.相似之处:Lock锁 vs Synchronized 代码块 Lock锁是一种类似于synchronized 同步代码块的线程同步机制.从Java 5开始java.util.concurrent. ...

  6. 操作系统实现-printk

    博客网址:www.shicoder.top 微信:18223081347 欢迎加群聊天 :452380935 这一次我们来实现最基础,也是最常见的函数print,大家都知道这个是可变参数函数,那具体怎 ...

  7. Arthas常用功能及一次线上问题排查

    一.Arthas简介 Arthas是Alibaba开源的Java诊断工具,功能很强大,它是通过Agent方式来连接运行的Java进程.主要通过交互式来完成功能. https://arthas.aliy ...

  8. MySQL8小时问题

    一.问题 获取MySQL连接,8小时内无请求自动断开连接. 二.解决 2.1 分析 MySQL服务器默认的"wait_timeout"是28800秒即8小时,意味着如果一个连接的空 ...

  9. Vue关闭语法检测

    为什么?为了防止写到一半保存,报错.关闭默认的语法检测 新建vue.config.js 1.vue.config.js的作用是允许你修改脚手架中wekpack的默认参数. 2.vue.config.j ...

  10. Spring Boot中的微信支付(小程序)

    前言 微信支付是企业级项目中经常使用到的功能,作为后端开发人员,完整地掌握该技术是十分有必要的. logo 一.申请流程和步骤 图1-1 注册微信支付账号 获取微信小程序APPID 获取微信商家的商户 ...