HDL课程设计交通灯控制电路设计精品Word下载.docx

上传人:b****8 文档编号:22132603 上传时间:2023-02-02 格式:DOCX 页数:18 大小:470.62KB
下载 相关 举报
HDL课程设计交通灯控制电路设计精品Word下载.docx_第1页
第1页 / 共18页
HDL课程设计交通灯控制电路设计精品Word下载.docx_第2页
第2页 / 共18页
HDL课程设计交通灯控制电路设计精品Word下载.docx_第3页
第3页 / 共18页
HDL课程设计交通灯控制电路设计精品Word下载.docx_第4页
第4页 / 共18页
HDL课程设计交通灯控制电路设计精品Word下载.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

HDL课程设计交通灯控制电路设计精品Word下载.docx

《HDL课程设计交通灯控制电路设计精品Word下载.docx》由会员分享,可在线阅读,更多相关《HDL课程设计交通灯控制电路设计精品Word下载.docx(18页珍藏版)》请在冰豆网上搜索。

HDL课程设计交通灯控制电路设计精品Word下载.docx

系统设计

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

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

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

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

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

(选作)

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

方案一:

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

红17s黄3s

东西方向:

绿20s

南北方向:

方案二:

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

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

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

红17s红黄3s

分析:

红灯在黄灯闪烁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)

=20;

ge<

=count%10;

shi<

=count/10;

if(flash==0)

beginred1<

=1;

green1<

red2<

green2<

flash<

end

elsebeginred1<

end

end

else

if(N==0)

begin

=count-1;

ge<

//黄灯闪烁程序

if((count<

=3)&

&

(flash==0)&

(count>

0))yellow1<

=~yellow1;

(flash==1)&

0))yellow2<

=~yellow2;

2、数码管显示的编程:

always@(num)

case(num)

0:

duan=8'

b1100_0000;

1:

b1111_1001;

2:

b1010_0100;

3:

b1011_0000;

4:

b1001_1001;

5:

b1001_0010;

6:

b1000_0010;

7:

b1111_1000;

8:

b1000_0000;

9:

b1001_0000;

default:

duan=8'

endcase

结果与讨论

一、调试过程:

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;

0]wei;

regclk1,clk2;

reg[24:

0]count_clk1;

reg[13:

0]count_clk2;

always@(posedgeclk)

if(count_clk1<

12500000)

count_clk1<

=count_clk1+1;

clk1<

=~clk1;

if(count_clk2<

12500)

count_clk2<

=count_clk2+1;

clk2<

=~clk2;

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

if(N==0)//计数

always@(posedgeclk2)

wei<

=4'

b0000;

elseif(M==1'

b1)

M<

=1'

b0;

=M+1'

b1;

case(M)

1'

b0:

beginwei<

b0111;

num<

=shi;

b1:

b1011;

=ge;

wei<

case(num)

endmodule

实验图:

引脚配置:

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

当前位置:首页 > 经管营销 > 财务管理

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

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