poinr5217 0 25 августа, 2018 Опубликовано 25 августа, 2018 · Жалоба Всем привет. Есть 2 stm32f7 fmc подключенные через 245 формирователи на одну шину, 245 открываются только при обращении к этой шине (скажем в 1м банке), когда обращаются по очереди проблем вроде не должно быть, а если сразу в момент обращения одной полезет другая ? Возникла идея для этого использовать wait, если лезет первая - wait на вторую, (соответственно и на её 245е) и наоборот, если полезут сразу одновременно обе - можно сделать приоритет по первой. Как отнесется fmc к такому сигналу wait ? сколько можно по времени держать wait ? скорость шины не более 5-7 мГц планируется Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlanDrakes 1 25 августа, 2018 Опубликовано 25 августа, 2018 · Жалоба Судя по рабочим диаграммам в мануалах, сигнал WAIT принимается контроллером в расчёт уже ПОСЛЕ начала обращения к микросхеме памяти. Считается, что микросхема ВСЕГДА готова к обращению после завершения предыдущей операции. По поводу же арбитража - лично я бы предложил использовать бит выбора чипа памяти в качестве сигнала арбитража шины. К сожалению, ведомый контроллер сможет узнать о том, что шина недоступна только косвенно, например, дополнительно перечитав этот самый сигнал. Никакого DMA в этом случае не будет и в помине. Обращение - только атомарное, с логикой контроля ошибки и отказа арбитража. Я бы предположил в этом случае использовать аппаратную логику типа триггера, указывающего, было ли обращение к микросхеме памяти от мастера во время обращения ведомого, или что-то похожее. Либо попробовал поискать двухканальную память, умеющую работать на два устройства паралельно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gerber 7 25 августа, 2018 Опубликовано 25 августа, 2018 · Жалоба Вам надо сделать арбитраж между 2-мя мастерами на FMC, например, по аналогии с PCI шиной, проложить 2 провода между процессорами - REQ# и GNT#, один процессор ведущий - у него GNT# выход, а REQ# вход, у второго - наоборот. Ведущий может лезть на FMC, только если у него GNT# выход неактивен, ведомый должен выставить REQ# и дождаться GNT# от ведущего, после чего лезть на FMC. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
poinr5217 0 26 августа, 2018 Опубликовано 26 августа, 2018 · Жалоба Судя по рабочим диаграммам в мануалах, сигнал WAIT принимается контроллером в расчёт уже ПОСЛЕ начала обращения к микросхеме памяти. Считается, что микросхема ВСЕГДА готова к обращению после завершения предыдущей операции. По диаграмам WAIT задерживает цикл шины, если он не анализируется в начале при выдаче адреса и управляющих - должно получится Но сколько его можно держать активным ? в DS не нашел.... По поводу же арбитража - лично я бы предложил использовать бит выбора чипа памяти в качестве сигнала арбитража шины. К сожалению, ведомый контроллер сможет узнать о том, что шина недоступна только косвенно, например, дополнительно перечитав этот самый сигнал. Никакого DMA в этом случае не будет и в помине. Обращение - только атомарное, с логикой контроля ошибки и отказа арбитража. Я бы предположил в этом случае использовать аппаратную логику типа триггера, указывающего, было ли обращение к микросхеме памяти от мастера во время обращения ведомого, или что-то похожее. Будет наверное использоваться сигнал выбора банка (например ncs1) DMA как бы и не требуется, обьем данных не большой Для чего логика отказа арбитража ? Если при обрашении шина занята другим - по wait ждем освобождения шины и получаем доступ, если конечно идея работы по wait будет работать Либо попробовал поискать двухканальную память, умеющую работать на два устройства паралельно. В основном там будет переферия типа hc573 и 16550 Про двух канальную память знаю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться