收藏 分销(赏)

基于EDA的交通灯控制器课程设计.doc

上传人:w****g 文档编号:3993011 上传时间:2024-07-24 格式:DOC 页数:19 大小:74.04KB
下载 相关 举报
基于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页
点击查看更多>>
资源描述

1、本科课程设计报告课程名称: EDA计数与FPGA应用设计设计题目:交通灯控制器 实验地点: 跨越机房专业班级:电信0901学号:2009001249学生姓名:赵岩 指导教师:张文爱年 月 日设计一:三位十进制计数显示器一、 设计目的:1、 掌握时序电路中多进程的VHDL的描述方法.2、 掌握层次化设计方法。3、熟悉EDA的仿真分析和硬件测试技术。二、设计原理三位十进制计数显示器分三部分完成,先设计十进制计数电路,再设计显示译码电路,最后设计一个顶层文件将两者连接起来。三源程序1、 三位十进制计数器的三位分三个进程描述,含有同步清0信号RESET和计数使能控制信号CINLIBRARY IEEE;

2、USE IEEE.STD_LOGIC_1164。ALL;USE IEEE。STD_LOGIC_UNSIGNED.ALL;ENTITY COU3 IS PORT(CLK,RESET,CIN:IN STD_LOGIC; CO:OUT STD_LOGIC; A,B,C:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END COU3 ;ARCHITECTURE ART OF COU3 IS SIGNAL AP,BP,CP:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN KK1:PROCESS(CLK) BEGIN IF (CLKEVENT AND CLK=

3、1) THEN IF (RESET=0) THEN AP=”0000; ELSIF (CIN=1) THEN IF (AP=”1001”) THEN AP=”0000 ; ELSE AP=AP+1; END IF; END IF; END IF; END PROCESS KK1;KK2:PROCESS(CLK) BEGIN IF (CLKEVENT AND CLK=1) THEN IF (RESET=0) THEN BP=”0000; ELSIF (CIN=1) AND (AP=”1001”) THEN IF BP=”1001” THEN BP=”0000; ELSE BP=BP+1; END

4、 IF; END IF; END IF; END PROCESS KK2;KK3: PROCESS(CLK) BEGIN IF (CLKEVENT AND CLK=1) THEN IF (RESET=0) THEN CP=”0000”; ELSIF (CIN=1) AND (AP=”1001”) AND (BP=”1001”) THEN IF CP=”1001 THEN CP=0000”; ELSE CP=CP+1; END IF; END IF; END IF; END PROCESS KK3;PROCESS(CLK) IS BEGIN IF CLKEVENT AND CLK=1 THEN

5、IF AP=”1001” AND BP=1001” AND CP=1001” THEN CO=1; ELSE CO=0; END IF; END IF; END PROCESS; A=AP; B=BP; CYIMA=”1111001; WHEN ”0010”=YIMA=0100100”; WHEN 0011=YIMA=”0110000; WHEN ”0100”=YIMA=”0011001”; WHEN ”0101=YIMA=”0010010; WHEN 0110”=YIMA=”0000010; WHEN 0111=YIMAYIMA=”0010000”; WHEN OTHERS=YIMA=111

6、1111; END CASE; END PROCESS; END ART;3、三位显示译码顶层文件LIBRARY IEEE;USE IEEE。STD_LOGIC_1164.ALL;ENTITY JISHUXIANSHI IS PORT(CLK,RESET,EN:IN STD_LOGIC; SEG1,SEG2,SEG3:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END JISHUXIANSHI; ARCHITECTURE ART OF JISHUXIANSHI IS COMPONENT YIMA7 PORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO

7、0); YIMA:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); END COMPONENT; COMPONENT COU3 PORT(CLK,RESET,CIN:IN STD_LOGIC; CO:OUT STD_LOGIC; A,B,C:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END COMPONENT; SIGNAL IN_A,IN_B,IN_C:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN U0:COU3 PORT MAP(CLK,RESET,EN,IN_A,IN_B,IN_C); U1:YIMA7 PORT MA

8、P(IN_A,SEG1); U2:YIMA7 PORT MAP(IN_B,SEG2); U3:YIMA7 PORT MAP(IN_C,SEG3);END ART;四、仿真出图五、下载到电路板得到设计结果显示三位十进制计数设计二:交通灯控制器一、设计要求设计一个由一条支干道和一条主干道的汇合点形成的十字交叉路口的交通灯控制器,主要要求如下:(1).主、支干道各设有一个绿、黄、红指示灯,两个显示数码管。(2)主干道处于常允许状态,两支干道有车来才允许通行.(3)当主、支干道有车时,两者交替通行,主干道每次放行45s,支干道每次放行25s,在每次由亮绿灯变成亮红灯转换过程中,要亮5s黄灯作为过渡,并

9、进行减计时显示。二、 设计方案1、分模块设计1)、红、绿、黄灯控制模块,模块名JTDKZ;2)、倒计时传输、控制模块XSKZ;3)、倒计时45s-CNT45s;4)、倒计时25sCNT25s;5)、倒计时5sCNT05s。6)、输入、输出。2、模块设计思路1)、JTDKZ根据交通灯显示有4种状态,可以采用CASE语句设置选择4种状态。设置3个输入:CLK(时钟脉冲)、SB(支干道传感器)、SM(主干道传感器).2)、XSKZ根据需要交通灯显示的不同数倒计时据设置4个输入使能信号:EN45(45s倒计时使能信号)、EN25(25s倒计时使能信号)、EN05(5s倒计时使能信号);再设置5个倒计时

10、计数数据输入信号将此时倒计时数据输出:AIN45M、AIN45B、AIN25M、AIN25B、AIN05;2个输出信号使数码管显示正在倒计时的时间。3)、CNT45S-根据倒计时计数的要求设置3个输入信号:CLK(计数脉冲)、EN45(计数使能)、SB(支干道传感器信号);2个输出DOUT45M、DOUT45B,分别用于主、支干道显示. 4)、CNT25s-根据倒计时计数的要求设置4个输入信号:CLK(计数脉冲)、EN45(计数使能)、SM(主干道传感器信号)、SB(支干道传感器信号);2个输出DOUT25M、DOUT25B,分别用于主、支干道显示。 5)、CNT05s根据倒计时计数的要求设置

11、3个输入信号:CLK(计数脉冲)、EN05B(计数使能)、EN05M(计数使能);1个输出DOUT05,用于主、支干道显示。 6)、输入输出模块,3个输入分别为:CLK、SB、SM,2个输出分别为DOUT17。0、DOUT27。.0。三、设计源程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164。ALL;ENTITY JTDKZ IS PORT(CLK,SM,SB:IN STD_LOGIC; MR,MY0,MG0,BR,BY0,BG0:OUT STD_LOGIC);END ENTITY JTDKZ;ARCHITECTURE ART OF JTDKZ IS TYPE S

12、TATE_TYPE IS(A,B,C,D); SIGNAL STATE:STATE_TYPE; BEGIN CNT:PROCESS(CLK)IS VARIABLE S:INTEGER RANGE 0 TO 45; VARIABLE CLR,EN:BIT; BEGIN IF(CLKEVENT AND CLK=1)THEN IF CLR=0THEN S:=0; ELSIF EN=0THEN S:=S; ELSE S:=S+1; END IF; CASE STATE IS WHEN A=MR=0;MY0=0;MG0=1;BR=1;BY0=0;BG0=0; IF(SB AND SM)=1 THEN I

13、F S=45 THEN STATE=B;CLR:=0;EN:=0; ELSE STATE=A;CLR:=1;EN:=1; END IF; ELSIF(SB AND(NOT SM)=1THEN STATEMR=0;MY0=1;MG0=0;BR=1;BY0=0;BG0=0; IF S=5 THEN STATE=C;CLR:=0;EN:=0; ELSE STATE=B;CLR:=1;EN:=1; END IF; WHEN C=MR=1;MY0=0;MG0=0;BR=0;BY0=0;BG0=1; IF(SM AND SB)=1THEN IF S=25 THEN STATE=D;CLR:=0;EN:=0

14、; ELSE STATE=C;CLR:=1;EN:=1; END IF; ELSIF SB=0 THEN STATE=D;CLR:=0;EN:=0; ELSE STATE=C;CLR:=1;EN:=1; END IF; WHEN D=MR=1;MY0=0;MG0=0;BR=0;BY0=1;BG0=0; 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;设计仿真的截图:XSKZ模块的实现简单设计思路:根

15、据EN45、EN25、EN05M、EN05B的信号以及3个倒计时计数器的计数状态决定输出3个倒计时计数器中某个的状态输出。原理图模块:设计源程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164。ALL;USE IEEE。STD_LOGIC_UNSIGNED。ALL;ENTITY CSKZ IS PORT(INA:IN STD_LOGIC; OUTA:OUT STD_LOGIC);END ENTITY CSKZ;ARCHITECTURE ART OF CSKZ IS BEGIN PROCESS(INA)IS BEGIN IF INA=1THEN OUTA=1; ELSE

16、 OUTA=0; END IF; END PROCESS;END ARCHITECTURE ART;设计仿真的截图:CNT45S模块的实现简单思路:CLK上升沿到来时,若到计时使能信号和SB信号有效,CNT45S开始计数,并将输入状态通过DOUT45M、DOUT45B分别输出到主、支干道显示。 设计的原理图模块: 设计源程序:3LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE。STD_LOGIC_UNSIGNED。ALL;ENTITY CNT45S IS PORT(SB,CLK,EN45:IN STD_LOGIC; DOUT45M,DOUT45

17、B:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END CNT45S;ARCHITECTURE ART OF CNT45S IS SIGNAL CNT6B:STD_LOGIC_VECTOR(5 DOWNTO 0); BEGIN PROCESS(SB,CLK,EN45) IS BEGIN IF SB=0 THEN CNT6B=CNT6BCNT6B1; ELSIF(CLKEVENT AND CLK=1)THEN IF EN45=1THEN CNT6B=CNT6B+1; ELSIF EN45=0THEN CNT6BDOUT45M=”01000101;DOUT45BDOUT45M

18、=”01000100”;DOUT45BDOUT45M=01000010”;DOUT45B=”01000111”;WHEN”000100”=DOUT45M=01000001”;DOUT45B=”01000110;WHEN”000101”=DOUT45M=”01000000;DOUT45BDOUT45M=”00111001;DOUT45B=01000100”;WHEN000111”=DOUT45M=”00111000”;DOUT45B=”01000011;WHEN”001000=DOUT45M=”00110111;DOUT45BDOUT45M=00110101;DOUT45BDOUT45M=”00

19、110100”;DOUT45BDOUT45M=00110011”;DOUT45B=00111000;WHEN”001101=DOUT45M=00110010”;DOUT45B=”00110111;WHEN001110”=DOUT45M=”00110001”;DOUT45B=”00110110;WHEN”001111=DOUT45M=”00110000”;DOUT45B=”00110101;WHEN”010000=DOUT45M=”00101001”;DOUT45BDOUT45M=”00101000”;DOUT45BDOUT45M=00100111;DOUT45BDOUT45MDOUT45M=”

20、00100101”;DOUT45B=00110000”;WHEN”010101=DOUT45M=00100100”;DOUT45B=”00101001;WHEN010110”=DOUT45M=”00100011;DOUT45B=”00101000;WHEN010111”=DOUT45M=”00100010”;DOUT45BDOUT45M=”00100001;DOUT45B=00100110;WHEN011001”=DOUT45M=”00100000;DOUT45B=00100101;WHEN”011010”=DOUT45M=00011001;DOUT45B=00100100;WHEN01101

21、1=DOUT45M=”00011000”;DOUT45B=”00100011”;WHEN”011100”=DOUT45M=00010111”;DOUT45B=”00100010”;WHEN”011101”=DOUT45M=00010110;DOUT45B=”00100001”;WHEN”011110”=DOUT45M=00010101;DOUT45B=”00100000”;WHEN011111”=DOUT45M=”00010100”;DOUT45B=00011001;WHEN”100000”=DOUT45M=”00010011;DOUT45B=”00011000”;WHEN”100001=DO

22、UT45M=”00010010”;DOUT45B=”00010111;WHEN”100010”=DOUT45MDOUT45MDOUT45MDOUT45M=”00001000;DOUT45BDOUT45M=”00000111”;DOUT45B=00010010”;WHEN”100111”=DOUT45MDOUT45MDOUT45M=”00000100;DOUT45BDOUT45M=00000011”;DOUT45B=”00001000;WHEN”101011”=DOUT45M=00000010”;DOUT45B=00000111”;WHEN101100”=DOUT45M=00000001”;DO

23、UT45B=00000110”;WHEN OTHERS=DOUT45M=00000000”;DOUT45B=”00000000;END CASE;END PROCESS;END;设计仿真的截图:CNT25S模块的实现简单思路:CLK上升沿到来时,若到计时使能信号、SM信号和SB信号有效,CNT25S开始计数,并将输入状态通过DOUT25M、DOUT25B分别输出到主、支干道显示。设计的原理图模块:设计源程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED。ALL;ENTITY CNT25S IS PORT

24、(SB,SM,CLK,EN25:IN STD_LOGIC; DOUT25M,DOUT25B:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END ENTITY CNT25S;ARCHITECTURE ART OF CNT25S IS SIGNAL CNT5B:STD_LOGIC_VECTOR(4 DOWNTO 0); BEGINPROCESS(SB,SM,CLK,EN25)ISBEGIN IF SB=0THEN CNT5B=CNT5BCNT5B1; ELSIF SM=0THEN CNT5B=CNT5BCNT5B-1; ELSIF(CLKEVENT AND CLK=1)TH

25、EN IF EN25=1THEN CNT5B=CNT5B+1; ELSIF EN25=0THEN CNT5B=CNT5B-CNT5B-1; END IF; END IF; END PROCESS; PROCESS(CNT5B)IS BEGIN CASE CNT5B IS WHEN00000=DOUNT25B=”00100101”;DOUT25M=00110000”; WHEN”00001”=DOUNT25B=00100100”;DOUT25M=”00101001; WHEN”00010”=DOUNT25B=”00100011”;DOUT25M=”00101000”; WHEN”00011”=D

26、OUNT25B=”00100010;DOUT25M=00100111”; WHEN”00100”=DOUNT25B=”00100001;DOUT25M=”00100110; WHEN00101=DOUNT25B=”00100000”;DOUT25M=”00100101; WHEN00110=DOUNT25B=00011001”;DOUT25M=00100100; WHEN”00111”=DOUNT25B=00011000”;DOUT25M=”00100011; WHEN”01000”=DOUNT25B=”00010111”;DOUT25M=”00100010; WHEN”01001”=DOUN

27、T25B=”00010110”;DOUT25MDOUNT25B=”00010101”;DOUT25M=”00100000; WHEN01011”=DOUNT25B=00010100;DOUT25M=”00011001”; WHEN”01100”=DOUNT25B=”00010011”;DOUT25MDOUNT25B=”00010010”;DOUT25MDOUNT25BDOUNT25B=”00001000”;DOUT25M=00010011”; WHEN10010”=DOUNT25B=00000111;DOUT25M=”00010010; WHEN10011=DOUNT25B=00000110”

28、;DOUT25M=”00010001”; WHEN”10100=DOUNT25BDOUNT25B=”00000010;DOUT25M=00000111; WHEN”11000”=DOUNT25B=”00000001;DOUT25M=”00000110”; WHEN OTHERS=DOUNT25B=00000000;DOUT25M=”00000000”;END CASE;END PROCESS;END;设计仿真的截图:CNT05S模块的实现简单思路:CLK上升沿到来时,若到计时使能信号有效,CNT25S开始计数,并将输入状态通过DOUT05输出到主、支干道显示。设计的原理图模块:设计源程序LIB

29、RARY IEEE;USE IEEE。STD_LOGIC_1164。ALL;USE IEEE.STD_LOGIC_UNSIGNED。ALL;ENTITY CNT05S ISPORT(CLK,EN05M,EN05B:IN STD_LOGIC; DOUT5:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END CNT05S;ARCHITECTURE ART OF CNT05S IS SIGNAL CNT3B:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN PROCESS(CLK,EN05M,EN05B)IS BEGIN IF(CLKEVENT AND

30、CLK=1)THEN IF EN05M=1THEN CNT3B=CNT3B+1; ELSIF EN05B=1THEN CNT3B=CNT3B+1; ELSIF EN05B=0THEN CNT3B=CNT3B-CNT3B-1; END IF; END IF; END PROCESS; PROCESS(CNT3B) BEGIN CASE CNT3B IS WHEN000=DOUT5=”00000101”; WHEN”001”=DOUT5=”00000100”; WHEN010=DOUT5=”00000011; WHEN”011=DOUT5DOUT5DOUT5=”00000000”; END CAS

31、E; END PROCESS;END;设计仿真的截图:显示译码器LIBRARY IEEE;USE IEEE。STD_LOGIC_1164。ALL; ENTITY YIMA7 IS PORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0); YIMA:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); END YIMA7; ARCHITECTURE ART OF YIMA7 IS BEGIN PROCESS(A) IS BEGIN CASE A IS WHEN 0000”=YIMA=”1000000; WHEN 0001=YIMA=1111001; WHEN

32、”0010=YIMA=0100100”; WHEN 0011”=YIMA=0110000; WHEN 0100”=YIMAYIMAYIMA=1111000”; WHEN 1000”=YIMAYIMAYIMA=”0001000”; WHEN 1011=YIMA=0000011”; WHEN 1100=YIMA=”1000110; WHEN ”1101”=YIMAYIMA=0000110”; WHEN ”1111”=YIMA=”0001110”; WHEN OTHERS=NULL; END CASE; END PROCESS; END ART;整体组装和测试自动转换出来的源程序:LIBRARY i

33、eee;USE ieee.std_logic_1164。all; LIBRARY work;ENTITY Block1 IS port( CLK : IN STD_LOGIC;SM : IN STD_LOGIC;SB : IN STD_LOGIC;MR : OUT STD_LOGIC;MY : OUT STD_LOGIC;MG : OUT STD_LOGIC;BR : OUT STD_LOGIC;BY : OUT STD_LOGIC;BG : OUT STD_LOGIC;DOUT1 : OUT STD_LOGIC_VECTOR(7 downto 0);DOUT2 : OUT STD_LOGIC

34、_VECTOR(7 downto 0));END Block1;ARCHITECTURE bdf_type OF Block1 IS component cnt05sPORT(CLK : IN STD_LOGIC; EN05M : IN STD_LOGIC; EN05B : IN STD_LOGIC; DOUT5 : OUT STD_LOGIC_VECTOR(7 downto 0));end component;component cnt25sPORT(SB : IN STD_LOGIC; SM : IN STD_LOGIC; CLK : IN STD_LOGIC; EN25 : IN STD

35、_LOGIC; DOUT25B : OUT STD_LOGIC_VECTOR(7 downto 0); DOUT25M : OUT STD_LOGIC_VECTOR(7 downto 0));end component;component cnt45sPORT(SB : IN STD_LOGIC; CLK : IN STD_LOGIC; EN45 : IN STD_LOGIC; DOUT45B : OUT STD_LOGIC_VECTOR(7 downto 0); DOUT45M : OUT STD_LOGIC_VECTOR(7 downto 0));end component;component jtdkzPORT(CLK : IN STD_LOGIC; SM : IN STD_LOGIC; SB : IN STD_LOGIC; MR : OUT STD_LOGIC; MY0 : OUT STD_LOGIC;

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服