Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Zynq DDR3 перестановка пинов DQx
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
Almaz1988
Добрый день!
Судя по http://www.xilinx.com/support/answers/46723.html
я могу для удобства разводки платы переставлять пины
данных в пределах банка: DQ[0-7], DQ[8-15], DQ[16-23], DQ[24-31].
А где в процессе сборки PetaLinux указать, что такие-то пины
переставлены? В Vivado такой возможности нет. Остается либо
дерево конфигурации, либо нужно лезть в исходники ядра, чего
очень не хочется.
Подскажите пожалуйста где, в каких файлах сборки указываются
переставленные пины? Я в данный момент развожу плату под Zynq-7000
и мне всего лишьнужно убедиться, что такая переконфигурация
выполняется безболезненно, без правки исходников ядра.
Скажите пожалуйста какой именно файл в сборке Petalinux нужно
править?
doom13
Если речь о DDR-контроллере PS, то ничего Вы переставлять и не можете (там всё фиксировано), если - о DDR-контроллере PL, то такая возможность есть, но и соответствие линий будет указываться в проекте для PL.
Almaz1988
Цитата(doom13 @ May 30 2016, 15:22) *
Если речь о DDR-контроллере PS, то ничего Вы переставлять и не можете (там всё фиксировано), если - о DDR-контроллере PL, то такая возможность есть, но и соответствие линий будет указываться в проекте для PL.

Я о DDR-контроллере PS. А что тогда имеется в виду в UG933, на странице 66: " Byte and bit swapping is allowed to facilitate PCB routing, except for LPDDR2, which specifically forbids swapping. When
swapping bits, keep all bits within the same byte group." ?
doom13
Похоже, работать будет. В ядре править ничего не придётся, т.к.:
Цитата
Since data will be returned the same way it was sent out of the Zynq PHY interface, physically swapping data lines between Zynq and memory will have no net effect on the data.
(Ваша ссылка).

PS: На zc706 все пины (DQ) DDR-контроллера соответствуют пинам памяти.
Almaz1988
Цитата(doom13 @ May 30 2016, 16:01) *
Похоже, работать будет. В ядре править ничего не придётся, т.к.:
(Ваша ссылка).

PS: На zc706 все пины (DQ) DDR-контроллера соответствуют пинам памяти.


Т.е., если я переставлю пины 2 и 3, то отправляя 0x04 контроллер будет думать,
что отправляет 0х08 и наоборот? Как будто бы просто сменится порядок битов.
Как будто бы должно работать, но все же хотелось бы услышать мнение тех, кто
проделывал такое на практике.

Цитата(Almaz1988 @ May 30 2016, 16:08) *
Т.е., если я переставлю пины 2 и 3, то отправляя 0x04 контроллер будет думать,
что отправляет 0х08 и наоборот? Как будто бы просто сменится порядок битов.
Как будто бы должно работать, но все же хотелось бы услышать мнение тех, кто
проделывал такое на практике.


Нашел опен сорсный пример разводки DDR3: http://www.imx6rex.com/
Плата OpenRex.
Действительно, биты данных переставлены в пределах своей банки в произвольном
порядке за исключением самых младших битов в каждой банке: DQ0, DQ8, DQ16, DQ24.
akorud
Цитата(Almaz1988 @ May 30 2016, 15:47) *
Т.е., если я переставлю пины 2 и 3, то отправляя 0x04 контроллер будет думать,
что отправляет 0х08 и наоборот? Как будто бы просто сменится порядок битов.

Контроллер ничего не будет думать. Он просто запишет 8 бит и ожидает получить их в том же порядке читая. А в какую конкретно ячейку памяти попадет бит (в границах группы) ему в общем-то все равно.
Sl_Kirillov
Внутри байтовой группы биты можно свопить как удобнее.
И сами байтовые группы между собой можно свопить.
В цинке в ядре, юбуте или девайс три ничего про свопинг указывать не нужно.

Проверено на нескольких платах с Zynq.

Был печальный опыт: случайно попутали по одному биту меж байтами - в итоге ничего не работало. Такой косяк лечится исключительно переразводкой.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.