andr писал(а):
Геннадий Тышов писал(а):
Смотрите:
На рис. 155б/1 действие Z30 выполняется после завершения действий Z20, Z21, Z22.
На рис. 155б/2 действие Z30 выполняется после завершения действий Z20, Z21, Z22, Z23.
Разница есть.
Так точно.
Цитата:
Предлагаю (по крайней мере себе) эти вопросы поставить точно.
1. Доказать аналитически (функционально) неэквивалентность схем Рис. 155б/1 и 155б/2.
2. Преобразовать исходную многополюсную схему 155б/1 в эквивалентную двухполюсную,
то есть последовательно-параллельную структуру
(и какая бяка при этом может получиться).
3. Кое-какие дополнительные вопросы.
Начну по порядку в отдельных последующих постах.
Начнем, помолясь.
------------------------------------------ 1
Принимается следующий исходный вариант многополюсной (внутри) блок-схемы,
то есть схемы не последовательно-параллельного (не базового) структурного типа:
Узлы коммутации потоков - узлы вилки и сборки потоков (вытянутые в линию)
не обязательно отображать двойными поперечными линиями.
То есть их можно отображать одинарными линиями (далее будет понятно почему).
Но так (двойными) нагляднее, читабельнее и соответствует стандарту
ГОСТ 19.701-90 = ISO 5807-85.
Может быть, есть версия стандарта поновее?
Поперечные линии узлов коммутации выступают за продольные линии связей
(в данном случае - на пол корпуса блоков).
Можно их подводить впритык.
Но так тоже нагляднее и читабельнее.
Но хозяин-барин - у каждого может быть свое мнение.
------------------------------------------- 2
Далее явно вводятся блоки узлов коммутации потоков:
# - блоки узлов вилки и o (o = &) - блоки узлов сборки.
Для исключения изломов выходных или входных цепей узлов коммутации
(для спрямления линий):
-- либо узлы коммутации можно вытягивать (пунктир),
-- либо продлевать одну или обе, если надо, поперечные стороны блоков - это обычный прием в схемотехнике.
Поперечные линии продленки сторон блоков могут быть одинарные.
Блоки дивергенции (вилки) потоков в программной реализации
содержат коды в основном потоке, порождающие параллельные потоки.
В аппаратной реализации - это могут быть простые монтажные узлы разветвления цепей
(с подсоединением, например, пайкой или через клеммы).
Но в общем случае для обеспечения нагрузочной способности схемы они должны содержать
усилители мощности.
В логическом смысле - это множественные (разветвленные) логические повторители.
Блоки конвергенции (сборки) в программной и аппаратной реализации
представляют потенциальные или импульсные логические функции:
По умолчанию имеется в виду конъюнкция.
Это традиционное применение параллельных структур:
в данном случае параллельная конъюнкция потоков.
Может быть параллельная дизъюнкция - начинает осваиваться,
но это очень проблемный вопрос.
В принципе могут быть другие функции.
--------------------------------- 3
Далее приводится схема потенциальной аппаратной модели данного алгоритма:
Блоки рабочих операторов алгоритмов Ai и их команд Zi, заменяются
элементами задержки D(mzi) с величиной задержки mai, mzi и связями:
входы xai, xzi и выходы yai, yzi.
В данном случае проставлены входы и выходы первой половины схемы.
=======================
В учебном процессе я применяю такие схемы для моделирования циклов работы схем:
для построения временных диаграмм.
Используются разные способы программной реализации аппаратных моделей алгоритмов
в разных языках программирования и в разных средах моделирования:
строятся временные диаграммы - с графическими и литерными линиями (например, ********).
Такие модели в принципе годятся и для разных доказательств.
------------------------------
Многополюсные схемы - это обычно довольно замысловатые головоломки,
что затрудняет их читабельность и понимание их работы, и чревато ошибками.
Необходимо иметь возможность строго анализа и доказательства
различных зависимостей и разных их соотношений.
В частности, в данном случае:
1) Сигналы на входах блоков Z20..Z23 второго ряда после вилки #1:
xz20 = xz21 = xz22 = xz23 = Ryz10 = yz10
равны между собой и появляются одновременно,
где R - репитер, логический повторитель (оператор повторения) с функциональным отношением:
Ryz10 = R(yz10) = yz10.
Блоки Z20..Z23 запускаются одновременно (после окончания работы блока Z10),
и завершают свою работу в общем случае в разное время.
Их выходные сигналы y20..y23 появляются в общем случае не одновременно.
Необходимо :
-- определить зависимость входных сигналов блоков Z30..Z33 от указанных выходов блоков предыдущего ряда;
-- получить соответствующие им частные алгоритмические цепи (фрагменты).
2) Сигналы на выходах вилки #2:
yr20 = yr21 = yr22 = yr23 = Ryz20 = yz20
равны между собой (и появляются одновременно).
3) Сигнал на входе оператора Z30:
xz30 = yz20 & yz21 & yr20 = yz20 & yz21 & yz22.
Откуда (в конечном счете) получается частный фрагмент алгоритма:
Az30 = Z10-(Z20 || Z21 || Z22) - Z30 = Z10-(Z20 #& Z21 #& Z22)-Z30 =
= Z10-#(Z20, Z21, Z22)&-Z30
4) Сигнал на входе оператора Z31:
xz31 = yr21 = yz22
Откуда (в конечном счете) получается частный фрагмент алгоритма:
Az31 = Z10-Z22
5) Сигнал на входе оператора Z32 - аналогично:
Az32 = Z10-Z22
6) Сигнал на входе оператора Z33:
xz33 = yr22 & yz23 = yz22 & yz23
Откуда (в конечном счете) получается частный фрагмент алгоритма:
Az33 = Z10-(Z22 || Z23) = Z10-(Z22 #&| Z23) = Z10-#(Z22, Z23)&
------------------------
Здесь уже есть много информации для размышления.
В частности, строго аналитически подтверждается:
andr писал(а):
Геннадий Тышов писал(а):
Смотрите:
На рис. 155б/1 действие Z30 выполняется после завершения действий Z20, Z21, Z22.
На рис. 155б/2 действие Z30 выполняется после завершения действий Z20, Z21, Z22, Z23.
Разница есть.
---------------------
Далее можно:
-- продолжать анализ до конца схемы;
-- построить эквивалентную последовательно-параллельную структуру
(но там будет некоторая специфика).