Перейти к содержанию
    

В системе есть память, которая тактируется от отдельного генератора. MicroBlaze и вся остальная система тактируется от другого генератора.

MicroBlaze через блок AXI Interconnect имеет доступ к данной памяти. Учитывает ли блок AXI Interconnect, что в системе два источника тактирования?

 

PS

Судя по тому, что память не читается, так делать нельзя?

post-63539-1439290385_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В системе есть память, которая тактируется от отдельного генератора. MicroBlaze и вся остальная система тактируется от другого генератора.

MicroBlaze через блок AXI Interconnect имеет доступ к данной памяти. Учитывает ли блок AXI Interconnect, что в системе два источника тактирования?

 

PS

Судя по тому, что память не читается, так делать нельзя?

Я что то не понял.

Почему ( зачем ) используется ДВА "процессор систем ресет" ???

и до кучи две тактовых clock и mem_clk ???

ps "в теории" axi-шина допускает использование различных тактовых на своих шинах. однако я не помню (надо читать) какие они должны быть (тактовые) кратные ? или совсем асихнхронные ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я что то не понял.

Почему ( зачем ) используется ДВА "процессор систем ресет" ???

и до кучи две тактовых clock и mem_clk ???

В проекте используется PCIe мост, который работает от одного источника тактирования, а вся остальная периферия (Timer, GPIO, ...) от другого. Через AXI Interconnect мост имеет доступ к регистрам GPIO, Timer и всё нормально работает. MicroBlaze имеет общий источник тактирования со всей периферией и прекрасно с ней работает. Начал добавлять в систему CDMA и задумался, правильно ли что на AXI мастер и слейв находятся в разных клоковых доменах?

 

ps "в теории" axi-шина допускает использование различных тактовых на своих шинах. однако я не помню (надо читать) какие они должны быть (тактовые) кратные ? или совсем асихнхронные ?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В системе есть память, которая тактируется от отдельного генератора. MicroBlaze и вся остальная система тактируется от другого генератора.

MicroBlaze через блок AXI Interconnect имеет доступ к данной памяти. Учитывает ли блок AXI Interconnect, что в системе два источника тактирования?

PS

Судя по тому, что память не читается, так делать нельзя?

 

Вообще-то работать должно и интерконнект должен все учитывать. В плане исследования можно открыть "плюсиком" сам блок интерконнекта и его составляющие и посмотреть где он вставил клок конвертеры, а где еще чего (Это я в соседней теме негодовал, что вивадо ругается на xdc этих самых конвертеров).

post-4756-1439363524_thumb.jpg

Потом, можно посмотреть на Synthesis - Report Clock Interaction.

За последние дни я уже успел столкнуться с ситуацией, когда одно из периферийных устройств подвешивало, при обращении к нему, Микроблейз. Пересобрал проект заново - все работает. Возможно где-то что-то изменил по мелочи, а может эффект сборки с чистого листа. (Чистить директории по Вашему совету пока не пробовал). Система у меня аналогичная: PCIe (ядро 2.6), DMA (будет), Ethernet.

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

 

Еще обратите внимание, что в интерконнекте в настройках можно FIFO добавлять для отдельных портов, что может быть полезным при различных частотах Master/Slave.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вообще-то работать должно и интерконнект должен все учитывать. В плане исследования можно открыть "плюсиком" сам блок интерконнекта и его составляющие и посмотреть где он вставил клок конвертеры, а где еще чего (Это я в соседней теме негодовал, что вивадо ругается на xdc этих самых конвертеров).

Да, спасибо, клок конверторы ставит. Похоже, это опять был какой-то фокус Vivado + SDK. Удалил всё из папки .sdk, пересобрал и экспортировал новое железо - работает, память читает.

 

Потом, можно посмотреть на Synthesis - Report Clock Interaction.

За последние дни я уже успел столкнуться с ситуацией, когда одно из периферийных устройств подвешивало, при обращении к нему, Микроблейз. Пересобрал проект заново - все работает. Возможно где-то что-то изменил по мелочи, а может эффект сборки с чистого листа. (Чистить директории по Вашему совету пока не пробовал). Система у меня аналогичная: PCIe (ядро 2.6), DMA (будет), Ethernet.

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

Вот у меня ситуация с подвисанием MicroBlaze получалась при обращении к памяти для системы приведённой на рисунке выше. Её собрал для проверки (на чём-то простом), как будет работать при наличии разных источников тактирования в системе.

 

Еще обратите внимание, что в интерконнекте в настройках можно FIFO добавлять для отдельных портов, что может быть полезным при различных частотах Master/Slave.

Спасибо, учту такую возможность.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть передатчик AXI-Stream трафика, работает на частоте X MHz. Хотел даннае от него запихнуть в FIFO, а из FIFO их забирать при помощи CDMA на частоте Y MHz. Посмотрел все варианты FIFO в IP Catalog, но нужного мне не нашёл. У всех один порт - slave (вход данных), второй - master (выход данных).

Нужен совет, что использовать в данной ситуации? Как вообще FIFO повесить на AXI Interconnect?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть передатчик AXI-Stream трафика, работает на частоте X MHz. Хотел даннае от него запихнуть в FIFO, а из FIFO их забирать при помощи CDMA на частоте Y MHz. Посмотрел все варианты FIFO в IP Catalog, но нужного мне не нашёл. У всех один порт - slave (вход данных), второй - master (выход данных).

Нужен совет, что использовать в данной ситуации? Как вообще FIFO повесить на AXI Interconnect?

 

AXI DMA (не путать с CDMA и VDMA) имеет два канала AXI Stream (туда-обратно) и соответствующие каналы MM в память. Либо есть AXI4-Stream FIFO, тоже должно вам подойти.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

AXI DMA (не путать с CDMA и VDMA) имеет два канала AXI Stream (туда-обратно) и соответствующие каналы MM в память. Либо есть AXI4-Stream FIFO, тоже должно вам подойти.

Нашёл эти ядра, спасибо, что-то сразу не разобрался с их настройками. В системе уже есть ядро CDMA, получится ли с его помощью забирать данные из FIFO (AXI4-Stream FIFO v4.1)? Смотрю доку (pg080) там какая-то хитрая последовательность для чтения, или тут просто перед запуском CDMA читаем нужные регистры FIFO, а потом DMA выгребает данные?

Возможно, лучше разобраться и использовать для этой задачи (сообщение #36) DMA?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...