系统与逻辑综合实验交通灯控制器

上传人:cn****1 文档编号:432595497 上传时间:2023-01-07 格式:DOC 页数:16 大小:588KB
返回 下载 相关 举报
系统与逻辑综合实验交通灯控制器_第1页
第1页 / 共16页
系统与逻辑综合实验交通灯控制器_第2页
第2页 / 共16页
系统与逻辑综合实验交通灯控制器_第3页
第3页 / 共16页
系统与逻辑综合实验交通灯控制器_第4页
第4页 / 共16页
系统与逻辑综合实验交通灯控制器_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《系统与逻辑综合实验交通灯控制器》由会员分享,可在线阅读,更多相关《系统与逻辑综合实验交通灯控制器(16页珍藏版)》请在金锄头文库上搜索。

1、数字系统与逻辑综合实验 交通灯控制器 一 摘要随着机动车的不断增多,道路复杂化加强,突发事件频繁,对交通灯控制器的要求也越来越高,本实验基于VHDL编程实现了自动控制十字路口的智能交通灯和计时器,用来设立在十字路口指挥各种车辆和行人安全通行。对于交通等控制器的设计是分模块自顶向下的设计思想,软硬件结合来实现本设计。关键词:交通灯 计时器 VHDL 模块AbstractWith the development of social traffic system, and the increase number of vehicle, the capability of traffic lights

2、 controller is more and more demanding. This experiment on basis of VHDL completes an auto traffic lights and a count-down-display to conduct vehicles and passerby safely. The design of this program is top-to-bottom and separated in three modules. Software cooperates with hardware to achieve the fun

3、ction.Keywords: traffic lights count-down VHDL module 二 设计任务要求与完成任务基本要求1. 南北和东西方向各有一组绿、黄、红灯用于指挥交通,绿灯、黄灯和红灯的持续时间分别为20秒、5秒和25秒;2. 当有特殊情况(如消防车、救护车等)时,两个方向均为红灯亮,计时停止,当特殊情况结束后,控制器恢复原来状态,继续正常运行; 3. 用两组数码管,以倒计时方式显示两个方向允许通行或禁止通行的时间; 4. 选做:增加左、右转弯显示控制功能; 5. 选做:其它自拟功能。任务完成情况(1)基本功能实现: 程序开始南北绿,东西红;20秒后南北黄,东西红;

4、5秒后南北红,东西绿; 20秒后南北红,东西黄;5秒后南北绿,东西红。完成一次50秒计时循环,进入下一轮循环。(2)增加东西、南北双向左转功能:南北绿前五秒允许南北左转弯,转弯灯亮,5秒后灯灭;东西绿前五秒允许东西左转弯,转弯灯亮,5秒后灯灭(3)全部复位功能:按下复位键恢复初始状态,南北绿,东西红,重新开始计时循环三 总体框图时钟信号复位信号控 制 器 发光二极管的显示 (交通灯) 数码管的扫描 (选通输出)紧急情况信号 数码管的显示 (倒计时)四 分块电路设计本设计包括:一个顶层文件jiaotongdeng.vhd 3个底层文件:分频器fenpin.vhd; 控制模块traffic.vhd

5、; 显示模块display.vhd各个模块输入输出信号以及功能简介分频模块作用: 根据实验要求得出相应的频率输入:实验板给出1MHZ的时钟输出:1000 分频得出的1KHZ的CLK1K 用来为数码管做选通输出的扫描频率1000000 分频得出的1hz的CLK1 交通灯倒计时以1s为单位控制模块作用: 紧急情况实现,交通灯状态复位,交通灯状态转移,计数器,LED和数码管的显示输入:两个分频 CLK1K CLK1 RESET 按下后返回初始状态CHANGE 奇数次按下后进入紧急情况 偶数次按下后恢复输出:SEL 5 DOWNTO 0 数码管选通输出LIGHTS 7 DOWNTO 0 发光二极管显示

6、输出NUM 9 DOWNTO 0 倒计时计数输出到显示模块 显示模块作用: 7段数码管显示出东西南北两路交通灯的倒计时数值输入:NUM 9 DOWNTO 0 倒计时计数输出到显示模块输出: SEG 6 DOWNTO 0 把0到9是个数字转换成二进制数送显State=S1初始状态10100001State=S500001100State=S600010100五 状态转移图Reset=1Reset=1State=S200100001Change=1Change=1Change=1Change=1Change=1State=S7 特殊情况00100100Change=1State=S30010001

7、0State=S401001100六 程序流程图Count=50 STATE=S1东西红,南北绿南北可左转Count=45 STATE=S2东西红,南北绿南北不可左转Count=30 STATE=S3东西红,南北黄Count=25 STATE=S4东西绿,南北红东西可左转BEGINChange=1 Ch=1 紧急情况Count=Count东西红,南北红Change=1 Ch=0 紧急情况结束Reset=1Count=Count-1Reset=1NoYesCount=20 STATE=S5东西绿,南北红东西不可左转Count=5 STATE=S6东西黄,南北红Count=0Count=Count

8、-1Count=Count-1Count=Count-1Count=Count-1Count=Count-1Count=Count-1恢复原来状态检测紧急状况Count=Count-1检测紧急状况检测紧急状况检测紧急状况检测紧急状况检测紧急状况检测紧急状况七 交通灯控制起源程序-顶层文件-library ieee; use ieee.std_logic_1164.all;entity jiaotongdeng isport(clk:in std_logic; -时钟信号 change,reset:in std_logic; -复位和紧急情况信号 seg:out std_logic_vector

9、(6 downto 0); -7段数码管显示 sel:out std_logic_vector(5 downto 0); -选通输出 lights:out std_logic_vector(7 downto 0);-led发光管输出 clkout:out std_logic);end jiaotongdeng;architecture a of jiaotongdeng is -分别调用各个模块signal cp1k,cp100,cp1:std_logic;signal number:integer range 0 to 9;component fenpin -分频模块 1k 100hz 1h

10、z port(clk:in std_logic; clk1k,clk100,clk1:out std_logic);end component;component traffic -交通灯控制模块 紧急情况 状态清零 左右转 port(clk1,clk1k:in std_logic; change,reset:in std_logic; num:out integer range 0 to 9; lights:out std_logic_vector(7 downto 0); sel:out std_logic_vector(5 downto 0);end component;componen

11、t display -led发光管 8段数码管显示 port(num:in integer range 0 to 9; seg:out std_logic_vector(6 downto 0);end component;begin -三个不同模块u1:fenpin port map(clk,cp1k,cp100,cp1);u2:traffic port map(cp1,cp1k,change,reset,number,lights,sel);u3:display port map(number,seg);end;-分频模块-library ieee;-分频器use ieee.std_logi

12、c_1164.all;use ieee.std_logic_unsigned.all;entity fenpin is port(clk:in std_logic; clk1k,clk100,clk1:out std_logic);end fenpin;architecture a of fenpin issignal count:integer range 0 to 999;signal count1:integer range 0 to 9;signal count2:integer range 0 to 99;signal m,n:std_logic;beginp1: process(clk) -1kHz分频 数码管选通输出使用 begin if(clkevent and clk=1)then if(count=999) then count=0; else count=count+1; end if; if(count499) then m=1; else m=0; end if; end if; end process;p2:process(m) -100Hz分频 扩展功能使用 m来驱动 begin if(mevent and m=1) then if(count1=9)then count1=0; else count1=count1+1; end if; if(co

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号