Jump to content

    

Начинаю изучать FPGA (verilog)

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

 

Вообще "ни о чём". Еще и половина места должна остаться (как минимум). 

Share this post


Link to post
Share on other sites
19 минут назад, iosifk сказал:

Что такое "32 PWM декодера" не знаю

Функция обратно PWM генератору. На входе с физики PWM  - на выходе ширина пульса в память.

Что-то с ходу не получается придумать алгоритм для обхода всех  один автоматом чтобы это было эффективнее чем просто N отдельных генераторов.

 

Допустим с генерацией PWM, все активные выходы (их маппинг) помещается в вектор (это скорее всего синтезируется в мультиплексоры). На каждом клоке нужно пройти по списку активных генераторов и погасить / зажечь нужные выходы в зависимости от текущего каунтера и заданной ширины пульса. Экономия может быть только на счетчиках в каждом генераторе, но это минимально.

С декодерами сложнее, сигнал на их входе не синхронный. Не представляю как реализовать замер ширины пульса для каждого в одном цикле, вырождается в отдельные декодеры как ни крути.

Да и в любом случае жрет место именно коммутация, к ней вопросы. Всё остальное - ничтожно мало.

Edited by HardRock

Share this post


Link to post
Share on other sites
4 минуты назад, HardRock сказал:

Что-то с ходу не получается придумать алгоритм для обхода всех  один автоматом чтобы это было эффективнее чем просто N отдельных генераторов.

В памяти делаете "стек задач" на 32 позиции. + указатель на задачу + АЛУ + флаги + выходные триггера...

Автомат, по адресу указателя за 1-2 такта перегружает в память предыдущую задачу и одновременно выгружает следующую... Или это разносится по времени. Потом пару тактов для работы АЛУ и взведение выходного триггера, если есть условие. Ну и так по кругу. При частоте внутри ПЛИС - 50-100 Мгц, вполне можно сделать по 5-10 тактов на канал и получить ШИМ на 5-10 Мгц. Ну и с "На входе с физики PWM  - на выходе ширина пульса в память" - вполне аналогично. Сделаете привязку к частоте ПЛИС и далее аналогично сказанному выше... 

Что касается "жрет место именно коммутация,"   то тут вопрос стоит вполне аналогично. Если требования на задержки по коммутации не наносекундные, то и коммутатор делается на двух блоках памяти - память данных и память косвенного адреса. Я так лет 20 назад делал коммутатор ИКМ тракта 8 потоков по 32 байта в каждом - в такие же 8 выходных потоков...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now