Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Использование BRAM16 в V4(+)
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
des00
Добрый день!
Решил использовать BRAM16 у V4, именно в общем виде (так сказать академический интерес).
В доке(ug070.pdf, стр 121) указанно что
Код
Unused Inputs
Unused Data and/or address inputs should be connected to logic “1”.

что насколько я понимаю являеться желаемой рекомендацией,
Пишу память в общем виде на ВХДЛ, описываю констрейны и --- симплифай поступает с точностью до наоборот, он падает на неиспользуемые входы лог. 0.

Так кто же прав ? smile.gif

И еще вопрос у кого нибудь симулируеться модель RAMB16 в Aldec?
у меня она работать отказываеться sad.gif в режиме двухпортовки записываю последовательность по адресам. а при чтении по адресам тупо держиться последее записанное число.
компонент описан как
Код
ram0 : ramb16_s36_s36
    port map(
 DOA  => read_data_lsb32,
 DOB  => open, -- no read
 DOPA  => read_data_msb4,
 DOPB  => open, -- no read
 ADDRA  => rd_addr,
 ADDRB  => wr_addr,
 CLKA  => in_clock,
 CLKB  => in_clock,
 DIA  => (others => '1'), -- no write
 DIB  => write_data_lsb32,
 DIPA  => (others => '1'), -- no write
 DIPB  => write_data_msb4,
 ENA  => in_rd_ctrl.rd_req,
 ENB  => '1', -- write_port always enable
 SSRA  => ram_reset,
 SSRB  => ram_reset,
 WEA  => '0',
 WEB  => wr_req
    );

Заранее спасибо!
v_mirgorodsky
На сколько я знаю, неиспользуемые выводы необходимо подтягивать к неактивному логическому уровню сигнала. Для Virtex4 BRAM16 активным уровнем является логическая единица, потому синплифай с этой точки совершенно прав подтягивая неиспользуемые выводы к логическому нулю smile.gif

Ставили в одном из промежуточных вариантов схемы блок RAMB16 когда хотели сделать ширину порта записи 16 бит, а ширину порта чтения 8 бит. В Альдеке симулировалась без каких либо проблем. В финальном варианте отказались от установки RAMB16, т.к. не хотелось жестко подвязывать блок именно к Xilinx Virtex4.

Сейчас нет под рукой даташита, потому сразу сказать в чем ошибка в описании не могу. Судя из описания проблемы, похоже на то, что запрещено обновление выходного регистра памяти.
des00
Цитата(v_mirgorodsky @ Oct 5 2005, 04:31)
На сколько я знаю, неиспользуемые выводы необходимо подтягивать к неактивному логическому уровню сигнала. Для Virtex4 BRAM16 активным уровнем является логическая единица, потому синплифай с этой точки совершенно прав подтягивая неиспользуемые выводы к логическому нулю smile.gif

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


хммм что вы еще больше меня запутали smile.gif
у симплифай подает на неиспользуемые выходы данных и адресса (именно данных и адресса) сигналы '0', что по логике вещей являеться пассивным уровнем.
А по документации рекомендуют падавать лог. 1. Что являеться активным уровнем.

С управляющими входами все в порядке.

ЗЫ я привел не тот код, на память
вот тот что у меня
Код
  ram0 : ramb16
    generic map(
 READ_WIDTH_A => READ_WIDTH_A,
 READ_WIDTH_B => READ_WIDTH_B,
 WRITE_WIDTH_A => WRITE_WIDTH_A,
 WRITE_WIDTH_B => WRITE_WIDTH_B
    )
    port map(
 CASCADEOUTA => open,
 CASCADEOUTB => open,
 DOA  => read_data_lsb32,
 DOB  => open, -- no read
 DOPA  => read_data_msb4,
 DOPB  => open, -- no read
 ADDRA  => rd_addr,
 ADDRB  => wr_addr,
 CASCADEINA => '0',
 CASCADEINB => '0',
 CLKA  => in_clock,
 CLKB  => in_clock,
 DIA  => (others => '1'), -- no write
 DIB  => write_data_lsb32,
 DIPA  => (others => '1'), -- no write
 DIPB  => write_data_msb4,
 ENA  => '1', --in_rd_ctrl.rd_req,
 ENB  => '1', -- write_port always enable
 REGCEA  => '0', -- no paste output reg
 REGCEB  => '0',
 SSRA  => ram_reset,
 SSRB  => ram_reset,
 WEA  => "0000",
 WEB  => wr_req
    );

остальные generic по дефолту (выходной регистр отключен).
причем если подцепить на выход шину данных с порта записи, то во время записи все правильно(данные на выходе есть, режим READ_FIRST_MODE), а во время чтения те же проблемы sad.gif
Elresearch
А что говорит по этому поводу FPGA Editor после P&R?
У меня в Spartan3 подвязывал к 1 и все работало как надо.
v_mirgorodsky
В принципе, необходимо понимать принципы работы забугорного суппорта. Они просто тестировали память в такой конфигурации, она у них работала, так они и написали в даташите. Это не значит, что память не будет работать в другом варианте подключения, просто они должны написать нечто определенное в даташите, иначе к ним будут приходить идиотские письма от юзеров с вопросами а что же делать с неиспользуемыми пинами smile.gif

К сожалению, по существу вопроса ничего подсказать не могу sad.gif По коду все выглядит правильно cranky.gif К сожалению, времени повторить ваш експеримент сейчас нету, потому ничего больше сказать пока не могу.
des00
Понятно, спасибо, как будет время проверю в железе smile.gif (пока не до этого)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.