
六基于状态机的彩灯控制器设计与调.doc
4页实验六基于状态机的彩灯控制器设计与调试一、 实验目的通过彩灯控制器学习有限状态机的设计、仿真和硬件测试,进一•步熟悉 VHDL设计技术二、 实验要求:本实验要求用有限状态机的设计方法编写一段用于彩灯控制的VHDL程序, 实现对8路彩灯进行各种显示花样的控制功能要求如下:此彩灯控制系统用实验箱上提供的8个LED来模拟彩灯,在系统时钟的作用 下,彩灯按设定的四种花样变化,各种不同花样的变换在外部输入信号Sei的控 制下进行切换,四种花样分别为:(1) 彩灯从左到右逐次闪亮2) 彩灯从左向右逐次点亮,且亮后不熄灭3) 彩灯两边同时亮两个,然后逐次向中间点亮4) 全部彩灯亮与熄灭交替>也可自定花样方案三、实验原理:本控制电路采用VHDL语言设计运用自顶而下的设计思想,按功能逐层分 割实现层次化设计根据多路彩灯控制器的设计原理,将整个控制器分为四个部 分,分别对应彩灯的四种变化模式考虑到程序比较长,本电路利用状态机的 VHDL设计来简化,使得程序层次分明,可读性更强利用VHDL语言实现该功能 程序如下: LIBRARY ieee;USE ieee.stdJogic_1164.ALL;ENTITY colors ISPORT(cLK,rst:IN std_LOGIC;sekin std LOGIC VECTOR(1 DOWNTO 0);abc:OUT std_LOGIC_VECTOR(7 DOWNTO 0));END color8;ARCHITECTURE color OF colors ISTYPE state 1 IS (s0,s1 ,s2,s3,s4,s5,s6,s7);SIGNAL state 2:state 1;BEGINpr_1 PROCESS (cLK,rst)BEGINIF rst=1 THEN state 2<=s0;ELSIF cLKeventAND cLK=" THENCASE state_2 ISWHEN s0=> state_2v=s1;WHEN s1=> state 2<=s2;WHEN s2=> state 2<=s3;WHEN s3=> state_2<=s4;WHEN s4=> state_2v=s5;WHEN s5=> state_2<=s6;WHEN s6=> state 2<=s7;WHEN s7=> state 2<=s0;END CASE;END IF;END PROCESS pr_1;pr_ 2:PROCESS(sel,state 2)BEGINif sel=”00” thenCASE state_2 ISWHEN s0=> abcv=”10000000”;WHEN s1=> abcv=”01000000”;WHEN s2=>abc<=H00100000";WHEN s3=> abc<=n00010000H;WHEN s4=> abcv=”00001000”;WHEN s5=> abcv=”00000100”;WHEN s6=> abcv=”00000010”;WHEN s7=> abc<="00000001n;END CASE;elsif sel="01" thenCASE state_2 ISWHEN s0=> abcv=”10000000”;WHEN s1=> abc<="11000000";WHEN s2=> abc<="11100000;WHEN s3=> abc<=H11110000";WHEN s4=> abc<=n11111000";WHEN s5=> abc<=,,11111100,;WHEN s6=> abcv=”11111110";WHEN s7=> abc<=,,11111111H;END CASE;elsif sel="10" thenCASE state_2 ISWHEN s0=> abc<=H10000001";WHEN s1=> abc<=n01000010";WHEN s2=> abcv=”00100100”;WHEN s3=> abcv=”00011000“;WHEN s4=> abc<=,,00100100H;WHEN s5=> abc<="01000010";WHEN s6=> abcv=”10000001”;WHEN s7=> abcv=”11111111";END CASE;elsif sel=ir then彩灯从左到右逐次闪亮彩灯从左IE右逐次点亮,旦亮后不熄灭彩灯两边同时亮两个,然后逐次向中间点亮全部彩灯亮与熄灭交替CASE state_2 ISWHEN sO=> abcv=”11111111";WHEN s1=> abcv=”OOOOOOOO”;WHEN s2=> abc<=n11111111n;WHEN s3=> abcv=”OOOOOOOO”;WHEN s4=> abc<=,,11111111n;WHEN s5=> abcv=”OOOOOOOO”;WHEN s6=> abc<=n11111111n;WHEN s7=> abc<=HOOOOOOOOH;END CASE;end if;END PROCESS pr_2;END color;在以上程序中,使用TYPE语句定义state」为sO到s7八种状态。
主控时 序进程将state_l的内容送给state_2,主控组合进程通过信号state_2中的状 态值,进入相应的状态在进程一中,首先用TYPE语句定义数据对象,以及个 状态之间的转化情况在进程二中,在IF语句中嵌套CASE语句在IF语句中, 规定四种花样,即用SEL=OO表示花色的第一种点亮方式,对应SEL=01, 10, 11 分别表示花色的第二,第三和第四种点亮方式在CASE语句中,输出八位彩灯 的状态用八位二进制数据来代替彩灯从左到右逐次闪亮,即使为1的为右移 彩灯从左向右逐次点亮,且亮后不熄灭,即从左向右逐渐将0转变为1彩灯两 边同时亮两个,然后逐次向中间点亮,即两1为逐渐向内移动全部彩灯亮与熄 灭交替,即全为1与全为0之间的转变四、 实验内容:1、 在Quartus II 进行编辑、编译、仿真说明例中各语句的作用,详细描述 示例的功能特点,给出其所有信号的时序仿真波形2、 引脚锁定以及硬件下载测试,在实验系统上硬件验证该实验的功能目标器 件是 EPlC3T144C8o3、 修改程序来改变彩灯变化控制方式:将手动控制改为自动控制,使彩灯的4 种花样自动变换,循环往复并重复以上实验过程。
4、 修改程序来改变彩灯变化花样:第1种花样为彩灯从右到左,然后从左到右 逐次点亮,接着全灭全亮;第2种花样为彩灯两边同时亮1个,并逐次向中 间移动再散开;第3种花样为彩灯两边同时亮2个逐次向中间移动再散开; 第4种花样为彩灯两边同时亮3个,然后4亮4灭,4灭4亮,最后1灭1 亮4种花样自动变换,循环往复并重复以上实验过程五、 实验预习:开始实验前修改程序以上的彩灯控制程序,以完成实验内容3和4的要求六、 实验报告:根据以上的实验内容写出实验报告,包括程序设计、软件编译、仿真分析、 硬件测试和详细实验过程;设计原程序,程序分析报告、仿真波形图及其分析报 告。
