EDA实验教程-红绿灯-医学资料

上传人:杰猫 文档编号:119365253 上传时间:2020-01-13 格式:PPT 页数:39 大小:163.51KB
返回 下载 相关 举报
EDA实验教程-红绿灯-医学资料_第1页
第1页 / 共39页
EDA实验教程-红绿灯-医学资料_第2页
第2页 / 共39页
EDA实验教程-红绿灯-医学资料_第3页
第3页 / 共39页
EDA实验教程-红绿灯-医学资料_第4页
第4页 / 共39页
EDA实验教程-红绿灯-医学资料_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《EDA实验教程-红绿灯-医学资料》由会员分享,可在线阅读,更多相关《EDA实验教程-红绿灯-医学资料(39页珍藏版)》请在金锄头文库上搜索。

1、2020 1 12 1 计算机EDA设计 实验教程 实验五交通红绿灯控制器 北航计算机学院艾明晶 2020 1 12 2 内容概要 实验目的实验要求实验原理实验方案实验内容实验报告 2020 1 12 3 了解交通红绿灯控制器的工作原理 掌握建立状态机的逻辑模型的方法 掌握状态机的实现和多个状态机的组合使用方法 实验目的 2020 1 12 4 假定十字路口马路的A方向和B方向各有一组红 黄 绿三个灯组成的交通灯 要求设计一个交通红绿灯控制器 实现对这两组交通灯的管理 正常时 交替放行十字交叉路的两个方向 放行时间相等 交通堵塞时 由交通警察人工控制某方向的放行时间 以便按照交通负荷疏导阻塞车

2、辆 具体功能要求如下 实验要求 2020 1 12 5 在正常运行状态下 两组交通灯按以下规律自动进行转换 在不同时刻分别放行不同方向上的车辆 绿 红 50s 黄绿 红 5s 黄 红 20s 红黄 红 20s 红 黄 10s 红 绿 50s 红 黄绿 5s 红 黄 20s 红 红黄 20s 黄 红 10s 绿 红 50s 2020 1 12 6 人工放行 若某一方向发生交通阻塞 则交通警察按下该方向的放行按钮来人工控制放行该方向 则红绿灯自动将相应方向的道路放行 此后不会自动放行另一个方向的道路 直到疏通后 按 恢复到正常状态 按钮 重新进入正常运行状态 如果某方向处于人工放行的状态 应有指示

3、灯指示这一情况 2020 1 12 7 人工控制放行遵循如下限制规则 有黄灯亮时 不允许立刻改变放行方向 必须按正常运行到所需放行的方向时 才保持放行该方向 每个方向的放行时间不得小于某一最小值 假定为30秒钟 以免车辆频繁起停 只有在 绿 红 20s和 红 绿 20s状态下 可以人工控制改变放行方向 即直接跳转到下一状态 2020 1 12 8 基于状态机的设计有限状态机有限状态机 FSM FiniteStatemachine 是时序电路设计中经常采用的一种方式 尤其适合于设计数字系统的控制模块 在VerilogHDL中采用case if else语句可以很好地描述基于状态机的设计 状态机包

4、括组合逻辑部分和寄存器部分 组合逻辑部分又包括次态逻辑和输出逻辑 分别用于状态译码和产生输出信号 寄存器部分用于存储状态 实验原理 2020 1 12 9 状态机的次态是现态及输入信号的函数 输出信号根据状态机的现态或输入信号而定 状态机可分为两类 摩尔 Moore 型状态机和米里 Mealy 型状态机 Moore型状态机 其输出只为状态机当前状态的函数 而与输入无关 Mealy型状态机 其输出不仅与状态机当前状态有关 而且与输入有关 2020 1 12 10 2020 1 12 11 状态机的3种表示方法状态图 状态表和流程图 Mealy型状态图的表示 Moore型状态图的表示 2020 1

5、 12 12 起始状态的选择起始状态指电路复位后所处的状态 选择一个合理的起始状态将使整个系统简捷高效 对于有限状态机 必须有时钟信号和复位信号 状态编码采用log2N个触发器来表示这N个状态采用N个触发器来表示这N个状态 称为一位热码状态机编码 One HotStateMachineEncoding 2020 1 12 13 采用VerilogHDL语言实现基于状态机的设计 就是在时钟信号的触发下 完成两项任务 1 用case或if else语句描述出状态的转移 2 描述状态机的输出信号 2020 1 12 14 输入信号和输出信号输入信号clk 时钟信号 fclk 50MHz f1 人工放

6、行A方向的控制信号 由 放行A 按钮产生 高有效 f2 人工放行B方向的控制信号 由 放行B 按钮产生 高有效 reset 复位信号 由 恢复到正常状态 按钮产生 高有效 2020 1 12 15 输出信号f1s f2s 人工控制时A方向 B方向的放行状态 驱动LED 高电平时点亮 s1 2 0 s2 2 0 交通灯信号输出 分别用于控制A方向和B方向的红 黄 绿灯的亮或灭 驱动LED 高电平时点亮 2020 1 12 16 设计思路根据其功能要求 如正常运行状态下的交通灯自动转换规律 人工放行功能及限制规则 确定其输出信号 以便控制两组交通灯的亮或灭 并在交通岗内向交通警察显示人工放行的状态

7、 该控制器的逻辑模型可分为三个部分 工作状态控制器 操作规则实现电路以及红绿灯信号生成器 2020 1 12 17 1 工作状态控制器功能 根据输入信号 f1 f2和reset 确定系统当前的工作状态是为 正常运行 状态或 A一直放行 或 B一直放行 状态 工作状态控制器是一个简单的具有三状态 normal fr1 fr2 的有限状态机 其输入分别为人工放行A方向的控制信号f1 人工放行B方向的控制信号f2及复位信号reset 均为高有效 其输出为人工控制时A方向 B方向的放行状态 预习时请画出其状态转移图 想一想 工作状态控制器为Mealy型状态机还是Moore型状态机 为什么 2020 1

8、 12 18 2 操作规则实现电路功能 根据交通红绿灯控制器的功能要求 确定不同工作状态下计时器的计数值 可用8位计数器来实现定时计数 正常运行时 计数器按照规定的定时要求加1计数 若要人工放行某方向 只要使计时器运行到该放行状态的最后一刻时 计时器保持此时的计数值 使红绿灯信号生成器暂停状态的转移即可 2020 1 12 19 设计技巧 将放行某方向的整个时间 50s 分为两段 前30s为正常运行状态下的最小放行时间 计时器正常计数 后20s为允许人工放行时间 可根据工作状态控制器的状态机 f1s和f2s 进行判断 是否欲人工放行另一方向 或是继续放行原方向 或是正常运行 然后根据判断结果来

9、确定计时器的计数值 限制规则示意图 2020 1 12 20 3 红绿灯信号生成器功能 根据定时计数器的计数值来确定红绿灯信号的输出 这是一个简单的状态机 共有10个不同状态 有6个输出 为s1 2 0 和s2 2 0 分别用于控制A B两个方向的红 黄 绿灯的亮或灭 可以对照图5 1 正常运行状态下两组交通灯自动转换规律 根据计时器的计数值来确定红绿灯信号生成器的输出 注意计时器的一个工作循环为一个正常的红绿灯工作周期 即210秒 预习时请画出其状态转移图 2020 1 12 21 设计方案的选择图文混合设计方法 先将电路划分为几个子模块 每个子模块由VerilogHDL语言描述实现 然后生

10、成逻辑符号 顶层文件采用图形文件来实现 纯文本描述方法 每个子模块和顶层电路的连接关系都采用VerilogHDL语言描述实现 对子模块的调用采用模块元件例化的方法 2020 1 12 22 实验方案 方案一1 设计思路根据控制器的逻辑模型 将整个电路分为3个子模块 即工作状态控制器state ctrl v 操作规则实现电路rule v和红绿灯信号生成器sig gen v 它们均采用VerilogHDL语言实现 然后形成顶层图形设计文件trgl top bdf 2020 1 12 23 工作状态控制器state ctrl v 2020 1 12 24 操作规则实现电路rule v 2020 1

11、12 25 红绿灯信号生成器sig gen v 2020 1 12 26 顶层图形设计文件trgl top bdf 2020 1 12 27 2 对trgl top bdf进行时序仿真 3 创建下载用顶层文件将trgl top bdf另起名保存 如trgl top p bdf 并在其时钟输入引脚后增加时钟分频模块clkdiv 50MHz to 1Hz 将输入时钟fclk 50MHz分频为f 1Hz 即T 1s 编译 引脚锁定 2020 1 12 28 编程下载文件trgl top p bdf 2020 1 12 29 方案二1 设计思路将控制器的三部分电路有机地结合到一起 用一个文件采用Ver

12、ilogHDL语言实现 文件名为trgl2 v 其中用到了两个reg型中间变量 1 state 工作状态控制状态机 具有3个状态 normal fr1 fr2 2 8位寄存器cnt 7 0 用于红绿灯信号生成器的定时计数 采用3个always模块来实现这三部分电路 实际上就是将方案一中的3个子模块的VerilogHDL描述放到一个文本文件中 2020 1 12 30 2 在Quartus 中进行时序仿真3 设计下载用顶层文件 编程下载采用VerilogHDL语言设计顶层文件引脚锁定 编程下载 2020 1 12 31 分别画出工作状态控制器和红绿灯信号生成器的状态转移图 操作规则实现电路的程序

13、流程图采用方案一或方案二 有余力的同学也可以两种方案都采用 按实验要求给出的功能要求设计交通红绿灯控制器 实验内容 2020 1 12 32 仿真使输入信号均无效 仿真至少一个循环周期的正常运行状态 观察状态机state 1 0 以及输出信号f1s f2s s1 2 0 和s2 2 0 的变化 将仿真结果保存为trgl top normal vwf 正常运行时的仿真参考波形一 2020 1 12 33 正常运行时的仿真参考波形二 210秒为一周期 2020 1 12 34 在不同的时段给定不同的输入信号 在每种情况下观察状态机state 1 0 以及输出信号f1s f2s s1 2 0 和s2

14、 2 0 的变化 2020 1 12 35 设计下载用顶层文件仿真完全正确后 在原设计基础上增加时钟分频模块 将输入时钟fclk 50MHz分频为f 1Hz 即T 1s 形成下载用顶层文件 可以为图形设计文件或 v文本设计文件 对下载用顶层文件进行全编译 2020 1 12 36 引脚锁定本实验采用模式3 所有按键为琴键式按键 即当按下键时 输出为高电平 当松开键时 输出为低电平 可通过按下键的时间的长短来控制正脉冲的宽度 clk 系统时钟信号 50MHz 接FPGA引脚Pin28 注意应将下图中的J6插到Clock0的位置 并将实验箱右下角 时钟频率选择 区域Clock0的时钟选择跳线接到5

15、0MHz的位置 2020 1 12 37 编程下载利用GW48 SOPC 开发系统实现设计的编程下载 编程器件为EP1C12Q240C8 使用开发系统上的晶振提供的全局时钟信号 fclk 50MHz Pin28 用琴键式按钮开关键1 键2和键3 均为高有效 实现人工控制放行A方向和B方向 复位功能 用8个发光二极管 高有效 D1 D8 分别显示输出信号s1 2 0 s2 2 0 f1s和f2s 2020 1 12 38 在线校验下载后 仔细观察 红绿灯应按设定的时间规律自动切换 D1 D8八个LED分别对应的是 A方向的红黄绿 B方向的红黄绿 A方向的放行状态 B方向的放行状态 然后按下键1

16、表示欲人工放行A方向 则相应LED有显示 同时两个方向的红绿灯按正常运行规律自动切换 当运行到放行A方向时 则保持放行该方向 再按下键2 表示欲人工放行B方向 则相应LED有显示 同时两个方向的红绿灯按正常运行规律自动切换 当运行到放行B方向时 则保持放行该方向 再按下键3 表示清除人工方向的控制 则交通灯开始自动转换红黄绿灯的状态 2020 1 12 39 给出红绿灯信号生成器和工作状态控制器的状态转移图 以及操作规则实现电路的程序流程图 给出控制器逻辑模型的仿真波形的截图 并根据仿真结果详细分析交通红绿灯控制器的工作过程 思考 当正值A方向红灯亮 B方向红灯与黄灯均亮时 若按下A方向放行按钮 是否允许立刻变为A方向绿灯亮 B方向红灯亮 如果控制器这样设计 实际可能会发生什么情况 正确的设计应是怎样 想一想 当正值A方向绿灯亮 B方向红灯亮时 若又按下了A方向放行按钮 为什么是当计时器计到49时 才暂停计数 使计数值保持为49 而不是使计时器计到30时 就暂停计数 使计数值保持为30 如果这样设计 会有什么缺陷 在设计中遇到了哪些问题 是如何解决的 想一想 本实验还可以扩展哪些功能

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号