06分频计数器之LED闪烁1
一设计功能是:让LED灯每1秒亮一次,再灭一秒,闪烁时间周期为2秒。
二分频的介绍:
(一)设计方式:IP核和自己动手写。
(二)对于分频的构成:一个是计数器,还有时钟翻转。方法一是计满整个周期,一半周期为高,一半为低。第二种是,计满半个时钟周期,就反转。
三设计输入:
(一)分频计数器模块
功能是产生一个1秒的计数器:参数化设计方便修改和仿真时间缩小
|
parameter T1S = 28'd49_999_999; //div counter reg [27:0]div_cnt; always@(posedge clk)begin if(rst==0) div_cnt<=28'd0; else if(div_cnt==T1S) div_cnt<=28'd0; else div_cnt<=div_cnt+1'b1; end |
(二)1秒脉冲的标志信号的产生模块
由于LED灯的一秒灭和一秒亮,等效为一个占空比为50%的方波的高电平控制LED灯亮。所以只需让LED的一秒脉冲标志信号,每计时到1秒反转一次,就能
控制LED的一秒闪烁。
|
//the flag of one_s_flag reg one_s_flag; always@(posedge clk)begin if(rst==0) one_s_flag<=1'b0; else if(div_cnt==(T1S-1))begin one_s_flag<=1'b1; end else begin one_s_flag<=1'b0; end end |
(三)1秒脉冲的标志信号控制LED亮灭
由第二部分的介绍可知,LED灯的亮灭与脉冲标志信号的电平状态一致。
|
//the control of led always@(posedge clk)begin if(rst==0)begin led<=1'b0; end else if(one_s_flag==1)begin led<=~led; end else begin led<=led; end end |
(四:仿真波形)
|
|
四设计总结:
(一)设计:照图施工。根据下面各个信号的时序图,直接设计各模块即可。

(二)关键点仿真时间缩小:一是仿真中参数缩小。二是在功能模块,修改参数为小的。三是在modelsim中仿真运行时间修改大单位:ns--us-ms.(当仿真时间为2秒等)
led_flash #(.T1S(99)) led_flash_m0(
.clk(Clk),
.rst(Rst),
.led(led)
);
(三)遇到问题:问题一是在仿真文件testbench中,仿真时间没有达到2秒,仿真中LED灯未翻转。
解决方法:使复位信号rst为高的仿真时间达到2秒
问题二是在ISE中工程烧写到赛灵思的开发板,没有闪烁。
解决方法:修改管脚约束条件和让复位信号为低时复位,成功实现闪烁功能(原因是,管脚约束条件的格式错误,LED与按键相连,那个按键的电平状态与rst一样。按键默认为高,则一直处于复位状态对于高电平复位来说。)
下面是管脚约束条件:
|
NET "clk" LOC=p24 | IOSTANDARD=LVCMOS33; NET "rst" LOC=p94| IOSTANDARD=LVCMOS33; NET "led" LOC=p92| IOSTANDARD=LVCMOS33; |
06分频计数器之LED闪烁1的更多相关文章
- Blink Without Delay: 不使用 delay() 函数而使 LED 闪烁
不使用 delay() 函数而使 LED 闪烁 有些时候你需要同时做两件事.例如,你可能希望在读取按键按下状态同时让LED闪烁. 在这种情况下,你不能使用 delay(),因为Arduino程序会在d ...
- [stm32][ucos][ucgui] 2、LED闪烁、串口、滑块、文本编辑框简单例程
上一篇:[stm32][ucos] 1.基于ucos操作系统的LED闪烁.串口通信简单例程 * 内容简述: 本例程操作系统采用ucos2.86a版本, 建立了7个任务 任务名 ...
- led闪烁(时序输入输出,自定义变量,时钟仿真,执行顺序)
1.设计定义 设计一个以200ms亮,200ms暗交替闪烁的led灯,并且有一个复位按钮可以停止工作. 2.设计输入 2.1端口 以固定周期交替闪烁说明由时钟控制,需要一个时钟控制端口clk,要求复位 ...
- [ZigBee] 16、Zigbee协议栈应用(二)——基于OSAL的无线控制LED闪烁分析(下)
说在前面:上一篇介绍了无线LED闪烁实现的OSAL部分,本篇介绍如何实现无线数据收发及数据处理: 上一篇是用SI跟着流程查看源码,我个人认为以架构的思维去了解代码能让人更清晰 ::ZMain.c程序入 ...
- [stm32][ucos] 1、基于ucos操作系统的LED闪烁、串口通信简单例程
* 内容简述: 本例程操作系统采用ucos2.86a版本, 建立了5个任务 任务名 优先级 ...
- uC/OS-III学习2::uC/OS-III LED闪烁实验
1 前言: 看完了uC/OS-III的基本介绍之后,大致对这个操作系统有了点了解,但真正的理解还是要通过不断的去使用,在使用中体验uC/OS-III的乐趣和更深的理解其工作原理是非常重要的.因此,我在 ...
- 用定时器T0查询方式P0口8位控制LED闪烁
#include<reg52.h> #define uchar unsigned char #define uint unsigned int void main (void) { uch ...
- Arduino入门笔记(3):单LED闪烁
转载请注明:@小五义http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 在搭建好arduino开发环境(http://www.cnblogs.com/xi ...
- CC2640R2F&TI-RTOS 拿到 TI CC2640R2F 开发板 第四件事就是 修改第三件事信号量超时改为 事件 超时,并增加 事件控制 ,用于控制LED 闪烁时间或者关闭
/* * data_process.c * * Created on: 2018年7月5日 * Author: admin */ #include "board_led.h" #i ...
随机推荐
- 字符编码和Python代码操作文件
字符编码和Python代码操作文件 读写模式之a模式 # a模式 只追加模式 # 路径不存在:自动创建 with open(r'a.txt','a',encoding='utf8') as f: pa ...
- Solution -「JOISC 2021」古老的机器
\(\mathcal{Description}\) Link. 这是一道通信题. 对于长度为一个 \(n\),仅包含字符 X, Y, Z 的字符串 \(s\),将其中 \(n\) 个字符按 ...
- Solution -「洛谷 P6158」封锁
\(\mathcal{Description}\) Link. 给定一个 \(n\times n\) 的格点图,横纵相邻的两格点有一条边权为二元组 \((w,e)\) 的边.求对于 \(S=( ...
- linux下gdb如何处理coredump错误
linux下gdb如何处理coredump错误 在编写C++程序中,我们经常会遇到一种错误,segment fault, 这种coredump错误 会导致程序运行时异常退出或者终止,这种错误没有明显错 ...
- suse 12 双网卡bonding模式
文章目录 工欲善其事,必先配静态ip 网卡bonding eth0 eth1 192.168.70.52 192.168.70.55 工欲善其事,必先配静态ip 重要的事情说三遍 修改配置之前,先备份 ...
- Smartbi:用Excel制作移动端的九型人格测试
九型人格是一个近年来倍受美国斯坦福大学等国际著名大学MBA学员推崇并成为现今最热门的课程之一,近十几年来已风行欧美学术界及工商界.全球500强企业的管理阶层均有研习九型性格,并以此培训员工,建立团队 ...
- SQL SERVER 学习过程(一)
还记得以前在学校的学习过数据库SQL SERVER 2008 R2 的教程,从学校毕业出来后的哪家单位基本没怎么使用过数据库,现在也忘得差不多了 做些相关的练习熟悉熟悉 --创建数据库-- creat ...
- omnet++:官方文档翻译总结(二)
这一部分是官方案例介绍 1.Introduction 学习自:Introduction - OMNeT++ Technical Articles 本教程是基于Tictoc的仿真案例,这些案例我们可以在 ...
- Pycharm:运行程序后显示各种变量的数据栏
右边这个数据栏的显示 在Edit Configurations中勾选Run With Python Console 如果想隐藏:
- Chrome:F12开发者模式下console不打印信息
控制台不打印信息的解决方法 你要看看你是否在之前进行过查找关键字操作,操作之后忘记删去这个关键字,导致console中只会留下对于该关键字的查询结果.
