My title page contents

mealy型状态机设计Verilog代码Quartus仿真

名称:mealy型状态机设计Verilog代码Quartus仿真

软件:Quartus

语言:Verilog

代码功能:

对于图7-1所示的状态图和状态机框图,将其实现为Mealy型状态机(Mealy type state machine),输出信号是否存在“毛刺(burr)”没有要求,写出其VERILOG HDL源代码(包括entity和architecture)并画出结果电路图,要求调试通过。


实验原理(Experimental principle )

Mealy型状态机和其等价的Moore型状态机相比,其输出变化要领先一个时钟周期(Clock cycle)。Mealy机的输出既和当前状态有关,又和所有输入信号有关。也就是说,一旦输入信号发生变化或状态发生变化,输出信号立即发

生变化,因此在状态图中,一般把输出信号值画在状态变迁(changes)处。例如:假定当前状态为S0,当输入信号为‘1’时,输出信号为“1001”;当输入

信号不是‘1’时,输出信号为“0000”。

构造 Mealy机的方法和Moore机相同,唯一的区别是:组合进程中的输

出信号是当前状态和当前输入的函数。

要求.jpg

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com


演示视频:

设计文档:

设计文档.doc

1.工程文件


2.程序文件


3.程序编译


4.RTL图


5.仿真图


部分代码展示:

//状态机
module mealy_state(
input clk,//时钟
input rst_n,//复位
input data_in,
output reg[3:0] data_out
);
parameter S0=2'b00;
parameter S1=2'b01;
parameter S2=2'b10;
parameter S3=2'b11;
reg [1:0] curr_state;
reg [1:0] next_state;
always@(posedge clk or negedge rst_n)
if(~rst_n)
curr_state<=S0;
else 
curr_state<=next_state;
//状态跳转
always@(*)
case(curr_state)
S0:
if(data_in==1)
next_state=S1;
else
next_state=S0;
S1:
if(data_in==0)
next_state=S2;
else
next_state=S1;
S2:
if(data_in==1)
next_state=S3;
else
next_state=S2;
S3:
if(data_in==0)
next_state=S0;
else
next_state=S3;
endcase

代码文件(付费下载):



1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » mealy型状态机设计Verilog代码Quartus仿真

发表评论

模板文件不存在: ./template/plugins/comment/pc/index.htm

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员