




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验一 交通灯控制器一、 实验目的a) 熟练掌握VHDL语言和QuartusII软件的使用。b) 用VHDL进行较复杂逻辑电路的设计和调试。c) 熟练掌握isp期间的下载方法。d) 理解状态机的工作原理和设计方法。二、 实验所用设备和环境a) 实验设备:TEC8实验箱一个、EPM7128SLC84-15芯片一个b) 实验环境:WinXP+QuartusII三、 实验任务及功能介绍在十字路口,每条道路各有一组红、黄、绿灯,用以指挥车辆和行人有序的通行。其中红灯亮表示禁止通行,黄灯亮表示停车,绿灯亮表示可以通行。设计一交通灯控制器用于自动控制十字路口的交通灯,指挥各种车辆和行人安全通行。a) 东西和南北方向各有一组绿、黄、红等用于指挥交通,绿灯、黄灯和红灯的持续时间分别为5s,1s和6s。其中初始状态为东西南北四个方向红黄绿灯全亮,持续1秒。后东西方向绿灯,南北方向红灯,持5秒。后东西方向黄灯闪烁,南北方向持续红灯,维持1秒。后东西、南北方向交换。b) 有紧急状况时,如有消防车、救护车或者其他需要优先放行的车辆时,各方向上均是红灯亮。当紧急状况解除时,回复原来的状态,继续正常运行。c) 当复位开关置1时,切换到初始状态,即四个方向红黄绿灯全亮。四、 课题分析及流程图:一共六个状态:S0, S1, S2, S3, S4, 紧急状态。五、 设计思路a) 本题主要是红黄绿灯时间的计时(即分频),和状态的切换。由于外部时钟信号CLK信号为1kHz,而我们需要1Hz,因此需要分频。b) 对于计时,采用计数器方式,根据外部时钟信号CLK,在上升沿时,将计数器加一,分别定义T1,T1,T3,T4的整型数,范围分别是0999,01999,04999和0199,分别表示1秒、2秒、5秒和0.2秒,其中0.2秒用于黄灯闪烁。引入TIMER数组来表示该进行何种时间的计数,每一位依次表示红黄绿灯,为分频后信号。c) 设计六个状态:S0, S1, S2, S3, S4和紧急状态。对于状态切换,引入currentSTATE和nextSTATE两个状态变量,取值在STATE中选择:TYPE STATE IS (S0, S1, S2, S3, S4);d) 东西南北方向灯的表示:有三个4位二进制数,RED、YELLOW和GREEN进行输出,从高位到地位依次表示东西南北四个方向的灯的状态,1亮,0灭。e) 为了得知什么时候切换状态,需引入数组SWITCH,4位二进制数,每一位依次表示红黄绿灯计时器是否计时结束,若结束则置1,各位相或,得到CTRL信号若有效,则需要切换状态,反之则不用。f) 对于紧急状态信号URGENT和复位信号CLR,则由开关控制,若置1,则有效,立即切换到紧急状态或初始状态S0。六、 详细设计a) 交通灯控制器实体b) arc中信号c) 分频进程,以计数器形式得出T1,T2,T3,T4四种时间。d) 判断何时切换状态e) 控制黄灯闪烁进程,每0.2s闪烁一次f) 六种状态的表现形式及紧急状态的切换七、 心得体会 这次虽然小学期有两周,但时间仍然是非常紧张。我由于身体原因在上学期期末申请了缓考,所以在小学期的同时还要准备6门缓考考试,显得非常忙碌,能够分给小学期的时间也不多。所以在第一天老师布置课题后,我们小组经过讨论,让我选择了简单一些的交通灯控制器。在最开始的时候,显得无从下手。虽然我们编写过LED灯显示和各种译码器,但都只是很简单的一个进程,如今要自己设计整个控制器,觉得有点不知所措。后来用编写C等程序的经验,我仔细分析题目,将它分解成更小的模块,来分别实现,最后再整合在一起。状态切换和显示部分的编码还比较简单,但是分频部分又有点不知所云,查阅了网上的例子和书籍后,感觉看不太懂他们的分频方式,询问同学,同学们也还不太清楚。后来借到第一天老师课上说的参考书,发现上面的分频方式是以计数器的形式,利用外部时钟,来一个上升沿计数器加一,简单容易理解,所以采用了。每一次编写大作业的时候我都喜欢全部编写完毕后再编译、测试,但是这样就造成错误过多而引起不知道从何下手。因此我这一次采取的是逐部分编译、测试的方式。但是由于对VHDL已经一个多学期没有碰过,生疏了很多,语法错误非常多。而且编译通过后还经常不能运行。再反复完善代码却不能运行的时候,询问下同学,发现自己的管脚接的大有问题。是我自己忽略了有特殊指向的管脚,导致我的外部时钟CLK没有输入进去,程序无法继续进行。并且也发生了没有改代码,但是换了个实验箱就运行不了的情况,检查了很久发现是模式控制没有打到硬布线模式,影响了整体程序的运行,这些都是不通过自己调试、检验无法学习到的。这两周的时间,我将自己的效率放大到最大,但是仍然因时间问题无法完成交通灯倒计时显示部分,也是小学期的一个遗憾。不过这两周,我不但又一次加深理解了自己动手操作的重要性,也对于芯片的设计思路有了更好的理解。由于交通灯控制器是一个简单一些的程序,因此我没有分模块实现,没有用到原理图,也没有遇到芯片的逻辑块溢出的问题,但是在每天的最后,小组讨论时,我们都会讨论解决这些问题,也让我从中学到了很多。总体来说,这一次的小学期算是收获颇丰。附件一:VHDL源代码LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY trafficLight IS PORT (CLR, CLK, URGENT : IN STD_LOGIC; GREEN : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); YELLOW : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); RED : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -CLOCK : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END trafficLight;ARCHITECTURE lightARC OF trafficLight IS TYPE STATE IS (S0, S1, S2, S3, S4);SIGNAL currentSTATE, nextSTATE : STATE;SIGNAL CTRL : STD_LOGIC;SIGNAL SWITCH : STD_LOGIC_VECTOR(3 DOWNTO 0); -切换状态SIGNAL TIMER : STD_LOGIC_VECTOR(3 DOWNTO 0); -时钟计时SIGNAL T1 : INTEGER RANGE 0 TO 999; -1sSIGNAL T2 : INTEGER RANGE 0 TO 1999; -2sSIGNAL T3 : INTEGER RANGE 0 TO 4999; -5sSIGNAL T4 : INTEGER RANGE 0 TO 199; -0.2s -SIGNAL T5 : INTEGER RANGE 0 TO 999; BEGINPROCESS(CLK, SWITCH) BEGIN IF (CLKevent AND CLK = 1) THEN IF (SWITCH(0) = 0) THEN TIMER(0) = 0; T1 = 0; ELSE IF (T1 = 999 AND URGENT = 0) THEN T1 = 0; TIMER(0) = 1; ELSE IF (URGENT = 0) THEN T1 = T1 + 1; TIMER(0) = 0; END IF;END IF;END IF; IF (SWITCH(1) = 0)THEN TIMER(1) = 0; T2 = 0; ELSE IF (T2 = 1999 AND URGENT = 0) THEN T2 = 0; TIMER(1) = 1; ELSE IF (URGENT = 0) THEN T2 = T2 + 1; TIMER(1) = 0; END IF; END IF; END IF; IF (SWITCH(2) = 0) THEN T3 = 0; TIMER(2) = 0; ELSE IF (T3 = 4999 AND URGENT = 0) THEN T3 = 0; TIMER(2) = 1; ELSE IF (URGENT = 0) THEN T3 = T3 + 1; TIMER(2) = 0; END IF; END IF; END IF; END IF;END PROCESS; CTRL = TIMER(0) OR TIMER(1) OR TIMER(2); -倒计时完成切换状态 PROCESS(CLK, SWITCH(3) BEGINIF (CLKevent AND CLK = 1) THENIF (T4 = 199 AND SWITCH(3) = 1) THEN T4 = 0; TIMER(3) = NOT TIMER(3); ELSIF (SWITCH(3) = 1) THEN T4 = T4 + 1; END IF; END IF; END PROCESS; PROCESS (CTRL, CLR) BEGIN IF (CLR = 1) THEN currentSTATE = s0; ELSIF (CTRLevent AND CTRL = 0) THEN currentSTATE = nextSTATE; END IF; END PROCESS; PROCESS (currentSTATE, URGENT) BEGIN IF (URGENT = 1) THEN -紧急状态,所有方向点亮红灯GREEN = 0000; YELLOW = 0000;RED SWITCH = 0001; GREEN = 1111; YELLOW = 1111; RED = 1111; -CLOCK = 0000; nextSTATE SWITCH = 0100; GREEN = 1100; YELLOW = 0000; RED = 0011; -CLOCK = 0110; nextSTATE SWITCH = 1010; GREEN = 0000; YELLOW(3) = TIMER(3); -闪烁 YELLOW(2) = TIMER(3); YELLOW(1 DOWNTO 0) = 00; nextSTATE SWITCH = 0100 ; GREEN = 0011; YELLOW = 0000; RED = 1100; -CLOCK = 0110; nextSTATE SWITCH = 1010; GREEN = 0000; YELLOW(3 DOWNTO 2) = 00; YELLOW(1) = TIMER(3); -闪烁 YELLOW(0) = TIMER(3); RED = 1100; nextSTATE = s1; END CASE; END IF; END PROCESS; - PROCESS(CLK, CLOCK) - BEGIN-IF (CLKevent AND CLK = 1) THEN-IF (CLOCK = 0000) THEN CLOCK = 0110;-ELSE CLOCK = CLOCK - 1;-END IF;-IF (T5 = 999) THEN T5 = 0;- ELSE T5 = T5 + 1; - END IF; - END IF; - END PROCESS;END lightARC;附件二:调试日志201598周二:复习VHDL基础知识及语法,了解交通灯大致编写思路。201599周三:分解交通灯控制器:分频部分,状态切换部分,显示部分今日计划:初步完成分频部分,考虑程序流程和各个进程间的配合。学习时钟分频的方式:途径:去图书馆借书查阅VHDL数字电路设计与应用实践教程,采用计数器的方式,针对外部时钟所给的1kHz分成1Hz,从而得到想要的5s、1s、0.2s等时间。遇到问题:能够得到时间,但不知道该怎么将时间运用到状态切换中。解决方案:上网查阅资料。2015910周四:今日计划:完成状态切换部分和显示部分,考虑如何将分频好的时钟信号用在状态切换部分。遇到问题:切换状态部分和显示部分比较简单,只是需要注意ifelse语句使用,因为VHDL语法不熟悉导致语法报错很多。定义的状态太多,重复性大。解决方案:开始在状态切换时,没想好要几个状态,零零散散分了很多个,导致很多状态其实根本是重合的,删减后得到最精简的6个状态。对于分频时钟,引入TIMER数组记录时钟是否计时完毕,若完毕则需要切换状态,将分频部分与其他部分串接在一起。2015911周五:今日计划:完成程序,在TEC8上进行初步调试。遇到问题:忘记如何下载芯片,询问同学后解决。成功下载芯片后发现不能运行,灯的显示也是乱的。 解决方案:回头看代码,发现在TIMER信号表示出计时完毕后,并没有给激励进行状态切换,引入CTRL信号给予激励,当CTRL有效时切换状态,为了方便观察CTRL信号的变化,将其连接到灯上。遇到问题:下载芯片后
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025届西藏那曲地区安多县三年级数学第一学期期末试题含解析
- 行政管理中的现代公共关系学创新试题及答案
- 2025-2026学年贵州省铜仁地区江口县数学三年级第一学期期末教学质量检测模拟试题含解析
- 公共关系学舆情引导试题及答案
- 知名企业家课件
- 行政管理与公共关系的职业路径研究题及答案
- 信息技术行业技术研发工作证明(5篇)
- 《中国古代文学鉴赏:古代文学鉴赏教程》
- 市场渠道分销授权协议签署书
- 眼睛近视的课件
- 杭州市苏教版一年级数学竞赛试卷
- 中国航空工业集团导弹院招聘笔试真题2024
- 数字化变革对企业会计信息质量的影响机制研究
- 库管员笔试题及答案
- 精装房营销策略研究-全面剖析
- 融资融券基本管理制度
- 中央贸促会面试题及答案
- 昇腾DeepSeek解决方案
- 脂肪肝介绍课件
- 2024年市场营销师品牌宣传技巧试题及答案
- 应急物资、设备检查维护保养制度
评论
0/150
提交评论