交通信号控制器的VHDL的设计说明.docx

上传人:b****6 文档编号:12733392 上传时间:2023-06-07 格式:DOCX 页数:14 大小:224.60KB
下载 相关 举报
交通信号控制器的VHDL的设计说明.docx_第1页
第1页 / 共14页
交通信号控制器的VHDL的设计说明.docx_第2页
第2页 / 共14页
交通信号控制器的VHDL的设计说明.docx_第3页
第3页 / 共14页
交通信号控制器的VHDL的设计说明.docx_第4页
第4页 / 共14页
交通信号控制器的VHDL的设计说明.docx_第5页
第5页 / 共14页
交通信号控制器的VHDL的设计说明.docx_第6页
第6页 / 共14页
交通信号控制器的VHDL的设计说明.docx_第7页
第7页 / 共14页
交通信号控制器的VHDL的设计说明.docx_第8页
第8页 / 共14页
交通信号控制器的VHDL的设计说明.docx_第9页
第9页 / 共14页
交通信号控制器的VHDL的设计说明.docx_第10页
第10页 / 共14页
交通信号控制器的VHDL的设计说明.docx_第11页
第11页 / 共14页
交通信号控制器的VHDL的设计说明.docx_第12页
第12页 / 共14页
交通信号控制器的VHDL的设计说明.docx_第13页
第13页 / 共14页
交通信号控制器的VHDL的设计说明.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

交通信号控制器的VHDL的设计说明.docx

《交通信号控制器的VHDL的设计说明.docx》由会员分享,可在线阅读,更多相关《交通信号控制器的VHDL的设计说明.docx(14页珍藏版)》请在冰点文库上搜索。

交通信号控制器的VHDL的设计说明.docx

交通信号控制器的VHDL的设计说明

EDA课程设计报告

交通信号控制器的VHDL设计

 

班级:

2009级通信工程一班

姓名:

陈洁

学号:

2009550606

指导老师:

刘奇能

 

交通信号控制器的VHDL的设计

一、设计任务

模拟十字路口交通信号灯的工作过程,利用实验板上的两组红、黄、绿LED作为交通信号灯,设计一个交通信号灯控制器。

能达到的要求:

(1)交通灯从绿变红时,有4秒黄灯亮的间隔时间;

(2)交通灯红变绿是直接进行的,没有间隔时间;

(3)主干道上的绿灯时间为40秒,支干道的绿灯时间为20秒;

(4)在任意时间,显示每个状态到该状态结束所需的时间。

支干道

主干道

 

图1路口交通管理示意图

A

B

C

D

主干道交通灯

绿(40秒)

黄(4秒)

红(20秒)

红(4秒)

支干道交通灯

绿

表1交通信号灯的4种状态

 

二、设计原理

1、设计目的:

学习DEA开发软件和Quartus

的使用方法,熟悉可编程逻辑器件的使用。

通过制作来了解交通灯控制系统,交通灯控制系统主要是实现城市十字交叉路口红绿灯的控制

2、设计说明

(1)第一模块:

clk时钟秒脉冲发生电路

在红绿灯交通信号系统中,大多数情况是通过自动控制的方式指挥交通的。

因此为了避免意外事件的发生,电路必须给一个稳定的时钟(clock)才能让系统正常运作。

模块说明:

系统输入信号:

Clk:

由外接信号发生器提供256的时钟信号;

系统输出信号:

full:

产生每秒一个脉冲的信号;

(2)第二模块:

计数秒数选择电路

计数电路最主要的功能就是记数负责显示倒数的计数值,对下一个模块提供状态转换信号。

模块说明:

系统输入:

full:

接收由clk电路的提供的1hz的时钟脉冲信号;

系统输出信号:

tai:

产生显示电路状态转换信号

gw:

倒计数值秒数个位变化控制信号

sw:

倒计数值秒数十位变化控制信号

sgw:

次倒计数值秒数个位变化控制信号;

ssw:

次倒计数值秒数十位变化控制信号;

 

(3)第三模块:

红绿灯状态转换电路

本电路负责红绿灯的转换。

模块说明:

系统输入信号:

full:

接收由clk电路的提供的1hz的时钟脉冲信号;

tai:

接收计数秒数选择电路状态转换信号;

系统输出信号:

zhuangtai:

负责红绿灯的状态显示。

(4)第四模块:

时间显示电路

本电路负责红绿灯的计数时间的显示。

模块说明:

系统输入信号:

gw:

倒计数值秒数个位变化控制信号;

sw:

倒计数值秒数十位变化控制信号;

sgw:

次倒计数值秒数个位变化控制信号;

ssw:

次倒计数值秒数十位变化控制信号;

系统输出信号:

led7gw:

负责主红绿灯的显示秒数个位。

led7sw:

负责主红绿灯的显示秒数十位。

sled7gw:

负责支干红绿灯的显示秒数个位。

sled7sw:

负责支干红绿灯的显示秒数十位。

 

三、设计方案

时间显示数据输出

 

红黄绿灯信号输出

 

图2交通信号灯控制器的原理框图

 

采用VHDL语言输入的方式实现交通信号灯控制器

CLK

时间显示数据输出

信号灯输出

图3交通信号灯控制器程序原理框图

该程序由7个进程组成,进程P1和P2将CLK信号分频后产生1秒信号,进程P3、P4、P5构成两个带有预置数功能的十进制计数器,其中P4产生允许十位计数器计数的控制信号。

进程P6实现状态转换和产生状态转换的控制信号,进程P7产生次态信号和信号灯输出信号,以及每一个状态的时间值。

四、VHDL程序:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYchenjieIS

PORT(clk:

instd_logic;

led7gw:

outstd_logic_vector(6downto0);

led7sw:

outstd_logic_vector(6downto0);

sled7gw:

outstd_logic_vector(6downto0);

sled7sw:

outstd_logic_vector(6downto0);

zhuangtai:

outstd_logic_vector(5downto0));

END;

ARCHITECTUREoneOFchenjieIS

TYPEtaiIS(s0,s1,s2,s3);

SIgnalxiantai,citai:

tai;

SIGNALgw:

STD_LOGIC_VECTOR(6DOWNTO0);

SIGNALsw:

STD_LOGIC_VECTOR(1DOWNTO0);

SIGNALsgw:

STD_LOGIC_VECTOR(6DOWNTO0);

SIGNALssw:

STD_LOGIC_VECTOR(2DOWNTO0);

SIGNALtm:

STD_LOGIC_VECTOR(6DOWNTO0);

SIGNALts:

STD_LOGIC_VECTOR(6DOWNTO0);

SIGNALTIME:

STD_LOGIC_VECTOR(6DOWNTO0);

BEGIN

PROCESS(clk)

BEGIN

IFclk'EVENTANDclk='1'THEN

IFTIME<"1000011"THEN

TIME<=TIME+1;

ELSeTIME<="0000000";

ENDIF;

ENDIF;

ENDPROCESS;

REG:

process(clk,xiantai)

BEGIN

IFclk='1'ANDclk'EVENTTHEN

xiantai<=citai;

ENDIF;

ENDprocess;

COM:

process(xiantai,time)

begin

casexiantaiis

whens0=>zhuangtai<="001100";tm<=39-time;ts<=43-time;

iftime=39thencitai<=s1;

elsecitai<=s0;

endif;

whens1=>zhuangtai<="010100";tm<=43-time;ts<=43-time;

iftime=43thencitai<=s2;

elsecitai<=s1;

endif;

whens2=>zhuangtai<="100010";tm<=67-time;ts<=63-time;

iftime=63thencitai<=s3;

elsecitai<=s2;

endif;

whens3=>zhuangtai<="100001";tm<=67-time;ts<=67-time;

iftime=67thencitai<=s0;

elsecitai<=s3;

endif;

endcase;

endprocess;

PROCESS(tm)

BEGIN

IFtm>=30THENsw<="11";gw<=tm-30;

ELSIFtm>=20THENsw<="10";gw<=tm-20;

ELSIFtm>=10THENsw<="01";gw<=tm-10;

ELSEsw<="00";gw<=tm;

ENDIF;

ENDPROCESS;

PROCESS(ts)

BEGIN

IFts>=40THENssw<="100";sgw<=ts-40;

ELSIFts>=30THENssw<="011";sgw<=ts-30;

ELSIFts>=20THENssw<="010";sgw<=ts-20;

ELSIFts>=10THENssw<="001";sgw<=ts-10;

ELSEssw<="000";sgw<=ts;

ENDIF;

ENDPROCESS;

process(sw,gw)

begin

caseswis

when"00"=>led7sw<="0111111";

when"01"=>led7sw<="0000110";

when"10"=>led7sw<="1011011";

when"11"=>led7sw<="1001111";

whenothers=>null;

endcase;

casegwis

when"0000000"=>led7gw<="0111111";

when"0000001"=>led7gw<="0000110";

when"0000010"=>led7gw<="1011011";

when"0000011"=>led7gw<="1001111";

when"0000100"=>led7gw<="1100110";

when"0000101"=>led7gw<="1101101";

when"0000110"=>led7gw<="1111101";

when"0000111"=>led7gw<="0000111";

when"0001000"=>led7gw<="1111111";

when"0001001"=>led7gw<="1101111";

whenothers=>null;

endcase;

endprocess;

process(ssw,sgw)

begin

casesswis

when"000"=>sled7sw<="0111111";

when"001"=>sled7sw<="0000110";

when"010"=>sled7sw<="1011011";

when"011"=>sled7sw<="1001111";

when"100"=>sled7sw<="1001111";

whenothers=>null;

endcase;

casesgwis

when"0000000"=>sled7gw<="0111111";

when"0000001"=>sled7gw<="0000110";

when"0000010"=>sled7gw<="1011011";

when"0000011"=>sled7gw<="1001111";

when"0000100"=>sled7gw<="1100110";

when"0000101"=>sled7gw<="1101101";

when"0000110"=>sled7gw<="1111101";

when"0000111"=>sled7gw<="0000111";

when"0001000"=>sled7gw<="1111111";

when"0001001"=>sled7gw<="1101111";

whenothers=>null;

endcase;

endprocess;

end;

 

五、仿真结果(如下图)

未修改的程序

程序修改后图A

B

C

D

E

 

六引脚设置

选择的引脚锁定方法如下图所示。

将未使用的管脚设置为三态输入

 

七、实验心得体会

通过这次课程设计,我进一步加深了对电子设计自动化的了解。

并进一步熟练了对QuartusII软件的操作。

在编写程序的过程中,遇到了很多问题,使我发现自己以前学习上存在的不足。

通过与同学探讨,终于把问题都解决了,并加深了对交通灯原理和设计思路的了解。

同时也掌握了做课程设计的一般流程,为以后的设计积累了一定的经验。

做课程设计时,先查阅相关知识,把原理吃透,确定一个大的设计方向,在按照这个方向分模块的把要实现的功能用流程图的形式展示。

最后参照每个模块把输入和输出引脚设定,运用我们所学的VHDL语言进行编程。

总之,通过这次的设计,进一步了解了EDA技术,收获很大,对软件编程、排错调试、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。

课程设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。

在前几次的模电、数电、单片机课程设计中,我就有了相当丰富的收获和体会,所以对于这次EDA的课程设计我也是相当重视。

下面我对整个毕业设计的过程做一下简单的心得:

在接到题目后要进行的是选题工作,在本次设计可选的4个题目中,我经过反复比较,结合自己的兴趣、对知识掌握的侧重方面、以及感觉设计的实用性,选择了这次设计的交通灯设计。

开始我在网上查到了部分资料,于是参照资料,得到了一个简单易懂的实验程序。

在程序测试通过后,就进入了实验室进行与实验箱的连接,本次试验与以往不容的是不需要焊接电路板,所以工作量少了很多,由于已经有很久没有接触过实验箱了,所以再次对实验箱各种模式接口进行了研究,在研究过程中,发现曾经在做EDA实验时很多没有弄懂的地方都清晰了,理解了各种接口的对应关系,以及改变接口会得到怎样不同的效果。

下载程序到实验箱后,结果顺利,系统正常运行,得到了理想的效果,各对应灯和秒数都能正确现实。

但老师检查后,说这个程序写得不好。

于是我在接下来的时间里,重新省察了这篇程序。

我发现了这个程序有一个重大的错误。

根本没有实现所谓的主干道和支干道亮灯规律,于是,我参照旧实验程序,在自己的理解下,重新写了实验程序,在写程序的过程中,我拿起书本,复习了曾经学习过的知识。

在写实验程序的过程中,我觉得自己提高很多,能够分析程序实现需要的模块,一步一步的学习,一步一步的完善自己写的程序,等到在软件上运行,又改出了许多错误,这才是真正的学习啊,我体会到。

平时学习觉得很难领悟,现在可以在解决问题的过程中清晰的知道各个进程实现的功能。

还要做到心思缜密,不容出错。

在波形仿真的过程中,我仔细比对各个状态跳变是否和程序一致,这也检测出了几个错误,比如程序中数码管显示程序错误,导致波形不正常。

通过本次设计实验,我收获颇多,不仅仅是对专业知识有了又一次的回顾和温习,动手能力得到提高,更重要的是学会了怎样去发现问题和处理问题,怎样在挫折中使自己冷静思考,既要从根本和基础去查找,也要敢于怀疑是仪器出了问题。

在实验中,很多以前对VHDL语言不懂的地方都得到了清晰,特别是对实验箱模式和接口得到了彻底理解。

很感激老师的严格要求,提醒我重新学习写出程序,运行出正确的结果,让我知道了探索学习,精益求精。

通过这次课程设计,我感受到了通过知识设计和制造成果的兴奋,在不断的失败和改进中,感受到了对科学研究所需的不懈毅力和得到结果成就感。

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

当前位置:首页 > 初中教育 > 学科竞赛

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

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