В файле, написанном на языке verilog, объявлены 2 двумерных массива: reg [15:0] Vector_1[15:0]; reg [15:0] Vector_2[15:0];
Мне нужно, чтобы Vector_1 синтезировался в памяти RAM, а Vector_2 синтезировался на логике. Судя по описаниям, тут нужно применять конструкцию, вида: reg [15:0] Vector_1[15:0] /* synthesis ramstyle = "M9K" */; и reg [15:0] Vector_2[15:0] /* synthesis ramstyle = "logic" */;
но это не работает. Память под оба массива выделяется в RAM.
Есть настройка Quartus "Auto RAM Replace". Она работает, только действует на весь проект. И что бы не задавал, состояние On - оба массива синтезирует в памяти RAM, состояние Off - оба на логике.
У меня обратная проблема)) Только только на альтере опыты начал ставить. Первым проектом сделал сдвиговый регистр на 1024 ячейки на вход кнопка, на выход светодиод. Наслодился задержкой мигания по отношению к нажатию. Регистр разместился во встроенной памяти. Поигрался и хватит: начал встраиваемый цифр. анализатор делать (благо на платке VGA есть). А оно тут уже начало логику юзать ((( Не подскажите, где искать эту волшебную опцию "Auto RAM Replace"?
На всякий случай код модулька. Может при таком сдвиге компилятор не может использовать память как строительный материал... module OscCh( input Clk, input DataIn, input [10:0] ReadIndex, output wire DataOut ); reg [1023:0] Data; always @(posedge Clk) begin Data[1023:0] <= {DataIn,Data[1023:1]} ; end assign DataOut = Data[ReadIndex]; endmodule
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения