信息工程专业2009级。
可编程逻辑器件及应用》
课程设计实践报告。
设计题目: 交通灯控制器的设计。
专业班级: 信息工程。
学号: 姓名:
完成时间:
可编程逻辑器件及应用》课程设计实践报告。
1.设计题目。
交通灯控制器的设计。
2.设计要求。
设计制作一个用于十字路口的交通灯控制器。
1)南北和东西方向各有一组红、黄、绿灯用于指挥交通,绿灯、黄灯和红灯的持续时间分别为20秒、5秒和25秒;
2)当有特殊情况(如消防车、救护车等)时,两个方向均为红灯亮,计时停止,当特殊情况结束后,控制器恢复原来状态,继续正常运行;
3)用两组数码管,以倒计时方式显示两个方向容许通行或禁止通行的时间;
3.设计方案。
3.1系统框图。
系统主要分为5个部分:
1)控制模块: 用来控制东西和南北两组灯的亮灭,以及数码管的倒计时情况。当没有紧急情况时系统正常运行;有紧急情况时,停止倒计时,两组灯都只有红灯亮。
这都是由控制模块来完成的。控制模块是用来连接各个模块的,有了控制模块,各个模块才能构成一个完善的系统。
2)分频模块:我们实验所用的板子的工作频率是50mhz的,而数码管倒计时是以秒为单位来计时的,所以需要分频模块分出一个周期为1秒的时钟信号。
3)计数模块:本实验需要用到四个数码管来显示倒计时的情况,而这四个数码管是不能同时亮的所以需要一个选通信号,对数码管进行高频率的扫描,这里需要计数器。数码管的工作是对不同的灯的亮的时间进行倒计时,所以这里也需要计数器。
4)译码模块:用来使七段数码管显示出相应的数字。
5)数码管显示模块:控制数码管的选通以及应当显示的数字。
3.2 源**。
library ieee;
use use
use entity jtd is
port(duan : out std_logic_vector(7 downto 0); 数码管显示
led: out std_logic_vector(3 downto 0); shumaguansaomiao
led_no: out std_logic_vector(1 downto 0); 4 3
light1: out std_logic_vector(2 downto 0);
light2: out std_logic_vector(2 downto 0);
b1eep : out std_logic
clk,jinji: in std_logic --频率输入和紧急处理端---
end jtd;
architecture one of jtd is
signal clk_1k,clk_1 : std_logic;
signal cnt4 : integer range 0 to 3用于计数。
signal num,num1,num2,num3,num4 : integer range 0 to 9;
signal aa,bb,time1,time2: integer range 0 to 19时间显示。
beginled_no<="11把数码管第三第四位屏蔽。
---分频模块。
---2khz频率输出。
process(clk)
variable cnt1: integer range 0 to 250;
variable cnt2: integer range 0 to 100;
beginif clk'event and clk='1' then
if cnt1=250 then
cnt1:=0;
if cnt2=100 then
cnt2:=0;
clk_1k<=not clk_1k;
elsecnt2:=cnt2+1;
end if;
elsecnt1:=cnt1+1;
end if;
end if;
end process;
1s分频加计数。
process(clk_1k)
variable count_1k : integer range 0 to 499;
beginif clk_1k'event and clk_1k='1' then
if cnt4=3 then
cnt4<=0;
elsecnt4<=cnt4+1;
end if;
if count_1k=499 then
count_1k:=0;
clk_1<= not clk_1;
else count_1k:=count_1k+1;
end if;
end if;
end process;
数码管显示模块。
倒计时和灯显示。
process(cnt4,time1,time2)
begincase time1 is输出时间1
when 0 to 9 =>num1<=0;
when 10 to 19 =>num1<=1;
when 20 =>num1<=2;
when others =>num1<=0;
end case;
num2<=time1 rem 10取余---
case time2 is
when 0 to 9 =>num3<=0;
when 10 to 19 =>num3<=1;
when 20 =>num3<=2;
when others =>num3<=0;
end case;
num4<=time2 rem 10;
case cnt4 is
when 0 =>
led<="1110动态扫描数码管(从右到左)
num<=num1;
when 1 =>
led<="1101";
num<=num2;
when 2 =>
led<="1011";
num<=num3;
when 3 =>
led<="0111";
num<=num4;
when others =>
led<="1111";
end case;
end process;
译码模块。process(num)
begincase num is
when 0=>duan<="001111110到9
when 1=>duan<="00000110";
when 2=>duan<="01011011";
when 3=>duan<="01001111";
when 4=>duan<="01100110";
when 5=>duan<="01101101";
when 6=>duan<="01111101";
when 7=>duan<="00000111";
when 8=>duan<="01111111";
when 9=>duan<="01101111";
when others=>duan<="00000000";
end case
end process;
控制模块。process(clk_1)
variable i: integer range 0 to 3 :=0;
beginif clk_1'event and clk_1='1' then
if time1=0 and time2=0 then
if i=3 then
i:=0;else
i:=i+1;
end if;
case i is --交通灯正常工作时的四种状态。
when 1 =>
time1<=19;
time2<=19;
light1<="001";
light2<="100";
b1eep<='0';
when 2 =>
time1<=4;
time2<=4;
light1<="010";
light2<="100";
b1eep<='0';
when 3 =>
time1<=19;
time2<=19;
light1<="100";
light2<="001";
b1eep<='0';
when 0 =>
time1<=4;
time2<=4;
light1<="100";
light2<="010";
b1eep<='0';
end case;
elseif jinji='1' then --出现紧急情况。
b1eep<='1';
time1<=aa;
time2<=bb;
light1<="100";
light2<="100";
elsetime1<=time1-1;
time2<=time2-1;
aa<=time1-1;
bb<=time2-1;
case i is
when 1 =>
light1<="001";
light2<="100";
b1eep<='0';
when 2=>
light1<="010";
light2<="100";
b1eep<='0';
when 3=>
light1<="100";
EDA大作业交通灯
实验报告。课程名称eda 交通灯的设计。学生姓名魏巍。学号8000612064 专业班级计软121班。南昌大学实验报告。学生姓名 魏巍学号 8000612064 专业班级 计软121 实验类型 验证 综合 设计 创新实验日期 2015.05.20 实验成绩 一 项目名称。十字路 通灯管理系统。二 实...
EDA课程设计 交通灯
交通信号灯控制电路设计。1 概述。城市道路交叉口是城市道路网络的基本节点,也是网络交通流的瓶颈。目前,大部分无控制交叉口都存在高峰小时车流混乱 车速缓慢 延误情况严重 事故多发 通行能力和服务水平低下等问题。特别是随着城市车流量的快速增长,城市无控制道路交叉口的交通压力越来越大。因此,做好基于eda...
EDA交通灯课程设计
学院 电气与信息工程学院。1.东西各设有一个绿 黄 红指示灯 一个2位7段数码管。1 南北和东西方向各有一组绿,黄,红灯,各自的持续时间分别为20s,5s,25s 2 当有特殊情况时,两个方向均为红灯,计时暂停,当特殊情况结束后,控制器恢复原来状态,继续正常工作。3 用两组数码管,以倒计时方式显示两...