《eda彩灯设计.doc》由会员分享,可在线阅读,更多相关《eda彩灯设计.doc(11页珍藏版)》请在金锄头文库上搜索。
1、一设计目标 设计能让一排灯(8只)自动改变显示花样的控制系统。可将实验板上的一排发光二极管作为彩灯用。控制器应有两种控制方式: 规则变化。变化节拍有0.5秒和0.25秒两种,交替出现,每种节拍可有8种花样,各执行一或二个周期后轮换。 彩灯变化方向有单向移动,双向移动,跳跃移动等。如图所示。随机变化。变化花样相同,但节拍及花样的转换都随机出现。 二实现方案(包括原理框图和HDL设计流程图)原理框图: 总控制部分(通过开关k来控制灯的规则变化和随机变化)节拍控制部分(通过高低电平控制两种节拍)包含2个分频器花样控制部分(通过输出3位二进制数控制花样)是一个模8计数器Led控制部分(通过输出8个引脚
2、控制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.彩灯控制功能
3、:当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 is
4、signal 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:s
5、td_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=
6、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
7、; 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;