交通灯控制器,有哪位朋友能提供一篇关于交通灯控制器(EDA)的论文给我,本人不胜感激!

维修要闻     2020-12-24    浏览:12

有哪位朋友能提供一篇关于交通灯控制器(EDA)的论文给我,本人不胜感激!

 给你2种方案以供参考:
方案对比与论证 本次毕业设计课题为交通灯控制(EDA),所要设计的交通信号灯控制电路要能够适用于由一条主干道和一条支干道的汇合点形成的十字交叉路口。能够做到主、支干道的红绿灯闪亮的时间不完全相同,在绿灯跳变红灯的过程中能够用黄灯进行过渡,使得行驶过程中的车辆有足够的时间停下来。还要求在主、支干道各设立一组计时显示器,能够显示相应的红、黄、绿倒计时。可以利用VHDL语言合理设计系统功能,使红黄绿灯的转换有一个准确的时间间隔和转换顺序。
交通灯控制的方案有很多,如:用标准逻辑器件、可编程逻辑器PLC、单片机、EDA等来实现交通灯的控制。下面就EDA和单片机两种方案做下比较与说明。
2.1 方案一: 采用单片机方案来实现,模型可以由电源电路、单片机主控电路、无线收发控制电路和显示电路四部分组成。在电源电路中,需要用到+5V的直流稳压电源,无线收发控制电路和显示电路应由编码芯片和数据发射模块两部分组成,主控电路的主要元件为AT89C51。硬件设计完成后还要利用计算机软件经行软件部分的
设计才能够实现相应的功能。
虽然利用单片机系统设计的交通灯控制器相对来说较稳定,能够完成较多功能的实现,但这些控制方法的功能修改及调试都需要硬件电路的支持,在一定程度上增加了功能修改及系统设计与调试的困难。
2.2 方案二: 用EDA技术 ,采用模块层次化设计,将此设计分为四个模块,状态控制模块,信号灯显示模块,数码扫描显示模块。将四个模块再分别用VHDL语言编写成,做成原理图模块,用原理图输入法做整个设计的顶层文件。本系统采用GW48 EDA/SOPC实验箱来设计交通灯控制器,模拟实现红、绿灯指挥交通的功能。它直接采用FPGA/CPLD芯片开发,用VHDL语言编程和QUARTUS Ⅱ6.0设计。交通灯控制器设计, 系统地阐述了用FPGA/CPLD实现数字电路的设计过程, 展示了FPGA/CPLD的强大功能和非凡特性此方案设计方便、简单,方法易懂、易操作,也易于寻找程序中的错误,周期短,设计灵活,易于修改等明显的的优点。而且,随着FPGA器件、设计语言和电子设计自动化工具的发展和改进,越来越多的电子系统采用FPGA来设计。未来,使用FPGA器件设计的产品将出现在各个领域里。因此,此次的交通信号灯控制器的设计将采用基于FPGA的设计方案来实现所要求的功能。
下面对EDA做下详细介绍:
完整地了解利用EDA技术进行设计开发的流程对于正确地选择和使用EDA软件,优化设计项目,提高设计效率十分有益。一个完整的、典型的EDA设计流程既是自顶向下设计方法的具体实施途径,也是EDA工具软件本身的组成结构。
设计输入:1.图形输入:图形输入通常包括原理图输入、状态图输入和波形图输入等方法。
状态图输入方法就是根据电路的控制条件和不同的转换方式,用绘图的方法,在EDA工具的状态图编辑器上绘出状态图,然后由EDA编译器和综合器将此状态变化流程图形编译综合成电路网表。
波形图输入方法则是将待设计的电路看成是一个黑盒子,只需告诉EDA工具该黑盒子电路的输入和输出时序波形图,EDA工具即能据此完成黑子电路的设计。
原理图输入方法是一种类似于传统电子设计方法的原理图编辑输入方式,即在EDA软件的图形编辑界面上绘制能完成特定功能的电路原理图。原理图由逻辑器件(符号)和连接线构成,图中的逻辑器件可以是EDA软件库中预制的功能模块,如与门、非门、或门、触发器以及各种含74系列器件功能的宏模块,甚至还有一些类似于IP的功能模块。
硬件描述语言文本输入:这种方式与传统的计算机软件语言编辑输入基本一致。就是将使用了某种硬件描述语言(HDL)的电路设计文本,如VHDL或Verilog的源程序,进行编辑输入。
综合:综合(Synthesis),就其字面含义应该为:把抽象的实体结合成单个或统一的实体。因此,综合就是把某些东西结合到一起,把设计抽象层次中的一种表述转化成另一种表述过程。
对于电子设计领域的综合概念可以表示为:将用行为和功能层次表达的电子系统转换为低层次的便于具体实现的模块组合装配而成的过程。
事实上,设计过程中的每一步都可以称为一个综合环节。设计过程通常从高层次的行为描述开始,以最底层的结构描述结束,每个综合步骤都是上一层次的转换:
从自然语言表述转换到VHDL语言算法表述,是自然语言综合。
从算法表述转换到寄存器的传输级(Register Transport Level,RTL)表述,即从行为域到结构域的综合,是行为综合。
从RTL级表述转换到逻辑门(包括触发器)的表述,即逻辑综合。
从逻辑门表述转换到版图表述(ASIC设计),或转换到FPGA的配置网表文件,可称为版图综合或结构综合。
一般地,综合是仅对应于HDL而言的。利用HDL综合器对设计进行综合是十分重要的一步。因为综合过程将把软件设计的HDL描述与硬件结构挂钩,是将软件转化为硬件电路的关键步骤,是文字描述与硬件实现的一座桥梁。综合救赎将电路的高级语言(如行为描述)转换成低级的,可与PFGA/CPLD的基本结构相映射的网表文件或过程。
当输入的HDL文件在EDA工具中检测无误后,首先面临的是逻辑综合,因此要求HDL源文件中的语句都是可综合的。
在综合后,HDL综合器一般都可以生成一种或多种文件格式网表文件,如EDIF、VHDL、VerilogHDL等标准格式,在这种网表文件中用各自的格式描述电路的结构。如在VHDL网表文件采用VHDL的语法,用结构描述的风格重新诠释综合后的电路结构。
适配(布线布局):适配器也称结构综合器,它的功能是将由综合器产生的网表文件配置于指定的目标器件中,使之产生最终的下载文件,如JEDEC、Jam格式。适配文件所选定的目标器件必须属于原综合器指定的目标器件系列。通常,EDA软件中的综合器可由专业的第三方EDA公司提供,而适配器则需由FPGA/CPLD供应商提供。因为适配器
的适配对象直接与器件的结构细节相对应。
适配器就是将综合后的网表文件针对某一具体的目标器件进行逻辑映射操作,其中包括底层期间配置、逻辑分割、优化、布局布线操作。适配完成后可以利用适配所产生的仿真文件做精准的时序仿真,同时产生可用于对目标器件进行编程的文件。
仿真:在编译下载前必须利用EDA工具对适配生成的结果进行模拟测试,就是所谓的仿真。
仿真就是让计算机根据一定的算法和一定的仿真库对EDA设计进行模拟,以验证设计,排除错误。仿真是在EDA设计过程中的重要步骤。时序与功能门级仿真通常由FPGA公司的EDA开发工具直接提供(当然也可以选用第三方的专业仿真工具),它可以完成两种不同级别的仿真测试:
时序仿真,就是接近真实器件运行特性的仿真。仿真文件中已包含了器件硬件特性参数。因而,仿真精确度高。但时序仿真的仿真文件必须来自对具体器件的适配器。综合后所得的EDIF等网表文件通常作为FPGA适配器的输入文件,产生的仿真网表文件中包含了精确地硬件延时信息。
功能仿真,是直接对VHDL、原理图描述或其他形式的逻辑功能进行测试模拟,以了解其实现的功能是否满足原设计要求的过程,仿真过程不涉及任何具                                                                    体器件的硬件特性。不经历适配阶段,在设计项目遍及编译(或综合)后即可进入门级仿真器进行模拟测试。直接进行功能仿真的好处是设计耗时短,对硬件库、综合器等没有任何要求。
 
交通信号灯控制器设计

设计一个十字路口的交通灯定时控制系统,基本要求如下:
(1)甲车道和乙车道两条交叉道路上的车辆交替运行,每次通行时间都设为25秒。
(2)每次绿灯变红灯时,黄灯先亮5秒钟,才能变换运行车道。
(3)黄灯亮时,要求每秒钟闪亮一次。
选做扩展功能:
(4)十字路口有数字显示灯亮时间,要求灯亮时间以秒为单位作减计数;
(5)要求通行时间和黄灯亮的时间均可在0~99s内任意设定。

参考元器件
集成电路:74LS74 1片, 74LS00 2片,74LS153 2片,74LS163 2片,NE555 1片
电阻:52K 1只,200 6只
电容:10 F 1只 , 0.1 F 1只
其他:发光二极管 6只
用EDA设计交通灯控制器的设计

  library ieee;
  use ieee.std_logic_1164.all;
  use ieee.std_logic_unsigned.all;
  entity traffic_ctrl is
  generic(green1_cnt:integer:=25;
  yellow1_cnt:integer:=5;
  green2_cnt:integer:=15;
  yellow2_cnt:integer:=5);
  port(clk:in std_logic;
  rst:in std_logic;
  lgt1_red:out std_logic;
  lgt1_yellow:out std_logic;
  lgt1_green:out std_logic;
  lgt2_red:out std_logic;
  lgt2_yellow:out std_logic;
  lgt2_green:out std_logic;
  lgt3_red:out std_logic;
  lgt3_yellow:out std_logic;
  lgt3_green:out std_logic;
  lgt4_red:out std_logic;
  lgt4_yellow:out std_logic;
  lgt4_green:out std_logic);
  end entity traffic_ctrl;
  architecture rtl of traffic_ctrl is
  type states is
  (st0,st1,st2,st3);
  signal state:states:=st0;
  signal cnt:integer range 0 to 30:=1;
  signal cnt_enb:std_logic:="0";
  begin
  process(clk,rst)
  begin
  if(rst="1") then
  state<=st0;
  cnt<=1;
  elsif(rising_edge(clk)) then
  if(cnt_enb="1") then
  cnt<=cnt+1;
  else
  cnt<=1;
  end if;
  case state is
  when st0=>
  if(cnt=green1_cnt) then
  state<=st1;
  else
  state<=st0;
  end if;
  when st1=>
  if(cnt=yellow1_cnt) then
  state<=st2;
  else
  state<=st1;
  end if;
  when st2=>
  if(cnt=green2_cnt) then
  state<=st3;
  else
  state<=st2;
  end if;
  when st3=>
  if(cnt=yellow2_cnt) then
  state<=st0;
  else
  state<=st3;
  end if;
  end case;
  end if;
  end process;
  process(state)
  begin
  case state is
  when st0=>
  lgt1_red<="0";
  lgt1_yellow<="0";
  lgt1_green<="1";
  lgt2_red<="1";
  lgt2_yellow<="0";
  lgt2_green<="0";
  lgt3_red<="0";
  lgt3_yellow<="0";
  lgt3_green<="1";
  lgt4_red<="1";
  lgt4_yellow<="0";
  lgt4_green<="0";
  cnt_enb<="1";
  if(cnt=green1_cnt) then
  cnt_enb<="0";
  end if;
  when st1=>
  lgt1_red<="0";
  lgt1_yellow<="1";
  lgt1_green<="0";
  lgt2_red<="1";
  lgt2_yellow<="0";
  lgt2_green<="0";
  lgt3_red<="0";
  lgt3_yellow<="1";
  lgt3_green<="0";
  lgt4_red<="1";
  lgt4_yellow<="0";
  lgt4_green<="0";
  cnt_enb<="1";
  if(cnt=yellow1_cnt) then
  cnt_enb<="0";
  end if;
  when st2=>
  lgt1_red<="1";
  lgt1_yellow<="0";
  lgt1_green<="0";
  lgt2_red<="0";
  lgt2_yellow<="0";
  lgt2_green<="1";
  lgt3_red<="1";
  lgt3_yellow<="0";
  lgt3_green<="0";
  lgt4_red<="0";
  lgt4_yellow<="0";
  lgt4_green<="1";
  cnt_enb<="1";
  if(cnt=green2_cnt) then
  cnt_enb<="0";
  end if;
  when st3=>
  lgt1_red<="1";
  lgt1_yellow<="0";
  lgt1_green<="0";
  lgt2_red<="0";
  lgt2_yellow<="1";
  lgt2_green<="0";
  lgt3_red<="1";
  lgt3_yellow<="0";
  lgt3_green<="0";
  lgt4_red<="0";
  lgt4_yellow<="1";
  lgt4_green<="0";
  cnt_enb<="1";
  if(cnt=yellow2_cnt) then
  cnt_enb<="0";
  end if;
  end case;
  end process;
  end rtl;

相关搜索

相似文章