0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FPGA奇偶校验的基本原理及实现方法

CHANBAEK 来源:FPGA入门到精通 作者:未可知摩尔 2023-05-14 14:59 次阅读

数字电路中,数据的正确性非常重要。 为了保证数据的正确性,在传输数据时需要添加一些冗余信息,以便在接收端进行校验。 其中一种常用的校验方式是奇偶校验(Parity Check)。 本文将介绍奇偶校验的基本原理及实现方法,并给出FPGA实现的代码示例。

一、奇偶校验原理

奇偶校验是一种基本的数据校验方式,其原理是在数据的尾部添加一个位,使得该位和数据中所有1的个数之和为奇数或偶数。 由于校验位的加入,使得数据传输中一旦数据错误就能够被检测出来,从而保证了数据的正确性。

奇偶校验可以采用两种方式:奇校验和偶校验。

奇校验::全部数据和该校验位中“1”的总数为奇数,则表示数据无误,否则数据错误

偶校验:全部数据和该校验位中“1”的总数为偶数,则表示数据无误,否则数据错误

奇偶校验的优点是简单、快速,不需要大量计算。 但是奇偶校验只能检测出错误,不能纠正错误,因此在实际应用中很少单独使用,通常与其它更加强大的校验方式结合起来使用。

以输出一组16bit数据为“1100_0011_1101_0100”为例,这组数据中有8个“1”。

如果使用奇校验,则校验位为1,传输数据实际为16bit数据+1bit奇校验位,即“1100_0011_1101_0100_1”。

如果使用偶校验,则校验位为0,传输数据实际为16bit数据+1bit偶校验位,即“1100_0011_1101_0100_0”。

二、FPGA奇偶校验设计

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、奇偶校验测试

奇偶校验只要求出其中一个,另一个取反即得到了。

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

wire even;// 偶校验
wire odd;// 奇校验

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

assign check = (sel)?odd : even;

endmodule

测试激励

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

仿真测试结果图:

从图中可以看出,仿真测试结果与预期一致。

三、总结

奇偶校验算法很简单,实现起来也很容易,本文提供了一个比较简单的方法实现,大家可以参考下。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1603

    文章

    21328

    浏览量

    593287
  • 仿真
    +关注

    关注

    50

    文章

    3872

    浏览量

    132167
  • 数字电路
    +关注

    关注

    192

    文章

    1397

    浏览量

    79758
  • 代码
    +关注

    关注

    30

    文章

    4556

    浏览量

    66820
  • 奇偶校验
    +关注

    关注

    0

    文章

    15

    浏览量

    8166
收藏 人收藏

    评论

    相关推荐

    如何实现一种基于FPGA奇偶校验器设计?

    奇偶校验是一种简单、实现代价小的检错方式,常用在数据传输过程中。对于一组并行传输的数据(通常为8比特),可以计算岀它们的奇偶校验位并与其一起传输。
    发表于 09-05 10:38 479次阅读
    如何<b class='flag-5'>实现</b>一种基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>奇偶校验</b>器设计?

    串口调试助手的奇偶校验测试方法

    很多串口调试助手感觉奇偶校验功能都是形同虚设的(我设置奇校验和偶校验都能收到数据)。是不是我测试方法有误呢?串口助手校验失败会有什么现象啊?
    发表于 04-28 15:11

    奇偶校验

    奇偶校验码   奇偶校验码是一种开销最小,能发现数据代码中一位出错情况的编码,常用于存储器读写检查,或ASCII字符、其它类
    发表于 10-13 16:42 4756次阅读

    奇偶校验器,奇偶校验器是什么意思

    奇偶校验器,奇偶校验器是什么意思 奇偶校验器定义 为了系统的可靠性,对于位数
    发表于 03-08 17:32 2063次阅读

    奇偶校验码,奇偶校验码原理是什么?

    奇偶校验码,奇偶校验码原理是什么? 奇偶校验码是奇校验码和偶校验码的统称,是一种最基本的检错码。它是由n-1位信息元和1位
    发表于 03-17 17:39 6.2w次阅读

    奇偶校验器_奇偶校验设计程序

    本内容提供了奇偶校验器_奇偶校验设计的程序代码,希望对大家有帮助
    发表于 11-11 10:04 5509次阅读

    stm32串口奇偶校验

    STM32串口通信使用奇偶校验的时候应该设置数据位长度9bit,奇偶校验是硬件完成的,并且stm32用校验位时,数据位要选9位,8位会出现故障可能。
    的头像 发表于 07-23 09:26 9924次阅读

    stm32 usart奇偶校验如何配置

    stm32 usart奇偶校验如何配置?或许你在stm32 usart奇偶校验过程中会遇到如下一些坑,stm32 usart偶校验错误标志位以及出现偶校验错误,
    的头像 发表于 07-23 09:55 6693次阅读
    stm32 usart<b class='flag-5'>奇偶校验</b>如何配置

    增强FIFO模式下的奇偶校验

    自昊芯推出专题讲解SCI串口通讯奇偶校验,分为两期讲解,上期主要讲解标准SCI模式下的奇偶校验,本期主要讲解增强FIFO模式下的奇偶校验
    的头像 发表于 11-02 09:30 721次阅读

    介绍FPGA奇偶校验基本原理实现方法

    在数字电路中,数据的正确性非常重要。为了保证数据的正确性,在传输数据时需要添加一些冗余信息,以便在接收端进行校验
    发表于 05-22 14:27 1184次阅读
    介绍<b class='flag-5'>FPGA</b><b class='flag-5'>奇偶校验</b>的<b class='flag-5'>基本原理</b>及<b class='flag-5'>实现</b><b class='flag-5'>方法</b>

    奇偶校验器的设计方法和特点

    奇偶校验是一种简单、实现代价小的检错方式,常用在数据传输过程中。对于一组并行传输的数据(通常为8比特),可以计算岀它们的奇偶校验位并与其一起传输。接收端根据接收的数据重新计算其奇偶校验
    的头像 发表于 09-05 10:40 1188次阅读
    <b class='flag-5'>奇偶校验</b>器的设计<b class='flag-5'>方法</b>和特点

    什么是奇偶校验 奇偶校验基本原理 奇偶校验电路什么意思

    什么是奇偶校验 奇偶校验基本原理 奇偶校验电路什么意思  奇偶校验是一种用于检测二进制数据中错误的方法
    的头像 发表于 10-17 16:16 2708次阅读

    什么是奇偶校验电路?奇偶校验器是时序逻辑电路吗?

    。当数据传输时,校验电路会对传输的数据进行计算并比较校验位和传输字节中1的数量是否是偶数或奇数,如果与规定的奇偶位不符,则认为数据发生错误。 奇偶校验电路的
    的头像 发表于 10-17 16:16 2650次阅读

    什么是奇校验和偶校验?常见的奇偶校验方式有哪些?

    校验,以保证正确性。常用的校验方法奇偶校验、循环冗余校验(CRC)、海明码等。 2. 奇偶校验是一种最简单的
    的头像 发表于 10-17 16:28 7895次阅读

    奇偶校验和crc校验的区别 CRC校验奇偶校验之间有什么关系?

    奇偶校验和crc校验的区别 CRC校验奇偶校验之间有什么关系? 奇偶校验和 CRC(Cyclic Redundancy Check)
    的头像 发表于 10-17 16:28 2477次阅读