12使用VHDL语言设计交通灯控制器.
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电路的倒计时秒数 在该模块中可设置东西路口河南北路口的信号灯维持秒数;
计时显示控制电路
将即倒数的秒数值转换成BCD码,利用七段显示器显示出来
红绿灯信号译码电路
负责控制路口红绿灯 利用开关切换手动与自动的模式
wk.baidu.com
1. 系统时序发生电路:CLK_gen
CLK_gen电路最主要的功能就是产生一些时序输出信 号,并将其用作后续几个电路的使用(enable)控制 与同步信号处理。
state6
0
1
1
others
00
0
110000
5. 红绿灯交通控制器顶层电路
红绿灯交通灯控制器顶层电路分为4个模块,它们是系 统时序发生电路clk_gen,红绿灯计数时间选择模块 traffic_mux,计时显示控制电路count_down,红绿 灯信号译码电路traffic_CON。 本节所要做的工作就 是将所有的子电路全部连接起来,进行时序验证。
30
5 20 5
3. 计时显示控制电路:count_down
该电路的核心部分是可置数的减法计数器电路和七段 译码输出显示电路。可置数的减法计数器电路是利用 if_then_else语句完成,两位七段译码输出显示电路则 利用case_when语句通过查表的方式构成。
Count_down仿真波形
要求设计一个交通灯控制器,假设此控制器安装 在由一条主干道和一条次干道汇合而成的十字路 口。
在自动控制模式时,主干道(东西)每次放行时间为 30s,次干道(南北)每次放行时间为20s,次干道黄 灯、主干道黄灯持续时间为5s。 要求交通灯控制器有复位功能,并要求所有交通灯的 状态变化在时钟脉冲上升沿处。
4. 红绿灯信号译码电路:traffic_CON
CLK
recount 1 light 010010
负责监控路口红绿灯之外 reset ena_1hz next_stage state状态 sign_stage state1 1 traffic_CON X X r0g1 00 提供切换手动模式与自动模式的开关。 仿真波形
顶层原理图
控制器输入信号有以下几种。
①CLK:由外界信号发生器提供1Hz的时钟脉冲信号。 ②RE:系统内部自复位信号。 ③K1:手动、自动切换钮(1:自动,0:手动)。 ④K2:红绿灯状态切换键(每按一次就切换一个状态)(使用在手动模 式下)。
①NEXT_S:当计数器计时完毕时,产生一个脉冲信号,作为转态触发 信号。 ②R[1..0]:负责显示红灯的亮灭(共2位,4种状态)。 ③G[1..0]:负责显示绿灯的亮灭(共2位,4种状态)。 ④Y[1..0]:负责显示黄灯的亮灭(共2位,4种状态)。 ⑤S[15..0]:负责将十位的计数数值转换成BCD码,并利用七段数码管显 示。 ⑥S[7..0]:负责将个位的计数数值转换成BCD码,并利用七段数码管显 示。
state2 state3 state4 state5
0 1 1 r0g1->roy1 01 1 011000 设南北路口红黄绿 3色灯为 r0、y0、g0,东西路口的红黄
1、y1、g1 0 ,自动操作模式和手动操作模式信 r0g1 00 0 010010 绿30 色灯为r1 0 1 1 2所示。 r0y1->g0r1 10 1 100001 号灯显示的真值表如表 0 1 0 r0y1 01 0 011000 表中定义了一些进程间的内部传递信号,以整合所有功能。 0 1信号(设定红绿灯电路的状态,在该程序里定义 1 g0r1->y0r1 11 1 100100 包括: state 8种状态)、 0 1 st_transfer 0 (在手动模式下判断是否转态的控制 g0r1 10 0 100001 信号)、 light[5:0] (在自动模式下该信号为是否转态的控制 0 1 1 y0r1->r0g1 00 1 010010 信号,其位数从高到低分别表示red1、red0、yellow1、 0 1 0 y0r1 11 0 100100 yellow0、green1、green0)。
2. 红绿灯计数时间选择模块:traffic_mux
负责输出显示器需要的值(即倒数的秒数),作为计 时显示控制电路的计数秒数。 traffic_mux仿真波形 该电路的核心部分就是数据选择电路,利用选择语句 case_when(单输入,多输出)实现4选1,其选择输 入信号sign_state是红绿灯信号译码电路产生的4种状 态信号,状态转换输出如下表所示。
时间(s)
状态sign_state 东西路口 南北路口 东西路口为通行状态,此时东西 00(状态0) 南北路口红灯亮 路口绿灯亮 东西路口为过渡状态,此时东西 01(状态1) 南北路口红灯亮 路口黄灯亮 南北路口为通行状态,此时南北路 10(状态2) 东西路口红灯亮 口绿灯亮 南北路口为过渡状态,此时南北路 11(状态3) 东西路口红灯亮 口黄灯亮
项目培训教程
培训目标:
1.通过具体项目,掌握可编程逻辑器件的概念与应用 2.掌握VHDL语言编程基本语法,有一定的编程能力
知识能力要求: 1.组合逻辑电路和时序逻辑电路的基本原理 2.C语言基础 3.初步掌握Quartus II软件,熟练应用原理图输 入以及波形仿真等功能
选用自顶向下的设计方法,整个系统可分为4个模块:
系统时序发生电路
提供为红绿灯信号译码电路提供的频率39kHz的扫描信号 提供为定时控制电路提供的使能(enable)控制信号 提供红绿灯信号译码电路提供的占空比为50%的秒闪烁信号;
红绿灯计数时间选择模块
负责输出显示器需要的值(即倒数的秒数值),作为定时控制
该电路的核心部分就是分频电路,通过对外接信号发 生器提供1Hz的时钟信号进行1000分频,得到一个周 期1s的输出使能信号ena_1Hz(占空比1:1000)和 flash_Hz(占空比1:1);1024分频后得到红绿灯信 号译码电路所需要的频率为39kHz的显示使能信号 ena_scan。 系统时序发生电路CLK_gen的仿真输出波形