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

上传人:b****3 文档编号:5055861 上传时间:2022-12-12 格式:DOCX 页数:8 大小:409.61KB
下载 相关 举报
基于FPGA的状态机的实现.docx_第1页
第1页 / 共8页
基于FPGA的状态机的实现.docx_第2页
第2页 / 共8页
基于FPGA的状态机的实现.docx_第3页
第3页 / 共8页
基于FPGA的状态机的实现.docx_第4页
第4页 / 共8页
基于FPGA的状态机的实现.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

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

《基于FPGA的状态机的实现.docx》由会员分享,可在线阅读,更多相关《基于FPGA的状态机的实现.docx(8页珍藏版)》请在冰豆网上搜索。

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

基于FPGA的状态机的实现

序列检测有限状态机的实现

有限状态机

有限状态机是绝大部分控制电路的核心结构,是表示有限个状态以及在这些

状态之间转移和动作等行为的数学模型。

有限状态机是指输出取决于过去输入部

分和当前输入部分的时序逻辑电路。

一般来说,除了输入部分和输出部分外,有限状态机还含有一组具有记忆”功能的寄存器,这些寄存器的功能是记忆有限状

态机的内部状态,它们常被称为状态寄存器。

在有限状态机中,状态寄存器的的

下一个状态不仅与输入信号有关,而且还与该寄存器的当前状态有关,因此有限状态机又可以认为是组合逻辑和寄存器逻辑的一种组合。

在实际的应用中,根据有限状态机是否使用输入信号,可将其分为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型状态机源程序

moduleMoore(

inputdin.

inputelk,

inputrst,

outputregop

);

reg[1:

0]current,next;

parameterS0=2'b00,S1=2'b01,S2=2'b10,S3=2'b11;

always@(posedgeclkornegedgerst)

begin

if(!

rst)

current<=2'b00;

else

current<=next;

end

always@(currentordin)

begin

case(current)

SO:

begin

op=0;

if(din==0)

next=SO;

end

else

next=S1;

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

 

default:

begin

op=0;

next=SO;

endendcaseend

endmodule

2、Mealy型状态机源程序

moduleMealy(

inputclk,

inputrst,

inputdin.

outputregop

);

reg[1:

0]current,next;

parameterS0=2'b00,S1=2'b01,S2=2'b10,S3=2'b11;

always@(posedgeclkornegedgerst)

begin

if(!

rst)

current<=2'b00;

else

current<=next;

end

always@(currentordin)

begin

case(current)

S0:

begin

op=0;

end

if(din==0)

else

S1:

begin

end

next=SO;

next=S1;

op=0;

if(din==0)

next=SO;

else

next=S2;

S2:

begin

if(din==0)

next=SO;

end

else

begin

end

S3:

begin

next=S3;

op=1;

if(din==0)

begin

next=S0;

op=0;

end

else

 

default:

begin

op=0;

next=SO;

end

endcase

end

endmodule

五、

功能仿真

 

在所建工程下添加test文件,用来进行逻辑功能验证。

试输入二进制数列

010*********进行逻辑功能验证。

并通过Modelsim软件与ISE联调生成对应的状态图,如图1、2、3、4所示。

14峠

审n

卜増cucenffl血

Irr

图2Moore型状态机状态转换图

图3Mealy型状态机仿真波形图

►如网1切

综合优化将Verilog设计输入翻译成基本逻辑单元,根据目标与要求优化所

生成的逻辑连接,最后输出标准格式的网表文件。

再利用软件以最优的方式对逻

辑软件进行逻辑元件布局,并准确实现元件间的互连。

图5及图6为ISE生成的

RTL仿真电路图。

图5Moore型状态机仿真电路图

图6Mealy型状态机仿真电路图

设计的源程序可以实现题目所提出的要求,并通过仿真进行验证。

从仿真结

果可以看出,Mealy型状态机的输出在输入变化的时候立刻发生变化,而Moore

型状态机在输入变化后,还必须的等待时钟的到来,时钟使状态发生变化时才导致输出的变化,所以比Mealy型状态机要多等待一个时钟周期。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1