首页 > 其他分享 >校验和

校验和

时间:2024-08-20 11:37:40浏览次数:6  
标签:rcvCLJ begin end 校验 st vrf input

1. 对应数据位累加和:

需确认协议规定是从哪一位累加到哪一位,以及对应到代码中rd_cnt[7:0]是从第几位累加到第几位。

//校验和
reg [15:0] rcvCLJ_SUM;
always @(posedge SYS_CLK or negedge sys_rst_n ) begin
    if(!sys_rst_n) 
        rcvCLJ_SUM <= 16'd0;
    else if(rd_cnt>8'd2 && rd_cnt<8'd62 && fifo_rd_en) //从帧长位开始累加到校验和位。
        rcvCLJ_SUM <= rcvCLJ_SUM + fifo_dout;
    else 
        rcvCLJ_SUM <= rcvCLJ_SUM;
end

 调整效果如上。

2. 帧头帧尾,校验和比对:

reg rcvCLJ_vrf;
always @(posedge SYS_CLK or negedge sys_rst_n ) begin
    if(!sys_rst_n) 
        rcvCLJ_vrf <= 1'd0;
    else if(rd_cnt== 8'd65)
        rcvCLJ_vrf <= 1'd1; //数据已全部存入rcvCLJ_fifo,可进行数据校准
    else 
        rcvCLJ_vrf <= 1'd0;
end
spi_rcvCLJ_verify  spi_rcvCLJ_verify(
    .i_Clk(SYS_CLK),
    .i_Rst_L(sys_rst_n),
    .i_rcvCLJ_vrf(rcvCLJ_vrf),
    .i_rcvCLJ0(rcvCLJ_fifo[0]),
    .i_rcvCLJ1(rcvCLJ_fifo[1]),//帧头
    .i_rcvCLJ60(rcvCLJ_fifo[60]),
    .i_rcvCLJ61(rcvCLJ_fifo[61]),//校验和
    .i_rcvCLJ62(rcvCLJ_fifo[62]),
    .i_rcvCLJ63(rcvCLJ_fifo[63]),//帧尾
    .i_rcvCLJ_SUM(rcvCLJ_SUM),
    .o_rcv_rst(w_rcv_rst)
);

//校验模块

`timescale 1ns / 1ns

module spi_rcvCLJ_verify(
input i_Clk ,
input i_Rst_L ,
input i_rcvCLJ_vrf,
input [15:0] i_rcvCLJ_SUM, //get SUM
input [7:0] i_rcvCLJ0,
input [7:0] i_rcvCLJ1,
input [7:0] i_rcvCLJ60,
input [7:0] i_rcvCLJ61,
input [7:0] i_rcvCLJ62,
input [7:0] i_rcvCLJ63,
output reg o_rcv_rst
);

//verification
wire [15:0] rcvVERcode ;
assign rcvVERcode = i_rcvCLJ60 * 256 + i_rcvCLJ61;

reg [3:0] vrf_st ;
always @(posedge i_Clk) begin
if(!i_Rst_L)begin
o_rcv_rst <= 1'd0;
vrf_st<=4'h0;
end
else begin
case(vrf_st)
4'h0: begin
if(i_rcvCLJ_vrf) //verification ready
begin
vrf_st<= 4'h1;
end
end
4'h1: begin
if(i_rcvCLJ0 ==8'hAA && i_rcvCLJ1==8'h55) //frame head
vrf_st<=4'h2;
else
vrf_st<= 4'h4;//exam1
end
4'h2: begin
if(i_rcvCLJ_SUM == rcvVERcode) //vrf_code
vrf_st<=4'h3;
else
vrf_st<= 4'h4;//exam2
end
4'h3: begin
if(i_rcvCLJ62==8'h55 && i_rcvCLJ63==8'hAA) //frame_tail
vrf_st<=4'h5;
else
vrf_st<= 4'h4;//exam3
end
4'h4: begin
o_rcv_rst <= 1'd1;
vrf_st<= 4'h5;
end
4'h5: begin
o_rcv_rst <= 1'd0;
vrf_st<= 4'h0;
end
default: begin
vrf_st<=4'h0;
end
endcase
end
end

endmodule

 

标签:rcvCLJ,begin,end,校验,st,vrf,input
From: https://www.cnblogs.com/Sichg/p/18369173

相关文章

  • 分享!! 如何自定义权限校验的注解并用AOP拦截实现权限校验
    CustomizepermissionverificationannotationandimplementitwithAOP详细步骤创建自定义注解自定义如下解释一下:@Target(ElementType.METHOD)//指定为method上使用的注解@Retention(RetentionPolicy.RUNTIME)//在运行时保留StringmustRole()default""//注......
  • Upload-Lab第10关:点空点绕过绕过文件上传校验
    简介在upload-lab的第10关,我们面对的是一个常见的文件上传防护机制:黑名单验证。黑名单验证是指系统通过拒绝特定扩展名或内容类型的文件来防止恶意文件上传。然而,这种防护机制通常存在漏洞,可以被绕过。下面是第10关的源码:$is_upload=false;$msg=null;if(isset($_......
  • h5直播源码,用户登录流程及权限校验
    h5直播源码,用户登录流程及权限校验今天我们来看一下用户登录的流程前端部分 以一个后台管理系统登录为例:登录篇1.用户输入账号和密码点击登录传给服务器用户名和密码2.服务器验证成功后给客户端传递一个token,并且把这个token存在cookies中,这样下次再向服务器发请......
  • CRC(循环冗余校验)和CBC(密码块链)
    CRC(循环冗余校验)和CBC(密码块链)是两种不同的技术,分别用于数据完整性校验和加密。以下是它们的主要区别和特点:循环冗余校验(CRC)定义:CRC是一种用于检测数据传输或存储中的错误的校验算法。它通过对数据进行数学运算生成一个固定长度的校验码,以便于在数据传输时验证数据的完整性。......
  • 在Delphi中使用正则表达式校验身份证号
    以下内容转自:https://my.oschina.net/ousinka/blog/3048132如何定义身份证号的正则表达式呢?1、省份编码[1-9]\d{5}2、年份(18|19|20)?\d{2}3、月份为1,3,5,7,8,10,12,天数范围为01-31,匹配MMDD的正则表达式为:(0[13578]|1[02])(0[1-9]|[12][0-9]|3[01])4、月份为4,6,9......
  • wpf ValidationRule 校验数据输入
    publicclassCountValidationRule:ValidationRule{publicoverrideValidationResultValidate(objectvalue,System.Globalization.CultureInfocultureInfo){doubled=0.0;if(double.TryParse((string)value,out......
  • koa中使用joi进行参数校验
    koa中使用joi进行参数校验超人鸭关注IP属地:广东0.312021.07.0618:23:59字数1,395阅读6,498在编写api的时候通常都需要对参数进行校验,包括参数的类型、必填等;如果是字符串,是否可以为空、该符合什么规则等;如果是数字,最大值最小值是什么等等等等。在koa中我推荐使用 j......
  • 025.Vue3入门,父页面给子页面传递数据,校验Props给出默认值
    1、App.vue代码:<template><Father/></template><scriptsetup>importFatherfrom'./view/Father.vue'</script><style></style>2、Father.vue代码<template><h3>父页面</h3><Chil......
  • 通信编码揭秘:(二)信道编码(汉明码、循环冗余校验码、里德所罗门码)与其应用
    通信编码揭秘:2.信道编码(汉明码、循环冗余校验码、里德所罗门码)与其应用摘要信道编码的目的是提高数据传输的可靠性,确保即使在噪声环境下传输的数据也能被正确接收。本文将探讨汉明码、循环冗余校验(CRC)和里德-所罗门码三种常见的信道编码方法,并通过实际例子说明它们的应用......
  • Docker容器时间与宿主机不一致/宿主机时间不同步校验
    一、Docker容器时间与宿主机不一致前言如果在启动Docker容器的过程中没有单独配置localtime,很可能造成Docker容器时间与主机时间不一致的情况,比如UTC和CST相差8小时,换句话来说就是容器时间与北京时间相差8个小时。问题描述问题:容器时间与北京时间相差8个小时   #查看主机时间......