✅ 一、什么是奇偶校验(Parity Check)

📌 定义:

奇偶校验是一种错误检测编码方式,用于判断一个二进制数据在传输或存储过程中是否发生了单比特错误。

  • 奇校验(Odd Parity):总共有奇数个 1
  • 偶校验(Even Parity):总共有偶数个 1

通常在数据末尾加一位 P,构成 (n+1) 位数据:

[原始数据 D0~Dn] + [校验位 P]

📌 示例:

  • 原始数据:1101(3个1)

    • 偶校验位P=1 → 总共4个1(偶数)
    • 奇校验位P=0 → 总共3个1(奇数)

✅ 二、奇偶校验电路结构

📌 奇偶校验位生成逻辑:

  • 偶校验:
    P = D0 ⊕ D1 ⊕ D2 ⊕ ... ⊕ Dn
    当总共有偶数个1时,P=0,奇数个1时 P=1

  • 奇校验:
    P = ~ (D0 ⊕ D1 ⊕ D2 ⊕ ... ⊕ Dn)

💡 说明:

XOR 是**“奇数个1输出1”的逻辑,因此非常适合做奇偶校验**。


✅ 三、Verilog 实现方式

🔹1. 行为级实现(推荐)

module parity_even_gen #(parameter WIDTH = 8)(input  [WIDTH-1:0] data_in,output parity_bit
);assign parity_bit = ^data_in; // 逐位异或,偶校验endmodule
  • ^data_in 是 Verilog 中的按位归约异或运算(Reduce XOR)
奇校验版本:
assign parity_bit = ~^data_in;

🔹2. 门级建模(以4位为例)

module parity_even_gate (input D0, D1, D2, D3,output P  // 偶校验
);wire xor1, xor2, xor3;xor (xor1, D0, D1);xor (xor2, xor1, D2);xor (P, xor2, D3);endmodule

多输入 XOR 可通过树状连接实现。对于硬件综合而言,通常综合工具会自动做优化成更浅的逻辑树。


✅ 四、奇偶校验检测器

除了生成校验位,还可以做接收端校验检查

module parity_checker (input  [7:0] data_in,input        parity_bit,output       parity_error
);assign parity_error = ^{data_in, parity_bit}; // 总共奇数个1 → 有错endmodule

偶校验:最终结果应为0,若为1,则表示奇数个1,说明数据传输发生了1位错误


✅ 五、常见应用场景

应用领域使用说明
UART 串口通信1 位奇偶校验位附加在每帧数据尾部
DRAM 数据校验ECC中奇偶校验用于检测/纠正1位错误
通讯协议校验SPI、CAN、I²C中自定义扩展校验
存储系统存储块写入/读取时校验数据完整性

✅ 六、设计注意事项

要点说明
综合建议多输入 XOR 用行为级写法,门级难维护
奇偶可选有些系统默认奇校验,有些偶校验,要一致
多位数据大于8位可使用 ^data[WIDTH-1:0] 方式扩展
与CRC区别CRC 是多项式除法,更复杂但更强健,奇偶校验只能检测1位错误

✅ 七、扩展方向

  • 汉明码(Hamming Code):基于多位奇偶校验位,可定位并纠正1位错误;
  • CRC 循环冗余校验:更强纠错能力;
  • ECC 内存保护机制:结合奇偶与多重余码用于服务器与关键系统;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/85026.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/85026.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/85026.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UWB协议精读:IEEE 802.15.4z-2020,15. HRP UWB PHY, STS, HRP-ERDEV, BPRF, HPRF,

跟UWB相关的IEEE标准主要有2个: 1,IEEE 802.15.4-2020 2,IEEE 802.15.4z-2020 IEEE Std 802.15.4z™ ‐ 2020 Amendment 1: Enhanced Ultra Wideband (UWB) Physical Layers (PHYs) and Associated Ranging Techniques scrambled timestamp sequence (STS): A sequence of…

6.IK分词器拓展词库

比如一些行业专业词汇、简单无意义词(例如:的、得、地、是等)、网络流行词、后来形成的词、再或者一些禁忌词(比如:领导人的名字、黄赌毒犯罪等词要排除的) 在es的插件目录下查找配置文件: 找到IKAnalyzer…

Web3-Web3.js核心操作:Metamask、合约调用、事件订阅全指南

Web3-Web3.js核心操作:Metamask、合约调用、事件订阅全指南 我们做了Solidity的合约代码,但是合约仅仅是一个后端逻辑;我们想要让用户来操作你的逻辑还需要做一个基本的网页。如果要做一个基本的网页,我们就要使用到以太坊基金发布…

四色(定理/猜想)染色算法小软件Version1.11

四色(定理/猜想)染色算法小软件Version1.11 2025.6.16 开发者:路人甲/打酱油 增加了【自思肯普法】 为什么加上【自思】两字?因为我也看不明英文的PDF的四色定理证明文档,分什么成千上百种类来证明。我就是百度下,看相关介绍&am…

【Linux驱动开发 ---- 2_深入理解内核模块】

Linux驱动开发 ---- 2_深入理解内核模块 目录 Linux驱动开发 ---- 2_深入理解内核模块学习目标时间安排建议 理论学习1. 什么是内核模块?2. 模块加载与卸载3. 内核模块开发基础 实践任务任务1:准备开发环境任务2:编写简单内核模块任务3&#…

Linux SUID提权 案例以及知识点提高分析

目录 📚 Linux SUID 提权原理与红队实践 🚀 概述 🛠️ SUID 提权原理 核心机制 技术栈 🔍 案例背景:sudo -l 与 .monit 脚本 案例信息 脚本内容 🧪 提权步骤分解 📋 1. 检查 sudo 权限…

S参数与串扰-信号完整性分析

S参数与串扰: 四端口网络S参数中,仍表示反射,表示信号的传输。根据S参数的定义,和两个参数的含义为 当只有端口1有正弦信号激励源时,从端口3和端口4出来的正弦信号只能是互连结构内部耦合过来的,因此表示的是近端串扰…

Android OkHttp 框架超时设置详解

OkHttp 提供了四种不同的超时设置,每种针对网络请求的不同阶段: 1. callTimeout (调用超时) 作用:控制整个调用从开始到结束的总时间,包括所有重定向和重试 默认值:0 (不超时) 场景:当你希望限制整个请求…

如何让LLM通过反思来提升生成sql的正确率 - 以Gemini生成sql为例

什么是Agent Reflection 通常指 “智能体反思”,即让 AI 系统通过自我反思机制优化决策或任务处理过程,类似人类通过复盘改进策略。 创建一个 SQL Agent 导入相关的库 import openai import pandas as pd import sqlite3 from util.get_schema impor…

数字IC学习笔记(二)

数字IC学习笔记(二) 宏定义,异步FIFO, 时钟来源,复位信号 文章目录 数字IC学习笔记(二)1. define宏定义的使用2,异步FIFO原理3,时钟来源4,复位参考资料 1. define宏定义的…

日志输出功能

当程序运行出现问题时,日志记录是一种非常有用的工具,它可以帮助我们追踪和定位问题。在 MicroPython 中,可以使用 log 模块来记录程序运行中的信息。本文将介绍 log 模块的使用方法和常见功能。 日志级别 log.DEBUG 常量,用来…

【JVM】- 类加载与字节码结构1

类文件结构 ClassFile {u4 magic;u2 minor_version;u2 major_version;u2 constant_pool_count;cp_info constant_pool[constant_pool_count-1];u2 access_flags;u2 this_class;u2 …

Android及Harmonyos实现图片进度显示效果

鸿蒙Harmonyos实现,使用ImageKnife自定义transform来实现图片进度效果 import { Context } from ohos.abilityAccessCtrl; import { image } from kit.ImageKit; import { drawing } from kit.ArkGraphics2D; import { GrayScaleTransformation, PixelMapTransform…

linux 中的自动化之systemd

linux | 自动化之systemd linux 中的自动化之systemd 学习总是循序渐进的。 linux 中程序的自动化,包括早期手动启动,查看启动后的日志、分析启动情况,再到后面封装脚本(大致要求启动后检查是否挂了,挂了拉起,没挂跳过…

【编译工具】CodeRider 2.0:驭码 CodeRider 2.0 全流程智能研发协作平台深度技术测评报告

目录 前言:CodeRider 2.0 简介 (1)核心功能 (2)适用场景 (3)优势 一、产品概述与技术架构 (1)产品定位与核心价值 (2)技术架构解析 &…

抓包 TCP 四次挥手报文

文章目录 抓包 TCP 三次握手报文一、第一次挥手二、第二次挥手三、第三次挥手四、第四次挥手 抓包 TCP 三次握手报文 抓包 TCP 三次握手报文 一、第一次挥手 二、第二次挥手 三、第三次挥手 四、第四次挥手

KMP(Kotlin Multiplatform)发布Web版本乱码

一、背景 最近用KMP尝试运行在Android、iOS、desktop都成功了,网络数据访问也正常。 可是当运行wasmJs的时候遇到了2个较大的问题。 中文字体出现乱码。 出现了跨域问题。 首先贴一下每个平台的运行截图: Android iOS Desktop 二、问题 当web跑起…

一个应用程序或移动网站项目提供最佳UI解决方案

一个应用程序或移动网站项目提供最佳UI解决方案 此套件是用大量的爱和辛勤工作制作的,为您的下一个应用程序或移动网站项目提供最佳解决方案。120个完全可编辑的界面,分为10个类别和2种文件格式,Photoshop和AI。简单易用的结构将允许您以所…

Android studio打包生成jar包文件

Android studio打包生成jar包文件 一 项目配置1.修改 app/build.gradle2.修改 AndroidManifest.xml 二 打 Jar 包1.修改 app/build.gradle2.编译生成 Jar 包 一 项目配置 1.修改 app/build.gradle 将com.android.application改成com.android.library注释掉applicationId 2.…

JAVA类加载机制(jdk8)

三句话总结JDK8的类加载机制: 类缓存:每个类加载器对他加载过的类都有一个缓存。双亲委派:向上委托查找,向下委托加载。沙箱保护机制:不允许应用程序加载JDK内部的系统类。 JDK8的类加载体系 类加载器的核心方法 //…