第五章 VHDL 状态机

更新时间:2024-06-17 18:12:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

理学院教案

课程名称 课程属性 课程教材 授课班级 授课题目 电子设计自动化 授课教师 孙小艳 必修课(∨) 专业选修课( ) 课程学分 校定公共选修课( ) 《EDA技术实用教程》 潘松主编 3.5 课程学时 学生人数 授课学时 64学时 2013级电子信息科学与技术 38 第五章 VHDL状态机 6 教学目的、要求(教学目标): 通过本部分的学习,了解状态机的基础知识,对状态编码及非法状态处理方式有个总体的认识,为Quartus II 中状态机的使用奠定基础。 教学重点: 掌握什么是状态机?状态机如何工作?状态机种类?状态编码方式?非法状态处理。 教学难点: 状态编码方式?非法状态处理? 授课方式、方法和手段: 实施多媒体教学与传统的板书相结合的教学方式;教学与课外阅读相结合,要求学生自行寻找或给学生提供足够的阅读文献。教学方法以讲授法和讨论法为主,对于原理知识以讲授法为主,同时采用专题讨论、课堂作业等方法。 作业及课外训练: 1. 什么是状态机? 2. 状态机的四种编码方式? 参考资料: [1] 《EDA技术实用教程》 潘松主编 本章小结: 通过本部分的学习,使学生对VHDL状态机有一个全面的了解和认识,为Quartus II软件中状态机相关设计奠定基础。共分为三节进行讲述:第一节 状态机概述 第二节 状态编码 第三节 非法状态处理。

理学院教案

教学内容 第一节 状态机概述 1. 什么是状态机? 时序电路分析:驱动方程,状态方程,输出方程,状态转换表,状态转换图。 状态机就是在有效状态内,在时钟的驱动下,通过给定初始状态,能够自动完成状态间的循环和相应状态的输出的时序逻辑电路。 状态机分为: 状态译码部分:根据输入以及系统当前的状态,由状态方程来决定下一状态的状态码。 状态输出部分:根据当前的状态码决定电路的当前输出。 状态转换部分:将下一状态转变为当前状态。 2. 状态机如何工作? 教学过程设计 3. 状态机的VHDL结构 双进程结构,时序进程REG完成状态转换,即把下一状态转换为当前状态,组合进程COM完成当前状态下的状态译码和状态输出。 4.与状态机相关的语法语句 类型定义语句 已定义数据类型: BIT,STD_LOGIC,BOOLEAN?? 用户自己定义新的数据类型:枚举,数组,记录,时间,实数等 如何自定义数据类型? TYPE 数据类型名 IS 数据类型定义; TYPE 数据类型名 IS 数据类型定义 OF 基本数据类型; Type week is (sun,mon,tue,wed,thu,fri,sat); Type st1 is array (0 to 15) of std_logic; Std_logic_vector(0 to 15) Type m_state is (st0,st1,st2,st3,st4,st5); Signal present_state,next_state : m_state; 枚举数据类型是使用文字符号来表示一组实际的二进制数。枚举类型的文字元素在综合器中使用一组二进制数值来表示的,具体数值由综合器来完成,用户不需介入。 子类型SUBTYPE ? 子类型是由TYPE所定义一的原数据类型的一个子集。满足原数据类型的所有约束条件,只是确定了数据范围。 ? SUBTYPE 子类型名 IS 基本数据类型 RANGE 约束范围 ? SUBTYPE digits IS INTEGER RANGE 0 to 9; 5. 状态机有哪几种? Moore状态机:输出只取决于系统当前的状态,而与系统的输入无关。 Mealy状态机:输出不仅取决于当前的状态,还取决于系统当前的输入。 6.状态机的优势 1)控制灵活 2)利于综合器的优化 3)能够良好的避免毛刺 4)程序结构清晰,层析分明 5)在高速运算和控制方面优势明显 6)可靠性高 状态机实例 用VHDL语言描述状态机的一般模式(结构): 1.说明部分:定义状态机使用的枚举数据类型 2.主控时序进程:在时钟的驱动下进行状态转换。 3.主控组合进程:根据当前状态完成状态译码和状态输出,并将状态译码反馈给主控时序进程,将状态输出给系统输出。 4.辅助进程:完成一些辅助算法。 第二节 状态编码 1.什么是状态编码 ? TYPE ST_TYPE(ST0,ST1,ST2,ST3,ST4); ? 定义枚举类型数据,综合器自动为符号性数据ST0,ST1,ST2,ST3,ST4分配相对应的二进制数据,到底分配的数据是什么,用户不必参与。 ? 用户也可以自己设置状态符号对应的二进制数据,直接用一个具体的数值来表示某一个状态。 ? 对“状态”进行数值设置的过程称为状态编码。 2.直接输出型编码 ? 将状态码与输出控制信号赋值相对应,状态编码直 接输出作为控制信号的编码方式为直接输出型编码 ? 优缺点? 优点: 速度快,无毛刺 缺点: 程序可读性差,难以有效控制非法状态? 3. 顺序编码 顺序编码:将状态用二进制数值顺序表示 优点:用的触发器少,非法状态少,容错技术好 缺点:译码组合逻辑复杂,没有利用FPGA的优点 4. 一位热码编码 用N个触发器来实现N个状态机,每一个状态由其中一个触发器的状态表示。 ? 优缺点: 优点:组合逻辑简单,状态转换速度高,利用了FPGA本身的特性 缺点:非法状态处理困难 第三节 非法状态处理 1.非法状态:不在状态机有效循环状态之内的状态 2. 自启动状态机,能够在非法状态下回归到有效状态内 3. 非自启动状态机,一旦进入非启动项,就无法回到有效状态范围内 ? 一个完整的状态机设计,需要考虑非法状态的处理。 剩余状态不多的时候,采用剩余状态处理方式: ? WHEN OTHERS => next_state<=st0; ? 对一位热码编码方式,6状态的状态机将有58种剩余状态,剩余状态处理方式将造成资源的过度消耗。 ? 对于一位热码编码方式,如何避免非法状态又不至于造成过度的资源消耗呢? 对于一位热码编码,正常状态下,只能有一个触发器的状态为‘1’,因此可以通过判断状态编码中‘1’的个数,来判断无效状态 ? 当发现有多个状态触发器为‘1’时,产生alarm信号,表示进入了非法状态,进行复位操作。 非法状态处理是状态机设计过程中必须的一部分,为了避免状态机在进入非法状态时能够回复到正常状态,需要进行非法状态的处理 ? 非法状态处理要区分状态码的编码方式及剩余状态的多少,结合资源的使用情况来确定: ? 非法状态不多时,采用剩余状态处理方法; ? 非法状态过多时,需要考虑资源浪费,选择好的办法解决非法状态。

本文来源:https://www.bwwdw.com/article/b6k3.html

Top