当前位置: 首页 > article >正文

Fsm serialdata

现在您有了一个有限状态机,可以识别串行比特流中何时正确接收字节,添加一个数据路径,输出正确接收的数据字节。当done为1时,out_byte必须有效,否则为not。
请注意,串行协议首先发送最低有效位。

此题,注意两点

1、像Fsm ps2data 例题输出接收到的三个字节一样,输出赋值必须在时序逻辑中实现,而且必须在next_state 状态下。

2、输入bit存储在高位中,所以赋值应写为 a<= {in,a[7:1]},即右移一位。

module top_module(
    input clk,
    input in,
    input reset,    // Synchronous reset
    output [7:0] out_byte,
    output done
); //

   parameter IDEL    =   5'd00001,
    		  start  =   5'd00010,
    		  data   =   5'd00100,
    		  stop   =   5'd01000,
              err    =   5'd10000;
    reg[4:0] state,next_state;
    reg [4:0] time11;
    reg[7:0] mid;
    always@(posedge clk)begin
        if(reset)
            time11<= 0;
        else begin
            if(next_state == data)
                time11 <= time11+1;
            else 
                time11 <= 0;
           end
    
    end
    always@(posedge clk)begin
        if(reset)
            state <= IDEL;
        else
            state <= next_state;
     end
    always @(*)begin
        case(state)
            IDEL:  next_state =    in?  IDEL:start;
            start : next_state = data;
            data : next_state =  (time11==8)? (in? stop : err): data;
        	stop: next_state =   in? IDEL: start;
            err :  next_state = in?IDEL:err;
            default : next_state = IDEL;
        endcase
    
    end
    
    always@(posedge clk)begin
        if(reset)
            mid<= 8'd0;
        else
            case(next_state)
                data:mid <= {in,mid[7:1]};
                default : mid <= mid;
            endcase    
    end
    assign done = (state == stop);
    assign out_byte = (state == stop)? mid:0;
endmodule


http://www.kler.cn/a/382673.html

相关文章:

  • C语言中的分支和循环:深入理解与应用
  • C++ 并发专题 - 不变式与多线程
  • 13-鸿蒙开发中的综合实战:华为登录界面
  • docker搭建guacamole,web远程桌面
  • 基于SpringBoot+Vue实现新零售商城系统
  • 【论文速读】Optimization-based Prompt Injection Attack to LLM-as-a-Judge
  • 练习LabVIEW第三十七题
  • 十二:java web(4)-- Spring核心基础
  • VS 中使用c#高版本语言方法
  • fs 中 rmSync 作用
  • 石墨舟氮气柜:半导体制造中的关键保护设备
  • 责任链模式 Chain of Responsibility
  • 【力扣打卡系列】单调栈
  • 熊猫追剧 1.0.0 | 免费追剧软件,全网资源,独家蓝光。
  • 传智杯 第六届-复赛-第二场-C
  • Vue全栈开发旅游网项目(8)-接口联调*2+用户登录
  • AI大模型如何重塑软件开发流程?
  • 工商业储能是什么,工商业储能有什么作用?
  • 作为一个前端开发者 以什么步骤学习后端技术
  • electron 设置最小窗口缩放
  • Java | Leetcode Java题解之第542题01矩阵
  • 高频面试题(含笔试高频算法整理)基本总结回顾32
  • RxJava最全面试题及参考答案
  • Linux qt下是使用搜狗輸入發
  • 全网最适合入门的面向对象编程教程:58 Python字符串与序列化-序列化Web对象的定义与实现
  • Android中Activity启动的模式