题解 | #奇偶校验#

奇偶校验

https://www.nowcoder.com/practice/67d4dd382bb44c559a1d0a023857a7a6

前言:

    通过牛友们的讨论大概理清了题目要表达的意思,但因为看不懂题设中的波形图,所以无法判断此种解法正误

奇偶校验

奇校验:原始码流+校验位 其中总的1个数为奇数个
偶校验:原始码流+校验位 其中总的1个数为偶数个
注:校验位的目的就是为了让最后1的总数达到想要的奇数个(奇校验)或偶数个(偶校验)
如:
  其中红色字体即为校验位

解读题目

    题目目的:任意给出一组32位的数据流bus,通过sel确定要采用的校验方式(sel=1为偶校验,sel=0为奇校验,注意这里的sel对应关系为正确的,牛友们根据波形判断,发现题设条件给反了,让求在该种校验方式下,我的校验位check应该取何值。

Verilog Code

`timescale 1ns/1ns
module odd_sel(
input [31:0] bus, //数据流
input sel,   //决定使用奇校验还是偶校验,当sel=1时为偶校验,sel=0时为奇校验
output check //奇/偶校验位
);
//*************code***********//
wire is_odd;

assign is_odd = ^bus; //判断bus中1的个数,当1的总数为奇数个时is_odd=1;当1的总数为偶数个时is_odd=0;
assign check = sel ? (is_odd? 1'b1:1'b0):(is_odd? 1'b0:1'b1);

//*************code***********//
endmodule

知识储备

  1. “^”为异或符号
  2. is_odd = ^bus等价于is_odd = bus[0]^bus[1]^bus[2]^...^bus[30]^bus[31]
  3. 判断一个数(bus)中1的个数是奇数个还是偶数个:奇数个:^bus=1;  偶数个:^bus=0;
全部评论

相关推荐

不愿透露姓名的神秘牛友
08-09 12:05
美团笔试可以用AI辅助答题,我就直接把其他题也都一起AI了,第一次这么爽的做笔试
喜欢吃卤蛋的肖恩在参...:又疯一个
投递美团等公司10个岗位
点赞 评论 收藏
分享
25届的可以参加26届秋招吗?身为25届的,现在辞职很尴尬,经验不足一年(正式工)又正在秋招,现在找工作有点尬住了
程序员小白条:哪有一年啊,才几个月吧,参加26秋招不存在的,社招了啊,你正式工都交过社保了
点赞 评论 收藏
分享
08-05 14:05
门头沟学院 Java
Twilight_m...:你直接问他,马总能不能直聘让我进阿里
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务