欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

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

    • 资源ID:2517788       资源大小:607.17KB        全文页数:9页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    南昌大学实验报告 学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期: 实验成绩: 实验五 十字路口交通灯控制器设计 一、实验目的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<=0; ELSIF CLK1EVENT AND CLK1=1 THEN CASE STATE IS WHEN mgcr => 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<=1; END IF; END IF; END IF; WHEN mycr => 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;STATE<=mrcg; END IF; END IF; WHEN mrcg =>IF 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;STATE<=mrcy;th:="0000"tl:="0100" END IF; WHEN mrcy =>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;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 CONT8<"001" THEN CONT8 <=CONT8+1; ELSE CONT8<=(OTHERS=>0); END IF; END IF; CASE CONT8 IS WHEN "000" => sel0<=0;sel1<=1;sel2<=0;A<=JIN(3 downto 0); WHEN "001" => sel0<=1;sel1<=0;sel2<=0;A<=JIN(7 downto 4); WHEN OTHERS =>NULL; END CASE; END PROCESS ; D:PROCESS(A) BEGIN CASE A IS WHEN "0000" =>SG<="00111111" ;WHEN "0001" =>SG<="00000110" ; WHEN "0010" =>SG<="01011011" WHEN "0011" =>SG<="01001111" WHEN "0100"=>SG<="01100110" WHEN "0101" =>SG<="01101101" WHEN "0110" =>SG<="01111101" WHEN "0111" =>SG<="00000111" WHEN "1000" =>SG<="01111111" WHEN "1001" =>SG<="01101111" WHEN OTHERS=>NULL; 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;CY<=0; ELSIF CLK1EVENT AND CLK1=1 then CASE STATE IS WHEN mgcr=>IF 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;CY<=0; END IF; WHEN mycr=>IF 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;CY<=0; END IF; WHEN mrcg=>IF 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;CY<=0; END IF; WHEN mrcy=>IF 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;CG<=0; END IF; END CASE; END IF; END PROCESS; END behav;3、编译1)输入完程序之后逐个编译2)逐个编译无错之后进行全程编译4、将以上模块生成元器件 计数控制 数码管显示分频 交通灯显示 5,将以上各器件连接成实验原理图 6、系统仿真 1)建立新的波形激励文件 2)在波形编辑器窗口添加节点 3)通过Edit->End 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键数码管从顶端重新开始计时不清楚交通灯状态

    注意事项

    本文(VHDL语言知识的十字路口交通灯控制器设计.doc)为本站会员(一***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开