我的代码出错了。我有一个给定的32b输入和一个6b输出,每当输入连续输入3b时,它应该增加。例如,如果输入为000...111
,则输出应为000001
。
我试过这段代码:
input [31:0] in,
output reg [5:0] out,
input clock
assign n=0;
always @ (posedge clock) begin
**out <= in[n]?in[n+1]?in[n+2]? out+1 : out;**
n++;
end
没有成功。有任何想法吗 ?
答案 0 :(得分:1)
这可以使用here发布的优雅解决方案来解决:
if (in & (in >>1) & (in>>2) != '0 )
out <= out+1;
基本上,如果数字的按位AND与自身向右移位1位三次非零,则递增。