chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

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

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

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

1.1 校驗(yàn)依據(jù)

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

1.2 重復(fù)校驗(yàn)位

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

1.3 校驗(yàn)方法

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

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


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

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

1.4 C 代碼實(shí)現(xiàn)

實(shí)際中按 block 重復(fù)校驗(yàn)法應(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ù)塊長(zhǎng)度 .
* @param repeatTimes, 數(shù)據(jù)重復(fù)次數(shù)(假定為奇數(shù)).
* @retval 0, 數(shù)據(jù)無(wú)錯(cuò)誤位 .
* @retval 1, 數(shù)據(jù)有錯(cuò)誤位且已糾正 .
*/
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;

// 遍歷一個(gè) block 長(zhǎng)度里每個(gè) byte
for (uint32_t i = 0; i < blockBytes; i++)
{
// 遍歷當(dāng)前 byte 的每個(gè) 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 的個(gè)數(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)錯(cuò)誤 bit 時(shí),置位 result
if ((!result) && (bit1Count !=0) && bit1Count != repeatTimes)
{
result = 1;
}
}
// 將校驗(yàn)后的 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)用

實(shí)際上本文所講的單純的重復(fù)校驗(yàn)法行業(yè)因?yàn)樾实脑颍袠I(yè)里較少應(yīng)用,其改進(jìn)版的實(shí)現(xiàn) RA Codes 應(yīng)用在了 FlexRay 協(xié)議里。

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

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

當(dāng)重復(fù) bit 全部發(fā)生錯(cuò)誤時(shí),會(huì)被誤認(rèn)為沒(méi)有錯(cuò)誤 bit 發(fā)生。


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

有沒(méi)有其他比重復(fù)校驗(yàn)法更高效的檢錯(cuò)方法?痞子衡在下篇會(huì)繼續(xù)聊。

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

審核編輯 黃昊宇

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

    關(guān)注

    3

    文章

    355

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    如何驗(yàn)證電能質(zhì)量在線(xiàn)監(jiān)測(cè)裝置數(shù)據(jù)校驗(yàn)系統(tǒng)的準(zhǔn)確性?

    驗(yàn)證電能質(zhì)量在線(xiàn)監(jiān)測(cè)裝置 數(shù)據(jù)校驗(yàn)系統(tǒng)的準(zhǔn)確性 ,核心是通過(guò) “標(biāo)準(zhǔn)基準(zhǔn)對(duì)比、模擬真實(shí)工況、量化指標(biāo)評(píng)估”,確保校驗(yàn)系統(tǒng)能精準(zhǔn)識(shí)別監(jiān)測(cè)裝置數(shù)據(jù)的 “正確性 / 偏差性”,且結(jié)果符合國(guó)際
    的頭像 發(fā)表于 09-25 17:42 ?396次閱讀

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

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

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

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

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

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

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

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

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

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

    如何控制和減少電磁干擾對(duì)電能質(zhì)量在線(xiàn)監(jiān)測(cè)裝置校驗(yàn)準(zhǔn)確性的影響?

    控制和減少電磁干擾(EMI)對(duì)電能質(zhì)量在線(xiàn)監(jiān)測(cè)裝置校驗(yàn)準(zhǔn)確性的影響,需從 干擾源頭阻斷、傳播路徑切斷、裝置抗擾能力提升、校驗(yàn)環(huán)境管控 四個(gè)核心維度入手,結(jié)合硬件設(shè)計(jì)、安裝部署、校驗(yàn)
    的頭像 發(fā)表于 09-18 11:23 ?237次閱讀

    哪些環(huán)境因素會(huì)對(duì)電能質(zhì)量在線(xiàn)監(jiān)測(cè)裝置的校驗(yàn)準(zhǔn)確性產(chǎn)生影響?

    電能質(zhì)量在線(xiàn)監(jiān)測(cè)裝置的校驗(yàn)準(zhǔn)確性,核心依賴(lài)于裝置硬件(如采樣傳感器、模數(shù)轉(zhuǎn)換器 ADC、基準(zhǔn)源)、信號(hào)傳輸鏈路及校驗(yàn)標(biāo)準(zhǔn)源的穩(wěn)定工作。而環(huán)境因素通過(guò)干擾上述環(huán)節(jié)的性能,直接或間接導(dǎo)致校驗(yàn)數(shù)據(jù)
    的頭像 發(fā)表于 09-18 11:14 ?324次閱讀
    哪些環(huán)境因素會(huì)對(duì)電能質(zhì)量在線(xiàn)監(jiān)測(cè)裝置的<b class='flag-5'>校驗(yàn)</b>準(zhǔn)確性產(chǎn)生影響?

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

    確保電能質(zhì)量在線(xiàn)監(jiān)測(cè)裝置(以下簡(jiǎn)稱(chēng) “監(jiān)測(cè)裝置”)數(shù)據(jù)校驗(yàn)的準(zhǔn)確性,需圍繞 “ 標(biāo)準(zhǔn)溯源、流程規(guī)范、環(huán)境控制、數(shù)據(jù)審核、全周期追溯 ” 五大核心環(huán)節(jié),建立全鏈條管控機(jī)制,覆蓋
    的頭像 發(fā)表于 09-18 11:05 ?278次閱讀
    如何確保電能質(zhì)量在線(xiàn)監(jiān)測(cè)裝置的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>校驗(yàn)</b>的準(zhǔn)確性?

    高壓放大器在鎖相環(huán)穩(wěn)定重復(fù)頻率研究中的應(yīng)用

    頻率的鎖相環(huán)理論和關(guān)鍵器件,以及結(jié)果分析。 測(cè)試設(shè)備: 高壓放大器、光電探測(cè)器、低通濾波器、比例積分控制器、PZT等。 圖1:穩(wěn)定重復(fù)頻率的鎖相環(huán)系統(tǒng)結(jié)構(gòu)圖 實(shí)驗(yàn)過(guò)程: 系統(tǒng)結(jié)構(gòu)圖如圖1
    的頭像 發(fā)表于 06-06 18:36 ?387次閱讀
    高壓放大器在鎖相環(huán)穩(wěn)定<b class='flag-5'>重復(fù)</b>頻率研究中的應(yīng)用

    KT6368A藍(lán)牙芯片應(yīng)該自帶數(shù)據(jù)校驗(yàn)機(jī)制嗎?

    KT6368A藍(lán)牙芯片應(yīng)該自帶數(shù)據(jù)校驗(yàn)機(jī)制嗎?
    的頭像 發(fā)表于 04-19 16:34 ?649次閱讀
    KT6368A藍(lán)牙芯片應(yīng)該自帶<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>校驗(yàn)</b>機(jī)制嗎?

    基于Verilog語(yǔ)言實(shí)現(xiàn)CRC校驗(yàn)

    CRC即循環(huán)冗余校驗(yàn)碼:是數(shù)據(jù)通信領(lǐng)域中最常用的一種查錯(cuò)校驗(yàn)碼,其特征是信息字段和校驗(yàn)字段的長(zhǎng)度可以任意選定。循環(huán)冗余檢查(CRC)是一種
    的頭像 發(fā)表于 03-24 10:36 ?1904次閱讀
    基于Verilog語(yǔ)言實(shí)現(xiàn)CRC<b class='flag-5'>校驗(yàn)</b>

    使用stm32來(lái)控制并讀取ADS8686S數(shù)據(jù)時(shí)出現(xiàn)AIN0-7八個(gè)通道數(shù)據(jù)出現(xiàn)交替性重復(fù),為什么?

    我在使用stm32來(lái)控制并讀取ADS8686S數(shù)據(jù)時(shí)出現(xiàn)AIN0-7八個(gè)通道數(shù)據(jù)出現(xiàn)交替性重復(fù)的問(wèn)題,而B(niǎo)IN0-7的數(shù)據(jù)就能一一對(duì)應(yīng)。這
    發(fā)表于 11-15 08:13

    ADS131采集數(shù)據(jù)重復(fù)的原因?

    下降沿采集,dataready觸發(fā)次數(shù)也是正常的,觸發(fā)頻率也正常,但是采集數(shù)據(jù)每?jī)蓚€(gè)點(diǎn)重復(fù)一次,請(qǐng)問(wèn)這有可能是什么原因?qū)е碌摹?
    發(fā)表于 11-14 06:44

    飛凌嵌入式ElfBoard ELF 1板卡-串口通訊編程示例之串口硬件原理

    :115200、9600。報(bào)文格式串口的報(bào)文數(shù)據(jù)由:起始位(1bit)+數(shù)據(jù)位(5~8bit)+奇偶校驗(yàn)位(1bit)+停止位(
    發(fā)表于 10-22 10:46