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

 
 
 
Reply to this topicStart new topic
> Custom IP -> SDRAM Memory Write, Как отследить, что запись прошла?
sonycman
сообщение Jun 30 2017, 22:09
Сообщение #1


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Доброго времени суток!

Использую Cyclone V SoC.
Планирую в своей корке использовать простенький DMA для записи обработанных данных в память SDRAM процессора HPS.

Интерфейс у корки простой - Avalon MM, далее через мост FPGA->HPS.
Затем буду сигналить линию IRQ в качестве флага, что данные записаны в память.

Но вот как быть уверенным, что на момент поднятия IRQ данные на самом деле будут лежать в памяти?

Насколько я знаю, Qsys Interconnect генерирует промежуточное FIFO, затем Сlock Crossing Bridge и прочую необходимую логику.
То есть момент, когда Avalon MM со стороны FPGA->HPS моста принял данные, совсем не говорит о том, что они уже записаны в память.
Насколько я понимаю.

Как узнать, когда на самом деле данные будут записаны, чтобы процессор мог без проблем их прочитать?

Может быть, стоит задействовать сигналы response интерфейса Avalon MM?
Это позволит понять, что слэйв на стороне моста принял данные, но вот записал ли он их?...
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 30 2017, 22:19
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Было такое на Zynq, все работало нормально.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jul 1 2017, 09:22
Сообщение #3


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(doom13 @ Jul 1 2017, 02:19) *
Было такое на Zynq, все работало нормально.

На цинке нет авалона, там сложный AXI.
В нём, наверное, есть спец. линии, подобные response в авалоне.
Go to the top of the page
 
+Quote Post
g700
сообщение Jul 1 2017, 11:01
Сообщение #4





Группа: Участник
Сообщений: 14
Регистрация: 22-06-17
Из: Санкт-Петербург
Пользователь №: 97 789



Используйте сигналы response. Глубина буффера в самом sdram на запись 8 ( стр. 4-2 ). Так, что можно сделать так: пришел response спустя 8 тактов IRQ.
https://www.altera.com/content/dam/altera-w...troller_hps.pdf

Сообщение отредактировал g700 - Jul 1 2017, 11:12
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jul 1 2017, 11:30
Сообщение #5


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(g700 @ Jul 1 2017, 15:01) *
Используйте сигналы response. Глубина буффера в самом sdram на запись 8 ( стр. 4-2 ). Так, что можно сделать так: пришел response спустя 8 тактов IRQ.
https://www.altera.com/content/dam/altera-w...troller_hps.pdf

Да, спасибо!

Данные пойдут через AvalonMM Master -> мост FPGA->HPS и дальше ->L3 Interconnect->32 bit AXI->SDRAM Controller.
То есть сигналы write response со стороны AXI должны быть автоматически согласованы Qsys Interconnect с сигналами response моего AvalonMM Master.

Буду пробовать!
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jul 7 2017, 11:35
Сообщение #6


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Блин, почитал внимательнее доку по хардовому контроллеру DDR SDRAM - для шины Авалон нет поддержки подтверждения записи (write response).
Получается, нужен AXI.

Насколько я понял, в циклоне AXI-3.
Попробую написать мастер для записи.

Подумал тут - лучше воспользоваться портом ACP, чтобы сразу делать запись в кеш процессора.
Будет быстрее, чем напрямую в sdram.

Кто нибудь работал с ACP? Там кучу условий надо выполнить.
Доступ к нему через мост FPGA->HPS, который AXI3, но что интересно - для доступа к ACP нужны сигналы AxUSER AXI4!

Я не пойму, почему такая мешанина разных шин?
Go to the top of the page
 
+Quote Post
starley
сообщение Jul 13 2017, 19:34
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 195
Регистрация: 9-01-09
Из: Москва
Пользователь №: 43 085



Общепринятая практика для гарантированного завершения записей - выполнить чтение хотя бы одного слова из того устройства, куда была запись. Это заставит все промежуточные мосты завершить все застявшие в их буферах записи перед выполнением этого чтения.
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Jul 21 2017, 07:34
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 sonycman
Если ещё интересен ACP, гляньте XAPP1170 + cdma_acp_design.zip (AR#50826) - это для хилых, но принцип работы думаю будет понятен.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jul 21 2017, 13:32
Сообщение #9


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Kuzmi4 @ Jul 21 2017, 11:34) *
2 sonycman
Если ещё интересен ACP, гляньте XAPP1170 + cdma_acp_design.zip (AR#50826) - это для хилых, но принцип работы думаю будет понятен.

Спасибо, запустил уже обмен через ACP.
Когда данных не много, пусть лежат себе в кэше, даже запись в SDRAM может не потребоваться.

ЗЫ: не знаю, как у хилых, но у альтеры создание порта AXI не очень удобно - требуется, чтобы присутствовали практически все сигналы для всех каналов - и записи, и чтения.
Было бы лучше, если бы система QSys не заставляла описывать не используемые каналы.
Go to the top of the page
 
+Quote Post

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

 


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


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