• 这是原始代码时钟信号为50MHz
module breathe_led(input clk,      // 时钟信号input rst,     // 复位信号output led);// reg definereg [15:0] period_cnt; // 周期计数器 1khz = 1ms 1_000_000ns / 20ns(50mhz) = 50_000(16位二进制)reg [15:0] duty_cycle; // 设置高电平占空比的计数点reg inc_dec_flag;   // 用于表示高电平占空比的计数值,是递增还是递减// 为1时表示占空比递减,为0时表示占空比递增// 将周期信号计数值与占空比计数值进行比较,以输出驱动led的PWM信号assign led = (period_cnt <= duty_cycle) ? 1'b1 : 1'b0;// 周期信号计数器在0-50_000之间计数always @(posedge clk or posedge rst) beginif(rst)period_cnt <= 16'd0;else if(period_cnt == 16'd50_000)period_cnt <= 16'd0;elseperiod_cnt <= period_cnt + 16'd1;end// 设置高电平占空比的数always @(posedge clk or negedge rst) beginif(rst == 1'b1) beginduty_cycle <= 16'd0;inc_dec_flag <= 1'b0;end// 每次计数完一个周期,就调节占空比计数值else if(period_cnt == 16'd50_000) beginif(inc_dec_flag) begin // 为1占空比递减if(duty_cycle == 16'd0)inc_dec_flag <= 1'b0;else duty_cycle <= duty_cycle - 16'd25;endelse begin // 占空比递增if(duty_cycle == 16'd50_000)inc_dec_flag <= 1'b1;elseduty_cycle <= duty_cycle + 16'd25;endendelse // 未计数完一个周期,占空比保持不变duty_cycle <= duty_cycle;end
endmodule
  • 管脚约束文件
set_property IOSTANDARD LVCMOS33 [get_ports led]
set_property PACKAGE_PIN U14 [get_ports led]set_property IOSTANDARD LVCMOS33 [get_ports rst]
set_property PACKAGE_PIN P16 [get_ports rst]set_property IOSTANDARD LVCMOS33 [get_ports clk]
set_property PACKAGE_PIN Y9 [get_ports clk]

  • 修改为时钟信号为100MHz,可以看到视频里呼吸灯变慢了
module breathe_led(input clk,      // 时钟信号input rst,     // 复位信号output led);// reg definereg [16:0] period_cnt; // 周期计数器 1khz = 1ms 1_000_000ns / 10ns(100mhz) = 100_000(17位二进制)reg [16:0] duty_cycle; // 设置高电平占空比的计数点reg inc_dec_flag;   // 用于表示高电平占空比的计数值,是递增还是递减// 为1时表示占空比递减,为0时表示占空比递增// 将周期信号计数值与占空比计数值进行比较,以输出驱动led的PWM信号assign led = (period_cnt <= duty_cycle) ? 1'b1 : 1'b0;// 周期信号计数器在0-100_000之间计数always @(posedge clk or posedge rst) beginif(rst)period_cnt <= 17'd0;else if(period_cnt == 17'd100_000)period_cnt <= 17'd0;elseperiod_cnt <= period_cnt + 17'd1;end// 设置高电平占空比的数always @(posedge clk or negedge rst) beginif(rst == 1'b1) beginduty_cycle <= 17'd0;inc_dec_flag <= 1'b0;end// 每次计数完一个周期,就调节占空比计数值else if(period_cnt == 17'd100_000) beginif(inc_dec_flag) begin // 为1占空比递减if(duty_cycle == 17'd0)inc_dec_flag <= 1'b0;else duty_cycle <= duty_cycle - 17'd25;endelse begin // 占空比递增if(duty_cycle == 17'd100_000)inc_dec_flag <= 1'b1;elseduty_cycle <= duty_cycle + 17'd25;endendelse // 未计数完一个周期,占空比保持不变duty_cycle <= duty_cycle;end
endmodule
  • 位宽17位,定义为[16:0]

zedboard板子上呼吸灯的实现(第一版)相关推荐

  1. zedboard板子上呼吸灯的实现(第一版)仿真代码的实现

    为了便于仿真的实现,定义周期数值period_cnt缩小为50,每次改变的数值duty_cycle定义为5,这两个数值本来可以定义在参数中,懒得重写代码直接修改了数值. module breathe_ ...

  2. boa 传递 数据到 html,使用html网页boa这个web服务器通过cgi控制2410板子上LED灯点亮...

    1.使用boa服务,先交叉编译~/s3c2410/boa/boa-0.94.14rc21,编译器使用 CC = /usr/local/arm/3.4.1/bin/arm-linux-gcc,然后在sr ...

  3. zedboard上呼吸灯的实现(第二版)

    根据野火的教程改编而来,端口信号时钟信号和复位信号,输出信号连接到板子上的LED灯.呼吸灯呼吸效果分为完全熄灭和完全点亮两个过程,通过控制PWM的占空比来控制灯的亮灭程度,将第一个状态完全熄灭的时间定 ...

  4. C语言开定时器做呼吸灯程序,简单的基于51单片机定时器上呼吸灯程序

    #include #define ufloat unsigned float #define uchar  unsigned char #define uint   unsigned int ucha ...

  5. 51单片机容易串电,用USB转ttl(ch340)给51单片机下载程序,接上TX,RX,板子上的灯就亮了,怎么解决?

    1 原理框架图: 2 原理图: 51单片机要冷启动下载程序,就是先点下载,然后再给单片机上电,上述的电路设计解决了在用USB转ttl为51单片机下载程序时串电的问题.

  6. 手机1像素线粗_小米1亿像素手机配置全曝光:史上最炫酷呼吸灯!

    小米官方已经定于11月5日发布首款1亿像素拍照手机--小米CC9 Pro. 据悉,小米CC9 Pro采用了一亿像素五摄四闪全焦段的配置,支持双光学防抖.10倍混合光学变焦.50倍数字变焦,拍照对标友商 ...

  7. esp8266灯上电闪一下_如何在ESP8266上实现变色呼吸灯效果?

    引言 呼吸灯最早是由苹果公司发明并应用于笔记本睡眠提示上,一经展出,立刻吸引众多科技厂商争相效仿.将其广泛用于各种电子产品中,尤其是智能手机.于是研究了一下,一起来DIY一个变色RGB呼吸灯吧.呼吸灯 ...

  8. 使用TIM3和TIM4,驱动外接LED和STM32上已焊接的LED,实现2个 LED呼吸灯的效果

    文章目录 一.PWM相关介绍 1.PWM的含义 2.PWM的基本原理 3.PWM的优点及应用范围 4.STM32上的PWM 5.PWM相关寄存器 6.PWM脉冲宽度调制 7.PWM的频率 二.实现呼吸 ...

  9. step fpga上实现呼吸灯和交通灯

    呼吸灯 呼吸灯:我们将通过脉宽调制技术来实现"呼吸灯",实现LED的亮度由最暗逐渐增加到最亮,再逐渐变暗的过程. 脉冲宽度调制.它是利用微控制器的数字输出调制实现,是对模拟电路进行 ...

最新文章

  1. centos 下安装mysql,linux(Centos7)下安装mysql8.0.18的教程图解
  2. LeetCode 93. Restore IP Addresses--面试算法题--Python解法
  3. js简单的设置快捷键,hotkeys捕获键盘键和组合键的输入
  4. PyTorch基础(12)-- torch.nn.BatchNorm2d()方法
  5. 煤粉粒度对shell气化的影响_提高水煤浆气化有效气成分的措施
  6. iOS端Mock GPS定位 —— 测试、开发、玩游戏、发朋友圈等等,你都用得上
  7. Copula函数初了解
  8. vrep小车模型搭建
  9. matlab怎么输出坐标轴,怎样将matlab图像里面的x,y坐标轴的数据输出
  10. 张爱玲的十大爱情名言
  11. 对 MMO 游戏的调研
  12. Codeforces - Serval and Rooted Tree
  13. 网迅wx1860网卡原理图驱动
  14. hgroup元素与figcaption元素的结合使用
  15. html添加视频背景
  16. C#中操作Word(6)—— 如何向Word中插入图片
  17. 如何科学有效地根治肾虚——下篇(如何有效治疗肾虚?)
  18. linux shell 中数组的定义和for循环遍历
  19. tsp matlab,TSP matlab
  20. clipper运行以及使用——轻松一刻

热门文章

  1. python直方图解释,请用Python详细解释二维直方图
  2. idea中怎么新建vue项目_项目中使用vue-awesome-swiper
  3. Express中间件(非常详细)
  4. c语言递归函数奇偶归一猜想,计算机科学视角下的奇偶归一猜想
  5. linux中用at命令5分钟后执行,我使用过的Linux命令之at - 在指定时间执行一次任务...
  6. 【java笔记】继承
  7. 【计算机组成原理笔记】计算机的基本组成
  8. Struts2 + Spring + Hibernate 通用 Service 和 DAO
  9. Helm 3 完整教程(十三):Helm 函数讲解(7)列表函数
  10. 平时上机练习的注意点(NOIP2019)