YuP 0 May 26, 2008 Posted May 26, 2008 · Report post А для версии 9.2 какой MIG подходит? ISE 9.2.04i: MIG 1.72, 2.0 Quote Share this post Link to post Share on other sites More sharing options...
BuTeK 0 May 28, 2008 Posted May 28, 2008 · Report post Не получается сгенерировать MIGом 1.6 Core SDR RAM (mt48lc4m32b2) на Spartan 3E ? она предлагает только DDR RAM почему так? Или я что-то не так делаю? Объясните в чем дело... Quote Share this post Link to post Share on other sites More sharing options...
hitower1 0 May 30, 2008 Posted May 30, 2008 · Report post BuTeK Xilinx Memory Interface Generator (MIG) User Guide support DDR SDRAM, DDRII SRAM, DDR2 SDRAM, QDRII SRAM, and RLDRAM II Interfaces Мне думается что быстрее написать свой котроллер или приспособить исходники от Альтеры. Для симуляции можно воспользоваться этим: http://glacier.lbl.gov/cgi-bin/viewcvs.cgi....viewcvs-markup Quote Share this post Link to post Share on other sites More sharing options...
Mad_kvmg 0 June 5, 2008 Posted June 5, 2008 · Report post Начинаю работать с FPGA, VHDL. Есть плата с SDRAM памятью MT48LC8M8A2 и Spartan S3e-250 qt144. Хочеться создать контроллер для работы с памятью на VHDL. Подскажите в какую сторону копать? Может у кого то есть готовые разработки (и он готов поделиться)? Да уж, всякие корки, IP ядра и генераторы в конец извратили народ. Они там наворачивают, что бы сделать универсальную вещь, а для вашей задачи совсем этого и не нужно. Надо всего лишь немного подумать и почитать доку на микросхему с которой собираетесь работать. Память у вас динамическая, с ней немного трудней чем со статической, но все равно не до такой степени, чтобы искать генератор. Представте вашу память ввиде "матрицы" , где количество строк 4K (A0–A11), глубина каждой строки 512 (A0–A8). И четыре банка. Есть команда ACTIVE, которая "открывает" строку по адресу выставленному на A0–A11, далее командой READ или WRITE вы говорите, что вы собственно хотите сделать, а адрес (A0–A8) определяет с какого столбца вы начинаете работать. Можно писать и читать в burst режиме, (это когда вы выставляете начальный адрес, а последующие 2 4 или 8 адреса (в зависимости от режима) выставляются автоматически, остается подсунуть только данные ) а можно и самому выставлять адреса. Как поработали со строкой, перед тем как перейти к следующей, надо ее закрыть команда precharge. А ну еще надо перед началом работы, память инициализировать, как это делать и даже времянка есть в документации. Вот собственно и все. В доках все написано, есть все времянки и не надо тратить время на попытку найти готовое универсальное решение, с которым вы намаитесь и потратите время гораздо больше, чем сделаете прошивку сами. Недавно делал тоже самое, такая же память и плиска подчти таже (spartan3). Поделился бы даже прошивкой, но опять же не понятно, что и как вы хотите писать в память. Quote Share this post Link to post Share on other sites More sharing options...
BuTeK 0 June 7, 2008 Posted June 7, 2008 · Report post А как же AUTO REFRESH и SELF REFRESH, вот что меня сильно пугало... При разработке.. Quote Share this post Link to post Share on other sites More sharing options...
Mad_kvmg 0 June 7, 2008 Posted June 7, 2008 · Report post А как же AUTO REFRESH и SELF REFRESH, вот что меня сильно пугало... При разработке.. IMHO, если вы считали данные из строки и вам нужно будет еще раз считать эти же данные, (т.е сохранить данные до последующего обращения The SELF REFRESH command can be used to retain data in the SDRAM, even if the rest of the system is powered down. When in the self refresh mode, the SDRAM retains data without external clocking), то тогда вам нужны эти команды. А если вам данные нужно считать один раз, а потом вы будете в эту строку записывать новые данные, то команды вам эти не нужны. Просто делаете "закрытие" precharge строки, после того как с ней поработали. Quote Share this post Link to post Share on other sites More sharing options...
des00 26 June 7, 2008 Posted June 7, 2008 · Report post IMHO, если вы считали данные из строки и вам нужно будет еще раз считать эти же данные, (т.е сохранить данные до последующего обращения The SELF REFRESH command can be used to retain data in the SDRAM, even if the rest of the system is powered down. When in the self refresh mode, the SDRAM retains data without external clocking), то тогда вам нужны эти команды. А если вам данные нужно считать один раз, а потом вы будете в эту строку записывать новые данные, то команды вам эти не нужны. Просто делаете "закрытие" precharge строки, после того как с ней поработали. кхм. простите великодушно, при всем уважении к вам, но это бред. На форуме уже обсуждалось Зачем нужна регенерация : поддержание заряда на затворах транзисторов в памяти. Что есть регенерация - холостое чтение строки банка памяти (т.к. чтение в сдрам разрушающее, там потом идет перезаряд емкостей). AUTO REFRESH - это по сути комбинированная команда чтения банка act-read-pre. В которой адрес банка и строки берется со счетчика внутри памяти. команда ставиться контроллером. SELF REFRESH - это режим работы микросхемы памяти. В котором она сама, без контроллера генерит команды и клоки на рефреш. При чем выход из этого режима занимает дополнительное время Режим используется для хранения данных, когда нет активности контроллера памяти ( ушли в sleep mode например) теперь нужна ли вообще регенерация : для сдрам памяти, в том случае если вы пробегаете свои адреса чаще чем раз в 64 мс, то нет не нужна. для ддр сдрам памяти, у микрона черным по белому написано что команда AUTO_REFRESH обязанна быть выставлена не позднее чем в течении 8 периодов авто-рефреша. если хотите со стороны системы забыть про рефреш то делается это элементарно : арбитр на команды от системы + счетчик периода рефреша. можете еще сделать запросы к рефрешу с разным приоритетом. ЗЫ. А постоянно закрывать строки с которыми работаете не есть хорошо. сильно падает полоса пропускания. Если интересно можете посмотреть результаты измерений полосы пропускания контроллера в различных режимах в доке на мой контроллер, выложенный на опенкорес. Quote Share this post Link to post Share on other sites More sharing options...
Mad_kvmg 0 June 7, 2008 Posted June 7, 2008 · Report post кхм. простите великодушно, при всем уважении к вам, но это бред. На форуме уже обсуждалось Зачем нужна регенерация : поддержание заряда на затворах транзисторов в памяти. Что есть регенерация - холостое чтение строки банка памяти (т.к. чтение в сдрам разрушающее, там потом идет перезаряд емкостей). AUTO REFRESH - это по сути комбинированная команда чтения банка act-read-pre. В которой адрес банка и строки берется со счетчика внутри памяти. команда ставиться контроллером. SELF REFRESH - это режим работы микросхемы памяти. В котором она сама, без контроллера генерит команды и клоки на рефреш. При чем выход из этого режима занимает дополнительное время Режим используется для хранения данных, когда нет активности контроллера памяти ( ушли в sleep mode например) теперь нужна ли вообще регенерация : для сдрам памяти, в том случае если вы пробегаете свои адреса чаще чем раз в 64 мс, то нет не нужна. для ддр сдрам памяти, у микрона черным по белому написано что команда AUTO_REFRESH обязанна быть выставлена не позднее чем в течении 8 периодов авто-рефреша. если хотите со стороны системы забыть про рефреш то делается это элементарно : арбитр на команды от системы + счетчик периода рефреша. можете еще сделать запросы к рефрешу с разным приоритетом. ЗЫ. А постоянно закрывать строки с которыми работаете не есть хорошо. сильно падает полоса пропускания. Если интересно можете посмотреть результаты измерений полосы пропускания контроллера в различных режимах в доке на мой контроллер, выложенный на опенкорес. ну я по этому и написал IMHO. Рефрешами не пользовался. А по поводу закрытия строк, в даташите так же черным по белому написано, что это делать надо. Не знаю, может и без этого будет нормально работать. Вы так делали? Все работало нормально? Скорости обмена падают, но и частота на которой можно работать с памятью не маленькая, согласитесь. Если работать со стандартным видео, то эти задержки не вносят ощутимых неприятностей. Quote Share this post Link to post Share on other sites More sharing options...
des00 26 June 8, 2008 Posted June 8, 2008 · Report post А по поводу закрытия строк, в даташите так же черным по белому написано, что это делать надо. Не знаю, может и без этого будет нормально работать. Вы так делали? Все работало нормально? Скорости обмена падают, но и частота на которой можно работать с памятью не маленькая, согласитесь. Если работать со стандартным видео, то эти задержки не вносят ощутимых неприятностей. В предыдущем посте ошибка auto_refresh это последовательность act + pre, без команды read ест-о по поводу обязательного закрывания банков нормируется минимальная и максимальная величина между командами act - pre. для сдрам чипов от микрона максимум составляет 120мкс. После этого времени банк нужно обязательно закрыть, иначе заряд утечет и пойдут ошибки. Т.е. можно не закрывать банк после каждого обращения. И если идет последовательное обращение к памяти в этот же банк в тот же ряд это может увеличить полосу пропускания памяти на 30% (кста в доке я подробно описывал почему %)) как вы будете соблюдать интервал в 120мкс остается на ваш выбор. Если вы "перебираете" банки за это время то проблемы нет. Если пользуете равномерно распределенный auto_refresh то проблемы нет тем более. т.к. его интервал для сдрам памяти 15.625 мкс По поводу полосы пропускания памяти для конкретных применений вам решать, я показывал что в зависимости от последовательности обращения к сдрам памяти и размеру бурста полоса пропускания может изменяться от ~11 до ~99 % от максимальной полосы памяти Quote Share this post Link to post Share on other sites More sharing options...
Yra 4 June 18, 2008 Posted June 18, 2008 · Report post На ISE 8.02.03 я генерил контроллер старой версией MIG 1.6 Работало всё сносно. Xilinx предоставляет открытые исходники и отличное описание. Контроллер был скачан с Xilinx ком свободно. Вопрос? Хоть и исходники открытые а уровень этих исходников какой? RTL (уровень регистровых передач - универсальных кроссплатформенный) или вентильный (пригодный для конкретной модели плис в конкретной среде ISE 8 и не прокатывающий в ISE 9)? У Xilinx мне попадался всё время второй вариант. Quote Share this post Link to post Share on other sites More sharing options...
YuP 0 June 19, 2008 Posted June 19, 2008 · Report post (пригодный для конкретной модели плис в конкретной среде ISE 8 и не прокатывающий в ISE 9)? Переход между V4-FX и V4-SX осуществлялся абсолютно безболезненно(просто изменением распиновки). Уход от ISE 8 к ISE 9 тоже проблем не принес. Quote Share this post Link to post Share on other sites More sharing options...