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 ...
随机推荐
- 详解Spring DI循环依赖实现机制
一个对象引用另一个对象递归注入属性即可实现后续的实例化,同时如果两个或者两个以上的 Bean 互相持有对⽅,最终形成闭环即所谓的循环依赖怎么实现呢属性的互相注入呢? Spring bean生命周期具体 ...
- Node 模块规范鏖战:难以相容的 CJS 与 ESM
自 13.2.0 版本开始,Node.js 在保留了 CommonJS(CJS)语法的前提下,新增了对 ES Modules(ESM)语法的支持. 天下苦 CJS 久已,Node 逐渐拥抱新标准的规划 ...
- LibOpenCM3(五) 基础功能: 系统时钟, GPIO, 定时器
目录 LibOpenCM3(一) Linux下命令行开发环境配置 LibOpenCM3(二) 项目模板 Makefile分析 LibOpenCM3(三) .ld文件(连接器脚本)和startup代码说 ...
- Go的优雅终止姿势
最近优化了一版程序:用到了golang的优雅退出机制. 程序使用etcd的election sdk做高可用选主,需要在节点意外下线的时候,主动去etcd卸任(删除10s租约), 否则已经下线的节点还会 ...
- 『德不孤』Pytest框架 — 4、Pytest跳过测试用例
目录 1.无条件跳过skip 2.有条件跳过skipif 3.练习 自动化测试执行过程中,我们常常出现这种情况:因为功能阻塞,未实现或者环境有问题等等原因,一些用例执行不了, 如果我们注释掉或删除掉这 ...
- demo_2_27
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <string.h> int count_bit_one ...
- [自动化]基于kolla部署的openstack自动化巡检生成xlsx报告
自动化巡检介绍 此巡检项目在kolla-ansible部署的openstack环境上开发,利用ansible-playbook编排的功能,对巡检的任务进行编排和数据处理.主要巡检的对象有IaaS平台和 ...
- 浅谈C#字符串构建利器StringBuilder
前言 在日常的开发中StringBuilder大家肯定都有用过,甚至用的很多.毕竟大家都知道一个不成文的规范,当需要高频的大量的构建字符串的时候StringBuilder的性能是要高于直接对字符串进行 ...
- [题解]Mail.Ru Cup 2018 Round 1 - B. Appending Mex
[题目] B. Appending Mex [描述] Ildar定义了一种方法,可以由一个数组产生一个数.具体地,从这个数组中任选一个子集,不在这个子集中的最小的非负整数称为mex,就是由这个数组得到 ...
- virtualenv 创建隔离工作环境
在开发 Python 应用程序的时候,每个项目所需要的python版本和各种包依赖都可能不完全一样,我们当然希望当前运行环境只包含对当前项目有用的包依赖,以保证运行环境的干净.virtualenv就是 ...
