




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、EDA课程课程 实验实验八八状态机逻辑电路设计状态机逻辑电路设计EDA课组一、实验目的:一、实验目的:1、了解状态机状态机逻辑电路设计原理及逻辑电路设计原理及特点;2、学习使用使用状态机状态机逻辑电路设计逻辑电路设计方法。二、实验内容二、实验内容2、通过仿真软件进行验证仿真通过仿真软件进行验证仿真 。1、 设计设计两种两种典型典型状态机状态机逻辑电路系统逻辑电路系统; 在数字系统中,有限状态机(FSM,Finite State Machine)是一类十分重要的时序电路。微控制器的核心就是FSM。因此学习FSM的原理及设计方法对于学习数字系统设计和理解计算机原理都有重要意义。 本章首先概要介绍F
2、SM的相关理论知识,通过典型实例说明FSM的设计方法。1、FSM概念概念三、实验原理三、实验原理 有限状态机由输入和输出和具有记忆功能的寄存器组有限状态机由输入和输出和具有记忆功能的寄存器组成,寄存器用于寄存状态机内部状态,也称成,寄存器用于寄存状态机内部状态,也称状态寄存器状态寄存器。 状态机的下一个状态不仅与输入信号有关,还与该寄状态机的下一个状态不仅与输入信号有关,还与该寄存器的当前状态有关,因此有限状态机可看作是存器的当前状态有关,因此有限状态机可看作是组合逻组合逻辑与时序逻辑的一种组合辑与时序逻辑的一种组合。其中的时序逻辑功能是存储。其中的时序逻辑功能是存储有限状态机的内部状态;而组
3、合逻辑又可分为次态产生有限状态机的内部状态;而组合逻辑又可分为次态产生逻辑和输出逻辑两部分,次态产生逻辑的功能是确定有逻辑和输出逻辑两部分,次态产生逻辑的功能是确定有限状态机的下一个状态,输出逻辑功能是确定有限状态限状态机的下一个状态,输出逻辑功能是确定有限状态机的输出。机的输出。由于由于FSM的描述较为复杂,因此不能使用原理图方法的描述较为复杂,因此不能使用原理图方法进行描述,而必须采用进行描述,而必须采用Verilog HDL语言进行行为级设语言进行行为级设计。计。2、FSM组成组成思考一下电梯运动控制过程? 电梯从一楼到顶楼是一系列楼层,电梯到达每一层要显示该层楼层信息,还要由乘坐人控制
4、去那一层,在经过的楼层还要判断是否有相同方向的人乘坐,这一系列控制判断过程如何设计呢?一层二层三层四层N层将整个电梯控制过程运行状态分解为将整个电梯控制过程运行状态分解为N个状态,在每个状态下决定下一步个状态,在每个状态下决定下一步如何控制,这就是将复杂状态的运动过程分解为一系列状态过程,这就是如何控制,这就是将复杂状态的运动过程分解为一系列状态过程,这就是状态机设计思想。状态机设计思想。有限状态机是一个广义的时序电路,它能将复杂逻辑分解为众多状态来完成,有限状态机是一个广义的时序电路,它能将复杂逻辑分解为众多状态来完成,使复杂逻辑层次分明,是设计复杂电路的方法。使复杂逻辑层次分明,是设计复杂
5、电路的方法。根据输入与输出机状态之间的关系,状态机分为两类:摩尔型(根据输入与输出机状态之间的关系,状态机分为两类:摩尔型(moore)状态)状态机和米里型(机和米里型(Mealy)。)。摩尔型(摩尔型(Moore)状态机)状态机 米里型(米里型(Mealy)状态机)状态机 3、FSM原理框图原理框图三、实验步骤三、实验步骤1、序列检测器的设计序列检测器是一种用来监测一组或多组序列信号的电路,在数据通信、雷达、遥感、遥测等领域中广泛应用,主要用于检测同步识别标志。下面通过Mealy型状态机设计由输入信号中检测010序列,状态编码采用格雷编码。dinclkresetdouts0s2s11/00/
6、11/01/00/00/0框图状态图状态表s下一状态下一状态din=0din=1s0=00s1 ,0s0 ,0s1=01s1 ,0s2 ,0s2=11s1 ,1s0 ,0din 001010101由输入信号检测010序列Verilong程序module mealyfsm(clk,reset,din,dout, cs_state,ns_state);output dout;output 1:0 cs_state,ns_state;input clk,reset,din;reg dout;/用格雷码编码声明状态值parameter 1:0 s0=2b00,s1=2b01,s2=2b11;reg 1
7、:0cs,ns;assign cs_state=cs,ns_state=ns;always(posedge clk,posedge reset)begin if(reset=1b1) /异步复位,高电平有效 cs=s0;else cs=ns; end/次态计算及输出信号产生,always(cs,din) case(cs)s0:begin dout=1b0; if(din=1bx)ns=s0; else ns=(din)?s0:s1; end s1:begin dout=1b0; ns=(!din)?s1:s2; end s2:begin dout=(din)?1b0:1b1; ns=(din)
8、?s0:s1; end default:begin dout=1b0; ns=s0; end endcaseendmodulemealy型状态机仿真结果可见输出可见输出dout和次态和次态ns均由当前状态均由当前状态cs和输入和输入din共同决定。这是共同决定。这是mealy状状态机特点。态机特点。din 001010101din输入数据频率要小于时钟频率才能准确检测相应数据位输入数据频率要小于时钟频率才能准确检测相应数据位!s0s2s11/00/11/01/00/00/0给定din(01000101)检测结果01001001dout显示的脉冲都是在检测最后一个数对应时钟上升沿时结束,当输显示
9、的脉冲都是在检测最后一个数对应时钟上升沿时结束,当输入的数据在一个时钟内反复变化将导致时钟周期内的次态跟着变化,入的数据在一个时钟内反复变化将导致时钟周期内的次态跟着变化,而现态没有变化,这就检测不出所要的数据。时钟周期相当于数据检而现态没有变化,这就检测不出所要的数据。时钟周期相当于数据检测的时间分辨率。测的时间分辨率。2、二进制乘法器设计:、二进制乘法器设计: 实现两个实现两个8位二进制数的乘法运算,被乘数(位二进制数的乘法运算,被乘数(mcnd)和乘数(和乘数(mplr)存放存放在寄存器在寄存器mcnd_temp和和acc7:0中,乘积为中,乘积为16进制数,运算完后存放在进制数,运算完
10、后存放在16位位寄存器寄存器acc15:0中。中。shiftaddcomp1initcount8递增countacc右移复位acc初始化countreset=1reset=0如果acc0=1将mcnd加到acc输出done=1count=8乘法状态机的状态图乘法状态机的状态图状态机模型开始处于状态机模型开始处于init状态,并且只要复位信号状态,并且只要复位信号reset为高电平,就停留在为高电平,就停留在该状态。当该状态。当reset为为0时,累加器时,累加器acc清零,计数器清零,计数器count被复位,被乘数被复位,被乘数mcnd和乘数和乘数mplr被加载到寄存器被加载到寄存器mcnd_
11、temp和和acc的低的低8位中,然后进入位中,然后进入add状态。状态。当处于当处于add状态时,只要当乘数的最低位(状态时,只要当乘数的最低位(acc0)为)为1时,将被乘数加到部时,将被乘数加到部分积(分积(acc的高八位)中,然后进入到的高八位)中,然后进入到shift状态中。状态中。在在shift状态时,将部分积(状态时,将部分积(acc)右移一位,并将计数器()右移一位,并将计数器(count)加)加1,如,如果计数器值为果计数器值为8,则进入,则进入compl状态;如果计数器值小于状态;如果计数器值小于8,则返回到,则返回到add状态状态进行下一轮移位相加直到计数器值变为进行下一
12、轮移位相加直到计数器值变为8。compl状态表示运算完成,将输出使能信号状态表示运算完成,将输出使能信号done置为高,此时置为高,此时acc内存放的内存放的即为乘法器运算的结果,然后返回即为乘法器运算的结果,然后返回init状态。状态。shiftaddcomp1initcount8递增countacc右移复位acc初始化countreset=1reset=0如果acc0=1将mcnd加到acc输出done=1count=8乘法器状态机Verilog程序module multi8(mplr,mcnd,clk,reset,done,acc,count, mul_state,next_state)
13、; output done; output 15:0 acc; output 3:0 count; output 1:0 mul_state,next_state; input 7:0 mplr,mcnd; input clk,reset; reg 15:0 acc; reg 1:0 cs,ns; reg7:0 mcnd_temp; reg3:0 count; reg done;/定义状态编码为格雷码parameter 1:0 init=2b00,add=2b01,shift=2b11,compl=2b10;assign mul_state=cs;/方便查看状态机状态转换过程assign ne
14、xt_state=ns;always (negedge clk,posedge reset) if(reset) cs=init; else cs=ns;乘法器状态机Verilog程序/次态计算always(cs)begincase(cs) init:ns=add; add:ns=shift; /当count由07变化刚好移动8次,完成8为乘法运算 shift:if(count=4b0111)ns=compl; else ns=add; compl:ns=init; endcaseend/产生输出信号always(negedge clk) case(cs) init:begin acc15:8=8b0000_0000; acc7:0=mplr; done=1b0; mcnd_temp7:0=mcnd; count=3b000; end/判断乘数最高位是否为1,/则将被乘数加到部分积中add:if(acc0=1b1) acc=acc+mcnd_temp,8b0000_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025春季建投国电准格尔旗能源有限公司招聘31人(内蒙古)笔试参考题库附带答案详解
- 青海警官职业学院《健康经济学》2023-2024学年第二学期期末试卷
- 黑龙江职业学院《计算机网络基础》2023-2024学年第二学期期末试卷
- 上海科学技术职业学院《半导体材料分析测试实验》2023-2024学年第二学期期末试卷
- 重庆旅游职业学院《汽车新能源与节能技术》2023-2024学年第二学期期末试卷
- 武汉交通职业学院《半导体物理学》2023-2024学年第二学期期末试卷
- 阿勒泰职业技术学院《工程项目管理及监理概论》2023-2024学年第二学期期末试卷
- 滨州职业学院《媒介通论》2023-2024学年第二学期期末试卷
- 西南民族大学《中学思想政治课程标准解读与教材分析》2023-2024学年第二学期期末试卷
- 江西中医药大学《传统民居与乡土建筑》2023-2024学年第二学期期末试卷
- 大学生建筑类创业项目
- 医院药品二级库房管理
- 自体输血知识培训课件
- 《无人机操控基础》课件
- 检测糖化白蛋白临床意义
- 2025年湖北省新华书店(集团)限公司招聘(93人)高频重点提升(共500题)附带答案详解
- 铍箔及铍合金箔行业行业发展趋势及投资战略研究分析报告
- 女小学生关于月经的课件
- 2024年中考地理专项复习:材料分析题(解析版)
- 应急广播终端安装施工规范
- 以“蛋白质”为主线的单元境脉设计与教学重构
评论
0/150
提交评论