一、实验目标:设计一个以1s频率闪烁的LED灯(亮灭各500ms)
二、实验用开发板:xilinx大学计划EGO1开发板,板载100Mhz时钟
三、实现思路:板载100Mhz,可知时钟周期为10ns。要想实现亮灭各500ms,可设计一个计数器,可通过计数clk脉冲周期个数来达到计时目的。因此可以算出需要连续计数500ms/10ns=50000000个时钟周期。并使用基本D触发器实现LED亮灭状态的存储。
四、实现过程中的问题:
1、从下图中可以看到高电平持续时间不是500ms整,而是500.000010000ms。

由于上述数字太大,下面以模为4的计数器为例,计数应该是0-1、1-2、2-3、3-4,但是实际还多了一个4-0,实际计数到了因此需要N-1,在本文中计数最大值就是50000000-1=49999999.
2、复位信号在代码不同位置的综合问题,如下图,先放正确的

module led_flash(input clk,input rst,output reg led);
reg [26:0]cnt;
always@(posedge clk or posedge rst)beginif(rst)begin             //复位信号单独列写cnt <= 0;endelse if(cnt == 50000000)begin                           cnt <= 0;endelsecnt <= cnt+1'b1;
end
always@(posedge clk or posedge rst)beginif(rst)beginled <= 0;endelse if(cnt == 50000000)beginled <= ~led;end
end
endmodule


综合出的RTL,可以看到复位信号连接到了计数器和D触发器。
下面再放上错误的代码

module led_flash(input clk,input rst,output reg led);
reg [26:0]cnt;
always@(posedge clk or posedge rst)beginif(cnt == 50000000 || rst)begin      //这里又用软件的思维去写硬件了,想着反正都是计数器清零                      cnt <= 0;                        //为了代码精简点,放一起算了。end                                  elsecnt <= cnt+1'b1;
end
always@(posedge clk or posedge rst)beginif(rst)beginled <= 0;endelse if(cnt == 50000000)beginled <= ~led;end
end
endmodule


可以看到复位信号连接到一个mux上了,并没有连接到计数器。
调试看来不能只盯着代码看,还要多看看综合后的RTL啊。
说了半天,上面提到的都是异步复位,同步复位的,以后碰到了在写文章吧,今天就到这里。

FPGA小白学习日记-基于赛灵思XC7A35T相关推荐

  1. 激光slam学习日记——基于滤波器的激光SLAM方法

    激光slam学习日记--基于滤波器的 基于滤波的方法不适合大型场景,因为误差慢慢累积,没办法修复. 贝叶斯与频率学派相对应,贝叶斯估计概率,频率估计数值 粒子滤波:贝叶斯中的一个特例 一.贝叶斯估计 ...

  2. 生信小白学习日记Day2-2——NGS基础 NGS分析

    2019年5月26日下午,无意中看到hanli0902的关于NGS分析的博文https://blog.csdn.net/hanli1992/article/details/82790386有很多需要学 ...

  3. 生信小白学习日记Day3——NGS基础 NGS分析注解(质量分析软件)

    2019年5月27日,天气舒适,忙碌一天之后开始今天的生信学习.今天就昨天Day2-2的一些标记加以查询说明,仅供参考. NGS基础 NGS分析注解 1. 质量分析软件 昨天提到,拿到数据后可以通过一 ...

  4. 生信小白学习日记Day7——WGS分析流程(picard)

    2019年6月2日,周日,天气晴,pass 上午.开始学习NGS分析,继BWA比对和SAM文件排序转BAM后的流程. NGS分析 step5 Mark Duplications 参考这篇:GATK使用 ...

  5. 小白学习日记4_Python爬虫(requests/get)方式_2020年5月24日

    有好几天都没有更新了,但是也不代表博主没有在学习,只是因为去学习了更难的东西(只是博主个人认为哈),其实学下来发现也很简单,不理解就难,理解则易. 那么这几天我到底干嘛去了呢?前两天吧去顺着廖神的教程 ...

  6. 生信小白学习日记Day2——NGS基础 illumina高通量测序原理

    2019年5月26日,周日,小雨 说明:阅读生信宝典和查阅文章的总结,原文请关注公众号生信宝典,参考的博文都附有链接,仅供参考. 生信宝典 NGS基础--高通量测序原理 本文介绍了测序文库构建原理.链 ...

  7. FPGA小白学习之路(2)error:buffers of the same direction cannot be placed in series

    锁相环PLL默认输入前端有个IBUFG单元,在输出端有个BUFG单元,而两个BUFG(IBUFG)不能相连,所以会报这样的错: ERROR:NgdBuild:770 - IBUFG 'u_pll0/c ...

  8. DSP入门小白学习日记第三篇

    信号采集 首先我们要知道dsp芯片是用来处理信号数据的,那这个信号源怎么来呢?一般是通过传感器外设采集连接高速接口啥的(等以后买了再说吧),但是目前学习的时候只有一块开发板,所以只能自己模拟数据了,呜 ...

  9. 生信小白学习日记Day4Day5——NGS基础 NGS分析注释(BWA软件)

    2019年5月30日,晚上,心情变好,好几天没更新了,看到男朋友在学一款软件,我也近朱者赤,来继续注释Day2-2中NGS分析流程中的一个重要软件--BWA NGS基础 NGS分析注释 BWA 对应于 ...

最新文章

  1. elasticsearch的备份和恢复(转)
  2. OpenCV入门要掌握的基本函数
  3. 英国EE:启动TechCity 2.0 首期将部署LTE-Advanced Pro
  4. Remoting系列(二)----建立第一个入门程序
  5. 位运算 c语言 头文件 linux,1. 位运算_C语言_C语言入门-Linux C编程一站式学习...
  6. link引入html5,CSS引入方式 | link和@import的区别 — 生僻的前端考点
  7. Flink官网自学笔记
  8. Windows phone应用开发[15]-辅助工具
  9. LNMP环境SVN钩子脚本的使用
  10. Git 分支及bug分支合并
  11. tf.data.Dataset.zip()讲解 和 python自带的zip()的异同
  12. Smart3D倾斜摄影测量数据处理
  13. [机器学习导论]——第一课 机器学习概述
  14. CMSIS应用于研究指南图文教程
  15. 蛋白质结构预测---残基接触的基础知识(二)
  16. [DeFRCN] Decouple Faster R-CNN for Few-Shot Object Detection(ICCV 2021)
  17. 睁开双眼玩立体游戏!3D显示技术解析
  18. android和手环教程,智能手环怎么连接手机_智能手环连接手机教程
  19. 特征值和奇异值的关系
  20. JS-函数进阶笔记二次总结

热门文章

  1. VxWorks入门06:虚拟机中运行
  2. 利用百度EasyData智能标注并下载方法
  3. 盘点我这两年的成与败
  4. 2008年 斯坦福大学的计算机科学家,2008年,斯坦福大学的计算机科学家设计出了第一个专家系统:1982年,加州理工学院物理学家提出了新_快考试...
  5. Revit(8)-数据结构-类别、族概念
  6. Vue2的router-view中子组件与父组件传值
  7. WAS 服务器负载测试软件使用说明
  8. Apollo_ADS_路径规划2- 路径优化 --SL 轨迹 Optimizer
  9. PHP fuser,ubuntu 12.04 - fuser 高cpu
  10. SpringBoot/Mybatis/Druid, 多数据源MultiDataSource配置思路