基于EDA的交通灯控制器课程设计.doc
《基于EDA的交通灯控制器课程设计.doc》由会员分享,可在线阅读,更多相关《基于EDA的交通灯控制器课程设计.doc(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 IF;
4、 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 IF AP
5、=”1001” AND BP=1001 AND CP=”1001 THEN CO=1; ELSE CO=0; END IF; END IF; END PROCESS; A=AP; BYIMA=1000000”; WHEN ”0001=YIMA=”1111001; WHEN ”0010=YIMA=”0100100”; WHEN 0011=YIMA=0110000; WHEN 0100”=YIMA=0011001; WHEN 0101=YIMAYIMAYIMA=”1111000”; WHEN 1000=YIMA=0000000; WHEN ”1001=YIMAYIMA=”1111111”; END
6、 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 0); YIMA:
7、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 MAP(IN_A,SE
8、G1); 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)、倒计时5s-CNT05s。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-根据倒计时计数的要求设置3个输入信号:
11、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 STATE_TY
12、PE 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 IF S=45
13、THEN STATE=B;CLR:=0;EN:=0; ELSE STATE=A;CLR:=1;EN:=1; END IF; ELSIF(SB AND(NOT SM))=1THEN STATE=B;CLR:=0;EN:=0; ELSE STATE=A;CLR:=1;EN:=1; END IF; WHEN B=MR=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;
14、IF(SM AND SB)=1THEN IF S=25 THEN STATE=D;CLR:=0;EN:=0; 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 PROCE
15、SS CNT;END ARCHITECTURE ART;设计仿真的截图:XSKZ模块的实现简单设计思路:根据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
16、 BEGIN PROCESS(INA)IS BEGIN IF INA=1THEN OUTA=1; ELSE 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 CN
17、T45S IS PORT(SB,CLK,EN45:IN STD_LOGIC; DOUT45M,DOUT45B: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=CNT6BCNT6B-1; ELSIF(CLKEVENT AND CLK=1)THEN IF EN45=1THEN CNT6B=CNT6B+1;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 EDA 交通灯 控制器 课程设计
限制150内