资源描述
EDA交通灯课程设计
姓名:XXX
学号:*********
专业:*******
学院:电气和信息工程学院
1 系统功效设计要求
1. 东西各设有一个绿、黄、红指示灯;一个2位7段数码管
(1)南北和东西方向各有一组绿,黄,红灯,各自连续时间分别为20s,5s,25s;
(2)当有特殊情况时,两个方向均为红灯,计时暂停,当特殊情况结束后,控制器恢复原来状态,继续正常工作。
(3)用两组数码管,以倒计时方法显示两个方向许可通行或严禁通行剩下时间。
3. 能实现正常倒计时显示功效。能实现总体清理功效,计数器由初始状态开始计数,对应状态指示灯亮。
2 设计原理
2.1 交通灯控制器状态转换
依据论文题目要求,将红绿灯状态转换列成以下表
上表为交通灯控制器状态转换表
2.2设计方案
设计方案
倒计时模块
显示模块
控制模块
1、显示模块由两部分组成,一是由七段数码管组成倒计时显示器,每个方向两个七段数码管;二是由发光二极管替换交通灯,每个方向3个发光二极管。
2、每个方向有一组2位倒计时器模块,用以显示该方向交通灯剩下点亮时间。
3、控制模块是交通灯关键,关键控制交通灯按工作次序自动变换,同时控制倒计时模块工作,每当倒计时回零时,控制模块接收到一个计时信号,从而控制交通灯进入下一个工作状态。
2.2 LED动态显示和频率
因为交通灯需要使用2位7段LED数码管指示通行剩下时间,故采取LED动态扫描方法显示目前时间。
频率设定CLK1k对应频率为1024hz
3 电路符号
交通控制器电路符号图1.3所表示。其中,CLK1K为系统时钟信号输入端,SN为严禁通行信号输入通行信号输入端,light0为东西红灯信号输出端,light1为东西黄灯信号输出端,light2为东西绿灯信号输出端,light3为南北红灯信号输出端,light4为南北黄灯信号输出端,light5为南北绿灯信号输出端,led1、led2、led3、led4、为数码管地址选择信号输出端。
4 设计方法
采取文本编辑法,既采取vhdl语言描述交通控制器,代码以下:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity traffic IS
port (clk1k,SN:in std_logic;
led1, led2, led3, led4 :out std_logic_vector (3 downto 0);
--显示管显示时间用
light:out std_logic_vector (5 downto 0)); --红绿黄灯
end traffic;
architecture traffic1 of traffic IS
signal S:std_logic_vector (1 downto 0); --状态
signal DXT:std_logic_vector(7 downto 0):=X"01";
--东西方向时间
signal NBX:std_logic_vector(7 downto 0):=X"01";
--南北方向时间
signal ART,AGT,AYT,BRT,BGT,BYT: std_logic_vector(7 downto0);--红绿黄灯信号
signal SL: std_logic;
signal temp: integer range 0 to 1023; --产生1s计数器时计数
signal clk: std_logic;
begin
sL<='1'; --红绿灯时间设定
ART<="00100101";
AGT<="00100000";
AYT<="00000100";
BRT<="00100101";
BGT<="00100000";
BYT<="00000100";
process(clk1k) -- 选频率为1024HZ
begin
if (clk1k'event and clk1k='1') then
if temp=1023 then
temp<=0;
clk<='1';
else
temp<=temp+1;
clk<='0';
end if;
end if;
end process; --进程结束
process(clk,DXT,NBX) --状态转换进程
begin
if clk'event and clk ='1' then
if(DXT ="00000001")OR (NBX = "00000001") then S<=S+1;
else S<=S;
end if; --状态转换结束
end if;
end process;
process (clk,SN,S) --倒计时模块
begin
if SN = '1' then DXT<=DXT; NBX<=NBX;
else
if clk'event and clk='1' then
if (DXT="0000000") OR (NBX="00000000") then
case S IS
when "00"=>DXT<=ART; NBX<=BGT; --南北红灯、东西绿灯
when "01"=> NBX<=BYT; --南北红灯、东西黄灯
when "10"=>DXT<=AGT; NBX<=BRT; --南北绿灯、东西红灯
when "11"=>DXT<=AYT; --南北黄灯、东西红灯
when others=>NULL;
end case;
end if;
if DXT/="00000000" then
if DXT(3 downto 0)= "0000" then
DXT(3 downto 0)<="1001";
DXT(7 downto 4)<=DXT(7 downto 4)-1;
else DXT(3 downto 0)<=DXT(3 downto 0)-1;
DXT(7 downto 4)<=DXT(7 downto 4);
end if;
end if;
if NBX/="00000000" then
if NBX(3 downto 0)="0000" then
NBX(3 downto 0)<="1001";
NBX(7 downto 4)<=NBX(7 downto 4)-1;
else NBX(3 downto 0)<=NBX(3 downto 0)-1;
NBX(7 downto 4)<=NBX(7 downto 4);
end if;
end if;
end if;
end if;
end process; --倒计时模块结束
process(SL,DXT,NBX,S,SN) --显示模块
begin
case SL IS
when '1'=>led1<=NBX(3 downto 0);
led2<=NBX(7 downto 4);
led3<=DXT(3 downto 0);
led4<=DXT(7 downto 4);
when others=>NULL;
end case;
if SN ='1' then light<="001001";
else
case S IS
when "00"=>light<="010001";
when "01"=> light <="100001";
when "10"=> light <="001010";
when "11"=> light <="001100";
when others=>NULL;
end case;
end if;
end process;
end traffic1;
5 软件仿真
时序仿真图
6 结论
数码管动态显示,需要经过位选、段选控制。经过查询手册,将2位位选信号接到试验箱数码管位选端,将7位段选信号连接到试验箱数码管段选控制端。当送人适宜控制信号后,数码管即可正常工作。
经过下载仿真后,能得到预期试验结果。经过拨动(开关控制)为高电平,能实现交通灯紧急状态(红灯全亮)。若SN为低电平,数码管和主南北红绿灯能有序亮灭。
7收获及感想
短短一个星期EDA课程设计很块就结束了,即使在之前学习过程中还存在着没有弄懂问题,不过经过这次设计,深入加深了对EDA了解,让我对它有了愈加浓厚爱好。
在拿到题目后,首优异行了单元模块设计,将每一个单元模块设计完成后再经行仿真,在波形仿真过程中,一样碰到了困难,有时候,因为END TIME时间修改太大,会出现仿真时间过长问题,这个时候应该要把END TIME时间对应改小,或是修改系统时钟频率。
在设计过程中还应该多联络下实际情况,要了解实际情况下交通信号灯工作情况,才能愈加好完成此次课程设计。在以后工作和学习中,我们不能仅仅把眼光停留在书本上,要多理论联络实际。有时候,理论上是正确东西放到现实中去,可能因为种种原因制约,并不能达成实际效果,还需要我们进行对应修改才能完成要求。这次课程设计使我巩固了以前学习到知识,还使我掌握了以前没有掌握知识,同时锻炼了自己能力。
展开阅读全文