电子设计自动化实验 实验五

EDA


一.实验名称:综合性实验五、有限状态机的硬件描述语言设计方法

二.实验目的:

1、 熟悉用硬件描述语言(VHDL)设计一般状态机所包含的几个基本部分;
2、 掌握用硬件描述语言(VHDL)设计 Moore 型和 Mealy 型有限状态机的方法;
3、 了解状态机在信号输出方式、结构方式、状态表达方式和编码方式的差异。
4、 学习用状态机实现序列检测器的设计,并对其进行仿真和硬件测试; 

三.实验内容:

1、 说明附件中例 5-11 的代码表达的是什么类型的状态机,它的优点是什么?**
2、 利用 QuartusII 对例 5-11 进行文本编辑输入、仿真测试并给出仿真波形,了解控制信 号的时序;**
3、 对例 5-11 进行引脚锁定并用实验箱完成硬件验证实验,采用 NO.8 电路结构;**
4、 根据例 5-11 写出由两个主控进程构成的相同功能的符号化 Moore 型有限状态机,画 出状态图,并给出其仿真测试波形**。
5、 将 8 位待检测序列数作为外部输入信号,即可随时改变序列检测器的检测序列数。写 出此功能的符号化有限状态机,并用你学号末两位的十进制码进行验证。** 

四.例5-11

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY SCHK IS PORT(DIN,CLK,CLR : IN STD_LOGIC;     AB : OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END SCHK; ARCHITECTURE BEHAV OF SCHK IS  SIGNAL Q : INTEGER RANGE 0 TO 8;  SIGNAL D : STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN   D<="11100101";  PROCESS(CLK,CLR)   BEGIN   IF CLR = '1' THEN Q<=0;   ELSIF CLK'EVENT AND CLK='1' THEN  CASE Q IS       WHEN 0=> IF DIN=D(7) THEN Q<=1; ELSE Q<=0; END IF;WHEN 1=> IF DIN=D(6) THEN Q<=2; ELSE Q<=0; END IF;WHEN 2=> IF DIN=D(5) THEN Q<=3; ELSE Q<=0; END IF;WHEN 3=> IF DIN=D(4) THEN Q<=4; ELSE Q<=0; END IF; WHEN 4=> IF DIN=D(3) THEN Q<=5; ELSE Q<=0; END IF;  WHEN 5=> IF DIN=D(2) THEN Q<=6; ELSE Q<=0; END IF;    WHEN 6=> IF DIN=D(1) THEN Q<=7; ELSE Q<=0; END IF;WHEN 7=> IF DIN=D(0) THEN Q<=8; ELSE Q<=0; END IF; WHEN OTHERS => Q<=0;   END CASE;  END IF;   END PROCESS;  PROCESS(Q) BEGIN  IF Q=8 THEN AB<="1010";   ELSE AB<="1011";  END IF;  END PROCESS; END BEHAV;

五.设计原理:

1.例子5-11

  1. 分析5-11代码可知,该段代码的功能是,检测一段由8位数字构成的序列。当完整输入该序列时,输出结果“1010”;反之则输出“1011”。在VHDL实体描述部分用作电路模块端口的有四个,下面分析其功能:
CLK:用作时钟,当检测到上升沿到来时,读入由DIN输入的数据。
CLR:用作清零信号,当为高电平时,将系统状态清零,即从Q<=0开始。
DIN:用于输入0和1组成的序列
AB: 用于输出一个4位的数,即"1010"或"1011"

同时,在结构体说明部分定义了两个信号,下面分析其功能:

Q:定义了从0到8的整数,共9个。用于描述状态。
D:定义了被检测序列,用于和由DIN输入的序列做对比。

2.波形仿真

由功能仿真图可以看出,由DIN输入数据,当CLK的上升沿到来时DIN数据,当检测出这个序列式,输出AB从”1011”变为”1010”。

3.硬件实现
在进行硬件实现时,根据具体的硬件,可将单个输入均接到三个按键上,如下图中的键6~8;输出可接一个带译码器的数码管,如下图译码器6。

在输入数据时,可将DIN所绑定引脚(如键8)置为1,此时CLK按键每按下一次代表一个时钟上升沿,便读入一个1;同理,将DIN置为0时,便可读入一个0。
按下CLR(如键7)时,系统状态清零,不管已输入多少,均清零重新检测。

由于数码管有译码功能,所以在显示时,读入数据或者检测不到正确的数列时显示为’b’(“1011”),检测到正确的数列时即变为’A’(“1010”)。

2.MOORE型有限状态机

将上述例子所实现的功能用由两个主控进程构成的MOORE型有限状态机来设计。
1.代码如下:

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY MOORE_SCHK IS PORT(DIN,CLK,CLR : IN STD_LOGIC;     AB : OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END MOORE_SCHK; ARCHITECTURE BEHAV OF MOORE_SCHK ISTYPE states IS (s0,s1,s2,s3,s4,s5,s6,s7,s8);  --定义各状态SIGNAL ST, NST : states :=s0;  --设定现态变量和次态变量SIGNAL D : STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN   COM: PROCESS(ST,DIN)   BEGIN --组合进程,规定各状态的转换方式D<="11100101";  CASE ST IS       --11100101WHEN s0=> IF DIN=D(7) THEN NST<=s1; ELSE NST<=s0; END IF;WHEN s1=> IF DIN=D(6) THEN NST<=s2; ELSE NST<=s0; END IF;WHEN s2=> IF DIN=D(5) THEN NST<=s3; ELSE NST<=s0; END IF;WHEN s3=> IF DIN=D(4) THEN NST<=s4; ELSE NST<=s0; END IF; WHEN s4=> IF DIN=D(3) THEN NST<=s5; ELSE NST<=s0; END IF;  WHEN s5=> IF DIN=D(2) THEN NST<=s6; ELSE NST<=s0; END IF;    WHEN s6=> IF DIN=D(1) THEN NST<=s7; ELSE NST<=s0; END IF;WHEN s7=> IF DIN=D(0) THEN NST<=s8; ELSE NST<=s0; END IF;WHEN s8=> IF DIN=D(0) THEN NST<=s2; ELSE NST<=s0; END IF;WHEN OTHERS => NST<=s0;   END CASE;  END PROCESS;  REG:PROCESS (CLK,CLR)   BEGIN  --时序进程IF CLR = '1' THEN ST<=s0;   ELSIF CLK'EVENT AND CLK='1' THEN ST<=NST;END IF;END PROCESS REG;   AB <= "1010" WHEN ST=s8 ELSE "1011";
END BEHAV;

当有正确序列进入时,变为状态s8,输出序列AB变为”1010”,而当下一位数据为1时,即DIN=1,进入状态s2。这是因为测出的数据11恰好与原序列数的前两位相同。

波形仿真和硬件仿真均与上例没有区别。

3.具有”记忆”性的序列检测器

在上面两例中,检测器均不具有记忆功能,即若该输入数与检测序列不同时,状态就会被清零,不管前面已输入哪些数。例如上例中,第四位为’0’,而此时如果再输入一个’1’,状态就会被清零,重新开始检测。如果来’1’,状态不清零,而是保持在原状态,等待下一个’0’来进入下一个状态的话。因此,系统便具有”记忆“功能。
要实现以上功能,只需修改一句代码,即为”1”不清零,维持原状态。用例5-11举例。

WHEN 3=> IF DIN=D(4) THEN Q<=4; ELSE Q<=3; END IF; 

4.可随时改变检测序列数的检测器

以上三个例子中,检测的数列是固定在程序内部的,无法随时更改。要实现可随时更改待检测的序列,要将固定在程序内部的序列改为由外部输入,将SIGNAL D改为一个输入端口PORT,即在实体定义时加入D的输入端口,同时删除SIGNAL D。
1.代码如下:

ENTITY MOORE_SCHK IS PORT(DIN,CLK,CLR : IN STD_LOGIC;     D : IN STD_LOGIC_VECTOR(7 DOWNTO 0);      AB : OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END MOORE_SCHK; 

2.波形仿真:

举个例子,输入的待检测序列为’3’(即00000011B)
由图片可以看出,当清零信号为’0’后开始检测序列,当连续输入六个’0’和一个’1’后,系统输入AB从’11’(即1011B)变为’10’(即1010B)。

3.硬件实现:
在硬件实现时,可将外部输入D(8位)绑定到键3和键4,一个按键控制4位。

综合性实验五、有限状态机的硬件描述语言设计方法相关推荐

  1. 微机实验五 —— 8255A接口电路应用设计实验(基于Proteus工具)

    微机实验五 -- 8255A接口电路应用设计实验(基于Proteus工具) 复习 74LS273 74LS32 7411 8255A 一.实验题目 二.实验代码 复习 in 是读端口-(I/O) mo ...

  2. 硬件描述语言要用计算机吗,计算机组成原理用硬件描述语言设计CPU.docx

    计算机组成原理用硬件描述语言设计CPU 计算机科学与工程学院课程设计报告题目全称: 课程名称: 指导老师: 职称: 序号学生姓名学号班号成绩12345678910(注:学生姓名填写按学生对该课程设计的 ...

  3. matlab实验5函数文件,实验五M文件和MATLAB设计技术总结.doc

    实验五 M文件和MATLAB程序设计 一.实验目的matlab作为一种高级计算机语言,不仅可以命令行方式完成操作,也具有数据结构.控制流.输入输出等能力,本次实验通过熟悉和掌握m文件的建立与使用方法, ...

  4. 华南农业大学汇编语言综合性实验-将自己的姓名用多种颜色动态显示

    题目名称 综合性实验-将自己的姓名用多种颜色动态显示 题目关键字 综合性实验 华南农业大学综合性.设计性实验报告 实验项目名称: 汇编语言综合设计 实验项目性质: 综合性.设计性实验 所属课程名称: ...

  5. matlab设计长度为50的滤波器,实验5 基于Matlab的数字滤波器设计

    实验五 基于Matlab 的数字滤波器设计 实验目的:加深对数字滤波器的常用指标和设计过程的理解. 实验原理:低通滤波器的常用指标如下所述,其典型规格如下: ?? ????????≤≤≤≤+≤≤-πδ ...

  6. 计算机仿真实验结果的评价与分析,基于问卷调查法的计算机仿真技术课程综合性实验效果分析评价...

    摘要:综合性实验对于提高学生综合素质,培养学生实践能力与创新精神具有极其重要的作用,为了科学评价计算机仿真技术课程综合性实验效果,文章基于问卷调查法,阐述如何设计情况调查表,如何采用多种评价方法对学生 ...

  7. 商业模式新生代_商业模式设计方法:讲故事——《商业模式新生代》笔记之十一...

    前言:今天我们继续来了解第五种商业模式的设计方法:讲故事.原创不易,喜欢商业与财经内容的朋友点点关注,谢谢您这么帅/美还关注我! 01什么是讲故事? 讲故事,有读者心里可能会觉得,这不就是我们日常中的 ...

  8. c语言程序设计综合性设计实验报告,《C语言程序设计》-综合性实验实验报告(参考格式...

    <<C语言程序设计>-综合性实验实验报告(参考格式>由会员分享,可在线阅读,更多相关<<C语言程序设计>-综合性实验实验报告(参考格式(9页珍藏版)>请 ...

  9. 2017-2018-1 20155327 实验五 通讯协议设计

    2017-2018-1 20155327 实验五 通讯协议设计 实验一: 实验要求: 在Ubuntu中完成 http://www.cnblogs.com/rocedu/p/5087623.html 中 ...

最新文章

  1. 利用Unity自带的合图切割功能将合图切割成子图
  2. Oracle数据库asm原理,Oracle数据库中ASM功能解剖
  3. 荆州水文水位查询_【心能源】天欣公司矿井水文自动观测系统投入使用
  4. 使用Spring Boot 2通过OAuth2和JWT进行集中授权
  5. centos 6.2升级6.5遇到的问题及解决方法
  6. C++匿名对象生命周期静态变量函数
  7. Code Style of Mangata
  8. Mac可以在Dock上监视磁盘活动
  9. webview的javascript与Native code交互
  10. java实现二分排序算法
  11. 行程单批量打印软件(eTerm航空电子客票行程单打印软件)
  12. java中css js是什么_js、jsp、css都是什么意思?
  13. 用谷歌按钮登录_使用非常简单的设置即可登录Google的按钮
  14. python合并word表格_python合并word
  15. php去除头尾空格,php去除头尾空格的2种方法,php头尾空格2种_PHP教程
  16. unix编程书籍推荐
  17. 初学以太坊--环境搭建篇
  18. 微信公众号和微信群怎么推广?
  19. 按照lfw pairs.txt的格式生成自己的pairs.txt
  20. 故宫真相关于长高在青春期显露了一个老临

热门文章

  1. 转录因子和组蛋白修饰研究思路 | DNA蛋白互作专题
  2. 支持m3u8的php视频cms,赤兔CMS后台添加M3U8播放器
  3. macOS中比较好用的压缩软件:FastZip
  4. java parcelable list_parcelable在哪个java包中?
  5. FIR数字滤波器的FPGA实现(二)-串行FIR滤波器设计(2)
  6. C# NPOI对Excel 读、写、增、删 操作, dataGridView控件常用操作
  7. 录音文件下载_VAA云录音(系统)-VAA云录音下载安装v1.1.9
  8. Mysql 设计超市经营管理系统,包括员工信息表(employee)和 员工部门表(department)
  9. Windows卷影复制
  10. html 表格 边框 分组,CSS表格补充(table)