此处设计一个数器,使 学习板上 的 LED 状态每 500ms翻转一次。 学习板上晶振为50MHz,也就是说时钟周期为 20ns , 这样可以计算得出 500ms = 500_000_000ns/20,即需要计数器 计数 25_000_000 次,也就是需要一个至少 25 位的计数器( 位的计数器( 225>25_000_000>224 )。且每当计数次达到需要清零并重新计数。
  
  1、计数器原理
  
         计数是一种最简单基本的运算,计数器就是实现这种运算的逻辑电路,计数器在数字系统中主要是对脉冲的个数进行计数,以实现测量、计数和控制的功能,同时兼有分频功能,计数器是由基本的计数单元和一些控制门所组成,计数单元则由一系列具有存储信息功能的各类触发器构成,这些触发器有RS触发器、T触发器、D触发器及JK触发器等。
  
  2、计数器verilog实现
  
                   端口名称   I/0                功能描述
  
  Clk50M input 模块的工作时钟,频率为50M
  
  Rst_n input 模块复位,低电平复位
  
  led output 低电平时LED亮
  
  module counter(Clk50M,Rst_n,led);
  
  input Clk50M; //系统时钟
  
  input Rst_n; //全局复位
  
  output reg led;//led 输出
  
  reg [24:0]cnt;//定义25位寄存器
  
  //计数器计数进程
  
  always@(posedge Clk50M or negedge Rst_n)//最后一条执行完成后,再开始执行其中的第一条语句,如此往复循环,直到整个仿真结束,对一组反复执行的活动进行建模
  
  if(Rst_n == 1'b0)
  
  cnt <= 25'b0;
  
  else if(cnt == 25'd24_999_999)
  
  cnt <= 25'b0;
  
  else
  
  cnt <= cnt + 1'b1;
  
  //LED输出控制进程 0.5s 翻转一次
  
  always@(posedge Clk50M or negedge Rst_n)
  
  if(Rst_n == 1'b0)
  
  led <= 1'b1;
  
  else if(cnt == 25'd24_999_999)
  
  led <= ~led ;
  
  else
  
  led <= led;
  
  endmodule
  
  3、仿真及板级验证
  
  `timescale 1ns/1ns
  
  `define clock_period 20//时钟周期
  
  module counter_tb;
  
  reg clk;
  
  reg rst_n;
  
  wire led;
  
  counter counter0(
  
  .Clk50M(clk),
  
  .Rst_n(rst_n),
  
  .led(led)
  
  );
  
  initial clk = 1;
  
  always #(`clock_period/2) clk = ~clk;
  
  initial begin
  
  rst_n = 1'b0;
  
  #(`clock_period*200)
  
  rst_n = 1'b1;
  
  #2000000000;
  
  $stop;
  
  end
  
  endmodule
  
  <!DOCTYPE html>
  
  <html lang="zh">
  
  <head>
  
  <meta charset="UTF-8">
  
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  
  <title>Document</title>
  
  <style>
  
  .wrapper {display: flex;border: 1px solid orangered;padding: 10px;}
  
  .col {border: 1px solid #808080;height: 500px;width: 200px;margin: 0 10px;padding: 10px;}
  
  .item {border: 1px solid #808080;www.dasheng178.com margin: 5px 0;}
  
  </style>
  
  </head>
  
  <body>
  
  <div class="wrapper">
  
  <div class="col1 col">
  
  <div class="item" id="item1" draggable="true">item1</div>
  
  <div class="item" id="item2" draggable="true">item2</div>
  
  <div class="item" id="item3" draggable="true"www.michenggw.com>item3</div>
  
  </div>
  
  <div class="www".xianggelila2.com"col2 col"></div>
  
  <div class="col3 col"></div>
  
  <div class="col4 col"></div>
  
  </div>
  
  <script>
  
  let cols = document.getElementsByClassName('col');
  
  for (let col of cols) {
  
  col.ondragenter = e =www.gcyl159.com/ > {
  
  console.log('放置元素 ondragenter',www.qinlinyu.cn '<' + e.dataTransfer.getData('item') + '>');
  
  }
  
  col.ondragover = e => {
  
  e.preventDefault();
  
  console.log('放置元素 ondragover', '<' + e.dataTransfer.getData('item') + '>');
  
  }
  
  col.ondragleave = e => {
  
  console.log('放置元素 ondragleave', '<' + e.dataTransfer.getData('item') + '>');
  
  }
  
  col.ondrop = function(e) {
  
  console.log('放置元素 ondrop', '<' + e.dataTransfer.getData('item') + '>');
  
  this.append(document.getElementById(e.dataTransfer.getData('item')));
  
  }
  
  }
  
  let items = document.getElementsByClassName('item');
  
  for (let item of items) {
  
  item.ondragstart = e => {
  
  console.log('拖拽元素 ondragstart');
  
  e.dataTransfer.setData('item', e.target.id);
  
  }
  
  item.ondragend = e => {
  
  console.log('拖拽元素 ondragend');
  
  4、时序仿真波形

FPGA学习记录_设计一个计数器的更多相关文章

  1. [Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source …

    [Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source - [Pyth ...

  2. 实验楼Python学习记录_挑战字符串操作

    自我学习记录 Python3 挑战实验 -- 字符串操作 目标 在/home/shiyanlou/Code创建一个 名为 FindDigits.py 的Python 脚本,请读取一串字符串并且把其中所 ...

  3. FPGA学习:VHDL设计灵活性&不同设计思路比较

    概要 由于VHDL编程实现数字电路具有很高的灵活性,为多种不同的思路编写实现同一种功能提供了可能.这些不同的设计思路,在耗费资源,可靠性,速度上也有很大的差异,往往需要我们根据实际需求和资源条件选择适 ...

  4. python学习记录_中断正在执行的代码,执行剪切板中的代码,键盘快捷键,魔术命令,输入和输出变量,记录输入和输出变量_

    2018-03-28 00:56:39 中断正在执行的代码 无论是%run执行的脚本还是长时间运行的命令ctrl + cIn [1]: KeyboardInterrupt 执行剪切板中的代码 ctrl ...

  5. 学习笔记_第一个strut程序_之中文乱码,过滤器解决方案及过程总结

    1.  第一次碰到加过滤器的过程,就是在学习struct1的时候,中文乱码 几个需要注意的关键字 2.什么叫package 所谓package就是打包的意思,就是说以下程序都是处于这个包内,所以一开始 ...

  6. MySQL的一些操作(学习记录_备忘)

    有个问题一直困扰着我,就是在windows下,使用命令行登录mymql时,得cd进mysql的\bin目录下.但我已经将mysql的\bin加入了环境变量,似乎不起作用. mysql 不允许创建表名全 ...

  7. FPGA学习记录 - Quartus II 未使用管脚设置为三态输入

    未使用管脚设置为三态输入 Assignments  -> Device 或双击器件

  8. Thrift学习记录

    Thrift学习记录 Thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生成引擎,以构建在C++,Java,Python,PHP,Ruby,Erlang, ...

  9. git原理学习记录:从基本指令到背后原理,实现一个简单的git

    一开始我还担心 git 的原理会不会很难懂,但在阅读了官方文档后我发现其实并不难懂,似乎可以动手实现一个简单的 git,于是就有了下面这篇学习记录. 本文的叙述思路参照了官方文档Book的原理介绍部分 ...

随机推荐

  1. 阅读笔记《JavaScript高级程序设计》

    0. 严格模式 "user strict" (1整个脚本顶部,2函数体顶部) 1. 数据类型 undefined -- 未定义 boolean string number obje ...

  2. MySQL高级-MySQL安装

    1.mysql安装 检查系统是否安装过mysql 查询命令:rpm -qa|grep -i mysql 删除命令:rpm -e RPM软件包名(该名字是上一个命令查出来的名字) 安装命令:rpm -i ...

  3. HTTP与IIS知识点

    HTTP TCP/IP 使用的网络是在TCP/IP协议族的基础上运作的.HTTP属于它内部的一个子集. 协议:计算机与设备要互相通信,双方就必须基于相同的方法.这种规则称为协议(protocol) 分 ...

  4. 如何设置虚拟化的centos内、外网络通畅

    首先要去确定你的本机(本地物理机)是通过以太网(插网线)上网的,还是通过wifi上网的.这个很重要. 如果是通过以太网去上网,那么虚拟化出来的系统,网络配置应当选择桥接模式. 当然了,也不一定非要用桥 ...

  5. NavRouter

    使用方法只需要跟vue-router一样正常使用即可,这里我们新加了一个路由跳转方法nav: router.nav()//参数同router.replace一样. 路由跳转策略 首先说下路由跳转过程, ...

  6. fiddler不经意的功能

    捕获指定客户端的请求,直接食用 窗口分离,直接食用 Hide this column  隐藏此列Ensure all columns are visible   显示默认所有列Customize co ...

  7. lesson 24 A skeleton in the cupboard

    lesson 24 A skeleton in the cupboard conceal sth from sb 对某人隐藏某事 He conceals his girlfriend from his ...

  8. python计算工资个税

    # -*- coding: utf-8 -*- total = int(input("税前总计:")) #公积金10% Gongjijin = total * 0.1 print( ...

  9. 告别加载dll 出错开机加载项大揭秘

    提到开机加载(load)项,大家不要以为就是系统启动(run)项.最简单的例子是,杀毒软件或者用户手动删除病毒文件后,注册表中的自动加载信息仍在,登陆系统时就会提示"加载*dll出错,系统找 ...

  10. py3.6+anaconda下安装opencv3

    py3.6+anaconda下安装opencv3 首先声明-网上的方法大多数都是有毒的.也不知道给的什么鬼方法都不行. 我说下我的方法.去这个网站https://pypi.tuna.tsinghua. ...