基于VHDL实现多路彩灯控制器设计应用

基于

VHDL实现多路彩灯控制器设计应用 关键词: VHDL 彩灯 控制 07通信工程本科班 沈治文

摘要:设计一个彩灯控制程序器。可以实现四种花型循环变化,有复位开关。整个系统共有三个输入信号CLK,RST,Sel,八个输出信号控制八个彩灯。时钟信号CLK脉冲由系统的晶振产生。各种不同花样彩灯的变换由Sel控制.此彩灯控制系统设定有四种花样变化,这四种花样可以进行切换,四种花样分别为:

(1) 彩灯从左到右逐次闪亮。

(2)彩灯从左向右逐次点亮,且亮后不熄灭。

(3) 彩灯两边同时亮两个,然后逐次向中间点亮。

(4) 全部彩灯亮与熄灭交替。

Abstract: The design of a control program Lantern device. Four kinds of flowers can be achieved circulation change, reset switch. The whole system has three input signals CLK, RST, Sel, 8 output signal control 8 lights. The clock signal CLK pulses generated by the system of the crystal. Lanterns of different patterns of transformation controlled by Sel. The lights control system configuration there are four patterns change, four kinds of patterns can be switched, four kinds of patterns are as follows:

(1) successive flashing lights from left to right.

(2) successive lantern lit from left to right, and the light is not extinguished after.

(3) The two bright lights on both sides at the same time, and then successively to the center light.

(4) All lights turn bright and quenching

在日常生活中,为了增加聚会或是过节氛围,经常要使用到彩灯循环点亮。单一的循环可能无法起到理想的效果,通过不同花样的变换则能够很好的完成任务。多路彩灯循环控制可以有多种实现方法,例如利用单片机可以实现,利用数字电路时序逻辑也可以实现。我们这里利用VHDL语言实现对多路彩灯的控制。

彩灯的一种点亮方式经过足够长的延时后,转变为了其他的点亮方式。这就需要一个CLK信号完成,CLK信号可以由晶体振荡器或者是振荡电路产生。至于各种不同花样彩灯的变换,我们可以通过增加输入信号Sel来控制。Sel为两位二进制数,分别为00,01,10,11,四种状态对应四种花样。同时系统还需一个复位信号实现对电路的清零控制。输出八位彩灯,我们这里用LED发光二极管代替。当电路输出为“1”时,LED点亮。当电路输出为“0”时,LED熄灭。

利用VHDL语言实现该功能程序如下:

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

ENTITY color8 IS

PORT(cLK,rst:IN std_LOGIC;

sel:in std_LOGIC_VECTOR(1 DOWNTO 0);

abc:OUT std_LOGIC_VECTOR(7 DOWNTO 0) );

END color8;

ARCHITECTURE color OF color8 IS

TYPE state_1 IS (s0,s1,s2,s3,s4,s5,s6,s7);

SIGNAL state_2:state_1;

BEGIN

pr_1:PROCESS (cLK,rst)

BEGIN

IF rst='1' THEN state_2

ELSIF cLK'event AND cLK='1' THEN

CASE state_2 IS

WHEN s0=> state_2

WHEN s1=> state_2

WHEN s2=> state_2

WHEN s3=> state_2

WHEN s4=> state_2

WHEN s5=> state_2

WHEN s6=> state_2

WHEN s7=> state_2

END CASE;

END IF;

END PROCESS pr_1;

pr_2:PROCESS(sel,state_2)

BEGIN

if sel="00" then

CASE state_2 IS

WHEN s0=> abc

WHEN s1=> abc

WHEN s2=>abc

WHEN s3=> abc

WHEN s4=> abc

WHEN s5=> abc

WHEN s6=> abc

WHEN s7=> abc

END CASE;

elsif sel="01" then

CASE state_2 IS

WHEN s0=> abc

WHEN s1=> abc

WHEN s2=> abc

WHEN s3=> abc

WHEN s4=> abc

WHEN s5=> abc

WHEN s6=> abc

WHEN s7=> abc

END CASE;

elsif sel="10" then

CASE state_2 IS

彩灯从左到右逐次闪亮 彩灯从左向右逐次点亮,且亮后不熄灭 彩灯两边同时亮两个,然后逐次向中间点亮

WHEN s0=> abc

WHEN s1=> abc

WHEN s2=> abc

WHEN s3=> abc

WHEN s4=> abc

WHEN s5=> abc

WHEN s6=> abc

WHEN s7=> abc

END CASE;

elsif sel="11" then 全部彩灯亮与熄灭交替

CASE state_2 IS

WHEN s0=> abc

WHEN s1=> abc

WHEN s2=> abc

WHEN s3=> abc

WHEN s4=> abc

WHEN s5=> abc

WHEN s6=> abc

WHEN s7=> abc

END CASE;

end if;

END PROCESS pr_2;

END color;

本控制电路采用VHDL语言设计。运用自顶而下的设计思想,按功能逐层分割实现层次化设计。根据多路彩灯控制器的设计原理,将整个控制器分为四个部分,分别对应彩灯的四种变化模式。考虑到程序比较长,本电路利用状态机的VHDL设计来简化,使得程序层次分明,可读性更强。使用TYPE语句定义state_1为s0到s7八种状态。主控时序进程将state_1的内容送给state_2,主控组合进程通过信号state_2中的状态值,进入相应的状态。在进程一中,首先用TYPE语句定义数据对象,以及个状态之间的转化情况。在进程二中,在IF语句中嵌套CASE语句。在IF语句中,规定四种花样,即用SEL=00表示花色的第一种点亮方式,对应SEL=01,10,11分别表示花色的第二,第三和第四种点亮方式。在CASE语句中,输出八位彩灯的状态用八位二进制数据来代替。彩灯从左到右逐次闪亮,即使为1的为右移。彩灯从左向右逐次点亮,且亮后不熄灭,即从左向右逐渐将0转变为1。彩灯两边同时亮两个,然后逐次向中间点亮,即两1为逐渐向内移动。全部彩灯亮与熄灭交替,即全为1与全为0之间的转变。

各模块VHDL程序经过编译优化后,选择合适的目标芯片进行综合、仿真,管脚配置以及编程下载,实现硬件模拟。本电路选用公司的可编程逻辑芯片,由Quartus II进行仿真.下面是四种花色的仿真波形。

图形编号(1)

当Sel全为00时

当Sel全为01时

图形编号(2)

图形编号(3)

当Sel全为10时

图形编号(4)

当Sel全为11时

图形编号(5)

从仿真波形可以看出,此程序可以实现四种不同花样彩灯的相互变换,每种花样彩灯可以循环变化。然后就可以实现程序下载和硬件测试。主频时钟clk接CLOCK0(第91脚),但是如果系统的固有频率很大,彩灯的闪烁速度非常快,看到的现象是每个花样的八个彩灯同时被点亮,为了实现绚丽多彩的景象,选择不同的频率(在1Hz--46Hz之间选择)能使彩灯点亮速度适宜。复位RST和Sel的高位与地位分别接三个键控。输出八位彩灯分别对应接八个LED发光二极管。编程下载后,拨动Sel的高位与地位观察能否实现四种花色的循环。本次设计的程序已经在硬件系统上得到了验证,实验表明。此设计方法能够满足四种不同花样彩灯的变化要求,并且该方法便于扩展不同变化模式的彩灯花样,各个不同花样的相互转变是手动切换实现的。

实验结果与理论结果相一致,能够实现八位彩灯循环控制,达到实验预期目的。通过本次试验,可以加深对有限状态机的理解。在程序中运用CASE语句,巩固对其掌握。在程序中,实现四种花样的转化时遇到一些问题,即SEL的运用,通过与同学的交流以及上网查询,最终克服困难实现功能。

参考文献:

潘松 黄继业 科学出版社 EDA技术实用教程 2006年9月第三版

基于

VHDL实现多路彩灯控制器设计应用 关键词: VHDL 彩灯 控制 07通信工程本科班 沈治文

摘要:设计一个彩灯控制程序器。可以实现四种花型循环变化,有复位开关。整个系统共有三个输入信号CLK,RST,Sel,八个输出信号控制八个彩灯。时钟信号CLK脉冲由系统的晶振产生。各种不同花样彩灯的变换由Sel控制.此彩灯控制系统设定有四种花样变化,这四种花样可以进行切换,四种花样分别为:

(1) 彩灯从左到右逐次闪亮。

(2)彩灯从左向右逐次点亮,且亮后不熄灭。

(3) 彩灯两边同时亮两个,然后逐次向中间点亮。

(4) 全部彩灯亮与熄灭交替。

Abstract: The design of a control program Lantern device. Four kinds of flowers can be achieved circulation change, reset switch. The whole system has three input signals CLK, RST, Sel, 8 output signal control 8 lights. The clock signal CLK pulses generated by the system of the crystal. Lanterns of different patterns of transformation controlled by Sel. The lights control system configuration there are four patterns change, four kinds of patterns can be switched, four kinds of patterns are as follows:

(1) successive flashing lights from left to right.

(2) successive lantern lit from left to right, and the light is not extinguished after.

(3) The two bright lights on both sides at the same time, and then successively to the center light.

(4) All lights turn bright and quenching

在日常生活中,为了增加聚会或是过节氛围,经常要使用到彩灯循环点亮。单一的循环可能无法起到理想的效果,通过不同花样的变换则能够很好的完成任务。多路彩灯循环控制可以有多种实现方法,例如利用单片机可以实现,利用数字电路时序逻辑也可以实现。我们这里利用VHDL语言实现对多路彩灯的控制。

彩灯的一种点亮方式经过足够长的延时后,转变为了其他的点亮方式。这就需要一个CLK信号完成,CLK信号可以由晶体振荡器或者是振荡电路产生。至于各种不同花样彩灯的变换,我们可以通过增加输入信号Sel来控制。Sel为两位二进制数,分别为00,01,10,11,四种状态对应四种花样。同时系统还需一个复位信号实现对电路的清零控制。输出八位彩灯,我们这里用LED发光二极管代替。当电路输出为“1”时,LED点亮。当电路输出为“0”时,LED熄灭。

利用VHDL语言实现该功能程序如下:

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

ENTITY color8 IS

PORT(cLK,rst:IN std_LOGIC;

sel:in std_LOGIC_VECTOR(1 DOWNTO 0);

abc:OUT std_LOGIC_VECTOR(7 DOWNTO 0) );

END color8;

ARCHITECTURE color OF color8 IS

TYPE state_1 IS (s0,s1,s2,s3,s4,s5,s6,s7);

SIGNAL state_2:state_1;

BEGIN

pr_1:PROCESS (cLK,rst)

BEGIN

IF rst='1' THEN state_2

ELSIF cLK'event AND cLK='1' THEN

CASE state_2 IS

WHEN s0=> state_2

WHEN s1=> state_2

WHEN s2=> state_2

WHEN s3=> state_2

WHEN s4=> state_2

WHEN s5=> state_2

WHEN s6=> state_2

WHEN s7=> state_2

END CASE;

END IF;

END PROCESS pr_1;

pr_2:PROCESS(sel,state_2)

BEGIN

if sel="00" then

CASE state_2 IS

WHEN s0=> abc

WHEN s1=> abc

WHEN s2=>abc

WHEN s3=> abc

WHEN s4=> abc

WHEN s5=> abc

WHEN s6=> abc

WHEN s7=> abc

END CASE;

elsif sel="01" then

CASE state_2 IS

WHEN s0=> abc

WHEN s1=> abc

WHEN s2=> abc

WHEN s3=> abc

WHEN s4=> abc

WHEN s5=> abc

WHEN s6=> abc

WHEN s7=> abc

END CASE;

elsif sel="10" then

CASE state_2 IS

彩灯从左到右逐次闪亮 彩灯从左向右逐次点亮,且亮后不熄灭 彩灯两边同时亮两个,然后逐次向中间点亮

WHEN s0=> abc

WHEN s1=> abc

WHEN s2=> abc

WHEN s3=> abc

WHEN s4=> abc

WHEN s5=> abc

WHEN s6=> abc

WHEN s7=> abc

END CASE;

elsif sel="11" then 全部彩灯亮与熄灭交替

CASE state_2 IS

WHEN s0=> abc

WHEN s1=> abc

WHEN s2=> abc

WHEN s3=> abc

WHEN s4=> abc

WHEN s5=> abc

WHEN s6=> abc

WHEN s7=> abc

END CASE;

end if;

END PROCESS pr_2;

END color;

本控制电路采用VHDL语言设计。运用自顶而下的设计思想,按功能逐层分割实现层次化设计。根据多路彩灯控制器的设计原理,将整个控制器分为四个部分,分别对应彩灯的四种变化模式。考虑到程序比较长,本电路利用状态机的VHDL设计来简化,使得程序层次分明,可读性更强。使用TYPE语句定义state_1为s0到s7八种状态。主控时序进程将state_1的内容送给state_2,主控组合进程通过信号state_2中的状态值,进入相应的状态。在进程一中,首先用TYPE语句定义数据对象,以及个状态之间的转化情况。在进程二中,在IF语句中嵌套CASE语句。在IF语句中,规定四种花样,即用SEL=00表示花色的第一种点亮方式,对应SEL=01,10,11分别表示花色的第二,第三和第四种点亮方式。在CASE语句中,输出八位彩灯的状态用八位二进制数据来代替。彩灯从左到右逐次闪亮,即使为1的为右移。彩灯从左向右逐次点亮,且亮后不熄灭,即从左向右逐渐将0转变为1。彩灯两边同时亮两个,然后逐次向中间点亮,即两1为逐渐向内移动。全部彩灯亮与熄灭交替,即全为1与全为0之间的转变。

各模块VHDL程序经过编译优化后,选择合适的目标芯片进行综合、仿真,管脚配置以及编程下载,实现硬件模拟。本电路选用公司的可编程逻辑芯片,由Quartus II进行仿真.下面是四种花色的仿真波形。

图形编号(1)

当Sel全为00时

当Sel全为01时

图形编号(2)

图形编号(3)

当Sel全为10时

图形编号(4)

当Sel全为11时

图形编号(5)

从仿真波形可以看出,此程序可以实现四种不同花样彩灯的相互变换,每种花样彩灯可以循环变化。然后就可以实现程序下载和硬件测试。主频时钟clk接CLOCK0(第91脚),但是如果系统的固有频率很大,彩灯的闪烁速度非常快,看到的现象是每个花样的八个彩灯同时被点亮,为了实现绚丽多彩的景象,选择不同的频率(在1Hz--46Hz之间选择)能使彩灯点亮速度适宜。复位RST和Sel的高位与地位分别接三个键控。输出八位彩灯分别对应接八个LED发光二极管。编程下载后,拨动Sel的高位与地位观察能否实现四种花色的循环。本次设计的程序已经在硬件系统上得到了验证,实验表明。此设计方法能够满足四种不同花样彩灯的变化要求,并且该方法便于扩展不同变化模式的彩灯花样,各个不同花样的相互转变是手动切换实现的。

实验结果与理论结果相一致,能够实现八位彩灯循环控制,达到实验预期目的。通过本次试验,可以加深对有限状态机的理解。在程序中运用CASE语句,巩固对其掌握。在程序中,实现四种花样的转化时遇到一些问题,即SEL的运用,通过与同学的交流以及上网查询,最终克服困难实现功能。

参考文献:

潘松 黄继业 科学出版社 EDA技术实用教程 2006年9月第三版


相关文章

  • EDA课程设计多路彩灯控制器
  • 课程设计 题 目: 班 级: 姓 名: 学 号: 指导教师: 成 绩: 语言 多路彩灯控制器 电子与信息工程学院 信息与通信工程系 目录 目录 ················································ ...查看


  • 基于TC35i的远程直流电源监控系统
  • -32- ●应用与设计 国外电子元器件><2008年第4期2008年4月 基于TC35i的远程直流电源监控系统 任凤娟,郑萍 (西华大学,四川成都610039) 摘要:利用单片机SST89E516RD和TC35i实现直流电源监控 ...查看


  • 脉冲序列发生器设计
  • 摘 要 脉冲序列检测器广泛应用于现代数字通信系统中, 随着通信技术的发展,对多路脉冲序列信号检测要求越来越高.现代通信系统的发展方向是功能更强.体积更小.速度更快.功耗更低, 大规模可编程逻辑器件FPGA 器件的集成度高.工作速度快.编程方 ...查看


  • 电子科技大学电子技术综合实验秒表实验报告
  • 现代电子技术综合实验 电子秒表设计 学生姓名:学 号:指导老师:学 院:提交时间: 摘要 本文介绍了使用VHDL开发FPGA的一般流程,重点介绍了电子秒表的设计.该设计以VHDL作为硬件开发语言,以ISE作为软件开发平台,准确地实现了秒表计 ...查看


  • 电子设计自动化技术课件答案
  • 第一章 1-1 EDA技术与ASIC设计和FPGA开发有什么关系? P3~4 答:利用EDA技术进行电子系统设计的最后目标是完成专用集成电路ASIC的设计和实现:FPGA和CPLD是实现这一途径的主流器件.FPGA和CPLD通常也被称为可编 ...查看


  • 机电一体化论文题目一览表
  • 1 毕 业 论 文(设计)题 目 2 基于AD9851的跳频控制电路设计 3 基于伪随机序列噪声发生器设计 4 基于FPGA的延时倍频电路PLL设计 5 基于FPGA的无线搜寻系统设计 6 基于FPGA的电机测速显示设计 7 基于FPGA的 ...查看


  • 用VHDL实现楼梯照明灯的控制
  • 本栏目责任编辑:李桂瑾 人工智能及识别技术 用VHDL实现楼梯照明灯的控制 陈黎融,白婕静,雷立群 (西安工业大学机电工程学院,陕西西安710032) 摘要:介绍了使用EDA的优越性,分析了VHDL语言及其基本特点,用VHDL语言编写了楼梯 ...查看


  • 多路音频采集器
  • 目录 摘要 . ................................................................................................................ ...查看


  • 电子信息工程毕业设计题目大全
  • 1 压力容器液位测量 2 多功能遥控小车 3基于RS232的仓库多点温度.湿度.气 4压检测系统 5自动控制升降旗系统 6基于RS485的温度报警系统 7基于模糊算法的水温控制系统的设计 8多分机电话交换机 9简易火灾自动报警系统 10基于 ...查看


热门内容