Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: DDR3 + kintex7
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
exigo
Добрый день, нужно подключить ddr3 память MT41K256M8-125 к kintex 7.
Проект в ISE. Создал файлы в MIG.
Не пойму как подключить сгенерированные файлы, какие-то они грамоздкие.
Просто для начала инициализацию хотябы
В проекте один топ файл, где фифо, юсб3.
Подскажите какие файлы нужно подключить.
exigo
поделитесь, пожалуйста, ссылками по использование MIG в ISE.
Алга
Вся документация на сайте Xilinx, ее много,
в тч использование МIG для ISE и для Vivado описано в разных версиях

http://www.xilinx.com/support/documentatio...7Series_MIS.pdf

http://www.xilinx.com/support/documentatio...xtp105-14.4.pdf

Дополнительно как пример для Virtex-6

https://www.wpi.edu/Pubs/E-project/Availabl...DDR3_Memory.pdf
vladec
Для седьмой сарии лучше использовать не ISE, а Vivado, а там можно попробовать собрать блочный дизайн.
VladimirB
Цитата(exigo @ Jun 8 2015, 07:34) *
Добрый день, нужно подключить ddr3 память MT41K256M8-125 к kintex 7.
Проект в ISE. Создал файлы в MIG.
Не пойму как подключить сгенерированные файлы, какие-то они грамоздкие.
Просто для начала инициализацию хотябы
В проекте один топ файл, где фифо, юсб3.
Подскажите какие файлы нужно подключить.

Там в папке МИГа example design лежит - вот можно с него начать.
Поставьте его как топ-левел. Он память инициализирует и зажигает флаг об окончании инициализации.
Потом начинает писать-читать туда-сюда. Если какая ошибка случается - то зажигает флаг Error.
Флаги вывести на светодиоды и посмотреть как оно работает, пальцем или пинцетом помехи посоздавать.

Обычно приходится повозиться с клоками. В МИГе расчитатано, что приходит два клока: один 200МГц для IOdelay, другой 400 МГц - частота памяти.
В реальности зачастую клок один и другой частоты, например, 100МГц - вот и приходится залезать во внутренности файлов МИГа и править их вручную.
Amurak
Цитата(VladimirB @ Jun 16 2015, 23:13) *
Обычно приходится повозиться с клоками. В МИГе расчитатано, что приходит два клока: один 200МГц для IOdelay, другой 400 МГц - частота памяти.
В реальности зачастую клок один и другой частоты, например, 100МГц - вот и приходится залезать во внутренности файлов МИГа и править их вручную.

Другой клок можно варьировать в определенных пределах при создании корки.
exigo
Скажите пожалуйста, чтобы пример завести, в настройках корки, что выбирать при настройках клока input clock period, system clock, ref clock
doom13
Приветствую.
Есть плата HTG-V7-PCIE-G3. Установлена планка 1GB 204-PIN SODIMM DDR3 (Crucial CT12864BF1339.M4FKD). Добавил в IP интегратор DDR3 контроллер, сгенерил систему.
Получил следующие порты:
Цитата
output [13:0]ddr3_addr;
output [2:0]ddr3_ba;
output ddr3_cas_n;
output [0:0]ddr3_ck_n;
output [0:0]ddr3_ck_p;
output [0:0]ddr3_cke;
output [0:0]ddr3_cs_n;
output [7:0]ddr3_dm;
inout [63:0]ddr3_dq;
inout [7:0]ddr3_dqs_n;
inout [7:0]ddr3_dqs_p;
output [0:0]ddr3_odt;
output ddr3_ras_n;
input ddr3_ref_clk_clk_n;
input ddr3_ref_clk_clk_p;
input ddr3_reset;
output ddr3_reset_n;
input ddr3_sys_clk_clk_n;
input ddr3_sys_clk_clk_p;
output ddr3_we_n;
output init_calib_complete;

На схеме платы шина адреса для слота памяти имеет разрядность 16 бит - в полученной системе 14. Где брать ещё две линии?
На слот памяти (согласно схеме платы) подключены линии:
1) DDR3_CK0_P, DDR3_CK0_N и DDR3_CK1_P, DDR3_CK1_N;
2) DDR3_CKE0 и DDR3_CKE1;
3) DDR3_CS0_N и DDR3_CS1_N;
4) DDR3_ODT0 и DDR3_ODT1.
Что подключается к портам DDR3_CK1_P и DDR3_CK1_N, DDR3_CKE1, DDR3_CS1_N, DDR3_ODT1? У контроллера памяти нет таких портов, или должна быть какая-то дополнительная опция?
doom13
Зачем нужны указанные выше сигналы так и не понял, пока всё работает без них.

Собрал систему приведённую на рисунке ниже. MicroBlaze пишет/читает по адресам DDR3. Через указатель на DDR3 (окно Variables) также могу записывать в память. А вот окно Memory почему-то не работает. На чтение показывает все нули, при попытке записи по адресу DDR3 выбрасывает ошибку. MDM вроде как должен иметь доступ к DDR3 (согласно схеме подключения и карте памяти).
В чём может быть проблема? Возможно ли редактировать/просматривать внешнюю (DDR3) память через окно Memory?
doom13
Цитата(doom13 @ Jun 24 2015, 12:50) *
На слот памяти (согласно схеме платы) подключены линии:
1) DDR3_CK0_P, DDR3_CK0_N и DDR3_CK1_P, DDR3_CK1_N;
2) DDR3_CKE0 и DDR3_CKE1;
3) DDR3_CS0_N и DDR3_CS1_N;
4) DDR3_ODT0 и DDR3_ODT1.
Что подключается к портам DDR3_CK1_P и DDR3_CK1_N, DDR3_CKE1, DDR3_CS1_N, DDR3_ODT1? У контроллера памяти нет таких портов, или должна быть какая-то дополнительная опция?


Нашёл стандарт для SO-DIMM 204, данные сигналы используются в модулях с двухрядным расположением микросхем памяти (в моём случае они не используются, т.к. модуль - однорядный).
doom13
Цитата(doom13 @ Jun 25 2015, 09:57) *
В чём может быть проблема? Возможно ли редактировать/просматривать внешнюю (DDR3) память через окно Memory?

После правильной настройки DDR3-контроллера всё заработало.
exigo
Добрый день
делаю циклический буфер в ддр3
пишу в память 1 транзакцию в цикле пока адрес записи не убежит к примеру на 4 адреса, потом считываю 4 адреса.
проблема, что при чтение не всегда приходит 4 valid сигнала, а иногда на 1 меньше.
и еще заметил сдвиг данных по адресам, пишу в один адрес а эти данные (тест счетчик) считываются по другому позже, с фиксированным сдвигом по адресу.
В целом буфер работает, но иногда происходят разрывы.
плис kintex 7, dd3
Может в чтение или записи проблема.
Смотрю временные диаграмы разные в интернете.
при записи app_wdf_wren<='1';app_wdf_end<='1'; в одно время дергаю, а при чтение считываю по app_rd_data_valid='1'
VladimirB
Цитата(exigo @ Jan 13 2016, 12:07) *
Добрый день
делаю циклический буфер в ддр3
пишу в память 1 транзакцию в цикле пока адрес записи не убежит к примеру на 4 адреса, потом считываю 4 адреса.
проблема, что при чтение не всегда приходит 4 valid сигнала, а иногда на 1 меньше.
и еще заметил сдвиг данных по адресам, пишу в один адрес а эти данные (тест счетчик) считываются по другому позже, с фиксированным сдвигом по адресу.
В целом буфер работает, но иногда происходят разрывы.
плис kintex 7, dd3
Может в чтение или записи проблема.
Смотрю временные диаграмы разные в интернете.
при записи app_wdf_wren<='1';app_wdf_end<='1'; в одно время дергаю, а при чтение считываю по app_rd_data_valid='1'

Если у вас версия MIG v1.9 (ISE 14.7, а может и более ранние)
то там есть косяк: http://www.xilinx.com/support/answers/56276.html.
В этой версии, если оставить дефолтный параметр MEM_ADDR_ORDER=TG_TEST, то адреса перемешиваются перед записью/чтением в память, она начинает тормозить и валиды приходят с паузами.
exigo
Для пробы делаю сейчас так, записываю 64 раза начиная с адреса 16, и инкрементирую +16 каждый раз адрес (16,32,64)
Потом в бесконечном цикле считываю эти 64 адреса.
В качестве данных записываю адрес
В результат в чипскопе данные непрырывно начиная с 16, начинаются только с адреса 64, т.е. сдвиг 3 адреса.
Пробовал первые три адреса перезаписывать несколько раз, всеравно данные оказываются только в дресах сдвинутых на 3.
Может с адресацией что-то не так?
exigo
Скиньте, пожалуйста, кто-нибуть файл к которому подключен МИГ и есть автомат чтения-записи, проверю конфигурацию и сигналы.
exigo
Разобрался со всем, проблемы с указателями адресов в циклическом буфере были, устранил разрывы, и с управляющими сигналами в автомате проблемы были. (app_en и тд)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.