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

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

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

FPGA奇偶校驗(yàn)的基本原理及實(shí)現(xiàn)方法

CHANBAEK ? 來(lái)源:FPGA入門到精通 ? 作者:未可知摩爾 ? 2023-05-14 14:59 ? 次閱讀

數(shù)字電路中,數(shù)據(jù)的正確性非常重要。 為了保證數(shù)據(jù)的正確性,在傳輸數(shù)據(jù)時(shí)需要添加一些冗余信息,以便在接收端進(jìn)行校驗(yàn)。 其中一種常用的校驗(yàn)方式是奇偶校驗(yàn)(Parity Check)。 本文將介紹奇偶校驗(yàn)的基本原理及實(shí)現(xiàn)方法,并給出FPGA實(shí)現(xiàn)的代碼示例。

一、奇偶校驗(yàn)原理

奇偶校驗(yàn)是一種基本的數(shù)據(jù)校驗(yàn)方式,其原理是在數(shù)據(jù)的尾部添加一個(gè)位,使得該位和數(shù)據(jù)中所有1的個(gè)數(shù)之和為奇數(shù)或偶數(shù)。 由于校驗(yàn)位的加入,使得數(shù)據(jù)傳輸中一旦數(shù)據(jù)錯(cuò)誤就能夠被檢測(cè)出來(lái),從而保證了數(shù)據(jù)的正確性。

奇偶校驗(yàn)可以采用兩種方式:奇校驗(yàn)和偶校驗(yàn)。

奇校驗(yàn)::全部數(shù)據(jù)和該校驗(yàn)位中“1”的總數(shù)為奇數(shù),則表示數(shù)據(jù)無(wú)誤,否則數(shù)據(jù)錯(cuò)誤

偶校驗(yàn):全部數(shù)據(jù)和該校驗(yàn)位中“1”的總數(shù)為偶數(shù),則表示數(shù)據(jù)無(wú)誤,否則數(shù)據(jù)錯(cuò)誤

奇偶校驗(yàn)的優(yōu)點(diǎn)是簡(jiǎn)單、快速,不需要大量計(jì)算。 但是奇偶校驗(yàn)只能檢測(cè)出錯(cuò)誤,不能糾正錯(cuò)誤,因此在實(shí)際應(yīng)用中很少單獨(dú)使用,通常與其它更加強(qiáng)大的校驗(yàn)方式結(jié)合起來(lái)使用。

以輸出一組16bit數(shù)據(jù)為“1100_0011_1101_0100”為例,這組數(shù)據(jù)中有8個(gè)“1”。

如果使用奇校驗(yàn),則校驗(yàn)位為1,傳輸數(shù)據(jù)實(shí)際為16bit數(shù)據(jù)+1bit奇校驗(yàn)位,即“1100_0011_1101_0100_1”。

如果使用偶校驗(yàn),則校驗(yàn)位為0,傳輸數(shù)據(jù)實(shí)際為16bit數(shù)據(jù)+1bit偶校驗(yàn)位,即“1100_0011_1101_0100_0”。

二、FPGA奇偶校驗(yàn)設(shè)計(jì)

1、多位輸入,分別用每位做:與、或、異或

module test( 
    input [3:0] in,
    output out_and,
    output out_or,
    output out_xor
);
    //方法一
    assign out_and = in[0] & in[1] & in[2] & in[3];
    assign out_or  = in[0] | in[1] | in[2] | in[3];
    assign out_xor = in[0] ^ in[1] ^ in[2] ^ in[3];

    //方法二
    assign out_and = ∈
    assign out_or = |in;
    assign out_xor = ^in;

endmodule

2、奇偶校驗(yàn)測(cè)試

奇偶校驗(yàn)只要求出其中一個(gè),另一個(gè)取反即得到了。

module parity_check(
input [7:0] data_in,
input sel,
output check
);

wire even;// 偶校驗(yàn)
wire odd;// 奇校驗(yàn)

assign even = ^data_in;
assign odd = ~even;

assign check = (sel)?odd : even;

endmodule

測(cè)試激勵(lì)

module sim(

    );
	
reg clk;
reg [7:0] data_in;

parity_check u_parity_check (
  .data_in(data_in),
  .sel(1'b0)
);

initial begin
    data_in = 0;
    
    #10 data_in = 8'b1011_1000;
    #10 data_in = 8'b1011_0000;
    #10 data_in = 8'b1111_1000;
    #10 data_in = 8'b1011_1100;
    #10 data_in = 8'b1011_1010;
    #10 data_in = 8'b1111_1010;
    #10 data_in = 8'b1011_1001;
    #10 data_in = 8'b1011_1101;
    #10 data_in = 8'b1011_1011;
    
    #10 $finish;
end
	
	
endmodule

仿真測(cè)試結(jié)果圖:

從圖中可以看出,仿真測(cè)試結(jié)果與預(yù)期一致。

三、總結(jié)

奇偶校驗(yàn)算法很簡(jiǎn)單,實(shí)現(xiàn)起來(lái)也很容易,本文提供了一個(gè)比較簡(jiǎn)單的方法實(shí)現(xiàn),大家可以參考下。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1629

    文章

    21736

    瀏覽量

    603375
  • 仿真
    +關(guān)注

    關(guān)注

    50

    文章

    4082

    瀏覽量

    133606
  • 數(shù)字電路
    +關(guān)注

    關(guān)注

    193

    文章

    1605

    瀏覽量

    80622
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4788

    瀏覽量

    68611
  • 奇偶校驗(yàn)
    +關(guān)注

    關(guān)注

    0

    文章

    15

    瀏覽量

    8207
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    串口調(diào)試助手的奇偶校驗(yàn)測(cè)試方法

    很多串口調(diào)試助手感覺(jué)奇偶校驗(yàn)功能都是形同虛設(shè)的(我設(shè)置奇校驗(yàn)和偶校驗(yàn)都能收到數(shù)據(jù))。是不是我測(cè)試方法有誤呢?串口助手校驗(yàn)失敗會(huì)有什么現(xiàn)象?。?/div>
    發(fā)表于 04-28 15:11

    奇偶校驗(yàn)

    奇偶校驗(yàn)碼   奇偶校驗(yàn)碼是一種開(kāi)銷最小,能發(fā)現(xiàn)數(shù)據(jù)代碼中一位出錯(cuò)情況的編碼,常用于存儲(chǔ)器讀寫檢查,或ASCII字符、其它類
    發(fā)表于 10-13 16:42 ?5354次閱讀

    奇偶校驗(yàn)器,奇偶校驗(yàn)器是什么意思

    奇偶校驗(yàn)器,奇偶校驗(yàn)器是什么意思 奇偶校驗(yàn)器定義 為了系統(tǒng)的可靠性,對(duì)于位數(shù)
    發(fā)表于 03-08 17:32 ?2223次閱讀

    奇偶校驗(yàn)碼,奇偶校驗(yàn)碼原理是什么?

    奇偶校驗(yàn)碼,奇偶校驗(yàn)碼原理是什么? 奇偶校驗(yàn)碼是奇校驗(yàn)碼和偶校驗(yàn)碼的統(tǒng)稱,是一種最基本的檢錯(cuò)碼。它是由n-1位信息元和1位
    發(fā)表于 03-17 17:39 ?6.3w次閱讀

    奇偶校驗(yàn)器_奇偶校驗(yàn)設(shè)計(jì)程序

    本內(nèi)容提供了奇偶校驗(yàn)器_奇偶校驗(yàn)設(shè)計(jì)的程序代碼,希望對(duì)大家有幫助
    發(fā)表于 11-11 10:04 ?5725次閱讀

    stm32串口奇偶校驗(yàn)

    STM32串口通信使用奇偶校驗(yàn)的時(shí)候應(yīng)該設(shè)置數(shù)據(jù)位長(zhǎng)度9bit,奇偶校驗(yàn)是硬件完成的,并且stm32用校驗(yàn)位時(shí),數(shù)據(jù)位要選9位,8位會(huì)出現(xiàn)故障可能。
    的頭像 發(fā)表于 07-23 09:26 ?1.1w次閱讀

    stm32 usart奇偶校驗(yàn)如何配置

    stm32 usart奇偶校驗(yàn)如何配置?或許你在stm32 usart奇偶校驗(yàn)過(guò)程中會(huì)遇到如下一些坑,stm32 usart偶校驗(yàn)錯(cuò)誤標(biāo)志位以及出現(xiàn)偶校驗(yàn)錯(cuò)誤,
    的頭像 發(fā)表于 07-23 09:55 ?7564次閱讀
    stm32 usart<b class='flag-5'>奇偶校驗(yàn)</b>如何配置

    奇偶校驗(yàn)的優(yōu)缺點(diǎn)及奇偶校驗(yàn)代碼實(shí)現(xiàn)

    奇偶校驗(yàn)需要一位校驗(yàn)位,即使用串口通信的方式2或方式3(8位數(shù)據(jù)位+1位校驗(yàn)位)。 奇校驗(yàn)(odd parity) :讓傳輸?shù)臄?shù)據(jù)(包含校驗(yàn)
    的頭像 發(fā)表于 06-18 18:14 ?1.5w次閱讀
    <b class='flag-5'>奇偶校驗(yàn)</b>的優(yōu)缺點(diǎn)及<b class='flag-5'>奇偶校驗(yàn)</b>代碼<b class='flag-5'>實(shí)現(xiàn)</b>

    增強(qiáng)FIFO模式下的奇偶校驗(yàn)

    自昊芯推出專題講解SCI串口通訊奇偶校驗(yàn),分為兩期講解,上期主要講解標(biāo)準(zhǔn)SCI模式下的奇偶校驗(yàn),本期主要講解增強(qiáng)FIFO模式下的奇偶校驗(yàn)。
    的頭像 發(fā)表于 11-02 09:30 ?1049次閱讀

    介紹FPGA奇偶校驗(yàn)基本原理實(shí)現(xiàn)方法

    在數(shù)字電路中,數(shù)據(jù)的正確性非常重要。為了保證數(shù)據(jù)的正確性,在傳輸數(shù)據(jù)時(shí)需要添加一些冗余信息,以便在接收端進(jìn)行校驗(yàn)。
    發(fā)表于 05-22 14:27 ?2007次閱讀
    介紹<b class='flag-5'>FPGA</b><b class='flag-5'>奇偶校驗(yàn)</b>的<b class='flag-5'>基本原理</b>及<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>方法</b>

    奇偶校驗(yàn)器的設(shè)計(jì)方法和特點(diǎn)

    奇偶校驗(yàn)是一種簡(jiǎn)單、實(shí)現(xiàn)代價(jià)小的檢錯(cuò)方式,常用在數(shù)據(jù)傳輸過(guò)程中。對(duì)于一組并行傳輸?shù)臄?shù)據(jù)(通常為8比特),可以計(jì)算岀它們的奇偶校驗(yàn)位并與其一起傳輸。接收端根據(jù)接收的數(shù)據(jù)重新計(jì)算其奇偶校驗(yàn)
    的頭像 發(fā)表于 09-05 10:40 ?2935次閱讀
    <b class='flag-5'>奇偶校驗(yàn)</b>器的設(shè)計(jì)<b class='flag-5'>方法</b>和特點(diǎn)

    什么是奇偶校驗(yàn) 奇偶校驗(yàn)基本原理 奇偶校驗(yàn)電路什么意思

    什么是奇偶校驗(yàn) 奇偶校驗(yàn)基本原理 奇偶校驗(yàn)電路什么意思? 奇偶校驗(yàn)是一種用于檢測(cè)二進(jìn)制數(shù)據(jù)中錯(cuò)誤的方法
    的頭像 發(fā)表于 10-17 16:16 ?3735次閱讀

    什么是奇偶校驗(yàn)電路?奇偶校驗(yàn)器是時(shí)序邏輯電路嗎?

    。當(dāng)數(shù)據(jù)傳輸時(shí),校驗(yàn)電路會(huì)對(duì)傳輸?shù)臄?shù)據(jù)進(jìn)行計(jì)算并比較校驗(yàn)位和傳輸字節(jié)中1的數(shù)量是否是偶數(shù)或奇數(shù),如果與規(guī)定的奇偶位不符,則認(rèn)為數(shù)據(jù)發(fā)生錯(cuò)誤。 奇偶校驗(yàn)電路的
    的頭像 發(fā)表于 10-17 16:16 ?3654次閱讀

    什么是奇校驗(yàn)和偶校驗(yàn)?常見(jiàn)的奇偶校驗(yàn)方式有哪些?

    校驗(yàn),以保證正確性。常用的校驗(yàn)方法奇偶校驗(yàn)、循環(huán)冗余校驗(yàn)(CRC)、海明碼等。 2. 奇偶校驗(yàn)是一種最簡(jiǎn)單的
    的頭像 發(fā)表于 10-17 16:28 ?1w次閱讀

    奇偶校驗(yàn)和crc校驗(yàn)的區(qū)別 CRC校驗(yàn)奇偶校驗(yàn)之間有什么關(guān)系?

    奇偶校驗(yàn)和crc校驗(yàn)的區(qū)別 CRC校驗(yàn)奇偶校驗(yàn)之間有什么關(guān)系? 奇偶校驗(yàn)和 CRC(Cyclic Redundancy Check)
    的頭像 發(fā)表于 10-17 16:28 ?3406次閱讀