EDA实验交通灯设计报告.doc

上传人:一*** 文档编号:2517537 上传时间:2020-04-17 格式:DOC 页数:17 大小:2.46MB
返回 下载 相关 举报
EDA实验交通灯设计报告.doc_第1页
第1页 / 共17页
EDA实验交通灯设计报告.doc_第2页
第2页 / 共17页
点击查看更多>>
资源描述

《EDA实验交通灯设计报告.doc》由会员分享,可在线阅读,更多相关《EDA实验交通灯设计报告.doc(17页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、EDA原理及应用实验报告题目:交通灯控制器专业:电子信息工程班级:姓名:学号: 一、 设计题目:交通灯控制器二、 设计目标: 1、设计一个交通信号灯控制器,由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。2、红、绿、黄发光二极管作信号灯。3、主干道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯。4、主、支干道均有车时,两者交替允许通行,主干道每次放行45秒,支干道每次放行25秒,设立45秒、25秒计时、显示电路。5、在每次由绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡,使行驶中的车

2、辆有时间停到禁行线外,设立5秒计时、显示电路。三、 设计原理:(含系统总的原理图) 由两个分频器模块,三个计数器模块及它的选择器,一个扫描数码管模块,和一个红绿灯控制模块连接而成。RTL状态图四、 设计内容:(含状态转换图、软件流程图、说明文字等,每单独模块的图标和VHDL程序;最后为总体程序框图)分频器1LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DVF ISPORT(CLK:IN STD_LOGIC;-D:IN STD_LOGIC_VECTOR(3 DOWNTO 0);FOU

3、T:OUT STD_LOGIC);END;ARCHITECTURE one OF DVF ISSIGNAL FULL:STD_LOGIC;BEGINP_REG:PROCESS(CLK)VARIABLE CNT8:INTEGER RANGE 48000000 DOWNTO 0;BEGINIF CLKEVENT AND CLK=1 THENIF CNT8=24000000 THENCNT8:=0;FULL=1;ELSE CNT8:=CNT8+1;FULL=0;END IF;END IF;END PROCESS P_REG;P_DIV:PROCESS(FULL)VARIABLE CNT2:STD_L

4、OGIC;BEGINIF FULLEVENT AND FULL=1 THENCNT2:=NOT CNT2;IF CNT2=1 THEN FOUT=1;ELSE FOUT=0;END IF;END IF;END PROCESS P_DIV;END;说明:采用的是48M时钟输入,作为后面的时钟信号。分频器2LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DVF2 ISPORT(CLK:IN STD_LOGIC;-D:IN STD_LOGIC_VECTOR(3 DOWNTO 0);FOUT

5、:OUT STD_LOGIC);END;ARCHITECTURE one OF DVF2 ISSIGNAL FULL:STD_LOGIC;BEGINP_REG:PROCESS(CLK)VARIABLE CNT8:INTEGER RANGE 48000000 DOWNTO 0;BEGINIF CLKEVENT AND CLK=1 THENIF CNT8=20000 THENCNT8:=0;FULL=1;ELSE CNT8:=CNT8+1;FULL=0;END IF;END IF;END PROCESS P_REG;P_DIV:PROCESS(FULL)VARIABLE CNT2:STD_LOGI

6、C;BEGINIF FULLEVENT AND FULL=1 THENCNT2:=NOT CNT2;IF CNT2=1 THEN FOUT=1;ELSE FOUT=0;END IF;END IF;END PROCESS P_DIV;END;说明:改变了分频器的大小,这个频率很高,是给扫描数码管模块使用的。计数器1LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cntn ISPORT(CLK:IN STD_LOGIC;CLR:IN STD_LOGIC_vector(2 downto 0

7、);U:IN STD_LOGIC_VECTOR(2 DOWNTO 0);A,B:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END;ARCHITECTURE bhv OF cntn ISSIGNAL J,K,L:STD_LOGIC;SIGNAL Q2,Q1:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINa1:PROCESS(CLK)BEGINIF CLR=001 THEN Q1=0100;ELSIF U=010 THENIF CLKEVENT AND CLK=1 THEN Q1=Q1-1; IF Q1=0000 THEN Q1=1001;J=1;EL

8、SE J=0;END IF;END IF;A=Q1;END IF;END PROCESS;a2:PROCESS(J) BEGINIF CLR=001 THEN Q2=0010;ELSIF U=010 THEN IF JEVENT AND J=1 THEN Q2=Q2-1; IF Q2=0000 THEN Q2=0010;K=0;ELSE K=1;END IF; END IF;B=Q2; END IF; END PROCESS; END ;说明:作为支干道通行时间,倒计时25s。计数器2LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_L

9、OGIC_UNSIGNED.ALL;ENTITY cntm ISPORT(CLK:IN STD_LOGIC;CLR:IN STD_LOGIC_vector(2 downto 0);U:IN STD_LOGIC_VECTOR(2 DOWNTO 0);C,D:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END;ARCHITECTURE bhv OF cntm ISSIGNAL J,K,L:STD_LOGIC;SIGNAL Q2,Q1:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINa1:PROCESS(CLK)BEGINIF CLR=010 THEN Q1

10、=0101;ELSIF U=001 THENIF CLKEVENT AND CLK=1 THEN Q1=Q1-1; IF Q1=0000 THEN Q1=1001;J=1;ELSE J=0;END IF;END IF;C=Q1;END IF;END PROCESS;a2:PROCESS(J) BEGINIF CLR=010 THEN Q2=0000;ELSIF U=001 THEN IF JEVENT AND J=1 THEN Q2=Q2-1; IF Q2=0000 THEN Q2=0010;K=0;ELSE K=1;END IF; END IF;D=Q2; END IF; END PROCE

11、SS; END ;说明:要亮5秒黄灯作为过渡计数器3LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cntl ISPORT(CLK:IN STD_LOGIC;CLR:IN STD_LOGIC_vector(2 downto 0);U:IN STD_LOGIC_VECTOR(2 DOWNTO 0);E,F:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END;ARCHITECTURE bhv OF cntl ISSIGNAL J,K,L:STD_LOGIC;SIGN

12、AL Q2,Q1:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINa1:PROCESS(CLK)BEGINIF CLR=001 THEN Q1=0100;ELSIF U=000 THENIF CLKEVENT AND CLK=1 THEN Q1=Q1-1; IF Q1=0000 THEN Q1=1001;J=1;ELSE J=0;END IF;END IF;E=Q1;END IF;END PROCESS;a2:PROCESS(J) BEGINIF CLR=001 THEN Q2=0100;ELSIF U=000 THEN IF JEVENT AND J=1 THEN Q2=

13、Q2-1; IF Q2=0000 THEN Q2=0010;K=0;ELSE K=1;END IF; END IF;FQ1=E;Q2Q1=C;Q2Q1=A;Q2NULL;END CASE;END PROCESS;END ;说明:不同的状态数码管分别显示45s,25s,5s倒计时。红绿灯控制模块library ieee;use ieee.std_logic_1164.all;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity deng isgeneric(a:integer:=45;b:integer:=5;c:integer:=25);port(clk,rst : i

14、n std_logic; R1,G1,Y1,R2,G2,Y2 : out std_logic; U:out std_logic_vector(2 downto 0);end;architecture one of deng istype fsm_st is (QA,QB,QC,QD);signal current_state , next_state : fsm_st;SIGNAL q: integer range 0 TO 200;begin-process(clk)-begin-if clk = 1 and clkevent then-if q=29 then q=0;else q=q+1

15、;end if;end if;-end process;process (clk)begin if rst = 0 then current_state = QA;q=0; elsif clk = 1 and clkevent then current_state = next_state;if q=a+b+b+c-1 then q=0;else qG1 = 0;R2= 0;R1=1;Y1=1;G2=1;Y2=1;U=000; if q=a-1 then next_state = QB; else next_state Y1=0;R2= 0;R1=1;G1 = 1;G2=1;Y2=1;U=00

16、1; if q=a+b-1 then next_state = QC; else next_state R1=0;G2= 0;Y1=1;G1 = 1;R2=1;Y2=1;U=010; if q=a+b+c-1 then next_state = QD; else next_state R1=0;Y2= 0;Y1=1;G1 = 1;G2=1;R2=1;U=001; if q=a+b+b+c-1 then next_state = QA; else next_state bt=NOT00000001;abt=NOT00000010;abt=NOT00000100;abt=NOT00001000;a

17、bt=NOT00010000;abt=NOT00100000;abt=NOT01000000;abt=NOT10000000;anull; end case;end process p1;p2:process(clk) begin if clkevent and clk=1 then cnt8sgsgsgsgsgsgsgsgsgsgsgsgsgsgsgsgnull; end case; end process p3; end; 说明:采用共阳7段数码管。经过高频率的扫描给人以同时出现的错觉。虽然有8个输入但我只用了2个;总体程序框图时钟信号分频模块2扫描数码管模块45s倒计时25s倒计时分频模块15s倒计时 选择器红绿灯控制模块五、 实验现象(需要有实验现象图片及文字说明)交通灯设计共有六个灯,当主干道亮绿灯时,支干道亮红灯;45秒倒计时后,主干道亮5秒黄灯;接着支干道亮绿灯时,主干道亮红灯;25秒倒计时后,支干道亮5秒黄灯,依次循环下去。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 施工组织

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com