欢迎来到天天文库
浏览记录
ID:38520102
大小:97.50 KB
页数:8页
时间:2019-06-14
《多功能流水灯设计实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、多功能流水灯的设计一.设计要求:1.设计一8盏彩灯控制电路,使彩灯可以向左,向右流动、全亮、全灭四种功能。功能变换可以手控也可以自控。2.自动功能变换时间10秒。二.总体方案构思:用Verilog语言来为单片机编程,通过编程来控制单片机各引脚在不同时间输出的不同的电平,进而控制个发光二级管的亮灭,以及控制流水灯的流速和流动方向。1.使用按钮(auto)来控制手动或自动。2.因为需要向左,向右,全亮,全灭四种功能,所以需要两个开关(btn1和btn2),分别用开和关两种状态表示,即(00,01,10,11)。3.使用clk时钟来记时和触发事件。三.实验器材:电脑和LED
2、设备四.程序如下:moduleLED(clk,auto,btn1,btn2,led);inputclk;inputauto;inputbtn1;inputbtn2;outputreg[7:0]led;reg[29:0]count;//1ns的计数器reg[3:0]count_10;//10秒的计数器reg[1:0]status;//记录当前LED灯流动的情况:"00左到右,01右到左,10全亮,11全灭"reg[1:0]type;regsecond_1;//1秒的标志regsecond_10;//10秒的标志initialbeginstatus<=2'b00;type
3、<=2'b00;count<=30'b0;count_10<=4'b0;second_1<=1'b0;second_10<=1'b0;endalways@(posedgeclk)//给出1s的标志和10s的标志beginif(count<25000000)//等待1s的到来begincount<=count+1;second_1<=0;second_10<=0;endelsebegincount<=0;second_1<=1;count_10<=count_10+1;if(count_10>=4'd10)beginsecond_10<=1;endendendalway
4、s@(posedgeclk)//当自动的情况时,每10s变化一次流动状态beginif(auto==1&&second_1==1)beginif(second_10==1)beginif(status==2'b11)beginstatus<=2'b00;endelsebeginstatus<=status+1;endendendendalways@(posedgeclk)//设置总变化状态等于手动或自动的状态beginif(second_1==1)beginif(auto==1)//自动begintype<=status;endelse//手动begintype<={
5、btn1,btn2};endendendalways@(posedgeclk)//根据type设置LED灯情况beginif(second_1==1)beginif(type==00)//左到右beginif(led==8'b00000000
6、
7、led==8'b11111111)beginled<=8'b10000000;endelsebeginled<=led>>1;endendelseif(type==01)//右到左beginif(led==8'b00000000
8、
9、led==8'b11111111)beginled<=8'b00000001;endelsebe
10、ginled<=led<<1;endendelseif(type==10)//全亮beginled<=8'b11111111;endelse//全灭beginled<=8'b00000000;endendendendmodule四.测试图如下:六.个人体会:在这次实验中收货颇丰,我学会了使用简单的Verilog语言,更加深入的学习了数字逻辑,还有更多的,我学会和同学们合作,讨论,去解决问题。在本次试验中,真的是像一次惊险的旅行,困难重重,各种低级失误,语法错误和硬件知识的缺乏,但最后还是在老师的耐心指导下完成了。
此文档下载收益归作者所有