Джеймс 4 5 мая, 2020 Опубликовано 5 мая, 2020 · Жалоба 2 minutes ago, iosifk said: Что такое "32 PWM декодера" Подозреваю, что приемник блока радиоуправления : ) В зависимости от положения органов управления меняется ШИМ. - Автор определяет "наполнение" ШИМ и в результате получает число. 14 minutes ago, HardRock said: 1 SPI Slave, 32 PWM генератора, 32 PWM декодера, 4 UART RX / TX с фиксированным рейтом. Коммутация между всем кроме SPI, он отдельно. Циклон да, самый маленький - EP4CE6E Вообще "ни о чём". Еще и половина места должна остаться (как минимум). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardRock 0 5 мая, 2020 Опубликовано 5 мая, 2020 (изменено) · Жалоба 19 минут назад, iosifk сказал: Что такое "32 PWM декодера" не знаю Функция обратно PWM генератору. На входе с физики PWM - на выходе ширина пульса в память. Что-то с ходу не получается придумать алгоритм для обхода всех один автоматом чтобы это было эффективнее чем просто N отдельных генераторов. Допустим с генерацией PWM, все активные выходы (их маппинг) помещается в вектор (это скорее всего синтезируется в мультиплексоры). На каждом клоке нужно пройти по списку активных генераторов и погасить / зажечь нужные выходы в зависимости от текущего каунтера и заданной ширины пульса. Экономия может быть только на счетчиках в каждом генераторе, но это минимально. С декодерами сложнее, сигнал на их входе не синхронный. Не представляю как реализовать замер ширины пульса для каждого в одном цикле, вырождается в отдельные декодеры как ни крути. Да и в любом случае жрет место именно коммутация, к ней вопросы. Всё остальное - ничтожно мало. Изменено 5 мая, 2020 пользователем HardRock Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 5 мая, 2020 Опубликовано 5 мая, 2020 · Жалоба 4 минуты назад, HardRock сказал: Что-то с ходу не получается придумать алгоритм для обхода всех один автоматом чтобы это было эффективнее чем просто N отдельных генераторов. В памяти делаете "стек задач" на 32 позиции. + указатель на задачу + АЛУ + флаги + выходные триггера... Автомат, по адресу указателя за 1-2 такта перегружает в память предыдущую задачу и одновременно выгружает следующую... Или это разносится по времени. Потом пару тактов для работы АЛУ и взведение выходного триггера, если есть условие. Ну и так по кругу. При частоте внутри ПЛИС - 50-100 Мгц, вполне можно сделать по 5-10 тактов на канал и получить ШИМ на 5-10 Мгц. Ну и с "На входе с физики PWM - на выходе ширина пульса в память" - вполне аналогично. Сделаете привязку к частоте ПЛИС и далее аналогично сказанному выше... Что касается "жрет место именно коммутация," то тут вопрос стоит вполне аналогично. Если требования на задержки по коммутации не наносекундные, то и коммутатор делается на двух блоках памяти - память данных и память косвенного адреса. Я так лет 20 назад делал коммутатор ИКМ тракта 8 потоков по 32 байта в каждом - в такие же 8 выходных потоков... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться