资源描述
《EDA技术综合设计》
课程设计报告
报 告 题 目: 用状态机设计交通灯
作者所在系部: 电子工程系
作者所在专业:
作者所在班级:
作 者 姓 名 :
指导教师姓名:
完 成 时 间 :
内 容 摘 要
本报告通过用状态机对交通信号灯的设计,完成对红、绿、黄三盏灯状态变换的控制,进而完成对十字路口交通通断的控制。本实验以VHDL语言为基础,状态机为工具,完成四种交通状态的控制,即主道有车支道无车,主道无车支道有车,主道支道均有车,主道支道均无车四种状态。 以主支道的安装的传感器为信号输入,感应道路有无车辆,
实现交通自动化控制。
状态机一般用来描述数字系统的控制单元,是许多数字电路的核心元件。状态机包括输入信号、输出信号、状态译码器和状态寄存器。状态寄存器用来记忆状态机的内部状态。状态寄存器的下一个状态及输出不仅同输入信号有关,而且还与寄存器的当前状态有关,即下一个状态根据当前状态和输入决定。
关键词:交通灯 状态机 传感器 VHDL语言 自动化控制
目 录
一 概 述 ………… ………………………………………………………4
二 方案设计与论证………………………………………………………………4
三 单元电路设计…………………………………………………………………4
1. 传感器状态设计……………………………………………………… …4
2.状态寄存器设计…………………………………………………………4
3. 中间变量设计…………………………………………………………… 5
四 器件编程与下载………………………………………………………………5
五 性能测试与分析………………………………………………………………7
六 实验设备………………………………………………………………………7
七 心得体会………………………………………………………………………7
八 参考文献………………………………………………………………………7
课程设计任务书
课题
名称
交通信号灯的设计
完成
时间
指导
教师
职称
学生
姓名
班级
总体设计要求和技术要点
1. 用VHDL语言并利用状态机设计交通信号灯;
2. 进行程序编辑、调试和仿真;
3. 完成程序硬件下载,并观察实验结果;
4. 完成课程设计报告。
课程设计成果
1. 完成交通信号灯实验程序,仿真成功;
2. 程序下载顺利,并成功通过硬件实验;
3. 通过验收;
4. 完成课程设计实验报告;
一、概述
本次实验用状态机作为工具,运用电子EDA实验开发系统进行硬件下载实验,实现了用VHDL语言模拟实现了对交通信号的自动化控制。
二、方案设计与论证
交通灯信号控制器用于主干道m与支道f的交叉路口,两个路口都配有传感器以检测有无车辆通行。应优先保证主干道的畅通,即当支道无车时,总处于“主干道绿灯,支道红灯”状态。当主道、支道都有车时,则轮流切换通行。且只有在支道有车辆要穿行主道时,才切向“主干道红灯、支道绿灯”,但一旦支道无车无车辆时,交通灯又立即回到“主干道绿灯、支道红灯”状态。若主干道始终无车而支道又始终有车时,则保持“主干道红灯、支道绿灯”。打同样如此:一旦支道无车辆时,交通灯又立即回到“主干道绿灯、支道红灯”。此外,主干道和支道每次通行的时间为20s,而在两个状态交换过程出现的“主黄、支红”和“主红、支黄”状态,持续时间都为4s。
三、单元电路设计
1.传感器状态设计。
Sens(0)、Sens(1)分别为主、支道安装的传感器,检测是否有车辆通过。主道支道均没车时sens=”00”,主道支道均有车时sens=”11”,主道有车支道没车时sens=”10”,主道没车支道有车时sens=”01”。此程序中用case语句定义。
2.状态寄存器设计。
利用传感器的四种输入状态控制交通红绿灯的四种输出状态,xianshi作为状态寄存器,它的四种输出控制交通灯的四种状态,即
xianshi=”00”时Rm<='0';Ym<='1';Gm<='0';Rf<='1';Yf<='0';Gf<='0';xianshi=”11”时Rm<='1';Ym<='0';Gm<='0';Rf<='0';Yf<='0';Gf<='1';xianshi=”01”时Rm<='0';Ym<='0';Gm<='1';Rf<='1';Yf<='0';Gf<='0';xianshi=”10”时Rm<='1';Ym<='0';Gm<='0';Rf<='0';Yf<='1';Gf<='0'。
其中‘1’代表灯亮,‘0’代表灯不亮。
3.中间变量设计。
变量fx,fx0作为中间变量,负责传感器与交通灯输出的连接,‘1’代表主干道通,‘0’代表支道通。fx0记录上一次的交通状态。本次状态fx由传感器的状态和上一次的交通状态决定。当发生交通转换时交通等的状态刷新,时间复位。
四、器件编程与下载
1.实验程序
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.ALL;
ENTITY xhd IS
PORT(clk0,sens_m,sens_f:IN std_logic;----定义引脚
Rm,Ym,Gm:OUT std_logic;
Rf ,Yf,Gf:OUT std_logic);
END xhd;
-----------------------------------------
ARCHITECTURE behave OF xhd IS
SIGNAL sens:std_logic_vector(1 DOWNTO 0);
SIGNAL xianshi:std_logic_vector(1 DOWNTO 0);----状态寄存器
BEGIN
sens(0)<=sens_f;
sens(1)<=sens_m;
-----------------------------进程1-----------------
zhuangtaiyima:process(clk0)
VARIABLE fx:bit:='0';
VARIABLE fx0:bit:='0';
VARIABLE time:integer:=0;
begin
if(clk0'event and clk0='1') then
if(time<20) then time:=time+1;
end if;
end if;
case sens IS
WHEN "11" => if(time>=20) then fx:=not fx0;end if;----通行方向译码
WHEN "01" => fx:='0';
WHEN "10" => fx:='1';
WHEN "00" => fx:='1';
WHEN others => fx:='1';
end case;
if(fx/=fx0)
then fx0:=fx;time:=0;----保存本次的状态,时间清零
end if;
if(fx='1') then xianshi(1)<='0';
else xianshi(1)<='1';
end if;
if(time<4) then
xianshi(0)<='0';
else xianshi(0)<='1';
end if;
end process zhuangtaiyima;
------------------------------进程2------------------------
shuchuyima:process(xianshi)----译码部分
begin
case xianshi is
when "00" => Rm<='0';Ym<='1';Gm<='0';Rf<='1';Yf<='0';Gf<='0';
when "01" => Rm<='0';Ym<='0';Gm<='1';Rf<='1';Yf<='0';Gf<='0';
when "10" => Rm<='1';Ym<='0';Gm<='0';Rf<='0';Yf<='1';Gf<='0';
when "11" => Rm<='1';Ym<='0';Gm<='0';Rf<='0';Yf<='0';Gf<='1';
when others=>Rm<='1';Ym<='1';Gm<='1';Rf<='1';Yf<='1';Gf<='1';
end case;
end process shuchuyima;
end behave;
----------------------------结束----------------------------
2.程序下载
选择器件,锁定引脚,按电路要求连线。输入1Hz的脉冲作为时钟源。
五、性能测试与分析
观察实验输出与实验要求输出是否一致,一致则可完成对交通信号灯的控制。即优先保证主干道的畅通,即当支道无车时,总处于“主干道绿灯,支道红灯”状态。当主道、支道都有车时,则轮流切换通行。且只有在支道有车辆要穿行主道时,才切向“主干道红灯、支道绿灯”,但一旦支道无车无车辆时,交通灯又立即回到“主干道绿灯、支道红灯”状态。若主干道始终无车而支道又始终有车时,则保持“主干道红灯、支道绿灯”。
主支道均有车的仿真图:
可以看出两通道交替通行,在状态转换时黄灯亮。仿真结果与预期相同。
六、实验设备
计算机一台、电子EDA实验开发系统一套。
七、心得体会
通过本次课程设计领悟了EDA的工作原理,学会了各个并行进程之间相互通信协同工作的过程。进一步了解了VHDL语言的结构和编程方法,并通过硬件实验和对FPGA的程序下载初步掌握了电子EDA的设计方法,为以后的学习打下基础。
程序仿真是理想环境下的结果,容易实现,而移植到硬件系统上会出现实际的问题,比如接线的不稳定等,需要耐心排查故障,找出解决方案。
对交通灯的控制需要处理好各种状态间的转换关系,先要进行各个模块的分割分装,在进行逻辑分析的基础上编写程序。
八、参考文献
[1] 李国洪 EDA技术与实验 机械工业出版社 2009
[2] EDA-V型实验指导 北京理工达盛科技有限公司
指导教师评语及设计成绩
评 语
课程设计成绩:
指导教师:
日期: 年 月 日
- 9 -
展开阅读全文