题解 | 奇偶校验

`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 ? check_tmp : ~ check_tmp ;
//*************code***********//
endmodule

来源bilibili FPGA探索者的视频详解,代码虽然简单但是写的挺巧妙的。

首先定义了一个 wire类型的检查变量 check_tmp,作为输出的中介变量

第一点是 通过第九行的单目运算符异或 检查输入数据变量bus中间含有1的个数,含有奇数个1 例如 1 0 0 。在两次异或后则为 1

当bus中含有偶数个1 时 如 1 1 0 异或两次输出为 0.

第二点是 通过条件运算符 确定奇偶输出 sel 为1 时 输出check_tmp如果sel 不为 1 时 check_tmp 取反输出。

全部评论

相关推荐

11-11 16:40
已编辑
门头沟学院 人工智能
不知道怎么取名字_:这个有点不合理了,相当于已经毕业了,但还是没转正,这不就是白嫖
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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