• 领导讲话
  • 自我介绍
  • 党会党课
  • 文秘知识
  • 转正申请
  • 问题清单
  • 动员大会
  • 年终总结
  • 工作总结
  • 思想汇报
  • 实践报告
  • 工作汇报
  • 心得体会
  • 研讨交流
  • 述职报告
  • 工作方案
  • 政府报告
  • 调研报告
  • 自查报告
  • 实验报告
  • 计划规划
  • 申报材料
  • 当前位置: 勤学考试网 > 公文文档 > 转正申请 > 正文

    十字路口交通信号灯控制电路设计

    时间:2020-11-10 13:13:53 来源:勤学考试网 本文已影响 勤学考试网手机站

    等级:

    等级:

    课 程 设 计

    课程名称

    嵌入式系统课程设计

    课题名称

    十字路口交通信号灯的控制电路设计

    专 业

    电子信息工程

    班 级

    电信1381

    学 号

    201313020109

    姓 名

    彭坚

    指导老师

    贺富朋

    2016年12月6日

    电气信息学院

    课程设计任务书

    课题名称

    十字路口交通信号灯的控制电路设计

    姓 名

    彭坚

    专业

    电子信息工程

    班级

    1381

    学号

    09

    指导老师

    贺富朋

    课程设计时间

    2016年12月4日-2016年12月16日(15、16周)

    教研室意见

    意见: 审核人:

    一、任务及要求

    CPLD为复杂可编程逻辑器件,通过EDA技术对其进行编程,可将一个较复杂的数字系统集成于一个芯片中,制成专用集成电路芯片,并可随时在系统修改其逻辑功能。并最终完成电路的编程调试。具体要求如下:

    1. 设计制作一块十字路口的交通信号灯的控制电路的专用芯片。

    2. A方向和B方向各设置红(R)、黄(Y)、绿(G)三盏灯,三盏灯按合理的顺序亮灭,并能将灯亮的时间以倒计时的方式显示出来。

    3. 两个方向各灯的时间可方便地进行设置和修改。假设A方向为主干道,车流量大,A方向通行时间比B方向长。设A方向每次至少通行t1秒,B方向每次至多通行t2秒,黄灯亮t秒。

    二、进度安排

    第一周:

    周一:集中布置课程设计相关事宜。

    周二~周三:子模块程序设计,顶层电路程序设计。

    周四~周日:子模块,顶层电路仿真。

    第二周:周一~周三:编程下载,系统调试。

    周四~周五:设计报告撰写。周五进行答辩和设计结果检查。

    三、参考资料

    1. 张 原编著,可编程逻辑器件设计及应用,机械工业出版社。

    2.荀殿栋,徐志军编著,数字电路设计实用手册,电子工业出版社。

    3. 刘洪喜,陆颖编著. VHDL电路设计实用教程 清华大学出版社

    目录

    一、总体设计思路………………………………………………………………………1

    二、设计过程 ……………………………………………………………………………1

    三、单元电路设计………………………………………………………………………2

    3.1顶层设计…………………………………………………………………………3

    3.2模块设计…………………………………………………………………………3

    四、设计与仿真…………………………………………………………………………8

    4.1编译………………………………………………………………………………8

    4.2生成元器件……………………………………………………………………8

    4.3连接原理图……………………………………………………………………10

    五、系统仿真设计与仿真 …………………………………………………………10

    5.1系统仿真………………………………………………………………………10

    5.2引脚锁定………………………………………………………………………12

    5.3调试结果………………………………………………………………………12

    六、心得体会 …………………………………………………………………………13

    一、设计总体思路

    由于设计要求两个方向各灯的时间可方便地进行设置和修改。假设A方向为主干道,车流量大,A方向通行时间比B方向长。设A方向每次至少通行t1秒,B方向每次至多通行t2秒,黄灯亮t秒。一条为主干道A,一条为乡间公路B。组成十字路口,。有MR(主红)、MY(主黄)、MG(主绿)、CR(乡红)、CY(乡黄)、CG(乡绿)六盏交通灯需要控制;交通灯由绿→红有4秒黄灯亮的间隔时间,由红→绿没有间隔时间;系统有MRCY、MRCG、MYCR、MGCR四个状态;

    特殊时期发出信号S=1,其余时间S=0;平时系统停留在MGCR(主干道通行)状态,一旦S信号有效,经MYCR(黄灯状态)转入MRCG(乡间公路通行)状态,但要保证MGCR的状态不得短于一分钟;即A每次至少通行60S。

    一旦S信号无效,系统脱离MRCG状态。随即经MRCY(黄灯状态)进入MGCR状态,即使S信号一直有效,MRCG状态也不得长于20秒钟。即B每次至多通行20S。

    二 设计过程

    2.1 交通灯工作原理分析:

    根据交通灯控制器的功能与要求,将其总体电路分为状态控制,倒计时,数码管显示,信号灯显示模块。外部两路脉冲振荡器的频率选为1 kHz和1 Hz的信号,1khz信号用于显示模块的扫描,1 Hz信号用做倒计时模块的计数脉冲。由于实验箱只能接一个信号源故加入分频模块。

    2.2 计时电路应满足下列条件:

    1)当S=1,且计数器已完成60计数时,计数器进入模4计数,随后进入模20计数,再进入模4计数,再回到模60计数。

    2)当计数器进行摸20计数时,一旦S变为0,计数器立马进入模4计数,再进入模60计数。

    3)完成模20计数后,不论S为0或1,计数器进入模4计数,再进入模60计数。

    4)若计数器未完成模60计数,不论S如何变话,计数器将继续进行模60计数。

    2.3 使用文本设计底层文件,并生成相应元器件,再使用原理图设计顶层文件

    三、单元电路设计

    3.1 顶层文件的设计

    顶层原理图设计可以依据系统框图进行,由状态控制计数模块,数码管显示分频模块和交通灯显示模块(jtdjs,jtdfp,jtdxs)三部分组成。

    3.2 各模块设计文件

    JTDJS:

    计数控制

    LIBRARY IEEE;

    USE IEEE.STD_LOGIC_1164.ALL;

    USE IEEE.STD_LOGIC_UNSIGNED.ALL;

    ENTITY JTDJS IS

    PORT(CLK1,S,RESET:IN STD_LOGIC;

    b:BUFFER STD_LOGIC;

    tim:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));

    END JTDJS;

    ARCHITECTURE behav OF JTDJS IS

    TYPE STA IS(mgcr,mycr,mrcg,mrcy);

    SIGNAL STATE:STA;

    BEGIN

    PROCESS(CLK1)

    -- VARIABLE b:STD_LOGIC:='0';

    VARIABLE a:STD_LOGIC:='0';

    VARIABLE th,tl:STD_LOGIC_VECTOR(3 DOWNTO 0);

    BEGIN

    IF RESET='0' THEN STATE<=mgcr; th:="0000" ;tl:="0000";a:='0';b<='0';

    ELSIF CLK1'EVENT AND CLK1='1' THEN

    CASE STATE IS

    WHEN mgcr =>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:='0';--th:="0110";tl:="0000";

    ELSE

    IF a='0' THEN

    th:="0110";tl:="0000";a:='1';

    else

    IF NOT(th="0000" AND tl="0010") then

    IF tl="0000" then

    tl:="1001";th:=th-1;

    else tl:=tl-1;

    END IF;

    ELSE th:="0000";tl:="0001";a:='0';b<='1';

    END IF;

    END IF;

    END IF;

    WHEN mycr => IF a='0' THEN

    th:="0000";tl:="0100";a:='1';

    else

    IF NOT(th="0000" AND tl="0010") then

    tl:=tl-1;

    ELSE th:="0000";tl:="0001";a:='0';STATE<=mrcg;

    END IF;

    END IF;

    WHEN mrcg =>IF S='1' THEN

    IF a='0' THEN

    th:="0010";tl:="0000";a:='1';

    else

    IF NOT(th="0000" AND tl="0010") then

    IF tl="0000" then

    tl:="1001";th:=th-1;

    else tl:=tl-1;

    END IF;

    ELSE th:="0000";tl:="0001";a:='0';STATE<=mrcy;

    END IF;

    END IF;

    ELSE a:='0';STATE<=mrcy;th:="0000";tl:="0100";

    END IF;

    WHEN mrcy =>IF a='0' THEN

    th:="0000";tl:="0100";a:='1';

    else

    IF NOT(th="0000" AND tl="0010") then

    tl:=tl-1;

    ELSE th:="0000";tl:="0001";a:='0';STATE<=mgcr;

    END IF;

    END IF;

    END CASE;

    tim <= th & tl;

    END IF;

    end process;

    END behav;

    JTDFP

    (b)数码管显示分频

    LIBRARY IEEE;

    USE IEEE.STD_LOGIC_1164.ALL;

    USE IEEE.STD_LOGIC_UNSIGNED.ALL;

    ENTITY JTDFP IS

    PORT (CLK : IN STD_LOGIC;

    JIN : IN STD_LOGIC_VECTOR(7 DOWNTO 0);

    SG : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);

    sel0,sel1,sel2 : OUT STD_LOGIC;

    CLK1:buffer STD_LOGIC );

    END JTDFP;

    ARCHITECTURE behav OF JTDFP IS

    SIGNAL Q : STD_LOGIC_VECTOR(11 DOWNTO 0);

    SIGNAL P,R: STD_LOGIC_VECTOR(3 DOWNTO 0);

    SIGNAL CONT8: STD_LOGIC_VECTOR(2 DOWNTO 0);

    SIGNAL CONT : STD_LOGIC_VECTOR(7 DOWNTO 0);

    SIGNAL YM : STD_LOGIC_VECTOR(11 DOWNTO 0);

    SIGNAL A : STD_LOGIC_VECTOR(3 DOWNTO 0);

    BEGIN

    F:PROCESS(CLK)

    BEGIN

    IF CLK'EVENT AND CLK = '1' THEN CONT<=CONT+1;

    IF CONT=100 THEN CLK1<='1';CONT<=;

    ELSE CLK1<='0';

    END IF;

    END IF;

    END PROCESS;

    C:PROCESS( CLK)

    BEGIN

    IF CLK'EVENT AND CLK='1' THEN

    IF CONT8<"001" THEN CONT8 <=CONT8+1;

    ELSE CONT8<=(OTHERS=>'0');

    END IF;

    END IF;

    CASE CONT8 IS

    WHEN "000" => sel0<='0';sel1<='1';sel2<='0';A<=JIN(3 downto 0);

    WHEN "001" => sel0<='1';sel1<='0';sel2<='0';A<=JIN(7 downto 4);

    WHEN OTHERS =>NULL;

    END CASE;

    END PROCESS ;

    D:PROCESS(A)

    BEGIN

    CASE A IS

    WHEN "0000" =>SG<= ;WHEN "0001" =>SG<= ;

    WHEN "0010" =>SG<=; WHEN "0011" =>SG<=;

    WHEN "0100"=>SG<=; WHEN "0101" =>SG<=;

    WHEN "0110" =>SG<=; WHEN "0111" =>SG<=;

    WHEN "1000" =>SG<=; WHEN "1001" =>SG<=;

    WHEN OTHERS=>NULL;

    END CASE;

    END PROCESS;

    END behav;

    JTDXS

    (c)交通灯显示

    LIBRARY IEEE;

    USE IEEE.STD_LOGIC_1164.ALL;

    USE IEEE.STD_LOGIC_UNSIGNED.ALL;

    ENTITY JTDXS IS

    PORT(CLK1,S,B,RESET:IN STD_LOGIC;

    COUNT: IN STD_LOGIC_VECTOR(7 DOWNTO 0);

    MG,MY,MR,CG,CY,CR:OUT STD_LOGIC);

    END JTDXS ;

    ARCHITECTURE behav OF JTDXS IS

    TYPE STATES IS(mgcr,mycr,mrcg,mrcy);

    SIGNAL STATE:STATES;

    BEGIN

    PROCESS(STATE,CLK1, S,RESET)

    BEGIN

    IF RESET='0'

    THEN STATE<=mgcr;MG<='1';CR<='1';MY<='0';MR<='0';CG<='0';CY<='0';

    ELSIF CLK1'EVENT AND CLK1='1' then

    CASE STATE IS

    WHEN mgcr=>IF B='1' AND S='1'THEN

    STATE<=mycr;MY<='1';CR<='1';MG<='0';MR<='0';CG<='0';CY<='0';

    ELSE STATE<=mgcr;MG<='1';CR<='1';MY<='0';MR<='0';CG<='0';CY<='0';

    END IF;

    WHEN mycr=>IF COUNT= THEN

    STATE<=mrcg;MR<='1';CG<='1';MG<='0';MY<='0';CR<='0';CY<='0';

    ELSE STATE<=mycr;MY<='1';CR<='1';MG<='0';MR<='0';CG<='0';CY<='0';

    END IF;

    WHEN mrcg=>IF COUNT= OR S='0'THEN

    STATE<=mrcy;MR<='1';CY<='1';MY<='0';MG<='0';CR<='0';CG<='0';

    ELSE STATE<=mrcg;MR<='1';CG<='1';MG<='0';MY<='0';CR<='0';CY<='0';

    END IF;

    WHEN mrcy=>IF COUNT= THEN

    STATE<=mgcr;MG<='1';CR<='1';MR<='0';MY<='0';CY<='0';CG<='0';

    ELSE STATE<=mrcy;MR<='1';CY<='1';MY<='0';MG<='0';CR<='0';CG<='0';

    END IF;

    END CASE;

    END IF;

    END PROCESS;

    END behav;

    四、设计和仿真

    4.1 编译

    1)输入完程序之后逐个编译

    2)逐个编译无错之后进行全程编译

    4.2 将以上模块生成元器件

    计数控制(d) 数码管显示分频(e) 交通灯显示(f)

    4.3将以上各器件连接成实验原理图

    (g)

    五、系统仿真设计和仿真

    5.1系统仿真

    1)建立新的波形激励文件

    2)在波形编辑器窗口添加节点

    3)通过Edit->End Time 来设定仿真结束时间

    4)在CLOCK窗口中设置clk的时钟周期为1us

    点击save保存

    仿真波形与调试结果

    通过Tools下的Simulator Tools项进行仿真,然后观察输出波形。仿真波形如下:

    (h)

    S=1乡间公路状态(既MGCR60S-MYCG4S-MRCG20S-MGCY4S-MGCR60S)

    (i)

    S=0转S=1立即进入MYCR4S-MRCG20S

    5.2引脚锁定

    (j)

    5.3调试结果:

    有开关K1控制S的值,当K1断开时实验箱交通灯处于MGCR状态,数码管在倒数60计数。合上K1后S由0转入1状态,数码管继续倒数60计数且交通灯仍处于MGCR状态,60计数完成后随即转入MYCG4S-MRCG20S-MGCY4S-MGCR60S的循环状态直到S再次由1变成0,数码管立即停止计数进入倒数4S的黄灯状态,4S结束后交通灯进入MGCR状态,按下reset键数码管从顶端重新开始计时。

    六、心得体会

    通过此次课程设计,使我更加扎实的掌握了有关SOPC以及EDA方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。过而能改,善莫大焉。

    在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获龋最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!

    课程设计诚然是一门专业课,给我很多专业知识以及专业技能上的提升,同时又是一门讲道课,一门辩思课,给了我许多道,给了我很多思,给了我莫大的空间。同时,设计让我感触很深。使我对抽象的理论有了具体的认识。通过这次课程设计,我掌握了常用元件的识别和测试;熟悉了常用软件quartusII。

    此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获颇丰。对于这一次的收获,自己发现问题解决问题的能力有所提升。还有就是对自己细心程度的提升。我们从书本上学到的知识应用于实践,再次巩固了我的动手能力,提高了我的思考能力。虽然设计过程中遇到了很多困难,但是在解决这些问题的过程无疑是对自身专业素质的提高。当最终仿真成功的时候也是对自己的一种肯定。此次的设计不仅增强了自己在专业设计方面的信息,鼓舞了自己,更是一次兴趣的培养。

    电气信息学院课程设计评分标准

    环节

    项目

    评价

    及格

    不及格

    实践环节(70%)

    设计方案合理性与创造性

    编程完成情况

    电路模块仿真调试结果

    硬件测试过程及结果

    解决问题能力及答辩情况

    纪律和出勤情况

    设计报告(30%)

    1 设计报告内容完整、规范

    2 设计步骤规范、正确

    3 仿真调试结果正确、波形清楚

    4 硬件测试过程规范、结果正确

    综合评价

    课程设计成绩评定为:

    □优 □良 □中 □及格 □不及格

    指导老师签名:________________

    日 期:________________

    • 考试时间
    • 范文大全
    • 作文大全
    • 课程
    • 试题
    • 招聘
    • 文档大全

    推荐访问