led流水灯

这篇具有很好参考价值的文章主要介绍了led流水灯。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

  本章将讲解流水灯的制作,在Cyclone IV开发板上依次点亮四个led灯,并以一定间隔亮灭,达到流水灯的效果。


一、什么是led灯?


led流水灯,笔记,FPGA学习,单片机,硬件工程,fpga,verilog,fpga开发

图1. DIP发光二极管(直插型)

led流水灯,笔记,FPGA学习,单片机,硬件工程,fpga,verilog,fpga开发

图2. SMD发光二极管(贴片型)

  LED灯就是发光二极管,二极管功能很多,在本实验中我们暂且将其看作是一个开关。二极管在正向电压作用下电阻很小,处于导通状态,相当于一只接通的开关;在反向电压作用下,电阻很大,处于截止状态,如同一只断开的开关。发光二极管在导通的时候发光,在没有导通的时候不发光。发光二极管有点像我们初中做的物理实验。单向开关串联一个灯泡,开关闭合的时候,电流流过灯泡,灯泡发光。开关断开的时候,灯泡也就不亮了。

二、Cyclone IV开发板


led流水灯,笔记,FPGA学习,单片机,硬件工程,fpga,verilog,fpga开发

图3. Cyclone IV开发板

  在六位数码管右下方对应的就是四个led灯,在板卡上标注为LED0、LED1、LED2、LED3。

led流水灯,笔记,FPGA学习,单片机,硬件工程,fpga,verilog,fpga开发

图4. led在开发板上的原理图

  四个led灯共阴极接地,所以需要高电平导通led灯。

三,流水灯模块设计

led流水灯,笔记,FPGA学习,单片机,硬件工程,fpga,verilog,fpga开发

图5. 流水灯模块示意图

led流水灯,笔记,FPGA学习,单片机,硬件工程,fpga,verilog,fpga开发

图6. led位宽

  模块描述:输入信号分别为时钟信号和复位信号,设计一个计时器。每0.2s改变四个led的状态,同一时刻下只能有一只led亮,其余的led灭。最后通过移位寄存器输出信号给四个led灯。
   注意:在基于FPGA的点亮led灯的实验中,已经讲解了项目的建立。所以本章中跳过建立项目的环节,直接上代码。Don't talk too much, show you the code!

四,工程代码

module 	led_test(
	input 	wire 		clk	 ,//50MHz
	input 	wire 	 	rst_n,//reset negetive复位信号下降沿有效
	
	output 	reg [3:0]	led //4个led灯
);


reg [25:0]	cnt;//计数器,计数0.2sx4=0.8s,10_000_000x4=40_000_000

//计数器模块
always@(posedge clk or negedge rst_n)begin
	if(!rst_n)begin
		cnt <= 26'd0;//复位的时候,计数器从0开始计数
	end 
	else if(cnt == 40_000_000 - 1)begin//从0开始计数,所以只记到39_999_999
		cnt <= 26'd0;
	end 
	else begin
		cnt = cnt + 1'd1;
	end 
end 

always@(posedge clk or negedge rst_n)begin
	if(!rst_n)begin
		led <= 4'b0000;//led灯高电平有效,低电平无效,1亮0不亮
	end 
	else if(cnt == 10_000_000 -1 )begin//0.2s时亮右边第一个led灯  
		led <= 4'b0001;
	end
	else if(cnt == 20_000_000 -1 )begin//0.4s时亮右边第二个led灯  
		led <= 4'b0010;
	end
	else if(cnt == 30_000_000 -1 )begin//0.6s时亮右边第三个led灯  
		led <= 4'b0100;
	end
	else if(cnt == 40_000_000 -1 )begin//0.8s时亮右边第四个led灯  
		led <= 4'b1000;
	end
	else begin
		led <= led;//否则让led为当前状态,可以不写
	end 
end 
endmodule 

  在fpga中,除了编写程序,还有很重要的环节—仿真,不管是功能仿真或者是时序仿真,都是必不可少的。有做软件的同学,来到fpga就要转换之前show me the code的观念,还有simulation。


五、功能仿真

`timescale 1ns/1ns//单位/精度
module 	led_test_tb();

reg 		clk  ;//时钟信号
reg 		rst_n;//复位信号

wire [3:0] 	led  ;//4个led灯
always #10 clk = ~clk;//每10ns翻转一次时钟信号

initial begin
	clk       = 0;//初始化时钟信号为0
	rst_n 	  = 0;//初始化复位信号为0
	#10 rst_n = 1;//10ns后将复位信号置1
	#1000 $stop;//1000ns后停止,可以观看4个led灯的信号
end 

led_test	u_led_test(//实例化
.clk	(clk)  ,//50MHz
.rst_n	(rst_n),//reset negetive复位信号下降沿有效

.led 	(led)//4个led灯
);
endmodule 

  注意:仿真的时候,将间隔0.2s改小,这样我们才能在1000ns内看到四个led灯的变化。


六、modelsim

led流水灯,笔记,FPGA学习,单片机,硬件工程,fpga,verilog,fpga开发

图7. 设置测试文件

led流水灯,笔记,FPGA学习,单片机,硬件工程,fpga,verilog,fpga开发

图8. 选择测试文件面板

led流水灯,笔记,FPGA学习,单片机,硬件工程,fpga,verilog,fpga开发

图9. 添加测试文件面板

led流水灯,笔记,FPGA学习,单片机,硬件工程,fpga,verilog,fpga开发

图10. 测试文件设置面板

led流水灯,笔记,FPGA学习,单片机,硬件工程,fpga,verilog,fpga开发

图11. 打开仿真

led流水灯,笔记,FPGA学习,单片机,硬件工程,fpga,verilog,fpga开发

图12. 仿真结果

七,引脚分配

led流水灯,笔记,FPGA学习,单片机,硬件工程,fpga,verilog,fpga开发

图13. 引脚分配图

元件 管脚
LED0 G15
LED1 F16
LED2 F15
LED3 D16
KEY0 E15
KEY1 E16
KEY2 M16
KEY3 M15
CLOCK(时钟) E1
表1. 引脚信息表

八,运行效果

流水灯文章来源地址https://www.toymoban.com/news/detail-537699.html


总结

  以上就是今天要讲的内容,本文介绍了流水灯的设计,在下一期课程中,将会增加按键信号,制作更为复杂的按键控制led灯。由于仿真不是本章节的重点,所以只演示仿真的过程,没有细讲,这并不代表仿真不重要。后期的作品会出一期单独讲解仿真的课程(功能仿真和时序仿真)。提醒:后期作品以实验名称命名。敬请期待,谢谢观看。

到了这里,关于led流水灯的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA学习分享--01 led流水灯的实现

    需求 : 博宸电子的ZYNQ7020DEV开发板 Vivado 2018.3 一定的verilog语言基础 博主目前学习的是 博宸电子的ZYNQ7020DEV开发板 ,下面是关于本次分享led流水灯的原理图 图1 涉及本次led流水灯的电路 首先,从图1来看,每个led端口都和一个阻值为4.7k的电阻和一个发光二极管相连,并且发光

    2024年02月04日
    浏览(39)
  • 51汇编单片机学习(三)八路流水灯

    流水灯主要是在小灯闪烁的基础上对小灯进行移动 八路流水则为赋值一组引脚并对引脚进行定义,在上一篇文章我们能知道当引脚置1时为高电平,此时小灯不亮,引脚置0时,低电平,小灯亮,所以可知在一组引脚中,可设置小灯初始位置从“01111111”开始亮起,而十六进制

    2024年02月07日
    浏览(53)
  • FPGA学习——按键控制LED流水灯(附源码 无按键消抖版本)

    在博主的cyclone4开发板上一共有4个按键,本次实验的目的是为了实现每按下一次按键,都会使开发板上的4个LED灯切换一次状态,博主一共设计了四种状态,分别是: 按键 状态 按键1按下 自右向左的流水灯 按键2按下 自左向右的流水灯 按键3按下 四灯常亮 按键4按下 四灯闪烁

    2024年02月06日
    浏览(47)
  • 51单片机学习--按键控制流水灯模式&定时器时钟

    TMOD负责确定T0和T1的工作模式,TCON控制T0和T1的启动或停止计数,同时包含定时器状态 TF1:定时器1溢出标志 TF0:定时器0溢出标志 0~65535 每隔1微秒计数器+1,总时间65535微秒,赋上初值64535,则只有1000微秒即1毫秒 首先配置TMOD 所以初始化TMOD = 0x01; //0000 0001 整体操作:TMOD = TM

    2024年02月14日
    浏览(46)
  • 【STM32】STM32学习笔记-LED闪烁 LED流水灯 蜂鸣器(06-2)

    电路图示例1 电路图示例2 main.c 接线图如下图所示: 点击下载,现象为LED闪烁。 main.c main.c stm32F103工程模板 01-LED闪烁.rar 02-LED流水灯.rar 03-蜂鸣器示例程序.rar 参考: 【STM32】江科大STM32学习笔记汇总

    2024年03月19日
    浏览(59)
  • FPGA入门————LED流水灯(超详细教程)

    本文使用软件为vivado,其实用哪个软件都是一样的,主要是掌握核心编程思想。 如有需要下载vivado软件下载可以参考: vivado及ISE各版本软件下载方法、链接及详细步骤,官方网页下载_ise软件下载_千寻xun的博客-CSDN博客 目录 一、新建工程及设计文件 二、编写LED流水灯程序

    2024年02月08日
    浏览(43)
  • 【单片机】06流水灯

    上次课布置的流水灯实验,硬件上我们用8根导线分别将P1口的第0脚接到第0个灯,第1脚接到第1个灯,以此类推,直到将第7脚接到第7个灯上。软件上相信大家能想到的最简单的办法是先将第0个灯点亮,延时,再将1个灯点亮,再延时,依次类推直到将第7个灯点亮,延时,再将

    2024年02月08日
    浏览(48)
  • 【51单片机】:闪灯、流水灯(从左往右)、流水灯(从右往左)、蜂鸣器。

            言归正传,一切都回归本源,从51再来一次,首先就是最简单的点灯大师。         这么些年从51 到  32  再到  arduino  再到  ESP  等等,都是从点灯大师开始的。 于是介绍如下: 闪灯 流水灯(从左往右) 流水灯(从右往左) 蜂鸣器         LED灯的原理:LED是发

    2024年02月11日
    浏览(53)
  • 51单片机实现流水灯

    我们之前说过可以控制管脚口电平来控制LED的亮灭,低电平灯亮,高电平灯灭,具体可以看我之前的博客。 P20~P27可以用八位二进制数来表示每一位的电平,第八位是P20,第一位是P27,那么11111110就代表P20亮,其他灭,11101111就代表P24亮,其他灭。流水灯的代码就可以写成这样

    2024年02月11日
    浏览(47)
  • 51单片机入门流水灯

    上次已经实现了LED的点亮了,这篇文章将带大家实现流水灯。 要想实现流水灯首先就得知道什么是延时函数,延时函数的作用就是等待。比如延时一毫秒就是让程序在这里等待一毫秒。延时函数的本质就是执行一些空指令,因为执行指令需要耗费时间,所以执行一定数量的空

    2024年02月04日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包