Определение диапазона переменных в Verilog с помощью цикла for

Я пытаюсь написать этот код:

 for (i = 0; i <= CONST - 1'b1; i = i + 1'b1)
                    begin : loop_inst

                        if (i < 3)
                        begin
                            if (changed[i] & !done_q[i])
                            begin
                                writedata[3-i] = en[i];
                                writedata[2-i:0] = readdata[2-i:0];
                                writedata[15:4-i] = readdata[15:4-i];
                            end
                        end
                        else
                        ...

По сути, расположение бита, в который я пытаюсь записать ( en ) меняется в зависимости от того, с каким адресом я разговариваю, в зависимости от i . Этот код невозможно синтезировать, потому что i не является константой.

Есть ли другой способ решения этой проблемы? Единственный известный мне обходной путь - это выписывать эти три оператора CONST раз. Я надеюсь, что в конце концов мне НЕ придется этого делать. Есть ли другое решение?

6
задан tk421 26 March 2018 в 19:45
поделиться