|
Контроллер памяти DDR2 для Altera Cyclone, размышления на тему о предельной частоте |
|
|
|
Jun 24 2011, 17:33
|
Знающий
   
Группа: Участник
Сообщений: 881
Регистрация: 21-03-10
Из: _// \\_
Пользователь №: 56 107

|
Вот хочу поднять тему о принципах построения контроллера DDR2 памяти для Altera Cyclone. На данный момент делаю его для Cyclone 3. Но суть то как раз в том, что в отличие от альтеровских коров он написан просто на VHDL с использованием только IEEE.numeric_std. И поэтому он в принципе универсален, может применяться для Spartan, например.
Собственно интерес возник вот по какой причине. С самого начала продвижения DDR в FPGA альтеровцы нагородили там какую-то специальную поддержку DDR прямо в IOE. И вот, апофеоз всех их страданий, в Cyclone 3 руководство по применению контроллера - увесистый документ, объясняющий, в частности, что для реализации правильной времянки памяти нужно чуть ли не 5 выходов PLL, причем для простого циклона -С8 можно рассчитывать на тактовую частоту только около 133 МГц (По крайней мере визард больше не дает). И это при том, что максимальная частота самого Cyclone III (и даже Cyclone II) ограничена значением в 402 МГц. А, следовательно, даже лобовое решение, когда DDR эмулируется на удвоенной частоте, должно дать реализацию в 200 МГц даже для speed grade 8. Причем для этого потребуется весьма простая PLL с тремя выходами, и в настройке такое решение весьма неприхотливо. Фазы можно двигать с помощью настроек PLL, а на выводах не нужны никакие DDR опции, что освобождает от мучительного размещения выводов по группам DQ/DQS, как это было раньше.
Ну вот исходя из этих соображений я и сел рисовать такой контроллер, с целью проверить, какова будет в итоге у него предельная частота. Ограничения собственно два. 1) Удастся ли логику всего контроллера реализовать с частотой 200 МГц. 2) Удастся ли реализовать входную и выходную часть шины данных с переходом 32бита*200МГц в 16бит*400МГц.
Еще до конца не доделал, но предварительно удалось. Проект бегает в ModelSim'е с двумя моделями, от Micron и от Samsung, правда данные там пока автосинтезируемые, но в правильных местах. При этом квартус собирает это и дает нормальные частоты даже для C8, 201 МГц для контроллера и 402 для данных (и то, - это программное ограничение, без указания явных проблемных путей).
Уже недолго осталось, чтобы на железке проверить, но все-таки кажется странным, что же это за столбовая дорога у Альтеры такая, что столько возни, столько правил и такой чахлый результат. "Гора родила мышь!"
У кого какие мысли?
|
|
|
|
|
 |
Ответов
|
Jul 23 2011, 20:26
|
Местный
  
Группа: Свой
Сообщений: 371
Регистрация: 24-07-05
Из: Москва
Пользователь №: 7 056

|
Выкладываю свой вариант контроллера. Он ещё не до конца написан, но его уже можно использовать. Ограничения текущей версии контроллера: 1. Минимальное AL + CL = 4. 2. Если меняете количество микросхем памяти нужно перегенерить FIFO под нужную разрядность. 3. Перестройку тактовой частоты нужно производить путем перегенерации PLL. 4. При использовании под другое семейство микросхем (текущий вариант сделан под Stratix III) нужно перегенерить мегафункции реализующие PHY. 5. Тайминги для gate-level моделирования в Modelsim (для Stratix III) отличаются от реальной времянки - настройку фазы нужно производить по отчёту Timing Analyzer или на реальном железе. 6. Объём записываемых/читаемых данных должен быть кратен размеру burst. Если кто-нибудь опробует данный контроллер на реальном железе просьба отписать сюда о результатах.
|
|
|
|
Сообщений в этой теме
Hoodwin Контроллер памяти DDR2 для Altera Cyclone Jun 24 2011, 17:33 Cordroy Цитата(Hoodwin @ Jun 24 2011, 20:33) [...... Jun 25 2011, 08:06 Sergey_Bekrenyov Цитата(Cordroy @ Jun 25 2011, 12:06) По-м... Jun 25 2011, 20:45 Hoodwin Немного поторопился я с п.2. 402 МГц не получается... Jun 25 2011, 08:13 des00 Цитата(Hoodwin @ Jun 25 2011, 02:13) Что-... Jun 25 2011, 08:36 BSACPLD Кстати, а возможно ли описывая контроллер исключит... Jun 25 2011, 08:49 Shtirlits Насколько мне известно, ни в VHDL, ни в Verilog*, ... Jun 25 2011, 10:16 gosu-art Мне тоже в скором времени понадобиться контроллер ... Jun 25 2011, 12:18 Hoodwin ЦитатаКстати, а возможно ли описывая контроллер ис... Jun 25 2011, 14:22 vadimuzzz Цитата(Hoodwin @ Jun 25 2011, 21:22) Сейч... Jun 26 2011, 02:23 BSACPLD to Hoodwin
Я сейчас тоже озаботился написанием соб... Jun 26 2011, 07:43 des00 Цитата(BSACPLD @ Jun 26 2011, 01:43) Я се... Jun 26 2011, 11:54 Hoodwin vadimuzzz
Спасибо, посмотрел. Странно, но там част... Jun 26 2011, 07:55 Shtirlits Там еще заморочка с setup/hold и оставшимся окошеч... Jun 26 2011, 09:00 warrior-2001 Во многих проектах использую Альтеровские контролл... Jun 27 2011, 05:50 torik Тут уже трое берутся написать свой DDR2 контроллер... Jun 27 2011, 10:52 des00 Цитата(torik @ Jun 27 2011, 04:52) Тут уж... Jun 27 2011, 12:26 Hoodwin ЦитатаТут уже трое берутся написать свой DDR2 конт... Jun 27 2011, 12:38 des00 Цитата(Hoodwin @ Jun 27 2011, 06:38) ну, ... Jun 27 2011, 15:17 Hoodwin Интересно, а кто-нибудь задействовал всякие фичи D... Jun 27 2011, 16:49 torik Цитатану, не так. Двое подумывают, а я то его уже ... Jun 27 2011, 18:45 Hoodwin Torik
1) Это совсем не главный вопрос, перечитайте... Jun 28 2011, 07:46 Hoodwin Вот еще вопрос какой.
Вот есть такой основной пара... Jun 30 2011, 11:55 warrior-2001 ИМХО параметр синтеза для CAS latency - самое то.
... Jun 30 2011, 12:35 Hoodwin Интерфейс такой:
Код ready : out std_logic; ... Jun 30 2011, 13:27 warrior-2001 Цитата(Hoodwin @ Jun 30 2011, 17:27) Метк... Jul 1 2011, 07:53 Timmy Может быть, имеет смысл разделить на отдельные мод... Jul 1 2011, 07:55 Hoodwin Цитата(warrior-2001 @ Jul 1 2011, 11... Jul 1 2011, 09:09 BSACPLD Докладываю о своих результатах.
Сделана инициализа... Jul 4 2011, 10:50 Hoodwin Судя по картинке, это пока чистая модель, откуда ч... Jul 4 2011, 12:31 BSACPLD Цитата(Hoodwin @ Jul 4 2011, 16:31) Судя ... Jul 4 2011, 14:23 Hoodwin Выкладываю проект как есть.
Собрал для двух устрой... Jul 5 2011, 10:35 des00 Цитата(Hoodwin @ Jul 5 2011, 04:35) Выкла... Jul 5 2011, 11:12 nckkm Цитата(Hoodwin @ Jul 5 2011, 14:35) Выкла... Jul 11 2011, 17:14 Hoodwin Чтобы потом не удивлялись, перечисляю, чего нет:
1... Jul 5 2011, 11:49 Hoodwin Новости:
1. В опубликованном коде ошибочка нашлась... Jul 6 2011, 14:26 Timmy Цитата(Hoodwin @ Jul 6 2011, 18:26) 1. В ... Jul 10 2011, 17:57 Hoodwin Timmy
1. А что за файла не хваает? Моделсим какой-... Jul 11 2011, 04:00 Timmy Цитата(Hoodwin @ Jul 11 2011, 08:00) Timm... Jul 11 2011, 07:09 Hoodwin 1. Ок, поправлю. Что-то раньше таких файлов не был... Jul 11 2011, 08:16 Hoodwin ЦитатаА Вы не думали выкладывать проект, скажем, н... Jul 11 2011, 19:56 cioma Больше людей смогут ознакомиться Jul 12 2011, 13:32 Hoodwin Поднимем тему еще раз.
ЦитатаБыло бы интересно вз... Jul 21 2011, 09:41 warrior-2001 Цитата(Hoodwin @ Jul 21 2011, 13:41) ...
... Jul 22 2011, 05:21 des00 у меня времени нет, как появится тогда сделаю. там... Jul 22 2011, 05:38 Hoodwin Выкладываю последний вариант. У меня пока работает... Jul 22 2011, 09:23 des00 Цитата(Hoodwin @ Jul 22 2011, 04:23) P.S.... Jul 22 2011, 09:55 tAmega Спасибо, огромное добрый волшебник Hoodwin.
Действ... Jul 22 2011, 09:27 Hoodwin Ай-я-яй, нехорошо. Выпад не по адресу.
1) Я ни ког... Jul 22 2011, 10:45
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|