- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
EDA交通灯课程设计实验报告汇
EDA交通灯课程设计
实验报告
学院:通信与信息工程学院
专业:电子信息工程
班级:0120902
目 录
交通灯控制系统的设计 1
1.设计要求 1
1.1 实现基本要求及扩展 1
1.2 附加要求 1
2 设计思路 1
3 状态机变化图 2
3.1 状态机变化图 2
4 设计步骤及程序 3
4.1 主体程序代码 3
4.2 分频程序代码 5
4.3 计数器程序代码 6
4.4 二选一数据选择器程序代码 7
when others= seg=b;dig 8
end case; 8
end process; 8
end; 8
4.5 控制系统电路图 8
5 硬件实现及调试结果 8
5.1 硬件测试结构示意 8
5.2 软件仿真结果 9
6. 心得体会 9
交通灯控制系统的设计
1.设计要求
1.1 实现基本要求及扩展
1.能显示十字路口东西、南北两个方向的红、黄、绿灯的指示状态,用两组红、黄、绿三色灯作为两个方向的红、黄、绿灯; 每次通行时间为15S,
2.能实现正常的倒计时功能,用两组数码管作为东西、南北向的倒计时显示。其中,黄灯:3S。
3.当出现一方出现红灯,另一方出现绿灯时,出现红灯的之路左转弯灯亮。
4.能实现特殊状态的功能。按下Sw0键后,能实现以下特殊功能:
(1) 四个数码管的显示都为0,
(2)东西、南北路口均显示红灯状态;
5.用VHDL语言设计上述功能的交通灯控制器,并用含有四个状态的状态机;
1.2 附加要求
1.时钟输入:clkin=1KHz;
2.采用分频器分成:1Hz,然后提供给系统。
2 设计思路
交通灯控制器的电路控制原理框图如图1所示,主要包括分频器模块、计数器模块、主控制器模块和二选一数据选择器模块。计数器模块以秒为单位倒计时,当计数值依次加一,直至“1111”,再进行下次的计数循环。分频器模块将1000HZ的频率转化为1HZ。数据选择器模块完成数码管个位和十位的seg选择,从而完成两位数字的显示。核心部分是主控制模块。具体控制情况见表1。
图1 电路控制原理框图
状态 干道1 干道2 时间/s 红灯与左转灯亮 绿灯亮 12 红灯亮 黄灯亮 3 绿灯亮 红灯与左转灯亮 12 黄灯亮 红灯亮 3 表1 交通灯控制表
3 状态机变化图
3.1 状态机变化图
根据交通灯的流程图,可以得到如图2所示的控制状态转换图。从图2的状态转换可以看出,交通灯电路应该能够具有以下几个功能:计数功能、状态控制功能(实现交通信号灯的状态控制和计时器控制)、译码功能及二选一数据选择器(实现4位数码管的显示功能)。对于实现上述功能的交通信号灯控制器电路,需要设计以下各个电路单元。
图2控制状态转换图
4 设计步骤及程序
4.1 主体程序代码
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity zhu is
port(QI:in std_logic_vector(3 downto 0);
clk,reset:in std_logic;
segshi,segge:out std_logic_vector(7 downto 0);
led:out std_logic_vector(7 downto 0));
end;
architecture zhuti of zhu is
signal state,led1:std_logic_vector(7 downto 0);
signal seg1:std_logic_vector(7 downto 0);
begin
shiwei:process(clk,QI,reset)
variable seg2:std_logic_vector(7 downto 0);
begin
if reset=0 then seg2:
else
if QI=0000 then seg2:end if;
if QI=0011 then seg2:end if;
end if;
segshi=seg2;
end process;
gewei:process(clk,QI,reset)
begin
if reset=0 then seg1
else
if (QI=0010 or QI=1100 or QI=1111) then seg1end if;--0
if (QI=0001 or QI=1011
文档评论(0)