HDL 课程设计交通灯控制电路设计.docx

上传人:b****6 文档编号:7244044 上传时间:2023-05-11 格式:DOCX 页数:15 大小:470.74KB
下载 相关 举报
HDL 课程设计交通灯控制电路设计.docx_第1页
第1页 / 共15页
HDL 课程设计交通灯控制电路设计.docx_第2页
第2页 / 共15页
HDL 课程设计交通灯控制电路设计.docx_第3页
第3页 / 共15页
HDL 课程设计交通灯控制电路设计.docx_第4页
第4页 / 共15页
HDL 课程设计交通灯控制电路设计.docx_第5页
第5页 / 共15页
HDL 课程设计交通灯控制电路设计.docx_第6页
第6页 / 共15页
HDL 课程设计交通灯控制电路设计.docx_第7页
第7页 / 共15页
HDL 课程设计交通灯控制电路设计.docx_第8页
第8页 / 共15页
HDL 课程设计交通灯控制电路设计.docx_第9页
第9页 / 共15页
HDL 课程设计交通灯控制电路设计.docx_第10页
第10页 / 共15页
HDL 课程设计交通灯控制电路设计.docx_第11页
第11页 / 共15页
HDL 课程设计交通灯控制电路设计.docx_第12页
第12页 / 共15页
HDL 课程设计交通灯控制电路设计.docx_第13页
第13页 / 共15页
HDL 课程设计交通灯控制电路设计.docx_第14页
第14页 / 共15页
HDL 课程设计交通灯控制电路设计.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

HDL 课程设计交通灯控制电路设计.docx

《HDL 课程设计交通灯控制电路设计.docx》由会员分享,可在线阅读,更多相关《HDL 课程设计交通灯控制电路设计.docx(15页珍藏版)》请在冰点文库上搜索。

HDL 课程设计交通灯控制电路设计.docx

HDL课程设计交通灯控制电路设计

河海大学计算机与信息学院(常州)

课程设计报告

 

题目交通灯控制电路设计

专业、学号电信10626102

授课班号278605

学生姓名

指导教师奚吉

完成时间2012/9/3

 

摘要

本次课程设计通过HDL技术设计交通灯控制系统,其设计描述可被不同的工具所支持,可用不同器件来实现。

同学们在理论学习的基础上,通过完成一个涉及时序逻辑、组合逻辑、声光输出的,具有实用性、趣味性的小系统设计,使学生不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对分析、解决实际的数字电路问题进一步加深认识,为今后能够独立进行某些数字应用系统的开发设计工作打下一定的基础。

利用VerilogHDL语言自顶向下的设计方法设计交通灯控制系统,使其实现道路交通的快速正常运转,突出了其作为硬件描述语言的良好的可读性、可移植性和易理解等优点,并通过QuartusII和ModelSim完成综合、仿真。

此程序下载到FPGA芯片后,可应用于实际的交通灯控制系统中。

通常的设计方法基于中、小规模集成电路进行,电路元件多、接线复杂、故障率高。

随着大规模集成电路的发展、EDA技术的出现,数字电路的设计进入了一个崭新阶段。

首先是利用ModelSim编写程序,再将程序输入QuartusII进行进一步的仿真,问题最大之处就是编写的是否正确,是否能出现分析中的仿真。

本论文介绍了用VerilogHDL语言设计交通灯控制器的方法,并在QuartusII系统对FPGA芯片进行编译下载,由于生成的是集成化的数字电路,没有传统设计中的接线问题,所以故障率低、可靠性高,而且体积非常小。

根据提示更改程序,查找资料及其询问得到更改。

使得仿真图与分析图一致,达到理想状态,进行实验箱连接。

【关键词】VerilogHDL硬件描述语言交通灯控制器

 

ABSTRACT

ThiscourseisdesignedbyHDLdesignoftrafficlightcontrolsystem,itsdesigndescriptioncanbesupportedbydifferenttools,implementedbydifferentdevices.Studentsbasedontheorystudy,bycompletingoneinvolvingsequentiallogic,combinationallogic,anoutput,practical,funlittlesystemdesign,sothatthestudentscannotonlytotheclassroomtheoreticalknowledgeandpracticalapplicationofcombined,butalsototheanalysis,solvepracticaldigitalcircuitproblemfurtherunderstanding,forthefuturecanbeindependentofcertaindigitalapplicationsystemdesignworkandlayafoundation.

UsingVeriloglanguageHDLtop-downdesignmethodtodesignthetrafficlightcontrolsystem,makeitsmaketrafficfastrunning,prominentasahardwaredescriptionlanguagegoodreadability,portabilityandeasytounderstandandotheradvantages,andthroughQuartusIIandModelSimcompletedacomprehensive,simulation.ThisprogramisdownloadedtoFPGAchip,canbeappliedtothepracticaltrafficlightscontrolsystem.Theusualdesignmethodbasedonthemedium,smallscaleintegratedcircuit,circuitelement,complexwiring,highfailurerate.Withthedevelopmentoflarge-scaleintegratedcircuits,theappearanceofEDAtechnology,digitalcircuitdesignhasenteredanewstage.ThefirstistheuseofModelSimprogramming,theprograminputQuartusIIforfurthersimulation,thebiggestquestioniswritteniscorrect,whethercanappearintheanalysisofsimulation.

ThispaperintroducestheuseofVeriloglanguageHDLdesignoftrafficlightscontrollermethod,andintheQuartusIIsystemonFPGAchipcompilerdownload,duetothegenerationofintegrateddigitalcircuit,withoutthetraditionaldesignofthewiringproblems,solowfailurerate,highreliability,andthevolumeisverysmall.Accordingtosuggesttochangetheprogram,tofindinformationandaskedtogetchange.Thesimulationandanalysisofconsensus,reachedtheidealstate,experimentboxconnection.

【Keywords】VerilogHardwareDescriptionLanguagehardwaredescriptionlanguagetrafficlightcontroller

系统设计

一、交通灯控制电路设计目标要求:

(1)设计一个十字路口的交通灯控制电路,每条路配有红、黄、绿交通信号灯,通过电路对十字路口的两组交通灯的状态实现自动循环控制;

(2)实现东西车道和南北车道上的车辆交替运行,每次通行时间为20秒;

(3)要求黄灯亮3秒后,红灯才能转为绿灯,黄灯亮时要每秒闪亮一次;

(4)东西车道和南北车道每次通行的时间不同且可调;(选作)

 

二、方案的对比分析与确定:

方案一:

要将南北方向的红灯的计时设为17,黄灯为3,两者之和为东西方向的绿灯亮的时间相同;

红17s黄3s

东西方向:

绿20s

南北方向:

 

方案二:

红绿时间相同,均为20秒,在红灯的最后3秒加入黄灯闪烁。

相比之下,后者的程序较简单,不用过多注意时间的变化。

倒数20秒的最后3秒总有一方的黄灯要闪烁,并且两方交替进行。

红17s红黄3s

东西方向:

绿20s

南北方向:

 

分析:

红灯在黄灯闪烁3秒后才转变成绿灯,起先的思路是红灯亮17秒之后有黄灯闪烁3秒后转成绿灯,为了是程序较简单,在设计时改成了红灯亮了20秒,且最后3秒黄灯也闪烁,之后黄灯不亮,红灯转绿灯。

即采用这思路实现设计要求。

 

三、电路方框图及说明:

交通灯控制器的系统框图如图1.1所示

东西方向EW南北方向NS

GYRGYR

系统控制电路

≥20s

图1.1交通灯控制器系统框图

工作原理如下:

图中设南北方向的红、黄、绿灯分别为NSR、NSY、NSG东西方向的红、黄、绿灯分别为EWK、EWY、EWG。

东西为红至17秒时,南北为绿17秒;东西为黄3秒时,南北仍为绿;东西为绿20秒时,南北为先红17秒时黄灯闪3秒,红灯也还继续发亮。

南北、东西方向红、黄、绿时间分别为20秒、3秒、20秒,一次循环40秒。

4、电路设计:

将设计要求按找条件,分成多个模块,分别对齐进行程序编写。

1、倒计时模块:

always@(posedgeclk1ornegedgereset)//clk1用于倒计时

begin

if(!

reset)

count<=0;

else

begin

N<=N+1;

if(count==0)

begin

count<=20;ge<=count%10;shi<=count/10;

if(flash==0)

beginred1<=1;green1<=0;red2<=0;green2<=1;flash<=1;

end

elsebeginred1<=0;green1<=1;red2<=1;green2<=0;flash<=0;

end

end

else

if(N==0)

begin

count<=count-1;

ge<=count%10;shi<=count/10;

end

//黄灯闪烁程序

if((count<=3)&&(flash==0)&&(count>0))yellow1<=~yellow1;

if((count<=3)&&(flash==1)&&(count>0))yellow2<=~yellow2;

end

end

 

2、数码管显示的编程:

always@(num)

begin

case(num)

0:

duan=8'b1100_0000;

1:

duan=8'b1111_1001;

2:

duan=8'b1010_0100;

3:

duan=8'b1011_0000;

4:

duan=8'b1001_1001;

5:

duan=8'b1001_0010;

6:

duan=8'b1000_0010;

7:

duan=8'b1111_1000;

8:

duan=8'b1000_0000;

9:

duan=8'b1001_0000;

default:

duan=8'b1000_0000;

endcase

end

 

 

结果与讨论

一、调试过程:

1、建立工程:

运行QuatrusII软件,建立工程,File→NewProjectWizad。

点击NewProjectWizard后弹出指定工程名的对话框,在Diectory,Name,Top-LevelEntity并填写,按Next按钮,出现添加工程文件的对话框,直接按Next进行下一步,选择FPGA器件的型号,在Family下拉框中,我们选择Cyclone系列FPGA,然后在“Availabledevices:

”中根据核心板的FPGA型号选择FPGA型号,注意在Filters一栏选上“ShowAdvancedDevices”以显示所有的器件型号。

一直按Next进行,最后按Finish按钮即建立一个空项目。

2、建立文本文件:

选File→New,选择VerilogHDLFile,并输入程序,并保存。

3、分配管脚:

为芯片分配管脚可以用QuartusII软件里的“Assignments→Pins”菜单,也可以用tcl脚本文件。

本文介绍用tcl的方法。

在工程目录下建立一个name为Setup.tcl的file。

File→New,选择otherfiles页面:

有关tcl文件的更详尽内容可参考QuartusII的帮助文档。

在实际项目中,

该文件也可以根据具体管脚分配要求来改写。

对应核心板,设计管脚,保存到工程目录下,并注意在保存对话框选上“Addfiletocurrentproject”选项。

然后打开Tools->TclScripts,选中刚才编辑的Script文件:

Setup,并点击Run。

4、编译:

按主工具栏上的编译按钮即开始编译,QuartusII下面的Message窗口会显示一些编译信息。

5、仿真:

建立波形仿真文件。

File→New,选择otherfiles页面。

在波形图的右处空白处点击鼠标右键,选择InsertNodeorBus,插入管脚。

在弹出的对话框中,选择NodeFinder(如图5.11所示)。

在NodeFinder中,先点击list,出现要仿真的管脚,然后点击〉〉,将所有管脚选到右框内,点击ok。

以下是该程序仿真图:

 

二、出现的现象及问题:

程序中的一个单词不同则会出现分析无法通过,显示出错误;又是编译正常,可是却无法连接到实验装置,导致无试验结果;有时也可能文件中缺少sof类型文件,最终也没有结果;在QuartusII软件上进行仿真时,发现不能得到预期的效果,分析得知由于分频过大的原因,软件仿真得不到预期结果。

 

三、解决方案:

在输入程序时只能多多谨慎,检查用词是否一致,begin是否有对应的end,module是否有endmodule,这样可减少错误的发生。

无法连接到实验装置可能有多方面,一:

插头没有正确插入;二:

装置本身就是有问题的,应换实验装置;三:

电脑中没有与实验装置一致的下载装置接头。

实验室应该多多加强设备的完整,定时检查器备的运行是否正常,更改完善设备,保证实验中减少不必要的检查器件正常的过程;四:

省去时钟信号的分频操作,但是在硬件验证过程中加入分频操作,可以解决。

对于Verilog语言的编程方面,特别在对变量给予初值时,完全不同于C语言编程,我们在对许多变量进行了初值设置,此后编译每每都不通过,在认真思考后,查阅了课本,发现在HDL编程中,不能对变量初值。

我们恍然大悟,在以后的编程中我们牢记住了这一点。

 

心得体会

通过本实验再一次的体验到了细心对一个编程者的重要性,和程序的规范性对于程序的重要性,这些平时我们忽略的问题,其实有时候关乎着我们编程的成功率;再者,在verilog语言中,我们必须注意其与C语言的异同,比如格式和变量定义,还有模块的调用,和时钟信号的应用。

在刚开始的倒计时时,感想就是假使用JAVA或C语言可能会较容易。

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

这次刚开学就分配的实验课程设计就是对我们的一次考核,也可以说是一次考验,在平时做题目比较简单,这次课程设计综合考核了我们对上一学期的学习结果。

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

然而从理论到实践,我在做课程设计的几天里,使我对有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的实际操作才能更好地学习它,但是学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在本上所没有学到过的知识。

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

在设计过程中遇到问题,可以说得是困难重重,遇到了各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知解得不够深刻,掌握得不够牢固,在边编学程序的过程中我几乎是重新复习课本上的知识,但这还是没能让我完成这次课程设计,通过询问同学、到网上查询资料慢慢的完善这次做业才勉强完成。

对这次实验总的评价就是自己知道了QuartusII和ModelSim的好处,虽然有些地方还是不方便,也没有真正的理解清楚,但是它们的基本使用还是掌握了。

在本次设计中,或多或少有课一些进步,唯一遗憾的是没有请教老师,把不会的好好弄清楚。

同时也深深体会了团队精神的重要,队友之间的相互帮助和鼓励在工作中是十分重要的。

 

参考文献

1、《VerilogHDL数字设计教程》作者:

贺敬凯西安电子科技大学出版社

出版日期:

2010年4月

2、《FPGA设计及应用(第二版)》作者:

褚振勇齐亮田红心高楷娟

西安电子科技大学出版社出版日期:

2006年12月

 

3、《基于CPLD/FPGA的数字通信系统建模与设计》作者:

段吉海黄智伟

电子工业出版社出版日期:

2004年8月

 

附录

设计程序:

moduletraffic_light(clk,clk1,clk2,reset,red1,yellow1,green1,red2,yellow2,green2,duan,wei,N);

inputreset,clk;

outputred1=0,yellow1=0,green1=0,red2=0,yellow2=0,green2=0,duan,wei,clk1,clk2,N;

reg[4:

0]count=0;

reg[3:

0]num;

reg[5:

0]shi,ge;

regM,N,flash;

regred1,yellow1,green1,red2,yellow2,green2;

reg[7:

0]duan;

reg[3:

0]wei;

regclk1,clk2;

reg[24:

0]count_clk1;

reg[13:

0]count_clk2;

always@(posedgeclk)

begin

if(count_clk1<12500000)

count_clk1<=count_clk1+1;

else

begin

count_clk1<=0;

clk1<=~clk1;

end

end

always@(posedgeclk)

if(count_clk2<12500)

count_clk2<=count_clk2+1;

else

begin

count_clk2<=0;

clk2<=~clk2;

end

always@(posedgeclk1ornegedgereset)//clk1用于倒计时

begin

if(!

reset)

count<=0;

else

begin

N<=N+1;

if(count==0)

begin

count<=20;ge<=count%10;shi<=count/10;

if(flash==0)//闪烁程序

beginred1<=1;green1<=0;red2<=0;green2<=1;flash<=1;

end

elsebeginred1<=0;green1<=1;red2<=1;green2<=0;flash<=0;

end

end

else

if(N==0)//计数

begin

count<=count-1;

ge<=count%10;shi<=count/10;

end

if((count<=3)&&(flash==0)&&(count>0))yellow1<=~yellow1;

if((count<=3)&&(flash==1)&&(count>0))yellow2<=~yellow2;

end

end

always@(posedgeclk2)

begin

if(!

reset)

wei<=4'b0000;

elseif(M==1'b1)

M<=1'b0;

else

M<=M+1'b1;

case(M)

1'b0:

beginwei<=4'b0111;num<=shi;end

1'b1:

beginwei<=4'b1011;num<=ge;end

default:

wei<=4'b0000;

endcase

end

always@(num)

begin

case(num)

0:

duan=8'b1100_0000;

1:

duan=8'b1111_1001;

2:

duan=8'b1010_0100;

3:

duan=8'b1011_0000;

4:

duan=8'b1001_1001;

5:

duan=8'b1001_0010;

6:

duan=8'b1000_0010;

7:

duan=8'b1111_1000;

8:

duan=8'b1000_0000;

9:

duan=8'b1001_0000;

default:

duan=8'b1000_0000;

endcase

end

endmodule

 

实验图:

 

引脚配置:

 

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2