Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: FIFO на DDR3 на Cyclone V
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
dinam
Появилась необходимость перейти с SDRAM и Cyclone II на вышеозвученные. Основные требования побыстрей освоить и побольше пропускная способность.
Разбираюсь с DDR3 SDRAM Controller with UniPHY, полученным с помощью Quartus 14.1.1 Build 190.
Пока не определился использовать аппаратный или софтовый контроллер, но больше склоняюсь к последнему. Разбираюсь к какому интерфейсу проще прицепиться, к аппаратному или к AFI софтовому для использования только PHY. Цена тоже имеет значение, т.к. для FPGA с Hard Controller она почти в два раза больше. Как то медленно всё продвигается, то ли тяжело понимаю, то ли документация такая (External Memory Interface Handbook и т. д.) Пример скомпилировался, вижу что рабочая 300 МГц с небольшим запасом получается. 300*2*2 Мбайт/сек софтового без учета накладных расходов мне хватит. В ModelSime пример моделируется sm.gif
Может кто уже делал подобное и поделится советами. Может другие контроллеры применяли. Я помню очень интересную темку про самодельный контроллер DDR2, уважаемого Hoodwina.
Пишу на VHDL.
serjj
Здравствуйте, не совсем понял в чём собственно вопрос, но вот референс для DDR3 без Nios с диска для Arrow SoCKit:
Нажмите для просмотра прикрепленного файла
Надеюсь, что поможет.

PS сам на 5-м ставил DDR3 контроллер (софт и хард) в QSys + Nios. Всё вполне работоспособно rolleyes.gif
dinam
Спасибо, погляжу.
Вот смотрю, например, контроллер Hoodwina для DDR2 вроде все понятно из названия файлов. А у Altera сам чёрт ногу сломит, где файл с интерфейсом AFI, к которому подсоединить собственный контроллер?
Чего я хочу. Вот заглянет в тему волшебник Hoodwin и скажет: "А вот у меня есть контроллер DDR3 берите пользуйтесь. Он быстрее и проще, чем альтеровский".
Или вы скажете, что не стоит заморачиваться с AFI, FIFO на Hard Controller намного проще реализуется, тактовая больше и задержек разных по минимуму. rolleyes.gif

goodsoul
Цитата(dinam @ Jan 30 2015, 08:39) *
Появилась необходимость перейти с SDRAM и Cyclone II на вышеозвученные. Основные требования побыстрей освоить и побольше пропускная способность.
Разбираюсь с DDR3 SDRAM Controller with UniPHY, полученным с помощью Quartus 14.1.1 Build 190.
Пока не определился использовать аппаратный или софтовый контроллер, но больше склоняюсь к последнему. Разбираюсь к какому интерфейсу проще прицепиться, к аппаратному или к AFI софтовому для использования только PHY. Цена тоже имеет значение, т.к. для FPGA с Hard Controller она почти в два раза больше. Как то медленно всё продвигается, то ли тяжело понимаю, то ли документация такая (External Memory Interface Handbook и т. д.) Пример скомпилировался, вижу что рабочая 300 МГц с небольшим запасом получается. 300*2*2 Мбайт/сек софтового без учета накладных расходов мне хватит. В ModelSime пример моделируется sm.gif
Может кто уже делал подобное и поделится советами. Может другие контроллеры применяли. Я помню очень интересную темку про самодельный контроллер DDR2, уважаемого Hoodwina.
Пишу на VHDL.


Если у вас все моделируется, то что еще нужно от жизни?
Удивлен заявлением, что чип с аппаратным контроллером стоит в два раза дороже. Где вы такие цены взяли?
Сижу, смотрю в прайс - отличие в цене 10-15%. Аппаратные корки на цену чипа как раз мало у альтеры влияют. Цена от емкости в первую очередь зависит.
Я бы брал аппаратный контроллер и не заморачивался.

Применение DDR для FIFO - весьма спорное решение. Эффективность использования памяти при попеременном чтении/записи будет никакой. Если внутренней памяти FPGA жалко/мало, я бы поставил дискретное FIFO. У Cypress вроде было что-то интересное. Но это лишь взгляд со стороны...
dinam
Цитата(goodsoul @ Jan 30 2015, 14:30) *
Если у вас все моделируется, то что еще нужно от жизни?
Так пример моделируется, а не моё FIFO.

Цитата(goodsoul @ Jan 30 2015, 14:30) *
Удивлен заявлением, что чип с аппаратным контроллером стоит в два раза дороже. Где вы такие цены взяли?
Сижу, смотрю в прайс - отличие в цене 10-15%. Аппаратные корки на цену чипа как раз мало у альтеры влияют. Цена от емкости в первую очередь зависит.
Вот сделал скриншот. На вторую позицию не смотреть, она DDR3 не тянет. Интересуют в единичных количествах.

Цитата(goodsoul @ Jan 30 2015, 14:30) *
Применение DDR для FIFO - весьма спорное решение. Эффективность использования памяти при попеременном чтении/записи будет никакой. Если внутренней памяти FPGA жалко/мало, я бы поставил дискретное FIFO. У Cypress вроде было что-то интересное. Но это лишь взгляд со стороны...
Эффективность использования SDRAM у меня была очень высокой, сейчас точно не скажу, но думаю не менее 95%. Т.к. за раз записывались 4 банка, потом при необходимости делался refresh, дальше либо опять запись, либо чтение других/следующих 4 банков. Существующего сегодня 16 Мбайт не хватает, надо минимум 40 Мбайт, 128 Мбайт в самый раз.
goodsoul
Цитата(dinam @ Jan 30 2015, 11:54) *
Так пример моделируется, а не моё FIFO.

Вот сделал скриншот. На вторую позицию не смотреть, она DDR3 не тянет. Интересуют в единичных количествах.

Эффективность использования SDRAM у меня была очень высокой, сейчас точно не скажу, но думаю не менее 95%. Т.к. за раз записывались 4 банка, потом при необходимости делался refresh, дальше либо опять запись, либо чтение других/следующих 4 банков. Существующего сегодня 16 Мбайт не хватает, надо минимум 40 Мбайт, 128 Мбайт в самый раз.


OK, даже если отталкиваться от "магазинных" цен на штучные чипы на сайте альтеры, то
5CEBA2F23C7N - 47$ (без HMC)
5CEFA2F23C7N - 54.5$ (с HMC)
dinam
Цитата(goodsoul @ Jan 30 2015, 15:06) *
5CEFA2F23C7N - 54.5$ (с HMC)
Насколько я понял это цена 1 шт. при партии 60 шт.. Одну-две вы не купите за такие деньги.
goodsoul
Цитата(dinam @ Jan 30 2015, 12:20) *
Насколько я понял это цена 1 шт. при партии 60 шт.. Одну-две вы не купите за такие деньги.


Купите (+НДС). Вы же не на сайте альтеры это покупать будете, а у дистрибьютора в РФ. Их тут целых три (если вместе с Arrow, то четыре)
Другое дело, что размер упаковки для этого партномера - 60 штук. Но всегда есть вероятность того, что упаковку для вас могут почикать, чтобы штучные образцы подарить/продать
dinam
Цитата(dinam @ Jan 30 2015, 14:05) *
А у Altera сам чёрт ногу сломит, где файл с интерфейсом AFI, к которому подсоединить собственный контроллер?
Оказалось, что Altera забыла в External Memory Interface Handbook это прописать sm.gif . Написал производителю, обещали поправить.

Разбираюсь с Hard Controller. Не могу понять, где устанавливается частота шины Avalon-MM? В example_project частота всего 66 МГц.
dinam
Цитата(dinam @ Feb 5 2015, 12:24) *
Разбираюсь с Hard Controller. Не могу понять, где устанавливается частота шины Avalon-MM? В example_project частота всего 66 МГц.

После переписки с Altera мои наихудшие подозрения подтвердились. Подключиться к Hard Controller можно только на 66 МГЦ!!! Ну и спрашивается на фига он такой нужен?
serjj
Цитата
После переписки с Altera мои наихудшие подозрения подтвердились. Подключиться к Hard Controller можно только на 66 МГЦ

Это максимальная частота шины авалон, на которую подключается Hard controller? Это именно на Cyclone V? Линк на переписку можно (если не приват)? Вообще это интересно... 05.gif
warrior-2001
Поддержу вопрос. Кто конкретно ответил и есть ли разъяснения, отчего именно 66 МГц?
dinam
Why example_project has pll_avl_clk 66,6 Mhz? How can I increase this frequency?
Pll_avl_clk is the internal clock that auto generate with the DDR3 controller. There is no setting can change the frequency manually. It is away 1/5 of the interface frequency. For the example design that you stated, I believe its interface frequency is 333MHz, so you are seeing 66.7MHz (333/5). The C8 Cyclone V device support hard memory frequency with range 300-333MHz. So, you only can play around of this pll_avl_clk with range of 60~66.7Mz.

Can I somehow work with Hard Memory Controller at a higher frequency than 66 MHz?
I believe your question is point to pll_avl_clk, is the frequency can set more than 66MHz.
My answer is no. The reason is because maximun support frequency for Cyclone V HMC is 333MHz, so the pll_avl_clk is only limited to 66Mhz.


P.S. Речь шла про 5CEFA2F23C8N. Сделал Service Request в mySupport.
serjj
Цитата
I believe your question is point to pll_avl_clk, is the frequency can set more than 66MHz.
My answer is no. The reason is because maximun support frequency for Cyclone V HMC is 333MHz, so the pll_avl_clk is only limited to 66Mhz.

Вот не зря уточняли, о каком клоке идет речь rolleyes.gif Это внутренний клок, он не имеет отношения к обмену данными по авалону. Я добавляю в qsys uni-phy контроллер памяти, ставлю галку hard controller. Если навести мышкой на avl_0, то можно посмотреть с каким клоком и резетом асоциируется данная шина. Там будет mp_cmd_clk. MP это Multi-point front end (External Memory interface handbook 2014.08.15 - Volume 3 - Chapter 3 - MPFE).
Цитата
Thefabric interface provides communication betweenthe Avalon-ST-like internal protocol of the hard
memory interface and the external Avalon-MMprotocol.The fabric interface supports frequencies in the
range of 10MHz to one-half of the memory interface frequency.For example, for an interface running at
533MHz, the maximum user logic frequency is 267MHz. The MPFE handles the clockcrossing between
user logic and the hard memory interface.

Далее есть табличка, где расписано какой сигнал для чего используется, в частности клоки. И главное есть qsys пример.
dinam
Спасибо, буду дальше разбираться.
dinam
Странное показывает Modelsim при моделировании example project.
Soft controller. Частота, с которой идет обмен данными с контроллером равна половинной частоте PHY. Ширина шины 64 р. PLL reference clock frequency в моём случае 48 МГц. Т.е. всё как и должно быть.
Hard controller. Частота, с которой идет обмен данными с контроллером равна PLL reference clock frequency, т. е. 48 МГЦ! Ширина шины 32 р. Как так?
serjj
А какой клок у вас заведен на mp_cmd_clk, mp_rfifo_clk, mp_wfifo_clk?
dinam
Нажмите для просмотра прикрепленного файла
В настройках нет ничего такого.

serjj
Если вы ставите галочку на enable hard controller у вашего компонента в qsys появляются новые выводы mp, напишите плз. какие клоки у вас заведены туда, или выложите скриншот с комонентом ddr3 в qsys..
dinam
Подниму тему. Спустя три года разведена и спаяна плата с DDR3 rolleyes.gif . Смотрю сигналы в SignalTap II Logic Analyzer. Просто записываю в память 80 слов и пытаюсь обратно прочесть их. Судя по отклику сигнала avl_ready_0 запись проходит всегда. А вот чтение очень редко, т.е. avl_rdata_valid_0 остаётся в нуле. Но когда проходит, то слова вроде прочитываются правильно. Команды, чтение и запись произвожу на частоте 166 МГц(afi_half_clk). Уже голову сломал, ЧЯДНТ? На что грешить - на схему, разводку, формирую неправильно диаграмму чтения?
Нажмите для просмотра прикрепленного файла
dinam
Все очень странно. На тестовом примере точно такие диаграммы чтения и записи с частотой 166 Мгц моделируется замечательно. Чтение происходит. В железе же если сигнал avl_ready_0 падает в ноль даже после команды чтения, то чтение не происходит. Как так?
Т.е. чтение-запись маленьких пакетов до 48 64р слов, происходит всегда и без сбоев. А вот при записи 48 слов и выше появляется нулевой импульс avl_ready_0 и команда чтения не обрабатывается.
dinam
Похоже я неправильно работаю с hard controller, т.к. при моделировании я вижу все те же глюки что и в железе. Есть, например, странные пульсации avl_ready похожие на "How do I reduce the UniPHY DDR3 controller pulsing avl_ready low on the Avalon interface?" Советы данные там не помогают избавиться от пульсаций avl_ready.
Хоть кто-нибудь запускал шину Avalon на частоте 166 МГц(afi_half_clk) с передачей больше 0,5 Кбайт за раз?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.