最新EDA交通灯课程设计资料.doc
Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateEDA交通灯课程设计资料EDA交通灯课程设计资料 自动化专业综合课程设计2课程设计报告题 目: 交通灯控制系统的设计 院 (系): 机电与自动化学院 专业班级: 学生姓名: 学 号: 指导教师: 2013年1月 7日至2013年 1 月 23日华中科技大学武昌分校制自动化专业综合课程设计2课程设计任务书一、设计题目交通灯控制系统的设计二、设计主要内容 (1) 控制要求本课程设计要求利用VHDL对输入的时钟信号进行分频控制产生秒信号,并结合试验箱上的集成电路及芯片,控制十字路口的红绿黄灯交替点亮和熄灭,并用2位7段数码管显示十字路口两个方向的剩余时间。1 根据交通状态控制十字路口红黄绿灯的点亮熄灭及闪烁等。2 倒计时功能:从10秒开始倒计时,5秒时绿灯变黄并闪烁,红灯不变。10秒结束时黄灯变红,红灯变绿。3 显示功能:使用2位7段数码管动态显示倒计时时间。 (2) 设计要求1 设计FPGA的基础工作电路2 设计红绿黄12个灯与FPGA芯片的硬件电路连接3 设计显示部分硬件电路4 使用底层及顶层设计完成电路设计,并作出各文件的仿真5 程序下载并进行硬件调试(3)撰写说明书1 含系统硬件设计电路2 含软件设计(程序及必要的说明)3 含软件仿真及生成的顶层电路4 调试及调试结果,以及在调试过程中出现的问题及解决办法三、原始资料1交通灯控制系统的的基本原理是根据路口的交通状态设定路口红灯点亮时长和绿灯的点亮时长,主干道的绿灯时间应大于红灯点亮时间。而倒计时时间均为10秒,黄灯闪烁均为5秒;2 本系统的控制与计时有关,因此产生秒信号是设计的关键,系统中可以采用分频实现秒信号,并对此秒信号进行计数,当时间要求达到时,实现对交通灯的切换操作;3 由于用七段数码管实现倒计时计数,在程序中用底层文件的方式实现译码功能,并驱动数码管进行显示;分频产生控制信号控制交通灯锁存器倒计时显示器计数模块CLK1Hz4 七段数码管的显示可以采用静态显示,但应有锁存部分,保证显示的正确及稳定。四、要求的设计成果在QuartusII软件中新建原理图文件,编译,仿真,锁定管脚并下载到目标芯片。将 (1) 根据设计要求, 设计系统的原理框图,说明系统中各主要组成部分的功能; (2) 在QuartusII软件中,编写各个模块VHDL源程序;并上机调试通过; (3) 根据软件编好用于系统仿真的测试文件;(4) 编好用于硬件验证的管脚锁定文件;(5) 记录系统各个模块仿真结果; (6) 记录调试过程中出现的问题及解决办法。注意:基本要求学生必须完成,学有余力的学生可以在基本要求完成的前提下,选择其它方案完成设计。一般来说,生成的硬件电路越简单考查评价就越高。五:进程安排序号课程设计内容学时分配备注1集中学生学习课程设计的关键理论知识、分配设计任务、明确设计要求、查找资料等。2天2根据任务的要求进行方案构思,初选方案,绘制系统原理框图并与指导教师讨论,方案定稿。 1天3完成各模块的VHDL程序设计、编译和时序仿真6天4编程、下载,结合硬件平台,进行调试。完成顶层文件图绘制,对编制好的文件交给老师检查,并按照老师要求修改。2天5撰写课程设计说明书2天6答辩及验收课程设计2 天合计15天六、主要参考资料1 侯伯享. VHDL硬件描述语言与数字逻辑电路设计. 西安:西安电子科技大学出版,20102 潘松. EDA技术实用教程. 成都:电子科技大学出版社,20103 李玉山. 电子系统集成设计技术. 北京:电子工业出版社,2010.6.4 李国丽.EDA与数字系统设计.北京:机械工业出版社,20095 周彩宝.VHDL语言及其应用. 上海:华东计算机技术研究所:20096 谭会生.EDA技术中和应用实例与分析.西安:西安电子科技大学出版社,2008 指导教师(签名): 20 年 月 日目 录1设计任务及要求61.1设计任务61.2设计要求62.系统设计62.1系统原理62.2分频器模块72.3计数器模块82.4控制模块92.5显示模块112.6顶层文件设计132.7引脚锁定142.8下载验证143.心得体会15参考文献16课程设计成绩评定表171设计任务及要求1.1设计任务:模拟十字路口交通信号灯的工作过程,利用实验板上的两组红、黄、绿LED作为交通信号灯,设计一个交通信号灯控制器。要求:(1) 交通灯从绿变红时,有5秒黄灯亮的间隔时间;(2) 交通灯红变绿是直接进行的,没有间隔时间;(3) 主干道上的绿灯时间为35秒,支干道的绿灯时间为15秒;(4) 在任意时间,显示每个状态到该状态结束所需的时间。ABCD主干道交通灯绿(35秒)黄(5秒)红(15秒)红(5秒)支干道交通灯红红绿黄图1 交通信号灯的4种状态1.2设计要求:1 设计FPGA的基础工作电路2 设计红绿黄12个灯与FPGA芯片的硬件电路连接3 设计显示部分硬件电路4 使用底层及顶层设计完成电路设计,并作出各文件的仿真5 程序下载并进行硬件调试6七段数码管的显示可以采用静态显示,但应有锁存部分,保证显示的正确及稳定。2 系统设计2.1 系统原理图2 系统原理图2.2 分频器模块在红绿灯交通信号系统中,大多数情况是通过自动控制的方式指挥交通的。因此为了避免意外事件的发生,电路必须给一个稳定的时钟(clock)才能让系统正常运作。设计的分频器模块如图3所示, clkclkoutihzinst图3 分频模块说明:模块的名字为ihz,clk为系统给定时钟,clkout为分频后的输出端程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ihz IS PORT(clk : IN STD_LOGIC; clkout : OUT STD_LOGIC);END ;ARCHITECTURE bhv OF ihz IS SIGNAL count : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PROCESS(clk) BEGIN if clk'event and clk='1' THEN IF count="1111" then count<=(others=>'0'); ELSE Count <= count +1; END IF ; END IF ;END PROCESS; clkout <= count(1);END ;分频模块仿真:图4 分频模块仿真结果2.3 计数模块计数电路最主要的功能就是记数负责显示倒数的计数值,对下一个模块提供状态转换信号。模块的名字为jsq,见下图5系统输入:clkout: 接收由clk电路的提供的1hz的时钟脉冲信号; rst : 复位信号系统输出信号:counter:60秒计数信号图5 计数器模块程序:IBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY jsq is PORT ( clkout,rst:in std_logic; counter:buffer INTEGER RANGE 0 TO 59);END;ARCHITECTURE bhv1 OF jsq IS BEGINprocess(rst,clkout)BEGINIF rst='1' THENcounter<=0;ELSIF clkout'event and clkout='1' THENIF counter=59 THENcounter<=0;ELSEcounter<=counter+1;END IF;END IF;END PROCESS;END;计数器仿真见下图:图6 计数器仿真结果2.4 控制器模块计数输出之后,把一个计数周期分成4个部分控制,0s-35s 主干道绿灯亮,副干道红灯亮;34s-39s主干道黄灯闪,副干道红灯亮;40s-54s主干道红灯亮,副干道绿灯亮;55s-59s主干道红灯亮,副干道黄灯闪。图7 控制器模块程序:LIBRARY IEEE;use ieee.std_logic_1164.all;entity cpu isport( clk,clkout:in std_logic; counter:in integer range 0 to 59; r1,r2,b1,b2,y1,y2:out std_logic);end;architecture bhv2 of cpu isbeginprocess(clkout,clk)begin if rising_edge(clkout)then if counter<35 then r1<='1' b1<='0' y1<='0' r2<='0' b2<='1' y2<='0' elsif counter<40 then r1<='1' b1<='0' y1<='0' r2<='0' b2<='0' y2<=('1'AND clkout); elsif counter<55 then r1<='0' b1<='1' y1<='0' r2<='1' b2<='0' y2<='0' elsif counter<60 then r1<='0' b1<='0' y1<=('1'and clkout); r2<='1' b2<='0' y2<='0'end if;end if;end process;end; 控制器仿真见下图:图8 控制器仿真结果2.5 显示模块在主干道红灯亮(45s-54s)和副干道红灯亮(30s-39s)分别显示10秒倒计时,从9、8、7、6.0。显示器模块名字为xianshiqi,如图9所示图9 显示器模块程序:LIBRARY IEEE;use ieee.std_logic_1164.all;entity xianshi isport(data_in:in std_logic_vector (2 downto 0); data_out:out std_logic_vector (7 downto 0); counter:integer range 0 to 59; led1:out std_logic_vector(7 downto 0);end;architecture bhv2 of xianshi isbegin process(data_in)begincase data_in iswhen "000"=> data_out <= "00000001"when others =>data_out <= "XXXXXXXX"end case;end process;process(counter) begin case counter is when 51 => led1<=x"6f"-09 when 52 => led1<=x"7f"-08 when 53 => led1<=x"07"-07 when 54 => led1<=x"7d"-06 when 55 => led1<=x"6d"-05 when 56 => led1<=x"66"-04 when 57 => led1<=x"4f"-03 when 58 => led1<=x"5b"-02 when 59 => led1<=x"06"-01 when 31 => led1<=x"6f"-09 when 32 => led1<=x"7f"-08 when 33 => led1<=x"07"-07 when 34 => led1<=x"7d"-06 when 35 => led1<=x"6d"-05 when 36 => led1<=x"66"-04 when 37 => led1<=x"4f"-03 when 38 => led1<=x"5b"-02 when 39 => led1<=x"06"-01 when others=> led1<=x"00" end case; end process ; end;显示模块仿真:图10 显示模块仿真2.6顶层文件设计分频器,计数器,控制器,显示模块设计出来以后,将他们建立在一个工程里,然后根据设计的原理将元器件连接起来,形成图11的 顶层文件。图11 顶层文件顶层文件仿真结果见下图:给定4HZ的 clk 时钟信号,在0-34秒b2和b22主干道的绿灯亮了,r1和r22为支干道红灯亮了;35-39秒时主干道黄灯y2和y22闪烁,支干道的红灯r1和r22亮;40-54秒时主干道红灯r2和r22亮,支干道的绿灯b1和b11亮;55-59秒时主干道红灯r2和r22亮,支干道的黄灯y1和y22闪烁;在主干道红灯亮(45s-54s)和副干道红灯亮(30s-39s)led七段数码管段显示10秒倒计时。综上所述:仿真的结果实现了设计的初衷。图12 顶层文件仿真2.7引脚锁定因为顶层文件的仿真结果到达了设计的要求,所以可以锁定引脚。我们实验室所用的EDA芯片为 EPC3C10E1443C08,查相关的资料可以知道各引脚的位置。所得的引脚设置见图13图13 引脚锁定2.8下载验证将编译产生的 SOF格式的下载的FPGA中,按照相应的接线要求连接线路后,进行验证。 所得的实验结果与 顶层文件的仿真一直,即:给定4HZ的 clk 时钟信号,12盏灯能够按照系统设计的要求正常运行。 所以交通灯系统是正确的。3 心得体会为期三个星期的课程设计转眼就过去了,在这三个星期中。我重新认识了QUARTUS II软件和EDA芯片。对大二所学的 EDA课程又重新温习了一遍,特别是VHDL语言的编程,好久没有接触到,遗忘了很多。看起来很平常的十字路口交通灯,真正要自己去设计,还是有一定的困难的。里面还涉及到了一定的生活常识,比如主干道的绿灯点亮时间要比支干道的多,而且黄灯的点亮是在绿灯过渡到红灯的时候出现,还有黄灯不是一直亮,是闪烁的,每一个细节都有可能影响整个系统的成败。一个简单的系统不仅仅需要课本知识,还有许多的生活常识也涉及到了。本次课程设计不仅让我们将所学的课本知识温故了一遍,并且很好的开阔了一下我们的视野,培养了我们的综合素质。在编写程序的过程中,遇到了很多问题,使我发现自己以前学习上存在的不足。通过与同学探讨和请教老师,终于把问题都解决了,并加深了对交通灯原理和设计思路的了解。同时也掌握了做课程设计的一般流程,为以后的设计积累了一定的经验。做课程设计时,先查阅相关知识,把原理吃透,确定一个大的设计方向,在按照这个方向分模块的把要实现的功能用流程图的形式展示。最后参照每个模块把输入和输出引脚设定,运用我们所学的VHDL语言进行编程。总之,通过这次的设计,进一步了解了EDA技术,收获很大,对软件编程、排错调试、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。在此,感谢给我提供帮助的老师和同学。参考文献1 侯伯享. VHDL硬件描述语言与数字逻辑电路设计. 西安:西安电子科技大学出版,20102 潘松. EDA技术实用教程. 成都:电子科技大学出版社,20103 李玉山. 电子系统集成设计技术. 北京:电子工业出版社,2010.6.4 李国丽.EDA与数字系统设计.北京:机械工业出版社,20095 周彩宝.VHDL语言及其应用. 上海:华东计算机技术研究所:20096 谭会生.EDA技术中和应用实例与分析.西安:西安电子科技大学出版社,2008 7 王冠,黄熙,王鹰.Verilog HDL与数字电路设计M.北京:机械工业出版社.2005,98 谭会生 张昌凡.EDA技术及应用M.西安:西安电子科技大学出版社,2004课程设计成绩评定表成绩评定项 目比例得 分平时成绩(百分制记分)30%业务考核成绩(百分制记分)70%总评成绩(百分制记分)100%评定等级优 良 中 及格 不及格指导教师(签名):20 年 月 日-