让8个LED灯分别以不同的频率闪烁 0.1s 0.2s 0.3s 0.4s 0.5s 0.6s 0.7s 0.8s(这里说的0.1s代表闪烁共计0.1s)

1、计算
系统频率为50MHZ,则计算出周期为20ns。

0.1s = 0.1 * 10^(9) = 10^(8)ns = 5 * 10^(6) * 20ns
所以累加次数为:2.5 * 10^6 = 2,500,000

0.2s = 0.2 * 10^(9) = 2 * 10^(8)ns = 10 ^(7)* 20ns
所以累加次数为:5 * 10^6 = 5,000,000
以此类推累加次数:
0.3s = 7,500,000
0.4s = 10,000,000
0.5s = 12,500,000
0.6s = 15,000,000
0.7s = 17,500,000
0.8s = 20,000,000
2、一个led灯的闪烁代码如下:

///一个led代码:
module ledflash(clk,rst,led);
input clk;
input rst;
output reg led;
reg [24:0] count;
parameter CNT_MAX = 25'd24_999_999;//count 进程
always@(posedge clk or negedge rst)if(!rst)count <= 25'd0;else if(count == CNT_MAX)count <= 25'd0;else count <= count +1'b1;
//led进程
always@(posedge clk or negedge rst)if(!rst)led <= 1'b1;else if(count == CNT_MAX)led <= ~led;endmodule

3、8个LED灯不同频率实现如下:

//使用多个led顶层模块代码
module shiyan(clk,rst,LED);
input rst;
input clk;
output[7:0] LED;
//实例化8个LED灯
ledfile   ledDemo1(.clk(clk),.rst(rst),.led(LED[0]));ledfile   ledDemo2(.clk(clk),.rst(rst),.led(LED[1]));ledfile   ledDemo3(.clk(clk),.rst(rst),.led(LED[2])); ledfile   ledDemo4(.clk(clk),.rst(rst),.led(LED[3]));ledfile   ledDemo5(.clk(clk),.rst(rst),.led(LED[4]));ledfile   ledDemo6(.clk(clk),.rst(rst),.led(LED[5]));ledfile   ledDemo7(.clk(clk),.rst(rst),.led(LED[6]));ledfile   ledDemo8(.clk(clk),.rst(rst),.led(LED[7]));
//根据8个不同LED的频率进行宏定义
//方法一:
defparam ledDemo1.CNT_MAX = 2499999;//2500000-1
defparam ledDemo2.CNT_MAX = 4999999;//5,000,000-1
defparam ledDemo3.CNT_MAX = 7499999;//7,500,000-1
defparam ledDemo4.CNT_MAX = 9999999;//10,000,000-1
defparam ledDemo5.CNT_MAX = 12499999;//12,500,000-1
defparam ledDemo6.CNT_MAX = 14999999;//15,000,000-1
defparam ledDemo7.CNT_MAX = 17499999;//17,500,000-1
defparam ledDemo8.CNT_MAX = 19999999;//20,000,000-1endmodule

激励模块:

//激励
module led_tb();
reg clk;
reg rst;
wire [7:0] LED;shiyan shiyanDemo(.clk(clk),.rst(rst),.LED(LED));initial clk = 1;always #10 clk = ~clk;initial beginrst = 0;#201;rst = 1;#2000000000;//2send
endmodule

4、方案二:想要仿真时间少一点但不影响板级验证时间
8个LED灯不同频率实现如下:

//使用多个led顶层模块代码
module shiyan(clk,rst,LED);
input rst;
input clk;
output[7:0] LED;#(
.CNT_MAX(2499999)
)
ledflash   ledDemo1(.clk(clk),.rst(rst),.led(LED[0]));#(
.CNT_MAX(4999999)
)
ledflash   ledDemo2(.clk(clk),.rst(rst),.led(LED[1]));#(
.CNT_MAX(7499999)
)
ledflash   ledDemo3(.clk(clk),.rst(rst),.led(LED[2]));  #(
.CNT_MAX(9999999)
)
ledflash   ledDemo4(.clk(clk),.rst(rst),.led(LED[3]));#(
.CNT_MAX(12499999)
)
ledflash   ledDemo5(.clk(clk),.rst(rst),.led(LED[4]));#(
.CNT_MAX(14999999)
)
ledflash   ledDemo6(.clk(clk),.rst(rst),.led(LED[5]));#(
.CNT_MAX(17499999)
)
ledflash   ledDemo7(.clk(clk),.rst(rst),.led(LED[6]));#(
.CNT_MAX(19999999)
)
ledflash   ledDemo8(.clk(clk),.rst(rst),.led(LED[7]));          endmodule

仿真:

//激励
module led_tb();
reg clk;
reg rst;
wire [7:0] LED;shiyan shiyanDemo(.clk(clk),.rst(rst),.LED(LED));defparam shiyanDemo.ledDemo1.CNT_MAX = 24;defparam shiyanDemo.ledDemo2.CNT_MAX = 24;defparam shiyanDemo.ledDemo3.CNT_MAX = 24;defparam shiyanDemo.ledDemo4.CNT_MAX = 24;defparam shiyanDemo.ledDemo5.CNT_MAX = 24;defparam shiyanDemo.ledDemo6.CNT_MAX = 24;defparam shiyanDemo.ledDemo7.CNT_MAX = 24;defparam shiyanDemo.ledDemo8.CNT_MAX = 24;initial clk = 1;always #10 clk = ~clk;initial beginrst = 0;#201;rst = 1;#2000000000;end
endmodule

这样做就可以使仿真时间减少,但是也可以满足设计要求。

练习参数化设计---不同频率LED灯闪烁相关推荐

  1. Arduino 蜂鸣器播放音乐LED灯闪烁

    一.实验所需组件: led灯 三脚蜂鸣器 面包板 Arduino开发板 杜邦线 二.实验原理 蜂鸣器实现音乐播放: 控制好频率和节拍,就能演奏出好听的音乐.因此,在实验之前要先弄清楚各音调的频率.可参 ...

  2. 【正点原子FPGA连载】第八章LED灯闪烁实验 -摘自【正点原子】领航者ZYNQ之FPGA开发指南_V2.0

    1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...

  3. 51单片机入门:LED灯闪烁(原理图+仿真+程序)

    目录 硬件电路设计 仿真电路设计 程序设计 仿真实现 在用51单片机点亮一个LED小灯的基础上,下面尝试将一个LED灯闪烁起来. 硬件电路设计 结合51单片机最小系统的知识,利用AD19画好最小系统电 ...

  4. 【MSP430】MSP430F5529火箭板 --->基于定时器A的LED灯闪烁实验(含Timer_A分析)

    实验内容:上电点亮MSP430F5529 Launch Pad 上板载的红色LED,同时使用定时器让绿色LED闪烁 实验准备: 1.硬件:MSP430F5529 Launch Pad 2.软件:Cod ...

  5. 【正点原子FPGA连载】 第八章 LED灯闪烁实验摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

    1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=692450874670 3)全套实验源码+手册+视频下载地址: h ...

  6. SOPC第三课---同时点亮4个LED灯闪烁

    本栏目将会介绍Alteral的SOPC系列,整个过程不会沿袭教材,那样就成了抄教材了,而是将课程笔记汇总,并且把一些我实验过程中犯过的错误记录下来. 更新时间比较缓慢. 资源: 锆石A4开发板 小梅哥 ...

  7. linux下的c语言控制灯闪烁,C语言实现LED灯闪烁控制

    原标题:C语言实现LED灯闪烁控制 /********* 配套 **********/ #include //包含 寄存器的头文件 /********************************* ...

  8. STC8H8K64U——定时器T0(LED灯闪烁)

    LED灯闪烁 使用定时器实现延时实现LED灯闪烁,定时 5ms,count 计数50定时 250ms #include <STC8H.H>sbit LED = P2^0; unsigned ...

  9. 基于STM32F103芯片实现LED灯闪烁

    基于STM32F103芯片实现LED灯闪烁 前言 一,寄存器配置 1,时钟控制 2,GPIO端口设置: 二.实际操作 1.具体代码 2.keil5项目运行 3.硬件的连接 4.链接到 mcuisp 串 ...

最新文章

  1. swift 学习笔记之在柯里化(Currying)
  2. Csharp volatile 关键字
  3. SpringBoot无法书写主启动类的情况之一
  4. python读取 application_python PyQt5.QtWidgets.QApplication类(sys.argv)(app应用对象类)...
  5. linux du命令重定向,df命令、du命令 、磁盘分区
  6. Python学习札记(十三) Function3 函数参数二
  7. java 设计一个动物类_Java课程设计(动物换位)
  8. STM32F103输出互补PWM波
  9. DELPHI学习---简单类型
  10. 2016 英语作文二
  11. java大马后门_一款免杀php大马的解密与去后门
  12. 经纬财富:惠州炒现货白银交易手续费
  13. 强行在MFC窗体中渲染Cocos2d-x 3.6
  14. Windows下的扩展文件名
  15. 大班如果我有机器人教案_大班科学机器人教案
  16. 计算机大专考试题,计算机大专考试试题一.doc
  17. Excel制作热力图
  18. h264基础知识梳理
  19. OMIM 表型和基因如何关联
  20. 《嫌疑人X的献身》——两个天才之间的思想火花

热门文章

  1. C++描述 LeetCode 26. 删除排序数组中的重复项
  2. 解决GitHub网络波动严重
  3. 观察者模式(Observe Pattern) – 设计模式之行为模式
  4. 树莓派无线网络设置、WLAN0设置
  5. 【一篇看全】工业相机常用数据传输协议速率对比(CameraLink,CXP,1/10/100GigE,USB)
  6. Pool池对象-sync.Pool
  7. 第七届电工专项 如何进行检验
  8. 神奇的Css3(3) 多列布局
  9. java for 下标_Java如何在 Word 中设置上、下标
  10. LabVIEW NI网络设备在MAX中不显示或未识别