《EDA实验教程红绿》PPT课件.ppt
计算机计算机EDA设计实验教程设计实验教程实验五实验五交通红绿灯控制器交通红绿灯控制器北航计算机学院 艾明晶10/28/20221内容概要v实验目的目的v实验要求要求v实验原理原理v实验方案方案v实验内容内容 v实验报告告10/28/20222n了解交通了解交通红绿灯控制器的工作原理。灯控制器的工作原理。n掌握建立状掌握建立状态机的机的逻辑模型的方法。模型的方法。n掌握状掌握状态机的机的实现和多个状和多个状态机的机的组合使用合使用方法方法 实验目的10/28/20223假定十字路口假定十字路口马路的路的A方向和方向和B方向各有一方向各有一组红、黄、黄、绿三个灯三个灯组成的交通灯,要求成的交通灯,要求设计一个交通一个交通红绿灯控制器,灯控制器,实现对这两两组交交通灯的管理。正常通灯的管理。正常时,交替放行十字交叉路,交替放行十字交叉路的两个方向,放行的两个方向,放行时间相等;交通堵塞相等;交通堵塞时,由交通警察人工控制某方向的放行由交通警察人工控制某方向的放行时间,以,以便按照交通便按照交通负荷疏荷疏导阻塞阻塞车辆。具体功能要求如下具体功能要求如下:实验要求10/28/20224在在正正常常运运行行状状态下下,两两组交交通通灯灯按按以以下下规律律自自动进行行转换,在不同,在不同时刻分刻分别放行不同方向上的放行不同方向上的车辆:(绿,红)50s(黄黄绿,红)5s(黄黄,红)20s(红黄,黄,红)20s(红,黄),黄)10s(红,绿)50s(红,黄黄绿)5s(红,黄黄)20s(红,红黄)黄)20s(黄,黄,红)10s(绿,红)50s 10/28/20225人工放行人工放行:若某一方向:若某一方向发生交通阻塞,生交通阻塞,则交通交通警察按下警察按下该方向的放行按方向的放行按钮来人工控制放行来人工控制放行该方向,方向,则红绿灯自灯自动将相将相应方向的道路放行,方向的道路放行,此后不会自此后不会自动放行另一个方向的道路,直到疏放行另一个方向的道路,直到疏通后,按通后,按“恢复到正常状恢复到正常状态”按按钮,重新,重新进入入正常运行状正常运行状态。如果某方向如果某方向处于人工放行的状于人工放行的状态,应有指示灯有指示灯指示指示这一情况。一情况。10/28/20226v人工控制放行遵循如下限制人工控制放行遵循如下限制规则:有有黄黄灯灯亮亮时,不不允允许立立刻刻改改变放放行行方方向向,必必须按按正正常常运运行行到到所所需需放放行行的的方方向向时,才才保保持持放放行行该方向;方向;每每个个方方向向的的放放行行时间不不得得小小于于某某一一最最小小值(假假定定为30秒秒钟),以免),以免车辆频繁起停。繁起停。只只有有在在(绿,红)20s和和(红,绿)20s状状态下下,可可以以人人工工控控制制改改变放放行行方方向向,即即直直接接跳跳转到下一状到下一状态。10/28/20227n基于状基于状态机的机的设计有限状有限状态机机 有限状有限状态机(机(FSM,Finite State machine)是)是时序序电路路设计中中经常采用的一种方式,尤其适合于常采用的一种方式,尤其适合于设计数字系数字系统的控制模的控制模块。在。在Verilog HDL中采中采用用case、if-else语句可以很好地描述基于状句可以很好地描述基于状态机机的的设计。状状态机包括机包括组合合逻辑部分和寄存器部分。部分和寄存器部分。组合合逻辑部分又包括次部分又包括次态逻辑和和输出出逻辑,分,分别用于状用于状态译码和和产生生输出信号;寄存器部分用于存出信号;寄存器部分用于存储状状态。实验原理10/28/20228状状态机的次机的次态是是现态及及输入信号的函数,入信号的函数,输出信号根据状出信号根据状态机的机的现态或或输入信号而定。入信号而定。状状态机可分机可分为两两类:摩:摩尔(Moore)型状型状态机和米里(机和米里(Mealy)型状型状态机。机。Moore型状型状态机,其机,其输出只出只为状状态机当前状机当前状态的函数,的函数,而与而与输入无关。入无关。Mealy型状型状态机,其机,其输出出不不仅与状与状态机当前状机当前状态有关,而且与有关,而且与输入有入有关。关。10/28/20229输出输出现态现态次态次态现态现态输入输入次态逻次态逻辑辑状态状态寄存器寄存器输出逻输出逻辑辑输出输出现态现态次态次态现态现态输入输入次态逻次态逻辑辑状态状态寄存器寄存器输出逻输出逻辑辑(1)Moore型状态机型状态机(2)Mealy型状态机型状态机10/28/202210状状态机的机的3种表示方法种表示方法 状状态图、状、状态表和流程表和流程图 输输 入入/输输出出现态现态次态次态输入输入现态现态输出输出次态次态输出输出Mealy型状态图的表示型状态图的表示 Moore型状态图的表示型状态图的表示 10/28/202211起始状起始状态的的选择 起始状起始状态指指电路复位后所路复位后所处的状的状态,选择一一个合理的起始状个合理的起始状态将使整个系将使整个系统简捷高效。捷高效。对于有限状于有限状态机,必机,必须有有时钟信号和复位信号!信号和复位信号!状状态编码 采用采用log2N个触个触发器来表示器来表示这N个状个状态 采用采用N个触个触发器来表示器来表示这N个状个状态称称为一位一位热码状状态机机编码(One-Hot State Machine Encoding)。)。10/28/202212采用采用VerilogHDLVerilogHDL语言言实现基于状基于状态机的机的设计,就是在,就是在时钟信号的触信号的触发下,完成两下,完成两项任任务:(1 1)用)用casecase或或if-elseif-else语句描述出状句描述出状态的的转移;移;(2 2)描述状)描述状态机的机的输出信号。出信号。10/28/202213n输入信号和入信号和输出信号出信号 输入信号入信号clk:时钟信号(信号(fclk=50MHz););f1:人工放行:人工放行A方向的控制信号(由方向的控制信号(由“放行放行A”按按钮产生,高有效);生,高有效);f2:人工放行:人工放行B方向的控制信号(由方向的控制信号(由“放行放行B”按按钮产生,高有效);生,高有效);reset:复位信号(由:复位信号(由“恢复到正常状恢复到正常状态”按按钮产生,生,高有效)。高有效)。10/28/202214输出信号出信号 f1s、f2s:人工控制人工控制时A方向、方向、B方向的放行方向的放行状状态,驱动LED,高高电平平时点亮;点亮;s12.0、s22.0:交通灯信号交通灯信号输出,分出,分别用于控制用于控制A方向和方向和B方向的方向的红、黄、黄、绿灯的亮灯的亮或或灭,驱动LED,高高电平平时点亮。点亮。10/28/202215n设计思路思路根据其功能要求(如正常运行状根据其功能要求(如正常运行状态下的交通灯下的交通灯自自动转换规律,人工放行功能及限制律,人工放行功能及限制规则),),确定其确定其输出信号,以便控制两出信号,以便控制两组交通灯的亮或交通灯的亮或灭,并在交通,并在交通岗内向交通警察内向交通警察显示人工放行的示人工放行的状状态。该控制器的控制器的逻辑模型可分模型可分为三个部分:工作状三个部分:工作状态控制器、操作控制器、操作规则实现电路以及路以及红绿灯信号灯信号生成器。生成器。10/28/202216(1)(1)工作状工作状态控制器控制器 功功能能:根根据据输入入信信号号(f1、f2和和reset)确确定定系系统当当前前的的工工作作状状态是是为“正正常常运运行行”状状态或或“A一一直直放放行行”或或“B一直放行一直放行”状状态。工工 作作 状状 态 控控 制制 器器 是是 一一 个个 简 单 的的 具具 有有 三三 状状 态(normal,fr1,fr2)的的有有限限状状态机机。其其输入入分分别为人人工工放放行行A方方向向的的控控制制信信号号f1、人人工工放放行行B方方向向的的控控制制信信号号f2及及复复位位信信号号reset(均均为高高有有效效),其其输出出为人工控制人工控制时A方向、方向、B方向的放行状方向的放行状态.预习时请画出其状画出其状态转移移图。想一想,工作状想一想,工作状态控制器控制器为MealyMealy型状型状态机机还是是MooreMoore型状型状态机,机,为什么?什么?10/28/202217(2 2)操作)操作规则实现电路路 功能:根据交通功能:根据交通红绿灯控制器的功能要求,确定不灯控制器的功能要求,确定不同工作状同工作状态下下计时器的器的计数数值。可用。可用8位位计数器来数器来实现定定时计数。数。正常运行正常运行时,计数器按照数器按照规定的定定的定时要求加要求加1计数;数;若要人工放行某方向,只要使若要人工放行某方向,只要使计时器运行到器运行到该放行放行状状态的最后一刻的最后一刻时,计时器保持此器保持此时的的计数数值,使,使红绿灯信号生成器灯信号生成器暂停状停状态的的转移即可。移即可。10/28/202218设计技巧设计技巧:将放行某方向的整个时间(:将放行某方向的整个时间(50s)分为两段,前)分为两段,前30s为正常为正常运行状态下的最小放行时间,计时器正常计数;后运行状态下的最小放行时间,计时器正常计数;后20s为允许人工为允许人工放行时间,可根据工作状态控制器的状态机(放行时间,可根据工作状态控制器的状态机(f1s和和f2s)进行判断,)进行判断,是否欲人工放行另一方向,或是继续放行原方向,或是正常运行,是否欲人工放行另一方向,或是继续放行原方向,或是正常运行,然后根据判断结果来确定计时器的计数值。然后根据判断结果来确定计时器的计数值。(绿绿,红红)正常运行正常运行正常运行正常运行可人工放行可人工放行可人工放行可人工放行30s50s135s155s210s105s0s(红红,绿绿)(红红,绿绿)(绿绿,红红)正常运行正常运行限制规则示意图限制规则示意图 10/28/202219(3 3)红绿灯信号生成器灯信号生成器 功能:根据定功能:根据定时计数器的数器的计数数值来确定来确定红绿灯信号灯信号的的输出。出。这是一个是一个简单的状的状态机,共有机,共有10个不同状个不同状态,有,有6个个输出,出,为s12.0和和s22.0,分分别用于控制用于控制A、B两个方向的两个方向的红、黄、黄、绿灯的亮或灯的亮或灭。可以可以对照照图5-1“正常运行状正常运行状态下两下两组交通灯自交通灯自动转换规律律”,根据,根据计时器的器的计数数值来确定来确定红绿灯信灯信号生成器的号生成器的输出。注意出。注意计时器的一个工作循器的一个工作循环为一一个正常的个正常的红绿灯工作周期,即灯工作周期,即210秒。秒。预习时请画出其状画出其状态转移移图。10/28/202220n设计方案的方案的选择 图文混合文混合设计方法:先将方法:先将电路划分路划分为几个子模几个子模块,每个子模,每个子模块由由Verilog HDL语言描述言描述实现,然后生成然后生成逻辑符号,符号,顶层文件采用文件采用图形文件来形文件来实现。纯文本描述方法:每个子模文本描述方法:每个子模块和和顶层电路的路的连接关系都采用接关系都采用Verilog HDL语言描述言描述实现,对子模子模块的的调用采用模用采用模块元件例化的方法。元件例化的方法。10/28/202221实验方案n方案一方案一1.设计思路思路根据控制器的逻辑模型,将整个电路分为3个子模块,即工作状态控制器、操作规则实现电路和红绿灯信号生成器sig,它们均采用Verilog HDL语 言 实 现。然 后 形 成 顶 层 图 形 设 计 文 件trgl_top.bdf。10/28/202222工作状工作状态控制器控制器state_ctrl.v 10/28/202223操作操作规则实现电路路rule.v 10/28/202224红绿灯信号生成器灯信号生成器sig 10/28/202225顶层图形形设计文件文件trgl_top.bdf10/28/2022262.对trgl_top.bdf进行行时序仿真。序仿真。3.创建建下载用下载用顶层文件文件将将 trgl_top.bdf另另 起起 名名 保保 存存(如如trgl_top_p.bdf),并并在在其其时钟输入入引引脚脚后后增增加加时钟分分频模模块clkdiv_50MHz_to_1Hz,将将输入入时钟fclk=50MHz分分频为f=1Hz,即即T=1s。编译,引脚,引脚锁定。定。10/28/202227编程下载文件编程下载文件trgl_top_p.bdf 10/28/202228n方案二方案二1.设计思路思路 将将控控制制器器的的三三部部分分电路路有有机机地地结合合到到一一起起,用用一一个个文文件件采采用用Verilog HDL语言言实现,文文件件名名为trgl2.v。其中用到了两个其中用到了两个reg型中型中间变量:量:(1)state:工工作作状状态控控制制状状态机机,具具有有3个个状状态(normal,fr1,fr2)。)。(2)8位位寄寄存存器器cnt7.0:用用于于红绿灯灯信信号号生生成器的定成器的定时计数。数。采采用用3个个always模模块来来实现这三三部部分分电路路(实际上上就就是是将将方方案案一一中中的的3个个子子模模块的的Verilog HDL描述放到一个文本文件中)。描述放到一个文本文件中)。10/28/2022292.在在Quartus中中进行行时序仿真序仿真 3.设计下下载用用顶层文件,文件,编程下程下载 采用采用Verilog HDL语言言设计顶层文件文件 引脚引脚锁定,定,编程下程下载.10/28/202230n分分别画出工作状画出工作状态控制器和控制器和红绿灯信号生成灯信号生成器的状器的状态转移移图,操作,操作规则实现电路的程序路的程序流程流程图 n采用方案一或方案二(有余力的同学也可以采用方案一或方案二(有余力的同学也可以两种方案都采用),按两种方案都采用),按实验要求要求给出的功能出的功能要求要求设计交通交通红绿灯控制器。灯控制器。实验内容10/28/202231n仿真仿真 使使输入入信信号号均均无无效效,仿仿真真至至少少一一个个循循环周周期期的的正正常常运运行行状状态。观察察状状态机机state1.0以以及及输出出信信号号f1s、f2s、s12.0和和 s22.0的的 变 化化。将将 仿仿 真真 结 果果 保保 存存 为trgl_top(normal).vwf。正常运行正常运行时的仿真参考波形一:的仿真参考波形一:10/28/202232正常运行正常运行时的仿真参考波形二(的仿真参考波形二(210秒秒为一周期):一周期):10/28/202233在不同的在不同的时段段给定不同的定不同的输入信号,在每种情况下入信号,在每种情况下观察状察状态机机state1.0以及以及输出信号出信号f1s、f2s、s12.0和和s22.0的的变化化.10/28/202234n设计下下载用用顶层文件文件 仿仿真真完完全全正正确确后后,在在原原设计基基础上上增增加加时钟分分频模模块,将将输入入时钟fclk=50MHz分分频为f=1Hz,即即T=1s,形形成成下下载用用顶层文文件件(可可以以为图形形设计文文件件或或.v文文本本设计文件)。文件)。对下下载用用顶层文件文件进行全行全编译。10/28/202235n引脚引脚锁定定 本本实验采用模式采用模式3所有按所有按键为琴琴键式按式按键,即当按下即当按下键时,输出出为高高电平;当松开平;当松开键时,输出出为低低电平。可通平。可通过按下按下键的的时间的的长短来短来控制正脉冲的控制正脉冲的宽度。度。clk:系:系统时钟信号,信号,50MHz,接,接FPGA引脚引脚Pin28。注意。注意应将下将下图中的中的J6插到插到Clock0的的位置,并将位置,并将实验箱右下角箱右下角“时钟频率率选择”区区域域Clock0的的时钟选择跳跳线接到接到50MHz的位置。的位置。10/28/202236n编程下程下载 利利用用GW48-SOPC+开开发系系统实现设计的的编程程下下载。编程程器器件件为EP1C12Q240C8。使使用用开开发系系统 上上 的的 晶晶 振振 提提 供供 的的 全全 局局 时 钟 信信 号号(fclk=50MHz)(Pin28),用用琴琴键式式按按钮开开关关键1、键2和和键3(均均为高高有有效效)实现人人工工控控制制放放行行A方方向向和和B方方向向、复复位位功功能能,用用8个个发光光二二极极管管(高高有有效效)D1D8,分分 别 显 示示 输 出出 信信 号号 s12.0、s22.0、f1s和和f2s。10/28/202237n在在线校校验 下下载后后,仔仔细观察察:红绿灯灯应按按设定定的的时间规律律自自动切切换,D1D8八八个个LED分分别对应的的是是:A方方向向的的红黄黄绿,B方方向的向的红黄黄绿,A方向的放行状方向的放行状态,B方向的放行状方向的放行状态。然然后后按按下下键1,表表示示欲欲人人工工放放行行A方方向向,则相相应LED有有显示示;同同时两两个个方方向向的的红绿灯灯按按正正常常运运行行规律律自自动切切换,当当运行到放行运行到放行A方向方向时,则保持放行保持放行该方向。方向。再再按按下下键2,表表示示欲欲人人工工放放行行B方方向向,则相相应LED有有显示示;同同时两两个个方方向向的的红绿灯灯按按正正常常运运行行规律律自自动切切换,当当运运行行到放行到放行B方向方向时,则保持放行保持放行该方向。方向。再再按按下下键3,表表示示清清除除人人工工方方向向的的控控制制,则交交通通灯灯开开始始自自动转换红黄黄绿灯的状灯的状态。10/28/202238n给出出红绿灯灯信信号号生生成成器器和和工工作作状状态控控制制器器的的状状态转移移图,以以及操作及操作规则实现电路的程序流程路的程序流程图。n给出出控控制制器器逻辑模模型型的的仿仿真真波波形形的的截截图,并并根根据据仿仿真真结果果详细分析交通分析交通红绿灯控制器的工作灯控制器的工作过程。程。n思思考考:当当正正值A A方方向向红灯灯亮亮,B B方方向向红灯灯与与黄黄灯灯均均亮亮时,若若按按下下A A方方向向放放行行按按钮,是是否否允允许立立刻刻变为A A方方向向绿灯灯亮亮,B B方方向向红灯灯亮亮?如如果果控控制制器器这样设计,实际可可能能会会发生生什什么么情情况况?正正确的确的设计应是怎是怎样?n想想一一想想:当当正正值A A方方向向绿灯灯亮亮,B B方方向向红灯灯亮亮时,若若又又按按下下了了A A方方向向放放行行按按钮,为什什么么是是当当计时器器计到到4949时,才才暂停停计数数,使使计数数值保保持持为4949;而而不不是是使使计时器器计到到3030时,就就暂停停计数数,使使计数数值保持保持为3030?如果?如果这样设计,会有什么缺陷?,会有什么缺陷?n在在设计中遇到了哪些中遇到了哪些问题,是如何解决的?,是如何解决的?n想一想想一想:本:本实验还可以可以扩展哪些功能?展哪些功能?实验报告10/28/202239