1、目目 录录 1 1 设计任务和要求设计任务和要求 2 2 1.1 设计任务 2 1.2 交通灯控制器的基本要求 2 2 2 工作原理及方案设计工作原理及方案设计 2 2 2.1 交通灯控制器的设计原理 2 2.2 交通灯控制器的基本方案 . 3 3 3 系统设计系统设计 4 4 3.1 计数器的设计 4 3.2 控制器的设计 4 3.3 分位器的设计 5 3.4 交通灯控制器的顶层原理 5 4 4 参考程序参考程序 6 6 4.1 计数器的程序 6 4.2 控制器的程序 . 7 4.3 分位电路程序 . 10 4.4. 七段译码电路的程序 11 5 5 系统调试与性能系统调试与性能分析分析 1
2、313 5.1 交通灯计数器波形图 . 13 5.2 控制器的波形图 13 5.3 分位的波形图 . 14 5.4 七段译码电路的波形图 . 14 2 1 设计任务和要求 1.1 设计任务 用 FPGA 实现一个智能交通灯系统,根据设计要求分析智能交通灯系统的基本原理, 设计系统框图,设计完成后给出 FPGA 占用资源分析。 1.2 交通灯控制器的基本要求 (1)道路足够宽,有双向六通道。车辆直行不允许车辆左拐,允许右拐。须另设左 拐时间。针对上述通行规则,车辆控制灯有直行() 、左拐()和右拐()三个绿 色指示灯、黄灯以及一个红色指示灯。红色指示灯亮,代表禁止车辆通行、一个方向灯亮 的顺序为
3、绿灯、黄灯、左拐灯、红灯,前三种灯亮时间等于另一侧的红灯亮时间。 (2)车辆正常通行时间为 40 秒,黄灯为 5 秒,左拐为 10 秒,由各方向设置的倒计 时显示器显示时间,向司机提剩余时间。当一个方向车流量加大时,自动调节。 (3)行人过马路需提出申请,且只在车辆直行时才能响应行人的请求,行人在申请 得到响应后方可穿越,穿越时间为 60 秒。 (4)交通警察有权随时指定系统停在某个状态,确保某个方向的车辆流通。 2 2 工作原理及方案设计 2.1 交通灯控制器的设计原理 交通灯控制器的核心范围是一个计数范围为 059 共(60 秒)的计数器和一个根据计 数值做出规定反映的控制器。 另外, 还
4、需要输入 CLK 时钟信号。 最后, 要驱动七段数码管, 显然还需要一个译码电路。 3 图 2.1 交通灯控制器原理图 2.2 交通灯控制器的基本方案 交通灯控制器的核心范围是一个计数范围为 059 共(60 秒)的计数器和一个根据计 数值做出规定反映的控制器。另外,作者所用的实验仪配备的晶振为 50MHZ,因此还需要 一个分频电路。最后,要驱动七段数码管,显然还需要一个译码电路。 4 图 2.2 交通灯控制器系统框图 3 系统设计 3.1 计数器的设计 这里需要的计数器的计数范围为 059。计到 59 后,下一个时钟沿恢复到 0,开始下 一轮计数。此外,当检测到特殊情况(hold=1)发生时
5、,计数器暂停计数,而系统恢复信 号则使计数器异步清 0。 3.2 控制器的设计 控制器的作用是根据计数器控制发光二极管的亮、灭,以及输出倒计时数值给七段数 译管的分位译码电路。此外,当检测到特殊情况时,无条件点亮红色的发光二极管。 由于控制器要对于数值进行判断,很容易想到用 IF 语句来实现。本设计采用利用时 计数器 控制器 红,黄,绿 发 光 二 极 分位译码电路 七段数码管 倒计时数字及 “闪烁控制信 Hold Reset Clk1Hz 5 钟沿的下降沿读取前级计数器的计数植,然后做出反应。 图 3.2 控制器符号框图 3.3 分位器的设计 因为控制器输出的倒计时数值可能是 1 位或 2
6、位十进制数, 所以在七段数码管的译码 电路前要加上分位电路(即将其分为 2 个 1 位的十进制数。 (如 25 分为 2 和 5,7 分为 0 和 7) 与控制器一样,分位电路同样可以由时钟驱动,也可以设计成纯组合逻辑电路。控制 器中,引入了寄存器。为了让读者开拓眼界,分位电路就用组合逻辑电路实现。 3.4 交通灯控制器的顶层原理 交通灯控制器的核心范围是一个计数范围为 059 共(60 秒)的计数器和一个根据计 数值做出规定反映的控制器。 另外, 还需要输入 CLK 时钟信号。 最后, 要驱动七段数码管, 显然还需要一个译码电路来完成交通灯控制器的设计。 控制器 数 码 显 示 器 Y R G G NA R G YNB N clk nb na G 6 图 3.4 交通灯控制器的顶层原理图 4 4 参考程序参考程序 4.1 计数器的程序 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity cnt120 is port(clk,rst,h