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

 
 
> Ожидание события процессорм, На ПЛИС надо сделать ядро с командой ожидания события
Golikov A.
сообщение May 24 2015, 16:27
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Всем привет!
Нужно интеллектуальное усилениеsm.gif... возможно будет длинно, но не знаю как изложить короче... простите

Есть 2 исполнительных модуля, которые принимают, входные воздействия с определенной временной дискретностью 1 мкСек. Для этого на них заведен синхросигнал и все заданные до сигнала данные по фронту в обоих устройствах защелкиваются.

Есть идея ядра процессора, работающего на частоте 100 МГц, управляющего модулями. Устройства висят на его шине как периферия. Процессор без конвейера, работает так
1 такт проверка флага прерывания
1 такт выбор команды (в случае прерывания подмена на переход в обработчик)
4-12 тактов обращение в периферию или регистры (чтение операнда 1)
4-12 тактов обращение в периферию или регистры (чтение операнда 2)
2 такта декодирвание и выполнение команды
4-12 тактов обращение в перефирию или регистры (запись результата)
1 такт перестановка счетчика команд

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

То есть нужна какая то команда ожидания фронта синхросигнала, чтобы процессор ничего не делал до фронта, и как его увидит шел дальше. Это позволит гарантированно синхронизировать задачу параметров. И вот тут вопрос как реализовать эту команду?

Если эту команду сделать как и прочие, то она может быть очень долгой и ничего из нее хорошего не выйдет, фронт может случиться в начале команды, аузнаем о нем через 40 тактов, и оставшихся 60 может не хватить на задачу 2 модулей.

Если ее сделать какой-то особенной, то не понятно что делать с прерывания. Если их обрабатывать параллельно, то они могут "разрезать" выполнение команды, наверное это не очень хорошо, потому обрабатываю их перед каждой командой, но особеная команда будет немного рушить повторяемость.

Опять же выделение особенной команды требует перенести такт декодирования команды выше чтения 2 операндов, и получается что команды становятся все разные, а это усложнит ядро процессора и сожрет все ЛУТы, сейчас же все команды отрабатываются одинаково.

В общем прошу поделиться своими мыслями, по этому вопросы. Как бы сделали вы. И так далее... мне кажется что настало время просто с кем-то поговорить, потому что все решения что я придумал мне не нравятся, не изящные они какие-то

П.С. Задачу 2 устройствам данных за 1 команду не канает, обновление обоих нужно, но редко, и раздувать размер команды ради этого нельзя. Но точное понимание в каком такте задаются входные воздействия строго необходимы, потому даже это не решает проблемы.





Go to the top of the page
 
+Quote Post



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

 


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


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