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

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
源代码

点击下方的公众号卡片获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值