Verilog - возможно ли присвоить регистру значения на основе переменных genvar в блоке генерации - PullRequest
0 голосов
/ 22 апреля 2019

У меня есть некоторый код, похожий на этот (пример ниже):

genvar x;
genvar y;
generate
    for (y = -off; y < off; y=y+1) begin
        for (x = -off; x < off; x=x+1) begin
            guassian_kernel[((((y+off)*ks)+x+off+1)*fs)-1:(((y+off)*ks)+x+off)] = x*y; // <- something like this
        end
    end
endgenerate

Можно ли сделать что-то подобное или подобное:

20'd(x*y) 

и т. Д.?

Или у меня нет другого выбора, кроме как жестко закодировать все значения регистра?В реальном коде, который я использую, значения в регистре будут гораздо более сложной функцией x и y.

Спасибо!

1 Ответ

0 голосов
/ 22 апреля 2019

a generate блок используется только для генерации регулярных операторов verilog, таких как экземпляры модулей, всегда блоки, операторы присваивания, ... Это своего рода предварительная обработка.

Итак, ваше назначение должно быть юридическим подтверждением, например,

generate
for (y = -off; y < off; y=y+1) begin
    for (x = -off; x < off; x=x+1) begin
        always @*  // <-- something like this.
             guassian_kernel[((((y+off)*ks)+x+off+1)*fs)-1:(((y+off)*ks)+x+off)] = x*y; 
    end
end
endgenerate
...