课程设计说明书。
题目:十字路**通灯控制系统
系别:计算机科学与技术。
班级: 计科 2
姓名。指导老师。
同组成员:
目录。1、概述。
设计任务与要求3
2、系统分析。
电路工作原理及设计思路4
3、总体和模块框图。
总体框图6具体模块框图6
4、功能模块设计。
各模块原理及其程序9
5、程序**设计与分析。
程序**12
6、运行**。
7、心得体会。
8、参考文献。
1、概述。在熙熙攘攘的都市中,为了保证城市道路的畅通与行人的安全,交通灯是城市交通监管的重要组成部分。但由于目前很多城市的交通灯实行的是定时控制,在时间和空间方面的应变性能较差,在一定程度上造成了交通资源的浪费,加重了道路交通压力。
而设计周全的交通灯考虑了车流量等因素,有较大的可变性。在一定程度上改变了城市交通的现状,减少交通事故发生的概率。
eda是电子设计自动化(electronic design automation)的缩写,在20世纪60年代中期从计算机辅助设计(cad)、计算机辅助制造(cam)、计算机辅助测试(cat)和计算机辅助工程(cae)的概念发展而来的。
eda技术就是以计算机为工具,设计者在eda软件平台上,用硬件描述语言vhdl完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和**,直至对于特定目标芯片的适配编译、逻辑映射和编程**等工作。eda技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。
设计任务与要求:
1. 设计任务。
设计一个十字路**通控制器,分为手动操作、自动操作和复位系统,假设南北方向和东西方向,两个方向分别设置左拐、绿、黄和红四盏灯,每个方向设置一组倒计时显示器,用以指挥车辆和行人有序的通行。红灯亮表示左转和直行车辆禁行;绿灯亮表示直行车辆可以通行;黄灯亮表示左转或直行车辆即将禁行;左拐灯亮表示左转车辆可以通行;倒计时显示器用来显示允许通行或禁止通行的时间 。
2. 设计要求。
1) 在十字路口南北和东西两个方向各设一组红灯、绿灯、黄灯和左拐灯。显示顺序:绿灯→ 黄灯→ 红灯→ 左拐→ 黄灯→ 红灯。在南北和东西两个方向各设一组倒计时显示器。
2) 自动控制:设置一组数码管,以倒计时的方式显示允许通行或禁止通行的时间,南北方向为主干道,左拐、绿灯、黄灯和红灯显示时间分别是20s、20s、5s和20s。东西方向为次干道,左拐、绿灯、黄灯和红灯显示时间分别为15s、15s、5s和25s。
3) 手动控制:按按钮依次执行以上显示状态,绿灯→ 黄灯→ 红灯→ 左拐→ 黄灯→ 红灯,倒计时显示为“0”。
4) 系统设有总复位开关,可在任意时间内对系统进行复位。
5) 通过开关按钮切换交通灯的工作状态。
2、系统分析。
2.1交通灯工作流程分析
十字路口的交通灯指挥着行人和各种车辆的安全运行。实现红绿灯的自动指挥是城市交通管理自动化的重要课题。在一个具有主、支干道的十字路口,设计一个交通灯自动控制装置,实现如下功能:
1.由主干道和支干道汇合成十字路口,在入口处设置
红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。
2.当主干道与支干道均无车辆要求通行时,主干道应保持畅通,亮绿灯;支干道亮红灯。
3.如果主干道无车,支干道有车,则允许支干道通行,主干道亮红灯,支干道亮绿灯。
4.如果主干道和支干道均有车要求通行,则两者应交替通行,并要求主干道每次通行30秒钟,支干道每次通行20秒钟。
5.每次绿灯变红,黄灯应先亮5秒。
2.2设计思路:
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位数组型的。
2.软件:1)在vhdl设计描述中,采用自顶向下的设计思路,该思路,首先要描述顶层的接口,上面的描述已经规定了交通灯控制的输入输出信号:输入信号:
复位开关信号reset;紧急情况控制信号on_off;外部时钟信号clk。输出信号:led七段显示数码管的选通信号choose4(3 downto 0);led七段显示数码管的输出信号showtime1(6 downto 0),showntime2(6 downto 0),showtime3(6 downto 0),showtome4(6 downto 0);交通灯状态控制信号state1(3 downto 0),state2(3 downto 0)。
2)在自顶向下的vhdl设计描述中,通常把整个设计的系统划分为几个模块,然后采用结构描述方式对整个系统进行描述。根据实验设计的结构功能,来确定使用哪些模块以及这些模块之间的关系。
由于紧急情况控制信号是采用按键的输入方式,其产生时刻和持续时间的长短是随机不定的,且存在因开关簧片**引起的电平抖动现象,因此必须在每个开关后面安排一个消抖和同步化电路模块,以保证系统能捕捉到输入脉冲,故需要有防抖动的模块。
由于外部时钟信号clk的频率为1mhz,而实际需要的内部计时时钟频率为1hz,提供给消抖同步电路的频率为50hz(满足按键)和提供给产生选通信号电路的时钟频率为200hz(满足视觉暂留效应)。
当正常计时开始后,需要进行定时计数操作,由于东西和南北两个方向上的时间显示器是由两个led七段显示数码管组成的,因此需要产生两个2位的计时信息:2个十位信号,2个个位信号,这个定时计数操作可以由一个定时计数器来完成,又因为交通灯的状态变化是在计时为0的情况下才能进行的,因此需要一个计时电路来产生使能信号,因此定时计数的功能就是用来产生2个2位计时信息和使能信号。另外还需要将时间显示出来,为了节省资源,我采用了循环点亮led七段显示数码管的方法来显示计时输出。
通过信号choose4(3 downto 0)来对4个led七段显示数码管进行选择。
由于不能使用7448自动译码集成电路,故在led七段显示数码管显示时间时,要把计时结果转换为七段码输出到相应的led七段显示数码管上,因此还需要一个转换电路。交通灯状态控制也需要一个电路,当有使能信号及无紧急情况下,交通灯状态不发生变化,有紧急情况时,两个方向上均为红灯亮,紧急情况消除后,回到原来状态,无使能信号时,交通灯状态不变。
通过上面的分析,不难得知可以把交通灯控制系统划分为6个模块:键输入模块,时钟分频模块,计时模块,选通模块,显示模块,控制模块。各个模块之间的连接关系如下:
3、总体和模块框图:
总体框图:具体模块框图:
1.时钟分频模块。
系统的动态扫描需要1hz的脉冲,而系统时钟计时模块需要1hz的脉冲。分频模块主要为系统提供所需的时钟计时脉冲。该模块将1khz的脉冲信号进行分频,产生1s的方波,作为系统时钟计时信号。
其实体模块如下:
将end time改为5s
clk采用系统的1khz的时钟脉冲。
2.交通灯控制及计时模块。
控制模块根据外部输入信号和计时模块产生的输出信号,产生系统的状态机,控制其他部分协调工作。计时模块用来设定主干道和支干道计时器的初值,并为扫描显示译码模块提供倒计时时间。
控制及计时模块采用状态机进行设计,可以定义出5种状态,分别为s0:主干道绿灯,支干道红灯且没有车辆行驶;s1:主干道绿灯,支干道红灯或支干道有车辆驶入;s2:
主干道黄灯,支干道红灯;s3:主干道红灯,支干道绿灯;s4:主干道红灯,支干道黄灯。
利用case语句定义状态的转换方式及时间的变换方式,达到主干道绿灯亮45秒,支干道绿灯亮25秒,黄灯亮5秒的设计要求。
其实体模块如下:
car为支干道车辆检测开关。
在支干道有车的情况下,模块可以进行减计时。
clk1s为1s的时钟脉冲。
time1h、time1l、time2h、time2l分别为主干道时钟高位、主干道时钟低位、支干道时钟高位、支干道时钟低位。
led为led灯发光情况,分别为主干道绿灯、主干道黄灯、主干道红灯、支干道绿灯、主干道黄灯、主干道红灯。
count的总的系统时间,用来改变系统的状态。
3.扫描显示译码模块。
扫描显示译码模块可以根据控制信号,驱动交通信号灯以及倒计时数码管的显示,其中数码管的显示采用动态扫描显示。其实体模块如下:
clk为1khz的系统时钟脉冲。
clk1s为1s时钟脉冲。
car为支干道车辆检测开关。
sel为数码管位码扫描。
seg为数码管段码。
time1h、time1l、time2h、time2l为数码管计时的时间,由控制及计时模块为其赋值。
4.顶层文件的编写。
将以上各个单元模块**成功后,再进行顶层文件的编写。将各个单元模块的变量赋值给顶层文件,从而将各个单元模块连接起来,统一调配。得到顶层文件的实体模块:
clk为1khz系统时钟脉冲。
car为支干道车辆行驶情况,高电平为有车行驶,低电平为无车行驶。
led为交通灯发光情况。
sel为数码管位码扫描。
seg为数码管段码。
4、功能模块设计:
各模块的原理及其程序。
1.分频模块设计。
a. 实体:entity clk_10 is
port( clk : in std_logic;
clk_div10 : out std_logic);
end clk_10;
b. 功能:实现十分频。
c. 接口:clk—脉冲输入。
clk-div10—十分频后脉冲输出。
2.计数模块设计。
a. 实体:entity counter is
port( clk0:in std_logic;
con:in std_logic;
reset:in std_logic;
countnum:buffer integer range 0 to 89);
end counter;
b. 功能:实现0到89的计数。
clk0—脉冲输入
con—手动控制信号
reset—复位信号
countnum—计数输出。
3.控制模块设计。
a. 实体:entity controller is
port ( clk1 : in std_logic;
con1 : in std_logic;
con2 : in std_logic;
countnum : in integer range 0 to 89;
numa,numb : out integer range 0 to 25;
ra,ga,ya,ga1 : out std_logic;
rb,gb,yb,gb1: out std_logic);
end controller;
b. 功能:控制发光二极管的亮、灭,以及输出倒计时数值给七段译码管的分位译码电路。
clk1—脉冲信号输入
con1—手动控制信号
con2—状态控制信号
countnum—计数输入。
numa,numb—两个方向的倒计时数值输出
ra,ga,ya,ga1,rb,gb,yb,gb1—发光二极管输出。
4.分位模块设计。
a. 实体:entity fenwei is
port (numin:in integer range 0 to 25;
numa,numb:out integer range 0 to 9 );
end fenwei;
b. 功能:把倒计时的数值分成2个1位的十进制数。
numin:倒计时数值输入
numa,numb—将数值分为2个1位的十进制输出。
5.译码模块设计。
a. 实体:entity display is
port(clk2:in std_logic;
bb: in std_logic_vector(3 downto 0);
ya:out std_logic;
yb:out std_logic;
yc:out std_logic;
yd:out std_logic;
ye:out std_logic;
yf:out std_logic;
yg:out std_logic);
end display;
b. 功能:根据控制电路的控制信号,驱动交通灯的显示,通过输入二进制数值,输出信号点亮二极管。
bb[3..0]--bcd码输入。
clk2—脉冲输入
ya,yb,yc,yd,ye,yf,yg—七段数码管显示输出。
6.顶层模块的设计。
a. 实体:entity dingceng is
port(clkd,resetd,cond,con1d:in std_logic;
EDA课程设计
题目一 数字钟设计 学号1 15 一 实验目的。学习并掌握数字钟的原理 设计方法。二 实验内容。计数始终由模60秒计数器 模60分计数器 模24小时计数器 报时模块 分 时设定模块及输出显示模块构成。可以采用同步计数器或异步计数器设计方法。三 实验要求。计时范围为0小时0分0秒至23小时59分59秒...
eda课程设计
哈尔滨工业大学 威海 信电学院电子信息工程。一 软硬件介绍。1软件部分介绍。1.1 quartus ii 是altera公司的综合性pld fpga开发软件,支持原理图 vhdl veriloghdl以及ahdl altera hardware description language 等多种设计输...
eda课程设计
目录。1 引言 2 1.1 课程设计的目的与任务 2 1.2 课程设计的内容 2 1.3课程设计仪器设备 2 1.4 课程设计的题目 2 1.5 方案的选择 2 2设计方案 3 2.1 设计原理 3 2.2各功能模块的原理及其源程序 3 2.2.1控制模块 3 2.2.2分频模块 4 2.2.3计时...