VHDL语言的十字路口交通灯控制器设计.doc

上传人:xin****828 文档编号:6657747 上传时间:2020-03-01 格式:DOC 页数:9 大小:602.50KB
返回 下载 相关 举报
VHDL语言的十字路口交通灯控制器设计.doc_第1页
第1页 / 共9页
VHDL语言的十字路口交通灯控制器设计.doc_第2页
第2页 / 共9页
VHDL语言的十字路口交通灯控制器设计.doc_第3页
第3页 / 共9页
点击查看更多>>
资源描述
南昌大学实验报告 学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期: 实验成绩: 实验五 十字路口交通灯控制器设计 一、实验目的1、进一步加强经典状态机的设计2、学会设计模可变倒计时计数器二、实验要求一条主干道,一条乡间公路。组成十字路口,要求优先保证主干道通行。有MR(主红)、MY(主黄)、MG(主绿)、CR(乡红)、CY(乡黄)、CG(乡绿)六盏交通灯需要控制;交通灯由绿红有4秒黄灯亮的间隔时间,由红绿没有间隔时间;系统有MRCY、MRCG、MYCR、MGCR四个状态;乡间公路右侧各埋有一个传感器,当有车辆通过乡间公路时,发出请求信号S=1,其余时间S=0;平时系统停留在MGCR(主干道通行)状态,一旦S信号有效,经MYCR(黄灯状态)转入MRCG(乡间公路通行)状态,但要保证MGCR的状态不得短于一分钟;一旦S信号无效,系统脱离MRCG状态。随即经MRCY(黄灯状态)进入MGCR状态,即使S信号一直有效,MRCG状态也不得长于20秒钟。三、设计过程1,交通灯工作原理分析:根据交通灯控制器的功能与要求,将其总体电路分为状态控制,倒计时,数码管显示,信号灯显示模块。外部两路脉冲振荡器的频率选为1 kHz和1 Hz的信号,1khz信号用于显示模块的扫描,1 Hz信号用做倒计时模块的计数脉冲。由于实验箱只能接一个信号源故加入分频模块。2,计时电路应满足下列条件1)当S=1,且计数器已完成60计数时,计数器进入模4计数,随后进入模 20计数,再进入模4计数,再回到模60计数 2)当计数器进行摸20计数时,一旦S变为0,计数器立马进入模4计数, 再进入模60计数 3)完成模20计数后,不论S为0或1,计数器进入模4计数,再进入模60 计数 4)若计数器未完成模60计数,不论S如何变话,计数器将继续进行模60 计数3、使用文本设计底层文件,并生成相应元器件,再使用原理图设计顶层文件四、实验步骤 1、顶层文件的设计顶层原理图设计可以依据系统框图进行,由状态控制计数模块,数码管显示分频模块和交通灯显示模块(jtdjs,jtdfp,jtdxs)三部分组成。2,各模块设计文件 jtdjs:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JTDJS IS PORT(CLK1,S,RESET:IN STD_LOGIC; b:BUFFER STD_LOGIC; tim:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END JTDJS;ARCHITECTURE behav OF JTDJS IS TYPE STA IS(mgcr,mycr,mrcg,mrcy); SIGNAL STATE:STA;BEGIN PROCESS(CLK1) - VARIABLE b:STD_LOGIC:=0; VARIABLE a:STD_LOGIC:=0; VARIABLE th,tl:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN IF RESET=0 THEN STATE=mgcr; th:=0000 ;tl:=0000;a:=0;b IF S=1 AND b=1 THEN STATE=mycr;a:=0;th:=0000;tl:=0100;b=0; - ELSIF S=0 AND b=1 THEN STATE=mgcr;a:=0;-th:=0110;tl:=0000; ELSE IF a=0 THEN th:=0110;tl:=0000;a:=1; else IF NOT(th=0000 AND tl=0010) then IF tl=0000 then tl:=1001;th:=th-1; else tl:=tl-1; END IF; ELSE th:=0000;tl:=0001;a:=0;b IF a=0 THEN th:=0000;tl:=0100;a:=1; else IF NOT(th=0000 AND tl=0010) then tl:=tl-1; ELSE th:=0000;tl:=0001;a:=0;STATEIF S=1 THEN IF a=0 THEN th:=0010;tl:=0000;a:=1; else IF NOT(th=0000 AND tl=0010) then IF tl=0000 then tl:=1001;th:=th-1; else tl:=tl-1; END IF; ELSE th:=0000;tl:=0001;a:=0;STATE=mrcy; END IF; END IF; ELSE a:=0;STATEIF a=0 THEN th:=0000;tl:=0100;a:=1; else IF NOT(th=0000 AND tl=0010) then tl:=tl-1; ELSE th:=0000;tl:=0001;a:=0;STATE=mgcr; END IF; END IF; END CASE;tim = th & tl;END IF;end process;END behav; JTDFPLIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY JTDFP IS PORT (CLK : IN STD_LOGIC; JIN : IN STD_LOGIC_VECTOR(7 DOWNTO 0); SG : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); sel0,sel1,sel2 : OUT STD_LOGIC; CLK1:buffer STD_LOGIC ); END JTDFP;ARCHITECTURE behav OF JTDFP IS SIGNAL Q : STD_LOGIC_VECTOR(11 DOWNTO 0); SIGNAL P,R: STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL CONT8: STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL CONT : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL YM : STD_LOGIC_VECTOR(11 DOWNTO 0); SIGNAL A : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN F:PROCESS(CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN CONT=CONT+1; IF CONT=100 THEN CLK1=1;CONT=00000000; ELSE CLK1=0; END IF; END IF; END PROCESS; C:PROCESS( CLK) BEGIN IF CLKEVENT AND CLK=1 THEN IF CONT8001 THEN CONT8 =CONT8+1; ELSE CONT80); END IF; END IF; CASE CONT8 IS WHEN 000 = sel0=0;sel1=1;sel2=0;A sel0=1;sel1=0;sel2=0;ANULL; END CASE; END PROCESS ; D:PROCESS(A) BEGIN CASE A IS WHEN 0000 =SGSGSGSGSGSGSGSGSGSGNULL; END CASE; END PROCESS; END behav; JTDXSLIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JTDXS ISPORT(CLK1,S,B,RESET:IN STD_LOGIC; COUNT: IN STD_LOGIC_VECTOR(7 DOWNTO 0); MG,MY,MR,CG,CY,CR:OUT STD_LOGIC);END JTDXS ;ARCHITECTURE behav OF JTDXS IS TYPE STATES IS(mgcr,mycr,mrcg,mrcy); SIGNAL STATE:STATES; BEGIN PROCESS(STATE,CLK1, S,RESET) BEGIN IF RESET=0 THEN STATE=mgcr;MG=1;CR=1;MY=0;MR=0;CG=0;CYIF B=1 AND S=1THEN STATE=mycr;MY=1;CR=1;MG=0;MR=0;CG=0;CY=0; ELSE STATE=mgcr;MG=1;CR=1;MY=0;MR=0;CG=0;CYIF COUNT=00000001 THEN STATE=mrcg;MR=1;CG=1;MG=0;MY=0;CR=0;CY=0; ELSE STATE=mycr;MY=1;CR=1;MG=0;MR=0;CG=0;CYIF COUNT=00000001 OR S=0THEN STATE=mrcy;MR=1;CY=1;MY=0;MG=0;CR=0;CG=0; ELSE STATE=mrcg;MR=1;CG=1;MG=0;MY=0;CR=0;CYIF COUNT=00000001 THEN STATE=mgcr;MG=1;CR=1;MR=0;MY=0;CY=0;CG=0; ELSE STATE=mrcy;MR=1;CY=1;MY=0;MG=0;CR=0;CGEnd Time 来设定仿真结束时间 4)在CLOCK窗口中设置clk的时钟周期为1us5)点击save保存6) 通过Tools下的Simulator Tools项进行仿真,然后观察输出波形。仿真波形如下: S=1乡间公路状态(既MGCR60S-MYCG4S-MRCG20S-MGCY4S-MGCR60S) S=0转S=1立即进入MYCR4S-MRCG20S7,引脚锁定8,连接到实验箱下载程序观察实验结果:有开关K1控制S的值,当K1断开时实验箱交通灯处于MGCR状态,数码管在倒数60计数。合上K1后S由0转入1状态,数码管继续倒数60计数且交通灯仍处于MGCR状态,60计数完成后随即转入MYCG4S-MRCG20S-MGCY4S-MGCR60S的循环状态直到S再次由1变成0,数码管立即停止计数进入倒数4S的黄灯状态,4S结束后交通灯进入MGCR状态按下reset键数码管从顶端重新开始计时不清楚交通灯状态
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 中学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!