十字路口交通灯控制器设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1实验十字路口交通灯控制器设计一、实验目的1.学习较复杂数字电路系统的设计;2.熟悉QuartusⅡ软件的使用方法;3.学习VHDL基本逻辑电路和状态机电路的综合设计应用。二、实验基本原理本实验中主要应用了状态机以及减法器的设计原理。在状态连续变化的数字系统设计中,采用状态机的设计思想有利于提高设计效率,增加程序的可读性,减少错误的发生几率。同时,状态机的设计方法也是数字系统中一种最常用的设计方法。一般来说,标准状态机可以分为穆尔(Moore)机和米利(Mealy)机两种。在穆尔机中,其输出仅仅是当前状态值的函数,并且仅在时钟上升沿到来时才发生变化。米利机的输出则是当前状态值、当前输出值和当前输入值的函数。三、实验内容设计并调试好一个由一条东西方向和一条南北方向的汇合点形成的十字交叉路口的交通灯控制器,具体要求如下:1.有MR(主红)、MY(主黄)、MG(主绿)、CR(乡红)、CY(乡黄)、CG(乡绿)六盏交通灯需要控制;2.交通灯由绿转红有4秒黄灯亮的间隔时间,由红转绿没有间隔时间;3.系统有MRCY、MRCG、MYCR、MGCR四个状态;4.南北方向右侧各埋有一个传感器,当有车辆通过南北方向时,发出请求信号S=1,其余时间S=0;5.平时系统停留在MGCR(东西方向通行)状态,一旦S信号有效,经MYCR(黄灯状态)转入MRCG(南北方向通行)状态,但要保证MGCR的状态不得短于一分钟;6.一旦S信号无效,系统脱离MRCG状态。随即经MRCY(黄灯状态)进入MGCR状态,即使S信号一直有效,MRCG状态也不得长于20秒钟。四、主要仪器设备及耗材PC机一台、QuartusII软件、EDA实验箱一台、下载电缆一根(已接好)导线若干。五、实验步骤1.用文本输入法设计交通信号控制器(1)由实验要求写出设计思路如下:a)主、乡道各设有一个绿、黄、红指示灯,两个显示数码管。b)东西方向处于常允许通行状态,而乡道有车来才允许通行。当东西方向允许通行亮绿灯时,乡道亮红灯。而乡道允许通行亮绿灯时,东西方向亮红灯。c)当主、乡道均有车时,两者交替允许通行,东西方向每次放行60s,支干道每次放行20s,在每次由亮绿灯变成亮红灯的转换过程中,要亮4s的黄灯作为过渡,并进行减计时显示。整个交通控制器的状态转换图如下图示(仅画出东西方向状态转换图,乡道类似):2东西方向状态转换图(2)打开QuartusII软件,进入编辑环境。(3)充分理解状态转换图,根据状态转换图设计出相应的应用状态机的交通信号控制器程序。打开QuartusII软件,进入编辑环境。创建新的文本文件,命名为traffic。编写文本如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitytrafficisport(clk,ena,s:instd_logic;--时钟,使能,传感器S输入信号mql,mqh,cql,cqh:bufferstd_logic_vector(3downto0);--计数显示信号mr,my,mg,cr,cy,cg:outstd_logic);--红绿灯信号输出endtraffic;architectureoneoftrafficissignalmq:integerrange0to4;signalcq:integerrange0to5;beginprocess(clk,ena,s)beginifena='1'thenifrising_edge(clk)thenS=0立刻转换下一状态S=1S=1S=0S=0S=1STEP0系统下载,东西方向开始60s倒计时,不论S有无信号,皆为MGCR状态。判断SSTEP1保持MGCR状态,显示保持4秒。STEP2转入MYCR状态,开始4s倒计时STEP3转入MRCG状态,开始20s倒计时判断SSTEP4转入MRCY状态,开始4s倒计时3casemqis--东西方向状态when0=--MRCG状态ifs='1'then--判断S值ifmql=0then--倒计时减法计数mql=1001;ifmqh0thenmqh=mqh-1;elsemq=1;mql=1001;mqh=0101;mr='0';my='0';mg='1';endif;--倒计时结束,将指向下一状态并赋初值elsemql=mql-1;endif;elsemq=4;mql=0011;mqh=0000;mr='1';my='0';mg='0';endif;when1=--MGCR状态casesiswhen'1'=ifmql=0thenmql=1001;ifmqh0thenmqh=mqh-1;elsemq=2;mql=0011;mqh=0000;mr='0';my='1';mg='0';endif;elsemql=mql-1;endif;when'0'=ifmql=0thenmql=1001;ifmqh0thenmqh=mqh-1;elsemq=3;mql=0011;mqh=0000;mr='0';my='0';mg='1';endif;elsemql=mql-1;endif;whenothers=4null;endcase;when2=--MYCR状态ifmql0thenmql=mql-1;elsemq=0;mql=0011;mqh=0010;mr='1';my='0';mg='0';endif;when3=--MGCR状态ifs='0'then--S无信号,保持状态mql=0011;mqh=0000;mr='0';my='0';mg='1';elsemq=2;mql=0011;mqh=0000;mr='0';my='1';mg='0';--一旦S有信号指向下一状态endif;when4=--MRCY状态ifmql0thenmql=mql-1;elsemq=1;mql=1001;mqh=0101;mr='0';my='0';mg='1';endif;whenothers=null;endcase;casecqis--乡道状态when0=cq=1;cql=0011;cqh=0110;cr='1';cy='0';cg='0';when1=casesiswhen'1'=ifcql=0thencql=1001;ifcqh0thencqh=cqh-1;endif;elsecql=cql-1;ifcql=0100andcqh=0000thencq=2;cql=0011;cqh=0000;cr='1';cy='0';cg='0';endif;endif;when'0'=5ifcql=0thencql=1001;ifcqh0thencqh=cqh-1;endif;elsecql=cql-1;ifcql=0100andcqh=0000thencq=5;cql=0011;cqh=0000;cr='1';cy='0';cg='0';endif;endif;whenothers=null;endcase;when2=ifcql0thencql=cql-1;elsecq=3;cql=1001;cqh=0001;cr='0';cy='0';cg='1';endif;when3=ifs='1'thenifcql=0thencql=1001;ifcqh0thencqh=cqh-1;elsecq=4;cql=0011;cqh=0000;cr='0';cy='1';cg='0';endif;elsecql=cql-1;endif;elsecq=4;cql=0011;cqh=0000;cr='0';cy='1';cg='0';endif;when4=ifcql0thencql=cql-1;elsecq=1;cql=0011;cqh=0110;cr='1';cy='0';cg='0';endif;when5=ifs='0'thencql=0011;cqh=0000;cr='1';cy='0';cg='0';elsecq=2;cql=0011;cqh=0000;cr='1';cy='0';cg='0';endif;whenothers=null;6endcase;endif;endif;endprocess;endone;(4)对文件保存并进行编译仿真,判断其正确性,并将正确的文件进行元件例化(顶层文件),生成通用符号文件(CreateSymbolFilesforCurrentFile)。如右图示:2.用文本输入法设计分频计数器和动态数码管扫描输出文件(1)由本实验要求用数码管显示倒数计时计数,故还要设计分频计数器和动态数码管扫描输出文件。(2)参考书本分频计数器设计,打开QuartusII软件,进入编辑环境。创建新的文本文件,命名为clkgen。编写文本如下:libraryieee;useieee.std_logic_1164.all;entityclkgenisport(clk:instd_logic;newclk1:outstd_logic);endentityclkgen;architectureoneofclkgenissignalcnter1:integerrange0to10#999#;beginprocess(clk)isbeginifclk'eventandclk='1'thenifcnter1=10#999#thencnter1=0;elsecnter1=cnter1+1;endif;endif;endprocess;process(cnter1)isbeginifcnter1=10#999#thennewclk1='1';elsenewclk1='0';endif;endprocess;endarchitectureone;(3)对文件保存并进行编译仿真,判断其正确性,并将正确的文件进行元件例化(顶层文件),生成通用符号文件(CreateSymbolFilesforCurrentFile)。如右上图示:(4)创建新的文本文件,命名为scan。编写文本如下:7libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityscanisport(clk:instd_logic;num1,num2,num7,num8:instd_logic_vector(3downto0);sel:outstd_logic_vector(2downto0);num:outstd_logic_vector(3downto0));end;architecturebehaveofscanissignalq:std_logic_vector(2downto0);beginprocess(clk)beginifrising_edge(clk)thenifq=000thennum=num1;sel=000;q=q+1;endif;ifq=001thennum=num2;sel=001;q=100;endif;ifq=100thennum=num7;sel=110;q=q+1;endif;ifq=101thennum=num8;sel=111;q=000;endif;endif;endprocess;endbehave;(5)对文件保存并进行编译仿真,判断其正确性,并将正确的文件进行元件例化(顶层文件),生成通用符号文件(CreateSymbolFilesforCurrentFile)。如右上图示:3.用原理图输入法设计综合文件(1)根据实验要求设计整个交通控制器的原理图如下图示:(2)通过调用编辑好

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功