预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10
亲,该文档总共11页,到这已经超出免费预览范围,如果喜欢就直接下载吧~
如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
实验:交通灯实验目的学习与日常生活相关且较复杂数字系统设计;进一步熟悉EDA实验装置和QuartusⅡ软件的使用方法;学习二进制码到BCD码的转换;设计要求完成设计、仿真、调试、下载、硬件测试等环节,在型EDA实验装置上实现一个由一条主干道和一条乡间公路的汇合点形成的十字交叉路口的交通灯控制器功能,具体要求如下:有MR(主红)、MY(主黄)、MG(主绿)、CR(乡红)、CY(乡黄)、CG(乡绿)六盏交通灯需要控制;交通灯由绿转红前有4秒亮黄灯的间隔时间,由红转绿没有间隔时间;乡间公路右侧各埋有一个串连传感器,当有车辆准备通过乡间公路时,发出请求信号S=1,其余时间S=0;平时系统停留在主干道通行(MGCR)状态,一旦S信号有效,经主道黄灯4秒(MYCR)状态后转入乡间公路通行(MRCG)状态,但要保证主干道通行大于一分钟后才能转换;一旦S信号消失,系统脱离MRCG状态,即经乡道黄灯4秒(MRCY)状态进入MGCR状态,即使S信号一直有效,MRCG状态也不得长于20秒钟;控制对象除红绿灯之外,还包括分别在主干道和乡间公路各有一个两位十进制倒计时数码管显示。主要仪器设备微机1台QuartusII集成开发软件1套EDA实验装置1套实验步骤总体思路:本实验是实现十字交叉路口的交通灯控制器功能,分析每个状态的情况。状态一:主干道绿灯亮,乡干道红灯亮,数码管60s倒计时,计数完后若乡干道有车要求通过,则转到状态二;若没有车要求通过,则继续状态一。状态二:主干道由绿灯变为黄灯亮,乡干道仍然为红灯亮,数码管4s倒计时,计数完后,然后进入状态三。状态三:主干道由黄灯变为红灯亮,乡干道由红灯变为绿灯亮,数码管20s倒计时。若倒计时期间乡干道没有车要求通过,则立即进入状态四;若一直有车要求通过,则最多维持20s之后进入状态四。状态四:主干道仍然为红灯亮,乡干道由绿灯变为黄灯亮,数码管4s倒计时,计数完后,转至状态一。可见,交通灯就是一直循环上述四个状态。模块化分析:把程序的各个部分模块化。分频模块:本实验采用了100HZ的时钟做扫描频率,2.5HZ的时钟做计数频率,故需要2个时钟。P1:process(clk)--分频variablecount1:std_logic_vector(7downto0);beginifclk'eventandclk='1'thencount1:=count1+1;ifcount1<20thenclkk<='0';elsifcount1<40thenclkk<='1';elsecount1:="00000000";clkk<='0';endif;endif;endprocessP1;分频模块封装好的元件符号如下:时序仿真结果如下:计数模块:本实验共有3种模的计数,分别为模60、模4和模20,而且是减1计数。用一个变量来选择给数码管赋不同的初值,以实现不同的模值计数。P2:process(m,cz)--赋不同初值variableZ:std_logic_vector(7downto0);begincasemiswhen"00"=>Z:="01100000";--60when"01"=>Z:="00100000";--20when"10"=>Z:="00000100";--4WHENOTHERS=>NULL;endcase;ifcz="11"orcz="10"orrst='0'thenbcd<=Z;b<='1';elseb<='0';endif;endprocessP2;P22:process(clkk,en,rst)--减1计数variablebcd2:std_logic_vector(7downto0):="01100000";beginifrising_edge(clkk)thencasebiswhen'1'=>bcd2:=bcd;WHENOTHERS=>NULL;endcase;ifrst='1'thenifen='1'thenifbcd2>1thenifbcd2(3downto0)="0000"then--bcd2:=bcd2-7;bcd2(7downto4):=bcd2(7downto4)-"0001";bcd2(3downto0):="1001";elsebcd2:=bcd2-1;endif;elseifzt="00"thens60<='1';s20<='0';s4<='0';elsifzt="10