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 ...
随机推荐
- Elasticsearch笔记2
1 搜索所有文档中还有某个字段的方法: localhost:9200/get-together/group/_search?pretty { "query": { "qu ...
- 北京太速科技-6U VPX 6槽 Full Mesh结构背板机箱
一.产品概述 Ori6UVPX6SlotFullMesh264背板机箱 为 6U VPX 6槽 Full Mesh结构,用于实现PCIE.RapidIO IO 4X Full Mesh 高速数据互联, ...
- Solution -「多校联训」神
\(\mathcal{Description}\) Link. 给定 \(n\) 阶排列 \(a\),\(q\) 次询问,每次给出 \(1\le l_1\le r_1<l_2\le r_ ...
- 我们一起来学Shell - shell的并发及并发控制
文章目录 bash的并发 未使用并发的脚本 简单修改 使用wait命令 控制并发进程的数量 文件描述符 查看当前进程打开的文件 自定义当前进程用描述符号操作文件 管道 我们一起来学Shell - 初识 ...
- Jenkins项目迁移JOB
Jenkins项目迁移JOB:从旧的迁移到新的Jenkins上 北京介绍 今天由于迁移Jenkins服务器,需要完全拷贝Jenkins里的Job. 经实验,直接在服务器上移动Jobs目录下的文件即可. ...
- k8s-cka考试题库
本次测试的所有问题都必须在指定的cluster配置环境中完成.为尽量减少切换,系统已对问题进行分组,同一cluster内的所有问题将连续显示. 开启TAB补全 做题前先配置k8s自动补齐功能,否则无法 ...
- 当gitlab的数据库坏了,或者其他的组件坏了,修复教程。
一般企业的gitlab都承载着多个项目的源码和提交记录 如果gitlab的数据库 PostgreSQL 坏掉了,基本很难修复,那这是不是意味着源码丢失了呢. 本文章只针对 gitlab传统存储方式的修 ...
- [题解]UVA10026 Shoemaker's Problem
链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&am ...
- 深度学习分类问题中accuracy等评价指标的理解
在处理深度学习分类问题时,会用到一些评价指标,如accuracy(准确率)等.刚开始接触时会感觉有点多有点绕,不太好理解.本文写出我的理解,同时以语音唤醒(唤醒词识别)来举例,希望能加深理解这些指标. ...
- Java刷题时常用的标准库数据结构和相应算法
目录 一.线性表(广义的数组) 1. 数组 一维数组的定义和初始化 二维数组的定义和初始化 Arrays工具类的一些常用方法 2. List接口容器 对象的构建 读写和插入删除数据 排序 反转数组 二 ...