EDA课程设计-交通控制器的设计.doc

上传人:椰子壳 文档编号:5014477 上传时间:2020-01-28 格式:DOC 页数:19 大小:7.41MB
返回 下载 相关 举报
EDA课程设计-交通控制器的设计.doc_第1页
第1页 / 共19页
EDA课程设计-交通控制器的设计.doc_第2页
第2页 / 共19页
EDA课程设计-交通控制器的设计.doc_第3页
第3页 / 共19页
EDA课程设计-交通控制器的设计.doc_第4页
第4页 / 共19页
EDA课程设计-交通控制器的设计.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《EDA课程设计-交通控制器的设计.doc》由会员分享,可在线阅读,更多相关《EDA课程设计-交通控制器的设计.doc(19页珍藏版)》请在三一文库上搜索。

1、目录第一章 系统设计总述11.1 课程设计要求与分析1第二章各模块模型程序及仿真波形32.1 交通灯控制模块12.2 四十五秒倒计时模块12.3 二十五倒计时模块12.4 五秒倒计时模块12.5 显示信号模块12.6 译码器模块1第三章 顶层设计25第四章 心得与体会26第五章 参考文献26 第一章 系统设计总述1.1课程设计要求与分析 设计一个由一条主干道和一条支干道的汇合点形成的十字交叉路口的交通灯控制器,具体要求如下: (1)主、支干道各设有一个绿、黄、红指示灯,两个显示数码管。 (2)主干道处于常允许通行状态,而支干道有车来才允许通行。 (3)当主、支道均有车时,两者交替允许通行,主干

2、道每次放行45 s,支干道每次放行25 s,在每次由亮绿灯变成亮红灯的转换过程中,要亮5 s的黄灯作为过渡,并进行减计时显示。 (4)以上设计仅模拟某一十字路口的信号灯来大道控制交通流量的目的,以上所有时间都可以按照自己的需要进行修改。状态分析框图:主干道支干道时间绿灯亮,允许通行红灯亮,禁止通行45黄灯亮,停车红灯亮,禁止通行5红灯亮,禁止通行绿灯亮,允许通行25红灯亮,禁止通行黄灯亮,停车5图 1.1 状态分析方框图:图1.2 原理方框图总设计电路图: 图1.3 原理图设计实际分析:(1) 道路交通以主干道为主,处在常开放状态。(2) 当主、支干道同时有车时,两者交替通行;主干道通行时间较

3、支干道通行时间较长;5秒黄灯时间共同使用。第二章 各模块模型程序及仿真波形如上述原理图建立输入、输出端口和实体名。2.1 交通灯控制模块(JTDKZ ) 在CLK上升沿来时,根据SB、SM传感器状态判断交通处于何种状态,假设4种状态分别为:A、B、C、D,各交通灯该状态输出什么状态。 设计的原理图模块: 图2.1.1 JTDKZ模块 CLK脉冲信号,SM、SB主支干路有无车传感信号;输出端分别为主、支干道六盏灯 注意:有些程序末尾处有中文标注程序,仿真时不可写入设计源程序: LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY JTDKZ IS POR

4、T(CLK,SM,SB:IN STD_LOGIC; MR,MY0,MG0,BR,BY0,BG0:OUT STD_LOGIC); END ENTITY JTDKZ;ARCHITECTURE ART OF JTDKZ IS TYPE STATE_TYPE IS(A,B,C,D); /自定义数组类型STSTE-TYPE数组/ SIGNAL STATE:STATE_TYPE; / STATE是数组类型/ BEGIN CNT:PROCESS(CLK)IS VARIABLE S:INTEGER RANGE 0 TO 45; / 45秒S倒计时计数器/ VARIABLE CLR,EN:BIT; BEGIN

5、IF(CLKEVENT AND CLK=1)THEN /总CLK上升沿时 IF CLR=0THEN S:=0; CLR为0时则S=0 ELSIF EN=0THEN S:=S; CLR为1时 EN为0 ELSE S:=S+1; CLR=1 EN=1时,加1循环/ END IF; CASE STATE IS WHEN A=MR=0;MY0=0;MG0=1;BR=1;BY0=0;BG0=0; A=主通行,支停车 IF(SB AND SM)=1 THEN IF S=45 THEN STATE=B;CLR:=0;EN:=0; ELSE STATE=A;CLR:=1;EN:=1; END IF; ELSI

6、F(SB AND(NOT SM)=1THEN STATE=B;CLR:=0;EN:=0; ELSE STATEMR=0;MY0=1;MG0=0;BR=1;BY0=0;BG0=0; /B=主黄灯闪烁倒计时5秒 支道停车等待绿灯开始 / IF S=5 THEN STATE=C;CLR:=0;EN:=0; ELSE STATEMR=1;MY0=0;MG0=0;BR=0;BY0=0;BG0=1; / C=主红灯亮,支绿灯通行/ IF(SM AND SB)=1THEN IF S=25 THEN STATE=D;CLR:=0;EN:=0; ELSE STATE=C;CLR:=1;EN:=1; END IF

7、; ELSIF SB=0 THEN STATE=D;CLR:=0;EN:=0; ELSE STATEMR=1;MY0=0;MG0=0;BR=0;BY0=1;BG0=0; /D=主路停车、支路黄灯闪烁/ IF S=5 THEN STATE=A;CLR:=0;EN:=0; ELSE STATE=D;CLR:=1;EN:=1; END IF; END CASE; END IF; END PROCESS CNT; END ARCHITECTURE ART;设计仿真的截图:图2.1.2 JTDKZ波形仿真 在SM、SB(包括非运算)相与为1,相应控制主支干道红绿灯2.2 四十五秒倒计时模块(CNT45S

8、) CLK上升沿到来时,若到计时使能信号和SB信号有效,CNT45S开始计数,并将输入状态通过DOUT45M、DOUT45B分别输出到主、0支0干道显示。设计的原理图模块: 、图3.2.1 CNT45S模块模块设计源程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT45S IS PORT(SB,CLK,EN45:IN STD_LOGIC; DOUT45M,DOUT45B:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END CNT45S;ARCHITEC

9、TURE ART OF CNT45S IS SIGNAL CNT6B:STD_LOGIC_VECTOR(5 DOWNTO 0); BEGIN PROCESS(SB,CLK,EN45) IS BEGIN IF SB=0 THEN CNT6B=CNT6B-CNT6B-1; 18/SB等于0时,CNT6B减1;ELSIF(CLKEVENT AND CLK=1)THEN SB等于1且CLK为上升沿时, IF EN45=1THEN CNT6B=CNT6B+1; 如果EN45=1, CNT6B自加1 ELSIF EN45=0THEN CNT6BDOUT45M=01000101;DOUT45BDOUT45M

10、=01000100;DOUT45BDOUT45M=01000011;DOUT45BDOUT45M=01000010;DOUT45BDOUT45M=01000001;DOUT45BDOUT45M=01000000;DOUT45BDOUT45M=00111001;DOUT45BDOUT45M=00111000;DOUT45BDOUT45M=00110111;DOUT45BDOUT45M=00110110;DOUT45BDOUT45M=00110101;DOUT45BDOUT45M=00110100;DOUT45BDOUT45M=00110011;DOUT45BDOUT45M=00110010;DO

11、UT45BDOUT45M=00110001;DOUT45BDOUT45M=00110000;DOUT45BDOUT45M=00101001;DOUT45BDOUT45M=00101000;DOUT45BDOUT45M=00100111;DOUT45BDOUT45M=00100110;DOUT45BDOUT45M=00100101;DOUT45BDOUT45M=00100100;DOUT45BDOUT45M=00100011;DOUT45BDOUT45M=00100010;DOUT45BDOUT45M=00100001;DOUT45BDOUT45M=00100000;DOUT45BDOUT45M

12、=00011001;DOUT45BDOUT45M=00011000;DOUT45BDOUT45M=00010111;DOUT45BDOUT45M=00010110;DOUT45BDOUT45M=00010101;DOUT45BDOUT45M=00010100;DOUT45BDOUT45M=00010011;DOUT45BDOUT45M=00010010;DOUT45BDOUT45M=00010001;DOUT45BDOUT45M=00010000;DOUT45BDOUT45M=00001001;DOUT45BDOUT45M=00001000;DOUT45BDOUT45M=00000111;DO

13、UT45BDOUT45M=00000110;DOUT45BDOUT45M=00000101;DOUT45BDOUT45M=00000100;DOUT45BDOUT45M=00000011;DOUT45BDOUT45M=00000010;DOUT45BDOUT45M=00000001;DOUT45BDOUT45M=00000000;DOUT45B=00000000;END CASE;END PROCESS;END;设计仿真的截图:图3.2.2 在SB、SM有效的情况下,在CLK有效时,输出相应的二进制数据2.3 二十五倒计时模块(CNT25S)CLK上升沿到来时,若到计时使能信号、SM信号和SB

14、信号有效,CNT25S开始计数,并将输入状态通过DOUT25M、DOUT25B分别输出到主、支干道显示。设计的原理图模块: 图2.3.1 CNT25S模块设计源程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT25S IS PORT(SB,SM,CLK,EN25:IN STD_LOGIC; DOUT25M,DOUT25B:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ENTITY CNT25S;ARCHITECTURE ART OF CNT25S

15、 IS SIGNAL CNT5B:STD_LOGIC_VECTOR(4 DOWNTO 0); CNT5B 5位数组 BEGINPROCESS(SB,SM,CLK,EN25)ISBEGIN IF SB=0THEN CNT5B=CNT5B-CNT5B-1; ELSIF SM=0THEN CNT5B=CNT5B-CNT5B-1; ELSIF(CLKEVENT AND CLK=1)THEN IF EN25=1THEN CNT5B=CNT5B+1; ELSIF EN25=0THEN CNT5BDOUNT25B=00100101;DOUT25MDOUNT25B=00100100;DOUT25MDOUNT2

16、5B=00100011;DOUT25MDOUNT25B=00100010;DOUT25MDOUNT25B=00100001;DOUT25MDOUNT25B=00100000;DOUT25MDOUNT25B=00011001;DOUT25MDOUNT25B=00011000;DOUT25MDOUNT25B=00010111;DOUT25MDOUNT25B=00010110;DOUT25MDOUNT25B=00010101;DOUT25MDOUNT25B=00010100;DOUT25MDOUNT25B=00010011;DOUT25MDOUNT25B=00010010;DOUT25MDOUNT2

17、5B=00010001;DOUT25MDOUNT25B=00010000;DOUT25MDOUNT25B=00001001;DOUT25MDOUNT25B=00001000;DOUT25MDOUNT25B=00000111;DOUT25MDOUNT25B=00000110;DOUT25MDOUNT25B=00000101;DOUT25MDOUNT25B=00000100;DOUT25MDOUNT25B=00000011;DOUT25MDOUNT25B=00000010;DOUT25MDOUNT25B=00000001;DOUT25MDOUNT25B=00000000;DOUT25M=00000

18、000;END CASE;END PROCESS;END;设计仿真的截图: 图 2.3.2 在CLK为上升沿时,SB、SM为高电平时,输出端进行加一运算 2.4 五秒倒计时模块(CNT05S)简单思路:CLK上升沿到来时,若到计时使能信号有效,CNT05S开始计数,并将输入状态通过DOUT05输出到主、支干道显示。 设计模块: 图2.4.1 CNT05S模块设计源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT05S ISPORT(CLK,EN05M,EN05B:IN ST

19、D_LOGIC; 主、支交通控制信号 脉冲DOUT5:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); 倒计时输出END CNT05S;ARCHITECTURE ONE OF CNT05S IS SIGNAL CNT3B:STD_LOGIC_VECTOR(2 DOWNTO 0); PROCESS(CLK,EN05M,EN05B)IS /信号CNT3B为3位数组/ BEGIN IF(CLKEVENT AND CLK=1)THEN IF EN05M=1THEN CNT3B=CNT3B+1; 主控使能端EN05M有效主计时 ELSIF EN05B=1THEN CNT3B=CNT3B

20、+1; 支使能端EN05B有效支计时 ELSIF EN05B=0THEN CNT3BDOUT5DOUT5DOUT5DOUT5DOUT5DOUT5=00000000; END CASE; END PROCESS;END;设计仿真的截图:图2.4.2 CNT05S波形 当CLK上升沿时,EN05M、EN05B有一个有效时,5秒倒计时2.5 显示信号模块(XSKZ)根据EN45、EN25、EN05M、EN05B的信号以及3个倒计时计数器的计数状态决定输出3个倒计时计数器中某个的状态输出。原理图模块: 图3.5.1 XSKZ模块设计源程序:LIBRARY IEEE;USE IEEE.STD_LOGIC

21、_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY XSKZ IS PORT(EN45,EN25,EN05M,EN05B: IN STD_LOGIC; AIN45M,AIN45B,AIN25M,AIN25B,AIN05: IN STD_LOGIC_VECTOR(7 downto 0); 5个倒计时计数数据输入信号将此时倒计时数据输出 DOUTB,DOUTM: OUT STD_LOGIC_VECTOR(7 downto 0);END ENTITY XSKZ; ARCHITECTURE ONE OF XSKZ ISSIGNAL A :STD_LOGIC

22、_VECTOR (3 DOWNTO 0);begin ADOUTM=AIN45M;DOUTBDOUTM=AIN05;DOUTBDOUTM=AIN25M;DOUTBDOUTM=AIN05;DOUTBDOUTM=00000000;DOUTBDOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7CLK,SM=SM,SB=SB,MR=MR,MY0=EN2,MG0=EN1,BR=BR,BY0=EN4,BG0=EN3);X2:CNT45SPORT MAP(CLK=CLK,SB=SB,EN45=EN1,DOUT45M=S45M,DOUT45B=S45B

23、);X3:CNT05SPORTMAP(CLK=CLK,EN05M=EN2,DOUT5=S05,EN05B=EN4);X4:CNT25SPORTMAP(CLK=CLK,SM=SM,SB=SB,EN25=EN3,DOUT25M=S25M,DOUT25B=S25B);X5:XSKZPORTMAP(EN45=EN1,EN05M=EN2,EN25=EN3,EN05B=EN4,AIN45M=S45M,AIN45B=S45B,AIN25M=S25M,AIN25B=S25B,AIN05=S05,DOUTM(3 DOWNTO 0)=YM1,DOUTM(7 DOWNTO 4)=YM2,DOUTB(3 DOWNTO

24、 0)=YM3,DOUTB(7 DOWNTO 4)=YM4);X6:YMQ PORT MAP(PIN1=YM1,DOUT7=DOUT1);X7:YMQ PORT MAP(PIN1=YM2,DOUT7=DOUT2);X8:YMQ PORT MAP(PIN1=YM3,DOUT7=DOUT3);X9:YMQ PORT MAP(PIN1=YM4,DOUT7=DOUT4);END ART;仿真波形如下:图 4.1.2在CLK的作用下,根据SM、SB的实际情况,红、黄、绿灯做相应显示以及数码管做相应显示。 第四章 心得与体会 总体来说,在做课程设计找资料时还是蛮顺利的。不论是网上还是学校图书馆,都有大量的实用的资料。本次课程设计花费时间最多的就是分析资料和进行仿真各个模块实验和顶层文件。在分析材料时,其实最困难的就是分析内部信号(SINGNEL)了。由于所有的材料都不会把详细的电路图给出,分析时常常会有些搞不清楚这个模块输出的是什么信号,与下个模块有怎么样的逻辑关系。最后大量检索了交通灯EDA逻辑关系方面的知识后以及和同学们一起交流后,才略有眉目。 在创建各个模块的

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 商业贸易


经营许可证编号:宁ICP备18001539号-1