牛客网VL3 奇偶校验

1.检测一个长比特的中1的奇偶个数时可以使用按位的的异或;

异或使用符号^,比较前后两个比特相异为零,相同为一。

例如:^3'b110 = 0; (1^1^0=0)表示有偶数个1

           ^3'b100 = 1;(1^0^0= 1)则表示有奇数个1

1001

所以当对一个完整的比特进行异或时,为零则有偶数个1,为一则有奇数个1。

2.三目运算符“?”(其中a可以是变量,也可以是逻辑表达式(看a是不是等于0))

d = a ? b : c 

等价于

if(a = true)

        d = b;

else

        d = c;

 

3.当sel想输入为1时,要进行奇校验,所以bus[]加上check(校验位)一共1的个数要为奇数个,所以先通过异或运算运算出bus[]是有奇数个1还是偶数个1,如果有奇数个1那么check为0,就可以保证有奇数个1,则成功进行了奇校验;如果bus[]有偶数个1,那么再加上一个1,就变成奇数个1了,所以给^bus[]取反赋值给check就可以满足条件了。进行偶校验反之亦然。

`timescale 1ns/1ns
module odd_sel(
input [31:0] bus,
input sel,
output check
);
//*************code***********//
assign sel1 = ^bus;
assign check =sel ?  sel1 : ~sel1;
//*************code***********//
endmodule

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值