综合性实验五、有限状态机的硬件描述语言设计方法
电子设计自动化实验 实验五
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
- 分析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位。
综合性实验五、有限状态机的硬件描述语言设计方法相关推荐
- 微机实验五 —— 8255A接口电路应用设计实验(基于Proteus工具)
微机实验五 -- 8255A接口电路应用设计实验(基于Proteus工具) 复习 74LS273 74LS32 7411 8255A 一.实验题目 二.实验代码 复习 in 是读端口-(I/O) mo ...
- 硬件描述语言要用计算机吗,计算机组成原理用硬件描述语言设计CPU.docx
计算机组成原理用硬件描述语言设计CPU 计算机科学与工程学院课程设计报告题目全称: 课程名称: 指导老师: 职称: 序号学生姓名学号班号成绩12345678910(注:学生姓名填写按学生对该课程设计的 ...
- matlab实验5函数文件,实验五M文件和MATLAB设计技术总结.doc
实验五 M文件和MATLAB程序设计 一.实验目的matlab作为一种高级计算机语言,不仅可以命令行方式完成操作,也具有数据结构.控制流.输入输出等能力,本次实验通过熟悉和掌握m文件的建立与使用方法, ...
- 华南农业大学汇编语言综合性实验-将自己的姓名用多种颜色动态显示
题目名称 综合性实验-将自己的姓名用多种颜色动态显示 题目关键字 综合性实验 华南农业大学综合性.设计性实验报告 实验项目名称: 汇编语言综合设计 实验项目性质: 综合性.设计性实验 所属课程名称: ...
- matlab设计长度为50的滤波器,实验5 基于Matlab的数字滤波器设计
实验五 基于Matlab 的数字滤波器设计 实验目的:加深对数字滤波器的常用指标和设计过程的理解. 实验原理:低通滤波器的常用指标如下所述,其典型规格如下: ?? ????????≤≤≤≤+≤≤-πδ ...
- 计算机仿真实验结果的评价与分析,基于问卷调查法的计算机仿真技术课程综合性实验效果分析评价...
摘要:综合性实验对于提高学生综合素质,培养学生实践能力与创新精神具有极其重要的作用,为了科学评价计算机仿真技术课程综合性实验效果,文章基于问卷调查法,阐述如何设计情况调查表,如何采用多种评价方法对学生 ...
- 商业模式新生代_商业模式设计方法:讲故事——《商业模式新生代》笔记之十一...
前言:今天我们继续来了解第五种商业模式的设计方法:讲故事.原创不易,喜欢商业与财经内容的朋友点点关注,谢谢您这么帅/美还关注我! 01什么是讲故事? 讲故事,有读者心里可能会觉得,这不就是我们日常中的 ...
- c语言程序设计综合性设计实验报告,《C语言程序设计》-综合性实验实验报告(参考格式...
<<C语言程序设计>-综合性实验实验报告(参考格式>由会员分享,可在线阅读,更多相关<<C语言程序设计>-综合性实验实验报告(参考格式(9页珍藏版)>请 ...
- 2017-2018-1 20155327 实验五 通讯协议设计
2017-2018-1 20155327 实验五 通讯协议设计 实验一: 实验要求: 在Ubuntu中完成 http://www.cnblogs.com/rocedu/p/5087623.html 中 ...
最新文章
- 利用Unity自带的合图切割功能将合图切割成子图
- Oracle数据库asm原理,Oracle数据库中ASM功能解剖
- 荆州水文水位查询_【心能源】天欣公司矿井水文自动观测系统投入使用
- 使用Spring Boot 2通过OAuth2和JWT进行集中授权
- centos 6.2升级6.5遇到的问题及解决方法
- C++匿名对象生命周期静态变量函数
- Code Style of Mangata
- Mac可以在Dock上监视磁盘活动
- webview的javascript与Native code交互
- java实现二分排序算法
- 行程单批量打印软件(eTerm航空电子客票行程单打印软件)
- java中css js是什么_js、jsp、css都是什么意思?
- 用谷歌按钮登录_使用非常简单的设置即可登录Google的按钮
- python合并word表格_python合并word
- php去除头尾空格,php去除头尾空格的2种方法,php头尾空格2种_PHP教程
- unix编程书籍推荐
- 初学以太坊--环境搭建篇
- 微信公众号和微信群怎么推广?
- 按照lfw pairs.txt的格式生成自己的pairs.txt
- 故宫真相关于长高在青春期显露了一个老临
热门文章
- 转录因子和组蛋白修饰研究思路 | DNA蛋白互作专题
- 支持m3u8的php视频cms,赤兔CMS后台添加M3U8播放器
- macOS中比较好用的压缩软件:FastZip
- java parcelable list_parcelable在哪个java包中?
- FIR数字滤波器的FPGA实现(二)-串行FIR滤波器设计(2)
- C# NPOI对Excel 读、写、增、删 操作, dataGridView控件常用操作
- 录音文件下载_VAA云录音(系统)-VAA云录音下载安装v1.1.9
- Mysql 设计超市经营管理系统,包括员工信息表(employee)和 员工部门表(department)
- Windows卷影复制
- html 表格 边框 分组,CSS表格补充(table)