ahe*_*ang 3 algorithm verilog bit-manipulation
如果我有一个32位的二进制补码数,我想知道最简单的两种数字相同的方法是什么...什么是最快的按位运算符才能知道这个?我知道xor'ing这两个数字并检查结果是否正常...其他任何一个?
如果一个数字大于0怎么样?我可以查看第31位以查看它是否大于或等于0 ..但是bgtz怎么样?
与你的评论相反,'=='是Verilog的一部分,除非我的记忆比今晚更糟糕,否则它应该合成得很好.例如,您可以编写如下内容:
// warning: untested, incomplete and utterly useless in any case.
// It's been a while since I wrote much Verilog, so my syntax is probably a bit off
// anyway (might well be more like VHDL than it should be).
//
module add_when_equal(clock, a, b, x, y, z);
input clock;
input [31:0] a, b, x, y;
output [31:0] z;
reg [31:0] a, b, x, y, z;
always begin: main
@(posedge clock);
if (a == b)
z <= x + y;
end
endmodule;
Run Code Online (Sandbox Code Playgroud)
Verilog还支持您通常期望的其他比较运算符(!=,<=等).合成器相当"智能",所以类似的东西x != 0通常会合成一个N输入OR门而不是比较器.