交通灯控制程序设计_第1页
交通灯控制程序设计_第2页
交通灯控制程序设计_第3页
交通灯控制程序设计_第4页
交通灯控制程序设计_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验三交通灯控制程序设计1.实验目的和要求完成交通灯控制器的设计,掌握状态机的使用。2.实验内容或原理在十字路口,每条道路各有一组红,黄,绿和倒计时显示器,用以指挥车辆和行人有序的通行。其中,红灯亮表示该道路禁止通行;黄灯亮表示停车;绿灯亮表示可以通行;倒计时显示器是用来显示允许通行或是禁止通行的时间。根据交通灯的工作方式,设计的交通灯由两组红绿灯信号控制四组交通灯,其中处于同一个方向的交通灯共用一组红绿灯信号。显示顺序为:方向一为黄灯、红灯、绿灯,方向二为绿灯、黄灯,红灯。‘0'表示灯亮,‘1'表示灯熄。其中绿灯,黄灯,红灯的持续时间分别为25秒,5秒,20秒。系统框图如图2所示,系统包括分频模块及信号灯模块。分频模块对系统时钟进行秒分频,为信号灯提供秒输入信号;信号灯模块实现交通灯控制的逻辑功能。交通灯控制器的设计方案设东西方向和南北方向的车流量大致相同,因此红、绿、黄灯的时长也相同,定为红灯20秒,绿灯25秒,黄灯5秒,同时用数码管指示当前状态(红、绿、黄灯)剩余时间。方案一:采用vHDL语言直接编写,实现交通灯指挥功能。方案二:采用模块层次化设计,将此设计分为四个模块:计时模块,状态控制模块,信号灯显示模块,数码扫描显示模块。将四个模块再分别用VHDL语言编写成,做成原理图模块,用原理图输入法做整个设计的顶层文件。交通灯原理分析当SPC=T'时,数码管停止计时,S输出为B〃010010〃,即南北、东西方向指示灯示数维持不变。当SPC='1'跳变到SPC='O'时,数码管继续计时,恢复正常工作状态。当SPC='O'时,交通即开始正常工作。R='1'时,进入初始状态SO="OO1O1O"经过20秒,变为S1="100010"再经过5秒,变为S2="010001",再经过20秒,变为S3="010100",再经过5秒,S变为B"001010"……如此循环下去。南北、东西方向的红绿灯按表一表二变化。表一交通灯状态转换表东西(A)方黄灯红灯绿灯向5秒20秒25秒南北(B)方绿灯黄灯红灯向25秒520秒表二交通灯状态转换表SPCS备注1010010指示灯示数维持不变0S0:001010持续5秒,转到S1S1:100010持续20秒,转到S2S2:010001持续5秒,转到S3S3:010100持续20秒,转到S0注:S的六位分别对应东西方向(A方向)的红绿黄和南北方向(B方向)的红绿黄。'1'表示亮,‘0'表示灭。VHDL仿真实验(1)为此工程新建一个文件夹。启动QuartusII软件工作平台,新建工程设计文件名为traffic.vhd。在新建的VHDL模型窗口下编写源程序代码如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;USEIEEE.STD_LOGIC_ARITH;ENTITYtrafficISPORT(CLK,R,SPC:INSTD_LOGIC;LIGHT:OUTSTD_LOGIC_VECTOR(5DOWNTO0);Q1,Q2:OUTINTEGERRANGE0TO25;LED1,LED2,LED3,LED4:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDtraffic;ARCHITECTUREbehavOFtrafficISTYPESTATESIS(S0,S1,S2,S3);SIGNALSTATE:STATES;SIGNALT1,T2:INTEGERRANGE0TO25;SIGNALL1,L2,L3,L4:INTEGERRANGE0TO9;BEGINP1:PROCESS(CLK,STATE)BEGINIFR='1'THENSTATE<=S0;T1<=20;T2<=25;ELSIFSPC='1'THENLIGHT<="010010";ELSIFCLK'EVENTANDCLK='1'THENCASESTATEISWHENS0=>LIGHT<="100010";T1<=T1-1;T2<=T2-1;Q1<=T1;Q2<=T2;IFT1=0THENSTATE<=S1;T1<=5;T2<=5;ENDIF;WHENS1=>LIGHT<="001010";T1<=T1-1;T2<=T2-1;

Q1<=T1;Q2<=T2;IFT1=0THENSTATE<=S2;T1<=25;T2<=20;ENDIF;WHENS2=>LIGHT<="010100";T1<=T1-1;T2<=T2-1;Q1<=T1;Q2<=T2;IFT2=0THENSTATE<=S3;T1<=5;T2<=5;ENDIF;WHENS3=>LIGHT<="010001";T1<=T1-1;T2<=T2-1;Q1<=T1;Q2<=T2;IFT1=0THENSTATE<=S0;T1<=20;T2<=25;ENDIF;WHENOTHERS=>STATE<=S0;T1<=20;T2<=25;ENDCASE;ENDIF;endPROCESS;p2:PROCESS(T1,T2)beginL1<=T1/10;L2<=T1REM10;L3<=T2/10;L4<=T2REM10;ENDPROCESS;P3:PROCESS(L1)BEGINCASEL1ISWHEN0=>LED1<="0000";WHEN1=>LED1<="0001";WHEN2=>LED1<="0010";WHEN3=>LED1<="0011";WHEN4=>LED1<="0100";WHEN5=>LED1<="0101";WHEN6=>LED1<="0110";WHEN7=>LED1<="0111";WHEN8=>LED1<="1000";WHEN9=>LED1<="1001";WHENOTHERS=>LED1<="0000";ENDCASE;ENDPROCESS;P4:PROCESS(L2)BEGINCASEL2ISWHEN0=>LED2<="0000";WHEN1=>LED2<="0001";WHEN2=>LED2<="0010";WHEN3=>LED2<="0011";WHEN4=>LED2<="0100";WHEN5=>LED2<="0101";WHEN6=>LED2<="0110";WHEN7=>LED2<="0111";WHEN8=>LED2<="1000";WHEN9=>LED2<="1001";WHENOTHERS=>LED2<="0000";ENDCASE;ENDPROCESS;P5:PROCESS(L3)BEGINCASEL3ISWHEN0=>LED3<="0000";WHEN1=>LED3<="0001";WHEN2=>LED3<="0010";WHEN3=>LED3<="0011";WHEN4=>LED3<="0100";WHEN5=>LED3<="0101";WHEN6=>LED3<="0110";WHEN7=>LED3<="0111";WHEN8=>LED3<="1000";WHEN9=>LED3<="1001";WHENOTHERS=>LED3<="0000";ENDCASE;ENDPROCESS;P6:PROCESS(L4)BEGINCASEL4ISWHEN0=>LED4<="0000";WHEN1=>LED4<="0001";WHEN2=>LED4<="0010";WHEN3=>LED4<="0011";WHEN4=>LED4<="0100";WHEN5=>LED4<="0101";WHEN6=>LED4<="0110";WHEN7=>LED4<="0111";WHEN8=>LED4<="1000";WHEN9=>LED4<="1001";WHENOTHERS=>LED4<="0000";ENDCASE;ENDPROCESS;ENDbehav;(2)创建工程及全程编译。完成源代码输入后即可创建工程然后进入全程编译,检查设计是否正确。选择Tools->NetlistViewers->RTLViewers命令,即HDL的RTL级图形观测器,选择好后即自动弹出计数器设计的RTL电路,如下图:(3)仿真。建立波形编辑文件进行时序仿真或时序仿真,仿真结果如下图所示时序仿真:]pc ISO.□ns 32D.0ns <IEO.0ns 6400he SOO.0ns ®Zl0hei i i i i iIE.InsJCIK□LED1□LED2田LEDSLEDlClLtWFUS:C?N^npCLKF.汕:匡LEDLLlI.KIi?FLED3ELED1EhlE徒LlT.T74"K:imePJ「inIc「:-CIK□LED1□LED2田LEDSLEDlClLtWFUS:C?N^npCLKF.汕:匡LEDLLlI.KIi?FLED3ELED1EhlE徒LlT.T74"K:imePJ「inIc「:-— ;恥】鼻RX[辽[1JL::ptt[b:U5^[ipx:习0KZZ):ZZnoK=fjrtm冋T^jLijcr^TEfmr可Eti5T何忙tv⑹竄叼何畑海r四)i2oj[5])c卫xWHdE厂巧冋巾I*】:i小)w阿庐t丙me耐—tr刁Gwx帀:CFij両诃[□]:勺卄 ■-1打"[0]C瓦[:]二二「何CD卫Z1EK四耳」:」1)0或[1] Yj工]畑黑⑴^r([2j|tiI{[o/)tDl([3r^a画回【门◎;;血11211^jwwtww顾河河何河河订订时冋邓硕回丙:円尸辽炉nr「小¥CLKRSPCLEL1lireLED3LEMQI02LIGHT[r:2.41asiWX til. X CT⑶;x::硬件测试。完成仿真实验后,若仿真结果无误,则进行锁脚,然后下载到FPGA实验箱上进行硬件测试。选择试验箱的模式为模式5,时钟CLK选择为CLOCKO(PIN_28脚),频率f=4Hz,LDEl[3..O]对应的引脚编号PIN-20,19,1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论