多路彩灯控制器及其VHDL实现

2019-01-07 14:20

摘要:本文基于分频器和有限状态机设计了可选择节拍、具有六种循环变换花

型功能的多路彩灯控制器,并通过VHDL将其实现。通过Modelsim得到了仿真波形,达到了预期的要求和功能。

目录

一、背景介绍 ............................................. 2 二、设计要求 ............................................. 2 三、设计方案 ............................................. 2 四、方案程序设计 ......................................... 2

4.1 时序控制模块(SXKZ)程序 ........................................................................................... 3

4.1.1 T触发器单元程序 ................................................................................................ 3 4.1.2 多路选择器单元程序 ........................................................................................... 3 4.1.3 总的设计程序 ....................................................................................................... 4 4.2 显示控制模块(XSKZ)程序 ........................................................................................... 5 4.3 多路彩灯控制器的顶层模块程序 ................................................................................... 6 4.4 测试平台(TESTBENCH)程序 ......................................................................................... 7

五、仿真结果及分析 .......................................... 8

5.1 多路彩灯控制器的RTL级 ............................................................................................... 8 5.2 多路彩灯控制器TECHNOLOGY图 ..................................................................................... 9 5.3 Modelsim仿真波形图 .................................................................................................... 10

六、设计的亮点 .......................................... 10

一、背景介绍

在现代生活中,彩灯作为一种装饰,既可以增强人们的感观,起到广告宣传的作用,又可以增添节日气氛,为人们的生活增添亮丽,用在舞台上增强晚会灯光效果。随着电子技术的发展,应用系统向着小型化、快速化、大容量、重量轻的方向发展,EDA(Electronic Design Automatic)技术的应用引起电子产品及系统开发的革命性变革。

VHDL语言作为可编程逻辑器件的标准语言描述能力强,覆盖面广,抽象能力强,在实际应用中越来越广泛。在这个阶段,人们开始追求贯彻整个系统设计的自动化,可以从繁重设计工作中彻底解脱出来,把精力集中在创造性的方案与概念构思上,从而可以提高设计效率,缩短产品的研制周期。整个过程通过EDA工具自动完成,大大减轻了设计人员的工作强度,提高了设计质量,减少了出错的机会。

因而我们对此十分感兴趣,希望借助我们学过的VHDL语言并通过学习相关知识能够进行简单的循环彩灯设计。

二、设计要求

设计一个16路彩灯控制器,六种花样循环变化,有清零开关(即复位功能),并且可以选择快慢两种节拍。

三、设计方案

对设计要求进行分析可知,整个系统共需三个输入信号,即控制彩灯节奏的基准时钟信号CLK_IN,系统清零信号CLR,彩灯节奏快慢选择开关CHOOSE_KEY;应共有16个输出信号,分别用来控制16路彩灯。

我们这里将整个彩灯控制器分为两大部分:时序控制电路SXKZ,用于产生节奏控制信号,选择产生基准频率的1/4和1/8的时钟信号来改变节奏;显示控制电路XSKZ生成变化的花样信号。

四、方案程序设计

基于前面叙述的设计方案,VHDL程序也分为两个主要的模块:时序控制模块SXKZ和显示控制模块XSKZ。

4.1 时序控制模块(SXKZ)程序

时序控制模块主要包括分频(得到1/4标准主频和1/8标准主频)和频率选择两部分,而分频的基本单元为T触发器,选频为二选一多路选择器,因而该模块的程序包括T触发器单元、多路选择器单元、SXKZ总的设计单元三个单元。 4.1.1 T触发器单元程序

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

entity T_FF is

Port ( clk : in STD_LOGIC; rst : in STD_LOGIC;

dout : buffer STD_LOGIC); end T_FF;

architecture Behavioral of T_FF is begin

process(clk,rst) is begin

if (rst = '1') then dout <= '0'; else

if (rising_edge(clk)) then if dout='1' then dout <= '0'; elsif dout = '0' then dout <= '1'; end if; end if; end if;

end process; end Behavioral;

4.1.2 多路选择器单元程序

library IEEE;

use IEEE.STD_LOGIC_1164.ALL; entity MUX_TWO_ONE is

Port ( CHOOSE_KEY : in STD_LOGIC; DAT1 : in STD_LOGIC; DAT2 : in STD_LOGIC;

DOUT : out STD_LOGIC); end MUX_TWO_ONE;

ARCHITECTURE behave OF MUX_TWO_ONE IS BEGIN

PROCESS(DAT1,DAT2,CHOOSE_KEY) BEGIN

CASE CHOOSE_KEY IS

WHEN '0' => DOUT <= DAT1; WHEN '1' => DOUT <= DAT2;

WHEN OTHERS => DOUT <= '0'; END CASE; END PROCESS; END behave; 4.1.3 总的设计程序

library IEEE;

use IEEE.STD_LOGIC_1164.ALL; entity SXKZ is

Port ( CHOOSE_KEY : in STD_LOGIC; CLK_IN : in STD_LOGIC; CLR : in STD_LOGIC; clk : out STD_LOGIC); end SXKZ;

architecture Behavioral of SXKZ is signal t1,t2,t3 : std_logic; component T_FF

Port ( clk : in STD_LOGIC; rst : in STD_LOGIC; dout : out STD_LOGIC); end component;

component MUX_TWO_ONE

Port ( CHOOSE_KEY : in STD_LOGIC; DAT1 : in STD_LOGIC; DAT2 : in STD_LOGIC; DOUT : out STD_LOGIC); end component; begin u0 : T_FF

PORT MAP(CLK_IN,CLR,t1); u1 : T_FF

PORT MAP(t1,CLR,t2); u2 : T_FF

PORT MAP(t2,CLR,t3); u3 : MUX_TWO_ONE

PORT MAP(CHOOSE_KEY,t2,t3,clk);--devide-by-4 when CHOOSE_KEY is 0,devide-by-8 when CHOOSE_KEY is 1 end Behavioral;

4.2 显示控制模块(XSKZ)程序

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL ; ENTITY XSKZ IS

PORT( CLK : IN STD_LOGIC; CLR : IN STD_LOGIC;

LED : OUT STD_LOGIC_VECTOR(15 DOWNTO 0)); END ENTITY XSKZ;

ARCHITECTURE ART OF XSKZ IS TYPE STATE IS (S0,S1,S2,S3,S4,S5,S6); SIGNAL CURRENT_STATE: STATE;

SIGNAL FLOWER : STD_LOGIC_VECTOR(15 DOWNTO 0); BEGIN

PROCESS(CLR,CLK) IS CONSTANT F1 : STD_LOGIC_VECTOR(15 DOWNTO \CONSTANT F2 : STD_LOGIC_VECTOR(15 DOWNTO \CONSTANT F3 : STD_LOGIC_VECTOR(15 DOWNTO \CONSTANT F4 : STD_LOGIC_VECTOR(15 DOWNTO \CONSTANT F5 : STD_LOGIC_VECTOR(15 DOWNTO \CONSTANT F6 : STD_LOGIC_VECTOR(15 DOWNTO \

--DEFINATION OF SIX FLOWERS BEGIN

IF CLR = '1' THEN

CURRENT_STATE <= S0; ELSE

IF RISING_EDGE(CLK) THEN CASE CURRENT_STATE IS WHEN S0 =>

FLOWER <= \

0) := 0) := 0) := 0) := 0) := 0)

:=


多路彩灯控制器及其VHDL实现.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:高二上学期美术教学计划

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: