牛客网刷题VL19 根据状态转移写状态机-三段式

描述

题目描述:

如图所示为两种状态机中的一种,请根据状态转移图写出代码,状态转移线上的0/0等表示的意思是过程中data/flag的值。

要求:

1、 必须使用对应类型的状态机

2、 使用三段式描述方法,输出判断要求要用到对现态的判断

注意rst为低电平复位

信号示意图:

波形示意图:

输入描述:

输入信号 clk rst data 
类型 wire

输出描述:

输出信号  flag
类型  reg

1、Moore型:转换的输出由当前状态决定,,每个节点(状态)都标有输出值。

2、Mealy型:转换的输出由当前状态和当前输入的组合决定,每个弧(过渡)都标有输出值。

`timescale 1ns/1ns

module fsm1(
	input wire clk  ,
	input wire rst  ,
	input wire data ,
	output reg flag
);
//*************code***********//
parameter  s0 = 0;
parameter  s1 = 1;
parameter  s2 = 2;
parameter  s3 = 3;

reg [2:0] cur_state ,nx_state;

always@(posedge clk or negedge rst)begin
    if(!rst)
        cur_state <= s0;
    else
        cur_state <= nx_state;
end

always@(*)begin
    case(cur_state)
        s0:
            if(!data)
                nx_state = s0;
            else
                nx_state = s1;
        s1:
            if(!data)
                nx_state = s1;
            else
                nx_state = s2;
        s2:
            if(!data)
                nx_state = s2;
            else
                nx_state = s3;
        s3:
            if(!data)
                nx_state = s3;
            else
                nx_state = s0;
    endcase
end

always@(posedge clk or negedge rst)begin
    if(!rst)
        flag <= 0;
    else begin
        if(cur_state == s3 && data == 1)
            flag <= 1;
        else 
            flag <= 0;
    end
end

//*************code***********//
endmodule

### 关于牛客网 Verilog 进阶 VL30 的资料教程 对于寻找有关牛客网上关于Verilog进阶VL30的具体目或学习资源而言,当前提供的参考资料主要覆盖了从基础到部分进阶的内容,例如四选一多路选择器、异步复位的串联T触发器以及涉及编码器和译码器的应用实例[^1]。然而,在这些列举的例子中并未直接提及VL30这一特定编号对应的练习。 通常情况下,像牛客网这样的在线编程平台会按照一定的难度梯度来安排习,从简单的概念验证逐步过渡至复杂的系统设计。考虑到这一点,虽然具体针对VL30的信息未被提供出来,但可以通过理解前序章节所介绍的基础知识点来进行推测性的准备: #### 推测可能的主方向 基于已有的序列发展规律来看,更高编号的练习往往涉及到更复杂的功能模块或是综合应用多个基本组件完成特定任务的能力训练。因此,VL30可能会聚焦在一个较为高级别的主上,比如但不限于: - 多功能组合逻辑电路的设计与优化 - 基于有限状态机的状态转换机制建模及时钟同步处理 - 存储元件(如RAM/ROM)的实际运用场景分析及其接口协议制定 - 完整的小型数字系统的构建案例研究 #### 如何获取更多帮助? 为了获得最准确的学习材料,建议访问牛客网官方网站并搜索最新的课程列表或者加入相关的讨论社区寻求其他学员的经验分享。此外,还可以关注官方发布的最新动态和技术文章,以便第一时间了解到新增的教学内容。 ```verilog // 示例:假设VL30是关于小型CPU核心设计的任务,则可能是如下形式 module simple_cpu_core( input clk, input reset_n, // ... 其他必要的信号定义 ... ); // CPU内部结构声明... endmodule ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值