收藏 分销(赏)

基于FPGA的状态机的实现.doc

上传人:快乐****生活 文档编号:3081814 上传时间:2024-06-17 格式:DOC 页数:8 大小:119.50KB 下载积分:6 金币
下载 相关 举报
基于FPGA的状态机的实现.doc_第1页
第1页 / 共8页
基于FPGA的状态机的实现.doc_第2页
第2页 / 共8页


点击查看更多>>
资源描述
序列检测有限状态机的实现 一、 有限状态机 有限状态机是绝大部分控制电路的核心结构,是表示有限个状态以及在这些状态之间转移和动作等行为的数学模型。有限状态机是指输出取决于过去输入部分和当前输入部分的时序逻辑电路。一般来说,除了输入部分和输出部分外,有限状态机还含有一组具有“记忆”功能的寄存器,这些寄存器的功能是记忆有限状态机的内部状态,它们常被称为状态寄存器。在有限状态机中,状态寄存器的的下一个状态不仅与输入信号有关,而且还与该寄存器的当前状态有关,因此有限状态机又可以认为是组合逻辑和寄存器逻辑的一种组合。 在实际的应用中,根据有限状态机是否使用输入信号,可将其分为Moore型有限状态机和Mealy型有限状态机两种类型。Moore型有限状态机 其输出信号仅与当前状态有关,即可以把Moore型有限状态的输出看成是当前状态的函数。Mealy型有限状态机 其输出信号不仅与当前状态有关,而且还与所有的输入信号有关,即可以把Mealy型有限状态机的输出看成是当前状态和所有输入信号的函数。 二、 问题描述 1、 Moore型序列检测状态机的设计 利用Verilog设计一个电路,对输入的一串二进制数用于检测序列中3个或者3个以上的1,其状态描述如下表所示。 现态 现态 输入 次态 次态 输出 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 1 0 1 1 1 0 1 1 0 0 0 1 1 1 1 1 1 1 2、 Mealy型序列检测状态机的设计 利用Verilog设计一个电路,对输入的一串二进制数用于检测序列中3个或者3个以上的1,当检测到第三个1出现的时候,输出立刻变1,否则输出为0。 三、 设计准备 本设计通过ISE软件硬件描述语言方式设计。定义一个输入端,一个清零端和一个时钟,输入端用来表示一串二进制数,清零端用来将状态机初始化,时钟用来更新当前状态。定义四个状态,分别表示当前无1输入、有一个1输入、有连续两个1输入以及连续三个或三个以上1输入。定义一个输出,用于检测序列中3个或者3个以上的1。 四、 硬件描述语言输入 1、Moore型状态机源程序 module Moore( input din, input clk, input rst, 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) begin if(!rst) current <= 2'b00; else current <= next; end always@(current or din) begin case(current) S0:begin op = 0; if(din == 0) next = S0; else next = S1; end S1:begin op = 0; if(din == 0) next = S0; else next = S2; end S2:begin op = 0; if(din == 0) next = S0; else next = S3; end S3:begin op = 1; if(din == 0) next = S0; else next = S3; end default:begin op = 0; next = S0; end endcase end endmodule 2、Mealy型状态机源程序 module Mealy( input clk, input rst, input din, 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) begin if(!rst) current <= 2'b00; else current <= next; end always@(current or din) begin case(current) S0:begin op = 0; if(din == 0) next = S0; else next = S1; end S1:begin op = 0; if(din == 0) next = S0; else next = S2; end S2:begin if(din == 0) next = S0; else begin next = S3; op = 1; end end S3:begin if(din == 0) begin next = S0; op = 0; end else next = S3; end default:begin op = 0; next = S0; end endcase end endmodule 五、 功能仿真 在所建工程下添加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型状态机仿真电路图 七、 设计结果 设计的源程序可以实现题目所提出的要求,并通过仿真进行验证。从仿真结果可以看出,Mealy型状态机的输出在输入变化的时候立刻发生变化,而Moore型状态机在输入变化后,还必须的等待时钟的到来,时钟使状态发生变化时才导致输出的变化,所以比Mealy型状态机要多等待一个时钟周期。 (注:专业文档是经验性极强的领域,无法思考和涵盖全面,素材和资料部分来自网络,供参考。可复制、编制,期待你的好评与关注)
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服