北邮vhdl小学期实验报告
- 格式:pdf
- 大小:951.62 KB
- 文档页数:33
Verilog HDL实验报告Verilog 实验报告题目:JK触发器、同步计数器系部名称:通信工程专业名称:通信工程班级:班内序号:学生姓名:时间:2010.11.28一、实验内容:用JK触发器构成同步计数器:设计一个同步计数器,其逻辑图和JK触发器的逻辑图所示。
清零信号clear低电平有效,输入数据在时钟信号clock的上升沿被锁存,触发器在clock的下降沿输出,当count_enable信号为低电平时停止计数。
写出同步计数器的verilog描述和激励模块,在激励模块中使用clear和count_enable对计数器进行测试,并显示输出计数Q[3:0]。
二、实验原理图:JK触发器构成同步计数器源代码://主模块module synchronous_counter(clear,clock,count_enable,Q);input clear,clock,count_enable;output [3:0] Q;wire qbar1,qbar2,qbar3,qbar0;wire a,b,c;assign a = Q[0] & count_enable;assign b = a & Q[1];assign c = b & Q[2];JK_flip_flop myJK(count_enable,count_enable,clock,clear,Q[0],qbar0);JK_flip_flop myJK1(a,a,clock,clear,Q[1],qbar1);JK_flip_flop myJK2(b,b,clock,clear,Q[2],qbar2);JK_flip_flop myJK3(c,c,clock,clear,Q[3],qbar3);endmodule//调用的JK触发器模块module JK_flip_flop(j,k,clock,clear,q,qbar);input j,k,clock,clear;output q,qbar;wire a,b,y,ybar,c,cbar,d,q,qbar;assign a = ~ (((qbar & j)& clock) & clear);assign b = ~ ((clock & k) & q);assign y = ~ (a & ybar);assign ybar = ~ ((y & clear) & b);assign c = ~(y & cbar);assign cbar = ~ clock;assign d = ~ (cbar & ybar);assign q = ~ (c & qbar);assign qbar = ~ ((q & clear) & d);endmodule测试文件源代码:module count_test;reg count_enable=1,clock=0,clear=0;wire [3:0]Q;synchronous_counter myCount(clear,clock,count_enable,Q);initial #10 clear=1;always@(negedge clock)begin$monitor($time," clear=%b,count_enable=%b,Q=%b%b%b%b\n",clear,count_enable,Q[3],Q[2],Q[1],Q[0]);endalways clock = #5 ~clock;always count_enable= #170 ~count_enable; endmodule实验结果:波形图:三、实验心得:这次实验比上一次顺利多了,可能是因为有了前一次的铺垫,我对软件的熟悉度有了一定的提高。
湖南科技大学信息与电气工程学院《课程设计报告》题目:电子技术课程设计报告专业:通信工程班级:一班姓名:何家乐学号: 1004040126指导教师:罗朝辉任务书题目《电子技术》课程设计时间安排课程设计时间为10天(2周)。
(1)调研、查资料1天。
(2)总体方案设计2 天。
(3)电路设计2天(画原理图,参数计算)。
(4)实验室完成相应电路的验证。
3天(5)撰写设计说明书 1 天。
(6)验收1 天。
目的:训练学生综合运用学过的电子技术原理的基础知识,独立进行查找资料、选择方案、设计电路、撰写报告,进一步加深对电子电路基本理论的理解,提高运用基本技能的能力,为今后的学习和工作打下坚实的基础。
要求:(1)能正确设计电路,画出线路图,分析电路原理。
(2)按时参加课程设计指导,定期汇报课程设计进展情况。
(3)广泛收集相关技术资料。
(4)独立思考,刻苦钻研,严禁抄袭。
(5)按时完成课程设计任务,认真、正确地书写课程设计报告。
(6)培养实事求是、严谨的工作态度和认真的工作作风。
总体方案实现:(1)明确设计任务,对所要设计的任务进行具体分析,充分了解电路性能、指标内容及要求。
(2)制定设计方案。
(3)迸行具体设计:单元电路的设计;参数计算;器件选择;绘制电路原理图。
(4)撰写课程设计报告(说明书):课程设计报告是对设计全过程的系统总结,也是培养综合科研素质的一个重要环节。
指导教师评语:评分等级:()指导教师签名:课程设计报告1.课题名称:RGB LED Control 原理图及PCB设计2.设计任务及要求⑴任务:完成RGB LED control 的设计,并画出原理图及其PCB设计。
⑵要求:①能正确设计电路,画出线路图,分析电路原理。
②按时参加课程设计指导,定期汇报课程设计进展情况。
③广泛收集相关技术资料。
④独立思考,刻苦钻研,严禁抄袭。
⑤按时完成课程设计任务,认真、正确地书写课程设计报告。
⑥培养实事求是、严谨的工作态度和认真的工作作风。
VHDL七段数码管显示0到9自动循环试验报告姓名:羅文驰学号:*********前言、此次实验用到七段数码显示译码器显示0到9自动循环显示,要求在单片机上只用一个七段数码管显示循环,利用了高低电频发送到不同的数码管从而实现了译码器直观的显示了数字0到9 的显示。
任务书、与同组队员分工合作,本人负责写程序,检查程序错误,组长沈丽婵在Quartus Ⅱ上建立新文件,分配管教,下载程序,检查错误,翟国豪负责原理图仿真调试,检查错误,林国强负责硬件连接和整体的设计解说。
设计要求、在单个七段数码管上自动显示0到9循环。
设计目的、认识七段数码管的工作原理、学习用CASE语句等设计程序、设计方案、实验要求在时钟信号的作用下,通过输入的高低电频在七段数码管中显示相应的数字,在实验中,时钟选择1KHZ的频率作为扫描时钟。
设计原理、序号 a b c d e f g 显示0 1 1 11110 01 011000012 11011012 3111100134 001001145 101101156 101111167 111000078 111111189 11101119硬件要求、主芯片EPM240T100C5,七段数码管。
设计步骤、1、打开Quartus Ⅱ,新建一个文件,注意文件名。
2、再建VHLD FILE ,打开VHDL编辑对话框。
3、按照实验原理在对话框中编进程序。
4、编写完后保存,对程序进行编译,看程序是否存在错误。
5、在编译仿真之后,进行管脚分配,注意管脚序号,分配完成后,再一次进行编译一次使管脚分配生效。
6、用数据线和串口传输线把程序下载到硬件中,观察显示现象是否和想象中符合。
源程序、library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity wen isport(clk,reset:in std_logic;dis:out std_logic_vector(6 downto 0);r:out std_logic_vector(5 downto 0));end wen;architecture behav of wen issignal seg7:std_logic_vector(6 downto 0);signal countnum: integer range 0 to 9;signal clk_1k: std_logic;beginr<="011111";process(clk)variable cnt1:integer range 0 to 5000; variable cnt2:integer range 0 to 2500; beginif clk'event and clk='1' thenif cnt1=5000 thencnt1:=0;if cnt2=2500 thencnt2:=0;clk_1k<=not clk_1k;elsecnt2:=cnt2+1;end if;elsecnt1:=cnt1+1;end if;end if;end process;process(reset,clk_1k)beginif reset='1' thenif clk_1k'event and clk_1k='1' thenif countnum=9 thencountnum<=0;elsecountnum<=countnum+1;end if;end if;end if;end process;process(clk,countnum)begincase countnum iswhen 0=>seg7<="0111111";when 1=>seg7<="0000110";when 2=>seg7<="1011011";when 3=>seg7<="1001111";when 4=>seg7<="1100110";when 5=>seg7<="1101101";when 6=>seg7<="1111101"; when 7=>seg7<="0000111"; when 8=>seg7<="1111111"; when 9=>seg7<="1100111"; when others=>seg7<="0000000"; end case;end process;dis<=seg7;end;仿真调试、管脚分配、数据处理与结果分析、0到9的显示,都是根据数码管的高低电频和时钟来控制的。
北京邮电大学课程设计报告目录实验一:交通灯控制器设计............................................................................. 实验二:电子钟设计 ........................................................................................ 实验三:药片装瓶系统设计............................................................................. 附:数字逻辑课程设计调试日志及个人心得体会...........................................数字逻辑课程设计实验一:交通灯控制器设计一、实验目的①学习采用状态机方法设计时序逻辑电路。
②掌握ispLEVER软件的使用方法。
③掌握用VHDL语言设计数字逻辑电路。
④掌握ISP器件的使用。
二、实验所用器件和设备在系统可编程逻辑器件ISP1032 一片示波器一台万用表或逻辑笔一只TEC-5实验系统,或TDS-2B数字电路实验系统一台三、实验内容以实验台上的4个红色电平指示灯,4个绿色电平指示灯模仿路口的东南西北4个方向的红,绿,黄交通灯。
控制这些交通灯,使它们按下列规律亮,灭。
(1)初始状态为4个方向的红灯全亮,时间1s。
(2)东,西方向绿灯亮,南,北方向红灯亮。
东,西方向通车,时间5s。
(3)东,西方向黄灯闪烁,南,北方向红灯,时间2s。
(4)东,西方向红灯亮,南,北方向绿灯亮。
南,北方向通车,时间5s。
(5)东,西方向红灯闪烁,南,北方向黄灯闪烁,时间2s。
(6)返回(2),继续运行。
(7)如果发生紧急事件,例如救护车,警车通过,则按下单脉冲按钮,使得东,南,西,北四个方向红灯亮。
紧急事件结束后,松开单脉冲按钮,将恢复到被打断的状态继续运行。
实验一:3位比较器一、实验目的1、熟悉Xilinx ISE/ModelSim软件,掌握软件的VHDL程序输入、程序编译和程序仿真操作;2、学习利用VHDL语言设计三位比较器控制电路程序;3、根据三位比较器的原理设计VHDL程序,使得a,b为三位信息的输入端口,若a>b 则c=1。
否则c=0;二、VHDL源程序:●Compare3源代码:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity compare3 isport (a:in std_logic_vector(2 downto 0);b:in std_logic_vector(2 downto 0);c:out std_logic);end compare3;architecture Behavioral of compare3 isbeginprocess (a,b)beginif(a>=b)thenc<='1';elsec<='0';end if;end process;end Behavioral;●三位比较器testbench代码:LIBRARY ieee;USE ieee.std_logic_1164.ALL;-- Uncomment the following library declaration if using-- arithmetic functions with Signed or Unsigned values--USE ieee.numeric_std.ALL;ENTITY tbench1 ISEND tbench1;ARCHITECTURE behavior OF tbench1 IS-- Component Declaration for the Unit Under Test (UUT)COMPONENT compare3PORT(a : IN std_logic_vector(2 downto 0);b : IN std_logic_vector(2 downto 0);c : OUT std_logic);END COMPONENT;--Inputssignal a : std_logic_vector(2 downto 0) := "000";signal b : std_logic_vector(2 downto 0) := "000";--Outputssignal c : std_logic;-- No clocks detected in port list. Replace <clock> below with -- appropriate port nameBEGIN-- Instantiate the Unit Under Test (UUT)uut: compare3 PORT MAP (a => a,b => b,c => c);-- Clock process definitions-- Stimulus processstim_proc: processbegin-- hold reset state for 100 ns.wait for 10 ns;a <= "010";b <= "001";wait for 10 ns;a <= "110";b <= "111";wait for 10 ns;a <= "011";b <= "111";wait for 10 ns;a <= "110";b <= "101";wait for 10 ns;a <= "110";b <= "000";wait for 10 ns;a <= "100";b <= "101";wait for 1000 ns;-- insert stimulus herewait;end process;END;三、实验结果与分析●实验仿真波形图●实验结果分析由波形图观察可得该VHDLd代码实现了比较的功能,在输入a,b值大小不同的情况下,成许进行比较均能的出结果并给C赋值,当a>b,c=1, 反之c=0。
简易智能密码锁实验报告一、实验要求:设计并实现一个数字密码锁,密码锁有四位数字密码和一个确认开锁按键,密码输入正确,密码锁打开,密码输入错误进行警示。
基本要求:1、密码设置:通过键盘进行4 位数字密码设定输入,在数码管上显示所输入数字。
通过密码设置确定键(BTN 键)进行锁定。
2、开锁:在闭锁状态下,可以输入密码开锁,且每输入一位密码,在数码管上显示“-”,提示已输入密码的位数。
输入四位核对密码后,按“开锁”键,若密码正确则系统开锁,若密码错误系统仍然处于闭锁状态,并用蜂鸣器或led 闪烁报警。
3、在开锁状态下,可以通过密码复位键(BTN 键)来清除密码,恢复初始密码“0000”。
闭锁状态下不能清除密码。
4、用点阵显示开锁和闭锁状态。
提高要求:1、输入密码数字由右向左依次显示,即:每输入一数字显示在最右边的数码管上,同时将先前输入的所有数字向左移动一位。
2、密码锁的密码位数(4~6 位)可调。
二、系统设计:1、设计思路:在数字电路设计中,自顶向下设计方法的主要思想是对数字系统进行划分,将复杂的设计原理简化为相对简单的模块设计,不同的模块用来完成数字系统中某一部分的具体功能。
总体思路:2、总体框图:三、仿真波形及波形分析1、键盘输入模块图3-1 键盘输入仿真在上图中,clkjp时钟控制jpcat,jpcat控制kbout从0111到1110变换,然后手动控制kbin来模拟键盘的案件,从jpout就能看到的键入的数字。
2、防抖图3-2 防抖仿真上图中可以看见,btn1只在上升沿才有用,而clear会持续到一个周期的最后才会完毕。
3、状态转移图3-3 状态转移模块仿真如上图所示,开始,按下set=1,set1=1,setmode=1,进入设置密码状态。
然后,jpout连续输入2和6,改了密码,然后btn2=1代表按下了确定键,lockmode变成1,setmode变成0,状态从设定状态变成锁定状态。
再之后,ipout输入2和6,再次btn2=1(按下确定键),lockmode 变成0,状态从锁定状态变成开锁状态。
实验一4选一多路选择器一:实验目的及实验环境目的1、熟悉ModelSim SE 6.5c的verilog 的文本设计流程,组合电路的设计、仿真和测试。
2、用verilog语言完成设计4选一多路选择器。
3、熟悉文本输入及仿真步骤。
4、初步了解可编程器件设计的全过程。
环境1、P C 机一台2、M odelSim SE 6.5c二. 实验内容1、用verilog语言完成设计4选一多路选择器,2、用结构建模及数据流建模两种方法实现。
3、对于所设计的程序进行编译,检查纠错。
4、程序完善之后进行程序的仿真并进行波形的记录与分析三.实验步骤1、建立工程2、添加文件到工程3、编译文件4、查看编译后的设计单元5、将信号加入波形窗口6、运行仿真四.运行结果五.总结本次实验让我更加的熟悉modelsim使用方法,以及使用时应该注意的问题。
在试验中也学习到了Verilog语法。
在实验中我们应该注意verilog的格式要求,在用编程语言编程的时候,要自习留意语法标准,整理好逻辑思维的同时保证格式的正确。
否则就会浪费大量的时间来完成实验。
试验开始到结束这一过程中,我遇到了很多困难,后来都在同学的提醒和帮助下克服了。
相信有了这次对这个语言和这个软件的接触,我们都有了更加深入的理解。
六.源代码module mux41(a,b,c,d,s1,s0,out);input[1:0] a,b,c,d;input s1,s0;output[1:0] out;reg[1:0] out;always @(a or b or c or d or s1 or s0)begin :mux41case({s1,s0})2'b00: out<=a;2'b01: out<=b;2'b10: out<=c;2'b11: out<=d;default: out=a;endcaseendendmodulemodule sti;reg[1:0] a,b,c,d;reg s0,s1;wire[1:0] out;mux41 dtg(a,b,c,d,s0,s1,out);initialbegina=3'd0;b=3'd1;c=3'd2;d=3'd3;s0=0;s1=0;#100 a=3'd0;b=3'd1;c=3'd2;d=3'd3;s0=0;s1=1;#100 a=3'd0;b=3'd1;c=3'd2;d=3'd3;s0=1;s1=0;#100 a=3'd0;b=3'd1;c=3'd2;d=3'd3;s0=1;s1=1;endendmodule实验二、Verilog HDL设计分频器及计数器一.实验目的及实验环境1)实验目的1、掌握较复杂数字电路或系统的纯Verilog HDL实现方法;2、体会纯Verilog HDL语言输入设计与原理图输入设计的差别;3、更加熟练的使用modelsim软件;2)实验环境计算机一台,使用modelsim软件进行实验仿真3)实验内容1、使用modelsim设计二分频器;2、使用modelsim设计模8计数器;三.测试数据及运行结果1、分频器正常测试数据(3组)及运行结果;2、计数器正常测试数据(3组)及运行结果通过本次实验,进一步熟悉并加深了对verilong语言的认识,初步运用并熟悉了整个程序及操作,加深对分频器的理解。
实验一. 分频器设计一.实验目的1.熟悉QUARTUSII 软件的使用2.熟悉PLD设计流程3. 学习分频器的设计二.实验内容设计一个最大分频为225的分频器,将50MHz时钟作为输入三.实验框图四.管脚设定CLOCK_50 PIN_N2LEDR[0] PIN_AE23五.实验代码LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_UNSIGNED.all;ENTITY clk1 ISPORT(clk:IN STD_LOGIC;DIGIT:OUT STD_LOGIC);END clk1;ARCHITECTURE clk1 OF clk1 ISBEGINCOUNT: PROCESS(clk)V ARIABLE temp:STD_LOGIC_VECTOR(25 DOWNTO 0);BEGINIF(clk'EVENT AND clk = '1')THENtemp := temp+1;IF(temp(25)='1') THENtemp:=(OTHERS=>'0');END IF;END IF;DIGIT <= temp(24);END PROCESS count;END clk1;六.心得体会通过这次实验,我初步掌握了QUARTUSII 软件的使用,为今后的实验打下基础。
实验二. VHDL描述风格比较一.实验目的1.深入体会VHDL三种描述风格的区别2. 学习3输入表决器,异或门的实现3.设计一个5输入表决器。
二.实验内容以3输入表决器,异或门,通用寄存器等代码为例,深入体会VHDL描述风格。
1.学习已给的3输入表决器代码,完成3输入表决器的三种描述方式的验证比较。
在QUARTUS II中对程序进行编译,下载,验证。
使用拔码开关SW0,SW1,SW2作为三个输入,输出在LEDR0表示,亮表示‘1’,不亮表示‘0’2.学习已给的异或门代码,完成异或门的三种描述方式的验证比较。
数字逻辑课程设计实验实验报告姓名徐同学、陈同学、连同学、朱同学、熊同学学院计算机学院专业计算机科学与技术班级 xxxxxxxxxx学号xxxxxxxxxx/xxxxxxxxxx/xxxxxxxxxx/xxxxxxxxxx/xxxxxxxxxx2015年7 月北京邮电大学课程设计报告课程设计名称数字逻辑学院计算机指导教师班级班内序号学号学生姓名成绩xxxxxxxxxx30 xxxxxxxxxx 徐同学xxxxxxxxxx14 xxxxxxxxxx 陈同学xxxxxxxxxx13 xxxxxxxxxx 连同学xxxxxxxxxx28 xxxxxxxxxx 朱同学xxxxxxxxxx26 xxxxxxxxxx 熊同学课程设计内容教学目的:掌握 QuartusII 软件的使用方法,用VHDL进行较复杂逻辑电路的设计和调试基本内容:1.交通灯控制 2.电子钟 3.药片装瓶系统团队分工:连同学:负责编写、调试交通灯。
徐同学、陈同学:负责编写、调试电子钟,其中徐同学负责实验报告的撰写朱同学、熊同学:负责编写调试药片装瓶系统。
课程设计报告(附页)课程设计成绩评定遵照实践教学大纲并根据以下四方面综合评定成绩:1、课程设计目的任务明确,选题符合教学要求,份量及难易程度2、团队分工是否恰当与合理3、综合运用所学知识,提高分析问题、解决问题及实践动手能力的效果4、是否认真、独立完成属于自己的课程设计内容,课程设计报告是否思路清晰、文字通顺、书写规范评语:成绩:指导教师签名:2015年月日注:评语要体现每个学生的工作情况,可以加页。
实验一:交通灯一、实验目的1)学习采用状态机方法设计时序逻辑电路2)掌握QuartusII软件的使用方法3)掌握用VHDL语言实现有限状态机4)掌握ISP器件的使用二、实验所用器件和设备可编程逻辑器件MAX7000S系列一片TEC_8实验系统一台USB—BLASTER下载线一条三、实验要求以实验台上的12个指示灯分别代表红,黄,绿三种信号的灯。
控制这些交通灯,使他们按照一定规律进行亮,灭。
四、设计思路:整体思路通过一个状态机进行控制,一共五个状态(紧急状态和初始状态为一个状态)。
在通过不同的分频信号进行状态之间的转移。
有0.2s,1s,2s,5s四种信号。
其中对置零和紧急信号单独响应,进入初始和紧急状态。
1.对分频信号的处理由于每个状态的时间有所不同,所以根据不同的状态对计数器进行不同时间的计数。
根据状态机的输出信号,若处于第一个状态则进入1s的分频,若处于第二第四状态则进入5s的分频,若处于第三第五状态则进入2s的分频。
其中对于闪烁状态单独处理,产生0.2s的频率进行控制。
2.同步时序进程当有状态发生改变,则将当前状态设置为下一个状态。
当有置零信号产生,则将当前状态设置为初始状态。
五、具体代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_signed.all;use ieee.std_LOGIC_ARITH.all;entity signal_light isport (urgency,clk,reset:in std_logic; --紧急,时钟,复位light : out std_logic_vector(11 downto 0); --12个灯,按(红黄绿,东西南北)顺序p:out std_logic; --喇叭信号,随着黄灯闪发出声音timingEW,timingSN: out std_logic_vector(3 downto 0) --倒计时的计时器,分别为东西方向和南北方向);end signal_light;architecture data of signal_light istype state is (S0,S1,S2,S3,s4); --状态定义signal current_state,next_state:state; --定义当前状态,下一状态signal enable: std_logic_vector(4 downto 0); --时钟计时器的使能信号,分别表示倒计时信号,5s,2s,1s,0.2ssignal num_1s : integer range 0 to 99999; --表示各个时钟的分频计数器signal num_2s : integer range 0 to 199999;signal num_5s : integer range 0 to 499999;signal num_02s: integer range 0 to 199999;signal num : integer range 0 to 99999;signal clock_1s,clock_2s,clock_5s,clock_02s,clock,clock_num: std_logic; --表示各个时钟的进位信号signal timing: integer range 0 to 7; --表示交通灯倒计时的计时信号beginp<=clock_02s;process(clk,enable) --时钟计数的进程beginif(clk='1'and clk'event) then --启动时的1s计时if(enable(1)='1' and urgency='0') then --紧急情况计时器停止,保留状态if(num_1s=99999) thennum_1s<=0;clock_1s<='1';elseclock_1s<='0';num_1s<=num_1s+1;end if;end if;if(enable(1)='0') thennum_1s<=0;clock_1s<='0';end if;if(enable(4)='1' and urgency='0') then --倒计时的1s计时器if(num=99999) thennum<=0;clock_num<='1';elseclock_num<='0';num<=num+1;end if;end if;if(enable(4)='0') thennum<=0;clock_num<='0';end if;if(enable(2)='1' and urgency='0') then --2s计时器if(num_2s=199999) thennum_2s<=0;clock_2s<='1';elseclock_2s<='0';num_2s<=num_2s+1;end if;end if;if(enable(2)='0') thennum_2s<=0;clock_2s<='0';end if;if(enable(3)='1' and urgency='0') then --5s计时器if(num_5s=499999) thennum_5s<=0;clock_5s<='1';elseclock_5s<='0';num_5s<=num_5s+1;end if;end if;if(enable(3)='0') thennum_5s<=0;clock_5s<='0';end if;if(enable(0)='1' and urgency='0') then --0.2s计时器if(num_02s=19999) thennum_02s<=0;clock_02s<=not clock_02s; --每过0.2s,计数器进位信号翻转,由此实现黄灯的闪烁elsenum_02s<=num_02s+1;end if;end if;if(enable(0)='0') thennum_02s<=0;clock_02s<='0';end if;end if;end process;clock<=clock_2s or clock_5s or clock_1s; --clock 表示当前有状态转移啦(三个计时器任意一个到时)process(current_state,urgency) --根据当前状态,进行相应操作,并确定下一状态beginif(urgency='1') thenlight<="100100100100"; --紧急情况,全红else case current_state iswhen s0 =>light<="100100100100";enable<="00010";next_state<=s1;when s1 =>light<="001001100100";enable<="11000";next_state<=s2;when s2 =>light(10)<=clock_02s; --黄灯闪烁light(7)<=clock_02s;light(6 downto 0)<="0100100";light(11)<='0';light(9 downto 8)<="00";enable<="10101";next_state<=s3;when s3 =>light<="100100001001";enable<="11000";next_state<=s4;when s4 =>light(11 downto 5)<="1001000";light(4)<=clock_02s; --黄灯闪烁light(1)<=clock_02s;light(3 downto 2)<="00";light(0)<='0';enable<="10101";next_state<=s1;when OTHERS => NULL ;end case;end if;end process;process(clock,reset) --状态转移beginif(reset='1') then --复位current_state<=s0;elsif(clock'event and clock='1') thencurrent_state<=next_state;end if;end process;process(clock_num,reset) --timing倒计时计数,从7开始,正常运行时以7s为周期运转。