18

2024-05

当前位置: 一佳范文网 > 范文大全 > 公文范文 >

交通灯控制系统EDA实验报告

| 浏览量:

  交通灯控制系统

 EDA 实验报告

  姓名:

 学号:

  2014

 一、 课题名称 用状态机设计的交通信号控制系统。

 二、 实验目的 利用所学习的 EDA 相关知识,完成对交通灯控制系统的设计并实现,提高对所学知识的理解和利用熟练程度。

 三、 设计任务 设计一个十字路口交通控制系统,要求如下:

 a. 东西(用 A 表示)、南北(用 B 表示)方向均有绿灯、黄灯、红灯指示,持续时间分别是 40 秒、五秒和 45 秒,交通灯运行的切换示意图与时间关系如下。

 交通控制系统运行切换示意图

  更方向灯光时间关系

 b. 系统设有时钟,以倒计时的方式显示每一路允许通行的时间。

 c. 当东西或南北两路中任意一路出现特殊状况时,系统可由交警手动控制立即进入特殊运行状态,即红灯全亮,始终停止计时,东西、南北两路所有车辆禁止通行;当特殊状况结束后,系统恢复工作,继续正常运行。

 四、 实验过程 a. VHDL 设计流程

 b. 交通控制系统顶层原理图如下,它主要由 50MHz 分频器(devide50M)、控制器(control)、45 秒倒计时计数器(m45)、7 字段译码器(SEG7)组成。

  1) 控制器的设计

 控制器的逻辑符号如图所示。其中CLK为时钟输入信号;HOLD为紧急制动信号;ARED、AGREEN、AYELLOW 分别为东西方向的红灯、绿灯、黄灯指示的输出信号;BRED、BGREEN、BYELLOW 分别为南北方向的红灯、绿灯、黄灯指示的输出信号。

 控制器的 VHDL 描述文件 control.vhd 如下:

 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;

 entity control is

  port(clk,hold:in std_logic;

  ared,agreen,ayellow,bred,bgreen,byellow:out std_logic); end control;

 architecture behavior of control is

  type state_type is (s0,s1,s2,s3,s4);

  signal current_state,next_state:state_type;

  signal counter : std_logic_vector(6 downto 0);

 begin synch:process begin

  wait until clk"event and clk="1";

  if hold="0" then

  --当紧急制动信号有效时,计数器停止计数

  counter<=counter;

  else

  if counter<89 then

  counter<=counter+1;

  else

  counter<=(others=>"0");

  end if;

  end if;

 end process;

 process

  --待机状态 begin

  wait until clk"event and clk="1";

  current_state<= next_state; end process;

 state_trans:process(current_state) begin

  case current_state is

 when s0=>

  if hold="0" then

  next_state<=s4;

  else

  if counter<39 then

  next_state<=s0;

  else

  next_state<=s1;

  end if;

  end if; when s1=>

  if hold="0" then

  next_state<=s4;

  else

  if counter<44 then

  next_state<=s1;

  else

  next_state<=s2;

  end if;

  end if; when s2=>

  if hold="0" then

  next_state<=s4;

  else

  if counter<84 then

  next_state<=s2;

  else

  next_state<=s3;

  end if;

  end if; when s3 =>

  if hold="0" then

  next_state<=s4;

  else

  if counter<89 then

  next_state<=s3;

  else

  next_state<=s0;

  end if;

  end if; when s4=>

  if hold="0" then

  next_state<=s4;

 else

  if counter<39 then

  next_state<=s0;

  elsif counter<44 then

  next_state<=s1;

  elsif counter<84 then

  next_state<=s2;

  elsif counter<89 then

  next_state<=s3;

  end if;

  end if; end case; end process;

 output:process(current_state)

  --每种状态下两个路口红绿灯的状态描述 begin case current_state is when s0=>

  ared<="0";

  agreen<="1";

  ayellow<="0";

  bred<="1";

  bgreen<="0";

  byellow<="0"; when s1=>

  ared<="0";

  agreen<="0";

  ayellow<="1";

  bred<="1";

  bgreen<="0";

  byellow<="0"; when s2=>

  ared<="1";

  agreen<="0";

  ayellow<="0";

  bred<="0";

  bgreen<="1";

  byellow<="0"; when s3=>

  ared<="1";

  agreen<="0";

  ayellow<="0";

  bred<="0";

  bgreen<="0";

 byellow<="1"; when s4=>

  ared<="1";

  agreen<="0";

  ayellow<="0";

  bred<="1";

  bgreen<="0";

  byellow<="0"; end case; end process; end behavior;

 2) 倒计时计数器 M45 的设计 倒计时计数器 M45 的逻辑符号如图。其中 CLK、EN、CR 分别是时钟、计数使能和清零端,QL[3..0]、QH[3..0]、OC 分别是 BCD 码的个位、十位和进位输出。

 VHDL 描述文件 m45.vhd 如下:

 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity m45 is port(

  CLK

  : in std_logic;

  EN

 : in std_logic;

  CR

 : in std_logic;

  QL,QH : out std_logic_vector(3 downto 0);

  OC

 : out std_logic

  ); end m45;

 architecture behave of m45 is

  signal couL,couH:std_logic_vector(3 downto 0); begin

  process(CR,CLK,EN)

  begin

  if CR="0" then

  --异步清零

  couL<="0000";

  couH<="0000";

 elsif clk"event and clk="1" then

  if EN="1" then

  if( couL=0 and couH=0) then

 --减法计到 00 后,重新置数 44

  couL<="0100";

 couH<="0100";

  elsif couL=0 then

 --否则个位计到 0 时置为 9,十位减 1

  couL<="1001";

  couH<=couH-1;

  else

  couL<=couL-1;

 --否则个位减 1

  end if;

  end if;

  end if;

  end process;

 process(couL,couH) begin

  if(couL=0 and couH=0)then

  OC<="1";

 --减到 00 时有借位输出

  else

  OC<="0";

  end if; end process;

  QL<=couL;

  QH<=couH; end behave;

 3) 7 字段译码器电路的设计 7 字段译码器的功能是将 8421BCD 码译成 7 个信号,用以启动 7 段数码管显示相应的十进制数码,逻辑符号如图。dat[3..0]是 8421BCD 码的输入,a、b、c、d、e、f、g 是驱动数码管显示的 7 个输出信号(低电平有效)。

 VHDL 描述文件 seg7.vhd 如下:

 library ieee; use ieee.std_logic_1164.all;

 entity seg7 is port( dat : in std_logic_vector(3 downto 0);

 a,b,c,d,e,f,g : out std_logic );

  end seg7;

 architecture arc of seg7 is signal tmp : std_logic_vector(6 downto 0); begin

  process(dat)

  begin case dat is

 when "0000"=>tmp<="0000001";

 --输入 0000 时,显示 0

  when "0001"=>tmp<="1001111";

 --输入 00001 时,显示 1

  when "0010"=>tmp<="0010010";

  when "0011"=>tmp<="0000110";

  when "0100"=>tmp<="1001100";

  when "0101"=>tmp<="0100100";

  when "0110"=>tmp<="0100000";

  when "0111"=>tmp<="0001111";

  when "1000"=>tmp<="0000000";

  when "1001"=>tmp<="0000100";

 --显示 9

  when "1010"=>tmp<="0001000";

 --显示 A

  when "1011"=>tmp<="1100000";

  when "1100"=>tmp<="0110001";

  when "1101"=>tmp<="1000010";

  when "1110"=>tmp<="0110000";

  when "1111"=>tmp<="0111000"; end case; end process; a<=tmp(6); b<=tmp(5); c<=tmp(4); d<=tmp(3); e<=tmp(2); f<=tmp(1); g<=tmp(0); end arc;

 4) 50MHz 分频器的设计 逻辑符号如图,目的是将输入信号转化为 1HZ 输出。clk 为信号输入端,clk_out 为信号输出端。

 VHDL 描述文件 devide50M.vhd 如下:

 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity devide50M is port(

 clk

 : in std_logic;

 clk_out : out std_logic

 ); end devide50m;

 architecture arc_devide50M of devide50M is

 signal count: std_logic_vector (25 downto 0); begin

  process

 begin

  wait until clk"event and clk="1";

 if (count<50000000) then

  count<=count+1;

  clk_out<="0";

 else

 count<=(others =>"0");

  clk_out<="1";

 end if;

 end process; end architecture arc_devide50M;

 c. 管脚设计 因为使用的是 Cyclone III_EP3C16F484C6 型号的电路板,因此管脚连接如下:

 Cyclone III_EP3C16F484C6 型号的电路板

  管脚连接图

 五、 实验结果

 波形仿真结果

 六、 实验心得 通过这次设计,进一步加深了对 VHDL 语言的了解,让我对它有了更加浓厚的兴趣。在文件编写的过程中,我遇到了不少问题,包括最开始的无从下手到各元件之间的连接,引脚的设定,但最终还是克服了这些困难。建议以后的课程中将上机操作与课程理论教学相结合,这样也许就能够更好的帮助我们学习 EDA。

推荐访问:交通灯 控制系统 实验

最新推荐New Ranking

1幼儿园中班六一活动方案

温暖的阳光,诱人的花香,激动的脸庞,六一国际儿童节在小朋友和老师的热烈期盼中来到了我们的身旁。...

2某市医疗保障工作要点

2022年是党的二十大召开之年,也是医保助力共同富裕的奋进之年。2022年全市医疗保障工作的总体要求是...

3区委书记在市委招商专题汇报会上讲话提纲

今年来,XX区积极响应中央、省、市号召,立足当前经济形势,抢抓发展机遇,充分挖掘中心城区区位优势...

4在局推进基层正风反腐工作会议上讲话

同志们:今天召开这次会议主要是贯彻落实3月24日我区基层正风反腐专项治理工作会议精神,部署开展我局...

5农村“五治”工作实施方案

为深入学习贯彻XXX关于实施乡村振兴战略重要讲话精神,打赢改善农村人居环境这场硬仗,践行为民宗旨、厚...

6在市政协五届一次会议开幕会上讲话

市政协四届一次会议以来的五年,是XX砥砺前行、克难攻坚的五年,也是拼搏进取、满载荣光的五年。五年...

7市全面推行证明事项告知承诺制工作实施方案

为进一步深化“放管服”改革,深入开展“减证便民”行动,优化营商环境,激发市场主体活力和社会创造...

8党课讲稿:意识形态领域形势何以发生全局性根本性转变

党的十九届六中全会通过的《中共中央关于党的百年奋斗重大成就和历史经验的决议》(以下简称《决议》...

9研讨发言:科技创新引领,构建现代产业体系(集团公司董事长,党委书记)

中央经济工作会议把“强化国家战略科技力量”“增强产业链供应链自主可控能力”提到了前所未有的战略...

10在全省药品监管工作会议上经验交流发言

2021年,全市市场监管系统在省药监局和市委、市政府的正确领导下,坚持以XXX“四个最严”为指导,聚焦...