一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

電子設(shè)計(jì) ? 來源: 電子設(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)用比并行接口廣泛,常用的串行接口種類非常多,比如 UART,SPI,I2C,USB 等,在使用這些接口傳輸數(shù)據(jù)時(shí)避不可免會(huì)遇到一個(gè)問題,如果傳輸過程中遇到未知硬件干擾發(fā)生 bit 錯(cuò)誤怎么辦?

痞子衡今天給大家講的就是數(shù)據(jù)傳輸過程中用于差錯(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ù)。是不是覺得簡(jiǎn)單又粗暴?

1.3 校驗(yàn)方法

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

按 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)為沒有錯(cuò)差;如不一致,則存在錯(cuò)誤 bit。如需糾錯(cuò)的話,原理也很簡(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ù)無錯(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)樾实脑?,行業(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)為沒有錯(cuò)誤 bit 發(fā)生。


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

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

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

審核編輯 黃昊宇

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

    關(guān)注

    3

    文章

    352

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎ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)過程: 系統(tǒng)結(jié)構(gòu)圖如圖1
    的頭像 發(fā)表于 06-06 18:36 ?240次閱讀
    高壓放大器在鎖相環(huán)穩(wěn)定<b class='flag-5'>重復(fù)</b>頻率研究中的應(yīng)用

    常用電器控制電路精選

    本文共精選了200多個(gè)電路,涉及電工技術(shù)的各個(gè)領(lǐng)域。全書共分為五大部分:電動(dòng)機(jī)保護(hù)、能耗制動(dòng)及水位控制電路,電動(dòng)機(jī)和發(fā)電機(jī)啟動(dòng)、驅(qū)動(dòng)及調(diào)速控制電路,農(nóng)村電工制作及實(shí)用電路,常用工業(yè)設(shè)備
    發(fā)表于 05-14 16:59

    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 ?353次閱讀
    KT6368A藍(lán)牙芯片應(yīng)該自帶<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>校驗(yàn)</b>機(jī)制嗎?

    基于Verilog語言實(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 ?1446次閱讀
    基于Verilog語言實(shí)現(xiàn)CRC<b class='flag-5'>校驗(yàn)</b>

    ADS131B04-Q1 SPI通信時(shí),為什么無法得到正常的CRC校驗(yàn)?

    你好,我使用 ADS131B04 進(jìn)行產(chǎn)品開發(fā),使用中遇到如下問題還請(qǐng)幫忙解答。謝謝。 1 . SPI 通信時(shí) CRC 不清楚怎么使用,按如下方法使用時(shí)無法得到正常的CRC 校驗(yàn)。 初始化代碼如下
    發(fā)表于 11-22 06:40

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

    我在使用stm32來控制并讀取ADS8686S數(shù)據(jù)時(shí)出現(xiàn)AIN0-7八個(gè)通道數(shù)據(jù)出現(xiàn)交替性重復(fù)的問題,而BIN0-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)問這有可能是什么原因?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

    基于GPU器件行為的創(chuàng)新分布式功能安全機(jī)制為智能駕駛保駕護(hù)航

    在鎖步和重復(fù)校驗(yàn)兩種常見的功能安全機(jī)制之外,全球領(lǐng)先的GPU IP廠商Imagination帶來一種全新的、高性價(jià)比的分布式功能安全機(jī)制。
    的頭像 發(fā)表于 10-11 13:14 ?609次閱讀
    基于GPU器件行為的創(chuàng)新分布式功能安全機(jī)制為智能駕駛保駕護(hù)航

    HDMD-H1型SF6氣體密度繼電器校驗(yàn)裝置的操作方式說明

    1.操作概述HDMD-H1型SF6氣體密度繼電器校驗(yàn)裝置,是一種智能化全自動(dòng)的SF6氣體密度繼電器校驗(yàn)裝置器。采用單周期指令微機(jī)技術(shù),運(yùn)行速
    的頭像 發(fā)表于 09-25 11:05 ?674次閱讀
    HDMD-H<b class='flag-5'>1</b>型SF6氣體密度繼電器<b class='flag-5'>校驗(yàn)</b>裝置的操作方式說明

    LP886-Q1在大屏汽車導(dǎo)航的應(yīng)用及其EEPROM燒錄校驗(yàn)方法

    電子發(fā)燒友網(wǎng)站提供《LP886-Q1在大屏汽車導(dǎo)航的應(yīng)用及其EEPROM燒錄校驗(yàn)方法.pdf》資料免費(fèi)下載
    發(fā)表于 09-05 11:14 ?0次下載
    LP886-Q<b class='flag-5'>1</b>在大屏汽車導(dǎo)航的應(yīng)用及其EEPROM燒錄<b class='flag-5'>校驗(yàn)</b>方法

    AS3933 與SI3933 技術(shù)對(duì)比資料

    的完美匹配,極大地簡(jiǎn)化了天線調(diào)諧。三大PCB例圖:Si3933 支持以下喚醒規(guī)則: 1、僅頻率檢測(cè)(不需向量校驗(yàn)); 2、單向量校驗(yàn),包括 16 位的向量和 32 位的向量; 3、雙向量校驗(yàn)
    發(fā)表于 08-30 14:56

    重復(fù)接地的作用與實(shí)施

    ,施工單位需要確保配電線路的零干線以及分支線的末端都接地,并且在零干線上每隔1公里進(jìn)行一次接地。對(duì)于接地點(diǎn)超過50米遠(yuǎn)的配電線路,在用戶接入點(diǎn)的零線也應(yīng)進(jìn)行重復(fù)接地,且重復(fù)接地電阻應(yīng)控制
    的頭像 發(fā)表于 08-15 11:23 ?2320次閱讀

    全自動(dòng)密度校驗(yàn)儀操作方法——每日了解電力知識(shí)

    今天武漢摩恩智能電氣有限公司帶大家了解一下MOEORW-6862全自動(dòng)密度校驗(yàn)儀。 SF6密度繼電器校驗(yàn)流程圖 SF6密度繼電器的校驗(yàn)步驟? 1. 打開儀器電源,觀察儀器電量是否充足,
    的頭像 發(fā)表于 07-23 09:23 ?810次閱讀
    全自動(dòng)密度<b class='flag-5'>校驗(yàn)</b>儀操作方法——每日了解電力知識(shí)

    便攜式互感器校驗(yàn)裝置的使用方法——每日了解電力知識(shí)

    今天武漢摩恩智能電氣有限公司帶大家了解一下MOEORW-8050/35 便攜式互感器校驗(yàn)裝置 MOEORW-8050/35 便攜式互感器校驗(yàn)裝置使用方法: 1.校驗(yàn)儀面板與背板介紹 下
    的頭像 發(fā)表于 07-19 10:41 ?636次閱讀
    便攜式互感器<b class='flag-5'>校驗(yàn)</b>裝置的使用方法——每日了解電力知識(shí)