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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...