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题目的一些笔记备忘

全部评论

相关推荐

xdm怎么说 要被拷打了 担心是KPI
丹田:面就完了,就当日薪四位数的大佬免费给给你面试。
点赞 评论 收藏
分享
06-23 11:28
门头沟学院 Java
牛客919661971号:也有可能是点拒绝的时候自动弹的话术
点赞 评论 收藏
分享
05-30 12:03
山西大学 C++
offer来了我跪着接:不是骗子,等到测评那一步就知道为啥这么高工资了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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