1、 综合电子实践综合电子实践 Quartus ii 课程设计报告课程设计报告 姓名: 学号: 报告日期:2013/9/4 A 交通交通控制控制灯灯设计设计 1. 系统设计要求系统设计要求 (1) 在十字路口的两个方向上各设一组红、绿、黄灯,显示顺序为其中一个方向是(东 西方向)是绿灯、黄灯、红灯;另一方向(南北方向)是红灯、绿灯、黄灯。 (2) 设置一组数码管,以倒计时的方式显示允许通行或禁止通行的时间。其中绿灯、黄 灯、红灯的持续时间分别是 20s、5s 和 25s。 (3) 当各条路上任意一条上出现特殊情况时,如当消防车、救护车或其他需要优先放行 的车辆通过时,各方向上均是红灯,倒计时停止,
2、且显示数字在闪烁。当特殊运行 状态结束时,控制器恢复原来状态,继续正常运行。 2. 系统设计方案系统设计方案 2.1 系统设计思路系统设计思路 (1) 本系统设计中均采用混合设计的方法,将整体方案划分成若干个模块进行设计。采 用 VHDL 硬件描述语言和原理图描述相结合的方式,对多种应用电路进行设计,其 中底层电路(即模块电路)采用 VHDL 硬件描述语言方式实现,顶层电路采用原理 图描述方式实现。 (2) 系统设计流程 图 1 系统设计流程 提出系统设计要求 需求分析 模块化方案设计 底层电路设计-VHDL 模块 电路设计 顶层电路设计-原理图描 述+各模块连接 FPGA 整体方案设计实现
3、FPGA 整体方案编译仿真 硬件搭接和运行 FPGA 整体方案设计完成 功能仿真 时序仿真 2.2 系统设计方案分析系统设计方案分析 根据任务要求,计数器的值和交通灯亮灭关系如图 1 所示。 显然, 此任务设计的核心是一个技术范围为 050s 的计数器和一个根据计数值作出规定 反应的控制器。假设现有晶振为 20MHz,因此还需要分频电路来得到 10Hz 和 1Hz 的时钟, 最后要驱动七段数码管,还需要一个译码电路。 图 2 计数值和交通灯亮灭关系 根据上面的分析,交通控制灯系统框图如图 3 所示; 图 3 交通控制等系统框图 计数值 黄灯亮 绿灯亮 红灯亮 红灯亮 绿灯亮 黄灯亮 0 20
4、25 45 50 计数器 分频电路 控制器 分位译码电路 七段数码管驱动电路 红、黄、绿发光 二极管 七段数码管 Hold Reset 20MHz Clk 1Hz Clk 10Hz CPLD/FPGA 倒计时数字及 “闪 烁控制信号” 3.交通控制灯各模块电路设计交通控制灯各模块电路设计 3.1 控制模块控制模块 controller (1)控制模块的作用是根据计数器的数值控制发光二极管的亮、灭,以及输出倒计时数值 给七段数码管的分位译码电路。计数范围为 050。计数到 50 后,下一个时钟沿回复 到 0,开始下一计数。此外当检测到特殊情况(hold=”1”)发生时,计数器暂停计数, 无条件点
5、亮红色的发光二极管。 而系统复位信号 reset 则使计数器异步清零。 控制模块 controller 外部端口如图 4 所示。 图 4 控制模块 controller 外部端口 (2)控制模块的 VHDL 程序 程序说明:控制模块描述了功能键 hold 和 reset 的功能;同时对频率为 1Hz 的时钟进 行计数,通过计数值,对各个时间段内交通灯信号进行描述;此外,模块还给出了下 一步用于倒计时的信号 numa40和 numb40。 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; ent
6、ity controller is port(clock:in std_logic; reset:in std_logic; hold:in std_logic; flash:out std_logic; numa,numb:out integer range 0 to 25; reda,greena,yellowa:out std_logic; redb,greenb,yellowb:out std_logic ); end; architecture control of controller is signal countnum:integer range 0 to 50; begin process(clock) begin if reset=1 then countnum=0; elsif rising_edge(clock) then if hold=1 then flash=1; else flash=0; if countnum=47 then countnum=0; else countnum=countnum+1;