eda彩灯设计.doc_第1页
eda彩灯设计.doc_第2页
eda彩灯设计.doc_第3页
eda彩灯设计.doc_第4页
eda彩灯设计.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

一设计目标 设计能让一排灯(8只)自动改变显示花样的控制系统。可将实验板上的一排发光二极管作为彩灯用。控制器应有两种控制方式: 规则变化。变化节拍有0.5秒和0.25秒两种,交替出现,每种节拍可有8种花样,各执行一或二个周期后轮换。 彩灯变化方向有单向移动,双向移动,跳跃移动等。如图所示。随机变化。变化花样相同,但节拍及花样的转换都随机出现。 二实现方案(包括原理框图和HDL设计流程图)原理框图: 总控制部分(通过开关k来控制灯的规则变化和随机变化)节拍控制部分(通过高低电平控制两种节拍)包含2个分频器花样控制部分(通过输出3位二进制数控制花样)是一个模8计数器Led控制部分(通过输出8个引脚控制led灯的变化)VHDL设计流程图:分频器形成4096分频形成16777216分频(通过两次4096分频)模8计数器彩灯控制器8个输出产生信号控制三设计过程1.分频器a 功能:实现4096分频且占空比为50%b功能:当clkd为1时实现512分频,clkd为0时输出为0。c功能:当clkd为0时实现256分频,clkd为1时输出为0。2.前端控制功能:当k为0时总输出clk,k为1时总输出为序列码11010110。仿真波形:结果分析:仿真波形完全实现了用k来控制前端低频clk。、3.模8计数器功能:当clr为0时输出为“000”,当clr为1时为模8计数器输出三位二进制数。4.彩灯控制功能:当clr为0时输出“0000000”,当clr为1时根据choose输出led。VHDL代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity deng isport( clk: in std_logic; clr: in std_logic; choose: in std_logic_vector(2 downto 0); led: out std_logic_vector(7 downto 0) );end deng;architecture control of deng issignal cnt1:std_logic_vector(1 downto 0);signal cnt2:std_logic_vector(1 downto 0);signal cnt3:std_logic_vector(1 downto 0);signal cnt4:std_logic_vector(1 downto 0);signal cnt5:std_logic_vector(1 downto 0);signal cnt6:std_logic_vector(1 downto 0);signal cnt7:std_logic_vector(1 downto 0);signal cnt8:std_logic_vector(1 downto 0);begin process(clk,clr) begin if clr=0then led=00000000; else if choose=000 then if clkevent and clk=0 then cnt1ledledledled=00010000; end case; elsif choose=001 then if clkevent and clk=1 then cnt2ledledledled=00001000; end case; elsif choose=010 then if clkevent and clk=1 then cnt3ledledledled=00000010; end case; elsif choose=011 then if clkevent and clk=1 then cnt4ledledledled=01000000; end case; elsif choose=100 then if clkevent and clk=0 then cnt5ledledledled=11111111; end case; elsif choose=101 then if clkevent and clk=1 then cnt6ledledledled=00000000; end case; elsif choose=110 then if clkevent and clk=1 then cnt7ledledledled=00000011; end case; elsif choose=111 then if clkevent and clk=1 then cnt8ledledledled=00011000; end case; end if; end if; end process;end architecture control;输入choose为“000”时的仿真波形:结果分析:设置choose为“000”,当clr=1时led7led4每过一个时钟变为高电平其余时间为低电平,led3led0为低电平,当clr=0时输出全部为0。此结果与代码if clr=0then led=00000000; else if choose=000 then if clkevent and clk=0 then cnt1ledledledled=00010000; end case;所实现功能完全相同。四遇到问题及解决办法问题1:在前端控制部分用代码写一个单独用k来控制低频clk的器件编译无法通过。解决办法:用两个器件,一个或门,一个与门实现。第一个器件为qian 当k=1时输出0当k=0时输出clk。第二个器件为序列码发生器(xuan),将其输出信号和k与后再与第一个器件的输出或就实现了前端控制功能。如图:问题2:由于对VHDL语言理解不够透彻,节拍变换部分用代码写出一个器件时无法通过编译解决办法:做出两个分频器,一个是将1khz的clk进行512分频,一个是进行256分频。与问题1的解决办法类似用两个分频器,一个与门,一个或门进行如下连接:即可实现当clkd=1时进行512分频,当clkd=0时实现256分频。五实现结果在实际将程序加到板子的过程中只有一个输入4MHz,将其两次4096分频,第一次分频后(为1KHz)加在节拍控制部分,第二次分频后(为0.25Hz)加在前端控制部分,电路图如图1所示。由于将时钟clk设置为4MHz时仿真时间实在过长,所以在仿真时直接将1KHz的clk信号加在节拍控制部分,在前端控制部分加低频时钟clkd为0.25Hz。如图2所示。图1图2仿真波形如下:仿真结果分析:当clr=0时led输出为“00000000”,实现了清0复

温馨提示

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

评论

0/150

提交评论