Только один макрос В_SEL занимает 1% ПЗУ, а у меня 32 функции SEL, два преобразователя и R_TRIGER, всего 12%.
Вид для печати
Я извиняюсь, по-моему пользователь не должен этим заморачиваться, что у них откомпилировано, он должен понимать, чем проще придумает тем лучше(меньше ресурсов занимает), остальное проблемы Овена!
Иначе получается бег в мешке: побеждает не тот, кто быстрее бегает, а тот, кто быстрее бегает в мешке!
Даже если Овен подтвердит, что у них всё через одно место, через которое всё обычно в России делается и булевый мультиплексор занимает больше ресурсов чем целочисленный, от этого моё мировоззрение не может изменится и я не буду считать, что лучше применять целочисленный мультиплексор, там, где достаточно булевого. Вы сами не считаете, что это противоречит здравому смыслу?
Посмотрите вариант capzap'а:
Разумеется, понятнее и логичнее использовать int переменую и битовый сдвиг, а не велосипедить на 32 SEL'ах.
То, что 32 SEL'а занимают 12% памяти означает, что можно сделать линию задержки на 32*32==1024 бита и занимать она будет эти же самые 12-15% (+-)
С другой стороны, если бы в ОЛ были массивы, то составлять было бы проще.
Знаете что?
Бросаться словами все горазды.
Посмотрите на пример capzap'а. Тут вообще не нужны эти самые работы с отдельными битами. Нужно оперировать сразу пачкаими по 32 бита.
И, так получается, что именно это в ОЛ можно делать без особых извращений.
Да, с массивами было бы проще, но и так ничего. Поставили 2-4 блока и получили линию задержки на 32 бита. Какие ещё вопросы?
Первоначальный вопрос был в том, как сделать "из того что уже есть", а не "вот хорошо, если бы было", тогда было бы лучше.
Так что может помешать сдвигать биты внутри переменной, это даже очень прикольно!
Как-то так:
Вложение 28941
Задержка на 31 такт.
Мне потребовался тактовый вход, у Вашего не знаю есть он или нет, во всяком случае наружу не выведен, мне проще свой вариант сделать, чем разбираться с Вашим, может быть Ваш и проще, до сравнения ещё не дошёл ход, старался сделать максимально понятным логику работы для простых людей!
Всех благодарю за столь оперативную помощь и примеры, есть над чем поразбираться :)
Склоняюсь к мысли, что если есть возможность выбирать, то задачу реализации FIFO на 2000 бит, проще сделать на ПЛК используя массивы.
Что-то Вас бросает из крайности в крайность, не знаю как для ПР110, для ПР200 всё умещается со свистом:
Вложение 28952
Вложение 28954
В 110 никак.
Значит подойдёт немного другой вариант: вместо того, чтобы сдвигать эти самые биты, можно использовать эти SEL'ы как массив.
Т.е. сделать счётчик, который указывает на "номер бита куда записываем".
Номер бита будет от 0 до 1023.
Делим номер бита на 32 -- получаем "номер SEL'а, в котором хранятся данные"
Берём остаток от деления на 32 -- получаем номер бита в SEL'е
Запись точно так же, но используется номер бита на 1 меньше.
Иными словами, биты никуда не передвигаются между SEL'ами, а просто выбирается нужный бит.
Судя по тому, что показатель "ОЗУ" не зашкаливает, всё должно получиться.
Если строить такую цепочку по принципу "макрос на 32 бита" (1 SEL), "маркос на 64 бита" (2 первых макроса), "макрос на 128 бит" (2 вторых макроса) и т.п., то нужно всего несколько слоёв, чтобы сделать 1024-2048 бит.
Но это "для любителей".
Разумеется, эстеты используют нормальные массивы.
Это от недостатка опыта :)
Но в ПР110 не хватает стека, только 186 тактов. :(
Вложение 28955
Если ПР200 дорого, возьмите ПР200, так как ПР114 еще дороже :)
А как Ситников насоветовал, что-нибудь получилось???
Если решите на ПР200(114), вот немного оптимизировал, задержка на 2048 тактов:
Вложение 28962
На железе не проверял, делал методом научного втыка, глядя в симулятор!
Вы тоже расточительно составляете свои шедевры.Вложение 28965 Узнаёте?
А можно сделать вот так.Вложение 28966
Сможешь сделать такую мигалку? 4 канала эффектов чем больше тем лучше,и возможность управления тиристорами(обязательно) о цене договоримся!!!!
доброго времени суток.помогите нужен алгоритм управления тремя насосами
1.Пуск Работают три насоса поочередно по 10 сек,при нажатии нижний уровень останавливаются,или при нажатии стоп
2.При включении верхний уровень запускаются насос1 и насос2,насос 2,3, насос 3,1 поочередно парно (каждая пара по 10 секунд работает),отк нижний уровень или кнопка стоп ,горит лампа(возврат к первому режиму вкл верхний уровень)
3.пуск аварийный запускаются все три непрерывно,мигает сигнальная лампа,откл нижний уровень или стоп
Контроль не нужен,я пока не силен в этих программах.
я пробовал первый режим получается,третий а второй не хватает моих знаний.
посмотрел,но не то.а для развития пригодится
проги светофора почему то не открываются
Позволил себе немного доработать Ваш ФБВложение 30454