• 正文
  • 相关推荐
申请入驻 产业图谱

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

05/15 08:50
858
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

名称: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机相同,唯一的区别是:组合进程中的输

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

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

 

【来源:www.hdlcode.com

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录