реклама на сайте
подробности

 
 
4 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Контроллер памяти DDR2 для Altera Cyclone, размышления на тему о предельной частоте
Hoodwin
сообщение Jun 24 2011, 17:33
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 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 для данных (и то, - это программное ограничение, без указания явных проблемных путей).

Уже недолго осталось, чтобы на железке проверить, но все-таки кажется странным, что же это за столбовая дорога у Альтеры такая, что столько возни, столько правил и такой чахлый результат.
"Гора родила мышь!"

У кого какие мысли?

Go to the top of the page
 
+Quote Post
Cordroy
сообщение Jun 25 2011, 08:06
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 65
Регистрация: 13-09-10
Из: Israel
Пользователь №: 59 464



Цитата(Hoodwin @ Jun 24 2011, 20:33) *
[...] но все-таки кажется странным, что же это за столбовая дорога у Альтеры такая, что столько возни, столько правил и такой чахлый результат.
"Гора родила мышь!"

У кого какие мысли?


По-моему, одна из причин пользоваться альтеровскими контурами для DDR2 (DQ/DQS groups, dynamic termination, автокалибрация, DLL's etc.) это гарантированная устойчивость к вариациям по температуре, процессу, погрешностям времянки, и т. п.

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

В любом случае - желаю успеха с проектом, вещь полезная. Сам уже намучался и возненавидел альтеровские IP и их документацию sm.gif
Go to the top of the page
 
+Quote Post
Hoodwin
сообщение Jun 25 2011, 08:13
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 881
Регистрация: 21-03-10
Из: _// \\_
Пользователь №: 56 107



Немного поторопился я с п.2. 402 МГц не получается, если добавляю опцию Fast Output(enable) Register. Причем возникает довольно странная картина, проблема с частотой связана с разделами Minimum Pulse Width Requirement (High/low).

Код
-0.178 ns    1.428 ns    1.250 ns    ddr2_pll:mem_pll|altpll:altpll_component|ddr2_pll_altpll2:auto_generated|wire_pll1_clk[1]    mem1_data[2]~reg0


Квартус пишет, что он зарубил частотку до 350 МГц по причине минимальной длительности тактового импульса. Смотрел даташит и так и не смог понять, откуда там такое ограничение взялось? Получается, что несмотря на 402 МГц внутри кристалла на триггеры в IOE нельзя подавать частоту выше 350МГц? Что-то я с таким ограничением раньше не встречался, где-нибудь подробнее оно описано?
Go to the top of the page
 
+Quote Post
des00
сообщение Jun 25 2011, 08:36
Сообщение #4


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Hoodwin @ Jun 25 2011, 02:13) *
Что-то я с таким ограничением раньше не встречался, где-нибудь подробнее оно описано?

раздел даташита Maximum Input & Output Clock Toggle Rate


--------------------
Go to the top of the page
 
+Quote Post
BSACPLD
сообщение Jun 25 2011, 08:49
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 371
Регистрация: 24-07-05
Из: Москва
Пользователь №: 7 056



Кстати, а возможно ли описывая контроллер исключительно на HDL (без задействования мегафункций) заставить Quartus укладывать сигналы в DQ/DQS группы?
Go to the top of the page
 
+Quote Post
Shtirlits
сообщение Jun 25 2011, 10:16
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905



Насколько мне известно, ни в VHDL, ни в Verilog*, нет выразительных средств для управления размещением и разводкой. Есть инструменто-зависимые средства работы с атрибутами, позволяющие почти не пользоваться дополнительными файлами констрейнов.
Go to the top of the page
 
+Quote Post
gosu-art
сообщение Jun 25 2011, 12:18
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 555
Регистрация: 14-10-09
Пользователь №: 52 939



Мне тоже в скором времени понадобиться контроллер ДДР2, но только для Актела! crying.gif
Go to the top of the page
 
+Quote Post
Hoodwin
сообщение Jun 25 2011, 14:22
Сообщение #8


Знающий
****

Группа: Участник
Сообщений: 881
Регистрация: 21-03-10
Из: _// \\_
Пользователь №: 56 107



Цитата
Кстати, а возможно ли описывая контроллер исключительно на HDL (без задействования мегафункций) заставить Quartus укладывать сигналы в DQ/DQS группы?


Так я и начал разговор с того, что это не нужно. Во всяком случае в этом заключается идея альтернативной реализации. Группы DQ/DQS - это наследие от первых циклонов и первой реализации DDR, у которой сигнал DQS был тактовым в обе стороны. В результате возникала привязка группы DQ к DQS, поскольку тактирование входных регистров в IOE от общего DQS было реализовано аппаратно. Это нагородило кучу проблем, о которых написано в свежих руководствах. Например, когда DQS был тактовым сигналом, то нужно было правильно его блокировать, поскольку при переключении с выхода на вход были возможны выбросы, которые приводили к тому, что данные защелкивались лишний раз. В DDR2 ситуация иная. Входной DQS выровнен с данными и служит просто селектором регистра приема. Если явно работать на двойной частоте, то проблема групп вообще уходит, поскольку все линии данных могут работать независимо, по внутреннему клоку.

Мне доводилось делать несколько проектов с современными DSP от TI, где тоже применяется память DDR2. Причем я делал там и схему, и плату, и программирование контроллера DDR2 памяти в самом DSP. И доподлинно известно и проверено на практике, что на частотах до 250 МГц и близком расположении памяти к контроллеру вся эта задачка решается в лоб, не требует никаких согласований длины цепей, не требует ODT, и т.п. Причем TI в итоге в этом честно сознался и просто написал доки, где сказано, что делайте по-простому, и будет хорошо. А альтеровцы нагородили самый сложный вариант, объявили его интеллектуальной собственностью, и в итоге получили какую-то абсолютно жалкую производительность. Таких тормозных чипов DDR2, какие нужны для их контроллеров, сейчас уже и не производится. Даже самый медленный чип уже от 333 МГц, а контроллер только до 133 МГц тянет. Все эти доводы и наводят на мысль попробовать сделать свой вариант.

Цитата
По-моему, одна из причин пользоваться альтеровскими контурами для DDR2 (DQ/DQS groups, dynamic termination, автокалибрация, DLL's etc.) это гарантированная устойчивость к вариациям по температуре, процессу, погрешностям времянки, и т. п.

Вообще, муть это все. Об этом можно начинать задумываться, когда частоты существнно выше 200МГц. Вариации по температуре можно смоделировать, так как квартус умеет аннотировать задержки для разных температур. Для прогнозируемой работы схемы все равно нужно использовать триггеры в IOE.

Единственное серьезное ограничение связано с токовыми способностями банков и вследствие этого шумами, создаваемыми переключающимися выводами адреса и управления. Квартус не дает плотно упаковать в один банк и шину данных, и шину адреса. Поэтому для проверки схемы соединений FPGA с DDR2 SDRAM мне приходилось сначала собирать простую болванку, в которой есть все сигналы, им назначены правильные I/O стандарты и все они как-нибудь шевелятся на предельной частоте. И в итоге часть выводов банка приходится оставлять пустыми.


Цитата
раздел даташита Maximum Input & Output Clock Toggle Rate


Сейчас специально выкачал весь cyclone3_handbook.pdf и не вижу там указанного раздела. Что я делаю не так, и как его искать? Проглядывал раздел по имени Periphery Performance, там, во-первых, нет внятного параметра максимальной частоты для отдельно взятого IOE, а, во-вторых, вообще ни для одного параметра нет предельного значения в 350 МГц, который выдает мне квартус. Чудеса...

Сообщение отредактировал Hoodwin - Jun 25 2011, 14:37
Go to the top of the page
 
+Quote Post
Sergey_Bekrenyov
сообщение Jun 25 2011, 20:45
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 14-12-10
Из: Королёв
Пользователь №: 61 599



Цитата(Cordroy @ Jun 25 2011, 12:06) *
По-моему, одна из причин пользоваться альтеровскими контурами для DDR2 (DQ/DQS groups, dynamic termination, автокалибрация, DLL's etc.) это гарантированная устойчивость к вариациям по температуре, процессу, погрешностям времянки, и т. п.

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

В любом случае - желаю успеха с проектом, вещь полезная. Сам уже намучался и возненавидел альтеровские IP и их документацию sm.gif


Присоединяюсь к ненавистникам альтеровских IP и их документации sm.gif

Делал интерфейс с DDR на Virtex-4 года 3 назад. Запустил за неделю. С альтерой бился 3 месяца - читал, пробовал, снова читал. В результате перед самой сдачей схемы обнаружил еще одни группы - VREF, которые не могут тянуть более 9 ножек. В итоге все работает, однако на 150 Мгц Cyclone-IV 7
Купил себе отладочную плату на Spartan-6 с железным контроллером памяти. Вот это сказка!
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jun 26 2011, 02:23
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(Hoodwin @ Jun 25 2011, 21:22) *
Сейчас специально выкачал весь cyclone3_handbook.pdf и не вижу там указанного раздела. Что я делаю не так, и как его искать?

это сейчас мода такая у альтеры, даташиты укорачивать. сейчас они пишут, что смотрите сообщения от квартуса, они самые точные. в аттаче хендбук от 2008 года, там этот раздел еще есть (стр. 406).
Прикрепленные файлы
Прикрепленный файл  cyclone3_handbook.pdf ( 7.72 мегабайт ) Кол-во скачиваний: 157
 
Go to the top of the page
 
+Quote Post
BSACPLD
сообщение Jun 26 2011, 07:43
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 371
Регистрация: 24-07-05
Из: Москва
Пользователь №: 7 056



to Hoodwin
Я сейчас тоже озаботился написанием собственного контроллера DDR2.
Может, скинете мне на почту (BSA-one(собака)яндекс.ру) HDL код вашего контроллера.
Я хочу попробовать взять его за основу. Правда, писать собираюсь на SV.
Go to the top of the page
 
+Quote Post
Hoodwin
сообщение Jun 26 2011, 07:55
Сообщение #12


Знающий
****

Группа: Участник
Сообщений: 881
Регистрация: 21-03-10
Из: _// \\_
Пользователь №: 56 107



vadimuzzz
Спасибо, посмотрел. Странно, но там частота указана 300 МГц, а квартус дает все 350.

Буду доделывать тогда для C8 под 175 тактовую МГц. Но там еще есть заморочка с предельной частотой входных триггеров в IOE. 175 Всяко больше, чем 133.
Go to the top of the page
 
+Quote Post
Shtirlits
сообщение Jun 26 2011, 09:00
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905



Там еще заморочка с setup/hold и оставшимся окошечком для данных.
Для наглядности в модели стоит приделать нечто превращающее данные в 'U' во время setup и для контроля добавить проверку на hold.

Со скепсисом схрумкал еще попкорна.
Go to the top of the page
 
+Quote Post
des00
сообщение Jun 26 2011, 11:54
Сообщение #14


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(BSACPLD @ Jun 26 2011, 01:43) *
Я сейчас тоже озаботился написанием собственного контроллера DDR2.

тоже что ли плюнуть на все и потратить недельку на переписку hssdrc в hsd2drc контроллер wacko.gif


--------------------
Go to the top of the page
 
+Quote Post
warrior-2001
сообщение Jun 27 2011, 05:50
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 375
Регистрация: 9-10-08
Из: Таганрог, Ростовская обл.
Пользователь №: 40 792



Во многих проектах использую Альтеровские контроллеры DDR & DDR2. Один раз помучался - и теперь просто тиражирую.
Было бы интересно взглянуть на самописные архитектурно независимые контроллеры. Есть возможность проверить на arria GX & arriaII GX в боевых проектах с загрузкой вплоть до 100% ПЛИС.
Пока что я присоединюсь к Shtirlits.

Цитата(Shtirlits @ Jun 26 2011, 13:00) *
Со скепсисом схрумкал еще попкорна.



--------------------
Глупцы игнорируют сложность. Прагматики терпят ее. Некоторые могут избегать ее. Гении ее устраняют.
Go to the top of the page
 
+Quote Post

4 страниц V   1 2 3 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th June 2025 - 06:04
Рейтинг@Mail.ru


Страница сгенерированна за 0.01533 секунд с 7
ELECTRONIX ©2004-2016