EDA交通灯课程设计(带有测试平台testbench)精讲

合集下载

EDA课程设计报告交通灯控制系统

EDA课程设计报告交通灯控制系统

一、课程设计目的和要求目的:掌握基于FPGA 的复杂数字系统的设计和验证方法。

提高学生复杂数字系统的设计能力。

要求:使用实验箱为W48-PK2SOPC 试验开发系统,核心器件为Alatera 公司的EP1C6Q240C8芯片,开发软件为Quartus4.0.本实验环节要求学生以FPGA 器件为目标器件,设计典型的数字系统,如:A/D 、D/A 接口;电子密码锁,交通灯控制系统,数字表等复杂硬件电路,完成设计综合、仿真和硬件测试,并写实验报告。

二、设计方案工作原理:本次设计是针对十字路口,进行南北和东西直行情况下交通灯控制。

设定东西方向为主干道方向,根据交通灯的亮的规则,在初始状态下四个方向的都为红灯亮启,进入正常工作状态后,当主干道上绿灯亮时,支干道上红灯亮,持续40S 后,主干道和支干道上的黄灯都亮启,持续5S 后,主干道上红灯亮启,支干道上绿灯亮启持续40S ,之后主干道和支干道上的黄灯都亮启5s ,一个循环完成。

用LED 灯显示倒计时,并且能实现总体清零功能,计数器由初始状态开始计数,对应状态的显示灯亮。

实现方法:本次采用文本编辑法,即利用Verilog HDL 语言描述交通控制器,通过状态机计数法,实现设计所要求的交通灯控制及时间显示。

设计中用两组红黄绿LED 模拟两个方向上的交通灯,用4个7段数码管分别显示两个方向上的交通灯剩余时间,控制时钟由试验箱上频率信号提供。

状状状状状状状状状状状状00状状10状状11状状01状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状001100010010001010100010图2.交通灯控制状态转化说明:该状态图为交通灯在正常情况下的状态转化图,进入控制后,状态00时主干道绿灯及支干道红灯亮起,进入状态01后两路黄灯亮起,状态11时主干道红灯及支干道绿灯亮起。

进入10状态两路黄灯亮起。

结束一个循环,从00状态重新开始循环。

EDA课程设计报告 交通灯控制器

EDA课程设计报告 交通灯控制器

---------------------考试---------------------------学资学习网---------------------押题------------------------------.EDA课程设计报告交通灯控制器.一、设计任务要求1、控制器按东西、南北两个方向控制两组交通灯(红、绿、黄)2、两组灯亮的顺序满足交通安全的规则要求.3、东西向绿灯每次亮30S,接着黄灯亮2S,红灯亮20S;南北向绿灯每次亮28S,接着黄灯亮2S,红灯亮30S.4、有两组数码管给出灯亮的时间倒计时显示。

二、设计思路及总体结构框图设计思路:1.硬件:由设计任务要求可知,总体输入电路有:(1)在开始计时之前的等待状态,复位键reset接低电位,接通电源后,首先要将它接高电位,表示计时开始。

(2)当按一下(on_off)键,表示紧急情况发生,两个方向均为红灯亮,计时停止,当再次按下(on_off)键时,控制器恢复原来状态,正常工作。

输出电路:(1)由于东西和南北方向都要显示时间,因此需要4个数码管,这样在设计中就需要四条输出线choose4,用来选通指定一个LED七段显示数码管。

(2)显示器的每一位都采用LED七段显示数码管进行显示,每一个LED七段显示数码管都要有七条输出线控制,一共使用4个七段数码管,故输出电路使用四个七位输出信号:showtime1,showtime2,showtime3,showtime4。

(3)东西和南北方向都有交通灯亮的情况,故输出电路中要有两个状态控制信号state1,state2分别控制东西和南北的灯,每个方向上有4个灯(增加了左、右转弯显示控制功能),所以state1,state2的类型应该是4位数组型的。

外部电路图如下:东西方向 clk 4/ State1交通灯 stasreset State2南北方向 on_off 4/ 交通灯7/ Showtime17/ Showtime27/ Showtime37/ Showtime4Choose44/- 2 -2.软件:(1)在VHDL设计描述中,采用自顶向下的设计思路,该思路,首先要描述顶层的接口,上面的描述已经规定了交通灯控制的输入输出信号:输入信号:复位开关信号reset;紧急情况控制信号on_off;外部时钟信号clk。

eda交通灯课程设计

eda交通灯课程设计

eda交通灯课程设计一、教学目标本课程旨在让学生了解和掌握交通灯系统的基本原理和设计方法。

通过本课程的学习,学生将能够:1.知识目标:理解交通灯系统的原理和组成,包括信号灯、控制器、传感器等;掌握交通灯系统的设计和实施方法,包括硬件设计和软件编程。

2.技能目标:能够使用相关工具和软件进行交通灯系统的设计和仿真;具备一定的实际操作能力,能够进行交通灯系统的安装和调试。

3.情感态度价值观目标:培养学生对交通安全和秩序的重视,提高学生的社会责任感和公民意识。

二、教学内容本课程的教学内容主要包括以下几个部分:1.交通灯系统的原理和组成:介绍交通灯系统的工作原理和基本组成,包括信号灯、控制器、传感器等。

2.交通灯系统的设计和实施:讲解交通灯系统的设计方法和步骤,包括硬件设计和软件编程。

3.交通灯系统的仿真和实验:使用相关工具和软件进行交通灯系统的仿真,并进行实际操作和实验。

4.交通安全和秩序的重要性:强调交通安全和秩序对社会的的重要性,培养学生的社会责任感和公民意识。

三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法,包括:1.讲授法:讲解交通灯系统的原理和组成,设计和实施方法等基本知识。

2.讨论法:学生进行小组讨论,分享学习心得和经验,提高学生的思维能力和团队合作能力。

3.案例分析法:分析真实的交通灯系统案例,让学生了解交通灯系统的实际应用和效果。

4.实验法:进行交通灯系统的仿真和实验,让学生亲身体验交通灯系统的设计和实施过程。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:选择一本适合学生水平的交通灯系统设计教材,作为学生学习的基本参考资料。

2.参考书:提供一些相关的参考书籍,供学生深入学习和研究。

3.多媒体资料:制作一些教学PPT、视频等多媒体资料,帮助学生更好地理解和掌握交通灯系统的原理和设计方法。

4.实验设备:准备一些实验设备,包括交通灯控制器、传感器等,供学生进行实际操作和实验。

eda交通灯课程设计

eda交通灯课程设计

eda交通灯课程设计一、课程目标知识目标:1. 学生能理解并掌握交通灯的基本原理及其在现代社会交通管理中的作用。

2. 学生能了解EDA(电子设计自动化)的基本概念,并运用其原理设计简单的交通灯控制系统。

3. 学生掌握交通灯工作周期的计算方法,以及不同交通情况下信号灯变换的逻辑规则。

技能目标:4. 学生能够通过EDA软件进行交通灯电路的设计与仿真,具备基本的电子设计能力。

5. 学生能够运用所学知识分析并解决交通灯控制中的实际问题,具备一定的创新设计思维。

情感态度价值观目标:6. 学生通过设计交通灯控制系统,培养对工程技术的兴趣,增强社会责任感和团队合作意识。

7. 学生能够在项目实践中体验科学探究的乐趣,提高学习科学的积极性,形成良好的学习习惯。

8. 学生通过课程学习,认识到科技在生活中的应用,增强对现代科技改善生活品质的认识,培养创新精神和实践能力。

本课程设计针对的是具有一定电子学基础的中高年级学生,课程性质为实践性强的综合设计课。

在分析课程性质、学生特点和教学要求的基础上,课程目标旨在分解为具体的学习成果,以便通过后续的教学设计和评估,有效提升学生对交通工程和电子设计自动化知识的综合应用能力。

二、教学内容本章节教学内容紧密围绕课程目标,结合课本相关章节,科学系统地组织以下内容:1. 交通灯基本原理:讲解交通灯的功能、结构及工作原理,对应教材第3章“交通信号控制基础”。

2. EDA软件介绍:介绍EDA软件的基本功能、操作方法及其在电子设计中的应用,对应教材第5章“电子设计自动化技术”。

3. 交通灯控制系统设计:a. 设计要求:分析交通灯控制系统的需求,明确设计目标和功能要求。

b. 电路设计:学习并运用EDA软件设计交通灯控制电路,对应教材第6章“数字电路设计”。

c. 仿真测试:利用EDA软件对设计电路进行仿真测试,验证设计方案的可行性。

4. 交通灯控制逻辑:学习并掌握交通灯工作周期的计算方法,以及不同交通情况下的信号灯变换规则,对应教材第3章“交通信号控制策略”。

eda交通灯课程设计

eda交通灯课程设计

eda交通灯课程设计一、课程目标知识目标:1. 学生能理解并掌握EDA交通灯的基本原理,包括信号灯的工作原理、时序控制等。

2. 学生能够运用所学知识,分析并设计简单的交通灯控制系统。

3. 学生了解交通灯在现实生活中的应用,认识到其在交通安全中的重要性。

技能目标:1. 学生能够运用EDA软件进行交通灯电路的设计与仿真。

2. 学生通过小组合作,提高沟通协调能力和团队协作能力。

3. 学生掌握基本电路调试方法,具备解决实际问题的能力。

情感态度价值观目标:1. 学生培养对电子设计与应用的兴趣,激发创新意识。

2. 学生认识到交通灯在保障交通安全、提高道路通行效率方面的重要性,增强社会责任感。

3. 学生在学习过程中,培养严谨、细致、勇于探索的科学态度。

本课程针对初中年级学生,结合学科特点,注重理论与实践相结合,以提高学生的动手能力和创新能力。

在教学过程中,教师需关注学生的个体差异,激发学生的学习兴趣,鼓励学生积极参与讨论和实践,培养其团队协作能力。

通过本课程的学习,期望学生能够掌握交通灯的基本原理,提高电子设计与应用能力,并树立正确的价值观。

二、教学内容本章节教学内容主要包括以下三个方面:1. 交通灯基本原理:- 介绍交通灯的起源、发展及其在现代交通中的应用。

- 讲解交通灯的信号控制原理,包括红绿灯的切换机制和时序控制。

2. EDA软件应用:- 介绍EDA软件的基本功能和使用方法。

- 结合教材章节,教授如何使用EDA软件进行交通灯电路设计与仿真。

3. 实践操作与小组讨论:- 安排学生进行交通灯电路设计实践,指导学生完成电路搭建、调试与优化。

- 组织小组讨论,让学生分享设计心得,互相学习,提高团队协作能力。

教学大纲安排如下:第一课时:交通灯基本原理介绍,占总课时的1/4。

第二课时:EDA软件应用教学,占总课时的1/4。

第三课时:实践操作与小组讨论,占总课时的1/2。

教学内容与教材紧密关联,确保科学性和系统性。

在教学过程中,教师需关注学生对知识点的掌握情况,及时调整教学进度,确保教学效果。

毕业设计-EDA技术交通灯控制器(课程设计)

毕业设计-EDA技术交通灯控制器(课程设计)

课程设计报告课程设计:交通灯控制器一:实验目的:实现高速公路与乡间小路的交叉路口红绿灯的控制二:功能要求:1.只有在小路上发现汽车时,高速公路上的交通灯才可能变为红灯。

2.当汽车行驶在小路上时、小路的交通灯保持为绿灯,但不能超过给定的延迟时间.〔注;这段时间定义为20S时间)。

3.高速公路灯转为绿灯后,即使小路上有汽车出现,而高速公路上并无汽车,也将在给定的时间内保持高速公路绿灯(注:这段时间定义为60S)。

三:设计思路:五:VHDL源程序:LIBRARY ieee;USE ieee.std_logic_1164.all;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TrafficLight ISPORT (Clk : IN STD_LOGIC;S,Reset : IN STD_LOGIC;mg,my,mr,cg,cy,cr : OUT STD_LOGIC );END TrafficLight ;ARCHITECTURE rtl OF TrafficLight ISTYPE TrafficState IS (mgcr, mycr, mrcg, mrcy);SIGNAL current_state,next_state : TrafficState ;SIGNAL Count : STD_LOGIC_VECTOR(5 DOWNTO 0);SIGNAL Clrn : STD_LOGIC ;BEGINCounter : PROCESS(clk)BEGINIF Reset = '1' OR (Clrn = '1' AND NOT(Count = "000000")) THEN Count <= "000000";ELSIF clk'EVENT AND clk = '1' THENIF NOT(s='0' AND current_state = mgcr) THEN Count <= Count + 1;END IF;END IF;END PROCESS Counter;StateTransition : PROCESS(clk,Count, current_state)BEGINIF Reset = '1' THEN next_state <= mgcr;Clrn <= '0';ELSIF clk'EVENT AND clk = '1' THENCASE current_state ISWHEN mgcr => mr<='0';mg<='1';my<='0';cr<='1';cg<='0';cy<='0';IF Count >= "111011" AND S = '1' THEN next_state <= mycr;Clrn <= '1';ELSE Clrn <= '0';END IF;WHEN mycr => mr<='0';mg<='0';my<='1';cr<='1';cg<='0';cy<='0';IF Count >= "000100" THEN next_state <= mrcg;Clrn <= '1';ELSE Clrn <= '0';END IF;WHEN mrcg => mr<='1';mg<='0';my<='0';cr<='0';cg<='1';cy<='0';IF Count >= "010011" OR S = '0' THEN next_state <= mrcy;Clrn <= '1';ELSE Clrn <= '0';END IF;WHEN mrcy => mr<='1';mg<='0';my<='0';cr<='0';cg<='0';cy<='1';IF Count >= "000100" THEN next_state <= mgcr;Clrn <= '1';ELSE Clrn <= '0';END IF;WHEN OTHERS => NULL;END CASE;END IF;END PROCESS StateTransition;PROCESS(clk)BEGINIF clk'EVENT AND clk='1' THENcurrent_state <= next_state;END IF;END PROCESS;END rtl;仿真图如下:六:实验心得:通过本次课程设计,使用进一步熟悉了MAX-PLUSLL这种EDA软件工具。

EDA课程设计(交通灯控制器)

EDA课程设计(交通灯控制器)

课程设计年月日大课程设计任务书课程EDA技术课程设计题目交通灯控制器专业姓名学号主要内容、基本要求、主要参考资料等主要内容:设计一个交通信号灯控制器,由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。

基本要求:1、红、绿、黄发光二极管作信号灯,用传感器或逻辑开关作检测车辆是否到来的信号,实验电路用逻辑开关代替。

2、主干道处于常允许通行的状态,支干道有车来时才允许通行。

主干道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯。

3、主、支干道均有车时,两者交替允许通行,主干道每次放行45秒,支干道每次放行25秒,设立45秒、25秒计时、显示电路,选择1HZ时钟脉冲作为系统时钟。

4、在每次由绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡,使行驶中的车辆有时间停到禁行线外,设立5秒计时、显示电路。

主要参考资料:[1] 潘松著.EDA技术实用教程(第二版). 北京:科学出版社,2005.[2] 康华光主编.电子技术基础模拟部分. 北京:高教出版社,2006.[3] 阎石主编.数字电子技术基础. 北京:高教出版社,2003.完成期限2010.3.12指导教师专业负责人2010年3月8日一、总体设计思想1.基本原理计数模块、置数模块、主控制器模块和译码器模块。

置数模块将交通灯的点亮时间预置到置数电路中,计数模块以秒为单位倒计时,当计数值减为零时,主控电路改变输出状态,电路进入下一个状态的倒计时。

其中,核心部分是主控2.设计框图图一.交通灯控制系统的原理框图图二.交通灯控制器的流程图脉冲发生器 控制器 译码器甲车信号灯乙车信号灯定时器1.设计思路:在某一十字路口交叉地带,可设计东西走向的道路为甲车道,南北走向的道路为乙车道。

甲乙车道的交通灯需按交通法则来依次交替运行。

则可设计一个状态循环的逻辑电路。

2.分析系统的逻辑功能:交通灯控制系统的原理框图如图一所示。

EDA交通灯的课程设计

EDA交通灯的课程设计

EDA交通灯的课程设计一、课程目标知识目标:1. 让学生理解EDA交通灯的基本原理,掌握交通灯控制系统的设计方法和步骤。

2. 使学生掌握交通灯控制系统中各模块的功能和相互关系,如时钟模块、控制器模块、显示模块等。

3. 帮助学生了解交通灯控制系统的实际应用,提高对电子设计自动化技术的认识。

技能目标:1. 培养学生运用所学知识,设计并实现一个简单的EDA交通灯控制系统的能力。

2. 培养学生使用相关软件(如Multisim、Protel等)进行电路仿真、绘制和调试的能力。

3. 提高学生的团队协作和沟通能力,培养他们在项目实践中解决问题的能力。

情感态度价值观目标:1. 培养学生对电子设计自动化技术的兴趣,激发他们探索未知、创新实践的热情。

2. 培养学生关注社会问题,认识到交通灯控制系统在提高道路通行效率、保障交通安全方面的重要性。

3. 引导学生树立正确的价值观,认识到科技发展应服务于社会、造福于人类。

课程性质:本课程为实践性较强的电子设计课程,以项目为导向,注重培养学生的实际操作能力和团队协作能力。

学生特点:学生具备一定的电子技术基础知识,具有较强的学习兴趣和动手能力,但对EDA技术及其应用尚不熟悉。

教学要求:结合学生特点,采用讲授与实践相结合的教学方法,注重引导学生主动参与、积极探索,提高他们的实际操作能力和创新能力。

在教学过程中,关注学生的个体差异,给予个性化的指导和支持。

通过本课程的学习,使学生能够达到上述课程目标,为后续相关课程的学习和实践奠定基础。

二、教学内容1. 交通灯控制系统概述:介绍交通灯控制系统的基本概念、分类及其在现实生活中的应用。

相关教材章节:第一章 电子设计自动化概述2. EDA技术基础:讲解EDA技术的基本原理、发展历程和常用软件工具。

相关教材章节:第二章 EDA技术基础3. 交通灯控制器设计:a. 时钟模块设计:介绍时钟电路的原理与设计方法。

b. 控制器模块设计:讲解控制器的工作原理、编程方法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

EDA技术课程设计`十字路口交通灯控制器设计学院电气与信息工程专业电子信息工程^班级0934111课程名称EDA技术学号0934111**姓名*俊豪}指导教师***成绩评定·一、指导教师评语(根据学生设计报告质量、答辩情况及其平时表现综合评定)。

%。

二、评分/课程设计成绩评定【、目录一、设计题目 ....................................... 错误!未定义书签。

二、设计任务和要求 ................................. 错误!未定义书签。

三、EDA设计........................................ 错误!未定义书签。

、明确系统的功能,并进行逻辑抽象................ 错误!未定义书签。

、模块功能说明.................................. 错误!未定义书签。

、波形仿真及分析................................ 错误!未定义书签。

、代码...................................... 错误!未定义书签。

、各模块rtl电路及功能仿真和时序仿真........ 错误!未定义书签。

四、硬件测试 ....................................... 错误!未定义书签。

五、实验困难问题及解决措施 ......................... 错误!未定义书签。

参考文献 ........................................... 错误!未定义书签。

附录................................................ 错误!未定义书签。

前言伴随着社会的发展以及人类生活水平的提高, EDA技术在电子信息、通信、自动、控制及计算机应用等领域的重要性日益突出。

随着技术市场与人才市场对DEA需求的不断增加,交通的问题日益突出,单单依靠人力来指挥交通已经不可行了,所以设计交通灯来完成这个需求就显的越加迫切了。

为了确保十字路口的行人和车辆顺利、畅通地通过,往往采用电子控制的交通信号来进行指挥。

以下就是运用数字电子设计出的交通灯:其中红灯亮,表示该条路禁止通行;黄灯亮表示停车;绿灯亮表示允许通行。

一、设计题目十字路口交通灯控制器设计。

二、设计任务和要求用EDA技术设计一个十字路口的交通信号灯控制器,控制A、B两条交叉道路上的车辆通行,具体要求如下:设计一个十字路口交通信号管理控制器。

对于每个路口,可实现直行、停止、左转指示,并显示当前状态剩余时间1.每个方向有直行红灯、直行绿灯、停行黄灯和左转绿灯共4个LED指示灯组成;2.每个方向用两位数码管显示当前状态剩余时间;3.系统复位后进入东西直行,南北禁行状态;4.直行状态最后3秒内,绿灯闪烁状态;三、EDA设计由于本设计实验的功能较多,所以就采用模块化设计。

整个程序设计基于8种状态,如下表所示:交通灯状态转换表图1 A、B方向示意图图2 整体模块示意图、明确系统的功能,并进行逻辑抽象如图1本方案可实现在确定时刻,倒计数数字显示能够及时变化,红黄绿灯能准确变化,考虑到实际应用,加入人工监督功能,通过改变频率来控制交通灯亮灭的时间的长短。

本设计采用模块化设计,图2为本设计十字路口交通等系统的层次结构框图。

、模块功能说明1.主控制模块(kongzhi):控制系统输入输出之间联系。

2.显示模块(xianshi):显示倒计时时间和工作状。

其输出用来驱动4位共阴数码管,并显示倒计时时间(动态扫描)。

3.分频模块(fenpin):本系统动态扫描需要1KHZ的脉冲而系统时钟需要1HZ的脉冲,分频器主要为系统提供所需要的时钟脉冲。

该模块将1KHZ的脉冲信号进行分频,产生周期为1hz的方波,作为系统时钟信号的倒计时闪烁信号。

4.译码模块(yima):根据控制信号,驱动交通灯即LED的显示。

5.计数模块(jishu):用来设定A方向和B方向计时器的初值,并为显示模块提供倒计时时间。

6.顶层模块jiaotongdeng,连接各模块设计,使之成为一个有机体。

前5个模块分别进行仿真测试,成功后把所有.vhdl文件包含在工程jiaotongdeng,实现模块化设计。

、波形仿真及分析3.3.1、代码见附录一。

3.3.2、各模块rtl电路及功能仿真和时序仿真各模块分别建立工程文件,并进行功能仿真、时序仿真,前六个模块成功编译,得到正确仿真结果后,建立顶层模块。

模块一:控制模块(kongzhi)图3 控制模块(kongzhi)rtl图图4 控制模块(kongzhi)仿真图模块二:计时模块(jishi)图5 计时模块(jishi)rtl图图6 计时模块(jishi)仿真图模块三:显示模块(xianshi)图7 显示模块(xianshi)rtl图图8 显示模块(xianshi)仿真图模块四:译码模块(yima)图9 译码模块(yima)rtl图图10 译码模块(yima)仿真图模块五:分频模块(fenpin)图11 分频模块(fenpin)rtl图图12 分频模块(fenpin)仿真图模块六:顶层模块图13 本设计整体rtl图四、硬件测试编程下载和硬件测试的步骤如下:1、打开下载窗口。

选择菜单“Tool“项的”programmer“,便可打开下载窗口。

2、设置下载电缆。

将ByteBlaster电缆的一端与微机的并行口相连,另一端10针插头与装有目标器件的PCB板上的插座相连。

并在”Hardware Setup”中设置下载电缆。

3、设置JTAG链。

Altera器件基本都支持JTAG在系统编程方式,这种方式简单易行,不需要专门的编程器。

4、选用模式,分配引脚,并编译后,把生成*.sof文件下载到基于Cyclone型GW48系列FPGA实验箱开发板上,成功查看结果,CLK 时钟频率用1Hz,可通过实验箱上“键7”控制Reset全局复位。

五、实验困难问题及解决措施在实验的过程中,编写主程序的时候,也遇到调试不成功的问题,主要问题如下:①在编写xianshi模块时,最后给输出信号赋值时,使用了进程语句,但是由于敏感列表不全,导致在仿真时其输出信号的值产生错误。

解决措施就是通过逐个查看内部信号,由于敏感列表不全,致使有些时刻,最后赋值的进程语句没有启动,从而造成输出结果不全。

②在实现绿灯剩余时间小于三秒时开始闪烁功能时,遇到问题。

具体表现在yima模块中。

开始为了在绿灯状态,使绿灯在高、地电平间变换,所以就尝试使用时钟信号clk的上升沿和下降沿,其中上升沿时,绿灯高电平即亮,下降沿时绿灯熄灭。

虽然这种方案在modelsim中仿真成功,但是在quartus进行综合出现错误,该综合软件综合不出此寄存器。

经过多次试验,使用了clk高低电平触发,不再使用其上升下降沿。

③在整个程序中有时在使用IF语句时,会因为考虑不完整造成实验结果出错。

因为在IF语句中如果过没有ELSE语句,那么输出将默认保持前一个状态,这样很容易产生错误。

总之经过查阅各种资料,成功的把程序调试了出来。

在查阅试验箱说明书的情况下,完成了引脚的选定,并把程序下载到了试验箱里面,完成了实物的演示。

参考文献[1]邹彦编.EDA技术与数字系统设计.北京:电子工业出版社.2007.[2]潘松,黄继业编.EDA技术与VHDL(第二版).北京:清华大学出版社.2007.[3]王锁萍编.电子设计自动化教程.成都:电子科技大学出版社.2000.[4]徐志军,徐光辉编.CPLD/FPGA的开发与应用.北京:电子工业出版社.2002 .[5]杨旭,刘盾等编.EDA技术基础与实验教程.北京:清华大学出版社.2010.七、附录附录一:本系统采用用硬件描述语言VHDL描述。

分为五个模块,分别为控制模块、计时模块、显示模块、译码模块和分频模块,下面针对每个模块给出相应的程序:模块一:/*************************控制部分**********************//***********定义输入输出端口***********/library ieee;use kongzhi is --实体部分;port (clk,clr : in std_logic;at,bt : in std_logic_vector(7 downto 0);s : out std_logic_vector(2 downto 0));end kongzhi;architecture rtl of kongzhi is --结构体部分;signal q :std_logic_vector(2 downto 0);begin-- main logicprocess (clk,clr,at,bt)beginif clr='1' then q<="011"; --系统复位后,系统的状态是A干道绿灯;B干道红灯;elsif (clk'event and clk ='1') thenif (at=x"01") or (bt=x"01") then --倒计时结束时,状态发生改变;q<=q+1;else q<=q;end if;end if;end process;s <= q;end rtl;模块二:/*************************计时部分**********************//***********为A,B方向设置初值 ***********/library ieee;use jishi is --实体部分port (clk, clr : in std_logic;s :in std_logic_vector(2 downto 0);at,bt :out std_logic_vector(7 downto 0));end jishi;architecture rtl of jishi is --结构体signal ati,bti :std_logic_vector(7 downto 0);--中间信号signal art,agt,alt,abyt:std_logic_vector(7 downto 0);signal brt,bgt,blt:std_logic_vector(7 downto 0);begin-- main logic --每个状态的总时间分别赋给相应的信号;art<=x"33"; --A方向直行红灯总时间为33s;agt<=x"20"; --A方向直行绿灯总时间为20s;alt<=x"10"; --A方向左拐绿灯总时间为4s;abyt<=x"04"; --黄灯总时间为4s;brt<=x"38"; --B方向直行红灯总时间为38s;bgt<=x"15"; --B方向直行绿灯总时间为15s;blt<=x"04"; --B方向左拐绿灯总时间为4s;process (clk,clr,s) beginif clr='1' then ati<=x"33";bti<=x"24";--系统复位后A方向直行绿灯剩余时间为33s,B方向直行红灯剩余时间为24s; elsif (clk'event and clk ='1') thenif(ati=x"01") or (bti=x"01") thencase s is --在每个状态,赋给相应初始时间;when "000"=>ati<=alt;bti<=brt;when "001"=>ati<=abyt;when "010"=>ati<=agt;when "011"=>ati<=abyt;when "100"=>ati<=art;bti<=blt;when "101"=>bti<=abyt;when "110"=>bti<=bgt;when "111"=>bti<=abyt;when others=>ati<=ati;bti<=bti;end case;end if;if ati/=x"01" then --当前时间大于1s时,则相应位进行减一; if ati(3 downto 0)="0000" thenati(3 downto 0)<="1001";--因为总时间使用的是十六进制 ati(7 downto 4)<=ati(7 downto 4)-1;else ati(3 downto 0)<=ati(3 downto 0)-1;ati(7 downto 4)<=ati(7 downto 4);end if;end if;if bti/=x"01" then --当前时间大于1s时,则相应位进行减一; if bti(3 downto 0)="0000" thenbti(3 downto 0)<="1001";bti(7 downto 4)<=bti(7 downto 4)-1;else bti(3 downto 0)<=bti(3 downto 0)-1;bti(7 downto 4)<=bti(7 downto 4);end if;end if;end if;end process;at<= ati; --最后给输出信号赋值;bt<=bti;end rtl;模块三:/*************************显示部分**********************//***********显示倒计时时间和系统工作状态 ***********/library ieee;use xianshi is --实体部分;port (clk1k,clr ,clk : in std_logic;at,bt:in std_logic_vector(7 downto 0);led : out std_logic_vector(6 downto 0);sel: out std_logic_vector(3 downto 0) );end xianshi;architecture rtl of xianshi is --结构体部分;signal ou : std_logic_vector(3 downto 0) ;signal dis,ds : std_logic_vector(7 downto 0);signal sl : std_logic_vector(2 downto 0):="000";signal sq : std_logic_vector(3 downto 0):="0000";begin-- main logicsl1:process (clk1k,clr)beginif clr='1' then sl<="000";elsif (clk1k'event and clk1k ='1')thenif sl="011" then sl <="000";else sl <=sl+1;end if;end if;end process;sq1: process(sl) --产生位选信号begincase sl iswhen "000"=>sq<="0001";when "001"=>sq<="0010";when "010"=>sq<="0100";when "011"=>sq<="1000";when others=>null;end case;end process;ou1:process(sl) --显示时间与位选信号一一对应;begincase sl iswhen "000"=>ou<=bt(3 downto 0); --when "001"=>ou<=bt(7 downto 4);when "010"=>ou<=at(3 downto 0);when "011"=>ou<=at(7 downto 4);when others =>ou<=x"0";end case;end process;ds1:process(ou) begin --将显示时间转换成数码管显示;case ou iswhen x"0"=>ds<=x"3F";when x"1"=>ds<=x"06";when x"2"=>ds<=x"5b";when x"3"=>ds<=x"4f";when x"4"=>ds<=x"66";when x"5"=>ds<=x"6d";when x"6"=>ds<=x"7d";when x"7"=>ds<=x"07";when x"8"=>ds<=x"7f";when x"9"=>ds<=x"6F";when others =>ds<=x"00";end case;end process;saomiao:process(clk,ds,clr,sl) –-给输出信号赋值;beginif clr='1' then dis<=ds;elsif sl<"101" thenif clk='0' then dis<=ds;--低电平数码管显示时间; else dis<=x"00"; --高电平数码管全关闭;end if;else dis<=ds;end if;end process;led<=dis(6 downto 0);sel <=sq;end rtl;模块四:/*************************译码部分**********************/ /***********驱动交通灯的显示***********/library ieee;use yima is --实体部分;port (clr,clk : in std_logic;at,bt : in std_logic_vector(7 downto 0);s : in std_logic_vector(2 downto 0);abl :out std_logic_vector(7 downto 0));end yima;architecture rtl of yima is --结构体部分;signal lt :std_logic_vector(7 downto 0);signal a :std_logic_vector(7 downto 0);signal b :std_logic_vector(7 downto 0);begin-- main logicprocess (clr,s,clk) --状态S控制着每个方向的LED灯;beginif clr='1' then lt<="00100001";end if;case s iswhen "000" =>lt<="00010100";when "001" =>lt<="";when "010" =>lt<="01000001";when "011" =>lt<=a;when "100" =>lt<="01000001";when "101" =>lt<="00011000";when "110" =>lt<="00010100";when "111" =>lt<=b;when others=>lt<=lt;end case;end process;process(clk,at,bt,s) –绿灯时间小于4秒时,绿灯开始闪烁; beginif(s="011") thenif at<x"04" thenif clk='1' thena<="00000001";elsif clk='0' thena<="00100001";end if;else a<="00100001";end if;else a<="00100001";end if;if (s="111") thenif bt<x"04" thenif clk = '1' thenb<="00010000";elsif clk='0' thenb<="00010010";end if;else b<="00010010";end if;else b<="00010010";end if;end process;abl <= lt;end rtl;模块五:/*************************分频部分**********************/ /***********为系统提供所需要的时钟脉冲 ***********/ library ieee;use fenpin is --实体部分;port (clk1k : in std_logic;clk : out std_logic);end fenpin;architecture rtl of fenpin is --结构体部分;signal fp :std_logic_vector(9 downto 0):="0000000000"; begin-- main logicprocess (clk1k)beginif (clk1k'event and clk1k ='1')then fp <= fp+1; --计数end if;end process;clk <= fp(9); --29个clk1k周期产生半个周期的clk信号;end rtl;顶层文件模块程序:library ieee;use jiaotongdeng is --实体部分;port (clk1k, clr : in std_logic;shuma : out std_logic_vector(6 downto 0);sel : out std_logic_vector(3 downto 0);led1 : out std_logic_vector(7 downto 0));end jiaotongdeng;architecture rtl of jiaotongdeng is --结构体部分;component fenpin is --调用fenpin模块声明;port (clk1k : in std_logic;clk : out std_logic);end component;component jishi is --调用jishi模块声明;port (clk, clr : in std_logic;s : in std_logic_vector(2 downto 0);at,bt :out std_logic_vector(7 downto 0));end component;component kongzhi is --调用kongzhi模块声明;port (clk,clr : in std_logic;at,bt : in std_logic_vector(7 downto 0);s : out std_logic_vector(2 downto 0));end component;component xianshi is –调用xianshi模块声明;port (clk1k,clk, clr : in std_logic;at,bt : in std_logic_vector(7 downto 0);led : out std_logic_vector(6 downto 0);sel : out std_logic_vector(3 downto 0) );end component;component yima is --调用yima模块声明;port (clr,clk : in std_logic;at,bt : in std_logic_vector(7 downto 0);s : in std_logic_vector(2 downto 0);abl : out std_logic_vector(7 downto 0));end component;signal s1,s2,s3 ,s14,s15,s16: std_logic ;--定义中间信号;signal s8,s7 :std_logic_vector(2 downto 0);signal s5,s6,s9,s10,s11 :std_logic_vector(7 downto 0);signal s12 :std_logic_vector(6 downto 0);signal s13 :std_logic_vector(3 downto 0);beginu1: fenpin port map(clk1k=>s1,clk=>s2);--元件端口映射;u2: kongzhi port map(clk=>s2,clr=>s3,at=>s9,bt=>s10,s=>s7);u3: jishi port map(clk=>s2,clr=>s3,s=>s7,at=>s9,bt=>s10);u4: yima port map(clr=> s3,s=>s7,abl=>s11,at=>s9,bt=>s10,clk=>s2); u5: xianshi port map(clk=>s2,clk1k=>s1,clr=>s3,at=>s9,bt=>s10,led=>s12,sel=>s13); s1<=clk1k;s3<=clr;shuma<=s12;sel<=s13;led1<=s11;end rtl;附录二:/*************************测试平台程序**********************/ library ieee;use test isend test;architecture behaviour of test issignal sig_clk1k : std_logic := '0';signal sig_clr : std_logic := '1';signal sig_shuma : std_logic_vector(6 downto 0);signal sig_sel :std_logic_vector(3 downto 0);signal sig_led1 :std_logic_vector(7 downto 0);constant period : time := ms;constant period1 : time := ms;component jiaotongdeng is --调用jiaotongdeng模块;port (clk1k, clr : in std_logic;shuma : out std_logic_vector(6 downto 0);sel : out std_logic_vector(3 downto 0);led1 :out std_logic_vector(7 downto 0));end component;begin-- instanceu_jiaotongdeng : jiaotongdeng port map ( --端口映射;clk1k => sig_clk1k,clr => sig_clr,led1 =>sig_led1,shuma => sig_shuma,sel =>sig_sel);process beginsig_clk1k <='0';wait for period;sig_clk1k <='1'; wait for period;end process;sig_clr <= '1', '0' after 3 sec, '1' after 10 sec,'0' after 11 sec; end behaviour;附录三:/*************************试验箱仿真结果**********************/注释说明:右下角四个数码管左边两位显示的时间是A方向剩余时间,右边两位数码管显示的时间是B方向剩余时间,右上角第一行的四个LED灯从左至右依次表示的左转绿灯、黄灯、直行绿灯、直行红灯。

相关文档
最新文档