;Р?end process;Р?Р?process(clk)Р?variable count:integer range 0 to 25;Р?beginР?if(clk'event and clk='1') thenР if count=0 then --状态的循环Р if state=3 thenР state<=0;Р elseР state<=state+1;Р end if;Р case state isР when 0=>count:=yellow_time; --选择状态对应的时间Р when 1=>count:=green_time;Р when 2=>count:=yellow_time;Р when others=>count:=green_time;Р end case;Р elseР count:=count-1; --状态的计时Р end if;Р?end if;Р?end process;Рend act;Р实验结果Р点击编译,可以看出没有出现错误Р设计出相应的波形文件并加载后,点击仿真,就可以出现如下的波形Р由时序仿真的结果可以看出,它实现了红绿灯的交替以及十字路口的两路灯的协调Р实验总结:Р此次实验做出的交通灯是建立在时钟频率为1HZ的基础上的,而硬件实验中提供的时钟信号一般都为几兆赫兹,因此如果这个实验想要下载到实验箱上去模拟的的话就需要在前面加上分频的代码,并将clk换成更改后的时钟Р通过实验的结果可以看出,在红绿灯稳定之前,有几秒钟的不稳定时期,这个是由于在设计是没有给变量赋给初值造成的,这在以后的设计中尤其需要注意,而在稳定后,功能实现较好,各时间段的衔接很顺畅,并且计时的时候用的是定义的常数green_time和yellow_time本实验中定义式25秒和5秒,这种做法可以方便以后的维护,修改起来也比较方便,并且使代码比较容易读懂。