参考正点原子的代码

module led_twinkle(
input sys_clk,
input sys_rst,
output [1:0] led);reg [25:0] cnt = 26'd0;
assign led = (cnt<26'd2500_0000)?2'b01:2'b10;always @(posedge sys_clk or negedge sys_rst)
beginif(!sys_rst)cnt <= 26'd0;else if(cnt<26'd5000_0000)cnt <= cnt +1'b1;else cnt <= 26'd0;
end
endmodule

此时的testbench代码如下

`timescale 1ns / 1psmodule testbench();
reg sys_clk = 0;
reg sys_rst = 0;
wire [1:0] led;
always #10 sys_clk = !sys_clk;initial
begin#5sys_rst = 1;
endled_twinkle led_twinkle_tb(
.sys_clk(sys_clk),
.sys_rst(sys_rst),
.led(led)
);endmodule

当进行仿真的时候,可以看出实际灯1和灯2的点亮的时间并不为500ms。


从上面的图中可以看出,led1和led2点亮的时间是不相同的,led2的多了20ns,也就是一个时钟周期。

要想灯1亮500ms、灯2亮500ms,那么总的时间为1s。
这时候假设时钟周期为20ns,那么总共需要5000_0000个这样的周期。
计数器cnt的取值应该为0-4999_9999,只需要修改一个地方就行
always @(posedge sys_clk or negedge sys_rst)
begin
if(!sys_rst)
cnt <= 26’d0;
else if(cnt<26’d5000_0000-1’d1)
cnt <= cnt +1’b1;
else
cnt <= 26’d0;
end
endmodule
修改后的Verilog代码如下

module led_twinkle(
input sys_clk,
input sys_rst,
output [1:0] led);reg [25:0] cnt = 26'd0;
assign led = (cnt<26'd2500_0000)?2'b01:2'b10;always @(posedge sys_clk or negedge sys_rst)
beginif(!sys_rst)cnt <= 26'd0;else if(cnt<26'd5000_0000-1'd1)cnt <= cnt +1'b1;else cnt <= 26'd0;
end
endmodule

这时候在继续进行仿真。

达芬奇pro的FPGA学习笔记4--LED闪烁(500ms灯1亮,500ms灯2亮)相关推荐

  1. 达芬奇pro的FPGA学习笔记1--创建vivado工程

    这一阶段的目标是看达芬奇pro的FPGA的学习视频,学习范围主要对FPGA的硬件和软件进行学习. 开发软件版本:vivado 2019.2 开发系统:win11 创建vivado工程 首先打开viva ...

  2. 达芬奇pro的FPGA学习笔记0--对自己想说的话以及之后的项目规划

    一直想对自己说些心里话. 以前的自己,想要研究.想要探索的项目有很多,但是大多数没有完成.总是这个项目没有研究多久,就去研究新的项目.在这种情况下,自己收获的是非常少的. 现在看来,这种做法是不对的, ...

  3. 达芬奇pro的FPGA学习笔记3--添加testbench文件、仿真

    这是第一个实验,内容:小灯闪烁实验(主要参考正点原子的例程) 因为考虑到需要计数的数值较大,所以将计数减少,这样可以更好的进行仿真,下面的代码是修改后的Verilog的设计文件 module led_ ...

  4. 达芬奇PRO板的FPGA功能学习笔记(一)

    达芬奇PRO板的FPGA功能学习笔记(一) 从编译到实现需要五个步骤: 1.写代码(verilog语言) 2.综合分析 3.写约束文件 约束文件主要是定义接口,命令第一个关键字代表命令的名称,其后的每 ...

  5. 达芬奇pro核心板QSPI Flash读数据实验

    Flash型号及互联结构 核心板Flash型号为N25Q128,其与FPGA的互联结构见达芬奇pro核心板原理图V3.9. 其中,QSPI_CS和QSPI_DQ0~3分别为Flash的片选和数据线,连 ...

  6. FPGA学习笔记(1)简单的时序逻辑电路——流水灯

    FPGA学习笔记(1)简单的时序逻辑电路--流水灯 编程语言为Verilog HDL 原理 (1)设计一个计数器,使开发板上的4个LED状态每500ms翻转一次.开发板上的晶振输出时钟频率为50MHz ...

  7. 达芬奇PRO板的FPGA功能学习笔记(二)

    实例化调试探针流程: 1.点击"Flow Navigator"下面的 IP catalog,搜索ILA,并双击打开: 2.在弹出的窗口customize IP中有两个子页面:Gen ...

  8. FPGA 学习笔记:Vivado 2019.1 添加 IP MicroBlaze

    前言 当前 FPGA 无所不能,能添加 MCU的核,也就是可以嵌入一个单片机的内核,当个单片机使用,这里添加 MicroBlaze,这个是RISC的核,还没有开始熟悉,估计与 ARM 或者 RISC- ...

  9. FPGA 学习笔记:Verilog 实现LED流水灯控制

    前言 在初步了解 Xilinx Vivado 的使用后,开启了FPGA Hello World 程序:LED 流水灯控制 在嵌入式MCU中,流水灯需要延时来实现,FPGA的延时,使用外部晶振来实现 目 ...

最新文章

  1. springmvc获取request对象
  2. fileoutputstream路径 android,Android编程中FileOutputStream与openFileOutput()的区别分析
  3. 2015春季学期阅读计划
  4. 阿里云ubuntu14.04下lamp环境搭建の备忘
  5. torch_geometric笔记:数据集 ENZYMES Minibatches
  6. SVN项目,快速查看项目的当前版本号
  7. wamserver怎么把mysql找回来_将php连接wampserver自带的MySQL数据库 所遇到各种问题解决办法...
  8. java collections_扫盲java.util.Collections工具包,学习排序、二分、洗牌、旋转算法
  9. c语言实现一个编译器生成语法树,运用JavaScript构造C语言子集的编译器
  10. mysql 逗号 join_mysql – sql join表,其中1列有逗号
  11. Python命令行版本的员工管理系统
  12. html高德地图的使用方法,高德地图的使用方法
  13. kali linux mysql密码,Kali Linux中MySQL重置root密码
  14. 【面向对象】DDD(一):传统开发模式 VS DDD 开发模式
  15. 微软必应词典案例分析
  16. UVA: 1589 Xiangqi
  17. mysql查询并计算单价_Mysql--查询的成本如何计算
  18. Java 格式化xml字符串
  19. codeforces 596E Wilbur and Strings
  20. 固件-驱动-软件 区别

热门文章

  1. An unhandled exception of type 'System.IO.FileNotFoundException' occurred in Unknown Module
  2. 机器视觉应用于蔬果检测方面的相关英语词汇
  3. 分配异常的servlet
  4. 浪潮编程题python石头排序_数分 | 沙滩排石头-浪潮提前批笔试 Java、C++、Python
  5. C语言 单链表的增删改查
  6. 如何在互联网以最快速度赚够十万?
  7. 清华大学王青计算机系,物理系邀请清华大学王青教授做学术讲座
  8. ASP.NET完全手册(电子工业出版社)
  9. 抖音分期有额度怎么用不了
  10. java游戏 动态录入弹球_动态弹球的实现 加入了多线程技术--javaSE游戏准备工作...