简易交通灯控制电路

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


程序总体设计
分频 1hz 时钟 控制 各 个 状 系 统 时 钟 信 号 分频 分频时钟 态 转 变 个位 十位 七段译码 七段译码
黄灯闪烁控制
绿红亮 65s 黄闪 5s
全局控制信号 reset
首先,输入的10Hz 的系统时钟和全局控制端 reset ,输出为个位数字的七段 译码,十位数字七 段译码以及各个灯最后状态。 然后由于系统时钟 频率大,第一要进行分频,使其成为1Hz 的时钟信 号,第 二利用分频后的时钟信号对电路进行控制, 开始先对状态跳转进行控制,,用 case 语句控制 三灯亮与灭,紧跟着进行倒计时的过程。
时序说明: 此模块接受(系统时钟)sysclk_10Hz 和(全局复位)reset 的控制,均为上升沿触发, 当 reset 为高电平时,电路复位,重新开始工作。 当reset 为低电 平时,电路正常工作。 时钟上升沿 触发,对[3:0]din_1s (显示器个位数据)进行译码, 输出到 [6:0]led_data_1s(显示器个位数据的译 码);
清零端为低 初始状态 black 第一个状态 Green Enable=0, Status=1 Enable=1
Enable=0, Status=1
Enable=0, 第三个状态 Red Status=1 第二个状态 Yellow Enable=1
Enable=1
假设在 0 时刻,加上系统时钟,首先要进行 reset 清零,这时在控制模块的 计数器会清零,三 个灯都是灭的状态,控制状态跳转的使能端enable 等于0,等待 着清零结束,开始工作;七段译码也 不会显示。 在 reset 变低之后,系统开始正常工作。 首先是分频时钟开始工作,在计数 器达到第一个 25000000 之前,分频时钟都是低电位,到 25000000 的时候分频时钟 的第一个上升沿来临, 此时状态控制开始运转,先工作的是绿灯,它会经 过从 39 到0 的倒计时过程,同时译码模块也开始 工作,颜色控制colour 是100,表征绿灯的点亮, 经七段译码,这个倒计时数字也会同步显示出来
简易交通灯控制电路
12电信2班 刘超凡 李 莹
设计要求 设计思路及步骤 仿真波形 预期结果
设计要求
完成简单十字路口直行的交通灯控制电路设计。 (1)十字路口,南北方向红:黄:绿为20s:5s:40s且可
调;
(2)工作时钟10hz; (3)各个方向的红黄绿等可用3个单色灯替代;
(4)选做黄灯1hz闪烁;
(5)完成全部流程:设计规范文档、模块设计、代码输入、 功能仿真、约束与综合、布局布线、时序仿真、下载验证 等。
设计思路
基本原理
用Verilog实现十字路口简易交通灯控制原理。南北向红黄 绿为20s:5s:40s 工作时钟10hz 黄灯1hz闪烁。Verilog语 言被广泛的应用在电路设计中。它的设计描述可被不同 的工具支持和实现。利用其自顶向下的设计方法来实现 交通灯控制原理,使道路交通正常运转。
3) 译码模块: 此模块主要有两个作用,控制黄灯闪烁以及对倒计时时间进行 译码输出。
绿灯 系 统 时 钟 控制 分 1Hz 频 产生 黄 灯 闪 烁 控 制 端 黄灯 红灯 亮 40s 闪 5s 亮 20s
各灯状态
输入
七 倒计时个位,由 控制模块输入 输入 段 译 码 器 输入 点亮对应数码管 点亮对应数码管
经过 40s(也就是经过 40*10 个系统时钟上升沿之 后)绿灯亮的时间到,会自动转到黄灯状态,黄灯 是5 到0 的倒计时过程,译码的显示跟绿灯一样, 只是黄灯的亮会加一个1Hz 的时钟控 - 4 - 制端,1 秒内只有半秒,黄灯是亮的,从 5秒到4.5 秒之间 黄灯是亮的,然后 4.5 到 3 是灭的,如此继续下去, 直到5 秒结束。又经过 5(5*10 个系统时钟上 升 沿),状态转移到红灯,然后显示及七段译码过程 与绿灯相似。至此一个周期已 经完成,接下来就 是循环执行以上步骤的过程,直到有reset 清零端 打断其正常工 作。
图 9 也是展示的黄灯在倒计时 08s 时结果,与图 8 不同的是在 color 和 y_flicker, 图 9 的light_selected 也是 010,表示此时输入信号 时黄灯在亮,然 而闪烁控制端 y_flicker 为 0,表示 此时输出的黄灯应该是灭的,实际上通过图 8 和图 9 对比可以发现,它实现了黄灯闪烁的功能(05s 的前半秒黄灯是亮的,后半 秒是灭的)。
对 [3:0]din_10s (显示器十位数据) 进行译码,输 出到 [6:0]led_data_10s (显示器十位数据的译 码) 。这两个译码输出端口最终连接到硬件上去, 实现7 段LED 数码管的显示。 时钟上升沿触发,对 哪个灯亮进行译码输出,light_sel[2]将高电平传入 到 colour[2]中,红灯开始亮,light_sel[0]将高电平 传入到 colour[0]中,绿灯开始亮。黄灯的闪烁在顶 层模块说明。
控制三个 灯亮与灭
输入:sysclk_10Hz 全局时钟信号,10Hz
Reset 全局复位端,高电平有效
输出:dout_1s 倒计时个位上数字
dout_10s 倒计时十位上数字
light_select 各个灯状态 light_select(只是控制亮与 灭,不 管黄灯闪烁)
时序说明:首先还是加上系统时钟之后,用 reset 清零,则计数器清零、所 有灯都不亮。但reset 为 1 之后模块开始工作,首先是计数器开始计数,随 之分频 时钟会根据计数器的变化而周期变化,绿 灯会先亮 40 秒,之后黄灯也会亮(闪烁 在译码模 块实现)5 秒,然后就是红灯亮20 秒,以后就是循 环以上步骤的过程, 同时在循环过程中,倒计数 的数会同步输出,各灯亮与灭状态也会同步输出。
控制模块的输出 dout_10s 倒计时十位上的数字 控 制模块的输出 y_flicker 黄灯闪烁控制端 高电平有效 图7 展示的是绿灯倒计时的某一瞬间,竖线所在的 位置是56s,这时候color 和light_selected 是100, 表示此时绿灯亮,而led_ctrl_1s 是0010000,对照 译 码表可以发现它显示的数字6,led_ctrl_10s 是 0010100,对照译码表可以发现它 显示的数字5, 十位和个位合起来就是数字56,正好与dout_10s (5)和 dout_1s (6)结果相对应。
仿真
sysclk_10Hz 系统时钟, 10Hz 为了方便,这里取2ns color 最终三灯状态 包括绿红灯亮,黄灯闪烁 light_selected 控制模块灯亮的标志 只控制亮与 不亮,不闪 led_ctrl_1s 倒计时个位七段译码 系统时钟 led_ctrl_10s 倒计时十位七段译码 系统输出 dout_1s 倒计时个位上的数字

2)控制模块: 此模块是本程序的主体,主要是控制各个灯颜色 (此模块并不控制黄灯的闪烁) 的转换,以及倒计时时间输出
系 统 时 钟 sysclk_10Hz 分频 分 频 时 钟 sub_clk_1Hz
控制
倒 计 时 各位
输出
Black Reset=0 输出
green 20s 之后 输出 倒 计 时 十位 red 5s 之后 yellow 40s 之后
第三输出个位和 十位上的数即可,要显示倒 计时是很容易实现的,直接用两个七段译码即可。 最后要控制黄灯的闪烁,还是要先产生分频时钟, 作为控制端,控制模块各灯 亮与灭作为输入,即 可产生黄灯闪烁的效果。 另外,作为全局控制端, reseHale Waihona Puke Baidu 信号是清零用的,在有时钟信号的地方就有 reset 。
时序图
时序说明:加上时钟信号之后,首先用 reset 清零, 然后控制模块会分频产 生分频时钟,根据分频时 钟的高与低,会控制各个状态之间的跳转,译码模 块会同 步通过数码管来显示倒计时数,并且会根 据译码模块黄灯闪亮控制端来输出各灯的具体状态。

1)顶层模块: 此模块只做例化,即对底层的控制模块和译码模块 进行例化,而不做逻辑设计。
图 8 展示的黄灯倒计时的某一瞬间,竖线显示的地 方,此时 color 和 light_selected 都是010,表示此 时是黄灯在亮,倒计时十位(dout_10s)和和个 位(dout_1s)合起来是05,而七段译码 led_ctrl_10s 是0001000,对照译码表可 以发现它 显示的数字0,led_ctrl_1s 是0000000,对照译码表 可以发现它显示的数字8,也与输出结果吻合,最 后一个y_flicker 为1,也表示此时黄灯可以亮。
总体上分为三个大模块,即:顶层模块、控制模块、译码模块(包括 显示模块)。
顶层模块
控制模块
译码模块
输入: sysclk 10Hz (全局时钟信号) Reset (全局复位端,高电平有效)
输出:color (最终各灯状态亮或闪)
led_ctrl_1s (个位七段译码)
led_ctrl_10s(十位七段译码

图10 展示的是红灯倒计时的某一刻,此时color 和light_selected 是100, 表示此时红灯亮,而七 段译码结果合起来是37,正好与下面的十位和 个位输出结果 一致。
实验调试结果
通过运用分频器、状态机、译码器、计数器等硬件, 最终完成直行交通灯的实现,绿灯亮40s黄灯闪烁 5s红灯亮20s。
倒计时十位,由 控制模块输入
输入端口: sysclk_10Hz 全局时钟信号,10Hz reset 全局复位端,高电平有效 din_1s 显示器个位数据,由控制模块输入
din_10s 显示器十位数据,由控制模块输入
light_sel 选择那盏灯亮,由控制模块的输入 输出端口: colour 最终显示哪盏灯亮,可与硬件相连 led_data_1s 显示器个位数据的译码 led_data_10s 显示器十位数据的译码
相关文档
最新文档