实验五交通灯控制

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
36 2019/12/4
编程下载
利用GW48-SOPC+开发系统实现设计的编程下 载。编程器件为EP1C12Q240C8。使用开发系 统 上 的 晶 振 提 供 的 全 局 时 钟 信 号 ( fclk = 50MHz)(Pin28),用琴键式按钮开关键1、 键2和键3(均为高有效)实现人工控制放行A方向 和B方向、复位功能,用8个发光二极管(高有效) D1~D8 , 分 别 显 示 输 出 信 号 s1[2..0] 、 s2[2..0]、f1s和f2s。
3. 创建下载用顶层文件
将 trgl_top.bdf 另 起 名 保 存 ( 如 trgl_top_p.bdf ) , 并 在 其 时 钟 输 入 引 脚 后 增加时钟分频模块clkdiv_50MHz_to_1Hz, 将输入时钟fclk = 50MHz分频为f = 1Hz, 即T =1s。
编译,引脚锁定。
预习时请画出其状态转移图。
20
2019/12/4
设计方案的选择
图文混合设计方法:先将电路划分为几个子模 块,每个子模块由Verilog HDL语言描述实现, 然后生成逻辑符号,顶层文件采用图形文件来 实现。
纯文本描述方法:每个子模块和顶层电路的连 接关系都采用Verilog HDL语言描述实现,对 子模块的调用采用模块元件例化的方法。
22 2019/12/4
• 工作状态控制器state_ctrl.v
23 2019/12/4
• 操作规则实现电路rule.v
24 2019/12/4
• 红绿灯信号生成器sig_gen.v
25 2019/12/4
• 顶层图形设计文件trgl_top.bdf
26 2019/12/4
2. 对trgl_top.bdf进行时序仿真。
6 2019/12/4
人工控制放行遵循如下限制规则:
• 有黄灯亮时,不允许立刻改变放行方向,必须 按正常运行到所需放行的方向时,才保持放行 该方向;
• 每个方向的放行时间不得小于某一最小值(假 定为30秒钟),以免车辆频繁起停。
• 只有在(绿,红)20s和(红,绿)20s状态 下,可以人工控制改变放行方向,即直接跳转 到下一状态。
该控制器的逻辑模型可分为三个部分:工作状 态控制器、操作规则实现电路以及红绿灯信号 生成器。
16 2019/12/4
(1)工作状态控制器
• 功能:根据输入信号(f1、f2和reset)确定系统 当前的工作状态是为“正常运行”状态或“A一直放 行”或“B一直放行”状态。
• 工作状态控制器是一个简单的具有三状态 ( normal,fr1,fr2 ) 的 有 限 状 态 机 。 其 输 入 分 别 为人工放行A方向的控制信号f1、人工放行B方向的 控制信号f2及复位信号reset(均为高有效),其 输出为人工控制时A方向、B方向的放行状态 .
5 2019/12/4
人工放行:若某一方向发生交通阻塞,则交通 警察按下该方向的放行按钮来人工控制放行该 方向,则红绿灯自动将相应方向的道路放行, 此后不会自动放行另一个方向的道路,直到疏 通后,按“恢复到正常状态”按钮,重新进入 正常运行状态。
如果某方向处于人工放行的状态,应有指示灯 指示这一情况。
27 2019/12/4
编程下载文件trgl_top_p.bdf
28 2019/12/4
方案二
1. 设计思路
将控制器的三部分电路有机地结合到一起,用 一个文件采用Verilog HDL语言实现,文件名 为trgl2.v。其中用到了两个reg型中间变量:
(1)state:工作状态控制状态机,具有3个状 态(normal, fr1, fr2)。
35 2019/12/4
引脚锁定
本实验采用模式3——所有按键为琴键式按键, 即当按下键时,输出为高电平;当松开键时, 输出为低电平。可通过按下键的时间的长短来 控制正脉冲的宽度。
clk:系统时钟信号,50MHz,接FPGA引脚 Pin28。注意应将下图中的J6插到Clock0的 位置,并将实验箱右下角“时钟频率选择”区 域Clock0的时钟选择跳线接到50MHz的位置。
方法
3 2019/12/4
实验要求
假定十字路口马路的A方向和B方向各有一 组红、黄、绿三个灯组成的交通灯,要求设 计一个交通红绿灯控制器,实现对这两组交 通灯的管理。正常时,交替放行十字交叉路 的两个方向,放行时间相等;交通堵塞时, 由交通警察人工控制某方向的放行时间,以 便按照交通负荷疏导阻塞车辆。
18 2019/12/4
(绿,红) (绿,红)
0s
30s 50s
(红,绿) (红,绿)
105s
135s 155s
210s
正常运行 可人工放行
正常运行
可人工放行
限制规(50s)分为两段,前30s为正常 运行状态下的最小放行时间,计时器正常计数;后20s为允许人工 放行时间,可根据工作状态控制器的状态机(f1s和f2s)进行判断, 是否欲人工放行另一方向,或是继续放行原方向,或是正常运行, 然后根据判断结果来确定计时器的计数值。
热码状态机编码(One-Hot State Machine Encoding)。
12 2019/12/4
采用Verilog HDL语言实现基于状态机的设计, 就是在时钟信号的触发下,完成两项任务: (1)用case或if-else语句描述出状态的转移; (2)描述状态机的输出信号。
13 2019/12/4
次态 输出
Mealy型状态图的表示
Moore型状态图的表示
11 2019/12/4
起始状态的选择
起始状态指电路复位后所处的状态,选 择一 个合理的起始状态将使整个系统简 捷高效。对 于有限状态机,必须有时钟 信号和复位信号!
状态编码
• 采用log2N个触发器来表示这N个状态 • 采用N个触发器来表示这N个状态——称为一位
具体功能要求如下 :
4 2019/12/4
在正常运行状态下,两组交通灯按以下规律自动进 行转换,在不同时刻分别放行不同方向上的车辆: (绿,红)50s(黄绿,红)5s(黄,红) 20s(红黄,红)20s(红,黄)10s
(红,绿)50s(红,黄绿)5s(红,黄) 20s(红,红黄)20s(黄,红)10s (绿,红)50s……
《计算机EDA设计》实验教程
实验五 交通红绿灯控制器
北航计算机学院 艾明晶
2019/12/4
1
内容概要
实验目的 实验要求 实验原理 实验方案 实验内容 实验报告
2 2019/12/4
实验目的
了解交通红绿灯控制器的工作原理。 掌握建立状态机的逻辑模型的方法。 掌握状态机的实现和多个状态机的组合使用
31 2019/12/4
仿真
使输入信号均无效,仿真至少一个循环周期的正常运行状 态。观察状态机state[1..0]以及输出信号f1s、f2s、 s1[2..0] 和 s2[2..0] 的 变 化 。 将 仿 真 结 果 保 存 为 trgl_top(normal).vwf。 正常运行时的仿真参考波形一:
32 2019/12/4
正常运行时的仿真参考波形二(210秒为一周期):
33 2019/12/4
在不同的时段给定不同的输入信号,在每种情况下 观察状态机state[1..0]以及输出信号f1s、f2s、 s1[2..0]和s2[2..0]的变化.
34 2019/12/4
设计下载用顶层文件 仿真完全正确后,在原设计基础上增加时钟 分频模块,将输入时钟fclk = 50MHz分 频为f = 1Hz,即T = 1s,形成下载用顶 层文件(可以为图形设计文件或.v文本设计 文件)。对下载用顶层文件进行全编译。
• 状态机包括组合逻辑部分和寄存器部分。组合逻辑 部分又包括次态逻辑和输出逻辑,分别用于状态译 码和产生输出信号;寄存器部分用于存储状态。
8 2019/12/4
• 状态机的次态是现态及输入信号的函数,输 出信号根据状态机的现态或输入信号而定。
• 状态机可分为两类:摩尔(Moore)型状 态机和米里(Mealy)型状态机。Moore 型状态机,其输出只为状态机当前状态的函 数,而与输入无关。Mealy型状态机,其 输出不仅与状态机当前状态有关,而且与输 入有关。
预习时请画出其状态转移图。
想一想,工作状态控制器为Mealy型状态
机还是Moore型状态机,为什么?
17
2019/12/4
(2)操作规则实现电路 • 功能:根据交通红绿灯控制器的功能要求,确定不
同工作状态下计时器的计数值。可用8位计数器来 实现定时计数。 • 正常运行时,计数器按照规定的定时要求加1计数; 若要人工放行某方向,只要使计时器运行到该放行 状态的最后一刻时,计时器保持此时的计数值,使 红绿灯信号生成器暂停状态的转移即可。
9 2019/12/4
输入 现态
次态逻 次态 辑
状态 现态 寄存器
输出逻 输出 辑
(1)Moore型状态机
输入 现态
次态逻 次态 辑
状态 寄存器 现态
输出逻 输出 辑
(2)Mealy型状态机
10 2019/12/4
状态机的3种表示方法
• 状态图、状态表和流程图
输入/输出
现态
次态
现态 输出
输入
(2)8位寄存器cnt[7..0]:用于红绿灯信号生 成器的定时计数。
采用3个always模块来实现这三部分电路(实 际 上 就 是 将 方 案 一 中 的 3 个 子 模 块 的 Verilog HDL描述放到一个文本文件中)。
29 2019/12/4
2. 在QuartusⅡ中进行时序仿真 3. 设计下载用顶层文件,编程下载
• 采用Verilog HDL语言设计顶层文件 • 引脚锁定,编程下载 .
30 2019/12/4
实验内容
分别画出工作状态控制器和红绿灯信号生成 器的状态转移图,操作规则实现电路的程序 流程图
采用方案一或方案二(有余力的同学也可以 两种方案都采用),按实验要求给出的功能 要求设计交通红绿灯控制器。
21 2019/12/4
实验方案
方案一
1. 设计思路 根据控制器的逻辑模型,将整个电路分为3个
子模块,即工作状态控制器state_ctrl.v、操作 规 则 实 现 电 路 rule.v 和 红 绿 灯 信 号 生 成 器 sig_gen.v,它们均采用Verilog HDL语言实现。 然后形成顶层图形设计文件trgl_top.bdf。
19 2019/12/4
(3)红绿灯信号生成器
• 功能:根据定时计数器的计数值来确定红绿灯信号 的输出。
• 这是一个简单的状态机,共有10个不同状态,有6 个输出,为s1[2..0]和s2[2..0],分别用于控制 A、B两个方向的红、黄、绿灯的亮或灭。
• 可以对照图5-1“正常运行状态下两组交通灯自动 转换规律”,根据计时器的计数值来确定红绿灯信 号生成器的输出。注意计时器的一个工作循环为一 个正常的红绿灯工作周期,即210秒。
输入信号和输出信号
输入信号
• clk:时钟信号(fclk = 50MHz); • f1:人工放行A方向的控制信号(由“放行A”按钮产
生,高有效); • f2:人工放行B方向的控制信号(由“放行B”按钮产
生,高有效); • reset:复位信号(由“恢复到正常状态”按钮产生,
高有效)。
14 2019/12/4
输出信号
• f1s、f2s:人工控制时A方向、B方向的放行 状态,驱动LED,高电平时点亮;
• s1[2..0]、s2[2..0]:交通灯信号输出,分 别用于控制A方向和B方向的红、黄、绿灯的亮 或灭,驱动LED,高电平时点亮。
15 2019/12/4
设计思路
根据其功能要求(如正常运行状态下的交通灯 自动转换规律,人工放行功能及限制规则), 确定其输出信号,以便控制两组交通灯的亮或 灭,并在交通岗内向交通警察显示人工放行的 状态。
7 2019/12/4
实验原理
基于状态机的设计
有限状态机
• 有限状态机(FSM,Finite State machine) 是时序电路设计中经常采用的一种方式,尤其适合 于设计数字系统的控制模块。在Verilog HDL中 采用case、if-else语句可以很好地描述基于状态 机的设计。
相关文档
最新文档