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

 
 
 
Reply to this topicStart new topic
> 2 stm32 на одну шину fmc, арбитраж
point5217
сообщение Aug 25 2018, 10:40
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 57
Регистрация: 3-05-09
Из: Бишкек, Кыргызстан
Пользователь №: 48 590



Всем привет.
Есть 2 stm32f7 fmc подключенные через 245 формирователи на одну шину, 245 открываются только при обращении к этой шине (скажем в 1м банке), когда обращаются по очереди проблем вроде не должно быть, а если сразу в момент обращения одной полезет другая ?
Возникла идея для этого использовать wait, если лезет первая - wait на вторую, (соответственно и на её 245е) и наоборот, если полезут сразу одновременно обе - можно сделать приоритет по первой.
Как отнесется fmc к такому сигналу wait ?
сколько можно по времени держать wait ?
скорость шины не более 5-7 мГц планируется
Go to the top of the page
 
+Quote Post
AlanDrakes
сообщение Aug 25 2018, 12:32
Сообщение #2


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

Группа: Участник
Сообщений: 101
Регистрация: 2-05-15
Из: Россия, Омск
Пользователь №: 86 474



Судя по рабочим диаграммам в мануалах, сигнал WAIT принимается контроллером в расчёт уже ПОСЛЕ начала обращения к микросхеме памяти. Считается, что микросхема ВСЕГДА готова к обращению после завершения предыдущей операции.

По поводу же арбитража - лично я бы предложил использовать бит выбора чипа памяти в качестве сигнала арбитража шины.
К сожалению, ведомый контроллер сможет узнать о том, что шина недоступна только косвенно, например, дополнительно перечитав этот самый сигнал.
Никакого DMA в этом случае не будет и в помине. Обращение - только атомарное, с логикой контроля ошибки и отказа арбитража. Я бы предположил в этом случае использовать аппаратную логику типа триггера, указывающего, было ли обращение к микросхеме памяти от мастера во время обращения ведомого, или что-то похожее.

Либо попробовал поискать двухканальную память, умеющую работать на два устройства паралельно.
Go to the top of the page
 
+Quote Post
gerber
сообщение Aug 25 2018, 17:46
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088



Вам надо сделать арбитраж между 2-мя мастерами на FMC, например, по аналогии с PCI шиной, проложить 2 провода между процессорами - REQ# и GNT#, один процессор ведущий - у него GNT# выход, а REQ# вход, у второго - наоборот. Ведущий может лезть на FMC, только если у него GNT# выход неактивен, ведомый должен выставить REQ# и дождаться GNT# от ведущего, после чего лезть на FMC.


--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
Go to the top of the page
 
+Quote Post
point5217
сообщение Aug 26 2018, 01:58
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 57
Регистрация: 3-05-09
Из: Бишкек, Кыргызстан
Пользователь №: 48 590



Цитата(AlanDrakes @ Aug 25 2018, 18:32) *
Судя по рабочим диаграммам в мануалах, сигнал WAIT принимается контроллером в расчёт уже ПОСЛЕ начала обращения к микросхеме памяти. Считается, что микросхема ВСЕГДА готова к обращению после завершения предыдущей операции.

По диаграмам WAIT задерживает цикл шины, если он не анализируется в начале при выдаче адреса и управляющих - должно получится
Но сколько его можно держать активным ? в DS не нашел....

Цитата(AlanDrakes @ Aug 25 2018, 18:32) *
По поводу же арбитража - лично я бы предложил использовать бит выбора чипа памяти в качестве сигнала арбитража шины.
К сожалению, ведомый контроллер сможет узнать о том, что шина недоступна только косвенно, например, дополнительно перечитав этот самый сигнал.
Никакого DMA в этом случае не будет и в помине. Обращение - только атомарное, с логикой контроля ошибки и отказа арбитража. Я бы предположил в этом случае использовать аппаратную логику типа триггера, указывающего, было ли обращение к микросхеме памяти от мастера во время обращения ведомого, или что-то похожее.

Будет наверное использоваться сигнал выбора банка (например ncs1)
DMA как бы и не требуется, обьем данных не большой
Для чего логика отказа арбитража ? Если при обрашении шина занята другим - по wait ждем освобождения шины и получаем доступ, если конечно идея работы по wait будет работать

Цитата(AlanDrakes @ Aug 25 2018, 18:32) *
Либо попробовал поискать двухканальную память, умеющую работать на два устройства паралельно.

В основном там будет переферия типа hc573 и 16550
Про двух канальную память знаю.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 28th June 2025 - 13:05
Рейтинг@Mail.ru


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