单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2064|回复: 1
收起左侧

Quartus EDA交通灯控制系统的FPGA调试与设计报告

[复制链接]
啥都有 发表于 2018-4-22 21:03 | 显示全部楼层 |阅读模式
前言
从最早的手牵皮带到20世纪50年代的电气控制,从采用计算机控制到现代化的电子定时监控,交通信号灯在科学化、自动化上不断地更新、发展和完善。
交通指挥灯是非裔美国人加莱特?摩根在1923年发明的。此前,铁路交通已经使用自动转换的灯光信号有一段时间了。但是由于火车是按固定的时刻表以单列方式运行的,而且火车要停下来不是很容易,因此铁路上使用的信号只有一种命令:通行。公路交通的红绿灯则不一样,它的职责在很大程度上是要告诉汽车司机把车辆停下来。新式的红绿灯能将闯红灯的人拍照下来。犯事的司机不久就会收到罚款单。有的红绿灯还具备监测车辆行驶速度的功能。
目前城市交通控制研究的新发展主要体现在城市交通网络的各个方面:
   区域交通信号灯和城市快速公路匝道口的新的控制方法上;实现区域和快速公路的集成控制;采用动态路由导航与交通网络控制结合:以实现先进车辆控制系统AvcS为主的智能交通系统(ITS);以实现先进交通管理系统ATMS和先进驾驶员信息系统ATIS为主的城市多智能体交通控制系统;以及一些辅助的交通策略如道路自动计费、公共交通优先等。
   可以说,在近百年的发展中,道路交通信号控制系统经历了无感应控制到有感应控制、手动控制到自动控制再到智能控制、单点控制(点控)到干线控制(线控)再到区域控制和网络控制(面控)的过程。
目录

前言              1

一、实验目的              3

二、题目:交通灯控制器              3

2.1 系统功能设计要求              3

2.2  数码管显示              3

2.3  计数              3

三、设计原理              3

3.1 交通灯控制器的状态转换              4

3.2电路符号              4

3.3 显示模块              4

四、使用软件Quartus              4

4.1 Quartus简介              5

五、设计方法              5

5.1 准备工作              5

5.2  设计输入              6

5.3  编译、综合              9

六、仿真准备              10

6.1 进行仿真               10

6.2设置节点               10

6.3 设置End Time               10

七、仿真波形              11

7.1 功能仿真               11

实验总结和心得              12


EDA设计专周
  • 实习目的
熟悉Quartus||的使用方法和步骤,熟悉FPGA硬件的调试方法。
  • 题目:交通灯控制器
实现十字路口的双向交通灯控制
2.1  系统功能设计要求
东西南北各设有一个红、黄、绿指示灯;一个2位7段数码管
东西方向:绿灯37秒-黄灯3秒-红灯20秒。
南北方向:绿灯17秒-黄灯3秒-红灯40秒。
当前信号灯状态显示
当前信号灯剩余时间计数和动态显示
2.2  数码管显示
用两组数码管,以倒计时方式显示两个方向允许通行或禁止通行的剩余时间。
2.3 计数
能实现正常的倒计时显示功能。能实现总体清理功能,计数器有初始状态
开始计数,对应状态的指示灯亮。
三、设计原理
3.1 交通灯控制器的状态转换
根据论文题目要求,将红绿灯的状态转换列成如
工作状态
南北方向
东西方向
S0
绿灯亮(17s)
红灯亮(20s)
S1
黄灯亮(3s)
红灯亮(20s)
S2
红灯亮(40s)
绿灯亮(37s)
S3
红灯亮(40s)
黄灯亮(3s)

3.2 电路符号
Clk为系统时钟信号输入端。r1 为东西方向红灯信号输出端,y1为东西方向黄灯信号输出端,g1为东西方向绿灯信号输出端。r2为南北方向红灯信号输出端,y2为南北方向黄灯信号输出端,g2为南北方向绿灯信号输出端。Digit1为十位数七段码,digit2为个位数七段码。
3.3 显示模块
     显示模块由两部分组成,一是由七段数码管组成的倒计时显示器,每个方向两个七段数码管;二是由发光二极管代替的交通灯,每个方向3个发光二极管。
四、使用软件:Quartus
4.1 Quartus简介
Quartus II 是Altera公司的综合性PLD/FPGA开发软件,原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware 支持Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完Quartus II可以在Windows、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面成从设计输入到硬件配置的完整PLD设计流程。
Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。
Maxplus II 作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。目前Altera已经停止了对Maxplus II 的更新支持,Quartus II 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。Altera在Quartus II 中包含了许多诸如SignalTap II、Chip Editor和RTL Viewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了Maxplus II 友好的图形界面及简便的使用方法。
Altera Quartus II 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。
  • 设计方法
5.1   准备工作:创建Quartus II项目
菜单“File/New Project Wizard”,
逐步设置:工作目录、项目名和实体名;是否添加设计文件;选择器件;是否使用第三方eda工具
注意:项目名、实体名、文件名要相同!
5.2   设计输入:采用HDL输入方式
新建文件(菜单File/New...)选择VHDL文件类型(VHDL  File),扩展名*.vhd
输入VHDL设计的代码
采用文本编辑法,即采用VHDL语言描述交通控制器,代码如下:

5.3 编译、综合
在Processing菜单选择Start Compilation 项(或者紫色的编译按钮),则自动进行编译,并且软件左侧出现Status状态窗口,给出编译步骤和执行进度。
若设计无错误,则给出编译报告和其他处理步骤的报告。
若有错误,则根据错误提示修改设计文件,重新编译。
  • 仿真准备
6.1 进行仿真:功能仿真
新建“激励信号”的波形文件: (菜单File/New...)选择波形文件类型(Wector Waveform File),扩展名*.vwf,打开波形编辑窗口
6.2  设置节点
选择要仿真的节点:在“Name”列空白处,右键菜单,如上图所示。选择菜单“Insert Node or Bus...”,在对话框选择“Nodes Finder”按钮
根据过滤条件,列出节点名称:List选择节点OK
根据需要编辑输入端口“激励信号”的波形
注意:保存波形文件,默认文件名即可。


6.3  设置End Time

、仿真波形
7.1功能仿真
在 Processing 菜单内选择Simulator Tool 项,可以实现更多的仿真功能(功能仿真、时序仿真;指定仿真时间长度,其他可选项等)。
如果仿真没有错误,则完成后自动打开仿真结果的波形窗口(仿真报告窗口)。


八、实验总结和心得
短短一个星期的EDA课程设计很快就结束了,这次设计使我对EDA的认识提高了一个层次,现在我能够熟练的使用Quartus2,能够用VHDL语言编写简单的、实用的小程序。这次EDA课程设计重点学习了交通灯程序的编写、调试。在整个课程设计的过程中,我查阅了大量关于交通灯设计的资料。
在设计的过程还应该多联系下实际情况,要了解实际情况下交通信号灯的工作情况,才能更好的完成此次的课程设计。在今后的工作学习中,我们不能仅仅把目光停留在课本上,而要更多的把理论联系到实际。


  1. library ieee;

  2. use ieee.std_logic_1164.all;

  3. use ieee.std_logic_unsigned.all;

  4. entity traffic is

  5. port(clk:in std_logic;

  6.       r1,r2,y1,y2,g1,g2:out std_logic;

  7.       cou:out integer range 0 to 37;

  8.       digit1,digit2:out std_logic_vector(6 downto 0));

  9. end traffic;

  10. architecture behavior of traffic is

  11. constant timemax:integer:=37;

  12. signal coun:integer range 0 to timemax;

  13. constant timeRG:integer:=17;

  14. constant timeRY:integer:=3;

  15. constant timeGR:integer:=37;

  16. constant timeYR:integer:=3;

  17. type state is (RG,RY,GR,YR);

  18. signal pr_state,nx_state :state;

  19. signal time:integer range 0 to timemax;

  20. signal temp1:integer range 0 to 10;

  21. signal temp2:integer range 0 to 10;

  22. begin

  23.   process(clk)

  24.   variable count:integer range 0 to timemax;

  25.   begin

  26.   if(clk'event and clk='1')then

  27.   count:=count+1;

  28.   if (count=time)then

  29.   pr_state<=nx_state;

  30.   count:=0;

  31.   end if;

  32. end if;

  33. coun<=count;

  34. cou<=coun;

  35. end process;

  36. process(pr_state)

  37. begin

  38. case pr_state is

  39. when RG=>

  40. r1<='1';r2<='0';y1<='0';y2<='0';g1<='0';g2<='1';

  41. nx_state<=RY;

  42. time <=timeRG;

  43. when RY=>

  44. r1<='1';r2<='0';y1<='0';y2<='1';g1<='0';g2<='0';

  45. nx_state<=GR;

  46. time <=timeRY;

  47.   when GR=>

  48. r1<='0';r2<='1';y1<='0';y2<='0';g1<='1';g2<='0';

  49. nx_state<=YR;

  50. time <=timeGR;

  51. when YR=>

  52. r1<='0';r2<='1';y1<='1';y2<='0';g1<='0';g2<='0';

  53. nx_state<=RG;

  54. time <=timeYR;

  55. end case;

  56. end process;

  57. process(coun)

  58. begin

  59. temp1<=coun/10;

  60. temp2<=coun mod 10;

  61. case temp1 is

  62. when 0=>digit1<="1111110";

  63. when 1=>digit1<="0110000";

  64. when 2=>digit1<="1101101";

  65. when 3=>digit1<="1111001";

  66. when 4=>digit1<="0110011";

  67. when 5=>digit1<="1011011";

  68. when 6=>digit1<="1011111";

  69. when 7=>digit1<="1110000";

  70. when 8=>digit1<="1111111";

  71. when 9=>digit1<="1111011";

  72. when others=>null;

  73. end case;

  74. case temp2 is

  75. when 0=>digit2<="1111110";

  76. when 1=>digit2<="0110000";

  77. when 2=>digit2<="1101101";

  78. when 3=>digit2<="1111001";

  79. when 4=>digit2<="0110011";

  80. when 5=>digit2<="1011011";

  81. when 6=>digit2<="1011111";

  82. when 7=>digit2<="1110000";

  83. when 8=>digit2<="1111111";

  84. when 9=>digit2<="1111011";

  85. when others=>null;

  86. end case;

  87. end process;

  88. end behavior;
复制代码


完整的Word格式文档51黑下载地址:
新建 Microsoft Office Word 2007 文档.docx (390.63 KB, 下载次数: 21)
回复

使用道具 举报

 楼主| 啥都有 发表于 2018-4-22 21:06 | 显示全部楼层
有详细的Quartus操作步骤
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51黑电子论坛单片机 联系QQ:125739409;技术交流QQ群582644647

Powered by 单片机教程网

快速回复 返回顶部 返回列表