Verilog中的逻辑运算符与按位运算符的区分
【摘要】 我们在写Verilog的时候经常会用到的是低电平复位问题,例如:
always@(posedge clk or negedge rst_n) begin if(~rst_n) ...; else ...; end
由于rst_n是一位的,所以使用逻辑非!,或者是按位非~,效果是一样的,但是如果遇到的是向量呢?
逻辑非和按位非就不能混用了。包括逻辑或||,按位或|等。
...
我们在写Verilog的时候经常会用到的是低电平复位问题,例如:
-
always@(posedge clk or negedge rst_n) begin
-
-
if(~rst_n) ...;
-
-
else ...;
-
-
end
由于rst_n是一位的,所以使用逻辑非!,或者是按位非~,效果是一样的,但是如果遇到的是向量呢?
逻辑非和按位非就不能混用了。包括逻辑或||,按位或|等。
二者之间的长相区别很明显,按位操作一般只有单个符号,例如:&,|,而逻辑是双的,如:&&,||。
下面给出一个例子:
Bitwise vs. Logical Operators
a和b是输入,out_or_bitwise和out_or_logic分别是按位或与逻辑或的结果。
out_not是a和b的按位取反,b在高位。
写出代码如下:
-
module top_module(
-
input [2:0] a,
-
input [2:0] b,
-
output [2:0] out_or_bitwise,
-
output out_or_logical,
-
output [5:0] out_not
-
);
-
assign out_or_bitwise = a | b;
-
assign out_or_logical = a || b;
-
assign out_not = {~b, ~a};
-
endmodule
文章来源: reborn.blog.csdn.net,作者:李锐博恩,版权归原作者所有,如需转载,请联系作者。
原文链接:reborn.blog.csdn.net/article/details/99552725
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)