牛客网Verilog刷题——VL3

牛客网Verilog刷题——VL3

题目

  要求设计一个奇偶校验模块,根据sel信号选择进行奇校验还是偶校验(sel=0,进行偶校验;sel=1,进行奇校验),根据输入的32位数据生成1位的奇偶校验位。
在这里插入图片描述
在这里插入图片描述
  奇偶校验位的生成与利用奇偶校验位进行校验的原理如下:
  在发送端,根据奇校验还是偶校验来说生成奇偶校验位。

  • 奇校验:确保传输的数据(数据位+校验位)中“1”的个数为奇数个。如果数据位中“1”的个数为奇数个,校验位则为0,此时数据位加校验位中“1”的个数还是奇数个;如果数据位中“1”的个数为偶数个,校验位则为1,此时数据位加校验位中“1”的个数变为奇数个。
  • 偶校验:确保传输的数据(数据位+校验位)中“1”的个数为偶数个。如果数据位中“1”的个数为奇数个,校验位则为1,此时数据位加校验位中“1”的个数变为偶数个;如果数据位中“1”的个数为偶数个,校验位则为0,此时数据位加校验位中“1”的个数还是奇数个。

  而在接收端,计算接收到的数据(数据位+校验位)中“1”的个数是奇数个还是偶数个,来判断接收到的数据是否正确。

  • 奇校验:采用奇校验方式,若数据中“1”的个数为奇数个,接收数据正确;若数据中“1”的个数为偶数个,则接收数据有误。
  • 偶校验:采用偶校验方式,若数据中“1”的个数为偶数个,接收数据正确;若数据中“1”的个数为奇数个,则接收数据有误。

  奇偶校验在很多设计中都有用到,比如串口传输协议中等。奇偶校验只能达到检错的目的,并不能实现纠错。

  另外,在数电中,我们学过:奇数个1异或得到1,偶数个1异或得到0,根据该性质,可以用异或运算符实现奇偶校验。

答案

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

reg check_t;
always @(*)
  if(sel) 
    check_t <= check_temp;
  else
    check_t <= ~check_temp;

assign check = check_t;
//*************code***********//
endmodule
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值