精华内容
下载资源
问答
  • EDA交通灯课程设计十字路口交通灯控制器设计.doc
    2020-12-24 03:07:40

    EDA交通灯课程设计十字路口交通灯控制器设计

    PAGE

    EDA技术课程设计

    十字路口交通灯控制器设计

    学 院

    电气与信息工程

    专 业

    电子信息工程

    班  级

    课程名称

    EDA技术

    学号

    姓名

    指导教师

    ***

    成绩评定·

    一、指导教师评语(根据学生设计报告质量、答辩情况及其平时表现综合评定)。

    二、评分

    评分项目

    设计报告评分

    答辩评分

    平时表现评分

    合 计

    (100分)

    任务完成

    情 况

    (20分)

    课程设计

    报告质量

    (40分)

    表达情况

    (10分)

    回答问题

    情 况

    (10分)

    工作态度与纪律

    (10分)

    独立工作

    能力

    (10分)

    得分

    课程设计成绩评定

    班级 0934111

    班级 0934111 姓名 学号 0934111

    成绩: 分(折合等级 )

    指导教师签字 年 月 日

    目录 TOC \h \z \t "标题 1,1,副标题,2,样式3 小标题,3"

    HYPERLINK \l "_Toc390760294" 一、设计题目 PAGEREF _Toc390760294 \h 1

    HYPERLINK \l "_Toc390760295" 二、设计任务和要求 PAGEREF _Toc390760295 \h 1

    HYPERLINK \l "_Toc390760296" 三、EDA设计 PAGEREF _Toc390760296 \h 2

    HYPERLINK \l "_Toc390760297" 3.1、明确系统的功能,并进行逻辑抽象 PAGEREF _Toc390760297 \h 2

    HYPERLINK \l "_Toc390760298" 3.2、模块功能说明 PAGEREF _Toc390760298 \h 3

    HYPERLINK \l "_Toc390760299" 3.3、波形仿真及分析 PAGEREF _Toc390760299 \h 3

    HYPERLINK \l "_Toc390760300" 3.3.1、代码 PAGEREF _Toc390760300 \h 3

    HYPERLINK \l "_Toc390760301" 3.3.2、各模块rtl电路及功能仿真和时序仿真 PAGEREF _Toc390760301 \h 4

    HYPERLINK \l "_Toc390760308" 四、硬件测试 PAGEREF _Toc390760308 \h 7

    HYPERLINK \l "_Toc390760309" 五、实验困难问题及解决措施 PAGEREF _Toc390760309 \h 7

    HYPERLINK \l "_Toc390760310" 参考文献 PAGEREF _Toc390760310 \h 9

    HYPERLINK \l "_Toc390760311" 附录 PAGEREF _Toc390760311 \h 10

    PAGE \* MERGEFORMAT

    PAGE \* MERGEFORMAT 19

    前 言

    伴随着社会的发展以及人类生活水平的提高, EDA技术在电子信息、通信、自动、控制及计算机应用等领域的重要性日益突出。随着技术市场与人才市场对DEA需求的不断增加,交通的问题日益突出,单单依靠人力来指挥交通已经不可行了,所以设计交通灯来完成这个需求就显的越加迫切了。为了确保十字路口的行人和车辆顺利、畅通地通过,往往采用电子控制的交通信号来进行指挥。以下就是运用数字电子设计出的交通灯:其中红灯亮,表示该条路禁止通行;黄灯亮表示停车;绿灯亮表示允许通行。

    一、设计题目

    十字路口交通灯控制器设计。

    二、设计任务和要求

    用EDA技术设计一个十字路口的交通信号灯控制器,控制A、B两条交叉道路上的车辆通行,具体要求如下:

    设计一个十字路口交通信号管理控制器。对于每个路口,可实现直行、停止、左转指示,并显示当前状态剩余时间

    每个方向有直行红灯、直行绿灯、停行黄灯和左转绿灯共4个LED指示灯组成;

    每个方向用两位数码管显示当前状态剩余时间;

    系统复位后进入东西直行,南北禁行状态;

    直行状态最后3秒内,绿灯闪烁状态;

    三、EDA设计

    由于本设计实验的功能较多,所以就采用模块化设计。整个程序设计基于8种状态,如下表所示:

    交通灯状态转换表

    状态S

    S1

    S2

    S3

    S4

    S5

    S6

    S7

    S0

    A方向

    左拐a1

    黄灯ay

    绿灯ag

    黄灯ay

    红灯ar

    红灯ar

    红灯ar

    红灯ar

    亮灯时间

    10s

    4s

    20s

    4s

    33

    B方向

    红灯br

    红灯br

    红灯br

    红灯br

    左拐b1

    黄灯by

    绿灯bg

    黄灯by

    亮灯时间

    38s

    10s

    更多相关内容
  • 学校的课程设计要求,提供资源仅供参考。本课设基于FPGA和verilog-HDL语言进行设计。首发原创!
  • 基于cyclone3 FPGA设计交通灯控制器课设文档+quartus9.0逻辑工程源码,可以做为你的学习设计参考。 交通灯控制器设计 2. 设计内容与要求: ① 设计一个十字路口交通信号灯的控制电路。要求红、绿灯按一定的规律...
  • 交通灯控制器课程设计汇本报告.doc
  • 交通灯控制器课程设计报告报告.doc
  • 交通灯控制器课程设计.doc》由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关《交通灯控制器课程设计.doc》文档请在天天文库搜索。1、目录一 课题介绍1.1概述1.2课题要求二 设计原理与分析...

    《交通灯控制器课程设计.doc》由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关《交通灯控制器课程设计.doc》文档请在天天文库搜索。

    1、目录一 课题介绍1.1概述1.2课题要求二 设计原理与分析2.1.1红黄绿灯之间状态变换2.1.2计时设置2.1.3紧急情况2.2 总体框图2.3 分块设计三 、原理图四、 程序代码4.1M分频器4.2数码管译码器4.3 交通灯控制器4.4 计时器五、 仿真结果及实验分析六、总结一、课题介绍 1.1概述在十字路口,每条道路各有一组红、黄、绿灯和倒计时显示器,用以指挥车辆和行人有序地通行。其中,红灯(R)亮,表示该条道路禁止通行;黄灯(Y)亮,表示停车;绿灯(G)亮,表示可以通行。倒计时显示器是用来显示允许通行和禁止通行地时间。交通灯控制器就是用来自动控制十字路口的交通灯和计时器,指挥各种车辆和行人安全通行。1.2课题要求设计一个十字交叉路口的交通灯控制器,具体要求如下:(1) 每条道路设一组信号灯,每组信号灯由红、黄、绿3盏灯组成,绿灯表示允许通行,红灯表示禁止通行,黄灯表示该车道上已过。

    2、停车线德车辆继续通行,未过停车线的车辆停止通行。(2) 设置一组数码管,以倒计时的方式显示允许通行或禁止通行的时间,其中绿灯、黄灯、红灯的持续时间分别是20s、5s和25s。(3) 当各条路上任意一条上出现特殊情况时,如当消防车、救护车或其他需要优先放行的车辆通过时,各方向上均是红灯亮,倒计时停止,且显示数字在闪烁。当特殊运行状态结束后,控制器恢复原来状态,继续正常运行。二、设计原理与分析2.1交通灯用以指挥车辆和行人有序地通行,在功能上要实现红黄绿灯之间状态变换、计时设置和紧急情况三大功能。2.1.1红黄绿灯之间状态变换对于十字路口两个方向上的交通灯,要保证一条道路通行另一条禁止,同时还要考虑黄灯到红灯的变换,因此一共有四个状态,即南北红东西绿、南北红东西黄、南北绿东西红、南北黄东西红。 2.1.2计时设置根据要求,绿灯、黄灯、红灯的持续时间分别是20s、5s和25s。2.1.3紧急情况。

    3、当各条路上任意一条上出现特殊情况时,各方向上均是红灯亮,倒计时停止,且显示数字在闪烁。2.2 总体框图 2.2.1模块示意图 图12.3 分块设计要实现交通灯的控制需要5个功能模块,分别为4M分频器,数码管译码器,交通灯控制器以及计时器。 2.3.1 4M分频器由于引脚选用4M时钟,而计时单位为秒,需要对时钟信号进行4M分频处理,编译后生成4M分频器如下图:图2 4M分频器 2.3.2数码管译码器输出时间为16进制数,要在数码管上显示需设计数码管译码器对其进行译码,编译后生成数码管译码器如下图:图3 数码管译码器 2.3.3 交通灯控制器为完成四个状态之间的循环,需交通灯控制器通过时钟信号的变化来完成状态循环的功能,编译后生成交通灯控制器如下图:图4 交通灯控制器 2.3.4 计时器计时器不仅要完成倒计时功能,还要随状态的变化而改变其倒计时时间,编译后生成计时器如下图:图5 计时器三、 原。

    4、理图、代码书写 1、交通灯控制的原理图各个模块代码书写4.1M分频器LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ; USE IEEE.STD_LOGIC_UNSIGNED.ALL ; -- 运算符重载ENTITY cnt4M IS PORT ( ena,clr,d_ctr,clk : IN STD_LOGIC ; q : OUT STD_LOGIC_VECTOR( 3 DOWNTO 0 ); co:out std_logic ) ; END ENTITY cnt4M; ARCHITECTURE bhv OF cnt4M ISSIGNAL q1 : STD_LOGIC_VECTOR(3 DOWNTO 0 ); BEGIN q <= q1 ; PROCESS (clk,clr,ena,d_ctr) BEGIN IF clr='0' THEN q1'。

    5、0'); ELSIF clk'EVENT AND clk = '1' THEN IF ena='1' THEN IF d_ctr='1' THEN IF q1 = "1111" THEN q1 '0'); ELSE q1<=q1+'1'; END IF; ELSIF q1= "0000" THEN q1'1'); ELSE q1<=q1-'1'; END IF; END IF ; END IF; END PROCESS ; PROCESS(q1) BEGIN IF q1= "1111" THEN co<='1'; ELSE co<='0'; END IF;END PROCESS;END ARCHITECTURE bhv;4.2数码管译码器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith。

    6、.all;use ieee.std_logic_unsigned.all;entity exp4 is port(clk : in std_logic; A,B:in std_logic_vector(7 downto 0); ledag:out std_logic_vector(6 downto 0); sel:out std_logic_vector(7 downto 0) );end;architecture bh of exp4 is signal del:std_logic_vector(1 downto 0); signal key:std_logic_vector(3 downto 0); begin process(clk) variable dount:std_logic_vector(1 downto 0); begin if clk'event and clk='1'。

    7、then dount:=dount+1; end if; delledagledagledagledagledagledagledagledagledagledagnull; end case; end process; process(del) begin case del is when "11"=>sel<="";keysel<="";keysel<="";key<=b(3 downto 0); end case; end process;end bh;4.3 交通灯控制器LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY jtd ISPORT(clk,emg:IN STD_LOGIC;--输入 时钟,复位,状态 COUNT1,COUNT2:IN。

    8、 STD_LOGIC_VECTOR(7 DOWNTO 0);--计时器 MG,MY,MR,CG,CY,CR:OUT STD_LOGIC);--输出信号,控制各种灯END jtd;ARCHITECTURE behav OF jtd IS TYPE jtdSTATE IS(mrcg,mrcy,mgcr,mycr); SIGNAL STATE:jtdSTATE;BEGIN PROCESS(STATE,clk,emg)--RESET,, S BEGIN -- IF RESET='1' THEN STATE<=mgcr;MG<='1';CR<='1';MY<='0';MR<='0';CG<='0';CY<='0'; --ELS IF clk'EVENT AND clk='1' then IF emg='1' THEN MY<='0';CR<='1。

    9、';MG<='0';MR<='1';CG<='0';CYIF COUNT1="" AND COUNT2=""THEN STATE<=mrcy;MY<='0';CR<='0';MG<='0';MR<='1';CG<='0';CY<='1'; ELSE STATE<=mrcg;MG<='0';CR<='0';MY<='0';MR<='1';CG<='1';CYIF COUNT1="" AND COUNT2=""THEN STATE<=mgcr;MR<='0';CG<='0';MG<='1';MY<='0';CR<='1';CY<='0'; ELSE STATE<=mrcy;MY<='0';CR<='0';MG<='0';MR<=。

    10、'1';CG<='0';CYIF COUNT2="" AND COUNT1=""THEN STATE<=mycr;MR<='0';CY<='0';MY<='1';MG<='0';CR<='1';CG<='0'; ELSE STATE<=mgcr;MR<='0';CG<='0';MG<='1';MY<='0';CR<='1';CYIF COUNT1="" AND COUNT2=""THEN STATE<=mrcg;MG<='0';CR<='0';MR<='1';MY<='0';CY<='0';CG<='1'; ELSE STATE<=mycr;MR<='0';CY<='0';MY<='1';MG<='0';CR<='1';CG

    11、;='0'; END IF; END CASE; END IF; END IF; END PROCESS; END behav;4.4 计时器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JISHU IS PORT(clk,RESET,emg:IN STD_LOGIC; tim1,tim2:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END JISHU;ARCHITECTURE behav OF JISHU IS TYPE RGY IS(mrcg,mrcy,mgcr,mycr); SIGNAL STATE:RGY;BEGIN PROCESS(clk,RESET,emg)--,RESET VARIABLE a1:STD_LOGIC:='0'; VARIAB。

    12、LE a2:STD_LOGIC:='0'; VARIABLE a3:STD_LOGIC:='0'; VARIABLE a4:STD_LOGIC:='0'; VARIABLE b:STD_LOGIC:='0'; VARIABLE timmh:STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE timml:STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE timch:STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE timcl:STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE mth,mtl,cth,ctl:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN IF clk'EVENT AND clk='1' THEN IF RESET='1' THEN STATE -。

    13、-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:='1';th:="0000";tl:="0001"; --ELSE IF a1='1' THEN mth:="0010";mtl:="0101";cth:="0010";ctl:="0000";a1:='0';timmh:=mth; timml:=mtl; timch:=cth; timcl:=ctl; --25秒,20秒 else IF NOT(cth="0000" AND ctl="0010") then IF mtl="0000" then mtl:="1001";mth:=mth-1;timmh:=mth; timml:=mtl; tim。

    14、ch:=cth; timcl:=ctl; else mtl:=mtl-1;timmh:=mth; timml:=mtl; timch:=cth; timcl:=ctl; END IF; --IF NOT(cth="0000" AND ctl="0010") then IF ctl="0000" then ctl:="1001";cth:=cth-1;timmh:=mth; timml:=mtl; timch:=cth; timcl:=ctl; else ctl:=ctl-1;timmh:=mth; timml:=mtl; timch:=cth; timcl:=ctl; END IF; ELSE mth:="0000";mtl:="0110";cth:="0000";ctl:="0001";STATE IF a2='1' THEN cth:="0000";ctl:="0101";mth:="。

    15、0000";mtl:="0101";a2:='0';timmh:=mth; timml:=mtl; timch:=cth; timcl:=ctl; --5秒 else IF NOT(cth="0000" AND ctl="0010" ) then ctl:=ctl-1;mtl:=mtl-1;timmh:=mth; timml:=mtl; timch:=cth; timcl:=ctl; ELSE cth:="0000";ctl:="0001";mth:="0000";mtl:="0001";a3:='1';STATE--IF S='1' THEN IF a3='1' THEN mth:="0010";mtl:="0000";cth:="0010";ctl:="0101";a3:='0';timmh:=mth; timml:=mtl; timch:=cth; timcl:=ctl; --20秒。

    16、 else IF NOT(mth="0000" AND mtl="0010") then IF mtl="0000" then mtl:="1001";mth:=mth-1;timmh:=mth; timml:=mtl; timch:=cth; timcl:=ctl; else mtl:=mtl-1;timmh:=mth; timml:=mtl; timch:=cth; timcl:=ctl; END IF; --IF NOT(cth="0000" AND ctl="0010") then IF ctl="0000" then ctl:="1001";cth:=cth-1;timmh:=mth; timml:=mtl; timch:=cth; timcl:=ctl; else ctl:=ctl-1;timmh:=mth; timml:=mtl; timch:=cth; timcl:=ctl。

    17、; END IF; ELSE cth:="0000";ctl:="0110";mth:="0000";mtl:="0001";STATE<=mycr;a4:='1';timmh:=mth; timml:=mtl; timch:=cth; timcl:=ctl; --6.1 END IF; END IF; --ELSE a:='0';STATEIF a4='1' THEN mth:="0000";mtl:="0101";cth:="0000";ctl:="0101";a4:='0';timmh:=mth; timml:=mtl; timch:=cth; timcl:=ctl; --4秒 else IF NOT(cth="0000" AND ctl="0010") then ctl:=ctl-1;mtl:=mtl-1;timmh:=mth; timml:=mtl; timch:=cth;。

    18、 timcl:=ctl; ELSE cth:="0000";ctl:="0001";mth:="0000";mtl:="0001";a1:='1';STATE<=mrcg;timmh:=mth; timml:=mtl; timch:=cth; timcl:=ctl; END IF; END IF; END CASE;END IF;tim1 <= mth & mtl;tim2 <= cth & ctl;END IF;end process;END behav;五、仿真及分析 图1、原理图仿真波形 图2、4M分频器仿真波形 图3、数码管译码器仿真波形 图4、交通灯控制仿真波形 图5、计时器仿真波形实验及分析在clc上升沿,tim2计数到达01,此时改变状态,主道路的路灯熄灭,黄灯点亮,从道路的红灯保持不变,持续5秒并计数。Reset置1后开始进入计数状态,并随着时钟上升沿改变。

    19、状态。在clc上升沿,tim1和tim2计数都达到01,此时改变状态,主道路黄灯熄灭红灯点亮,从道路红灯熄灭绿灯点亮。并开始计数。emg为紧急情况的开关,在紧急情况下,将emg置0,此时主动道路都变为红灯,且计数器停止计数,保持原计数时间并闪烁。紧急情况排除后,emg恢复置1,此时恢复紧急状况之前的状态,并继续计数。针对EP1C6Q240C8芯片,引脚设置如下:六、总结在这次设计过程中,体现出自己设计的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。 在此感谢我们的杨老师.,老师严谨细致、一丝不苟的作风是我学习中的榜样,老师循循善诱的教导给予我启迪;这次设计的每个实验细节,都离不开老师的细心指导。而您宽容的态度,帮助我们能够比较顺利的完成了这次课程设计。 我们学好理论的同时也要努力提高动手组织实验的基本技能,培养分析解决电路问题的实际本领。其中我最大的感触就是在设计课题的过程当中,与老师多次进行交流并看着自己在老师的帮助下一步步克服难题、难点,以及改正每一个错误的成就感,都让我对本次的课程设计有了更深刻的理解和认识,也让我更加熟练的掌握了EDA这门课程。序号 综合成绩优秀( )良好( )中等( )及格( )不及格( )教师(签名)批改日期《EDA技术》课程设计报告课题: 交通灯控制器 院系 自动化学院 专业 自动化      班级 学号 姓名 指导教师 李华 、杨银贤 起止日期 2015.12.21-2015.12.25 2015 年 12 月。

    展开全文
  • 1、设计一个十字路口的交通灯控制电路,要求甲车道和乙车道两条交叉道路上的车辆交替运行,每次通行时间都设为45秒。 2、 在绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换运行车道; 3、 黄灯亮时,要求每秒...
  • 基于51单片机的十字路口交通灯控制系统设计(含源码及仿真图) (1)东西、南北方向各设有一个绿、黄、红指示灯,两个显示数码管。 (2)两个方向交替允许通行,基本放行时间为25s,另外有黄灯闪烁5s。 (3)控制人员可以...
  • 含有protues图和程序(全注释,连变量都注释)要求:1、红灯和绿灯相互转换时经过黄灯,黄灯闪烁三次(6秒); 2、主干道方向通行30秒,辅干道方向通行20秒,单独左转信号15秒;先直行信号,后左转信号。...
  • 源码+报告,欢迎下载
  • 数电课程设计、仿真文件、multisim、原理图
  • 交通信号灯控制设计可编程控制器技术课程设计
  • 【实例简介】由本人制作的含有EDA交通灯控制器课程设计,课题内容为:(1)正常情况下保证主干道的畅通;(2)当步行街道上的行人要穿过主干道时,通过按钮来发出请求;(3)当有人按下控制按钮时,主干道变为黄灯,设置...

    【实例简介】

    由本人制作的含有EDA交通灯控制器课程设计,课题内容为:

    (1)正常情况下保证主干道的畅通;

    (2)当步行街道上的行人要穿过主干道时,通过按钮来发出请求;

    (3)当有人按下控制按钮时,主干道变为黄灯,设置计数器计时时间为3秒。

    (4)3秒过后,主干道变为红灯,计数器继续计时(计时时间为15秒),在15秒内若有人再次按按钮,计数器不重新计时;

    (5)步行街道在主干道变为红灯时指示变为绿灯,行人可通行,在行人通行10秒后绿灯闪烁,5秒后主干道变为绿灯,与此同时步行道变为红灯。

    (6)在主干道变为绿灯后,必须保证主干道车辆通行时间达到30秒以上,在此期间,行人按钮无效。30秒过后,若有人再次按下按钮

    【实例截图】

    【核心代码】

    交通灯控制器

    └── eda

    ├── COUNT.bsf

    ├── count.vhd

    ├── count-wave.vwf

    ├── db

    │   ├── light.(0).cnf.cdb

    │   ├── light.(0).cnf.hdb

    │   ├── light.(1).cnf.cdb

    │   ├── light.(1).cnf.hdb

    │   ├── light.asm_labs.ddb

    │   ├── light.asm.qmsg

    │   ├── light.asm.rdb

    │   ├── light.cbx.xml

    │   ├── light.cmp0.ddb

    │   ├── light.cmp2.ddb

    │   ├── light.cmp.bpm

    │   ├── light.cmp.cdb

    │   ├── light.cmp.ecobp

    │   ├── light.cmp.hdb

    │   ├── light.cmp.kpt

    │   ├── light.cmp.logdb

    │   ├── light.cmp_merge.kpt

    │   ├── light.cmp.rdb

    │   ├── light.cmp.tdb

    │   ├── light.db_info

    │   ├── light.eco.cdb

    │   ├── light.eds_overflow

    │   ├── light.fit.qmsg

    │   ├── light.fnsim.hdb

    │   ├── light.fnsim.qmsg

    │   ├── light.hier_info

    │   ├── light.hif

    │   ├── light.lpc.html

    │   ├── light.lpc.rdb

    │   ├── light.lpc.txt

    │   ├── light.map_bb.cdb

    │   ├── light.map_bb.hdb

    │   ├── light.map_bb.logdb

    │   ├── light.map.bpm

    │   ├── light.map.cdb

    │   ├── light.map.ecobp

    │   ├── light.map.hdb

    │   ├── light.map.kpt

    │   ├── light.map.logdb

    │   ├── light.map.qmsg

    │   ├── light.pre_map.cdb

    │   ├── light.pre_map.hdb

    │   ├── light.rtlv.hdb

    │   ├── light.rtlv_sg.cdb

    │   ├── light.rtlv_sg_swap.cdb

    │   ├── light.sgdiff.cdb

    │   ├── light.sgdiff.hdb

    │   ├── light.sim.cvwf

    │   ├── light.simfam

    │   ├── light.sim.hdb

    │   ├── light.sim.qmsg

    │   ├── light.sim.rdb

    │   ├── light.sim_temp_.vwf

    │   ├── light.sld_design_entry_dsc.sci

    │   ├── light.sld_design_entry.sci

    │   ├── light.smart_action.txt

    │   ├── light.sta.qmsg

    │   ├── light.sta.rdb

    │   ├── light.syn_hier_info

    │   ├── light.tan.qmsg

    │   ├── light.tis_db_list.ddb

    │   ├── logic_util_heursitic.dat

    │   ├── prev_cmp_light.asm.qmsg

    │   ├── prev_cmp_light.fit.qmsg

    │   ├── prev_cmp_light.map.qmsg

    │   ├── prev_cmp_light.qmsg

    │   ├── prev_cmp_light.sim.qmsg

    │   ├── prev_cmp_light.sta.qmsg

    │   ├── prev_cmp_light.tan.qmsg

    │   └── wed.wsf

    ├── DITHER.bsf

    ├── dither.vhd

    ├── dither.vhd.bak

    ├── dither-wave.vwf

    ├── incremental_db

    │   ├── compiled_partitions

    │   │   ├── light.root_partition.cmp.cdb

    │   │   ├── light.root_partition.cmp.dfp

    │   │   ├── light.root_partition.cmp.hdb

    │   │   ├── light.root_partition.cmp.kpt

    │   │   ├── light.root_partition.cmp.logdb

    │   │   ├── light.root_partition.cmp.rcfdb

    │   │   ├── light.root_partition.cmp.re.rcfdb

    │   │   ├── light.root_partition.map.cdb

    │   │   ├── light.root_partition.map.dpi

    │   │   ├── light.root_partition.map.hdb

    │   │   └── light.root_partition.map.kpt

    │   └── README

    ├── light1.vwf

    ├── light.asm.rpt

    ├── light.bdf

    ├── LIGHT.bsf

    ├── light.done

    ├── light.fit.rpt

    ├── light.fit.summary

    ├── light.flow.rpt

    ├── light.hexout

    ├── light.map.rpt

    ├── light.map.summary

    ├── light.pin

    ├── light.pof

    ├── light.qpf

    ├── light.qsf

    ├── light.qws

    ├── light.sim.rpt

    ├── light.sof

    ├── light.sta.rpt

    ├── light.sta.summary

    ├── light.tan.rpt

    ├── light.tan.summary

    ├── light.vhd

    ├── light.vwf

    ├── light-wave.vwf

    ├── try.vwf

    ├── tuxing.bdf

    ├── Waveform1.vwf

    ├── z.vwf

    └── 交通灯控制器.doc

    4 directories, 119 files

    展开全文
  • 这是一份基于Verilog的交通灯设计工程文件,已经在QUARTUS II 8.0 (32-BIT)上测试通过,而关于十字路口交通灯控制系统的工作原理的资料建议自行到网上找一找。
  • 交通灯控制器

    2014-07-31 09:51:50
    交通灯控制器课程设计,比较有想法的设计,值得共享
  • 微机原理课程设计 实现夜间模式 白天模式 汇编语言实现 是微机原理课程设计比不可少的东西
  • 交通灯控制器设计课程设计任务书.doc
  • 交通灯控制器fpga

    2011-05-26 16:05:14
    1)在十字路口的两个方向上各设一组红绿灯显示的顺序是:其中一个方向是绿,黄,红灯。另一个方向是红 绿 黄灯。...倒计时停止且数字闪烁,当特殊运行状态传完的时候控制器恢复原状态,继续正常运行
  • 利用MAXPLUSⅡ软件或Foundation软件,设计符合以上功能要求的交通灯控制器。用图形输入方法。控制器、计数器的功能用功能仿真的方法验证,可通过观察有关波形确认电路设计是否正确。通过编译,仿真和综合,并下载到...
  • 课程设计 基于FPGA的交通灯源代码 用VHDL编写的程序,可实现的功能有:南北方向是主干道车到,东西方向是支干道车道,要求两条交叉道路上的车辆 交替运行,主干道每次通行时间为 30 秒,支干道每次通行时间为 20 秒...
  • 利用8086芯片控制8259可编程中断控制器,实现对外部中断的响应和处理。并利用8253可编程定时/计数器产生方波,同时利用8055可编程并行口芯片实现对交通灯的控制,其中A口进交通信号灯的控制,B口输出交通信号灯的...
  • 由一条主道和一条支道的汇合点形成的十字路口,两道上的车辆交替通过,为确保车辆的安全,迅速通行,在交叉路口要求主车道和支车道两条交叉道的每个入口设置了红,绿,黄三色信号。红灯亮禁止通行;绿灯亮允许通行;...
  • CASE_01 基于FPGA的交通灯控制器

    千次阅读 2021-07-11 14:44:18
    1.1 硬件设计初窥 1.2逻辑设计初窥 2 模块级逻辑设计 2.1 时钟分频模块 2.2 数码管译码模块 2.3主逻辑运行模块 3 系统逻辑设计 4 硬件设计 4.1电源接口电路设计 4.2电源系统设计 4.3时钟设计 4.4 JTAG...

    1 案例引导

    1.1 硬件设计初窥

           如图所示是实际生活中的一个十字路口,看这个图是作为交通灯硬件设计的输入,说明白一点就是需要哪些元器件。

           图中的设计是为了让每个方向的人和车辆都能看到信号灯,所以红绿黄灯的数量加上人行道上的灯总共是48个灯。那么在实际设计中真的要在板卡上设计那么多灯吗?很显然是不需要的,通过观察可以发现只要是同一方向上的灯,所显示的状态都是一样的。所以实际设计时按A方向和B方向把灯分为两组即可,同样显示倒计时的数码管也是同样的道理。

           于是可以得出初步的硬件设计框图,如下:

           A方向和B方向上分别由红、绿、黄、左转四个信号灯和两个数码管组成。这里解释一下为什么有左转信号灯,在一般的路口只有红、绿、黄三个信号灯,当该方向上的绿灯亮时车是可以直行和左转的,但是在一些大型路口,车流量大,所以一般将左转单独进行时间控制,做这个功能是为了让交通灯功能更完备,提高设计的通用性。

           到这里初步可以确定硬件设计需要的东西,但是具体硬件设计在这里是得不出结论的,因为在没有进行FPGA/CPLD逻辑设计之前,是很难评估需要多少资源来进行设计的,所以芯片选型这一步还要往后放一放。

    1.2 逻辑设计初窥

           虽然硬件设计尚未定稿,但这并不妨碍进行逻辑设计,这就是FPGA/CPLD设计的优点。可以在逻辑设计仿真验证完毕之后,再进行硬件电路的设计,这样可以大大降低先期考虑不充分,导致设计的硬件不能使用或者芯片选型不合理所带来的风险。

           结合需要驱动外围设备,以及系统逻辑。可以大致推断出逻辑设计的框图如下:

           到这里得不出详细的逻辑设计输入,但是可以大致了解到设计分为这几个部分,在接下来的工作里将这几个部分分别实现就能完成设计。

    2 模块级逻辑设计

    2.1 时钟分频模块

           时钟分频,为什么要进行时钟分频呢?因为信号灯在进行倒计时是按秒信号倒计时的,而FPGA/CPLD一般采用晶振或者一些频率较高的信号源来提供时钟,所以需要对高频时钟进行分频来得到需要的秒信号。

           时钟分频的原理很简单,而且对于成偶数被时钟关系的分频也十分容易实现。

    举个例子:如果的主时钟12hz,如何来生成1hz的秒信号呢?很简单只需要用计数器每计到5个数时对一个信号进行取反,就刚好能生成的秒信号。

           如下为时钟分频的代码,工程位于Traffic_light\module_test\CLK_div中。

    //------------------------------------------------------
    //design name	:CLK_div
    //use			:时钟分频
    //engineer		:比特电子工作室
    //version		:V0.1
    //change note	:
    //--------------------------------------------------------
    module CLK_div
    (
        input   clk    ,
        input   rst_n  ,
        output  clk_1s 
    );
    
    localparam div_parameter = 5; // 仿真时将此值改为5,缩短仿真时间,真实程序跑时改为650。
    reg [27:0] counter;
    reg co;
    
    //counter
    always @(posedge clk or negedge rst_n)begin
        if(rst_n == 1'b0)begin
            counter <= 0;
        end
        else if(counter == div_parameter )begin
            counter <= 0;
        end
        else begin
            counter <= counter + 1;
        end
    end
    
    //co
    always @(posedge clk or negedge rst_n)begin
        if(rst_n==1'b0)begin
            co <= 0;
        end
        else if(counter == div_parameter )begin
            co <= ~ co;
        end
    end
    
    //clk_1s
    assign clk_1s = co;
    endmodule
    

             仿真结果如下图:

           如果把clk看作是12hz的时钟,那么clk_1s便是秒信号了。可以看出CLK12个周期CLK_1S完成了自己的一个周期。

           如果主时钟的频率更高呢?怎么获得秒信号呢?很简单只要加大计数的周期就可以了,计数的个数可以通过如下的公式获得:

    N = fclk /2 – 1

           N:分频系数 (即程序中div_parameter的值  fclk :主时钟的频率

    2.2 数码管译码模块

           这里指的数码管就是最常见的七段显示数码管,如图:

            为什么叫七段,因为可以看出它是由7段小灯组成的,通过点亮小灯的组合不同可以组成不同的文字。管脚图如下:

           每个管脚控制着一段灯管,数码管还分为共阴和共阳的说法,共阴是说每段小灯的负极是连接在一个(一个共地管脚),每段小灯的正级是分开的(对应着每个管脚),共阳数码管的则刚好相反。本文就以共阴的数码管为例来讲解。

           对于交通灯来讲,单个的只需要数码管显示0~9这10个数字,按照管脚状态的组合,可以得到如下的数字管脚组合组合表,就称它为译码表(小数点忽略,该设计不涉及小数点的使用):

           图中用‘1’表示该关键状态为高,点亮该管脚对应的段码;‘0’则相反;

    数字   管脚

    a

    b

    c

    d

    e

    f

    g

    0

    1

    1

    1

    1

    1

    1

    0

    1

    0

    1

    1

    0

    0

    0

    0

    2

    1

    1

    0

    1

    1

    0

    1

    3

    1

    1

    1

    1

    0

    0

    1

    4

    0

    1

    1

    0

    0

    1

    1

    5

    1

    0

    1

    1

    0

    1

    1

    6

    1

    0

    1

    1

    1

    1

    1

    7

    1

    1

    1

    0

    0

    0

    0

    8

    1

    1

    1

    1

    1

    1

    1

    9

    1

    1

    1

    1

    0

    1

    1

            到这里就可以进行数码管译码模块的程序编写了,如下便是数码管的译码模块的代码了,该例程位于Traffic_light\module_test\Nixie_tube中。

    //--------------------------------------------------
    //--design name :Nixie_tube
    //use			:数码管译码
    //engineer		:比特电子工作室
    //version		:V0.1
    //change note	:
    //-----------------------------------------------------
    module Nixie_tube
    (
        input           clk      ,
        input           rst_n    ,
        input       [3:0] number  ,
        output  reg [6:0] seg_data  //从高到低位abcdefg
    );
    
    always @(posedge clk or negedge rst_n)begin
        if(rst_n==1'b0)begin
            seg_data <= 7'b0000000;
        end
        else begin
            case(number)
                4'h0   : seg_data <= 7'b1111110;
                4'h1   : seg_data <= 7'b0110000;
                4'h2   : seg_data <= 7'b1101101;
                4'h3   : seg_data <= 7'b1111001;
                4'h4   : seg_data <= 7'b0110011;
                4'h5   : seg_data <= 7'b1011011;
                4'h6   : seg_data <= 7'b1011111;
                4'h7   : seg_data <= 7'b1110000;
                4'h8   : seg_data <= 7'b1111111;
                4'h9   : seg_data <= 7'b1111011;
                default: seg_data <= 7'b0000000;
            endcase
        end
    end
    endmodule
    

           仿真结果如下图:

            

           可以用该仿真结果与译码表进行比对,可以证实译码结果正确。

    2.3 主逻辑运行模块

           主逻辑运行在FPGA设计中可以理解为状态机,那么状态机肯定离不开状态图,交通灯的运行无非就是倒计时并控制灯,如果只考虑一个方向的灯的状态那就变得更加简单,计时一到就改变灯的状态,再次进行下一个状态的计时即可,那么我么如何保证两个方向的灯能协同好呢?看如下的状态图就能明白:

    ​​​​​               

            由于FPGA并行的特点,可以将A方向和B方向作为两个分立的状态机同时运行,并且遵循以下两点原则即可保证交通灯的正常运行:

    1. A方向以绿灯亮为初始状态,B方向以红灯亮为初始状态;(可互换)
    2. A方向上红灯不亮的时间等于B方向上红灯不亮的时间,且两个方向上状态运行完一圈的时间相等;

            只要满足以上两点,时间任意设置,这里就可以满足一些路口需要主干道与支干道信号灯时间不同的要求;

    在这里做如下设计:

           可以通过计算验证设计是否合理:

    A方向从绿灯到最后一个黄灯所需的时间是55S,B方向红灯恰好是55S;

    反过来B方向也是如此,两边运行完一圈状态都是110S。可见这是一个标准的十字路口,两个方向的时间是相同的。若要配置为分主支干道的交通灯,只需遵守以上提到的两点随意分配时间即可。

           分析到这里就可以进行逻辑的设计了,该例程位于Traffic_light\module_test\Lignt_run

            仿真结果如下图:

            

            粗略看AB两个方向上的完全符合交通灯逻辑,A方向上绿灯+黄灯+左转灯+黄灯 = B方向红灯时间,反过来也是如此;再看一个细节图:

            

            倒计时时间非常准确,表明该模块已经完全满足设计的要求了。

    3 系统逻辑设计

            在上一章节中,已经分模块对交通灯的各个模块进行了设计和仿真验证,那么到这里需要有机的将各个模块组合起来,便能完成的交通灯设计。

    以下便是将各个模块组合的代码,该例程位于Traffic_light\system_test\Traffic_light中。

            使用quartuse ii对系统工程进行综合以后,点击RTL_VIWER系统可以帮组自动生成设计的系统框图(RTL视图),如图:

          

           该图可以清晰的看出各个模块之间的信号走向和连接关系,同时与1.2逻辑设计初窥中的逻辑设计框图是一样的,只是细节表现的更具体了,下面就来对整个设计进行仿真。

           仿真图如下:

           可以看到仿真结果与主逻辑运行模块的仿真结果是一样的,只是倒计时的显示变成了数码管的段码而已,看一下细节图:

           对用段码翻译成数字,可以看出A方向绿灯初始时间为30S并依次递减,B方向红灯为55S也依次递减,证明设计是正确的。

    4 硬件设计

            前面硬件描述语言已经把整个设计的做完,功能仿真也进行完毕了。但是硬件设计的核心器件还没有定下来。那么下面来进行器件选型。首先按照之前的选择的器件(EP4CE10F17C8)对工程进行综合编译,可以看到资源占用报告,如图:

           设计占用该芯片的资源1%都不到,这样显然是不合理的。换用该系列资源最少的芯片(EP4CE6E22C8)对工程进行综合编译,得到资源占用如图:

           设计占用该芯片资源的2%,实则也是不合理的。如果非要用该系列FPGA来做,无疑该芯片已是最佳选择。

           那么最佳的方案是哪一个呢?撇开FPGA,其实CPLD同样也可以实现的,采用EPM240T100C5对工程进行编译得到如下资源占用报告:

           可以看出设计占用了该器件60%的资源,这样还有40%的资源余量,那这样看来该器件 才是完成该设计的最佳选择。

           下面以FPGA为例选用EP4CE6E22C8来完成该设计,下面分模块对硬件原理图进行讲解。

    4.1 电源接口电路设计

            电源接口电路采用了两种供电的方式,满足不同的情况下使用。

    1Micro Usb供电,取电方便,用智能手机的充电线或者充电宝均可取电;(2)排针供电,但是必须要实验室直流电源通过排线接入5V电源。

            电路中使用D1用来防反接,防止电源接反,R1使用的是自恢复保险丝,当后面电路存在短路的情况时,保险丝会断开,防止烧坏后面电路的器件,LED作为一个电源指示灯,当电源接好并且K1开关打开时,电源指示灯常亮。

    4.2 电源系统设计

            FPGA芯片需要用到3种电源供电,所以电路中设计3种电源转换电路。

            (1)5V电源转3.3V,E1、E2用来滤波储能,C3、C6用来滤出高频电源噪声。

            (2)5V电源转2.5V,外部加的滤波电容功能同上。

            (3)3V电源转1.2V,外部的电容功能同上。

    4.3 时钟设计

            全局主时钟采用50M有源晶振设计,频率精度高、稳定性好,C7、C8用来滤除有源晶振的电源噪声。

    4.4 JTAG端口和FPGA配置电路设计

            程序的下载,采用通用的JTAG方式下载程序,由于FPGA掉电易失,所以需要挂一个存储器,电路中选用的是EPCS16S18N,配置管脚需要注意的地方,就是有些脚需要上拉电阻。

    4.5  FPGA芯片的电源引脚

    FPGA的电源引脚分布情况,VCC_3V3,VCC_1_2,以及VCC_2.5。

    4.6 A方向信号灯电路

             A方向上的信号灯分为红,绿,黄,左转等4种,都是高电平点亮,而数码管采用的是7段共阴极数码管,在程序中需要编程实现显示的数字。

    4.7 B方向信号灯电路

            电路里面的控制方式同A方向上的相似。

    4.8 复位电路

           复位电路,用于程序的复位,本电路中使用的是低电平复位。

    4.9 PCB设计图

     4.10  实物图

    5 实物验证

            在这里就已经到达设计的最后一个阶段了,需要把整个设计在实物上进行验证。

    5.1 管脚分配

    Step1:打开Traffic_light\formal_code\Traffic_light中的工程

     Step2:选择Pin Planner

    Step3:根据《管脚分配手册》,对管脚进行分配

            分配完成以后保存并从新编译工程。(注:在正式程序的工程中,管脚已经分配好,所以使用时无需再进行分配,这里只是带大家学习这一过程。

    5.2  实物验证

            最后一步任务就是把程序下载进入设计的开发板中,然后就可以验证功能是否正确了。

    Step1:将实物行如下连接:

     Step2: 打开Traffic_light\formal_code\Traffic_light中的工程

       Step3:打开programmer

      Step4:设置硬件链接

     Step4:点击start等待下载完成,下载完成后重新上电

    运行结果:(工程中的下载配置文件已固化好,下载即可,若想学习如何进行下载文件的生成,请自行搜索相关方法  

        资料合集包传送门:

              至此,基于FPGA的交通灯的全部设计流程已经讲解完毕,博客中讲解了所有的设计原理和设计重点,需要进一步学习的可下载全套资料合集包,本案例资料包含Verilog和VHDL两个版本,请下载自己需要的版本:

            Verilog资料合集传送门: Traffic_light_Verilog.rar

            VHDL资料合集传送门:Traffic_light_VHDL_new.rar

    资料包含内容如下:

    文件夹名

    功能描述

    备注

    bom

    元器件清单

    module_test

    模块级的仿真工程(可能采用不同的仿真形式和仿真工具,具体以对应的博客为准)

    需要安装Quartuse II 13.1

    system_test

    系统级的仿真工程(可能采用不同的仿真形式和仿真工具,具体以对应的文档为准)

    需要安装Quartuse II 13.1

    formal_code

    程序工程的实物运行版本版本,用于下载到板卡上运行的(与仿真版本只有参数上的差异,并且生成了配置文件)

    需要安装Quartuse II 13.1

    sch&pcb

    原理图和PCB设计图

    打开文档需要安装Adobe Acrobat

    video

    产品设计讲解课程,与document的文件使用方法相同,也需要用你的机器码来获取播放密码。并且需要“比特电子视频专用播放器”打开,否则会报文件损坏错误。

    使用“比特电子视频专用播放器” 去打开视频

    软件提取网址

    工作室提供了文件使用所需要的软件下载地址和对应的软件安装使用教程提取网址

    展开全文
  • 设计要求:设计一个交通灯控制, 1当乡村公路无车时始终保持乡村公路红灯亮,主干道绿灯亮。 2当乡村公路有车时,而主干道通车时间已经超过他的最短通车时间时,禁止主干道通车,让乡村公路通行。主干道最短通车...
  • 我在本课程中所选择的课题是用Verilog HDL实现交通灯控制器。该课题的具体内容及要求如下: 主干道与乡村公路十字交叉路口在现代化的农村星罗棋布,为确保车辆安全、迅速地通过,在交叉路口的每个入口处设置了红、...
  • 数电课程设计交通信号灯 1.综合应用数字电路知识设计一个交通灯控制器。了解各种元器件 的原理及其应用,锻炼自己的动手能力和实际解决问题的能力。 2.深入了解交通灯的工作原理。
  • 十字路口交通管理控制器课程设计报告,红绿灯得循环,控制交通
  • 设计+报告,欢迎下载
  • 数字电路课程设计---交通灯控制器报告,整套资料,内含局部原理图和整机连接图,含倒记时。红绿灯变换前,黄灯闪5S。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,573
精华内容 629
关键字:

交通灯控制器课程设计