FPGA基礎 -- Verilog門級建模之奇偶校驗電路

? 一、什么是奇偶校驗(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、I2C中自定義擴展校驗
存儲系統存儲塊寫入/讀取時校驗數據完整性

? 六、設計注意事項

要點說明
綜合建議多輸入 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的類加載體系 類加載器的核心方法 //…