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

Quartus & Synplify & DPRAM

Решил недавно попробовать вместо altsyncram использовать HDL описание DPRAM и столкнулся со следующей проблемой:

Если синтезировать в чистом Quartus, то всё нормально.

Если использовать Synplify, то вместо аппаратного rden получаю кучу внешних регистров адреса с мультиплексорами.

Вопрос: можно ли как-то объяснить Synplify'ю, что нужно использовать аппаратный rden, а не лепить его аналог на логике?

DPRAM_Q.rar

DPRAM_S.rar

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


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

используйте макросы + два вида описания и не грейте попусту мозг ;)

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


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

Так если только под Altera, то проблем нет. А если попытаться перейти на Xilinx, то возникают проблемы с использованием их примитивов или макросов - фактически поверх них нужно писать внешнюю обертку, т.к. один примитив даёт задействовать только один BRAM. Хотя, конечно, можно сделать комбинированный исходник: под Altera - altsyncram, под Xilinx - HDL и забить на лишнюю логику :biggrin: .

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


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

Так если только под Altera, то проблем нет. А если попытаться перейти на Xilinx, то возникают проблемы с использованием их примитивов или макросов - фактически поверх них нужно писать внешнюю обертку, т.к. один примитив даёт задействовать только один BRAM. Хотя, конечно, можно сделать комбинированный исходник: под Altera - altsyncram, под Xilinx - HDL и забить на лишнюю логику :biggrin: .

и в чем проблема то ?

 

`ifdef __USE_ALTERA_MACRO__
`elsif  __USE_XILINX_MACRO__ 
`else 
`endif

 

???

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


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

Решил недавно попробовать вместо altsyncram использовать HDL описание DPRAM и столкнулся со следующей проблемой:

Если синтезировать в чистом Quartus, то всё нормально.

Если использовать Synplify, то вместо аппаратного rden получаю кучу внешних регистров адреса с мультиплексорами.

Вопрос: можно ли как-то объяснить Synplify'ю, что нужно использовать аппаратный rden, а не лепить его аналог на логике?

А объясните мне зачем вообще нужен аппаратный RDEN? Вам чем-то мешает чтение данных с "неправильных" адресов? Или вы таким способом пытаетесь снизить энергопотребеление?

Если вам нужно чтобы данные на выходной шине данных не менялись - для этого достаточно не менять адрес на чтение и всё.

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


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

и в чем проблема то ?

 

`ifdef __USE_ALTERA_MACRO__
`elsif  __USE_XILINX_MACRO__ 
`else 
`endif

 

???

Да проблема не в том, как их задействовать, а в том, что Xilinx'овские макросы очень не удобные в использовании - геммороя с ними много :angry2:

Для Altera'ы я могу указать тип памяти AUTO и она будет синтезироваться в зависимости от объёма на тех или иных блоках автоматически (M4K, M144, ...).

Для Xilinx обязательно указывать тип памяти, причём для разных семейств будет свой примитив, со своим набором сигналов. В отличии от altsyncram, который один для всех семейств.

 

А объясните мне зачем вообще нужен аппаратный RDEN? Вам чем-то мешает чтение данных с "неправильных" адресов? Или вы таким способом пытаетесь снизить энергопотребеление?

Если вам нужно чтобы данные на выходной шине данных не менялись - для этого достаточно не менять адрес на чтение и всё.

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

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


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

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

Xilinx Block RAM не поддерживает отдельный enable на чтение. Только на все операции сразу. Почему? ИМХО потому что это - совершенно бессмысленный сигнал.

Если хотите честно победить проблему - тормозите логику формирования адреса чтения на моменты когда RDEN = 0. Результат будет тот же.

 

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


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

После вставки в основной проект проблема решилась сама собой. "Лишние" регистры соптимизировались с остальной логикой проекта. Так что по ресурсам я практически ничего не потерял.

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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