基于FPGA的状态机的实现_第1页
基于FPGA的状态机的实现_第2页
基于FPGA的状态机的实现_第3页
基于FPGA的状态机的实现_第4页
基于FPGA的状态机的实现_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、序列检测有限状态机的实现一、 有限状态机有限状态机是绝大部分控制电路的核心结构,是表示有限个状态以及在这些状态之间转移和动作等行为的数学模型。有限状态机是指输出取决于过去输入部分和当前输入部分的时序逻辑电路。一般来说,除了输入部分和输出部分外,有限状态机还含有一组具有“记忆”功能的寄存器,这些寄存器的功能是记忆有限状态机的内部状态,它们常被称为状态寄存器。在有限状态机中,状态寄存器的的下一个状态不仅与输入信号有关,而且还与该寄存器的当前状态有关,因此有限状态机又可以认为是组合逻辑和寄存器逻辑的一种组合。在实际的应用中,根据有限状态机是否使用输入信号,可将其分为Moore型有限状态机和Mealy

2、型有限状态机两种类型。Moore型有限状态机 其输出信号仅与当前状态有关,即可以把Moore型有限状态的输出看成是当前状态的函数。Mealy型有限状态机 其输出信号不仅与当前状态有关,而且还与所有的输入信号有关,即可以把Mealy型有限状态机的输出看成是当前状态和所有输入信号的函数。二、 问题描述1、 Moore型序列检测状态机的设计利用Verilog设计一个电路,对输入的一串二进制数用于检测序列中3个或者3个以上的1,其状态描述如下表所示。现态现态输入次态次态输出0000000010100100000111001000001011101100011111112、 Mealy型序列检测状态机的

3、设计利用Verilog设计一个电路,对输入的一串二进制数用于检测序列中3个或者3个以上的1,当检测到第三个1出现的时候,输出立刻变1,否则输出为0。三、 设计准备本设计通过ISE软件硬件描述语言方式设计。定义一个输入端,一个清零端和一个时钟,输入端用来表示一串二进制数,清零端用来将状态机初始化,时钟用来更新当前状态。定义四个状态,分别表示当前无1输入、有一个1输入、有连续两个1输入以及连续三个或三个以上1输入。定义一个输出,用于检测序列中3个或者3个以上的1。四、 硬件描述语言输入1、Moore型状态机源程序module Moore( input din, input clk, input r

4、st, output reg op ); reg 1:0 current,next; parameter S0 = 2'b00,S1 = 2'b01,S2 = 2'b10,S3 = 2'b11; always(posedge clk or negedge rst) beginif(!rst)current <= 2'b00;elsecurrent <= next; end always(current or din) begincase(current)S0:beginop = 0;if(din = 0)next = S0;elsenext

5、= S1;endS1:beginop = 0;if(din = 0)next = S0;elsenext = S2;endS2:beginop = 0;if(din = 0)next = S0;elsenext = S3;endS3:beginop = 1;if(din = 0)next = S0;elsenext = S3;enddefault:beginop = 0;next = S0;endendcaseendendmodule2、Mealy型状态机源程序module Mealy( input clk, input rst, input din, output reg op ); reg

6、 1:0 current,next; parameter S0 = 2'b00,S1 = 2'b01,S2 = 2'b10,S3 = 2'b11; always(posedge clk or negedge rst) beginif(!rst)current <= 2'b00;elsecurrent <= next; end always(current or din) begincase(current)S0:beginop = 0;if(din = 0)next = S0;elsenext = S1;endS1:beginop = 0;i

7、f(din = 0)next = S0;elsenext = S2;endS2:beginif(din = 0)next = S0;elsebeginnext = S3;op = 1;endendS3:beginif(din = 0)beginnext = S0;op = 0;endelsenext = S3;enddefault:beginop = 0;next = S0;endendcaseendendmodule五、 功能仿真在所建工程下添加test文件,用来进行逻辑功能验证。试输入二进制数列010110111011110000进行逻辑功能验证。并通过Modelsim软件与ISE联调生成对应的状态图,如图1、2、3、4所示。图1 Moore型状态机仿真波形图图2 Moore型状态机状态转换图图3 Mealy型状态机仿真波形图图4 Mealy型状态机状态转换图六、 综合优化综合优化将Verilog设计输入翻译成基本逻辑单元,根据目标与要求优化所生成的逻辑连接,最后输出标准格式的网表文件。再利用软件以最优的方式对逻辑软件进行逻辑元件布局,并准确实现元件间的互连。图5及图6为ISE生成的RTL仿真电路图。图5 Moore型状态机仿真电路图图6 Mealy型状态机仿真电路图七、 设计结果设计的源程序可以实现题目所

温馨提示

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

评论

0/150

提交评论