中国石油大学数字电子技术课程设计交通灯控制电路设计报告
- 格式:doc
- 大小:514.50 KB
- 文档页数:26
综述本次设计主要分为四个部分,第一部分:信号产生电路;第二部分:电子示电路;第三部分:倒计时设计,第四部分:交通灯及交通灯控制电路在本次设计中采用555定时器产生CP=1Hz的脉冲信号,经过用741192设计的预置状态为59的60进制加计数器和预置状态为29的30进制计数器。
并使进位位作为脉冲输出,实现5分频,然后用芯片74161和74139实现南北干道和支东西干道红,绿,黄色灯亮的时间控制,最后一部分的减计数器选用74193进行级联计数,译码器选用cc4511,本人主要设计减计数器及数码管显示倒计时部分一、设计任务与要求1.东西方向绿灯亮,南北方向红灯亮,时间30。
2.东西方向与南北方向黄灯亮,时间5s。
3.南北方向绿灯亮,东西方向红灯亮,时间60。
二、方案设计与论证根据设计任务与要求,我们可以知道这个交通灯的设计是分南北干道和东西干道的,两个方面的时间是不同的,东西方向通行30s,南北方向60s,这就要求我们要有两个计数器,根据我自己的经验,东西方向通行30s完,倒计时数字显示器会显示到0,然后切换到南北方向通行60s完之后, 倒计时数字显示器也会显示到0之后然后切换到南北方向,这样如此循环,由于黄灯是当两个计数器倒计时到5时开始闪,我们就可以在这时发出一个脉冲然后一直保持到0,或者是接收0~5这段时间的脉冲都可以控黄灯只在到了这段时间才亮;方案:交通灯控制原理图:22.a 交通灯原理框图首先由555定时器产生1s的信号脉冲,通过由一些1k电阻和三片74LS245,两片74LS192处理构成定时电路处理,产生时间输出信号作用电子显示器,另一部分的1s的信号脉冲通过由两片74LS112的JK触发器组成的路灯控制电路的对1s的信号处理,产生对交通路灯有控制作用的电子逻辑信号,从而实现按要求的对路灯的正常控制。
三、单元电路设计3.1时间脉冲产生电路由555 定时器和外接元件R1、R2、C 构成多谐振荡器,脚2 与脚6 直接相连。
课程设计报告书---交通灯控制电路设计课程设计任务书一、目的任务交通信号灯常用于交叉路口,用来控制车辆的流量,提高交叉路口车辆的通行能力,减少交通事故。
交通灯的颜色有红、黄、绿三种,当红灯亮时,表示该方向道路上的车辆或行人禁止通行;黄灯亮时,表示该方向道路上的行人禁止通行以及未过停车线的车辆停止通行,已过停车线的车辆继续通行;绿灯亮时,表示该方向道路上的车辆或行人允许通行;交通灯控制电路自动控制十字交叉路口两组红、黄、绿交通灯的状态转换,有序的指挥各种车辆和行人安全通行。
1、主要内容(1)熟悉设计任务书,分析设计要求,借阅参考资料。
(2)在计算机上设计硬件原理图。
(3)设计软件框图、流程图编写软件程序、调试程序(4)用仿真器对所做的系统进行仿真,修改调试程序等;(5)加载程序到实验箱,调试、检查编程效果(6)撰写设计报告,绘图等。
三、设计要求1、理解设计任务书,原始设计要求。
2、掌握以下设计内容及方法:画出硬件电路原理图,确定各元件参数,确定软件流程,编写程序,调试程序,最后撰写设计报告,验收考核。
4、有勤于思考、刻苦钻研的学习精神和严肃认真、一丝不苟、精益求精的学习态度。
对有抄袭他人设计图纸(课程设计报告书)或找他人代编设计程序、等行为的弄虚作假者一律按不及格记成绩,并根据学校有关规定给予处理。
5、敢于创新,勇于实践,注意培养创新意识和工程意识。
6、扎实掌握课程的基本理论和基本知识,概念清楚,设计计算正确实验数据可靠,绘图符合标准,课程设计报告书撰写规范。
7、在设计周内完成所规定的设计任务,提交《课程设计报告书》一份。
报告书装订顺序:1)模板封皮2)任务书3)本课程设计要求4)设计报告a.系统总框图及系统工作原理。
b.系统的硬件电路连接图,电路的原理。
c.软件设计流程及其说明。
d.电路设计,软件编程、调试中遇到的问题及分析解决方法。
e.实验结果及其分析。
f.体会。
设计题目四:交通灯控制电路设计1.主要教学内容用单片机系统设计十字路口交通灯控制电路,要求东西方向的红、黄、绿灯和南北方向的红、黄、绿灯按照下面的工作时序进行工作,黄灯亮时应为闪烁状态:(1)南北和东西车辆交替进行,各通行时间 24 秒(2)每次绿灯变红灯时,黄灯先闪烁 4 秒,才可以变换运行方向。
(此文档为word格式,下载后您可任意编辑修改!)《数字电子技术课程设计》任务书专业班级地物一班姓名学号开课系室电工电子学教学中心设计日期目录一、设计题目二、设计任务及要求1,具体要求2,输入输出资源说明三、设计与仿真1,基本要求的设计1.1时钟分频模块1.2闪烁模块1.3计数器模块1.4译码器模块1.5交通灯控制模块1.6点阵显示模块2,扩展模块的设计2.1自动切换手动模块的设计2.2交警控制模块的设计3,顶层模块的设计四、总结与讨论一、设计题目数字电子技术课程设计题目:交通灯控制电路设计。
交通灯的显示有很多方式,如十字路口、丁字路口等,而对于同一个路口又有很多不同的显示要求,比如十字路口,车辆如果只要东西和南北方向通行就很简单,而如果车子可以左右转弯的通行就比较复杂。
要完成本实验,首先必须了解交通路灯的燃灭规律。
本实验需要用到实验箱上交通灯模块中的发光二极管,即红、黄、绿各四个。
依人们的交通常规,“红灯停,绿灯行,黄灯提醒”。
其交通灯的燃灭规律为:东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯闪烁,红灯亮(表示左转弯),再延时一段时间后,黄灯开始闪烁。
闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯闪烁,红灯亮(表示左转弯),再延时一段时间后,黄灯开始闪烁。
闪烁若干次后,再切换到东西路口方向,重复上述过程。
在实验中使用4个七段码管中的任意两个数码管显示时间。
东西路和南北路的通车时间均设定为20s(其中,绿灯亮时间为10s,绿灯闪烁时间为5s,黄灯闪烁时间为5s)。
数码管的时间总是显示为20、19、18、17……2、1、0、20、19、18……。
在显示时间小于等于5秒的时候,通车方向的黄灯闪烁。
在东西向绿灯期间,点阵显示自己的姓名;在南北向绿灯期间,点阵显示自己的学号后3位。
二、设计任务及要求1.具体要求本课程设计要完成的任务就是设计一个简单的交通灯控制器,交通灯显示用实验箱的交通灯模块和七段码管中的任意两个来显示。
前言现如今,随着人口和汽车的日益增长,城市交通日益拥挤,人们的安全问题也日益重要。
因此,红绿交通信号灯成为交管部门管理交通的重要工具之一。
交通信号灯常用于十字路口,用来控制车的流量,提高交叉口车辆的通行能力,减少交通事故。
有了交通灯人们的安全出行有了很大的保障。
自从交通灯诞生以来,其内部的电路控制系统就不断的被改进,设计方法也开始多种多样,从而使交通灯显得更加智能化、科学化、简便化。
尤其是近几年来,随着电子与计算机技术的飞速发展,电子电路分析和设计方法有了很大的改进,电子设计自动化也已经成为现代电子系统中不可缺少的工具和手段,这些为交通灯控制电路的设计提供了一定的技术基础。
本设计通过采用数字电路对交通灯控制电路的设计,提出使交通灯控制电路用数字信号自动控制十字路口两组红、黄、绿交通灯的状态转换的方法,指挥各种车辆和行人安全通行,实现十字路口交通管理的自动化。
因此,在本次课程设计里,将以传统的设计方法为基础来实现设计交通控制信号灯。
本实验设计目的是培养数字电路的能力,掌握交通信号灯控制电路的设计方法。
设计任务及要求设计一个十字路口的交通灯定时控制系统,基本要求如下:(1)甲车道和乙车道两条交叉道路上的车辆交替运行,每次通行时间都设为25秒。
(2)每次绿灯变红灯时,黄灯先亮5秒钟,才能变换运行车道。
(3)黄灯亮时,要求每秒钟闪亮一次。
(4)十字路口有数字显示灯亮时间,要求灯亮时间以秒为单位作减计数;(5)要求通行时间和黄灯亮的时间均可在0~99s内任意设定。
本设计由王宇同学完成。
由于所学知识有限,设计中难免出现错误,请老师批评指正。
目录第一章设计任务及设计目的 (1)第二章系统概述 (2)2.1 系统概述 (2)2.2 交通灯逻辑分析 (2)2.3总体设计方案 (2)第三章单元电路设计与分析 (5)3.1秒脉冲信号发生器的设计 (5)3.2定时器的设计 (5)3.3 控制器的设计 (6)3.4 显示电路的设计 (9)第四章综述及心得体会 (10)4.1 系统综述 (10)4.2 总结及心得体会 (10)附录 (12)附录一实验电路图 (12)附录二芯片引脚图 (13)附录三元器件清单 (16)附录四焊接电路板 (17)参考文献 (18)交通灯定时控制系统的设计、制作摘要:在城镇街道的十字交叉路口,为了保证交通秩序和行人安全,一般在每条道路上各有一组红、黄、绿交通信号灯,其中红灯亮,表示该条道路禁止通行;黄灯亮表示该条道路上未过停车线的车辆停止通行,已过停车线的车辆继续通行;绿灯亮表示该条道路允许通行。
一、设计题目:交通灯控制器交通灯控制器是可以自动控制交通灯,并以倒计时的方式显示出时间,方便行人和车辆在通行时有条不紊的通行,达到交通井然有序,出行人员安全快捷的到达目的地的效果。
本次实验的就是想通过这样的一个实例,来结合数字电路课程的学习共同实现这样的一个应用工具,达到理论和实践相结合的目的。
二、设计要求:设计一个十字路口控制交通秩序的交通灯,满足以下条件:显示顺序为其中一组方向是绿、黄、红;另一方向是红、绿、黄。
设臵一组数码管以倒计时的方式显示语序通行或禁止通行时间,其中支通道绿灯的时间是20s,另一个方向上主通道的绿灯亮的时间是30s,黄灯亮的时间都是5s.选做:当任何一个方向出现特殊情况,按下手动开关,其中一个方向通行,倒计时停止,当特殊情况结束后,按下自动控制开关恢复正常状态。
三、设计思路概述:1.任务分析:交通灯控制器主要实现两部分功能:①东西、南北双向通路的红、绿、黄灯控制;②东西向主通路的倒计时显示。
另外,在此设计中还实现了紧急情况下的强制中断功能。
2.实现方案:实现这个交通灯控制器可以采用PLD 、FPGA 、单片机等可编程器件或基本数字逻辑器件实现。
在这次实验中采用74系列数字集成芯片和555时基芯片实现相应功能,在本报告的最后附有用Atmel 公司89C52实现同样功能的电路设计图及C51程序。
3.具体功能分析:此电路为十字路口交通灯控制电路,要求东西向和南北向不能同时出现绿(黄)灯,发生“撞车”现象。
即当某一方向为绿灯或黄灯时,另一方向必为红灯。
东西向主通路有倒计时显示。
设计时序如下: 东西向 南北向4.电路框图设计:说明:脉冲输出部分为555时基芯片构成的多次谐波振荡器,由其产生周期为1s 的时钟脉冲信号。
计时控制部分主要由两片74LS161(十六进制同步加法计数器)、74LS74(边沿D 触发器)及逻辑门电路构成。
产生30s 、20s和5s 的倒计时信号。
彩灯控制部分将计时控制部分输出的信号通过逻辑门电路及74LS139(双2—4线译码器)产生控制信号,控制彩灯按照响应时序显示,并将74LS139的输出信号反馈回计时控制部分实现三种倒计时之间的切换。
交通灯控制器+数字电路课程设计报告交通灯控制器是交通管理系统中的重要组成部分,其主要作用是控制道路上的交通信号灯。
随着数字电路技术的发展,交通灯控制器也逐渐向数字化、智能化方向发展。
本文将详细介绍一种基于数字电路的交通灯控制器设计,以及该设计方案的实现和效果。
一、设计方案1.硬件设计硬件设计方案主要包括数字电路的选择、交通灯的控制模块、传感器等。
本方案选用FPGA芯片作为控制芯片,该芯片具有先进的数字信号处理能力和可编程性,便于开发和定制。
交通灯的控制模块包括红灯、黄灯、绿灯三个信号灯的控制器,以及车辆、行人传感器等。
其中车辆传感器主要用来检测车流量,行人传感器主要用来检测行人通行情况。
2.软件设计软件设计方案主要包括程序的设计和调试,以及人机界面的设计和开发。
程序设计方案采用Verilog HDL语言进行实现,采用时序逻辑设计的思路来编写程序,实现红绿灯的控制和状态转移。
人机界面采用C语言进行编写,通过串口通信与控制芯片进行数据传输和控制。
二、实现过程在设计方案确定后,我们进一步开始实现。
首先是电路的焊接和测试,在确定电路正常无误后,再完成程序的编写和调试。
最后是人机接口的开发和完善。
具体实现流程如下:1.电路焊接首先进行电路布线和焊接,将FPGA芯片、光耦隔离器、电位器等元器件焊接到电路板上,以及信号灯、传感器等元器件的接入。
2.程序编写利用Verilog HDL语言编写程序,主要包括红绿灯状态的转移逻辑和相应的信号输出控制。
程序设计过程中,需要注意时序和状态的转移。
3.调试测试完成程序编写后,需要进行相应的调试测试。
通过仿真测试,检查程序逻辑是否正确,排除潜在问题。
在硬件实验平台上进行测试,确定系统能够正常工作。
4.人机界面开发利用C语言编写人机界面,实现与交通灯控制器的交互控制。
实现车辆、行人传感器的数据采集和显示,以及人手动控制交通灯的功能。
三、实现效果通过测试和实验验证,本文的交通灯控制器设计方案具有以下优势:1.使用FPGA芯片作为控制芯片,具有较强的可编程性和数字信号处理能力。
数字电子技术课程设计实验报告题目:交通信号灯控制电路设计专业:班级:学号:姓名:指导老师:时间:一、设计任务及要求为了确保十字路口的车辆顺利通过,往往采用自动控制的交通灯信号灯来进行指挥。
(1)其中红灯(R)亮表示该条道路禁止通行;(2)黄灯(Y)亮表示停车,绿灯(G)亮表示允许通行;(3)黄灯亮时要求每秒钟闪亮一次;(4)东西、南北方向除了有红(R)、黄(Y)、绿(G)灯指示外,每一种灯亮的时间都用显示器进行显示(采用倒计时的方法);二、课程设计实验预习要求(1)复习数字系统设计基础。
(2)复习多路数据选择器、二进制同步计数器的工作原理。
(3)根据交通灯控制系统框图,画出完整电路图。
三、设计原理与电路1.分析系统逻辑功能,画出系统框图控制系统原理图交通灯原理控制如上图所示,它主要由秒脉冲发生器、定时器、译码器、控制器等部分组成。
秒脉冲发生器是本实验中控制器和定时器的标准时钟信号源,译码器输出两组信号灯控制信号,经驱动电路驱动后驱动信号灯工作,控制器是系统的主要部分,由它接受来自定时器的信息后控制译码器工作。
2.单元电路的设计1)控制器控制器是交通管理的核心,它应该能够按照交通管理规则控制信号灯工作。
(1)交通灯的四种工作状态的转变是由控制器进行控制转换的,它们的工作方式满足如右图顺序工作流程,设东西向的红、黄、绿灯分别为EW(R)、EW(Y)、EW(G),南北向的红、黄、绿灯分别为NS(R)、NS(Y)、NS(G)。
状态1:东西方向车道的绿灯亮,车道通行;南北方向车道的红灯亮,车道禁止通行。
状态2:东西方向车道的黄灯亮,车道缓行;南北方向车道的红灯亮,车道禁止通行;状态3:东西方向车道的红灯亮,车道禁止通行;南北方向车道的绿灯亮,车道通行;状态4:东西方向车道的红灯亮,车道禁止通行;南北方向车道的黄灯亮,车道缓行;四个状态用时所占比例分别为5:1:5:1,所以,计数器每次工作的循环周期为12,所以可以选择12进制计数器。
一、实验目的1、掌握综合应用理论知识和中规模集成电路设计方法2、熟练掌握万用电表、函数信号发生器、数字电路实验箱、示波器的正确使用方法。
3、能识别和正确使用各种所需的集成块、电阻、电位器等,熟悉集成块的管脚功能结构。
4、自行设计实验图、检查和排除故障。
5、掌握调试及电路主要技术指标的测试方法二、设计任务与要求有一条主干道和一条支干道的汇合点形成十指交叉路口,为确保车辆安全、迅速地行驶,在交叉路口的每个入口处设置了红、绿、黄三色信号灯。
红灯亮禁止通行;绿灯亮允许通行;黄灯亮则给行驶中的车辆有时间停靠到禁行线之外。
设计一个十字路口交通灯信号控制器,设计要求如下:1、用红、绿、黄三色发光二极管作信号灯,用传感器或用逻辑开关代替传感器作检测车辆是否到来的信号,设计制作一个交通灯控制器。
2、由于主干道车辆较多而支干道车辆较少,所以主干道处于常允许通行的状态,而支干道有车来才允许通行,当主干道允许通行亮绿灯时,支干道亮红灯。
而支干道允许通行亮绿灯时,主干道亮红灯。
3、当主、支干道均有车时,两者交替允许通行,主干道每次放行24s,支干道每次放行20s,设立24s,和20s计时显示电路。
4、在每次由亮绿灯转变成亮红灯的转换过程中间,要亮4s的黄灯作为过渡,以使行驶中的车辆有时间停到禁止线以外,设置4s计时显示电路。
三、设计原理与参考电路1.分析系统的逻辑功能,画出其框图交通灯控制系统的原理框图如图12、1所示。
它主要由控制器、定时器、译码器和秒脉冲信号发生器等部分组成。
秒脉冲发生器是该系统中定时器和控制器的标准时钟信号源,译码器输出两组信号灯的控制信号,经驱动电路后驱动信号灯工作,控制器是系统的主要部分,由它控制定时器和译码器的工作。
图中:TL: 表示甲车道或乙车道绿灯亮的时间间隔为25秒,即车辆正常通行的时间间隔。
定时时间到,TL=1,否则,TL=0。
图12、1 交通灯控制系统的原理框图2.画出交通灯控制器的ASM(Algorithmic State Machine,算法状态机)(1)图甲车道绿灯亮,乙车道红灯亮。
交通信号灯控制系统设计报告一.实验目的1.掌握综合应用数电理论知识和中规模集成电路设计方法2.掌握调试及电路主要技术指标的测试方法。
3 了解交通灯管理的基本工作原理。
二、交通灯控制器任务及要求1、能显示十字路口东西、南北两个方向的红、黄、绿的指示状态用两组红、黄、绿三色灯作为两个方向的红、黄、绿灯。
2、能实现正常的到计时功能用两组数码管作为东西和南北方向的到计时显示,主干道每次放行(绿灯)60秒,支干道每次放行(绿灯)45秒,在每次由绿灯变成红灯的转换过程中,要亮黄灯5秒作为过渡。
3、能实现特殊状态的功能(选做)(1〉按sl键后,能实现特殊状态功能:(2)显示到计时的两组数码管闪烁;(3)计数器停止计数并保持在原来的状态:(4)东西、南北、路口均显示红灯状态:(5)特殊状态解除后能继续计数。
4、能实现总体清零功能:按下该键后,系统实现总清零,计数器由初始状态计数,对应状态的指示灯亮。
5、完成电路全部设计后,通过实验箱验证设计课题的正确性。
三.比较和优选设计方案1.方案1:利用单片机来设计1)显示界面该系统要求完成倒计时、状态灯等功能。
完全采用数码管显示。
这种方案虽只显示有限的符号和数码字苻,但是完全胜任题目要求。
2)输入:题目要求系统能手动设灯亮时间、紧急情况处理。
直接在IO口线上接上按键开关。
因为设计时精简和优化了电路,所以剩余的口资源还比较多,我们使用四个按键,分别是K1、K2、K3、K4。
由于该系统对于交通灯及数码管的控制,只用单片机本身的I/O 口就可实现,且本身的计数器及RAM已经够用。
3)输出:控制发光二极管,来表示红绿灯的亮灭,及山烁。
系统由单片机系统、键盘、LED 显示、交通灯演示系统组成。
方案2:利用中规模集成芯片来实现。
其中信号灯的亮灭有三种可选方案:1)利用74LS161:2)利用存储器:3)利用扭环循环控制。
方案选择:由于这次实验是电工电子实验。
利用方案1不太满足要求。
方案2中利用扭环循环控制信号灯的亮灭,不容易实现特殊功能状态;利用存储器需要对芯片编码,有时会出现编码混乱的情况,这样会造成电路检测的不便。
2011—2012学年第二学期《数字电子技术课程设计》任务书(适用专业:电气10级)题目交通灯控制电路设计姓名郑长明学号 10053228专业班级电气10-2班开课系室电工电子学教学中心设计日期 2012年7月5 日~9日目录1、设计任务与要求 (2)2、系统设计总体方案.......................................................................................................3、各子模块设计 ..............................................................................................................3.1时钟分频模块................................................................................................................3.2十进制减法计数器模块 ....................................................................................................3.3七段数码管显示译码器模块 ............................................................................................3.4交通灯控制模块 ................................................................................................................3.5点阵显示模块 ....................................................................................................................4、仿真测试结果 ..............................................................................................................5、实习总结与讨论 ..........................................................................................................一、设计任务与要求:交通灯的显示有很多方式,如十字路口、丁字路口等,而对于同一个路口又有很多不同的显示要求,比如十字路口,车辆如果只要东西和南北方向通行就很简单,而如果车子可以左右转弯的通行就比较复杂,本实验仅针对最简单的南北和东西直行的情况。
要完成本实验,首先必须了解交通路灯的燃灭规律。
本实验需要用到实验箱上交通灯模块中的发光二极管,即红、黄、绿各四个。
依人们的交通常规,“红灯停,绿灯行,黄灯提醒”。
其交通灯的燃灭规律为:初始态是两个路口的红灯全亮,之后,东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯灭,黄灯开始闪烁。
闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁。
闪烁若干次后,再切换到东西路口方向,重复上述过程。
在实验中使用4个七段码管中的任意一个或两个数码管显示时间。
东西路和南北路的通车时间均设定为9s。
数码管的时间总是显示为9、8、7……2、1、0、9、8……。
在显示时间小于等于3秒的时候,通车方向的黄灯闪烁。
在东西向绿灯期间,点阵显示自己的姓名;在南北向绿灯期间,点阵显示自己的学号后3位。
扩展要求:将0-9s扩展为0-30s。
二、具体要求:本实验要完成任务就是设计一个简单的交通灯控制器,交通灯显示用实验箱的交通灯模块和七段码管中的任意一个或两个来显示。
系统时钟选择时钟模块的50MHz时钟,黄灯闪烁时钟要求为2Hz,七段码管的时间显示为1Hz脉冲,即每1s中递减一次,在显示时间小于等于3秒的时候,通车方向的黄灯以2Hz的频率闪烁。
在东西向绿灯期间,点阵显示自己的姓名;在南北向绿灯期间,点阵显示自己的学号后3位。
显示方式:1秒显示一个汉字或者一个数字(汉字和数字均静止不动,即不循环),然后全暗1秒,然后再显示一个汉字或者一个数字,以此类推。
实验箱中用到的数字时钟模块、按键开关、数码管、点阵与FPGA的接口电路,以及数字时钟源、按键开关、数码管、点阵与FPGA的管脚连接在以前的实验中都做了详细说明,这里不再赘述。
交通灯模块原理与LED灯模块的电路原理一致,当有高电平输入时LED灯就会被点亮,反之不亮。
只是LED发出的光有颜色之分。
三、输入输出资源说明:1、输入信号:按键K1(按下时K1=0,松开时K1=1)。
2、外部输入脉冲信号时钟源CP(50MHz),经适当分频后供计数器使用。
3、输出1组显示译码信号(每组7个输出端),接到外部的两个七段数码管上,显示倒计时;(扩展要求)或输出2组显示译码信号(每组7个输出端),分别接到外部的两个七段数码管M1、M2上,M1和M2分别显示30秒倒计时的十位和个位。
4、输出6个高低电平信号,分别接到外部的6个指示纵向、横向的LED灯。
(输出高电平时,对应的LED灯亮)其具体框图如下:图1 交通灯控制电路结构框图根据如上说明,本设计的主要任务和设计要求是:1、按照现代数字系统的Top-Down模块化设计方法,提出交通灯控制电路设计系统的整体设计方案,并进行正确的功能划分,分别提出并实现控制器、计数器、输出译码、点阵显示等模块化子系统的设计方案。
2、在Quartu sⅡ的EDA设计环境中,完成系统的顶层设计、各子系统的模块化设计。
分别完成各个基于Verilog语言实现的子模块(包括控制器电路、计数器电路、输出译码电路、点阵显示电路)的逻辑功能仿真。
最后对顶层设计进行功能仿真。
3、在2步的基础上,用下载电缆通过JTAG口将对应的sof文件加载到FPGA中。
观察实验结果是否与自己的编程思想一致。
二、系统设计总体方案根据设计要求及原理,我设计的交通灯控制电路包括时钟分频、十进制减法计数器、七段数码管显示、交通灯控制和点阵显示模块组成。
顶层设计方案:(1)、外部输入脉冲信号时钟源CP (50MHz ),经适当分频后供计数器和译码器及控制器使用。
(2)、输出显示译码信号(7个输出端),显示10秒倒计时9-0s 。
(3)、输出6个高低电平信号,分别接到外部的6个指示纵向、横向的LED 灯。
(输出高电平时,对应的LED 灯亮)总体设计图:三、各子模块设计3.1时钟分频模块通过编程设计分频器产生1khz、2hz、1hz时钟频率,为各模块提供脉冲;verilog 程序如下:module fp(clk,cp1,cp2,cp3);input clk;output cp1,cp2,cp3;reg [31:0]cout1;reg [31:0]cout2;reg [31:0]cout3;reg cp1,cp2,cp3;always @(posedge clk)begincout1<=(cout1==32'd49999)?1'd0:(cout1+1'd1);cp1<=(cout1>=32'd25000)?1'd1:1'd0;cout2<=(cout2==32'd2*******)?1'd0:(cout2+1'd1);cp2<=(cout2>=32'd1*******)?1'd1:1'd0;cout3<=(cout3==32'd4*******)?1'd0:(cout3+1'd1);cp3<=(cout3>=32'd2*******)?1'd1:1'd0;endendmodule生成模块:3.2十进制减法计数器模块为了实现红绿灯时倒计时显示时间:源程序module cn10(clk,q);input clk;output [3:0]q;reg [3:0]q;initialbeginq=4'b1001;endalways@(posedge clk)beginif(q==4'b0000)q=4'b1001;else q=q-4'b0001;endendmodule生成模块:3.3七段数码管显示译码器模块为了用数码管显示倒计时9-0,程序:module yimaqi(a,q);input [3:0]a;output [6:0]q;reg [6:0]q;always @(a)begincase(a)4'h0:q='b0000001;4'h1:q='b1001111;4'h2:q='b0010010;4'h3:q='b0000110;4'h4:q='b1001100;4'h5:q='b0100100;4'h6:q='b1100000;4'h7:q='b0001111;4'h8:q='b0000000;4'h9:q='b0000100;endcaseendendmodule生成模块:3.4交通灯控制模块module control(clk,r1,y1,g1,r2,y2,g2); input clk;output r1,y1,g1,r2,y2,g2;reg r1,y1,g1,r2,y2,g2;reg [5:0]cout;always @(posedge clk)begincout<=(cout==6'd39)?1'd0:(cout+1'd1); if(cout>=0&&cout<12)beging1=1;g2=0;r1=0;r2=1;y1=0;y2=0;endelse if(cout>19&&cout<32)beging1=0;g2=1;r1=1;r2=0;y1=0;y2=0;endelse if(cout>31&&cout<=39)beging1=0;g2=0;r1=1;r2=0;y1=0;if(cout%2==0)y2=1;else y2=0;endelsebeging1=0;g2=0;r1=0;r2=1;y2=0;if(cout%2==0)y1=1;else y1=0;endendendmodule生成模块:3.5点阵显示模块为了在2方向绿灯期间实现显示姓名和学号,用点阵扫描显示,1000hz,我用的是逆向扫描,verilog程序如下:module dianzhen(clk,clk3,row,con);input clk,clk3;output[15:0] row;output[15:0] con;reg[15:0] row;reg[15:0] con;integer cnt,b;reg[15:0] r[319:0];initialbegin//全暗r[0] <=16'b 1111111111111111;r[1] <=16'b 1111111111111111;r[2] <=16'b 1111111111111111;r[3] <=16'b 1111111111111111;r[4] <=16'b 1111111111111111;r[5] <=16'b 1111111111111111;r[6] <=16'b 1111111111111111;r[7] <=16'b 1111111111111111; r[8] <=16'b 1111111111111111; r[9] <=16'b 1111111111111111; r[10] <=16'b 1111111111111111; r[11] <=16'b 1111111111111111; r[12] <=16'b 1111111111111111; r[13] <=16'b 1111111111111111; r[14] <=16'b 1111111111111111; r[15] <=16'b 1111111111111111; //全暗r[16] <=16'b 1111111111111111; r[17] <=16'b 1111111111111111; r[18] <=16'b 1111111111111111; r[19] <=16'b 1111111111111111; r[20] <=16'b 1111111111111111; r[21] <=16'b 1111111111111111; r[22] <=16'b 1111111111111111; r[23] <=16'b 1111111111111111; r[24] <=16'b 1111111111111111; r[25] <=16'b 1111111111111111; r[26] <=16'b 1111111111111111; r[27] <=16'b 1111111111111111; r[28] <=16'b 1111111111111111; r[29] <=16'b 1111111111111111; r[30] <=16'b 1111111111111111; r[31] <=16'b 1111111111111111;//全暗r[32] <=16'b 1111111111111111; r[33] <=16'b 1111111111111111; r[34] <=16'b 1111111111111111;r[36] <=16'b 1111111111111111; r[37] <=16'b 1111111111111111; r[38] <=16'b 1111111111111111; r[39] <=16'b 1111111111111111; r[40] <=16'b 1111111111111111; r[41] <=16'b 1111111111111111; r[42] <=16'b 1111111111111111; r[43] <=16'b 1111111111111111; r[44] <=16'b 1111111111111111; r[45] <=16'b 1111111111111111; r[46] <=16'b 1111111111111111; r[47] <=16'b 1111111111111111;//全暗r[48] <=16'b 1111111111111111; r[49] <=16'b 1111111111111111; r[50] <=16'b 1111111111111111; r[51] <=16'b 1111111111111111; r[52] <=16'b 1111111111111111; r[53] <=16'b 1111111111111111; r[54] <=16'b 1111111111111111; r[55] <=16'b 1111111111111111; r[56] <=16'b 1111111111111111; r[57] <=16'b 1111111111111111; r[58] <=16'b 1111111111111111; r[59] <=16'b 1111111111111111; r[60] <=16'b 1111111111111111;r[63] <=16'b 1111111111111111;//全暗r[64] <=16'b 1111111111111111;r[65] <=16'b 1111111111111111;r[66] <=16'b 1111111111111111;r[67] <=16'b 1111111111111111;r[68] <=16'b 1111111111111111;r[69] <=16'b 1111111111111111;r[70] <=16'b 1111111111111111;r[71] <=16'b 1111111111111111;r[72] <=16'b 1111111111111111;r[73] <=16'b 1111111111111111;r[74] <=16'b 1111111111111111;r[75] <=16'b 1111111111111111;r[76] <=16'b 1111111111111111;r[77] <=16'b 1111111111111111;r[78] <=16'b 1111111111111111;r[79] <=16'b 1111111111111111;//8r[80] <=16'b 1111111111111111; r[81] <=16'b 1111000111000111; r[82] <=16'b 1110111010111011; r[83] <=16'b 1110111101111011; r[84] <=16'b 1110111101111011; r[85] <=16'b 1110111010111011; r[86] <=16'b 1111000111000111;r[89] <=16'b 1111111111111111; r[90] <=16'b 1111111111111111; r[91] <=16'b 1111111111111111; r[92] <=16'b 1111111111111111; r[93] <=16'b 1111111111111111; r[94] <=16'b 1111111111111111; r[95] <=16'b 1111111111111111; //全暗r[96] <=16'b 1111111111111111; r[97] <=16'b 1111111111111111; r[98] <=16'b 1111111111111111; r[99] <=16'b 1111111111111111; r[100] <=16'b 1111111111111111; r[101] <=16'b 1111111111111111; r[102] <=16'b 1111111111111111; r[103] <=16'b 1111111111111111; r[104] <=16'b 1111111111111111; r[105] <=16'b 1111111111111111; r[106] <=16'b 1111111111111111; r[107] <=16'b 1111111111111111; r[108] <=16'b 1111111111111111; r[109] <=16'b 1111111111111111; r[110] <=16'b 1111111111111111; r[111] <=16'b 1111111111111111; //2r[112] <=16'b 1111111111111111; r[113] <=16'b 1111000111110011; r[114] <=16'b 1110000111100011; r[115] <=16'b 1110111111001011;r[118] <=16'b 1110000001110011; r[119] <=16'b 1111000111110011; r[120] <=16'b 1111111111111111; r[121] <=16'b 1111111111111111; r[122] <=16'b 1111111111111111; r[123] <=16'b 1111111111111111; r[124] <=16'b 1111111111111111; r[125] <=16'b 1111111111111111; r[126] <=16'b 1111111111111111; r[127] <=16'b 1111111111111111; //全暗r[128] <=16'b 1111111111111111; r[129] <=16'b 1111111111111111; r[130] <=16'b 1111111111111111; r[131] <=16'b 1111111111111111; r[132] <=16'b 1111111111111111; r[133] <=16'b 1111111111111111; r[134] <=16'b 1111111111111111; r[135] <=16'b 1111111111111111; r[136] <=16'b 1111111111111111; r[137] <=16'b 1111111111111111; r[138] <=16'b 1111111111111111; r[139] <=16'b 1111111111111111; r[140] <=16'b 1111111111111111; r[141] <=16'b 1111111111111111; r[142] <=16'b 1111111111111111; r[143] <=16'b 1111111111111111; //2r[144] <=16'b 1111111111111111;r[147] <=16'b 1110111111001011; r[148] <=16'b 1110111110011011; r[149] <=16'b 1110111000111011; r[150] <=16'b 1110000001110011; r[151] <=16'b 1111000111110011; r[152] <=16'b 1111111111111111; r[153] <=16'b 1111111111111111; r[154] <=16'b 1111111111111111; r[155] <=16'b 1111111111111111; r[156] <=16'b 1111111111111111; r[157] <=16'b 1111111111111111; r[158] <=16'b 1111111111111111; r[159] <=16'b 1111111111111111;//全暗r[160] <=16'b 1111111111111111; r[161] <=16'b 1111111111111111; r[162] <=16'b 1111111111111111; r[163] <=16'b 1111111111111111; r[164] <=16'b 1111111111111111; r[165] <=16'b 1111111111111111; r[166] <=16'b 1111111111111111; r[167] <=16'b 1111111111111111; r[168] <=16'b 1111111111111111; r[169] <=16'b 1111111111111111; r[170] <=16'b 1111111111111111; r[171] <=16'b 1111111111111111; r[172] <=16'b 1111111111111111; r[173] <=16'b 1111111111111111;//全暗r[176] <=16'b 1111111111111111; r[177] <=16'b 1111111111111111; r[178] <=16'b 1111111111111111; r[179] <=16'b 1111111111111111; r[180] <=16'b 1111111111111111; r[181] <=16'b 1111111111111111; r[182] <=16'b 1111111111111111; r[183] <=16'b 1111111111111111; r[184] <=16'b 1111111111111111; r[185] <=16'b 1111111111111111; r[186] <=16'b 1111111111111111; r[187] <=16'b 1111111111111111; r[188] <=16'b 1111111111111111; r[189] <=16'b 1111111111111111; r[190] <=16'b 1111111111111111; r[191] <=16'b 1111111111111111; // 全暗r[192] <=16'b 1111111111111111; r[193] <=16'b 1111111111111111; r[194] <=16'b 1111111111111111; r[195] <=16'b 1111111111111111; r[196] <=16'b 1111111111111111; r[197] <=16'b 1111111111111111; r[198] <=16'b 1111111111111111; r[199] <=16'b 1111111111111111; r[200] <=16'b 1111111111111111; r[201] <=16'b 1111111111111111; r[202] <=16'b 1111111111111111;r[205] <=16'b 1111111111111111; r[206] <=16'b 1111111111111111; r[207] <=16'b 1111111111111111;//全暗r[208] <=16'b 1111111111111111; r[209] <=16'b 1111111111111111; r[210] <=16'b 1111111111111111; r[211] <=16'b 1111111111111111; r[212] <=16'b 1111111111111111; r[213] <=16'b 1111111111111111; r[214] <=16'b 1111111111111111; r[215] <=16'b 1111111111111111; r[216] <=16'b 1111111111111111; r[217] <=16'b 1111111111111111; r[218] <=16'b 1111111111111111; r[219] <=16'b 1111111111111111; r[220] <=16'b 1111111111111111; r[221] <=16'b 1111111111111111; r[222] <=16'b 1111111111111111; r[223] <=16'b 1111111111111111;//全暗r[224] <=16'b 1111111111111111; r[225] <=16'b 1111111111111111; r[226] <=16'b 1111111111111111; r[227] <=16'b 1111111111111111; r[228] <=16'b 1111111111111111;r[231] <=16'b 1111111111111111; r[232] <=16'b 1111111111111111; r[233] <=16'b 1111111111111111; r[234] <=16'b 1111111111111111; r[235] <=16'b 1111111111111111; r[236] <=16'b 1111111111111111; r[237] <=16'b 1111111111111111; r[238] <=16'b 1111111111111111; r[239] <=16'b 1111111111111111; //明r[240] <=16'b 1111111111111111; r[241] <=16'b 1000000000111111; r[242] <=16'b 1011101110111111; r[243] <=16'b 1011101110111111; r[244] <=16'b 1011101110111111; r[245] <=16'b 1000000000111101; r[246] <=16'b 1111111111111011; r[247] <=16'b 1111111111100111; r[248] <=16'b 0000000000011111; r[249] <=16'b 0111011101111111; r[250] <=16'b 0111011101111111; r[251] <=16'b 0111011101111101; r[252] <=16'b 0111011101111110; r[253] <=16'b 0000000000000001; r[254] <=16'b 1111111111111111; r[255] <=16'b 1111111111111111;//暗r[256] <=16'b 1111111111111111;r[259] <=16'b 1111111111111111; r[260] <=16'b 1111111111111111; r[261] <=16'b 1111111111111111; r[262] <=16'b 1111111111111111; r[263] <=16'b 1111111111111111; r[264] <=16'b 1111111111111111; r[265] <=16'b 1111111111111111; r[266] <=16'b 1111111111111111; r[267] <=16'b 1111111111111111; r[268] <=16'b 1111111111111111; r[269] <=16'b 1111111111111111; r[270] <=16'b 1111111111111111; r[271] <=16'b 1111111111111111;//长r[272] <=16'b 1111111011111111; r[273] <=16'b 1111111011111111; r[274] <=16'b 1111111011111111; r[275] <=16'b 1111111011111111; r[276] <=16'b 0000000000000000; r[277] <=16'b 1111101011111101; r[278] <=16'b 1111101001111011; r[279] <=16'b 1111011010110111; r[280] <=16'b 1111011011011111; r[281] <=16'b 1110111011101111; r[282] <=16'b 1101111011110111; r[283] <=16'b 1011111011110011; r[284] <=16'b 1111111011111001;r[287] <=16'b 1111111111111111;//暗r[288] <=16'b 1111111111111111; r[289] <=16'b 1111111111111111; r[290] <=16'b 1111111111111111; r[291] <=16'b 1111111111111111; r[292] <=16'b 1111111111111111; r[293] <=16'b 1111111111111111; r[294] <=16'b 1111111111111111; r[295] <=16'b 1111111111111111; r[296] <=16'b 1111111111111111; r[297] <=16'b 1111111111111111; r[298] <=16'b 1111111111111111; r[299] <=16'b 1111111111111111; r[300] <=16'b 1111111111111111; r[301] <=16'b 1111111111111111; r[302] <=16'b 1111111111111111; r[303] <=16'b 1111111111111111; //郑r[304] <=16'b 1111111011111011; r[305] <=16'b 0111011011111011; r[306] <=16'b 1001011011110111; r[307] <=16'b 1111011011001111; r[308] <=16'b 1110000000111111; r[309] <=16'b 1101011010111111; r[310] <=16'b 0011011011011111; r[311] <=16'b 1111011011100111; r[312] <=16'b 1111011011111111;r[314] <=16'b 1000000000000000; r[315] <=16'b 1011111111101111; r[316] <=16'b 1011100111101111; r[317] <=16'b 1010011011110111; r[318] <=16'b 1001111100001111; r[319] <=16'b 1111111111111111;endalways@(posedge clk)beginif (b==0)b<=19;elseb<=b-1;endalways@(posedge clk3)beginif(cnt==15)begincnt<=0;endelsecnt<=cnt+1;case(cnt)0: con<=16'b0000_0000_0000_0001; 1: con<=16'b0000_0000_0000_0010; 2: con<=16'b0000_0000_0000_0100; 3: con<=16'b0000_0000_0000_1000; 4: con<=16'b0000_0000_0001_0000; 5: con<=16'b0000_0000_0010_0000; 6: con<=16'b0000_0000_0100_0000;7: con<=16'b0000_0000_1000_0000; 8: con<=16'b0000_0001_0000_0000; 9: con<=16'b0000_0010_0000_0000; 10: con<=16'b0000_0100_0000_0000; 11: con<=16'b0000_1000_0000_0000; 12: con<=16'b0001_0000_0000_0000; 13: con<=16'b0010_0000_0000_0000; 14: con<=16'b0100_0000_0000_0000; 15: con<=16'b1000_0000_0000_0000; endcase//行使能begincase(cnt)0: row<=r[b*16+0];1: row<=r[b*16+1];2: row<=r[b*16+2];3: row<=r[b*16+3];4: row<=r[b*16+4];5: row<=r[b*16+5];6: row<=r[b*16+6];7: row<=r[b*16+7];8: row<=r[b*16+8];9: row<=r[b*16+9];10: row<=r[b*16+10];11: row<=r[b*16+11];12: row<=r[b*16+12];13: row<=r[b*16+13];14: row<=r[b*16+14];15: row<=r[b*16+15];endcaseendendendmodule生成模块:四、仿真测试结果1、分频器仿真源文件及波形:2、十进制倒计时器仿真波形:3、译码器显示仿真:4、交通灯控制器仿真结果:5、点阵显示姓名和学号6、顶层仿真波形:五:实习总结与讨论我这次实习最深的是,要有耐心,不要着急,认真编程。