2016-02-27 5 views
1

Я разрабатываю код verilog для кумулятивного метода гистограммы для медианного фильтра. он использует вложенные для циклов, что вход второго цикла цикла зависит от выхода первого цикла. проблема здесь. Второй цикл цикла не принимает этот вход. пожалуйста помоги. кодвложенных для циклов в verilog, что второй для цикла зависит от вывода первого цикла 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

Это комбинаторный цикл, который для симулятора будет выполняться в 0 раз, но у вас есть счетчик циклов 'n' в качестве вывода, в симуляции это всегда будет выглядеть как максимальное значение. Я бы рекомендовал писать как процесс с тактовой частотой и использовать несколько тактовых циклов для вычисления результата. – Morgan

ответ

0

Просто глядя на этом участке кода:

for (n=0;n<=4;n=n+1) begin 
    b[a[n]]=b[a[n]]+1; 

п составляет 256 бит, но для этого цикла только идет от 0 до 4.
Это выбирает значение из (5 бит), поэтому мы выбираем бит 0 - 4 из a.

Каждый выбор a - 1 бит, содержащий либо 0, либо 1, поэтому мы выбираем и увеличиваем либо b [0], либо b [1] на каждой итерации цикла for.

Однако б также 256 бит так, б [0] и б [1], также 1 бит значения, когда приращением они собираются для переключения между 1 и 0.

Я угадывание выше поведение не является предназначен и что вы на самом деле хотите использовать векторы:

reg [255:0] b [0:4) ; 

Над б имеет 5 выбираемые позиции каждая из которых содержит 256 битное целое число. Это означает, что b [0] будет 256-битным целым числом, а не 1-битным целым, как ваш текущий пример.

+0

спасибо, что сработало. –