vhdl快速入门教程青创原创-第六讲状态机_第1页
全文预览已结束

下载本文档

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

文档简介

1、VHDL 的结构非常适合编写状态机,而且编写方式不唯一,电路的集成也会随着编写的方式而改变。状态机的设计主要用到 case when 和 if else 两种语句。Case when 用来指定并行的行为,而 if then else 用来设计优先度的编码逻辑。分析状态机有如下特点:1.对于状态的描述一般先一个枚举数据类型,语句如下:Type se_type is(idle,tap1,tap2,tap3,tap4);对于当前状态的对象一般用是一个信号,即:Signal se: se_type;对于状态机的下一个状态的判断一般是通过对时钟上升沿判断的 if then else 语句内嵌case w

2、hen 语句2.3.4.语句,或者再用一个 case 语句来对于状态机的输出则可以用一个条件或者选择信号实现信号输出。状态机分为三大类型:Moore 状态机:次态=f(现状),输出=f(现状),即输出信号是直接由状态寄存器译码得到Mealy 状态机:次态=f(现状,输入),输出=f(现状,输入),即以现时的输入信号结合即将变成次态的现状编码成信号输出。混合型状态机用一个序列信号发生器的实例来做练习。(状态机将在以后的很多实例中加以运用,请掌握其编写方法)序列信号就是一些串行的周期性信号,这些信号在每个循环周期内 1 和 0 数码按一定的规则顺序排列。下面所讲解的序列发生器能够按规定输出 8 位

3、0,1序列。代码如下:逐行解释:10:清零复位信号,复位清零。12:序列信号输出。因为是 8 位的端口,但序列信号是串行的,所以相当于有 8 路的序列信号,任取一位端口就是一个序列信号输出。17:用 type一种枚举类型。共 8 中状态,每个状态都对应唯一的一种输出,至于在什么状态输出什么信号则由程序决定。18:定义一个 se 类型信号量,其初始的状态为 s0。19-26:用 constant 定义一些常量,这些常量将作为在不同状态时的输出信号。32-34:清零复位时执行的动作。33,输出为value0,34,状态为 s0。35-65 : 用 case 语句实现状态的变换。在上升沿的驱动下,状态从 s0-s1-s2-s3-s4-s5-s6-s7-s0 循环。61-63,若状态机跑飞,及时将状态置为为 s0,这样状态机就能恢复正常了。其状态机转换图:仿真波形图:可任取 seq_sig 的一位作为序列信号的输出,如若选择 seq_sig7作为序列信号输出,则为“01000111”,若选择 seq_sig6 作为序列信号输出,则为“0

温馨提示

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

评论

0/150

提交评论