Перейти к содержанию
    

RAM на SV упаковать в altsyncram в Quartus 12.1

В фильтре на SV есть описание RAM как

module coef
#(parameter DATA_WIDTH=24, parameter ADDR_WIDTH=9, parameter FILE_NAME_LPF)
    (
    input wire [(DATA_WIDTH-1):0] data,
    input wire [(ADDR_WIDTH-1):0] addr,
    input wire we,
    input wire clk,
    output wire [(DATA_WIDTH-1):0] coef_rom
    );

reg [DATA_WIDTH-1:0] rom[2**ADDR_WIDTH-1:0];

reg [(DATA_WIDTH-1):0] data_out;

assign coef_rom = data_out;

//0..511 - blackman-harris 511 order 24-bit coeff
//0..511 - blackman-harris 511 order 16-bit coeff
//0..511 - squared 511 order 16-bit coeff

initial $readmemh(FILE_NAME_LPF, rom);

always @ (posedge clk)
begin
    data_out <= rom[addr];

    if (we)
        rom[addr] <= data;
end
endmodule

При сборке проекта Q12.1 офрмляет данный модуль на регистрах без использования памяти.

Что интересно - данный фильтир один в один использовался в другом проекте, правда был встроен как часть qsys. B в нем Quartus честно заменял его на ячейки M9K.

Кристал в обоих проектах выбирался EP4CE55. 

Может кто встречался с подобным? Возможно есть какие то доп. настройки в проекте?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не совсем понял, что такое оформить модуль на регистрах.

Но если надо что то разместить в памяти, всегда использовал атрибуты. Например
 

reg [..] data /*synthesis ramstyle = "M20K", no_rw_check*/;

 

Соответственно вам наверное так надо

reg [DATA_WIDTH-1:0] rom[2**ADDR_WIDTH-1:0]/* synthesis ramstyle = "M9K" */;

 

Изменено пользователем new123

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, new123 сказал:

Но если надо что то разместить в памяти, всегда использовал атрибуты.

 

Интересно... попробую/почитаю. Спасибо за направление. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Just now, dlsh said:

Интересно... попробую/почитаю. Спасибо за направление. 

я там дополнил свой ответ. Ну а вообще далеко ходить не надо, тут все атрибуты, в том числе и описанный

https://www.intel.com/content/www/us/en/programmable/quartushelp/17.0/hdl/vlog/vlog_file_dir.htm

Надо только уточнить, поддерживает ли 12 версия

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня и без атрибутов исходный файл синтезировался в блочную память.

Наверно, все-таки или версия, или настройки (сам использую 13.1 для рабочих проектов, исходный файл проверил в 18.1).

Проверял без readmem

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, dlsh сказал:

При сборке проекта Q12.1 офрмляет данный модуль на регистрах без использования памяти.

Это зависит не от Квартуса, а от FPGA. Не во всех FPGA можно проинициализировать блочную память. Например, в 10M16DAU324I7G нельзя.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

46 minutes ago, andrew_b said:

Не во всех FPGA можно проинициализировать блочную память.

К Циклонам это вроде не относится.

Добавил "initial for(int i=0;i<512;i++) rom=i;", получил проинициализированную блочную память.

initial for(int i=0;i<512;i++) rom[i]=i;

Изменено пользователем Leka

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нашел где собака порылась. В Quartus Assigments->Settings->Compiler Settings->Advanced Settings->Auto RAM Replacement установить в On. Без включения этой опции ни какие атрибуты не помогли.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...