您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 2014EDA课程设计报告张同凯20124020427
北华航天工业学院《EDA技术综合设计》课程设计报告报告题目:交通信号灯作者所在系部:电子与控制工程学院作者所在专业:自动化专业作者所在班级:B12221作者姓名:张同凯指导教师姓名:崔瑞雪完成时间:2014年12月5日内容摘要EDA技术是现代电子信息工程领域的一门新技术,它是在先进的计算机平台上开发出来的一整套电子系统设计的软硬件工具,并提供了先进电子系统设计方法。当今的技术,开发人员完全可以通过自己的电子系统设计来制定芯片内部的电路功能,使之成为设计者自己的专用集成电路芯片。这种技术中常用软件有maxplusII和quartusII,而程序的编辑是用VHDL语言实现逻辑功能的。本实验试验系统中可用可编程逻辑器件为FPGA,本实验的交通信号灯的设计:首先在quartusII软件当中编辑程序,编译完成之后仿真,当仿真结果正确时下载到试验箱的系统中。最终的目的要在实验板上用红路灯表示出来,并且同时要用数码管显示出人们的等待时间,交通灯的状态变化和显示时间同步。关键词:EDA、VHDL、交通灯、控制电路目录一、实验目的……………………………………………………………………………1二、硬件要求……………………………………………………………………………1三、方案论证……………………………………………………………………………1四、模块说明……………………………………………………………………………11.clk时钟秒脉冲发生电路或分频器…………………………………………………12.时钟扫描电路…………………………………………………………………………23.六十进制计数器………………………………………………………………………24.状态转换………………………………………………………………………………25.时间显示………………………………………………………………………………26.译码模块………………………………………………………………………………2五、试验程序……………………………………………………………………………3六、原理图………………………………………………………………………………6七、仿真结果……………………………………………………………………………6八、实验步骤……………………………………………………………………………7九、实验结果……………………………………………………………………………7十、实验总结……………………………………………………………………………7十一、参考文献…………………………………………………………………………7课程设计任务书课题名称交通信号灯完成时间2014.12.5指导教师崔瑞雪职称副教授学生姓名张同凯班级B12221总体设计要求和技术要点设计一个交通信号灯控制电路。要求:1、主干道和支干道交替放行,主干道每次放行30秒,支干道每次放行20秒;2、每次绿灯变红灯时,黄灯先亮5秒钟,此时原红灯不变;3、用十进制数字(递减计数)显示放行和等待时间。技术要点:1、主(支)干道红灯时间等于支(主)干道红绿黄灯时间之和;2、用时钟数据扫描通过视觉暂留来数码管显示等待时间;3、状态寄存器和状态寄存器的结合灵活运用;4、计数时间值要译成七段译码值。工作内容及时间进度安排工作内容:在软件上编辑、编译程序,并仿真到达实验要求。进度安排;课下编写程序,并要求程序能通过编译仿真;第十四周的周四在实验板上下载调试程序;课程设计成果1.与设计内容对应的软件程序2.课程设计报告书一、实验目的(1)了解交通灯的亮灭规律(2)了解交通灯控制器的工作原理(3)进一步熟悉VHDL语言编程,了解实际设计中的优化方案二、硬件要求(1)主芯片EPF10K10LC84-4。(2)6个LED灯。(3)clk发生器。(4)2个8位八段扫描共阴极数码显示管。三、方案论证模拟十字路口交通信号灯的工作过程,利用实验板上的两组红、黄、绿LED作为交通信号灯,用数码管显示等待时间。设计一个交通信号灯控制器。能达到的要求:(1)交通灯从绿变红时,有5秒黄灯亮的间隔时间;(2)交通灯红变绿是直接进行的,没有间隔时间;(3)主干道上的绿灯时间为30秒,支干道的绿灯时间为20秒;(4)在任意时间,显示等待时间。支干道主干道图1路口交通管理示意图表1交通信号灯的4种状态四、模块说明时钟的设计共化分为6个模块:1.clk时钟秒脉冲发生电路或分频器;2.时钟扫描电路;3.六十进制计数器;4.状态转换;5.时间显示;6.译码模块。下面具体分析各个模块的原理、内容和功能。(1)clk时钟秒脉冲发生电路或分频器在红绿灯交通信号系统中,大多数情况是通过自动控制的方式指挥交通的。因此为了S0S1S2S3主干道交通灯绿(30秒)黄(5秒)红(20秒)红(5秒)支干道交通灯红红绿黄避免意外事件的发生,电路必须给一个稳定的时钟(clock)才能让系统正常运作。模块说明:系统输入信号:clk_in:由外接信号发生器提供1.25MHz的时钟信号;系统输出信号:clk:产生每秒一个脉冲的信号;(2)时钟扫描电路负责不断地扫描两个数码管显示其值,在1.25MHz的频率下形成视觉暂留,显示等待时间。(3)六十进制计数器该计数器的功能就是来一个脉冲信号time0值加一,在六十内循环,为等待时间的计数做准备。模块说明:系统输入信号:clk:接收由分频器提供的1Hz的时钟脉冲信号;系统输出信号:time0:产生计数值;(4)状态转换本电路负责红绿灯的转换及计数时间的转换。S0,S1,S2,S3之间的依次顺序替换。模块说明:系统输入信号:clk:接收由clk电路的提供的1Hz的时钟脉冲信号;tm:接收计数秒数选择电路状态转换信号;系统输出信号:da_out:负责红绿灯的状态显示。(5)时间显示本电路负责红绿灯的计数时间的显示。模块说明:系统输入信号:tl:倒计数值秒数个位变化控制信号;th:倒计数值秒数十位变化控制信号;系统输出信号:led7s1:负责红绿灯的显示秒数个位。led7s2:负责红绿灯的显示秒数十位。(6)译码模块2个8位八段扫描共阴极数码显示管分别显示个位和十位。十位显示范围为0-3;个位显示范围为0-9。五、试验程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityxinhaodengisport(clk_in:instd_logic;selout:outstd_logic_vector(6downto0);------定义数码管的七段显示sel:outstd_logic_vector(1downto0);------数码管个位十位选择段da_out:outstd_logic_vector(5downto0));-----定义主次干道的红绿灯endxinhaodeng;architectureoneofxinhaodengistypedmis(s0,s1,s2,s3);--------自定义状态四种signalcurrent_state,next_state:dm;----当前状态与次态均在四种状态之间变化signalclk:std_logic;------一秒时钟信号signalcount:std_logic_vector(1downto0);-----个十位选择端(sel)signalled7s1:std_logic_vector(6downto0);----十位数码管控制端signalled7s2:std_logic_vector(6downto0);----个位数码管控制端signaltime0:std_logic_vector(6downto0);-----递增计数signaltm:std_logic_vector(6downto0);----剩余时间倒计时signaltl:std_logic_vector(6downto0);-----个位数码管显示情况控制signalth:std_logic_vector(1downto0);-----十位数码管显示情况控制beginsel=count;fen:process(clk_in)variablecnt:std_logic_vector(20downto0);beginifclk_in'eventandclk_in='1'then-----产生1.25MHz分频,上升沿有效产生clkifcnt=100110001001011010000thencnt:=000000000000000000000;clk='1';elsecnt:=cnt+1;clk='0';endif;endif;endprocessfen;a:process(clk_in,count)---------不断扫描出现count的00和01的选择beginifclk_in'eventandclk_in='1'thenifcount=01thencount=00;elsecount=count+1;endif;endif;casecountiswhen00=selout=led7s2;when01=selout=led7s1;whenothers=null;endcase;endprocessa;process(clk)beginifclk'eventandclk='1'then------60秒的循环设计iftime0=0111100thentime0=0000001;elsetime0=time0+1;endif;endif;endprocess;reg:process(clk,current_state)------定义当前状态与次态的关系begin-----产生上升沿时次态把自己的状态赋予当前状态ifclk='1'andclk'eventthencurrent_state=next_state;endif;endprocessreg;com:process(current_state,time0)begincasecurrent_stateiswhens0=da_out=001100;tm=0011110-time0;----主绿和支红状态,当计时到29iftime0=29thennext_state=s1;----秒时将s1状态赋给次态,此时elsenext_state=s0;----当前状态还是s0,等到下一个endif;----上升沿后次态将s1赋给当前状态whens1=da_out=010100;tm=35-time0;iftime0=34thennext_state=s2;elsenext_state=s1;endif;whens2=da_out=100001;tm=55-time0;iftime0=54thennext_state=s3;elsenext_state=s2;endif;whens3=da_out=100010;tm=60-time0;iftime0=59thennext_state=s0;elsenext_state=s3;endif;endcase;endprocesscom;process(tm)beginiftm=30THENth=11;tl=0000000;elsiftm=20THENth=10;tl=tm-20;elsiftm=10THENth=01;tl=tm-10;elseth=00;tl=tm;endif;endprocess;process(th,tl)begincasethiswhen00=led7s1=1111110;when01=led7s1=0110000;when10=led7s1=1101101;when11=led7s1=1111001;whenothers=null;endcase;casetliswhen0000000=led7s2=1111110;when0000001=led7s2=0
本文标题:2014EDA课程设计报告张同凯20124020427
链接地址:https://www.777doc.com/doc-2958425 .html