第五章 VHDL状态机.ppt
文本预览下载声明
第五章 VHDL状态机 电子信息工程学院 董素鸽 主要内容 5.1 状态机概述 什么是状态机? 时序电路分析:驱动方程,状态方程,输出方程,状态转换表,状态转换图。 时序电路设计?(思考) 状态机就是在有效状态内,在时钟的驱动下,通过给定初始状态,能够自动完成状态间的循环和相应状态的输出的时序逻辑电路。 状态机分为状态译码部分:根据输入以及系统当前的状态,由状态方程来决定下一状态的状态码。状态输出部分:根据当前的状态码决定电路的当前输出。状态转换部分:将下一状态转变为当前状态。 状态机如何工作 状态机的VHDL结构 状态译码,状态输出,状态转换 双进程结构,时序进程REG完成状态转换,即把下一状态转换为当前状态,组合进程COM完成当前状态下的状态译码和状态输出。 与状态机相关的语法语句 类型定义语句 已定义数据类型: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; NATURAL POSITIVE 状态机有哪几种? Moore状态机 输出只取决于系统当前的状态,而与系统的输入无关 Mealy状态机 输出不仅取决于当前的状态,还取决于系统当前的输入。 状态机的优势 1.控制灵活 2.利于综合器的优化 3.能够良好的避免毛刺 4.程序结构清晰,层析分明 5.在高速运算和控制方面优势明显 6.可靠性高 状态机实例 用VHDL语言描述状态机的一般模式(结构): 1.说明部分:定义状态机使用的枚举数据类型 2.主控时序进程:在时钟的驱动下进行状态转换。 3.主控组合进程:根据当前状态完成状态译码和状态输出,并将状态译码反馈给主控时序进程,将状态输出给系统输出。 4.辅助进程:完成一些辅助算法。 例 5-1 例5-1状态机的时序图 5.2 Moore状态机 Moore状态机概念 输出只取决于系统当前的状态,而与系统的输入无关 多进程Moore状态机实例 多进程Moore状态机 (以A/D转换控制器为实例) 用状态机实现A/D控制器的好处:速度快 用CPU或单片机:编程简单,控制灵活,但周期长,速度慢 A/D控制器,区别于A/D转换器。A/D控制器来控制A/D转换器的工作。控制A/D转换器的数据读入,转换开始,转换完毕数据的读取等工作。 多进程Moore状态机实例 ADC0809控制器 0809控制器 状态转换图 程序实例: 例5-2 例5-2 程序解析 COM,REG,LATCH1三个进程 COM:状态译码和状态输出 REG:状态转换 LATCH1:转换数据锁存 输入输出信号作用解析: ALE:模拟信号通道地址锁存(为‘1’时读入待转换的模拟信号) START:A/D转换启动信号 LOCK:数据锁存进程锁存数据信号,为‘1’时锁存 OE:数据输出有效信号,为‘1’时输出转换好的数据 EOC:0809转换状态信号,为‘0’时表示正在进行A/D转换,为‘1’时表示转换完毕,可以输出。 ADDA:模拟信号进入通道选择信号,为‘0’时选通道0,为‘1’时选通道1 Q:0809A/D转换后的数字输出数据,交给控制器锁存并输出 ADC0809控制器时序分析 st0,st1,st2,st3,st4 例5-3 程序解析 在例5-2中,COM进程完成了状态译码和状态输出两个任务。此进程可以拆分为两个进程,来分别完成状态译码和状态输出工作 例5-3 COM1完成状态译码 COM2完成状态输出 程序最终结果与例5-2无任何差别,只是在结构上更加
显示全部