ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:218KB ,
资源ID:11973335      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11973335.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(交通灯.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

交通灯.docx

1、交通灯 通信工程学院实验报告 课程名称: 综合电子系统设计 题 目: 交通灯控制器院 系: 通信工程学院班 级: 电信091班专 业: 电子信息工程姓 名: 徐州学 号 : 208090519 实验时间: 2012.4 指导老师: 冯月琴 实验地点: 信息楼 成 绩: 年 月 日 交通灯控制器一、实验的目的 要求学生综合所学软件硬件知识,并应用基础实验所获得的实验设计技能,独立设计 能解决实际问题的应用系统。 二、实验任务和要求: 1.能显示十字路口东西、南北两个方向的红、黄、绿的指示状态用两组红、黄、绿 三 色灯作为两个方向的红、黄、绿灯。变化规律为:东西绿灯,南北红灯东西黄灯,南 北红灯东

2、西红灯,南北绿灯东西红灯,南北黄灯-东西绿灯,南北红灯依次循环。 2.能实现正常的到计时功能用两组数码管作为东西和南北方向的允许或通行时间的到计时显示,显示时间为红灯45秒、绿灯40秒、黄灯5秒。 3.能实现紧急状态处理的功能出现紧急状态(例如消防车,警车执行特殊任务时要优先通行)时,两路上所有车禁止通行,红灯全亮; (1)显示到计时的两组数码管闪烁; (2)计数器停止计数并保持在原来的状态; 4.能实现系统复位功能系统复位后,东西绿灯,南北红灯,东西计时器显示40秒,南北显示45秒。 5.用VHDL语言设计符合上述功能要求的交通灯控制器,并用层次化设计方法设计该电路。 6.个模块的功能用功能

3、仿真的方法验证,可通过有关波形确认电路设计是否正确。7.完成电路全部设计后,通过系统实验箱下载验证设计课题的正确性。四:交通灯控制器的状态:五、交通灯控制器原理框图:六、算法流程图:七、顶层原理图:8、子模块的设计:控制部分的设计library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ledcontrol is port(reset,clk,urgen:in std_logic; state :out std_logic_vector(1 downto 0); sub,set1,set2 :

4、out std_logic);end led control;architecture a of ledcontrol is signal count: std_logic_vector(6 downto 0); signal subtemp: std_logic;beginsub=subtemp and (not clk);statelableprocess(reset,clk)beginif reset=1then count=0000000; state=00;elsif clkevent and clk=1then if urgen=0then count=count+1;subtem

5、p=1;else subtemp=0;end if; if count=0 then state=00;set1=1;set2=1; elsif count=25 then state=01;set1=1; elsif count=30 then state=10;set1=1;set2=1; elsif count=45 then state=11;set2=1; elsif count=50 then count=0000000;else set1=0;set2=0;end if;end if;end process statelable;end a;显示部分的设计:library iee

6、e;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ledshow is port(clk,urgen :in std_logic; state :in std_logic_vector(1 downto 0); sub,set1,set2 :in std_logic; r1,g1,y1,r2,g2,y2:out std_logic; led1,led2 :out std_logic_vector(7 downto 0);end ledshow;architecture a of ledshow is sig

7、nal count1,count2:std_logic_vector(7 downto 0); signal setstate1,setstate2:std_logic_vector(7 downto 0); signal tg1,tg2,tr1,tr2,ty1,ty2 :std_logic;beginled1=11111111when urgen=1and clk=0 else count1;led2=11111111when urgen=1and clk=0 else count2;tg1=1when state=00and urgen=0 else 0;ty1=1when state=0

8、1and urgen=0 else 0;tr1=1when state(1)=1or urgen=1 else 0;tg2=1when state=10and urgen=0 else 0;ty2=1when state=11and urgen=0 else 0;tr2=1when state(1)=0or urgen=1 else 0;setstate1= 00100101when state=00else 00000101when state=01else 00100000;setstate2= 00010101when state=10else 00000101when state=11

9、else 00110000;label2:process(sub)beginif subevent and sub=1thenif set2=1then count2=setstate2;elsif count2(3 downto 0)=0000 then count2=count2-7;else count2=count2-1; end if; g2=tg2; r2=tr2; y2=ty2;end if;end process label2;label1:process(sub)beginif subevent and sub=1thenif set1=1then count1=setsta

10、te1;elsif count1(3 downto 0)=0000 then count1=count1-7;else count1=count1-1;end if; g1=tg1; r1=tr1; y1=ty1;end if;end process label1;end a;分频器部分的设计library ieee;use ieee.std_logic_1164.all;use work.p_alarm.all;entity divider is port(clk_in:std_logic; reset:in std_logic; clk:out std_logic);end divider

11、;architecture art of divider isconstant divide_period:t_short:=1000;begin process(clk_in,reset) is variable cnt:t_short; begin if(reset=1)then cnt:=0; clk=0; elsif rising_edge(clk_in)then if(cnt=(divide_period/2)then clk=1; cnt:=cnt+1; elsif(cnt(divide_period-1)then clk=0; cnt:=cnt+1; else cnt:=0; e

12、nd if; end if; end process;end art;p_alarm程序包library ieee;use ieee.std_logic_1164.all;package p_alarm issubtype t_digital is integer range 0 to 9;subtype t_short is integer range 0 to 65535;type t_clock_time is array(5 downto 0)of t_digital;type t_display is array(5 downto 0)of t_digital;end package

13、 p_alarm;9、仿真:对交通灯控制部分进行仿真在QuartusII软件中导入交通灯控制程序,对此程序编译无错误后,建立Vector waveform file 文件保存时仿真文件名要与设计文件名一致。在其中设计始终开始时间为0,结束时间为5us,周期为50ns。仿真结果如下:当reset=1state=00count=0000000;当reset=0在上升沿到来时执行当 count=0 则state=00;set1=1;set2=1; count=25 state=01;set1=1; count=30 then state=10;set1=1;set2=1;count=45 then

14、state=11;set2=1;count=50 then count=0000000,否则 set1=0;set2=0 仿真的结果正确。对交通灯显示部分模块进行仿真在QuartusII软件中导入交通灯显示程序,对此程序编译无错误后,建立Vector waveform file 文件保存时仿真文件名要与设计文件名一致。将控制仿真的结果贴到显示仿真中,两次在其中设计的开始时间为0,结束时间为5us,周期为50ns。仿真结果如下:仿真结果与程序所要的结果一样。当state=”00”时g1=1;当state(1)=0时r2=1.当urgen=1时r1=1,r2=1;仿真结果与程序设计符合。对交通灯系

15、统进行仿真在QuartusII软件中导入交通灯系统程序,对此程序编译无错误后,建立Vector waveform file 文件保存时仿真文件名要与设计文件名一致。在其中设计开始时间为0,结束时间为5us,周期为50ns。仿真结果如下:系统仿真的结果符合设计要求。与前面仿真的结果也一致。十、引脚的配置-程序的下载适配后生成的下载或配置文件通过编程器,对CPLD的下载称为编程(Program)。点击QuartusII软件中的Program就实行了本次试验的下载。最后对载入了设计的FPGA或CPLD的硬件系统进行统一测试,以便最终验证设计项目在目标系统上的实际工作情况,以排除错误,改进设计。在试验

16、箱上按下k2东西红灯和南北红灯都亮。按下k1即显示时间复位。当k1、k2不按时交通灯正常即东西红灯亮时南北绿灯亮,且时间相差5秒即为南北黄灯的时间。当南北红灯亮时,东西绿灯亮,且时间相差4秒即为东西黄灯亮的时间。11、实验心得: 这次综合实验要求很高,我在思考和设计上花了不少时间,其中收获也是不少。(1)拿到一个project后,不要急于写程序,首先要搞清楚要干什么,完成什么功能,分几部分完成,每部分完成什么功能,各部分之间的联系。如果采用的是自顶向下的设计思想,那么顶层的设计就很重要,顶层设计好后,下面各部分写起来就比较清楚容易了。一旦出现问题,也好检查错误出在什么地方,哪一部分有问题,就进行相应的改动。(2)在编程过程中,思路要清楚,明白要实现的功能,然后根据实现的功能一步一步的编写。而且要采用各个击破的办法,先实现下层部分,再整体实现。(3)编下层时,不用急于仿真,等整体编译成功后,先进行总体仿真,看出现的错误在什么地方,这个地方是由哪个部分控制的,然后再对该部分进行仿真,看有没有问题。(4)编译成功后,不要急于下载,一定要先仿真,根据仿真波形判断是否达到要求。一般仿真成功后,只要电路连接没问题,下载后就没什么问题了。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1