交通灯控制器设计.docx

上传人:b****6 文档编号:3340939 上传时间:2022-11-21 格式:DOCX 页数:11 大小:829.06KB
下载 相关 举报
交通灯控制器设计.docx_第1页
第1页 / 共11页
交通灯控制器设计.docx_第2页
第2页 / 共11页
交通灯控制器设计.docx_第3页
第3页 / 共11页
交通灯控制器设计.docx_第4页
第4页 / 共11页
交通灯控制器设计.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

交通灯控制器设计.docx

《交通灯控制器设计.docx》由会员分享,可在线阅读,更多相关《交通灯控制器设计.docx(11页珍藏版)》请在冰豆网上搜索。

交通灯控制器设计.docx

交通灯控制器设计

 

交通灯控制器设计

学号:

成绩:

河北联合大学电气工程学院

《综合性课程设计报告

——交通灯控制器设计》

专业:

电子科学与技术

班级:

_11电技班_

姓名:

__张___

指导教师:

__________

2015年1月9日

交通灯控制设计

作者:

张桂明

摘要:

本次课设是目的是通过Verilog_HDL语言对交通灯控制的设计,是同学们熟悉并掌握EDA技术、培养综合应用数字电子技术、EDA设计工具、HDL语言等各领域知识的能力、提高设计能力和实际操作能力。

本课题是利用Verilog_HDL语言自顶而下的设计方法设计交通的控制系统,并通过QuartusⅡ和ModelSim完成综合、仿真,对FPGA芯片进行编译下载。

把程序下载到FPGA芯片后,由于生成的是集成电路,所以故障率低、可靠性高、体积比较小,可应用于实际的交通灯控制系统中,使其实现道路交通的快速正常运转。

随着大规模集成电路的发展、EDA技术随之出现,本课题说明了EDA技术在数字电路设计中的优越性。

关键词:

Verilog_HDLFPGA交通灯控制器硬件描述语言

1、简介

课程设计的目的和内容

用VerilogHDL语言设计实现一个交通灯控制器电路:

十字路口A方向和B方向各设红、黄、绿和左拐四盏灯,两个方向各种灯亮的时间能够进行设置和修改,此外,假设A方向是主干路,车流量大,因此A方向通行的时间应比B方向长;四盏灯按合理的顺序亮灭,并能将灯亮的时间以倒计时的形式显示出来。

每个方向四种灯依次按如下顺序点亮,并不断循环:

绿灯—黄灯—左拐灯—黄灯—红灯,并且每个方向红灯亮的时间应该与另一方向绿、黄、左拐、黄灯亮的时间相等。

黄灯所起的作用是用来在绿灯和左拐灯后进行缓冲。

在本课程设计中,着重培养学生的如下能力:

熟悉EDA技术概况。

培养综合应用数字电子技术、EDA设计工具、HDL语言等各领域知识的能力。

提高设计能力和实际操作能力,使学生能够独立完成具有一定难度的数字电子系统的设计,并锻炼动手实践能力。

Verilog语言简介

VerilogHDL是一种硬件描述语言(HDL:

HardwareDescriptionLanguage),以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。

VerilogHDL和VHDL是世界上最流行的两种硬件描述语言,都是在20世纪80年代中期开发出来的。

前者由GatewayDesignAutomation公司(该公司于1989年被Cadence公司收购)开发。

两种HDL均为IEEE标准。

VerilogHDL的设计流程

1)文本编辑:

用任何文本编辑器都可以进行,也可以用专用的HDL编辑环境。

通常VerilogHDL文件保存为.v文件。

2)功能仿真:

将文件调入HDL仿真软件进行功能仿真,检查逻辑功能是否正确(也叫前仿真,对简单的设计可以跳过这一步,只有在布线完成之后,才进行时序仿真)。

3)逻辑综合:

将源文件调入逻辑综合软件进行综合,即把语言综合成最简的布尔表达式。

逻辑综合软件会生成.edf(EDIF)的EDA工业标准文件。

(最好不用MAX+PLUSII进行综合,因为只支持VHDL/VerilogHDL的子集)

4)布局布线:

将.edf文件调入PLD厂家提供的软件中进行布线,即把设计好的逻辑安放到CPLD/FPGA内。

5)时序仿真:

需要利用在布局布线中获得的精确参数,用仿真软件验证电路的时序也叫后仿真。

2、总体设计

每个方向四种灯依次按如下顺序点亮,并不断循环:

绿灯—黄灯—左拐灯—黄灯—红灯,并且每个方向红灯亮的时间应该与另一方向绿、黄、左拐、黄灯亮的时间相等。

黄灯所起的作用是用来在绿灯和左拐灯后进行缓冲,以提醒行人及驾驶员该方向上要禁行了;信号灯变换次序为:

A主干道每次放行40秒,亮5秒黄灯让行驶中的车辆有时间停到禁行线外,左拐放行15秒,亮5秒黄灯;支干道放行30秒,亮5秒黄灯,左拐放行15秒,亮5秒黄灯......,各计时电路位倒计时显示。

图1设计流程图

根据系统的功能要求,可分为四个部分来实现,分别是定时模块,主控电路,译码驱动电路和扫描显示几部分。

分频部分是把外部提供的1Hz进行分频得到系统工作需要的工作脉冲,显示部分包括两个内容,一个是主干道红绿灯显示,另一个是支干道红绿灯显示。

然后将红绿灯显示时间以BCD码形式显示出来,显示模块将其译码轮流扫描显示4具有四种信号灯的交通灯控制器设计如图2

交通信号灯控制器系统工作流程

(1)主干道放行亮绿灯40秒,支干道红灯显示65秒;

(2)主干道绿灯转黄灯5秒,支干道红灯显示25秒

(3)主干道黄灯转左拐15秒,支干道红灯显示20秒;

(4)主干道左拐转红灯55秒,支干道绿灯显示30秒;

(5)主干道红灯显示25秒,支干道绿灯转黄灯5秒;

(6)主干道红灯显示20秒,支干道黄灯转左拐15秒;

(7)主干道亮红灯5秒,支干道左拐转黄灯5秒;

(8)依次循环跳到主干道,红绿灯重新计时

图2设计电路图

道红绿灯显示;输出部分为七段译码显示和位选码MS,数码管显示的是交通信号灯转换时间。

3、实验方法

仿真平台简介

Mentor公司的ModelSim是业界最优秀的HDL语言仿真软件,它能提供友好的仿真环境,是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器。

它采用直接优化的编译技术、Tcl/Tk技术、和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段,是FPGA/ASIC设计的首选仿真软件。

主要特点:

RTL和门级优化,本地编译结构,编译仿真速度快,跨平台跨版本仿真;单内核VHDL和Verilog混合仿真;源代码模版和助手,项目管理;集成了性能分析、波形比较、代码覆盖、数据流ChaseX、SignalSpy、虚拟对象VirtualObject、Memory窗口、Assertion窗口、源码窗口显示信号值、信号条件断点等众多调试功能;C和Tcl/Tk接口,C调试;对SystemC的直接支持,和HDL任意混合;支持SystemVerilog的设计功能;对系统级描述语言的最全面支持,SystemVerilog,SystemC,PSL;ASICSignoff。

可以单独或同时进行行为(behavioral)、RTL级、和门级(gate-level)的代码。

仿真步骤

1)点开file,选择new,点击project,来创建一个新工程。

2)在弹出的对话框中输入工程名和库名称,这里直接采用默认库work,输入的工程名为“testtraffic”,输入完毕后点击ok完成。

3)在弹出的对话框中选中AddExistingFile按钮,找到文件存储的路径“modelsim”点击ok。

同时两个程序文件处会有两个问号。

4)右键点击空白处,选择其中的Compile选项,会出现一系列的编译方式。

最常用的是前两个,即编译选中文件CompileSelected。

同时两个程序文件处的问号变为对号。

5)选中Simulate,选择第二个startSimulation。

在弹出的对话框中选择work里的testtraffic并且去掉左下角的对号,点击ok。

6)右键点击testtraffic模块,选中Add,然后AddtoWave。

这时会出现一个新窗口:

wave-default。

这里就是观察信号变化的区域,在仿真没有运行时,输出的信号均为空,快捷键中有Run-All按钮进行仿真。

4、仿真步骤

图3仿真结果示意图

如图3所示,我们看出看出主干道红灯亮的时间等于支路绿灯,黄灯,左转灯,黄灯亮的时间之和,同时支路红灯亮的时间等于主干道绿灯,黄灯,左转灯,黄灯亮的时间之和。

本设计中设定A方向红、绿、黄、左拐灯亮的时间分别为55秒、40秒、5秒和15秒,B方向红、绿、黄、左拐灯亮的时间分别为:

65秒、30秒、5秒和15秒,该系统满足我们的设计需求。

5、结论

通过本次课设,是我从一个verilogHDL编程语言的菜鸟逐渐升级为一个感兴趣的初学者.体验到了细心对一个编程者的重要性,和程序的规范性对于程序的重要性在verilog语言中,我们必须注意其与C语言的异同,比如格式和变量定义,还有模块的调用,和时钟信号的应用。

还有,verilogHDL设计语言是一门很好的硬件描述语言,可以直白的描述实际的电路,实际的系统模型,易懂而且易于实现,我觉得在以后多加练习,可以对以后的学习和工作带来莫大的帮助。

通过做熊老师的课程设计培养了学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。

如果说大学的学习就像是在充实自己,那么课设的意义就是让所学的东西充分的发挥出来,我希望大学的制度也可以从大一就开始抓起,这才是对我们学生的一次提升。

在实战中自由发挥,只有困难才能让我们更加强大。

参考文献

1、《CPLD/FPGA应用系统设计与(基础篇)》作者:

亿特科技人民邮电出版社出

版日期:

2005年7月书号:

ISBN7-/

2、林明权.VHDL数字控制系统设计范例(第一版)[M]北京:

电子工业出版社;

3、杨晓慧.电子技术EDA实践教程(第一版)[M],北京:

国防工业出版社;

附录

moduleaa(clk,rst,LAMPA,ledcom,data_out);

output[7:

0]LAMPA,ledcom,data_out;

inputclk,rst;

reg[7:

0]numa,ledcom;

regtempa,i;

reg[3:

0]data_in;

reg[3:

0]counta;

reg[7:

0]ared,ayellow,agreen;

reg[7:

0]LAMPA,data_out;

reg[24:

0]c,k,c1;

regclk1s;

regclk_100;

reg[19:

0]cnt2;

always@(posedgeclk)

begin

if(c==)

begin

c<=0;

clk1s=~clk1s;

end

else

c<=c+1;

end

always@(posedgeclk)

begin

cnt2<=cnt2+1;

if(cnt2==100000)

begin

clk_100=~clk_100;

cnt2<=0;

end

end

always@(posedgeclk1sornegedgerst)//该模块控制东西方向的三种灯

if(!

rst)

LAMPA<=8'b00001001;

else

begin

ayellow<=8'b00000110;

agreen<=8'b00000111;

if(!

tempa)

begin

tempa<=1;

if(counta==0)

begin

numa<=agreen;

LAMPA<=8'b00100001;//南北方向通绿灯亮东西方向红灯亮

counta<=counta+1;

end

if(counta==1)

begin

numa<=ayellow;

LAMPA<=8'b00010001;//南北方向黄灯亮东西方向红灯亮

counta<=counta+1;

end

if(counta==2)

begin

numa<=ayellow;

LAMPA<=8'b00000001;//南北方向黄灯灭东西方向红灯亮

counta<=counta+1;

end

if(counta==3)

begin

numa<=ayellow;

LAMPA<=8'b00010001;//南北方向黄灯亮东西方向红灯亮

counta<=counta+1;

end

if(counta==4)

begin

numa<=agreen;

LAMPA<=8'b00001100;//南北方向红灯亮东西方向绿灯亮

counta<=counta+1;

end

if(counta==5)

begin

numa<=ayellow;

LAMPA<=8'b00001010;//南北方向红灯亮东西方向黄灯亮

counta<=counta+1;

end

if(counta==6)

begin

numa<=ayellow;

LAMPA<=8'b00001000;//南北方向红灯亮东西方向黄灯灭

counta<=counta+1;

end

if(counta==7)

begin

numa<=ayellow;

LAMPA<=8'b00001010;//南北方向红灯亮东西方向黄灯亮

counta<=0;

end

end

else

begin//倒计时模块

if(numa)

begin

if(numa==0)

begin

tempa<=0;

end

else

begin

if(numa[7:

4]==4'b0000)

begin

numa[3:

0]<=4'b1111;

numa[7:

4]<=numa[7:

4]-

4'b0001;

end

else

numa[3:

0]<=numa[3:

0]-

4'b0001;

end

end

end

end

//////////////////////////////////////////////////////////////////////

always@(posedgeclk_100ornegedgerst)

if(!

rst)

begin

i<=0;

ledcom<=8'b;

data_out<=8'b;

end

else

begin

ledcom<=~(1<

if(i==0)

begin

data_in<=numa[7:

4];

i<=i+1'b1;

end

else

if(i==1)

begin

data_in<=numa[3:

0];

i<=1'b0;

end

case(data_in)

4'b0000:

data_out<=8'b;

//0

4'b0001:

data_out<=8'b;

//1

4'b0010:

data_out<=8'b;

//2

4'b0011:

data_out<=8'b;

//3

4'b0100:

data_out<=8'b;

//4

4'b0101:

data_out<=8'b;

//5

4'b0110:

data_out<=8'b;

//6

4'b0111:

data_out<=8'b;

//7

4'b1000:

data_out<=8'b;

//8

4'b1001:

data_out<=8'b;

//9

//4'b1111:

data_out<=8'b;

default:

data_out<=8'b;

endcase

end

endmodule

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1