日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

常用的數(shù)據(jù)差錯控制技術(shù)(1)-重復(fù)校驗

電子設(shè)計 ? 來源: 電子設(shè)計 ? 作者: 電子設(shè)計 ? 2020-10-30 11:55 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家講的是嵌入式里數(shù)據(jù)差錯控制技術(shù) - 重復(fù)校驗。

嵌入式應(yīng)用里,除了最核心的數(shù)據(jù)處理外,我們還會經(jīng)常和數(shù)據(jù)傳輸打交道。數(shù)據(jù)傳輸需要硬件傳輸接口的支持,串行接口由于占用引腳少的優(yōu)點目前應(yīng)用比并行接口廣泛,常用的串行接口種類非常多,比如 UART,SPI,I2C,USB 等,在使用這些接口傳輸數(shù)據(jù)時避不可免會遇到一個問題,如果傳輸過程中遇到未知硬件干擾發(fā)生 bit 錯誤怎么辦?

痞子衡今天給大家講的就是數(shù)據(jù)傳輸過程中用于差錯檢測的最簡單的方法,即重復(fù)校驗法。

一、重復(fù)校驗法基本原理

1.1 校驗依據(jù)

重復(fù)校驗法的校驗依據(jù)就是判斷重復(fù)傳輸?shù)?q 組 n bits 二進(jìn)制數(shù)據(jù)是否一致。

1.2 重復(fù)校驗位

為了實現(xiàn)重復(fù)校驗,就是不斷重復(fù)傳輸這組 n bits 原始數(shù)據(jù) q 次即可,一次校驗的 q*n bits 數(shù)據(jù)塊中,僅有 n bits 數(shù)據(jù)是原始有效數(shù)據(jù),校驗位就是那些重復(fù)的(q-1)*n bits 數(shù)據(jù)。是不是覺得簡單又粗暴?

1.3 校驗方法

假設(shè)原始數(shù)據(jù)塊是 X[n-1:0]共 n bits,重復(fù)次數(shù)為 q(q 一般為奇數(shù)),按重復(fù)傳輸方式,可分為兩個子類:

按 bit 重復(fù):發(fā)送數(shù)據(jù)序列為,q 個 X0(X0X0...),q 個 X1(X1X1...)...,q 個 Xn-1(Xn-1Xn-1...)


按 block 重復(fù):發(fā)送數(shù)據(jù)序列為,第 1 個 X[n-1:0],第 2 個 X[n-1:0]...,第 q 個 X[n-1:0]。

接受端收到數(shù)據(jù)后,逐次比較 q 個重復(fù)位,如完全一致,則認(rèn)為沒有錯差;如不一致,則存在錯誤 bit。如需糾錯的話,原理也很簡單,判斷 q 個重復(fù)位里哪種數(shù)據(jù)位出現(xiàn)的次數(shù)多(這里解釋了 q 為何應(yīng)是奇數(shù))則為原始正確數(shù)據(jù)位。

1.4 C 代碼實現(xiàn)

實際中按 block 重復(fù)校驗法應(yīng)用比較多,此處示例代碼以此為例:

安裝包:codeblocks-17.12mingw-setup.exe
集成環(huán)境:CodeBlocks 17.12 rev 11256
編譯器:GNU GCC 5.1.0
調(diào)試器:GNU gdb (GDB) 7.9.1

// repetition_code.c
//////////////////////////////////////////////////////////
#include
#include

/*!
* @brief 處理按 block 重復(fù)的數(shù)據(jù)塊
*
* @param src, 待處理的數(shù)據(jù)塊 .
* @param dest, 處理完成的原始數(shù)據(jù) .
* @param lenInBytes, 待處理的數(shù)據(jù)塊長度 .
* @param repeatTimes, 數(shù)據(jù)重復(fù)次數(shù)(假定為奇數(shù)).
* @retval 0, 數(shù)據(jù)無錯誤位 .
* @retval 1, 數(shù)據(jù)有錯誤位且已糾正 .
*/
uint32_t verify_correct_repetition_block(uint8_t *src,
uint8_t *dest,
uint32_t lenInBytes,
uint32_t repeatTimes)
{
assert(repeatTimes % 2);
assert(!(lenInBytes % repeatTimes));

uint32_t result = 0;
uint32_t blockBytes = lenInBytes / repeatTimes;

// 遍歷一個 block 長度里每個 byte
for (uint32_t i = 0; i < blockBytes; i++)
{
// 遍歷當(dāng)前 byte 的每個 bit
uint8_t correctByte = 0;
for (uint32_t j = 0; j < 8; j++)
{
// 遍歷當(dāng)前 byte 的所有重復(fù) byte
uint32_t bit1Count = 0;
for (uint32_t k = 0; k < repeatTimes; k++)
{
// 記錄所有重復(fù) byte 中當(dāng)前 bit 為 1 的個數(shù)
uint8_t countByte = *(src + i + k * blockBytes);
bit1Count += (countByte & (0x1u << j)) >> j;
}
// 當(dāng) bit1 出現(xiàn)半數(shù)則將當(dāng)前 bit 認(rèn)定為 1
if (bit1Count > (repeatTimes / 2))
{
correctByte |= 0x1u << j;
}
// 首次發(fā)現(xiàn)錯誤 bit 時,置位 result
if ((!result) && (bit1Count !=0) && bit1Count != repeatTimes)
{
result = 1;
}
}
// 將校驗后的 byte 存入 dest
*(dest + i) = correctByte;
}

return result;
}

// main.c
//////////////////////////////////////////////////////////
#include "repetition_code.h"
#include
#include

int main(void)
{
uint8_t src[3][4] = {{0x32, 0x33, 0x04, 0x08},
{0x32, 0x83, 0x04, 0xd8},
{0x31, 0x33, 0x04, 0xe8}};
uint8_t dest[4];
uint32_t result = verify_correct_repetition_block((uint8_t *)src, dest, sizeof(src), sizeof(src) / sizeof(src[0]));

printf("result = %d/n", result);
for (uint32_t i = 0; i < sizeof(dest); i++)
{
printf("dest[%d] = 0x%x/n", i, dest[i]);
}
return 0;
}

1.5 行業(yè)應(yīng)用

實際上本文所講的單純的重復(fù)校驗法行業(yè)因為效率的原因,行業(yè)里較少應(yīng)用,其改進(jìn)版的實現(xiàn) RA Codes 應(yīng)用在了 FlexRay 協(xié)議里。

二、重復(fù)校驗法失效分析

重復(fù)校驗實現(xiàn)非常簡單,具有比較理想的檢錯能力,但效率太低,并未得到廣泛使用。即便犧牲了效率,但重復(fù)校驗法也存在如下 2 個缺陷,導(dǎo)致其檢錯糾錯并不可靠:

當(dāng)重復(fù) bit 全部發(fā)生錯誤時,會被誤認(rèn)為沒有錯誤 bit 發(fā)生。


當(dāng)錯誤 bit 出現(xiàn)概率大于原始 bit 時,在糾錯時會認(rèn)定錯誤 bit 是原始 bit。

有沒有其他比重復(fù)校驗法更高效的檢錯方法?痞子衡在下篇會繼續(xù)聊。

至此,嵌入式里數(shù)據(jù)差錯控制技術(shù)之重復(fù)校驗痞子衡便介紹完畢了,掌聲在哪里~~~

審核編輯 黃昊宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 控制技術(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    364

    瀏覽量

    34374
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    IDT74SSTU32865:28位1:2帶奇偶校驗寄存器緩沖器的技術(shù)剖析

    IDT74SSTU32865:28位1:2帶奇偶校驗寄存器緩沖器的技術(shù)剖析 在DDR2 DIMM設(shè)計領(lǐng)域,IDT74SSTU32865這一28位1:2帶奇偶
    的頭像 發(fā)表于 04-12 12:45 ?453次閱讀

    嵌入式AI開發(fā)必看:杜絕幻覺,才是工業(yè)級IDE的核心底氣

    ,問題定位一目了然,無需在代碼中逐行排查。而組件級復(fù)用機(jī)制確保校驗標(biāo)準(zhǔn)可繼承,避免重復(fù)校驗工作,進(jìn)一步提升開發(fā)效率。 三、核心價值:讓AI代碼直接落地工業(yè)產(chǎn)線 PPEC Workbench 的全流程校驗
    發(fā)表于 03-18 13:49

    TB級數(shù)據(jù)手工校驗要多久?用NineData僅需小時級別

    TB級數(shù)據(jù)手工校驗要多久?用NineData僅需小時級別
    的頭像 發(fā)表于 03-16 10:48 ?507次閱讀
    TB級<b class='flag-5'>數(shù)據(jù)</b>手工<b class='flag-5'>校驗</b>要多久?用NineData僅需小時級別

    芯源循環(huán)冗余校驗(CRC)功能

    1 概述 循環(huán)冗余校驗(CRC) 主要應(yīng)用于核實數(shù)據(jù)傳輸或數(shù)據(jù)存儲的正確性和完整性。CW32R030 內(nèi)部集成CRC 計算單元, 支持采用多種CRC 算法對輸入
    發(fā)表于 01-12 06:07

    通訊數(shù)據(jù)求和取反加一校驗方法

    現(xiàn)在有一組通訊協(xié)議,但是我對校驗方法不熟悉導(dǎo)致通訊異常,想問問大神指點一下校驗方法-如圖所示我想給ID1的發(fā)送連接指令正確數(shù)據(jù)應(yīng)該是怎樣的
    發(fā)表于 12-23 14:29

    UART偶校驗和奇校驗介紹

    校驗校驗位使一幀數(shù)據(jù)數(shù)據(jù)位和校驗位中“1”的總數(shù)為奇數(shù)。 偶
    發(fā)表于 12-15 06:02

    CS校驗原理與應(yīng)用

    原理: CS校驗數(shù)據(jù)塊中所有字節(jié)(或字)進(jìn)行累加求和,最終結(jié)果取模(通常是模 256 或 65536)后取補碼(或直接截斷)作為校驗值。 例如:8位校驗和 = (所有字節(jié)之和) mo
    發(fā)表于 11-19 07:51

    CRC校驗的原理和應(yīng)用

    原理: CRC校驗數(shù)據(jù)視為一個二進(jìn)制多項式,用一個預(yù)先定義好的生成多項式(Generator Polynomial) 進(jìn)行模2除法,得到的余數(shù)作為CRC校驗碼。 例如:數(shù)據(jù)多項式 ÷
    發(fā)表于 11-14 06:48

    CRC校驗的本質(zhì)和物理意義

    工業(yè)控制系統(tǒng)中,Modbus RTU協(xié)議的CRC校驗如同通信網(wǎng)絡(luò)的\"免疫系統(tǒng)\",某石化廠DCS系統(tǒng)曾因CRC計算錯誤導(dǎo)致0.3%的數(shù)據(jù)包丟失,引發(fā)連鎖控制故障。 一、CRC
    發(fā)表于 11-13 07:58

    進(jìn)行數(shù)據(jù)校驗時如何保證場景覆蓋的全面性?

    數(shù)據(jù)校驗中保證場景覆蓋的全面性,核心是 從 “數(shù)據(jù)屬性 - 業(yè)務(wù)邏輯 - 異常邊界 - 環(huán)境交互” 多維度拆解場景 ,通過系統(tǒng)化梳理、優(yōu)先級排序和動態(tài)迭代,避免因場景遺漏導(dǎo)致校驗漏洞
    的頭像 發(fā)表于 09-25 17:42 ?829次閱讀

    怎樣選擇適合的數(shù)據(jù)校驗系統(tǒng)時間同步硬件?

    在電能質(zhì)量在線監(jiān)測裝置的數(shù)據(jù)校驗系統(tǒng)中, 時間同步硬件的選擇需緊密匹配 “數(shù)據(jù)校驗準(zhǔn)確性” 核心需求 (如多監(jiān)測點數(shù)據(jù)時間戳一致性、
    的頭像 發(fā)表于 09-19 11:46 ?686次閱讀
    怎樣選擇適合的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>校驗</b>系統(tǒng)時間同步硬件?

    如何保證數(shù)據(jù)校驗系統(tǒng)的時間同步以提高準(zhǔn)確性?

    在電能質(zhì)量監(jiān)測的數(shù)據(jù)校驗系統(tǒng)中, 時間同步的準(zhǔn)確性直接決定了多監(jiān)測點數(shù)據(jù)的時空一致性、暫態(tài)事件的時序匹配度,以及校驗結(jié)果的可信度 。要保證時間同步以提升
    的頭像 發(fā)表于 09-19 11:28 ?888次閱讀

    電能質(zhì)量監(jiān)測中,有哪些方法可以提高數(shù)據(jù)校驗系統(tǒng)的準(zhǔn)確性?

    在電能質(zhì)量監(jiān)測中,數(shù)據(jù)校驗系統(tǒng)的準(zhǔn)確性是保障監(jiān)測數(shù)據(jù)可信度的核心,需從 “標(biāo)準(zhǔn)源精度、校準(zhǔn)流程、硬件適配、算法優(yōu)化、時間同步、運維管理” 等多維度構(gòu)建提升方案,針對性解決 “信號失真、參數(shù)偏差、環(huán)境
    的頭像 發(fā)表于 09-19 10:03 ?772次閱讀

    如何制定電能質(zhì)量在線監(jiān)測裝置的數(shù)據(jù)校驗標(biāo)準(zhǔn)?

    制定電能質(zhì)量在線監(jiān)測裝置(以下簡稱 “監(jiān)測裝置”)的數(shù)據(jù)校驗標(biāo)準(zhǔn),需以 確保數(shù)據(jù)準(zhǔn)確性、可靠性、一致性 為核心目標(biāo),結(jié)合國際 / 國內(nèi)通用規(guī)范、實際應(yīng)用場景(如工業(yè)、民用、電網(wǎng)側(cè))及監(jiān)測裝置的
    的頭像 發(fā)表于 09-18 11:40 ?996次閱讀
    如何制定電能質(zhì)量在線監(jiān)測裝置的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>校驗</b>標(biāo)準(zhǔn)?

    如何確保電能質(zhì)量在線監(jiān)測裝置的數(shù)據(jù)校驗的準(zhǔn)確性?

    確保電能質(zhì)量在線監(jiān)測裝置(以下簡稱 “監(jiān)測裝置”)數(shù)據(jù)校驗的準(zhǔn)確性,需圍繞 “ 標(biāo)準(zhǔn)溯源、流程規(guī)范、環(huán)境控制數(shù)據(jù)審核、全周期追溯 ” 五大核心環(huán)節(jié),建立全鏈條管控機(jī)制,覆蓋
    的頭像 發(fā)表于 09-18 11:05 ?782次閱讀
    如何確保電能質(zhì)量在線監(jiān)測裝置的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>校驗</b>的準(zhǔn)確性?
    福海县| 闻喜县| 津南区| 湖南省| 玛多县| 花垣县| 九江县| 顺昌县| 金华市| 长沙市| 嘉黎县| 黔江区| 许昌市| 元朗区| 凤冈县| 丹寨县| 厦门市| 贵德县| 平邑县| 柳林县| 柳州市| 都昌县| 乾安县| 讷河市| 南京市| 灵宝市| 海宁市| 永城市| 东源县| 准格尔旗| 淳化县| 西乡县| 普兰县| 西充县| 秦安县| 江达县| 大连市| 兴义市| 临高县| 高陵县| 徐闻县|