10位LED彩灯设计(verilog实现)
本实验要实现的工程,旨在通过控制10位LED灯闪出不同的三种以上的花色。具体要求为:上电后,LED灯首先全灭,然后自动开始闪烁,完成设计的三种(或以上)花色后,又回到初始状态重新开始新一轮的闪烁。要求闪烁的频率为1s,可以增加频率可调的功能。
设计思路:由于10位LED灯要闪出3种及以上颜色,并且闪烁的频率为1s,并且频率可调。由此设计了3个计数器,计数器cnt0用于计数1s,cnt1用于控制频率可调,cnt3用于计数3种颜色。
设计代码:
module com_experiment(clk,rst_n,led,x //改变频率
);input clk;
input rst_n;
input x;
output led;parameter COUNTER=50;//计数1秒需要计数50_000_000次,因为仿真时间过长改为计数50次
reg [25:0] cnt0 ;
wire add_cnt0 ;
wire end_cnt0 ;
reg [1:0] cnt1 ;
wire add_cnt1 ;
wire end_cnt1 ;
reg [2:0] cnt2 ;
wire add_cnt2 ;
wire end_cnt2 ;
reg [9:0] led ;
wire [1:0] x ;//计数1秒
always@(posedge clk or negedge rst_n) begin
if(!rst_n) begincnt0<=0;end
else if(add_cnt0) beginif(end_cnt0)cnt0<=0;elsecnt0<=cnt0+1;end
endassign add_cnt0=1;
assign end_cnt0=add_cnt0&&cnt0==COUNTER-1;//控制闪烁的频率
always@(posedge clk or negedge rst_n) begin
if(!rst_n) begincnt1<=0;end
else if(add_cnt1) beginif(end_cnt1)cnt1<=0;elsecnt1<=cnt1+1;end
endassign add_cnt1=end_cnt0;
assign end_cnt1=add_cnt1&&cnt1==x-1;//计数3次,每次闪烁一种颜色
always@(posedge clk or negedge rst_n) begin
if(!rst_n) begincnt2<=0;end
else if(add_cnt2) beginif(end_cnt2)cnt2<=0;elsecnt2<=cnt2+1;end
endassign add_cnt2=end_cnt1;
assign end_cnt2=add_cnt2&&cnt2==3-1;//控制三种颜色的闪烁
always@(posedge clk or negedge rst_n) begin
if(rst_n==1'b0) beginled<=10'b0000000000;//当满足此条件时,全灭end
else if(add_cnt2 && cnt2==1-1) beginled<=10'b0000000111;//当满足此条件时,前3个灯闪烁,第一种颜色end
else if(add_cnt2 && cnt2==2-1) beginled<=10'b0001111000;//当满足此条件时,中4个灯闪烁,第二种颜色end
else if(add_cnt2 && cnt2==3-1) beginled<=10'b1110000000;//当满足此条件时,后3个灯闪烁,第三种颜色end
endendmodule
仿真代码:
`timescale 1 ns/ 1 ns
module com_experiment_vlg_tst();parameter CYCLE=20;
reg clk;
reg rst_n;
reg [1:0] x;
wire [9:0] led;com_experiment i1 ( .clk(clk),.led(led),.rst_n(rst_n),.x(x)
);initial beginclk=0;forever#(CYCLE/2)beginclk=~clk;end
endinitial beginx=1;#200;forever beginx=1;#600;x=2;#1200;x=3;#1800;end
endinitial begin#1;rst_n=0;#(CYCLE*10);rst_n=1;
endendmodule
仿真波形
上板
LEDG5~LEDG7显示的为一种颜色,LEDR6~LEDR9为第二种颜色,LEDR14~LEDR16为第三种颜色
10位LED彩灯设计(verilog实现)相关推荐
- 采用外中断控制的条形LED彩灯设计
一.目标 P0端口作为输出口,外接条形LED.编写程序,当按键K未按下时,LED进行循环左移显示. 如果第一次按下按键K后,LED进行循环右移显示. 如果第二次按下按键K后,LED进行拉幕式闭幕式花样 ...
- 采用外中断控制的LED彩灯设计
一.目标 P0端口作为输出口,外接LED.编写程序,当按键K未按下时,LED进行循环左移显示. 如果第一次按下按键K后,LED进行循环右移显示. 如果第二次按下按键K后,LED进行拉幕式闭幕式花样显示 ...
- 彩灯控制单片c语言程序,基于51单片机的led彩灯设计。 9个灯(红绿蓝三色)。按键控制 c语言程序...
满意答案 yivdi2o28 2014.05.15 采纳率:46% 等级:11 已帮助:4795人 #include<reg52.h> #define uint unsigned i ...
- 基于51单片机——八路彩灯设计
1.protues中绘制如下电路图 2.使用Keil4软件编写程序,将编写好的程序编译生成一个hex文件,将hex文件加载到protues中的AT89C51芯片中,对电路图进行仿真运行,即可以查看Ke ...
- 数字系统设计实验六:用verilog实现4位led译码器电路
1.问题重述: 用Verilog HDL设计一个4位LED显示器的动态扫描译码电路.要求:4个七段显示器共用一个译码驱动电路. 2.问题分析: a.首先是,我们需要明确的是什么是动态扫描译码电路.译码 ...
- 基于51单片机的51单片机的LED彩灯霓虹灯控制器(心形流水灯)设计
基于51单片机的51单片机的LED彩灯霓虹灯控制器(心形流水灯)设计 必看!!视频讲解 基于51单片机的LED彩灯霓虹灯心形流水灯设计 这里写目录标题 1 开发环境 2 功能说明介绍 3 仿真图 4 ...
- 单片机彩灯c语言程序设计,(定稿)毕业论文基于AT89C51单片机的LED彩灯控制器设计(完整版)...
<[毕业论文]基于AT89C51单片机的LED彩灯控制器设计.doc>由会员分享,可免费在线阅读全文,更多与<(定稿)毕业论文基于AT89C51单片机的LED彩灯控制器设计(完整版) ...
- LED彩灯控制器设计 51单片机 流水灯 PROTEUS 仿真
课程设计题四:LED彩灯控制器设计 要求: 1.至少10个发光管4种花样自动变换,循环往复. 2.彩灯花样变换的快慢节拍可以手动和自动方式控制,手动控制按钮按一次转换一次:自动控制方式每15秒变换一次 ...
- c语言中定义密码为英文字母,请设计 一个密码生成器,要求随机生成4组10位密码(C语言)...
请设计 一个密码生成器,要求随机生成4组10位密码(密码只能由字母和数字组成),每一组必须包含至少一个大写字母,每组密码不能相同,输出生成的密码. #include #include #include ...
最新文章
- ubuntu16.04系统下安装fasttext文本分类库
- PostSharp AOP编程:3.PostSharp的LocationInterceptionAspect类基本组成
- 我们用Windows官方跑了跑Linux GUI应用程序,不愧是“胶水操作系统”
- fasttext简单理解及应用
- java 静态变量生命周期(类生命周期)
- 简明Linux命令行笔记:finger
- phpcms文件所需权限
- excel批量更改超链接_批量新建Excel指定名称工作表并设置超链接!你,学会了吗?...
- 【转】asp仿百度文库、豆丁doc转换(flashpaper)
- be2014备份oracle,veritas be 对oracle10g 备份异机恢复测试
- oraclize预言机资料
- jsjavaScriptDate的时间格式转换,直接粘贴就可以使用
- SpringCloud之Ribbon源码分析(二)
- 中文汉化AE插件-图层边界自动填充生长动画插件
- html5使用框架页面布局,HTML框架集与布局
- Mac IntelliJIDEA非正常关闭解决(reopen失败)
- CRISPR-Cas9实验常见问题及解决方案
- Rainbow Fart安装及设置其他语音包
- MATLAB函数合辑
- 计算机网络设备调试员报名,工信部网络设备调试员一级高级技师、二级技师