VHDL花样彩灯 实验报告_第1页
VHDL花样彩灯 实验报告_第2页
VHDL花样彩灯 实验报告_第3页
VHDL花样彩灯 实验报告_第4页
VHDL花样彩灯 实验报告_第5页
已阅读5页,还剩9页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

可编程逻辑器件应用项目报告书项目名称:花样彩灯指导老师:姓名:学号:班级:广东水利电力职业技术学院(以后写报告要包含以下一些内容:)一、设计要求--------------------------------------------------------------------------------二、设计目的--------------------------------------------------------------------------------三、设计方案--------------------------------------------------------------------------------四、设计程序---------------------------------------------------------------------------------五、管脚分配---------------------------------------------------------------------------------六、硬件下载实现现象描述------------------------------------------七、体会、对设计工作的总结与展-------------------------------------------一、设计要求:要求设计一个8路彩灯控制器,能控制8路彩灯按照两种节拍、三种花型循环变化。两种节拍分别为0.25s和0.5s。三种花型分别是:8路彩灯从左至右按次序渐亮,全亮后逆次序渐灭。从中间到两边对称的渐亮,全亮后仍由中间向两边逐次渐灭。8路彩灯分成两半,从左至右顺次渐亮,全亮后则全灭。二、设计方案:(1)、采用状态机的方式,用点阵在硬件上实现各种花形彩灯,并使用复位键(2)、用0.25s和0.5s两种频率的选择,并采用按键控制输出(3)、对于点阵的扫描是采用了1s三、程序语言:LIBRARYIEEE;USEIEEE.std_logic_1164.ALL;USEIEEE.std_logic_ARITH.ALL;USEIEEE.std_logic_UNSIGNED.ALL;----------------------------------------------------ENTITYcaidengISport(clk,rst:INstd_logic;---------------12--------------aj:instd_logic;-------------频率选择30Light:outstd_logic_vector(7downto0);------点阵列-----(82-73)hang:outstd_logic_vector(7downto0)-------------(90-83));endcaideng;architectureoneofcaidengistypestatesis(s0,s1,s2,s3,s4);------表示状态------signalstate:states;signalclk_hz,clk_1s:std_logic:='0';signalcnt1:std_logic_vector(3downto0):="0000";signalcnt2:std_logic_vector(2downto0):="000";signalcnt3:std_logic_vector(2downto0):="000";signalcnt4:std_logic_vector(2downto0):="000";signalcnt5:std_logic_vector(3downto0):="0000";BEGINhang<="11111111";--------------------频率选择----------------- process(clk)variablecnt1:integerrange0to6250000;------------4hz即0.25svariablecnt2:integerrange0to12500000;------------2hz即0.5sbegin ifclk'eventandclk='1'thencaseajis--------------------拨码按键控制2种频率的输出when'0'=> ifcnt1=6250000then cnt1:=0; clk_hz<=notclk_hz; else cnt1:=cnt1+1; endif;when'1'=>ifcnt2=12500000then cnt2:=0; clk_hz<=notclk_hz; else cnt2:=cnt2+1; endif; whenothers=>null;endcase;endif; endprocess; --------------------------------------------------------- process(clk)variablecnt1:integerrange0to20000;variablecnt2:integerrange0to10000;beginifclk'eventandclk='1'thenifcnt1=20000thencnt1:=0;ifcnt2=10000thencnt2:=0;clk_1s<=notclk_1s; else cnt2:=cnt2+1; endif; else cnt1:=cnt1+1;endif;endif;endprocess; process(rst,clk_hz) begin if(rst='0')then state<=s0; elsif(clk_1s'EVENTANDclk_1s='1')then casestateis whens0=>state<=s1; whens1=>state<=s2; whens2=>state<=s3; whens3=>state<=s4; whens4=>state<=s0; endcase; endif; endprocess; ---------------------------------------------------------- process(state,clk_hz)beginifrst='0' thenlight<="00000000";elseif(clk_hz'EVENTANDclk_hz='1')thencasestateiswhens0=> ifcnt1="1111"then cnt1<="0000"; else cnt1<=cnt1+1; endif;casecnt1is when"0000"=>light<="01111111"; when"0001"=>light<="00111111"; when"0010"=>light<="00011111"; when"0011"=>light<="00001111"; when"0100"=>light<="00000111"; when"0101"=>light<="00000011"; when"0110"=>light<="00000001"; when"0111"=>light<="00000000"; when"1000"=>light<="00000000"; when"1001"=>light<="00000001"; when"1010"=>light<="00000011"; when"1011"=>light<="00000111"; when"1100"=>light<="00001111"; when"1101"=>light<="00011111"; when"1110"=>light<="00111111"; whenothers=>light<="01111111";endcase;whens1=> ifcnt2="111"thencnt2<="000"; elsecnt2<=cnt2+1; endif; casecnt2is when"000"=>light<="11100111"; when"001"=>light<="11000011"; when"010"=>light<="10000001"; when"011"=>light<="00000000"; when"100"=>light<="00000000"; when"101"=>light<="10000001"; when"110"=>light<="11000011"; whenothers=>light<="11100111"; endcase;whens2=> ifcnt3="111"then cnt3<="000"; elsecnt3<=cnt3+1; endif; casecnt3is when"000"=>light<="01110111"; when"001"=>light<="00110011"; when"010"=>light<="00010001"; when"011"=>light<="00000000"; when"100"=>light<="10000001"; when"101"=>light<="11000011"; when"110"=>light<="11100111"; when"111"=>light<="11111111"; whenothers=>light<="00000000"; endcase;whens3=> ifcnt4="100"then cnt4<="000"; elsecnt4<=cnt4+1; endif;casecnt4is when"000"=>light<="01110111"; when"001"=>light<="00110011"; when"010"=>light<="00010001"; when"011"=>light<="00000000"; when"100"=>light<="11111111"; whenothers=>light<="00000000";endcase; whens4=> ifcnt5="1111"then cnt5<="0000"; elsecnt5<=cnt5+1; endif; casecnt5is when"0000"=>light<="10000000"; when"0001"=>light<="01000000"; when"0010"=>light<="00100000"; when"0011"=>light<="00010000"; when"0100"=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论