奇偶校驗碼原理與FPGA實現

奇偶校驗原理與FPGA實現

  • 寫在前面
  • 一、基礎原理
    • 2.1 奇校驗
    • 2.2 偶校驗
    • 2.3 缺點
  • 二、舉個例子
    • 3.1 奇校驗例子
    • 3.2 偶校驗例子
    • 3.3 檢測出錯例子
  • 三、FPGA實現
  • 寫在后面

寫在前面

??奇偶校驗碼是一種簡單的檢錯碼,主要用于數據傳輸或存儲過程中檢測奇數個比特錯誤或者偶數個比特錯誤,其實現簡單、開銷低,但可靠性低、檢錯能力有限,在UART、RS23等低速串行接口或者早期的存儲中會使用到。

一、基礎原理

??奇偶校驗碼核心原理是通過增加一個校驗位,使得整個數據(包括校驗位)中“1”的個數滿足奇偶性(奇數或偶數),從而檢測傳輸或存儲過程中可能發生的單比特錯誤。具體地,奇偶校驗分為奇校驗偶校驗

2.1 奇校驗

??發送端,在序列尾部增加1位校驗位,確保發送的整個二進制序列中“1”的總個數位奇數。
??接收端,判斷接收到的二進制序列中的“1”的總個數是否為奇數,若為奇數,則校驗通過,認為數據傳輸正確;若為偶數,則校驗失敗,認為數據傳輸錯誤。

2.2 偶校驗

??發送端,在序列尾部增加1位校驗位,確保發送的整個二進制序列中“1”的總個數位偶數。
??接收端,判斷接收到的二進制序列中的“1”的總個數是否為奇數,若為偶數,則校驗通過,認為數據傳輸正確;若為奇數,則校驗失敗,認為數據傳輸錯誤。

2.3 缺點

??奇偶校驗碼在數據傳輸的過程中僅增加了1位的冗余,所增加的額外開銷小,但檢錯能力有限,若出錯的數據個數為偶數,則無法檢測出來錯誤。

二、舉個例子

??假設在發送端需要傳輸一個二進制序列11100001。

3.1 奇校驗例子

??若為奇校驗,此時序列中“1”的個數為偶數,發送端增加的校驗位應為1。在接收端,接收到的序列中“1”的總個數為奇數,取出有效數據。
在這里插入圖片描述

3.2 偶校驗例子

??若為偶校驗,此時序列中“1”的個數為偶數,發送端增加的校驗位應為0。在接收端,接收到的序列中“1”的總個數為偶數,取出有效數據。
在這里插入圖片描述

3.3 檢測出錯例子

??采用奇校驗,在傳輸過程中出現了2比特的錯誤,但是在接收端統計“1”的個數仍為奇數,認為接收到數據無誤,實際上數據有誤。
在這里插入圖片描述

三、FPGA實現

??以下為奇偶校驗碼的Verilog實現代碼,由于較為簡單,這里不提供仿真環境。

module parity_check
#(parameter DW = 8
)
(input                           clk         , input                           rst_n       ,input           [DW-1   :0]     data_in     ,input                           mode        , // 0:偶校驗  1:奇校驗output  reg     [DW     :0]     data_out    ,output  reg                     parity_bit   
);always @(posedge clk) begindata_out   <= mode ? {data_in,(^data_in)} : {data_in,(~(^data_in))};parity_bit <= mode ? (^data_in) : (~(^data_in));endendmodule

寫在后面

??本文中我們學習了奇偶校驗的基礎原理,同時給出了奇校驗、偶校驗的例子以及相應的RTL代碼。


🧐:以上為個人學習筆記,如有疑問,歡迎評論區交流探討 !!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/92416.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/92416.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/92416.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python中的Lambda函數詳解

Lambda函數&#xff08;匿名函數&#xff09;是Python中一種簡潔的函數定義方式&#xff0c;它允許你快速創建小型、一次性的函數對象而無需使用標準的def關鍵字。1. Lambda函數的基本語法lambda arguments: expressionlambda&#xff1a;定義匿名函數的關鍵字arguments&#x…

進階向:Python編寫網頁爬蟲抓取數據

Python網頁爬蟲入門指南&#xff1a;從零開始抓取數據在當今數據驅動的時代&#xff0c;網絡爬蟲已成為獲取公開信息的重要工具。Python憑借其豐富的庫和簡潔的語法&#xff0c;成為編寫網絡爬蟲的首選語言。本文將詳細介紹如何使用Python編寫一個基礎的網頁爬蟲。什么是網頁爬…

客服Agent革命:智能客服系統的技術實現與效果評估

客服Agent革命&#xff1a;智能客服系統的技術實現與效果評估 &#x1f31f; Hello&#xff0c;我是摘星&#xff01; &#x1f308; 在彩虹般絢爛的技術棧中&#xff0c;我是那個永不停歇的色彩收集者。 &#x1f98b; 每一個優化都是我培育的花朵&#xff0c;每一個特性都是我…

C++-紅黑樹

1、紅黑樹的概念紅黑樹&#xff0c;是一種二叉搜索樹&#xff0c;但在每個結點上增加一個存儲位表示結點的顏色&#xff0c;可以是Red或 Black。 通過對任何一條從根到葉子的路徑上各個結點著色方式的限制&#xff0c;紅黑樹確保沒有一條路 徑會比其他路徑長出倆倍&#xff0c;…

在Python中避免使用`None`表示特殊情況:函數返回值與異常處理的最佳實踐 (Effective Python 第20條)

在Python編程中&#xff0c;函數的設計與實現直接影響代碼的可讀性、可維護性和健壯性。一個常見的問題是如何處理函數的返回值&#xff0c;尤其是在需要表示某種特殊或異常情況時。許多開發者習慣性地使用None來表示這些特殊情況&#xff0c;但這種方法往往會導致意想不到的錯…

從反射到方法句柄:深入探索Java動態編程的終極解決方案

&#x1f31f; 你好&#xff0c;我是 勵志成為糕手 &#xff01; &#x1f30c; 在代碼的宇宙中&#xff0c;我是那個追逐優雅與性能的星際旅人。 ? 每一行代碼都是我種下的星光&#xff0c;在邏輯的土壤里生長成璀璨的銀河&#xff1b; &#x1f6e0;? 每一個算法都是我繪制…

算法_python_學習記錄_01

人心的成見是一座大山。一旦有山擋在面前&#xff0c;則很難到達下一站。所需要做的&#xff0c;是穿過這座山。 偶然間看了一個視頻&#xff0c;說的是EMASMA的自動交易策略&#xff0c;這個視頻做的很用心&#xff0c;在入場的時間不僅要看EMA的金叉&#xff0c;還需要看其他…

機器翻譯中的語言學基礎詳解(包括包括語法、句法和語義學等)

文章目錄一、語法&#xff08;Grammar&#xff09;&#xff1a;語言規則的底層框架1.1 傳統語法理論的應用1.2 生成語法&#xff08;Generative Grammar&#xff09;1.3 依存語法&#xff08;Dependency Grammar&#xff09;二、句法&#xff08;Syntax&#xff09;&#xff1a…

MQTT:Dashboard訪問授權

目錄一、認證1.1 創建認證器1.2 多認證器二、授權2.1 ACL文件授權配置2.2 使用內置數據庫授權配置一、認證 認證&#xff1a;就是驗證客戶端的身份。 1.1 創建認證器 選擇認證方式配置數據源配置數據源的相關參數 認證器創建之后&#xff0c;在使用客戶端連接Dashboard時&am…

Serper注冊無反應

google郵箱才行&#xff0c;163郵箱注冊無反應&#xff0c;其他郵箱沒試過 在嘗試websailor系列的時候&#xff0c;需要注冊serper&#xff0c;獲取Google Search Key serper.dev/dashboard

聊聊經常用的微服務

聊聊微服務 架構演變 單體架構&#xff1a; All in One&#xff0c;所有的功能模塊都在一個工程里。 SOA架構&#xff1a; 這個架構當不當正不正&#xff0c;對于現在來說&#xff0c;有點老&#xff0c;甚至需要ESB&#xff0c;WebService之類的&#xff0c;基本不會使用了。…

第十四屆藍橋杯青少年組省賽 編程題真題題解

明天我就要考藍橋杯省賽了&#xff0c;本蒟蒻已瑟瑟發抖&#xff0c;所以現在寫一篇文章。 題目分別為&#xff1a; 1.??????B4270 [藍橋杯青少年組省賽 2023] 特殊運算符 2.B4271 [藍橋杯青少年組省賽 2023] 四葉玫瑰數 3.B4272 [藍橋杯青少年組省賽 2023] 質因數的…

HTML全景效果實現

我將為您創建一個精美的360度全景效果頁面&#xff0c;使用Three.js庫實現沉浸式全景體驗&#xff0c;并提供用戶友好的控制界面&#xff0c;完整代碼看文章末尾。 設計思路 使用Three.js創建全景球體 添加控制面板用于切換不同場景 實現自動旋轉和手動控制選項 添加加載狀…

Python 屬性描述符(描述符用法建議)

描述符用法建議 下面根據剛剛論述的描述符特征給出一些實用的結論。 使用特性以保持簡單 內置的 property 類創建的其實是覆蓋型描述符&#xff0c;__set__ 方法和 __get__ 方法都實現了&#xff0c;即便不定義設值方法也是如此。特性的 __set__ 方法默認拋出 AttributeError: …

Milvus 向量數據庫內存使用相關了解

1、支持 MMap 的數據存儲在 Milvus 中&#xff0c;內存映射文件允許將文件內容直接映射到內存中。這一功能提高了內存效率&#xff0c;尤其是在可用內存稀缺但完全加載數據不可行的情況下。這種優化機制可以增加數據容量&#xff0c;同時在一定限度內確保性能&#xff1b;但當數…

C++編程之旅-- -- --默認成員函數(全詳解)

目錄前言構造函數構造函數形式&#xff1a;構造函數的特性&#xff1a;explicit關鍵字析構函數析構函數的概念析構函數的特性含有類類型的成員變量的類析構函數的調用拷貝構造函數拷貝構造函數的概念拷貝構造函數的特性淺拷貝和深拷貝&#xff1a;拷貝構造函數典型調用場景&…

Linux網絡編程:TCP的遠程多線程命令執行

目錄 前言&#xff1a; 一、前文補充 二、服務端的修改 三、Command類的新增 前言&#xff1a; 好久不見&#xff0c;最近忙于其他事情&#xff0c;就耽誤了咱們的Linux的網絡部分的學習。 今天咱們先來給之前所學的TCP的部分進行一個首尾工作&#xff0c;主要是給大家介紹…

重學React(三):狀態管理

背景&#xff1a; 繼續跟著官網的流程往后學&#xff0c;之前已經整理了描述UI以及添加交互兩個模塊&#xff0c;總體來說還是收獲不小的&#xff0c;至少我一個表面上用了四五年React的前端小卡拉米對React的使用都有了新的認知。接下來就到了狀態管理&#xff08;React特地加…

java web項目入門了解

目錄一、項目流程1. 使用servle2. 使用框架二、了解java web項目構造1. 項目目錄結構2. 查看頁面訪問順序3. 發起請求&#xff1a;jqueryajax4. 接受參數5. JSONJSON 數組三、get和post請求區別一、項目流程 1. 使用servle 有客戶端和服務端&#xff0c;客戶端和服務端進行交…

網絡資源模板--基于Android Studio 實現的日記本App

目錄 一、測試環境說明 二、項目簡介 三、項目演示 四、部設計詳情&#xff08;部分) 創建修改頁面 五、項目源碼 一、測試環境說明 電腦環境 Windows 11 編寫語言 JAVA 開發軟件 Android Studio (2020) 開發軟件只要大于等于測試版本即可(近幾年官網直接下載也可…