Программируемая логика - это не так уж и сложно. Разберемся вместе.
Ответить

Quartus - Verilog - как задать способ синтеза RAM?

Пт янв 20, 2017 16:46:31

ПЛИС - Cyclone III.
Среда - Quartus 9.1.

В файле, написанном на языке 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 - оба на логике.

Как решить эту проблему?

Re: Quartus - Verilog - как задать способ синтеза RAM?

Чт фев 09, 2017 09:46:22

У меня обратная проблема))
Только только на альтере опыты начал ставить.
Первым проектом сделал сдвиговый регистр на 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
Ответить