Verilog写题笔记3------| #奇偶校验#

奇偶校验

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

题目有两个输入:
1、32位数据bus
2、奇偶检验选择sel
题干其实说的很不好理解,意思是这样的:首先判断bus的奇偶性。sel为1(奇校验)时,若bus为偶,check输出1,目的是让bus变成奇数;若bus为奇,则check输出0。
同理,sel为0(偶校验)时,若bus为奇,check输出0;bus为偶,则为1。
奇偶校验是一个经典的位操作程序,如果想使用笨办法去算1的数量,然后取余数判断奇偶性。理论上行得通,但题里会报错。所以必须学会最简单最快捷的位操作。
Verilog 操作符^。意思是按位异或。这个操作有两种用法,举例:
a = 4'b1010;
b = 4'b1100;
c = a^b;//此时,c的值为:4'b0110
a = b1010;
b = ^a;//此时 b= 1^0^1^0 = 1'b0;
两个数的异或在哪用以后再说。
一个数的异或是用来做奇偶校验的。
如果a为偶,那么无论如何,^a的结果都是0;同理,若a为奇,^a一定是1。这里不说为什么,为什么是数学领域的事,我也不知道。
同时也发现,当sel为1时,bus的奇偶性(1为奇,0为偶)与check不同(奇为0,偶为1),同理sel为0时。所以可以用?运算控制check的输出。
`timescale 1ns/1ns
module odd_sel(
input [31:0] bus,
input sel,
output check
);
//*************code***********//
    wire tmp;
    assign tmp = ^bus[31:0];
    assign check = sel ? tmp : ~tmp;

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





verilog写题笔记 文章被收录于专栏

写Verilog题目的一些笔记备忘

全部评论

相关推荐

真烦好烦真烦:牛友太有实力了
点赞 评论 收藏
分享
06-25 21:00
门头沟学院 Java
多拆解背记一下当前的高频场景面试题,结合自己的项目经历去作答,面试通过率原来真的不会低!
牛客965593684号:小公司不就是这样的吗,面试要么是点击就送,要么就是往死里拷打,没有一个统一的标准。这个不能代表所有公司
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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