奇偶校验 与 缩减运算

2023-10-08 15:30
文章标签 运算 缩减 奇偶校验

本文主要是介绍奇偶校验 与 缩减运算,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目描述:

      现在需要对输入的32位数据进行奇偶校验,根据sel输出校验结果

            (1输出偶校验,0输出奇校验)

信号示意图:

波形示意图:

解题思路

关于奇偶校验的定义:

奇校验:原始码流+校验位 总共有奇数个1

偶校验:原始码流+校验位 总共有偶数个1

所以奇偶校验的关键是确定原始码流中有多少个1,实现思路有两种:

  1. 笨办法,原始码流的所有bit相加,根据和数据的最低bit是0还是1来判断原始码流中1的个数;

`timescale 1ns/1ns
module odd_sel(
input [31:0] data,
input        sel,
output       check
);
//*************code***********//
// sel  == 0  偶校验
// sel  == 1  奇校验
wire [7:0]  check_1_num ;
assign check_1_num = data[0] + data[1] + data[2] + data[3] + data[4] + data[5] + data[6] + data[7] + data[8] + data[9] +data[10] + data[11] + data[12] + data[13] + data[14] + data[15] + data[16] + data[17] + data[18] + data[19] + data[20] + data[21] + data[22] + data[23] + data[24] +data[25] + data[26] + data[27] + data[28] + data[29] +  data[30] + data[31] ;
assign check = (sel) ? ~check_1_num[0] : check_1_num[0];//*************code***********//
endmodule
  1. 缩减运算符,使用缩减异或,如果原始码流有奇数个1,则缩减的结果为1

`timescale 1ns/1ns
module odd_sel(
input [31:0] bus,
input sel,
output check
);
//*************code***********//
wire check_tmp;// 单目运算符assign check_tmp = ^bus;//  assign check = (sel == 1'b1) ? check_tmp : ~check_tmp;reg check_reg;always @ (*) beginif(sel) begincheck_reg = check_tmp;endelse begincheck_reg = ~check_tmp;end end assign check = check_reg;//*************code***********//
endmodule

举一反三

类似的缩减运算符(也叫单目运算符,因为操作数只有一个,运算的结果也只有1bit)

除了缩减异或,还包括

  1、 缩减与    a[0] = &b[7:0];

       等效于   a[0] = b[0] & b[1] & b[2] & b[3] & b[4] & b[5] & b[6] & b[7];

       可用于判断码流中是否有 0 存在;

2、 缩减或   a[0] = | b[7:0];

等效于 a[0] = b[0] | b[1] | b[2] | b[3] | b[4] | b[5] | b[6] | b[7];

可用于判断码流中是否有 1 存在;

进一步的关于 && 和 & 的区别?

官方定义是  :&& 是逻辑操作符 ;& 是位操作符

什么意思呢?&& 操作符得到的运算结果只能是逻辑值(即0/1/x);

                  如 (a==b && c == d ) 此处就应该使用“&&”

       & 位操作符,顾名思义按位求与;

      a[3:0] & b[3:0] = {a[3]&b[3],a[2]&b[2],a[1]&b[1],a[0]&b[0]};

    

这篇关于奇偶校验 与 缩减运算的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/166279

相关文章

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

uva 575 Skew Binary(位运算)

求第一个以(2^(k+1)-1)为进制的数。 数据不大,可以直接搞。 代码: #include <stdio.h>#include <string.h>const int maxn = 100 + 5;int main(){char num[maxn];while (scanf("%s", num) == 1){if (num[0] == '0')break;int len =

校验码:奇偶校验,CRC循环冗余校验,海明校验码

文章目录 奇偶校验码CRC循环冗余校验码海明校验码 奇偶校验码 码距:任何一种编码都由许多码字构成,任意两个码字之间最少变化的二进制位数就称为数据检验码的码距。 奇偶校验码的编码方法是:由若干位有效信息(如一个字节),再加上一个二进制位(校验位)组成校验码。 奇校验:整个校验码中1的个数为奇数 偶校验:整个校验码中1的个数为偶数 奇偶校验,可检测1位(奇数位)的错误,不可纠错。

【Java中的位运算和逻辑运算详解及其区别】

Java中的位运算和逻辑运算详解及其区别 在 Java 编程中,位运算和逻辑运算是常见的两种操作类型。位运算用于操作整数的二进制位,而逻辑运算则是处理布尔值 (boolean) 的运算。本文将详细讲解这两种运算及其主要区别,并给出相应示例。 应用场景了解 位运算和逻辑运算的设计初衷源自计算机底层硬件和逻辑运算的需求,它们分别针对不同的处理对象和场景。以下是它们设计的初始目的简介:

位运算:带带孩子吧,孩子很强的!

快速进制 在聊到位运算之前,不妨先简单过一遍二进制的东西。熟悉二进制和十进制的快速转换确实是掌握位运算的基础,因为位运算直接在二进制位上进行操作。如果不熟悉二进制表示,很难直观理解位运算的效果。 这里主要涉及二进制和十进制之间的互相转换。 十进制转二进制 十进制转二进制可以使用常见的 除2取余法 进行。每次将十进制除以2并记录所得余数,直到商为0,然后再将记录的余数 从下往上排列即

快速幂运算的一些模板

这里用递归和循环两种做法来做。 简单来说,快速幂就是把底数扩大,指数缩小,比如2*2=4;计算2的幂时,就可以转换成4的幂来运算,这样可以避免在计算大的数据时爆int的现象  //递归int power(int a,int n){int ans;if(n==2) ans=1;else{ans=power(a*a,n/2);if(n%2==1) ans*=a;}return ans;}

高精度计算----减法运算(浮点型)

基于上一贴,修改减法运算适合于高精度浮点型计算。 因为减法比加法难度大一点,考虑的地方也要多一些,可能代码有欠缺,欢迎指出。 运算说明: 1、相减函数依旧没改变,包括上一贴的判断被减数与减数的大小函数也没变。 2、增加两个函数,取小数位数函数和结果处理(回归小数点)函数 3、与加法浮点高精度运算相比,这里改变较多的是结果处理函数,加法加完后,位数不减反增,而且最多增一位。减法会消失掉好多

高精度计算----减法运算

处理大数减法运算: 1、首先要判断被减数与减数哪个更大,再相应的带入减法函数去处理。具体的比较可以使用字符串的相关知识去比较。 2、相减要先对齐数组,依照减数的长度,执行相应的减法运算次数。 3、不需要借位相减的话,直接减去;需要的话,向前借一位,若前一位是0,则再前借(此时前一位的0变为10)。 测试程序效果如下:   以下代码包括相减函数,比较被减数减数函数,若有错误,请指出:

Python中的位运算-从入门到精通

你是否曾经好奇过计算机是如何在底层处理数据的?或者,你是否想知道为什么有些程序员总是津津乐道于位运算的强大?如果是,那么你来对地方了!今天,我们将深入探讨Python中的位运算,揭示它们的神奇之处,以及如何利用它们来优化你的代码。 目录 位运算:计算机的秘密语言为什么位运算重要? Python中的位运算操作符1. 按位与 (&)2. 按位或 (|)3. 按位异或 (^)4. 按位取反 (~

【OpenCV2.2】图像的算术与位运算(图像的加法运算、图像的减法运算、图像的融合)、OpenCV的位运算(非操作、与运算、或和异或)

1 图像的算术运算 1.1 图像的加法运算 1.2 图像的减法运算 1.3 图像的融合 2 OpenCV的位运算 2.1 非操作 2.2 与运算 2.3 或和异或 1 图像的算术运算 1.1 图像的加法运算 add opencv使用add来执行图像的加法运算 图片就是矩阵, 图片的加法运算就是矩阵的加法运算, 这就要求加法运算的两张图shape必须是相同的. # 图片加法imp