一、  设计定义:

计数器设计与验证

LED,每500ms,状态翻转一次也就是亮灭。

第一步:

系统时钟频率为50M,对应为T= =20ns

计数周期或者时间是500ms,计数次数的计算:

计数值=(500ms= 500_000_000ns)/20=25_000_000

第二步:

对计数值位宽的计算:

打开电脑的计数器,输入计算值,可以得到计数值的十六进制为17D_7840.

由于最高位为1,用一个二进制位1表示即可,其他六位十六进制用四个二进制位表示。

位宽=1+6*4=25(位宽等于:最高位的二进制位数+剩余的位数*4)

二设计输入(代码)

这个设计分为两个部分:一是500ms的计数器。二是LED控制,每500MS翻转一次。

module counter_led

(

clk50M,

rst_n,

led

);

input clk50M;   //the frequence system clock

input rst_n;    //global reset,active low level

output led;     //the output IO/port

parameter T500Ms = 25'd24_999_999;

reg [24:0]cnt;  //the shortening of counter,define the counter register

//the counting process of 500Ms counter

always@(posedge clk50M or negedge rst_n)

if(!rst_n)

cnt<=25'd0;

else if(cnt==T500Ms)

cnt<=25'd0;

else

cnt<=cnt+1'b1;

//  the concrl of the output port of led

reg rled;

always@(posedge clk50M or negedge rst_n)

if(!rst_n)

rled<=1'b1;

else if(cnt==T500Ms)

rled<=~rled;

else

rled<=rled;

assign led = rled;

endmodule

三 仿真

//设计的Testbench文件:

`timescale 1ns/1ns

module counter_led_tb;

reg clk;

reg rst;

wire rled;

counter_led counter_led_m0

(

.clk50M(clk),

.rst_n(rst),

.led(rled)

);

initial clk=1;

always begin

#10 clk=~clk;

end

initial begin

rst=0;#2000;

rst=1;#200000;

rst=0;#500_000_000;

rst=1;#600_000_000;

$stop;

end

endmodule

仿真波形如下:

仿真波形正确,led在1000Ms时翻转一次,实现了功能。

今天是我做的一个小实验,LED每500MS翻转一次,很顺利就实现了功能。虽然实验简单,我也学到了知识。一是计数器的使用。计时就是计数。二是LED灯的控制,如翻转和亮灭。三是写文档可以用notepad++和word,排版轻松。我会继续加油!

最新文章

  1. LLVM 笔记(四)—— three-phase 设计的收益
  2. 使用dbghelp生成dump文件以及事后调试分析
  3. java基础之 工具类
  4. Jmeter—4 添加断言 判断响应数据是否符合预期
  5. Scala 深入浅出实战经典 第76讲:模式匹配下的赋值语句
  6. spring定时器 @Scheduled
  7. Multiscale Combinatorial Grouping 学习和理解源代码(一)
  8. c++ 回调类成员函数实现
  9. 腾讯webqq最新password加密算法,hash算法
  10. codeforces / project Euler 泛做
  11. (二分查找 拓展) leetcode 34. Find First and Last Position of Element in Sorted Array &amp;&amp; lintcode 61. Search for a Range
  12. MVP 实践
  13. 设计模式のCompositePattern(组合模式)----结构模式
  14. nginx http转 https
  15. XML 文档(1, 2)中有错误:不应有 &lt;xml xmlns=&#39;&#39;&gt;
  16. POJ3264(KB7-G RMQ)
  17. 在多线程中使用spring的bean
  18. bzoj4025: 二分图 lct
  19. Unity色子的投掷与点数的获得(详解)
  20. Gerrit安装配置

热门文章

  1. JavaScript中prompt的使用
  2. MySQL学习之路 一 : MySQL 5.7.19 源码安装
  3. 30分钟学会Objective-C
  4. 前端每日实战:1# 视频演示如何用纯 CSS 创作一个按钮文字滑动特效
  5. 最适合初学者的一篇 Ribbon 教程
  6. python之嵌套 闭包 装饰器 global、nonlocal关键字
  7. python基本数据类型的操作
  8. 【原创】(五)Linux进程调度-CFS调度器
  9. Django _web框架本质
  10. vue基础----key的作用