有限状态机概念.3_第1页
有限状态机概念.3_第2页
有限状态机概念.3_第3页
有限状态机概念.3_第4页
有限状态机概念.3_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VHDL有限状态机VHDL语言的基本语句1状态机概念:一类十分重要的时序电路许多数字电路的核心部件结构:组合逻辑部分(状态译码器和输出译码器)时序逻辑部分(寄存器)2状态机是纯硬件数字系统中的顺序控制电路,其运行方式上类似于控制灵活和方便的CPU,而在运行速度和工作可靠性方面都优于CPU。状态机结构模式相对简单,设计方案相对固定。状态机的VHDL表述丰富多样,程序层次分明,结构清晰,易读易懂;在排错、修改和模块移植方面也有其独到之点。在高速运算和控制方面,状态机具有巨大的优势。在VHDL中,一个状态机可以有多个进程构成,一个结构体中可以包含多个状态机,而一个单独的状态机(或多个并行运行的状态机)以顺序方式所能完成的运算和控制方面的工作与一个CPU的功能类似。因此,一个设计实体的功能便类似于一个含有并行运行的多CPU的高性能微处理器的功能。就运行速度而言:

状态机的状态变换周期只有一个时钟周期,而在每一个状态中,状态机可以完成许多并行的运算和控制操作,所以,一个完整的控制程序,即使用多个并行状态机构成,其状态数也是十分有限的。一般由状态机构成的硬件系统比CPU所能完成同样功能的软件系统的工作速度要高出三到五个数量级。

就可靠性而言:

由于CPU本身的结构特点与执行软件指令的工作方式决定了CPU不能获得圆满的容错保障,这已是不争的事实。而状态机系统不同,首先由于它是纯硬件电路构成,不存在CPU运行软件过程中许多固有的缺陷;其次是由于状态机设计中能使用各种完整的容错技术;第三是状态机从非法状态跳出进入正常状态的耗时十分短暂,通常只有2、3个时钟周期,约几十个ns,不足于对系统运行构成损坏,而CPU则是通过复位方式从非法运行方式中恢复过来,耗时达几十ms,这对于高速高可靠系统显然是无法容忍的。为什么要使用状态机?3状态机的结构状态译码器状态寄存器(当前状态)输出译码器输入信号输出状态输出4状态机-各部分的功能状态译码器确定状态机的下一个状态输出译码器确定状态机输出状态寄存器存储状态机的内部状态5状态机的基本操作状态的转换:下一个状态由译码器根据当前状态和输入条件决定。输出信号的产生:输出信号由译码器根据当前状态和输入条件决定。6状态机的时序同步时序状态机:由时钟信号触发状态的转换和信号的输出异步时序状态机:状态的转移和输出不与时钟信号同步注意:可综合的状态机设计要求使用同步状态机!7状态机的类型状态一状态二状态二摩尔型moore状态机米勒型mealy状态机状态一输入8状态机的表达方式状态图状态表流程图9状态表10状态图11状态机状态机的本质是对具有逻辑顺序或时序规律事件的一种描述方法。1213三进制计数器S311S101S21014序列检测器(1110010)S1S2S8S3S4S7S6S51110010/10011010115类型定义语句TYPE用户自定义数据类型:数据类型名:由设计者自定;数据类型定义:数组型数据类型或枚举型数据类型TYPE数据类型名IS数据类型定义;TYPE数据类型名IS数据类型定义OF基本数据类型;16类型定义语句TYPETYPEst1ISARRAY(0TO15)OFSTD_LOGIC;

TYPEweekIS(sun,mon,tue,wed,

thu,fri,sat);例如:ARCHITECTUREbhv

OFcnt4ISTYPEm_stateIS(st0,st1,st2,st3,st4,st5);SIGNALpresent_state,next_state

:m_state;BEGIN17状态机的说明部分使用TYPE

语句定义一个新的数据类型,一般为枚举型,其元素都用状态机的状态名来定义。说明部分一般放在ARCHITECTURE

和BEGIN之间。例如:ARCHITECTURE···IS

TYPEstatesIS(S0,S1,S2,S3);

SIGNALcurrent_state,next_state:states;

BEGIN···18ChapteroverThisistheendofthischapter

ThanksAnyquestion?19实验部分四选一数据选择器:x<= (aANDNOT(s(1))ANDNOT(s(0)))OR (bANDNOT(s(1))ANDs(0))OR (cANDs(1)ANDNOT(s(0)))OR (dANDs(1)ANDs(0));方法一:axmuxcbds220实验部分方法二:WITHsSELECTx<=aWHEN“00”,--meanswhens=“00”bWHEN“01”,cWHEN“10”,dWHENOTHERS;axmuxcbds221实验部分x<=awhen(s=“00”)elsebwhen(s=“01”)elsecwhen(s=“10”)elsed;方法三:axmuxcbds222实验部分mux4_1:PROCESS(a,b,c,d,s) BEGIN IFs=“00”THENx<=a; ELSIFs=“01”THENx<=b; ELSIFs=“10”THENx<=c; ELSEx<=d; ENDIF; ENDPROCESSmux4_1;方法四:axmuxcbds223实验部分8-3编码器:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYENCODE8_3ISPORT(A:INSTD_LOGIC_VECTOR(7DOWNTO0);

Y:OUTSTD_LOGIC_VECTOR(2DOWNTO0));ENDENTITYENCODE8_3;ARCHITECTUREARTOFENCODE8_3ISBEGIN24WITHASELECT--选择信号赋值语句Y<="000"WHEN"11111110","001"WHEN"11111101","010"WHEN"11111011","011"WHEN"11110111","100"WHEN"11101111","101"WHEN"11011111","110"WHEN"10111111","111"WHEN"01111111","000"WHENOTHERS;ENDARCHITECTUREART;258-3编码器P134例5-19,用IF和CASE语句均可!26分

器ENTITYFENPINIS PORT(clk:INBIT;

cout:OUTBIT);ENDFENPIN;ARCHITECTURE

bhvOFFENPINISBEGIN

PROCESS(clk) VARIABLEQ1:INTEGERRANGE

nDOWNTO0;BEGIN IFclk’eventANDclk=‘1’THEN IFQ1<nTHEN Q1:=Q1+1;cout<=‘0’;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论