|
Контроллер памяти 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 для данных (и то, - это программное ограничение, без указания явных проблемных путей).
Уже недолго осталось, чтобы на железке проверить, но все-таки кажется странным, что же это за столбовая дорога у Альтеры такая, что столько возни, столько правил и такой чахлый результат. "Гора родила мышь!"
У кого какие мысли?
|
|
|
|
|
 |
Ответов
|
Jun 27 2011, 12:38
|
Знающий
   
Группа: Участник
Сообщений: 881
Регистрация: 21-03-10
Из: _// \\_
Пользователь №: 56 107

|
Цитата Тут уже трое берутся написать свой DDR2 контроллер. ну, не так. Двое подумывают, а я то его уже практически написал. Вот времянка памяти из моделсима. Это срез сигналов на выводах памяти. Частота 175 МГц. Тест пока довольно простой, записываются 4 слова подряд, затем они читаются назад. Это продолжается в цикле по всей памяти. На диаграмме показан переход от чтения к записи. Модель памяти взята у микрона, а контроллер синтезирован для EP3C16F484C8. Контроллер занял 575 LCELLs и 352 регистра. Осталось доделать прием данных с шины памяти. Несколько комментариев к времянке. Вопреки сомнениям скептиков на ней хорошо видно, что окошки данных там ОГРОМНЫЕ, туда "боинг можно посадить". При этом, DQS вообще всегда стоит посередине данных, потому что они синхронизированы по общему удвоенному клоку, только DQ переключаются по заднему фронту, а DQS - по переднему. Времянка потянула бы и бОльшие частоты, если бы не ограничения самого циклона на скорость IOE. Сравните это, например, со стандартным ALTMEMPHY, где времянка DQS базируется на фазовом сдвиге PLL, а мультиплексор в IOE вносит фиксированную задержку, которая мешает свободно масштабировать частоту, не ковыряя существенно фазы всех клоков. В данном случае используется всего 3 клока: 1) основной клок на 175 Мгц, 2) удвоенный клок на 350 МГц, сфазированный с основным, 3) внешний клок 175 МГц, сдвинутый относительно основного по фазе так, чтобы соответствовать окну данных. Фактически нужно играть только одним этим клоком, и это абсолютно тривиально.
Сообщение отредактировал Hoodwin - Jun 27 2011, 12:50
Эскизы прикрепленных изображений
|
|
|
|
Сообщений в этой теме
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 Интересно, а кто-нибудь задействовал всякие фичи 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 BSACPLD Выкладываю свой вариант контроллера.
Он ещё не до ... Jul 23 2011, 20:26
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|