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 ...
最新文章
- 《关系营销2.0——社交网络时代的营销之道》一T表示Technology(技术)
- 多媒体指令(灰度像素最大值)
- mysql5.0 Using a password on the command line interface can be insecure.最简单的解决办法
- 使用CoreLocation进行定位(Swift版)
- GitHub率先消灭了cookies:与烦人的用户条款说再见
- linux要不要home分区,有必要建/home/boot分区吗
- angular移除事件绑定事件绑定_Vue.js子组件利用事件向父组件传输数据,以及sync修饰符和双向绑定...
- vue中的ES6语法整理1
- 地磅称重软件源码_电脑设备器件+塔吊主吊臂+撇渣管、丝杆+地磅称重传感器+极柱触头盒弯板+批式循环谷物干燥机+升降机标准节...
- hdu 1800 Flying to the Mars
- android 更新apk 应用为安装,应用未安装!从Android Studio构建安装APK时出错 - java
- Downie 4搭配Permute 3,一个完整的视频下载处理流
- 【记录】C++中的位域
- 计算机室和电子备课室管理制度,电子备课室
- Android 计时器Chronometer 使用及源码分析,常见移动app开发框架
- 如何免费下载B站视频!!!实测可用!!!
- 吴晓波:预见2021(跨年演讲 —— 02 “云上中国”初露峥嵘)
- linux系统如何改电脑地址,如何修改电脑的操作系统MAC地址
- 使用snmpwalk采集设备的OID信息
- 图形的一点透视和平移