电子设计自动化(红绿交通灯)课程设计报告_第1页
电子设计自动化(红绿交通灯)课程设计报告_第2页
电子设计自动化(红绿交通灯)课程设计报告_第3页
电子设计自动化(红绿交通灯)课程设计报告_第4页
电子设计自动化(红绿交通灯)课程设计报告_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、课程设计(综合实验)的目的与要求目的:1. 熟悉EDA试验箱的操作。2. 熟悉并掌握CPLD编程及下载。3. 掌握编写一个工程的基本流程。4. 学习并熟悉硬件编程思想。5. 掌握VHDL状态机设计。 实验要求:1、使用VHDL语言实现上述模块并显示交通计时。2、编译、下载、验证。二、设计(实验)正文实验内容:设计一个由一条主干道和一条支干道的汇合点形成的十字交叉路口的交通灯控制器,具体要求如下: (1) 主、支干道各设有一个绿、黄、红指示灯,两个显示数码管。 (2)主、支道交替允许通行,主干道每次放行45 s,支干道每次放行25 s,在每次由亮绿灯变成亮红灯的转换过程中,要亮5 s的黄灯作

2、为过渡,并进行减计时显示。 问题分析:红绿灯周期转换示意图: 东西主干道红灯持续时间40S,黄灯5s,绿灯25s南北次干道红灯持续时间45S,黄灯5s,绿灯20s由以上的红绿灯周期转换示意图可以知道:一个完整的红绿灯周期里,主干道每次放行45 s,支干道每次放行25 s,5 s的黄灯作为绿灯转为红灯的过渡,这样一个周期的总时间为:70s,满足设计要求。具体分析一下红绿灯周期转换的规律可以发现,红绿灯在转换过程中总共有四个状态:s0,s1,s2和s3,以r0,y0,g0分别表示东西主干道的红灯,黄灯,绿灯的状态,以r1,y1,g1分别表示南北次干道的红灯,黄灯,绿灯的状态,用“1”和“0”表示亮

3、灭状态,则四个状态的具体描述如下表所示:r0y0g0r1y1g1S0001100S1010100S2100001S3100010设计步骤:1. 编程实现主次干道红绿灯的周期转换,根据问题的实际背景将问题简化:即将红绿灯的转换变为四个状态的相互切换。2. 设计计数器来实现计时功能,同时要注意最后的输出信号要为二进制码,这要能保证输出后的信号直接控制数码管的显示。3. 设置全局使能en,用其来控制计数的开始,在为“1”时能够实现置数功能。用case 和if判断语句语句,自动进行红绿灯四个状态的转换。4. 在电脑上用软件对编号的程序进行编译和仿真,检查是否有错误,看能否实现预期的功能。5. 选择器件

4、: an程序仿真无误后,击maxpluII菜单中的assigndevice在Device Family 选择ACEX1KDevices 选择 EP1K30QC208-36. 管脚配置。按照“实验箱数码管显示管脚对应表”给器件配置管脚。7. 配置完管脚后再进行一次编译和仿真,将生成的工程文件下载到实验箱上。8. 通过按键操作,我们可以观察到实验箱上的数码管和红绿黄指示灯按照预定的设置进行正常的转换,说明实验达到了预期的效果。实验程序:library ieee; use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity z

5、hangmin is 实体的定义port(clk,en:in std_logic; 设置时钟和全局使能pin1,pin2,pin3,pin4:out std_logic;counter1:buffer std_logic_vector(3 downto 0);counter2:buffer std_logic_vector(3 downto 0);counter3:buffer std_logic_vector(3 downto 0);counter4:buffer std_logic_vector(3 downto 0); r0,y0,g0:buffer std_logic;r1,y1,g1

6、:buffer std_logic);end zhangmin;architecture rtl of zhangmin istype states is(s3,s2,s1,s0); 枚举类型signal state:states:=s0;signal cnt1:std_logic_vector(3 downto 0);signal cnt2:std_logic_vector(3 downto 0);signal cnt3:std_logic_vector(3 downto 0);signal cnt4:std_logic_vector(3 downto 0);beginprocess(clk

7、,en)beginif(clkevent and clk=1)thenif(en=1)thencnt1=0100;全局使能功能的实现。cnt2=0000;cnt3=0100; cnt4=0101;elseif(cnt2=0000)thencnt2=1001;cnt1=cnt1-1;elsecnt2=cnt2-1;end if;if(cnt4=0000)thencnt4=1001;cnt3=cnt3-1;elsecnt4r0=0;y0=0;g0=1;r1=1;y1=0;g1=0; if (cnt1=0000 and cnt2=0000)thenstate=s1;cnt1=0000;状态的判断和选

8、择部分。cnt2=0100; elsestater0=0;y0=1;g0=0;r1=1;y1=0;g1=0;if(cnt1=0000 and cnt2=0000)thenstate=s2;cnt1=0010;cnt2=0101;cnt3=0010;cnt4=0000;elsestater0=1;y0=0;g0=0;r1=0;y1=0;g1=1;if(cnt3=0000 and cnt4=0000)thenstate=s3;cnt3=0000;cnt4=0100;elsestater0=1;y0=0;g0=0;r1=0;y1=1;g1=0;if(cnt3=0000 and cnt4=0000)t

9、hen 状态的判断state=s0;cnt1=0100;cnt2=0000;cnt3=0100;cnt4=0101;elsestate=s3;end if;end case;end if;end if;end process;counter1=cnt1; 信号输出,控制数码管counter2=cnt2;counter3=cnt3;counter4=cnt4;pin1=1;pin2=1;pin3=1;pin4=1;end rtl; 结束进程三、课程设计(综合实验)总结或结论通过本次的电子设计课程设计,使我系统地掌握了数字电子设计的方法,不仅仅是理论上的设计程序,更重要的是能够将理论转化为实际,在硬件上实现了程序设计的功能。不仅掌握了实验调试适配的具体操作方法,而且这次的课程设计非常综合,将课堂上学习的许多知识点串联起来,完成了本次综合性的实验。当然在本次的在设计过程中,我也遇到了一些问题,有时候只是想当然的将程序设计出来,并没有注意实际的硬件语言的逻辑问题,通过查阅资料和反复的实践验证,才能克服了各种问题,最后终于调试成功。当然,仅仅实现要求的具体功能还是不够的,有时找到一种新颖的思路就能将编写的程序简化不少,另外这次通过和其他人的交流我也学会了用枚举类型来定义信号状态,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论