
`timescale 1ns/1nsmodule odd_sel(input [31:0] bus,input sel,output check);//---------------code-----------------//// Method 1:wire check_tmp;assign check_tmp = ^bus;assign check = sel ? check_tmp : !check_tmp;// Method 2:reg check_reg;always @(*) beginif(sel) begincheck_reg <= ^bus;endelse begincheck_reg <= !(^bus);endendassign check = check_reg;// Method 3:wire check_tmp;reg check_reg;assign check_tmp = ^bus;always @(*) beginif(sel) begincheck_reg <= check_tmp;endelse begincheck_reg <= !check_tmp;endendassign check = check_reg;//---------------code-----------------//endmodule
使用单目运算符可以检测是否全为1,是否全为0,还可以进行奇偶校验,具体可以参考: 2.3 运算符和表达式【重点】
注: 根据波形图可以看出,当sel为1的时候,检查的结果就是奇偶校验后的结果; 当sel为0的时候,检查的结果就是奇偶校验取反后的结果。
