我正在開發一個verilog代碼累積直方圖方法,用於中值濾波器。它使用嵌套for循環,第二個循環的輸入取決於循環的第一個輸出。問題在於此。第二個for循環不接受該輸入。請幫忙。 代碼是在verilog中嵌套for循環第二個for循環取決於循環的第一個輸出
module median(a, b,k,n,h);
input [4:0] a;
output [255:0] b;
output k,n,h;
reg [255:0] b;
reg [255:0]k,n,h;
always @(a) begin
for (n=0;n < 256;n=n+1)
b[n]=0;
for (n=0;n<=4;n=n+1) begin
b[a[n]]=b[a[n]]+1;
h=a[n]+1;
for (k = h;k <=255;k = k+1) begin
b[k]=b[k]+1;
end
end
for (n=0;n<=255 ;n=n+1) begin
if(b[n]==3)begin
$display ("the median is %d",n);
end
end
end
endmodule
這是一個組合循環,對於模擬器將在0時間內執行,但你有'n'循環計數器作爲輸出,在模擬中,它總是看起來像最大值。我會建議寫入一個鐘控過程並花費多個時鐘週期來計算結果。 – Morgan