В. И. Лобанов, к. т. н. РУССКАЯ ВЕРОЯТНОСТНАЯ ЛОГИКА И БУКВАРЬ ЦИФРОВИКА-ЭЛЕКТРОНЩИКА Москва 2008 2 Посвящается Русским инженерам и учёным, интеллектуальной элите России. Аннотация Данное пособие является общедоступным изложением основ Русской, истинно математической логики и инженерных методов разработки цифровых устройств (ИМРЦУ), без освоения которых разработчик-цифровик не имеет права на звание инженера.. Вскрывая противостояние Русской и классической логики, автор показывает, что силлогистика Аристотеля не имеет никакого отношения к логике здравого смысла. Все существующие учебники логики невежественны, безграмотны и бестолковы. В связи с поголовным внедрением «болонкиного» образования и вымыванием математических дисциплин из программ обучения назрела насущная необходимость изложения ИМРЦУ на языке четвероклассника. Предлагаемое издание реализует поставленные задачи: книга полезна школьникам и академикам, инженерам и учёным, «физикам» и «лирикам». Москва 2008 г. . УДК 621.3.049.77:681.518.3 УДК 681.32.001.2 УДК 161:162 ББК 87.4 Л.. 2 3 ПРЕДИСЛОВИЕ Уважаемый Читатель, книге, которую Вы держите в руках нет цены: всё, что за последние 120 лет вышло в свет по гуманитарной и математической логике – макулатура (за редчайшим исключением). Ценность предлагаемого Вам пособия определяется тем, что оно создано на основе работ величайшего в мире русского логика Платона Сергеевича Порецкого, впервые в истории построившего математическую силлогистику, о которой мечтал и над которой всю жизнь безуспешно работал великий математик Лейбниц. Основополагающий труд русского учёного вышел в 1884г [34], но до сих пор не освоен русскими логиками и математиками. О зарубежной науке говорить не приходится: она не разобралась даже в скромных результатах своего талантливого сказочника и логика Л.Кэрролла, который повторил некоторые выводы Порецкого спустя 12 лет. Академический автор Галинская И.Л. в своей работе [7,с.1] утверждает, что «Символическая логика» впервые была издана в Англии в 1896г. Именно в этой работе Кэрролл повторил формулы Порецкого для общеутвердительных и общеотрицательных кванторов силлогистики. Дорогой Читатель, знаете ли Вы математическую логику? Я абсолютно уверен, что не знаете. В этом Вы сразу же убедитесь, пройдя тестирование по нижеприведённому вопроснику. Вопросник для математика и логика. Как работать с картой Карно на 8 и более переменных? Что такое метод обобщённых кодов Мавренкова? Что можно вычислить с помощью кванторного исчисления? Алгебра множеств и алгебра логики. Назовите различия. Логика предикатов и логика суждений. В чём разница? Физический смысл и вывод формулы импликации. Фигуры и модусы Аристотеля. В чём их практическая ценность? Правильны ли правила посылок в силлогистике? Как выглядят аналитические представления для Axy, Exy и Ixy? В чём смысл логики Платона Сергеевича Порецкого? В чём главное достижение логики Льюиса Кэрролла? Что такое вероятностная логика? Что такое 4-значная комплементарная логика? Как решаются логические уравнения? Что такое логическое вычитание и деление? Как найти обратную логическую функцию? По характеру ответов можно судить о профессиональном уровне логикагуманитария и тем более математика. В 2008г. с этими вопросами не могли справиться ни академики от логики, ни математики, ни инженеры-цифровики, что говорит не только о недостаточной профессиональной подготовке, но и о низком культурном уровне. Освоив Русскую логику, любой семиклассник легко пройдёт предложенное автором тестирование. В 1938 г. русский физик В. И. Шестаков впервые в мире (за два года до Клода Шеннона) доказал возможность описания и преобразования релейноконтактных схем методами алгебры логики. C этого момента зарождается практическая логика. Поскольку практическая логика решала чисто инженерные за1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 3 4 дачи, то вполне естественно назвать эту логику инженерной. Эта наука профессионально решает такие проблемы, как графический и аналитический синтез комбинационных схем (многоаргументные методы минимизации логических функций), синтез микропрограммных автоматов (МПА) на базе интегральных, ламповых и релейных схем. К проблемам инженерной логики относится также создание искусственного интеллекта, фундаментом которого является силлогистика. Но классическая силлогистика совершенно беспомощна в решении поставленных перед нею задач. В конце 1980-х — начале 1990-х годов руководимый мною отд.450 ЦНИИ «Циклон»(головной институт Минэлектронпрома СССР) имел тесные контакты с проблемной лабораторией ЭВМ МГУ, возглавляемой талантливым русским инженером и учёным Н.П.Брусенцовым. Именно ему и его сподвижникам удалось создать и запустить в производство троичную ЭВМ "Сетунь" и "Сетунь-70", чего до сих пор не смогла сделать ни одна держава в мире несмотря на все их титанические усилия. Это именно он и его ученики разработали Диалоговую систему структурированного программирования (ДССП) и Русский адаптивный язык РАЯ (по определению Ершова), являющиеся непревзойдёнными до сих пор эталонами дисциплины и языков программирования. На чествовании юбилея Н.П.Брусенцова 2.03.95г. я получил в подарок от юбиляра его только что изданную книгу «Начала информатики», которая и открыла передо мной проблемы классической логики. Поэтому я имею честь считать себя учеником Николая Петровича Брусенцова. Некоторые проблемы логики показались мне надуманными, превращёнными «из мухи в слона». Захотелось найти простое, прозрачное математическое решение высосанных из пальца проблем. Алгоритм решения логических уравнений удалось найти за 5 минут в присутствии Учителя. Смешно, принимаясь за эту проблему, я даже не знал, что такое «решить логическое уравнение». Но был абсолютно уверен, что справлюсь с этой задачкой за 5 минут: за плечами был 20-летний опыт «железных» оборонных разработок на основе инженерной логики. В течение месяца построена Русская логика, в которой была решена проблема силлогистики. Силлогистика – это раздел логики, занимающийся силлогизмами. А силлогизм – это умозаключение, состоящее из двух посылок, связанных общим термином, и следующего из них заключения. Пример такого силлогизма: Все люди талантливы. Все ученики – люди. Все ученики талантливы. В этом силлогизме заключение выводится просто. Но подавляющее большинство силлогизмов, встречающихся в быту, в любой из наук, «физической» или «лирической», не имеют такого прозрачного решения. А потому и не решаются современной мировой логикой. В 1997г. я уже излагал Русскую логику студентам и школьникам. Поскольку все алгоритмы чрезвычайно просты, то учащиеся осваивали новую логику (логику нового тысячелетия) довольно успешно. В Русской логике решены проблемы Аристотеля и Лейбница, их мечты реализованы в России. С 1998г Русская логика прошла проверку на различных конференциях, конгрессах, в том числе и международных, симпозиумах и семинарах. Самой серьёзной проверкой автор считал и считает проверку на лекциях и уроках студентами и школьниками: это самые дотошные и любознательные критики в отличие от официозных «учёных». Лекции и занятия автор проводил только по совместительству, в свободное от основной работы на оборонных 4 5 предприятиях время: 1) без работы по основной профессии теряешь квалификацию во всех сопредельных областях, 2) штатному преподавателю внедрять новую науку весьма сложно(могут «перекрыть кислород»). Положительными отзывами заполнен Интернет: я получал письма со всех концов бывшего Союза. Мои лекции по Русской логике были записаны в декабре 2007г на телестудии Современной Гуманитарной Академии(Москва) и в 2008 году транслировались на весь бывший Советский Союз по каналу СГУ ТВ спутникового телевидения. Основные работы автора переведены в США. Очень не хотелось бы, чтобы Русская логика вернулась к нам в зарубежной упаковке. Основания для таких опасений более чем весомые. Ни для кого не секрет, что среди западных учёных очень много невежественных жуликов и мошенников. Начнём с Эйнштейна, которого выгнали из гимназии за бестолковость, от невежества которого в институте стонали профессора математики и который обокрал не только французского физика Пуанкаре и голландского физика Лоренца, но и свою жену-славянку. Такое же интеллектуальное воровство, плагиат, допустил Винер - «отец кибернетики» по отношению к русскому учёному Колмогорову. Кстати, на встрече со студентами МГУ Винер в присутствии Колмогорова признал приоритет советской науки. Лампа русского физика Лодыгина стала называться лампой Эдисона, теорема советского учёного Котельникова теперь упоминается только как закон Найквиста, радио русского исследователя Попова превратилось в радио Маркони, «отцом информатики» вместо русского физика В.И.Шестакова называют Клода Шеннона. Примеры жуликоватости, безграмотности, невежества и бестолковости западных «учёных» можно множить до бесконечности (см. , например, моё математическое доказательство бестолковости и невежества нобелевского лауреата Б.Рассела). До сих пор никто из официальной профессуры не понял гениальных работ выдающегося русского учёного Порецкого П.С. Именно он предвосхитил создание истинно математической силлогистики. Позже к аналогичным результатам в силлогистике пришёл Л. Кэрролл: он получил такие же математические выражения для кванторов "Все х суть y" и "Ни один х не есть y". Хотя уровень достижений Л.Кэрролла значительно ниже уровня результатов П.С.Порецкого, но даже относительно простых работ английского математика и сказочника никто не понял ни в России, ни за рубежом. Пусть Порецкий и Кэрролл не сумели решить всех проблем Аристотеля и Лейбница, но они заложили прочный аналитический фундамент, который так и не был в течение 120 лет востребован классической логикой из-за невежества "так называемых логиков". Я думаю, что саркастическое отношение Л. Кэрролла к "логикам" можно смело перенести на наших современников, которые до сих пор не сумели разобраться в достижениях своих великих предшественников. В море макулатуры, издаваемой сегодня по логике, лишь работы Брусенцова Н.П., Катречко С. Л., Кузичева А.С. и Светлова В.А. заслуживают внимания. Все современные учебники логики невежественны, безграмотны и бестолковы. До сих пор никто из официальных логиков не принял мой вызов, не защитил честь официозной науки. Преподавание логики (основных её разделов) ведётся невежественно, как и 25 веков тому назад. Можно констатировать тот факт, что официальная наука встала железобетонной стеной на пути Русской логики. Подавляющее большинство (вполне возможно, что даже все без исключения) официальных учёных не приемлет Русскую логику. Истина определяется не большинством голосов, но эти голоса обрекают отечественную логику на плачевное дремотное состояние, а студентов и школьников на унылую и бес- 5 6 толковую зубрёжку. За 10 последних лет автору не известно ни одного случая внедрения Русской логики в образование другими педагогами. Но и критики не существует: никто не рискует защитить честь математического мундира. Буду признателен за любые критические замечания по существу Русской логики. Почему-то студенты и школьники на моих лекциях и уроках легко осваивали Русскую логику, а вот академики с нею никак не могут справиться. Наверное, мне попадались глупые академики, поэтому ищу умных. В гуманитарной и тем более математической логике за последние 120 лет я умных академиков не заметил. Кстати, даже такие «корифеи» в логике, как акад. Колмогоров А.Н., проф. Садовничий (ректор МГУ), проф. Зиновьев А.А., всякие расселы, заде, гёдели и чёрчи ни черта не поняли ни в работах гениального логика Порецкого П.С., ни в результатах, полученных Л.Кэрроллом. Если уж ты не способен создать что-либо стоящее в науке, то разберись вначале хотя бы с достижениями своих предшественников в данной области. Кстати, убедившись в бестолковости вышеназванных «логиков», невольно задаёшься вопросом, а стоит ли изучать их работы. Никакое образование немыслимо без изучения логики. Этот предмет в качестве основного впервые ввёл в гимназиях и Академии великий русский учёный М.В. Ломоносов. С тех пор логику в обязательном порядке изучали в гимназиях России и по указанию Сталина в 1946 – 1957 гг.(после смерти Сталина с 1953г. по 1957г. – по «инерции») в школах СССР. В связи с этим поразительна безграмотность современных матлогиков: «изобретено» кванторное исчисление, которое ровным счётом ничего не исчисляет, т.к. является просто мнемоникой (один идиот от математики придумал, а миллионы попугаев повторяют); «придумана» алгебра множеств, с задачами которой прекрасно справляется алгебра логики (бестолковость математиков); единая математическая логика расчленена на логику суждений и логику предикатов с бесполезными субъектами, предикатами, фигурами и модусами, с некорректными правилами посылок и прочей наукообразной зубрёжной чепухой (бестолковость и неграмотность); доктора физматнаук и даже инженеры-цифровики не знают математической логики и бравируют своим невежеством (невежество и безграмотность); ни один логик не сумеет аналитически доказать и объяснить, почему (x y) = x’+y – здесь и далее апостроф означает отрицание (неграмотность и бестолковость); ни один математик не умеет аналитически представить общеутвердительный, общеотрицательный и частноутвердительный функторы (невежество); более 120 лет математики и логики не могут освоить результатов П.С. Порецкого и Л. Кэрролла (невежество и бестолковость); ни один академик не умеет решать задачи силлогистики; математики не умеют мыслить (см. сайты с моими публикациями). Логика дисциплинирует мышление. Ещё Гераклит говорил, что учить нужно многомыслию, а не многознанию. Не путайте Божий дар с яичницей: телевизионные «знатоки» - это не мыслители, они зарабатывают деньги не «своим собственным умом», а совсем другим местом. Все «интеллектуальные иг6 7 ры» на телевидении – это проверка на зубрёжную эрудицию «мартышек с арифмометром». Если немного подумать, то к этому же разряду можно отнести шахматистов, программистов и микропрограммистов(схемотехниковцифровиков, использующих языки AHDL, VHDL и т.п.). ЭВМ уже обыгрывает чемпионов мира по шахматам. Значит, шахматист – это просто калькулятор, а программист – толмач, переводчик с одного языка на другой. Но переводчик Пастернак далеко не поэт Пушкин. Эвристика, мышление – прерогатива человека, а ЭВМ пока ещё не умеет мыслить, да и вряд ли научится. Автор – программист и цифровой схемотехник с 35-летним стажем, но уже более 30 лет считает, что уметь программировать необходимо, но лучше всегда эту работу поручать кому-либо другому. То же самое можно сказать и о микропрограммировании, т.е. схемотехническом проектировании цифровых устройств. К сожалению, этими дисциплинами приходится заниматься всё больше и больше. Творчество доступно и грузчику, и таксисту, но о серьёзном творчестве и серьёзном мышлении может идти речь лишь в фундаментальных науках, базирующихся на математике. Над проблемой формализации мышления ВСЁ ЧЕЛОВЕЧЕСТВО (и «физики», и «лирики») трудилось 25 веков. И тем не менее классическая логика, которую изучают во всём мире, вопиюще безграмотна и дремуче невежественна. С задачей формализации, чётко поставленной Лейбницем, справляется только Русская логика. Если вы устали от зубрёжки силлогистики Аристотеля, хотите чуточку поумнеть и превзойти в логике П.С. Порецкого, Л. Кэрролла, Дж. Буля и Лейбница, если вас интересует истинно математическая, понятная школьнику логика здравого смысла, то осваивайте эту науку по следующим источникам: 1. Сайты в Internet: http://ruslogic.narod.ru , http://naztech.org/lobanov , http://matema.narod.ru/newpage113.htm, http://www.mirit.narod.ru/zerkalo.htm , http://ito.edu.ru/, http://www.trinitas.ru, http://lord-n.narod.ru/walla.html/Книги и софт с Walla.com и др. 2. Лобанов В.И. Азбука разработчика цифровых устройств. – М.: Горячая линия – Телеком, 2001 – 192с. 3. Лобанов В.И. Русская логика против классической (азбука математический логики). – М.: Компания Спутник+, 2002 – 126с. 4. Лобанов В.И. Решебник по Русской логике. – М.: Компания Спутник+, 2002 – 133с. 5. Лобанов В.И. Русская логика – это очень просто! – М.: Русская Правда, 2006 – 32с. 6. Лобанов В.И. Русская вероятностная логика для школьников и умных академиков). – М.: 2008 – 33 с. 7. Лобанов В.И. Русская вероятностная логика. – М.: Русская Правда, 2009 – 320с. 8. Лобанов В.И. Русская логика для «физиков» и «лириков». – М.: Спутник+, 2005 – 427с. В этом перечне только первый сайт является авторским, все остальные созданы профессионалами-единомышленниками, оценившими значение Русской логики и ИМРЦУ для отечественной инженерии и разместившими математическую логику России и ИМРЦУ на своих страницах. Я чрезвычайно признателен за это патриотам русской науки. Почти все мои книги и многие статьи выложены в открытом доступе на указанных сайтах. Последняя книга в этом перечне написана в основном для инженеров. Их безграмотность в инженерных 7 8 методах разработки, контроля и диагностики цифровых устройств, а также в программировании и микропрограммировании удручает. Не говоря уже о логической безграмотности. А ведь именно русским инженерам придётся решать проблемы искусственного интеллекта(ИИ), стратегического научного направления 21 века. Фундаментом же ИИ является Русская логика, а не классическая болтологика, которую изучают во всём мире. Автор до сих пор занимается разработками электронных цифровых устройств оборонного назначения. Накопленный опыт позволяет утверждать, что формальные и инженерные методы проектирования цифровых устройств легко осваиваются семиклассниками. Поэтому выпускники средних школ, освоившие «Русскую логику» и «Азбуку разработчика цифровых устройств»[29, 26] могут сразу приступить к работе на инженерных должностях. Это чрезвычайно актуально в связи с переходом на «болонкино образование»(Болонская конвенция), гуманитаризацией и вымыванием математики из программы обучения. Но так называемые «гуманитарные науки» в большинстве своём представляют собой «не замутнённый интеллектом поток сознания с очень специфическим подходом» (Андрей Борцов. «Дебилизаторы подрастающего поколения»//«Знание – власть!», №41(310), ноябрь,2006). Дело в том, что любой гуманитарий безоговорочно верит в авторитеты, а значит, перестаёт мыслить. Математик постоянно думает, анализирует. Для него только истина является авторитетом. России нужны не болтуны и спекулянты, не жулики и ростовщики, не «смехачи» и поп-звёзды, не «эффективные менеджеры» и толпы бухгалтеров, а инженеры и учёные. Тот разгром нашей оборонной промышленности, науки, культуры и образования, который учинила «пятая колонна», является государственным преступлением и требует государственного вмешательства и огромных усилий всего общества (в первую очередь технических профессионалов старшего поколения, поскольку молодых нет и не предвидится в ближайшем будущем) по ликвидации катастрофических последствий. Хочу заранее вызвать у читателей агрессивный настрой. Не верьте ни единому слову Русской логики, проверяйте, возражайте. Тем более, что мой учитель в науке о мышлении Николай Петрович Брусенцов категорически не согласен с Русской логикой. Вашего интеллекта и образования более чем достаточно, чтобы разоблачить автора. У меня семиклассники решали такие задачи по логике, с которыми не справится ни один инженер, ни один профессор, и уж тем более академик. Кроме того, помните, что все вы по определению безграмотны: не знаешь логики – невежда по критериям Русской гимназии и Древней Греции. Дополнительно примите к сведению, что с точки зрения «логиковпрофессионалов», автор Русской логики – дилетант, поскольку я действительно не изучал в институте логику Аристотеля. Пришлось изучить, чтобы уничтожить болтологику. Но стоит ли тратить время на то, что ещё 400 лет назад было разгромлено Френсисом Бэконом, что вызывало возмущение советского логика Васильева Н.А., что опроверг 120 лет назад величайший Русский логик Платон Сергеевич Порецкий и немного позже даже английский математик и сказочник Льюис Кэрролл. Поскольку до сих пор, вот уже более 30, лет я разрабатываю цифровые системы управления, в основном оборонного назначения, где всё построено на иженерной, т.е. строгой математической, логике, то у меня есть все основания считать всех логиков мира (и математиков, в первую очередь) за последние 120 лет дилетантами, невеждами, неучами, да ещё и бестолочью. К сожалению, Математический институт им.Стеклова, утратил 8 9 лидерство в матлогике, превратившись в приют для «общечеловеков». Такое утверждение звучит невежливо, но, во-первых, за 10 лет, прошедших с выхода в свет Русской логики, я исчерпал все дипломатические выражения и называю вещи своими именами. Во-вторых, «вежливость – любимая добродетель убогих…последнее прибежище бестолочей» (Диана Сеттерфилд «Тринадцатая сказка»). Автору неоднократно «советовали» назвать вновь открытую науку «Логикой Лобанова», в частности секретарь Комитета по обороне Госдумы РФ Симкин Владимир Соломонович считал(13.11.2003), что логику с таким русским названием никто изучать не будет. Как это русские «фашисты», «пьяницы» и «быдло» (по определению наших «любимых» косноязычных СМИ) смогли создать математическую логику?! Я не имел морального права на такое «увековечивание» своего имени по чисто этическим и патриотическим соображениям. Поскольку вновь созданная логика опирается в основном на работы русских логиков Давыдова И.И.(17941863),Владиславлева М.И.(1840-1890), Порецкого П.С.(1846-1907), Введенского А.И.(1856-1925), Лосского Н.О.(1870-1965), Поварнина С.И.(1870-1952), Васильева Н.А.(1880-1940), Брусенцова Н.П., Кузичева А.С. и др., то автор назвал её Русской логикой. . Я не имел права на «Логику Лобанова» также и потому, что это не лично моя заслуга, а свойство Русского менталитета, Русского языка. В прекрасной и глубоко познавательной книге В.А. Истархова «Удар Русских Богов» (М.: Русская Правда»,2007 – 416с.) на стр.363 приводится фундаментальное высказывание: «Чем примитивнее язык, тем примитивнее мышление человека…». Наш родной Русский язык самый богатый и мощный в мире. Поэтому русским легче было создать истинно математическую логику, и, видимо, именно поэтому только русскими учеными и инженерами была решена эта многовековая проблема. Кроме того, существуют логика Пор-Рояля (захудалый монастырь во Франции), «новейшая английская логика» (Льар Л. «Английские реформаторы логики») и польская инверсная запись в программировании, но никого это не смущает. А вот Русская логика застряла у русофобов, как кость в горле. К тому же Ф.М.Достоевский всегда говорил о национальном характере науки. В последнее время появилась «Русская механика» А.Ф.Черняева (М.:2001 – 592с.) и «Русская физика» Антонова В.М. – М.: 2008, т.е. ряды Русских наук пополняются. Ну и в конце концов, нужно как-то различать болтологику (официальную классическую логику) и истинно математическую логику (Русскую). В процессе освоения Русской логики читателю станет ясно, что нет логики суждений и логики предикатов, а есть просто логика. Однако автор сохранил традиционное разделение, чтобы не создавать психологического барьера. О вероятностном характере всей силлогистики автор впервые сказал в «Русской логике для школьников (и академиков)». Поэтому некоторые примеры в силлогистике требуют уточнения в постановке задач: необходимо оговорить мощность всех терминов-множеств. Однако главный, мыслительный, аспект этих примеров не утрачен. Автор рекомендует к обязательному изучению главу 1 из части 1 и главы 9, 10, 11 из части 2. Главы 1 - 8 из части 2 – дань традициям классической логики в отыскании интегрированных заключений в силлогизмах. Для искусственного интеллекта(ИИ) такие выводы ничего не значат: нужна чёткая количественная оценка каждого варианта заключения. Поэтому только вероятностная логи- 9 10 ка будет приемлема для ИИ. Пропущенные разделы есть смысл просмотреть хотя бы «по диагонали», поскольку там излагаются методы и алгоритмы, не известные современной матлогике, приводится критический анализ невежества и безграмотности «логиков» 20-го и 21-го столетий. Часть 3 предназначена для инженеров-цифровиков, но вполне может быть освоена школьниками на уроках информатики, Автор родился и вырос в Осташкове, родине Леонтия Филипповича Магницкого, основателя Российской математики, на берегу озера Селигер. Поэтому он не мог не упомянуть этого города и самого озера хотя бы в названиях алгоритмов. Замысел книги родился благодаря зав. проблемной лаб. ЭВМ МГУ Брусенцову Н.П., ознакомившему автора с проблемами современной логики. Русская логика была впервые внедрена в Тушинском вечернем авиационном техникуме (ТВАТ). Автор выражает свою глубокую признательность директору ТВАТ Немченко Т.П. и завучу Волковой Е.И., оказавших большое содействие в организации учебного процесса. 10 11 «…И может собственных Платонов И быстрых разумом Невтонов Российская земля рождать. » М.В.Ломоносов. ЧАСТЬ 1 Инженерная логика. Глава первая КОМБИНАЦИОННЫЕ ЛОГИЧЕСКИЕ ЦЕПИ 1.1 Основные положения алгебры логики Анализ и синтез логических схем осуществляется на базе аппарата алгебры логики или булевой алгебры [26]. Излагать весь аппарат не имеет смысла, так как в инженерной практике используются два-три закона алгебры логики. В алгебре логики переменные могут принимать только два значения, 0 или 1. Для двух аргументов существуют 16 логических функций (операций, логических действий). Над переменными в основном производятся три логических действия: сложение, умножение, отрицание (инверсия), что соответствует функциям ИЛИ, И, НЕ. Все функции в булевой алгебре могут быть описаны с помощью таблицы истинности. В нижеследующих таблицах описаны функции И(f1), ИЛИ(f2),НЕ(f3). Вместо функции И часто используется термин «конъюнкция», вместо функции ИЛИ - термин «дизъюнкция». Вместо функции НЕ употребляется термин «инверсия» или «отрицание». Для двоичной логики понятия «инверсия» и «отрицание» эквивалентны, но для многозначной дело обстоит иначе. По ЕСКД 11 12 логические элементы, реализующие функции И(f1), ИЛИ(f2), НЕ(f3), изображаются так, как представлено на рисунке. При написании логических формул для функции И используются следующие знаки : &, Λ, точка или ее отсутствие; для функции ИЛИ - V ,+. Функция НЕ обозначается штрихом над аргументом.Мы для обозначения отрицания будем использовать апостроф. Таким образом , можно записать: f1 = x2&x1 = x2 Λ x1 = x2x1 f2 = x2 V x1 = x2+x1 f3 = x’ Основные законы алгебры Буля. Прежде, чем приступить к изложению основных законов алгебры логики, зафиксируем некоторые очевидные её положения. 1 + a = 1; 0 + a = a; a & 1 = a; a & 0 = 0; a + a’ = 1. Эти соотношения легко проверяются подстановкой. Как уже отмечалось, в булевой алгебре все операции осуществляются с логическими переменными и подчиняются законам алгебры логики. Опишем некоторые из них. а) Переместительный закон а+в=в+а; ав = ва б) Сочетательный закон ( а + в ) + с = а + ( в + с) ; ( ав )с = а(вс) в) Распределительный закон а( в + с ) = ав + ас ; а + вс = (а + в)( а + с ) г) Закон поглощения а + ав = а( 1 + в ) = а ; а( а + в ) = а + ав = а д) Закон склеивания ав + ав’ = а ; ( а + в )(а + в’) = а е) Идемпотентный закон a + a = a; a&a=a ё) Правила де Моргана Эти правила справедливы для любого числа аргументов. а + в + с + .... + z = ( а’в’с’...z’ )’ авс... = ( а’ + в’ + с’ + ... + z’ )’ Эти правила можно описать таким алгоритмом. Для перехода от логической суммы к логическому произведению необходимо проделать следующие операции : 1) проинвертировать все слагаемые в отдельности; 2) заменить знаки дизъюнкции на знаки конъюнкции; 3) проинвертировать получившееся выражение. Аналогично выполняется переход от логического произведения к логической сумме. В инженерной практике используются лишь правила де Моргана и 12 13 закон склеивания (в виде карт Карно). Кроме основных функций И, ИЛИ, НЕ в алгебре логики часто используются функции равнозначности (эквивалентности) и неравнозначности (сумма по модулю 2 ). Для обозначения этих функций используются следующие знаки : равнозначность - ~ , сумма по модулю 2 - . Содержание этих функций отражено в таблице . Из таблицы получаем: f4 = а ~ в = а’в’ + ав f5 = a в = а’в + ав’ Из таблицы видно, что f4 = f5’ или f5 = f4’ Таким образом, а’в’ + ав = ( ав’ + а’в )’ , или а~в = ( а в )’ , а в = (а~в)’ Особое место в алгебре логики занимает функция импликации: a→b = a’+b. Физический смысл этого соотношения не может объяснить ни один академик. Он будет разъяснен в разделе «Базисы силлогистики». 1.2 Алгебра множеств. Обычно множества изображаются в виде окружностей, эллипсов, прямоугольников, квадратов и других фигур. Однако переход от двумерности к одномерности, т.е. к скалярным диаграммам, позволяет существенно расширить возможности анализа и синтеза в алгебре множеств. Попробуем доказать идентичность функций и законов в алгебре логики и алгебре множеств. Полная система булевских функций(z0 – z15) для двух аргументов(x,y) показана в таблице. Эти функции для алгебры множеств можно представить с помощью скалярных диаграмм, которые предложены автором в качестве основного инструмента алгебры множеств. Здесь и далее в том случае, если аргумент или функ- 13 14 ция равны нулю, то они изображается тонкой линией, в противном случае – толстой. Все вышеперечисленные законы булевой алгебры легко и просто доказываются с помощью алгебры множеств. Приведем, к примеру, графическое доказательство правила де Моргана для двух аргументов x+y = (x’y’)’. Из скалярных диаграмм видно, что x+y = (x’y’)’. Далее будет показано, что минимизация функций в алгебре множеств не отличается от минимизации логических функций в алгебре логики. Таким образом, мы доказали, что алгебра логики и алгебра множеств идентичны. В этом доказательстве не было никакой необходимости, поскольку аргументами в логике могут быть как отдельные переменные, так и множества. Следовательно, алгебра логики и алгебра множеств – синонимы.Создатель «алгебры множеств» и его последователи – невежды и бестолочи. 1.3 Разновидности логических интегральных схем ( ИС ) Логические ИС, выпускаемые промышленностью, являются функционально полными системами логических элементов и образуют базис построения логических схем. Функционально полная система логических элементов - это такой набор элементов, используя который можно реализовать любую сколь угодно сложную логическую функцию. К числу функционально полных систем относятся, например, системы, реализованные на элементах «И-НЕ» либо на элементах «ИЛИ-НЕ». Наиболее распространены в настоящее время серии 1530 ,1533,555,533,561,1561, 564,1564,176. Различаются эти серии по быстродей- 14 15 ствию. Наиболее быстродействующей серией является серия 1530, самой инерционной - серия 176. Задержки в элементах серии 1530 порядка 3 нс, задержки в таких же элементах серии 176 - порядка 200нс. Максимальным потреблением обладает самая быстродействующая серия 1530, минимальным серия 1564. В состав перечисленных серий входят , например, ИС, представленные на рисунке. На этом рисунке контурными линиями ограничен состав одного корпуса ИС. Пусть необходимо реализовать функцию f = а + вс в базисе И-НЕ. Используя правило Де Моргана, получим: f = ( а’(вс)’)’ .Её реализация представлена на рисунке. 15 16 1.4. Синтез комбинационных схем Синтез комбинационных схем можно проиллюстрировать решением простой задачи. Задача 1.3.1. Приёмная комиссия в составе трех членов комиссии и одного председателя решает судьбу абитуриента большинством голосов. В случае равного распределения голосов большинство определяется той группой, в которой оказался председатель приемной комиссии. Построить автомат для тайного голосования, обеспечивающий определение большинства голосов. Решение. Пусть f - функция большинства голосов. f = 1, если большинство членов комиссии проголосовало за приём абитуриента, и f = 0 в противном случае. Обозначим через x4 голос председателя комиссии. Пусть x4 = 1, если председатель комиссии проголосовал за приём абитуриента. Аналогично представляются через x3, x2, x1 - голоса членов приёмной комиссии. С учётом вышеуказанных допущений условие задачи можно однозначно представить в виде таблицы истинности. Заполнение таблицы осуществляем с учётом того, что функция f является полностью определённой, т.е. она определена на всех возможных наборах переменных x1 - x4. Для n входных переменных существует N = 2n наборов переменных. В нашем примере N = 24 = 16 наборов. Записывать эти наборы можно в любом порядке, но лучше в порядке возрастания двоичного кода. 16 17 Примечание. Здесь и далее под набором будем понимать конъюнкцию всех входных переменных. Существует множество научных определений для набора (конституента,терм,импликанта,минтерм и т.д.), но они только вносят путаницу. Все наборы, на которых функция принимает значение 1 , будем называть единичными, или рабочими. Наборы, на которых функция принимает значение 0, будем называть нулевыми, или запрещенными. Для того, чтобы по таблице истинности найти функцию f, достаточно выписать все единичные наборы и соединить их знаком дизъюнкции. Таким образом, f = x4’x3x2x1 + x4x3’x2’x1 + x4x3’x2x1’ + x4x3’x2x1 + x4x3x2’x1’ + x4x3x2’x1 + x4x3x2x1’ + x4x3x2x1 Полученная форма функции называется совершенной дизъюнктивной нормальной формой (СДНФ), так как каждое логическое слагаемое представляет собой конъюнкцию всех аргументов. Очевидно, применяя основные законы булевой алгебры, мы могли бы аналитически уменьшить сложность полученного выражения. Но это наихудший способ минимизации булевых функций. Покажем это на примере вышеописанного автомата для тайного голосования. Представим полученную функцию в виде логической суммы цифровых рабочих наборов и произведём группировку слагаемых с целью минимизации результата на основе законов склеивания и идемпотентности: f = 0111+1001+1010+1011+1100+1101+1110+1111 = = (0111+1111)+(1001+1011)+(1010+1011)+(1100+1101)+(1110+1111) = = -111+10-1+101-+110-+111- = -111+10-1+(101-+111-)+(110-+111-) = = -111+10-1+1-1-+11-- = x3x2x1+ x4x3’x1+ x4x2+ x4x3. Как мы потом увидим, результат минимизации должен быть компактнее. Но при аналитической минимизации придётся ввести неочевидную группировку: (1101+1111). f = 0111+1001+1010+1011+1100+1101+1110+1111 = =(0111+1111)+(1001+1011)+(1010+1011)+(1100+1101)+(1110+1111)+(1101+1111) .= -111+10-1+101-+110-+111-+11-1 = -111+(10-1+11-1)+(101-+111-)+(110-+111-) = -111+1--1+1-1-+11-- = x3x2x1+ x4x1+ x4x2+ x4x3 = x3x2x1+ x4 (x1+ x2+ x3). После длинных и неочевидных группировок удалось, наконец, получить правильное решение в виде минимальной дизъюнктивной нормальной формы (МДНФ). Даже для 4-х аргументов аналитический метод минимизации не рационален. Однако не всегда исходное условие задано в виде таблицы истинности. Задача 2. Найти МДНФ функции, заданной в виде выражения: M = (ax=bc)(bx=ac). Решение. Вначале необходимо выполнить операцию логического умножения, а затем преобразовать полученную ДНФ в СДНФ. Далее по СДНФ заполняется таблица истинности и следует традиционная минимизация с помощью карты Карно. Однако перемножать сложные выражения достаточно утомительно, поэтому заменим эту операцию сложением на основе формулы де Моргана. По- 17 18 лучим: M’ = (ax bc) + ( bx ac) = ab’x+ac’x+a’bc+bcx’+a’bx+bc’x+acx’+ab’c. Мы получили ДНФ инверсии логической функции М. Теперь необходимо развернуть её в СДНФ. Выполняется эта процедура достаточно просто добавлением недостающей переменной (в данном случае домножением на (c+c’) или (b+b’): ab’x = ab’x(c+c’) = ab’cx+ab’c’x = 1011+1001, ac’x = ac’x(b+b’) = abc’x+ab’c’x = 1101+1001, После занесения M’в карту Карно получим M = a’b’+abcx+c’x’. 1.5.Минимизация полностью определённых булевых функций. Существует несколько способов минимизации булевых функций. Прежде всего это метод Квайна-Мак-Класки, метод Блека-Порецкого и метод минимизации с помощью карт Карно или диаграмм Вейча [26, 27]. Здесь будет подробно излагаться метод карт Карно, как самый удобный метод, позволяющий быстро решать задачи минимизации булевых функций от достаточно большого числа аргументов (6-12). При этом получается минимальная форма в базисе И, ИЛИ, НЕ. Существуют карты Карно на 2 , 3 , 4 , 5 и 6 переменных[14,26]. Причем последние стали использоваться достаточно недавно. На рисунке представлены карты Карно для 2, 3, 4, 5 и 6 аргументов. 18 19 1.6.Карты Карно для 7, 8, 9 и 10 переменных. Карты Карно позволяют решать задачу минимизации логических функций элегантно и просто. Карно был не только собразителен(кстати, за 30 лет я так и не нашёл его биографии: узнал только, что это американец 20-го столетия), но и ,вероятно,весьма ленив: он считал, что его карты настолько прозрачны, что нет резона описывать алгоритм работы с ними (вполне возможно, что Карно и не представлял себе карт более, чем для 4-х переменных). Поэтому до сих пор неблагодарное человечество не научилось работать с этими картами. Алгоритм работы с картами Карно (этот алгоритм не известен ни одному логику в мире) был разработан автором 30 лет назад, изложен в «Инженерных методах разработки цифровых устройств»(1977г.), «Русской логике для школьников» и «Русской логике против классической», а также на вышеназванных сайтах. До сих пор сохранилось мнение, что карты Карно для 7-10 переменных являются труднообозримыми, поэтому ни в какой литературе,кроме [14], нельзя найти не только описания метода работы с картами Карно на большое количество переменных, но и самих карт. Этим же обстоятельством объясняется тот факт, что до недавнего времени в литературе редко встречались карты Карно даже для 6 переменных. Прежде,чем приступить к рассмотрению многоаргументных карт Карно,покажем на простых примерах, как осуществляется соседнее кодирование для произвольного числа переменных. Для одной переменной существует только соседнее кодирование, так как она кодируется нулём и единицей. Чтобы перейти к соседнему кодированию для двух переменных x2 и x1 предлагается следующая операцию. Напишем в один столбец коды для x1. Между нулём и единицей для столбца x1 проведём ось, которую назовём осью симметрии 1-го ранга. 19 20 Проведём под этим столбцом ось симметрии , которую в дальнейшем будем называть осью симметрии 2-го ранга, и продолжим столбец кодов для x1 симметрично относительно этой оси (симметрично относительно оси симметрии 2-го ранга разместятся и оси симметрии 1-го ранга). Дополним одноразрядный код до двухразрядного, для чего выше оси симметрии впишем для x2 нули , а ниже - единицы. Таким образом , мы осуществили соседнее кодирование для двух переменных. Чтобы построить соседние коды для трёх переменных , проведём под столбцами двухразрядных кодов ось симметрии 3-го ранга и продолжим эти столбцы вниз симметрично относительно оси 3-го ранга, т.е. осуществим симметричное отображение относительно оси 3-го ранга. 20 21 Дополним двухразрядные коды до трёхразорядных, вписав в третьем разряде нули выше оси Карно 3-го ранга и единицы ниже этой оси. Получим соседнее кодирование для трёх переменных. Следовательно, для того, чтобы осуществить соседнее кодирование для (Р+1) переменных, если известно соседнее кодирование для Р переменных, необходимо выполнить следующий алгоритм: 1) под столбцом известного Р-разрядного соседнего кодирования провести ось симметрии (Р+1)-го ранга ; 2) осуществить симметричное отображение относительно оси симметрии (Р+1) - ранга всех Р-разрядных кодов и осей симметрии всех рангов до ранга Р включительно ; 3) дополнить Р-разрядные коды слева одним разрядом, в котором записать 0 для всех кодов выше оси симметрии (Р+1)-го ранга и 1 для кодов, расположенных ниже оси симметрии (Р+1)-го ранга. 21 22 Соседнее кодирование карт Карно по вышеизложенному алгоритму производится как для вертикальных, так и для горизонтальных сторон карт. Примеры кодирования карт Карно приведены на рисунке. На нём стрелками обозначены оси симметрии, ранг которых отмечен цифрами, стоящими рядом со стрелками . Покрытие всех единичных наборов булевой функции, размещённых в карте Карно, прямоугольниками Карно не вызывает затруднений, если функция зависит не более, чем от 6 переменных. Обозримость карт Карно для большего числа переменных усложняется, так как становится трудно определить, соответствует ли данная фигура покрытия понятию прямоугольника Карно. Определение достоверности прямоугольника Карно основано на принципе симметрии, значительно повышающем обозримость карт Карно, и осуществляется с помощью приводимого ниже алгоритма. Алгоритм проверки достоверности прямоугольника Карно (ПК) ( принцип симметрии ) 1. Если предполагаемый прямоугольник Карно (ППК) охватывает одну ось симметрии , либо не охватывает ни одной, то перейти к п.4. 2. Если ППК располагается по обе стороны от нескольких осей симметрии, то он должен быть симметричен относительно той из этих осей, которая 22 23 имеет максимальный ранг, иначе данная фигура не является прямоугольником Карно. 3. Разбить исходный ППК пополам. Считать любую его половину новым ППК. Перейти к п.1. 4. Конец. Этот алгоритм необходимо применить дважды : относительно горизонтальных и относительно вертикальных осей симметрии. Проверим достоверность прямоугольника Карно А на вышеприведённом рисунке. Прямоугольник А размещается по обе стороны от горизонтальной оси 4-го ранга. Симметричность его очевидна. Верхняя половина фигуры А симметрична относительно горизонтальной оси симметрии 1-го ранга. Так как ППК охватывает одну единственную ось симметрии , то проверка фигуры покрытия А на соответствие принципу симметрии относительно горизонтальных осей закончена. Приступаем к проверке принципа симметрии относительно вертикальных осей симметрии. Фигура покрытия А размещается по обе стороны от вертикальной оси симметрии 4-го ранга и симметрична относительно этой оси. Левая половина фигуры А симметрична относительно оси симметрии 3-го ранга. После повторного деления левая половина фигуры покрытия оказалась симметричной относительно оси симметрии 2-го ранга. После 3-го деления ППК не охватывает ни одной оси симметрии, на этом проверка достоверности прямоугольника Карно заканчивается. Таким образом, фигура покрытия А действительно является прямоугольником Карно. Аналогично доказывается, что фигура покрытия В также является прямоугольником Карно. В результате минимизации прямоугольники А и В будут описаны следующими формулами: a = x7x6’x1’ b = x7’x6x2. На рисунке даны примеры фигур, не являющихся прямоугольниками Карно.Фигуры k, m и n не являются прямоугольниками Карно в силу нарушения принципа симметрии. Фигура n не симметрична относительно горизонтальной оси симметрии 2-го ранга, фигура m не симметрична относительно вертикальной оси симметрии 3-го ранга. Фигура k симметрична относительно оси симметрии 3-го ранга, но её половина не симметрична относительно оси 2-го ранга. Поразително, что за 30 лет никто из преподавателей и «учёных» так и не освоил моего алгоритма. До сих пор плодятся неграмотные методы работы с картами Карно, в которых утверждается, что достаточно убедиться, что в фигуре покрытия 2n клеточек, чтобы считать её ПК. Фигура m содержит 8 клеточек, но не является прямоугольником Карно. Алгоритм «НИИРТА» графической минимизации булевых функций. 23 24 1. Заполнить карту Карно нулями и единицами в соответствии с таблицей истинности или заданным алгебраическим выражением. 2. Покрыть все элементарные квадраты Карно, в которых записаны единицы, минимальным количеством фигур покрытия, каждая из которых имеет максимальную площадь. 3. Проверить каждую фигуру покрытия на соответствие принципу симметрии. В противном случае изменить контур фигуры покрытия в соответствии с принципом симметрии так, чтобы она превратилась в прямоугольник Карно. 4. Каждому прямоугольнику Карно соответствует одна импликанта, причём если в границах прямоугольника Карно какая-либо переменная принимает значения как 0 , так и 1 , то эта переменная не войдёт в импликанту. Применим карту Карно для решения задачи 1. На рисунке дан единственный минимальный вариант решения(иногда их бывает несколько). f = x4x1 + x4x2 + x4x3 + x3x2x1 Эти выражения представляют собой пример дизъюнктивной нормальной формы (ДНФ). В некоторых случаях приведение результата минимизации к скобочной форме позволяет уменьшить количество интегральных схем (ИС) , необходимых для реализации булевой функции. Скобочная форма получается после вынесения общих множителей за скобки и для f имеет вид: f = x4(x1 + x2 + x3) + x3x2x1 Кстати, полученный результат f = x4(x1 + x2 + x3) + x3x2x1 наводит на печальные размышления. На русский язык эта формула переводится так: «Абитуриент будет принят в учебное заведение, если за него проголосуют 3 члена комиссии или председатель вместе хотя бы с одним членом комиссии». Но ведь этот ответ мы могли бы получить и эвристически, на основе здравого смысла, просто немного подумав. Не пришлось бы рисовать таблицу истинности, заполнять карту Карно и т.д. Формальное решение логических задач иногда превращает нас в «мартышек с арифмометром», отвращает от мышления. Аналогичная опасность грозит и программистам, и микропрограммистам, т.е. схемотехникам. В алгебре множеств также возможна минимизация логических функций. На рисунке представлены скалярные диаграммы, каждый столбец которых помечен соседними кодами. Фактически эти диаграммы представляют собой одномерную карту Карно, поэтому здесь применимы все вышеприведенные алгоритмы минимизации. 24 25 Вполне естественно, что результат минимизации не изменился: f = x4(x1 + x2 + x3) + x3x2x1 1.7.Оценка сложности реализации булевых функций Приблизительную оценку реализации логической функции можно дать по ДНФ, подсчитав коэффициент сложности Кс, равный общему количеству переменных, входящих в ДНФ, плюс количество импликант. Например, для СДНФ к задаче 1 Кс = 32+8=40, а для отминимизированной функции Кс = 9+4=13. Для того, чтобы перейти от логической функции (ЛФ) к электронной схеме, построенной на интегральных микросхемах (ИМС) типа И-НЕ, достаточно преобразовать ЛФ по правилу де Моргана. Например: f = x4x1 + x4x2 + x4x3 + x3x2x1 = [(x4x1)’ & (x4x2)’ & (x4x3)’ & (x3x2x1)’]’. Из полученного уравнения видно, что для реализации его в виде электронной схемы необходимы только элементы типа И-НЕ: 3 двухвходовых элемента(2И-НЕ), один трёхвходовой элемент(3И-НЕ) и один четырёхвходовой элемент(4И-НЕ). При этом нужно иметь в виду, что в одном корпусе ИМС могут быть размещены 4 элемента И-НЕ, 3 элемента 3И-НЕ , 2 элемента 4И-НЕ или 1 элемент 8И-НЕ. В наше время отпала необходимость в реализации ЛФ на элементах типа И-НЕ, поэтому можно сразу рисовать схему на элементах И и ИЛИ. Кроме того, применение программируемых интегральных схем (ПЛИС) вообще снимает проблему реализации: достаточно представить лишь готовую формулу ЛФ. Минимизация по таблицам истинности в САПР для ПЛИС зачастую оказывается неэффективной, поэтому советую иногда проверять результаты минимизации при работе в САПР. При использовании базиса И-НЕ обе функции примут вид, представленный на рисунке. Из рисунка видно, что реализация функции по СДНФ потребовала 5 корпусов ИС, по минимальной форме - 1,58 корпуса ИС, по скобочной форме - 1,16 корпуса. Таким образом, минимизация по карте Карно дала нам трёхкратный выигрыш по корпусам ИС относительно реализации по СДНФ. Реализация по скобочной форме уменьшила объём оборудования ещё на 30%. Кстати, оценка экономии по Кс даёт приблизительно такой же результат: 40/13 = 3,08. 25 26 1.8. Формы задания булевых функций. Об одной форме задания булевых функций мы уже говорили - это таблица истинности. Иногда применяется более компактная запись, использующая восьмеричные, десятичные или шестнадцатеричные эквиваленты наборов. Например, набор x4x3x2’x1’ может быть представлен обобщённым кодом 1100 , десятичным эквивалентом которого является число 12. Удобнее всего 8-чные и 16-чные коды. Ниже приведена Паскаль-программа синтеза псевдослучайных кодов для задания произвольных булевых функций. program nabor; uses crt; type stroka = string[4]; txt = file of stroka; var f1:txt; x,y,i,j,n,m,b:integer; st:stroka; 26 27 {-------------------------------------------------------------} function intchar(m:integer):char; var ch:char; begin case m of 0..9: ch:=chr(m+ord('0')); 10..35: ch:=chr(ord('A')+m-10); else begin writeln('Ошибка ввода'); halt; end; end{case}; intchar:=ch; end; {--------------------------------------------------------------} function int10(a:longint;b:integer):string; {Пеpевод целого 10-ичного числа в (2..36)-ичные системы} {a,b - исх. 10-ичн. число и основание сист. счисл. соотв-енно} var s:string; m,i,j:integer; chrarr:array[0..30] of string; begin i:=0; for j:=0 to 30 do chrarr[j]:=' '; repeat m:=(a mod b); chrarr[i]:=intchar(m); a:=a div b; i:=i+1; until (a=0); s:=chrarr[i]; for j:=i-1 downto 0 do s:=s + chrarr[j]; int10:=s; end; {=================================================} begin {$I-} {Внутр.проверка правильности операции с файлом отключена} writeln('**************************************************************'); writeln('* Фоpмиpование файла случайных *'); writeln('* 2-pазpядных 4,8,16-ичных чисел для каpт Каpно *'); writeln('* Pезультиpующий файл - rnd.txt *'); writeln('* Лобанов В.И. 16-09-1997 *'); writeln('**************************************************************'); writeln; write('Введите длину файла n и количество пеpеменных m(4,6,8) '); readln(n,m); assign(f1,'rnd.txt');{Связь f1 с pезультиpующим файлом } 27 28 {$I+} {Включить внутр.проверку} rewrite(f1); {Открыть файл для записи} case m of 4: begin b:=4; x:=15; end; 6: begin b:=8; x:=63; end; 8: begin b:=16;x:=255; end; end;{case} randomize; for i:=1 to n do begin y:=random(x); st:=int10(y,b); write(st:8); write(f1,st); end; close(f1); writeln; writeln('Файл rnd.txt сфоpмиpован'); writeln('Нажмите клавишу пpобела'); repeat until keypressed; end. Задача 3. Полностью определённая булева функция от 4-х переменных задана десятичными рабочими наборами : РН(4) = 5, 6, 7, 8, 9, 10, 11.Число в скобках указывает количество переменных. Найти минимальную форму этой функции. Решение. Так как функция является полностью определённой, то запрещёнными наборами ЗН(4) являются наборы 0 - 4, 12 - 15. Исходя из этой информации, составляем таблицу истинности и осуществляем минимизацию по карте Карно. Таблица 4. РН(4) 5 6 7 8 9 10 11 x4 0 0 0 1 1 1 1 x3 1 1 1 0 0 0 0 x2 x1 0 1 1 0 1 1 0 0 0 1 1 0 1 1 f 1 1 1 1 1 1 1 ЗН(4) 0 1 2 3 x4 0 0 0 0 x3 0 0 0 0 x2 x1 0 0 0 1 1 0 1 1 f 0 0 0 0 28 29 4 12 13 14 15 0 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 По карте Карно получаем результат: f = x4x3’ + x4’x3(x1 + x2) Задание 1. Найти минимальную форму полностью определённых булевых функций, заданных 10-чными рабочим наборами : 1-1) РН(4) = 0, 1, 5, 7 - 9, 13, 15 1-2) РН(5) = 4, 6, 8, 10, 13, 17, 24, 30 1-3) РН(6) = 1 - 8, 16 - 24, 32 - 40 1-4) РН(7) = 7 - 15, 23 - 31, 39 - 47, 50 - 63 1-5) РН(8) = 7 - 15, 100 - 132 1.9. Минимизация недоопределённых булевых функций Функция от n переменных называется недоопределённой, если она задана не на всех 2n наборах. Задача минимизации такой функции заключается в оптимальном доопределении, которое позволило бы покрыть рабочие наборы минимальным количеством прямоугольников Карно, каждый из которых имел бы максимальную площадь. Задача 4. Найти минимальную форму функции y, представленной на рисунке. Решение. Функция задана только на 5 наборах. Добавим к трём рабочим наборам ещё пять, а именно : 0000, 0011, 1000, 1011, 1010. Все оставшиеся наборы доопределим как запрещённые. В результате такого доопределения получим прямоугольник Карно, состоящий из 8 элементарных квадратов Карно. Этому прямоугольнику соответствует функция : y = x3’. 29 30 Решение задачи 4. В этом разделе изложен общепринятый подход к минимизации недоопределённых логических функций (НОЛФ). В электронике существуют дополнительные требования, связанные с противогоночной защитой цифрового устройства. В соответствии с этими требованиями желательно взаимное перекрытие всех прямоугольников Карно. 1.10. Минимизация системы булевых функций. Существуют достаточно сложные методы минимизации системы булевых функций. Однако все эти методы не дают оптимального решения, поэтому при инженерном синтезе комбинационных схем осуществляется раздельная минимизация функций, которая тоже не всегда обеспечивает минимальное решение, но подкупает простотой. Задача 5. Построить преобразователь двоичного кода, получаемого на выходе делителя частоты на 12, в двоично-десятичный код. Условие задачи отражено в таблице . Делитель работает в коде 8-4-2-1. Решение. Для каждой функции yi заполняем карту Карно, производим доопределение и осуществляем минимизацию. Весь процесс отражён на рисунке. В результате минимизации получаем систему функций: 30 31 y1 = x1 y2 = x4’x2 y3 = x3 y4 = x4x2’ y5 = x4x2 Карты Карно к задаче 5. Задача 6. Построить один разряд многоразрядного сумматора. Решение. Пусть ai и вi - значения i-ых разрядов слагаемых а и в , Pi и Si - значения переноса и суммы на выходе i-го разряда, Pi-1 - значение переноса на выходе предыдущего разряда, тогда работу сумматора можно описать с помощью таблицы истинности. Имеем систему полностью определённых булевых функций. Производим раздельную минимизацию (см. рисунок). Si = ai’вi’Pi-1 + ai’вiPi-1’ + aiвi’Pi-1’ + aiвiPi-1 = Pi-1(ai~вi) + Pi-1’(ai вi) = 31 32 Pi = вiPi-1 + aiPi-1 + aiвi Решение задачи 6. Для реализации лучше Pi = aiвi + Pi-1(ai~вi)’ , так как может быть использован общий для Si и Pi сомножитель (аi~вi)’. Схема сумматора представлена на рисунке. Здесь же дано условное обозначение одноразрядного сумматора , где А и В - одноразрядные слагаемые, P0 и P1 - входной и выходной переносы, S1 сумма. На этом же рисунке изображён двухразрядный сумматор, выполненный на микросхеме 133ИМ2. Здесь А1, В1, А2, В2 - соответственно значения первых и вторых разрядов слагаемых А и В; S1 и S2 - 1-ый и 2-ой разряды суммы; P0 входной перенос для первого разряда, P2’ - выходной перенос. Задание 2. 2-1. Построить 2/(2-10) преобразователь для делителя частоты на 24 , работающего в коде 16-8-4-2-1. Этот преобразователь использовался на заре цифровой схемотехники в радиолюбительских электронных часах. 32 33 2-2. Построить 4-входовой сумматор для суммирования одноразрядных двоичных чисел. 1.11. Анализ комбинационных схем . В процессе работы с цифровыми схемами иногда возникает задача определения функции, которую реализует данная структура. Задача 2. На рисунке представлена принципиальная схема комбинационного автомата. Определить его функцию. Схема автомата к задаче 2. Решение. Определим вначале прмежуточную функцию f1 = x1’’ + x2’’ + x3’’ = x1 + x2 + x3 Затем f2 и f3 f2 = (f1x4)’ = ((x1 + x2 + x3 )x4)’ f3 = (x1x2x3)’ Функция f = f2’ + f3’ = (x1 + x2 + x3)x4 + x1x2x3 , т.е. схема реализует скобочную форму автомата, определяющего большинство голосов. 33 34 Глава вторая МИНИМИЗАЦИЯ ЛОГИЧЕСКИХ ФУНКЦИЙ МЕТОДОМ ОБОБЩЁННЫХ КОДОВ. В СДНФ функции от n переменных каждый набор xi можно заменить последовательностью нулей и единиц. Такая последовательность носит название обобщённого кода. Метод обобщённых кодов был разработан в конце 60-х годов на 21-й кафедре Академии им. Дзержинского д. т. н. Мавренковым Леонидом Трофимовичем. Дальнейшее развитие метода и доведение его до инженерных методик было выполнено сотрудниками этой кафедры к.т.н. Кустенко А.С., к.т.н. Кузнецовым Н.В. и к.т.н. Салтыковым Ю.А.(см. "Вопросы оборонной техники", 1972 г.). Этот метод до сих пор является самым эффективным методом минимизации логических функций. Я понимаю, что доходчиво изложить метод Мавренкова очень непросто. Вполне допускаю, что не все читатели освоят этот метод. Для решения подавляющего большинства задач вполне достаточно знания карт Карно. Метод Мавренкова должен быть реализован на ЭВМ. Например, набору x4x3’x2x1’ соответствует обобщённый код 1010. Для ДНФ обобщённый код (ОК) имеет прочерки на местах отсутствующих переменных. Например, для функции от 5 переменных набору x5x2’ соответствует ОК = 1--0-. Методом обобщённых кодов удобно работать с функциями, заданными таблицами истинности. Причём рабочим наборам соответствуют рабочие обобщённые коды (РОК), запрещённым наборам - запрещённые обобщённые коды (ЗОК). Введём понятие оценочной функции. Оценочная функция F0p(F1p) определяет количество нулей (единиц) для одного разряда всех РОК. Оценочная функция F0з(F1з) определяет количество нулей ( единиц ) для одного разряда всех ЗОК. Функция вида F0 = F0р + F1з называется нулевой оценочной функцией. Функция вида F1 = F1р + F0з называется единичной оценочной функцией. В результате минимизации булевой функции получается минимальная ДНФ (МДНФ), состоящая из простых импликант, т.е. таких импликант, дальнейшая минимизация которых не возможна. В методе обобщённых кодов простой импликанте соответствует минимальный обобщённый код (МОК). Будем говорить , что даннный МОК покрывает определённый РОК, если нули и единицы в этом РОК стоят в тех же разрядах, что и в данном МОК. Сущность метода ОК заключается в том , чтобы по максимуму оценочных функций выбрать такие переменные , которые чаще всего встречаются в РОК и реже всего в ЗОК , и на их основе построить такую совокупность минимальных обобщённых кодов , которая покрывала бы все РОК и не покрывала бы ни одного ЗОК. 34 35 2.1. Общий алгоритм определения МОК. Алгоритм 1. 1. Присвоить индексу МОК значение 1, т.е. i :=1. 2. Подсчитать по таблице истинности F0 и F1 для всех разрядов РОК и ЗОК. 3. В качестве базы МОКi (БМОКi) или дополнение к БМОКi выбрать переменную с максимальной F0 или F1 . Если F0 = max, то переменная входит в БМОКi нулём. Если F1=max , то переменная входит в БМОКi единицей. Если несколько переменных имеют максимальные оценочные функции, то выбрать в качестве БМОК ту переменную, у которой соответствующая запрещённая оценочная функция (F0з, F1з) имеет минимальное значение; в противном случае в качестве БМОК взять любую переменную с максимальной оценочной функцией. 4. Выписать все РОК и ЗОК , покрываемые базой МОКi. Если БМОКi не покрывает ни одного РОК или покрывает все ЗОК , то приравнять нулю оценочные функции F0 и F1 для данного разряда и перейти к п.3. Если покрываемых ЗОК нет , то перейти к п.6. 5. Подсчитать F0 и F1 для всех разрядов РОК и ЗОК, покрытых данной базой, кроме тех разрядов, которые образуют БМОКi . Присоединить к БМОКi переменную (дополнение к БМОКi ) с максимальной оценочной функцией в соответствии с требованиями п.3. Считать этот ОК новой базой МОКi . Если новая БМОКi покрывает столько же ЗОК , сколько и на предыдущем шаге , то приравнять нулю оценочные функции для дополнения к БМОКi , отбросить присоединённую переменную и добавить к БМОКi переменную с максимальной оценочной функцией в соответствии с требованиями п.3, считать полученный ОК новой БМОКi . Если БМОКi покрывает хотя бы один ЗОК, перейти к п.4. 6. Принять в качестве МОКi базу МОКi. 7. Если все РОК из исходной таблицы истинности покрыты минимальными обобщёнными кодами, перейти к п.9. 8. Выписать из исходной таблицы истинности все ЗОК и те РОК , которые не покрыты минимальными обобщёнными кодами . Считать вновь полученную таблицу исходной таблицей истинности . Увеличить индекс МОК на единицу, т.е. i :=i+1. Перейти к п.2. 9. Конец. Поясним положение пп.4 и 5 алгоритма 1. Пусть таблица истинности состоит из одного РОК 1110 и трёх ЗОК : 1010, 0110 и 1111. После подсчёта оценочных функций оказалось, что для второго разряда 35 36 F0 = 3 = max. Если в соответствии с максимумом оценочной функции взять в качестве БМОК код --0- , то этот код не покроет ни одного РОК, что недопустимо, т.к. БМОК обязательно должна покрыть хотя бы один РОК. Несколько иная ситуация складывается в том случае , когда БМОК, найденная по максимуму оценочной функции , покрывает часть РОК и все ЗОК. Пусть функция задана пятью РОК и одним ЗОК. Если в соответствии с максимумом взять в качестве БМОК код --1-, то в конце концов мы построим некоторый ОК, не покрывающий ни одного ЗОК , но длина этого ОК не будет минимальной. Проиллюстрируем выполнение алгоритма 1 примерами. Задача 7. Построить МДНФ булевой функции y, заданной таблицей, по методу ОК. Решение . 1. Выбираем в качестве БМОК1 переменную x3 , т.е. БМОК1 = -1--. Эта БМОК1 покрывает все РОК и один ЗОК . 2. Выписываем эти РОК и ЗОК (см.след. таблицу ). 3. По максимальному F0 = 5 определяем вторую переменную базы МОК1. Это переменная x1. Она входит в БМОК инверсным значением , т.е. БМОК1 = -10. 4. Так как БМОК1 = -1-0 не покрывает ни одного ЗОК и покрывает все 36 37 РОК, то минимизацию считаем законченной и принимаем МОК1 = БМОК1 = -1-0 , т.е. y = x3x1’ . Такой же результат получается и по карте Карно . Задача 8. Построить МДНФ функции , заданной таблицей. Решение. 1. Принимаем БМОК1 по F1 = 10 (можно по F0 =10). БМОК1 = --1----БМОК1 покрывает один ЗОК и все РОК. 2. Выписываем все РОК и ЗОК , покрываемые БМОК1. После подсчёта оценочных функций оказывается, что максимум F0 приходится на x1, поэтому БМОК1 = --1----0 МОК1 = БМОК1 = --1----0 3.Непокрытым оказался только один РОК. Выписываем этот РОК и все ЗОК в таблицу. 37 38 4. Находим БМОК2 = -----1-МОК2 = БМОК2 = -----1-Результат минимизации выглядит так : y = x6x1’ + x3 Такой же результат получен и по карте Карно. Задание 3. Найти минимальную форму функций , указанных в задании 1, методом обобщённых кодов. 2.2. Алгоритм соседнего определения базы МОК (алгоритм Мавренкова). Алгоритм 1 требует раздельного размещения РОК и ЗОК. Приведение таблицы истинности к такому виду усложняет метод ОК. Процесс минимизации методом ОК может быть существенно упрощен, если определение БМОК производить с использованием приводимого ниже алгоритма. Алгоритм 2. 1. Присвоить индексу МОК значение 1, т.е. i := 1 . 2. Присвоить индексу РОК значение 1 , т.е. j := 1. 3. Взять РОК из исходной таблицы истинности и, сравнивая его со всеми ЗОК , определить переменные , по которым РОК может быть склеен с ЗОК. Эта совокупность переменных и будет базой МОКi . Перейти к п.7. 4. Если РОКj не имеет соседних ЗОК, то j := j + 1 и перейти к п.3. Если в таблице истинности нет ни одного РОК, соседнего хотя бы с одним ЗОК , то перейти к п.5. 5. Подсчитать по таблице истинности F0 и F1 для всех разрядов. 6. В качестве базы МОКi (БМОКi ) или дополнения к БМОКi выбрать переменную с максимальной F0 или F1. Если F0 = max, то переменная входит в БМОКi нулём. Если F1 = max , то переменная входит в БМОКi единицей . Если несколько переменных имеют одинаковые оценочные (максимальные) функции , то выбрать в качестве БМОКi ту переменную , у которой соответствующая запрещённая оценочная функция ( F0з или F1з ) имеет минимальное значение, в противном случае в качестве БМОКi взять любую переменную с максимальной оценочной функцией F0 или F1 . 7. Выписать РОК и ЗОК , покрываемые базой МОКi . Если БМОКi не покрывает ни одного РОК или покрывает все ЗОК, то приравнять нулю оценочные функции F0 и F1 для данного разряда и перейти к п.6. Если покрываемых ЗОК нет , то перейти к п.9. 8. Подсчитать F0 и F1 для всех разрядов РОК и ЗОК , покрываемых дан- 38 39 ной базой, кроме разрядов (переменных) , образующих БМОКi. Присоединить к БМОКi переменную (дополнение к БМОКi ) с максимальной оценочной функцией в соответствии с требованиями п.6. Считать полученный ОК новой базой МОКi . Если новая БМОКi покрывает столько же ЗОК, сколько и на предыдущем шаге, то приравнять нулю оценочные функции или дополнения к БМОКi , отбросить присоединённую переменную и добавить к БМОКi переменную с максимальной оценочной функцией в соответствии с положениями п.6, считать полученный ОК новой БМОКi .Если БМОКi покрывает хотя бы один ЗОК, перейти к п.7. 9. Принять в качестве МОКi базу МОКi . 10. Если все РОК из исходной таблицы истинности покрыты минимальными обобщёнными кодами, перейти к п.12. 11. Выписать из исходной таблицы истинности все ЗОК и те РОК , которые не покрыты минимальными обобщёнными кодами . Считать вновь полученную таблицу исходной таблицей истинности. Увеличить индекс МОК на единицу , т.е. i := i+1. Перейти к п.2. 12. Конец. Задача 9. Произвести минимизацию булевой функции , заданной таблицей. Решение. 1. По алгоритму 2 пп. 1-3 для РОК2 находим соседний ЗОК, т.е. находим БМОК1 = ---0----. 2. По алгоритму 2 пп. 7-9 находим МОК1 = ---0--0Так как МОК1 покрывает все РОК , то в соответствии с п.10 алгоритма 2 получаем y = x5’x2’ Сущность алгоритма 2 заключается в том , что отыскиваются в первую очередь « необходимые « МОК, т.е. МОК для тех РОК , развязывание которых с ЗОК максимально затруднено , так как они развязываются только по тем переменным , по которым возможно склеивание данного РОК со всеми ЗОК. Под развязыванием понимается процесс выявления тех переменных в РОК, кото- 39 40 рые не встречаются в ЗОК. Задача 10. Произвести минимизацию булевой функции , заданной таблицей. Решение . 1. По алгоритму 2 пп.1-3 для РОК1 находим БМОК1 = ----02. По алгоритму 2 пп.7, 8 строим таблицу. 3. По алгоритму 2 п.8 из таблицы находим БМОК1 = ---004. По алгоритму 2 п.9 МОК1 = БМОК1 = ---005. По алгоритму 2 для непокрытых РОК (для РОК3) находим БМОК2 = -1----. 6. По алгоритму 2 пп.7, 8 , 11 строим таблицу. 7. По алгоритму 2 п.9 находим МОК2 МОК2 = 01---8. По алгоритму 2 пп.7, 8, 11 строим следующую таблицу . 40 41 9. По алгоритму 2 п.3 находим БМОК3 БМОК3 = ----110. По алгоритму 2 пп. 7, 8, 11 строим таблицу. 11. Из таблицы по алгоритму 2 п.8 находим БМОК3 = ----11 12. По алгоритму 2 пп. 7, 8 строим следующую таблицу. 13. По таблице 17 определяем МОК3 = -1--11 Таким образом , y = x3’x2’ + x5x2x1 + x6’x5 На рисунке представлено решение задачи 10 с помощью карты Карно . Функция y представлена в виде МДНФ. Из рисунка видно , что результаты минимизации по карте Карно и по методу обобщённых кодов совпадают. 41 42 Задача 10а. Произвести минимизацию логической функции, заданной таблицей истинности. Т.к. РОК3 и ЗОК1 являются соседними по x7,то в качестве БМОК1 выбираем х7’,не обращая внимание на абсолютный максимум F0 для х8.БМОК1 по- 42 43 крывает РОК1 - РОК5 и ЗОК3,ЗОК5.Подсчитаем оценочные функции для выбора дополнения к БМОК1 и получения МОК1. Дополнение х4’ могло бы привести нас к МДНФ,поэтому мы выберем эквивалентное по оценочной функции дополнение х1,чтобы убедиться в некоторых недостатках метода. В результате получим МОК1 = x7’x1. Поскольку МОК1 покрывает РОК с номерами 1,3 - 5,то стартовая таблица для синтеза БМОК2 выглядит так: Исходя из этой таблицы получаем БМОК2 = x8’. Для нахождения МОК2 строим следующую таблицу. Отсюда получаем МОК2 = х8’x5’, который дополнительно покрывает РОК2 и РОК6. Найдём БМОК3. 43 44 F0 для х3 имеет максимальное значение,но использовать x3’ в качестве БМОК3 нельзя,поскольку единственный РОК не имеет нуля в данном разряде. Принимаем БМОК3 = x8’. Строим очередную таблицу для синтеза последнего МОК. Из последней таблицы получаем МОК3 = x8’x7x4.Таким образом мы получили тупиковую ДНФ y = x8’x7x4 + х8’x5’ + x7’x1. По карте Карно получена минимальная ДНФ y =х8’x5’ + x7x1’ + x7’x4’. Т.е. высокая эффективность метода обобщённых кодов не всегда гарантирует получение МДНФ. Кроме того, если рассмотреть недоопределённую логическую функцию, заданную 8-ичными наборами: РОК – 67,73,63 и ЗОК – 37,65,66, то окажется, что по первому алгоритму получим избыточное решение. В этом случае y = x3’ + x6x2x1. При минимизации по второму алгоритму y = x6x2x1.Таким образом, алгоритм 2 не только менее трудоёмок, но и более эффективен. Проверка результата минимизации булевых функций. Результат минимизации булевой функции является корректным , если выполняются следующие условия: 1. Совокупность МОК покрывает все РОК . 2. Совокупность МОК не покрывает ни одного ЗОК. 2.3. Выводы. Далеко не всегда по методу ОК может быть получена МДНФ. Чаще всего 44 45 в результате минимизации удаётся получить одну из тупиковых ДНФ. В этом недостаток метода. Алгоритм 2 по сравнению с алгоритмом 1 даёт более компактный результат, т.е. вероятность получения МДНФ по алгоритму 2 выше, чем по алгоритму 1. Достоинствами метода являются простота и высокая скорость получения результата. Особенно этот метод эффективен для минимизации булевых функций от большого числа переменных (n8). Вполне приемлемым даже без применения ЦВМ является число наборов , на которых задана функция , в пределах 1000. Например , 6 булевых функций от 12 переменных, определённые на 320 наборах (см. задачу 11) были отминимизированы вручную в течение 30 минут. Разумеется , задача такой сложности может быть решена на ЭВМ. Однако даже только на ввод с последующей проверкой 320 наборов для 6 функций потребуется значительно больше времени, чем на ручное решение. Эффективность данного алгоритма выше всех других, известных автору. В соответствии с алгоритмом 2 в 1974г. была написана программа, которая позволяла минимизировать булевы функции от 36 переменных, определённые на 2000 наборах. Программа осуществляла контроль правильности ввода исходных массивов. Если функция введена неверно , то выводились на печать неправильно введённые РОК или ЗОК , а программа переходила к минимизации следующей функции. Время , затраченное ЦВМ М-220 на минимизацию булевой функции от 36 переменных , определённой на 1000 наборах , составило 6 минут .В 1985г. на языке Паскаль эта программа была переписана для ПЭВМ ДВК-2М. Она обрабатывала 16 функций от 32 переменных. Количество наборов достигало 2000. Вопрос о минимизации булевых функций вручную или с использованием ПЭВМ решается в зависимости от количества наборов, на которых задана функция, количества соседних РОК и ЗОК, а также от частоты чередования РОК и ЗОК в исходной таблице истинности. Чем больше количество наборов, задающих функцию, чем меньше соседних РОК и ЗОК, чем выше частота чередования РОК и ЗОК, тем предпочтительнее использование ЭВМ. Например, систему из 7 булевых функций от 18 переменных, заданную на 80 наборах , оказалось рациональнее решать с помощью ЭВМ , так как в этой системе не нашлось ни одной соседней пары РОК и ЗОК, а частота чередования РОК и ЗОК для отдельных функций достигала 40.Однако за 35 лет инженерной практики разработки цифровых устройств и систем автор лишь трижды обращался к услугам ЭВМ при решении задач минимизации булевых функций. Задание 4. 45 46 Методом обобщённых кодов найти минимальное представление функций, заданных на рабочих и запрещённых наборах. 4-1) РН(4): 0, 4, 6, 10; ЗН(4): 7, 13. Ответ : Кс = 1 4-2) РН(5): 4, 2, 29, 23; ЗН(5): 3, 21. Ответ : Кс = 7 = (1+1+2)+3 4-3) РН(6): 0, 9, 10, 13, 57, 63, 36; ЗН(6): 27, 29, 18, 44, 33. Ответ : Кс = 9 = (2+2+2)+3 4-4) РН(6): 1, 4, 14, 21, 35, 62; ЗН(6): 3, 7, 30, 9. Ответ : Кс = 8 = (2+2+1)+3 4-5) РН(8): 16, 49, 35, 41, 253, 167, 158; ЗН(8): 99, 125, 90, 249, 1 Ответ : Кс = 9 = (2+2+2)+3 Примечание: Кс - коэффициент сложности булевой функции. 46 47 «Читай и слушай для собственного развлечения рассказы о хитроумных системах, вникай в интересные вопросы, поставленные там со всей изощрённостью, какой только может наделить их пылкая фантазия, но смотри на всё это только как на упражнения для ума и возвращайся каждый раз к согласию со здравым смыслом...» (Честерфилд «Письма к сыну») ЧАСТЬ 2 Математическая логика суждений и предикатов. Глава первая Всё, о чем далее будет идти речь (комплементарная логика, решение логических уравнений, русская силлогистика, силлогистика АристотеляЖергонна, общеразговорная силлогистика и т. д.) разработано в России и не известно мировой науке. Поэтому призываю всех читателей воспринимать мои методы крайне критически и обязательно проверять их с точки зрения здравого смысла. Весьма показателен пример некритического отношения к теории относительности (ТО), которую к 1998г. немецкие физики Георг Галецки и Петер Марквардт низвели с пьедестала. "Тысячи" экспериментов в защиту нечистоплотного Эйнштейна оказались фиктивными. Из 5 реальных попыток не было ни одной удачной. Великие русские учёные Н.Е.Жуковский и К.Э.Циолковский категорически отрицали ТО Эйнштейна. В СССР ещё в 40-е и 60-е годы также были выступления и публикации учёных, критиковавших ТО. Наиболее ярко отношение советской науки к ТО выражено в работах В. А. Ацюковского "Логические и экспериментальные основы теории относительности" – М.: МПИ, 1990 – 56с., «блеск и нищета теории относительности Эйнштейна» г.Жуковский: Петит, 2000 – 17с. и статье В.Булавина «Гений всех времён» (см. Internet). Прежде, чем приступить к рассмотрению базовых проблем, стоит совершить небольшой экскурс в историю логики. Эта наука как основополагающий раздел философии появилась в конце второго тысячелетия до н. э. в Индии. Затем она перекочевала в Китай, где в 479-381гг до н. э. наблюдался период расцвета логики и философии, связанный с учением Мо Цзы. Наибольшего развития логика достигает в Древней Греции. Главные её достижения связываются с именами Сократа(470-399гг. до н. э.), Платона(428348 гг. до н. э.), Аристотеля(384-322гг. до н. э.), стоиков Зенона из Китиона(336264гг. до н. э.) и Хризиппа(280-205гг. до н. э.), представившего теорию материальной импликации. Следует хотя бы просто перечислить имена ученых, уделявших самое пристальное внимание логике[36]. Ибн-Сина (Авиценна) – среднеазиатский мыслитель с широким кругом интересов, род. в 980г. в Афшане, возле Бухары, умер в 1037г. Ему уже была 47 48 известна формула импликации (возможно, из работ стоиков). Михаил Псёлл – византийский логик (1018-1096гг.), автор «квадрата Псёлла». Роджер Бэкон – английский философ(1214-1294гг.), считал в частности, что «простой опыт учит лучше всякого силлогизма», т. е. опирался на логику здравого смысла. Уильям Оккам – английский философ, логик(1300-1349гг.). Ввёл троичную логику за много веков до Лукасевича. Автор «принципа простоты» ("бритва Оккама"). Фрэнсис Бэкон (1561—1626), английский философ, родоначальник английского материализма. Лорд-канцлер при короле Якове I. В 1605 г. опубликовал свой трактат “Распространение образования”, в котором призывал положить в основу образования эксперименты и наблюдения. В его главном труде “Новый органон” (1620 г.) - был намечен научный метод, названный им индуктивным, для увеличения власти человека над природой. Он резко критиковал предложенный ещё Аристотелем метод установления истины из априорных предположений и предлагал производить множество опытов, которые способствуют ускорению темпа и строгости научного открытия. Утверждал, что логика Аристотеля не просто бесполезна, но вредна. Антуан Арно(1612-1694) и Пьер Николь(1625-1695) – французские логики, авторы книги «Логика Пор-Рояля» (монастырь во Франции), последователи Декарта. Арнольд Гейлинкс – бельгийский логик и философ(1625-1669гг). Опроверг за несколько веков до официального признания общезначимость модуса DARAPTI для 3-й фигуры силлогизмов. Доказал правила Де Моргана: 1. ab a+b 2. (a b)’ (b’ a’)’ 3. (bc)(ac)’ (ab)’ 4. (ab)(ac)’ (bc)’ 5. ab’ (ab)’ Готфрид Вильгельм Лейбниц – немецкий философ, математик, физик(1646-1716). Осовоположник символической логики. Впервые чётко сформулировал задачу математизации логики. Задолго до Эйлера использовал «круги Эйлера». Впервые поставил «техническое задание» для силлогистики. Сформулировал и доказал теоремы: 1. Aab Aac Aa(bc). На самом деле, иногда может быть и (a = bc). 2. Aab Acd A(ac)(bd). На самом деле, иногда может быть и (ac = bd). 3. A(ab)a, т. е. все (ab) суть а. 4. A(ab)b, т. е. все (ab) суть b. Якоб и Иоганн Бернулли(1654-1705 и 1667-1748) – ученики Лейбница. Ввели операцию вычитания множеств. Леонард Эйлер – математик, физик, астроном(1707-1783). Родился в Швейцарии, но вся научная жизнь прошла в России. Создатель «кругов Эйлера», основы формальной силлогистики. Иоганн Генрих Ламберт – швейцарский логик(1728-1777), последователь Лейбница. Предвосхитил ряд работ Джорджа Буля(разложение функции на элементарные составляющие), ввёл скалярные диаграммы для геометрической интерпретации силлогизмов, но не довёл их до практического применения для анализа и синтеза силогизмов. Ж.. Д. Жергонн – французский астроном и логик(1771-1859). Впервые 48 49 зафиксировал с помощью кругов Эйлера силлогистический базис Аристотеля. Август Де Морган – шотландский логик(1806-1871), автор логики отношений, «правил Де Моргана». Джордж Буль – английский логик(1815-1864),создатель Булевой алгебры. Отец Этель Лилиан Войнич (автор романа «Овод»). Платон Сергеевич Порецкий (1846-1907) – профессор Казанского университета. Он опередил не только своё время, но и Бертрана Рассела. П.Эренфест сказал, что Порецкий намного упростил приёмы решения логических уравнений по сравнению с Дж. Булем и Шредером. Могу добавить, что русский логик впервые в мире дал аналитическое представление силлогистических функторов Axy и Exy. Этого не заметили ни зарубежные логики, ни, что самое обидное, отечественные учёные. В течение 120 лет научные результаты великого русского логика не были востребованы наукой, которая до сих пор прозябает в невежестве. Основополагающие результаты Порецкого[34] до сих пор не освоены отечественной и мировой наукой. Аналитическая силлогистика зародилась 120 лет назад, но до сих пор не вошла в учебники логики. Николай Александрович Васильев(1880-1940) – советский учёный, автор монографии «О частных суждениях», в которой впервые заявляет, что силлогистика Аристотеля не имеет никакого отношения к здравому смыслу. Сформулировал требования к силлогистическому базису здравого смысла. Из современных учёных, пытающихся решить фундаментальные проблемы логики, необходимо в первую очередь отметить Брусенцова Н. П. [2 – 4], Светлова В. А., создавшего элегантные методы синтеза силлогизмов [35]. Особенно отрадно, что наряду с изяществом решения проблем силлогистики Светлов В.А. насытил свой труд огромным количеством примеров. Глава вторая 2.1.Законы логики суждений Автор не открывает здесь ничего нового (всё уже открыто более 120 лет назад величайшим русским логиком П.С.Порецким), но, излагая данный материал, хочет показать всю простоту аналитических выводов данных законов, следовательно, и их никчёмность: незачем заучивать десятки правил, если доказательство столь примитивно. Всё дело в том, что в классической логике доказательство построено на громоздком аппарате таблиц истинности и словесной казуистике[9].Трудно назвать грамотным такое решение проблемы. Инженерная логика использует более совершенный инструмент для анализа и синтеза законов[26]. Алгоритм «Импульс» анализа законов логики суждений. Алгоритм анализа законов логики суждений чрезвычайно прост: 1)произвести замену всех знаков импликации на символы дизъюнкции в соответствии с известной формулой x y = x’ + y; 2)привести полученное выражение к ДНФ; 3)занести ДНФ в карту Карно и убедиться, что она вся покрыта единицами – это свидетельствует о истинности проверяемого закона или суждения. Воспользуемся перечнем законов из [9] для апробации алгоритма «Им- 49 50 пульс». 1.Закон исключённого третьего: p или неверно, что p. В переводе на язык логики этот закон выглядит так: p + p’ = 1.Это тривиальное равенство, не требующее доказательства. 2.Закон непротиворечивости: неверно, что [р и не р]. На языке логики:p & p’ = 0. Это равенство верно по определению. 3.Закон двойного отрицания: если [не (не р)], то р. Необходимо доказать, что (p’)’ p = 1.Доказательство основано на двойном отрицании и импликации: (p’)’ p = p p = p’ + p = 1. 4.Обратный закон двойного отрицания: если р, то [не (не р)]. p (p’)’= p’ + p = 1. 5.Закон контрапозиции: если (если р, то q), то [если (не q), то(не р)]. (p q) (q’ p’) = (p’ + q) (q + p’) = pq’ + p’ + q = 1. 6.Законы, характеризующие конъюнкцию. 6.1.Если (р и q), то (q и р): pq qp = (pq)’ + pq = 1. 6.2.Если (р и q),то р: (pq) p = (pq)’ + p = p’ + q’ + p = 1. 6.3.Если р и q, то q: (pq) q = (pq)’ + q = p’ + q’ + q = 1. 6.4.Если р, то [если q, то (p и q)]: p (q pq) = p’ + q’ + pq = 1. 7.Законы импликативных силлогизмов. 7.1.Если [(если р, то q) и (если р,то r)], то [если р, то(q и r )]. [(p q)(p r)] (p qr) = [(p’ + q)(p’ + r)]’ + p’ + qr = = (p’+qr)’+p’+qr = 1. 7.2.Если [(если р, то q) и (если r,то s)],то [если(р и r),то (q и s)]. [(pq)(rs)] (prqs) = [(p’+q)(r’+s)]’+p’+r’+qs = pq’+rs’+p’+r’+qs = 1. 7.3.Если [(если р, то q) и (если q, то r)],то (если р, то r). [(pq)(qr)] (pr) = pq’+qr’+p’+r = 1. 7.4.Если [(если р, то q) и (если r, то q)],то [если (р или r), то q]. [(pq)(rq)] [(p+r) q] = pq’+rq’+p’r’+q = 1. 8.Законы, характеризующие дизъюнкцию. 8.1.Если (р или q), то (q или p). (p+q) (q+p) = (p+q)’+(p+q) = 1. 8.2.Если (р или q), то (если не р, то q). (p+q) (p’q) = p’q’+p+q = 1. Как видит читатель, такие законы можно «изобретать» и доказывать десятками. Во всех выводах применялась аналитическая минимизация логических функций. Однако значительно проще для этой цели использовать карты Карно. Безусловно, доказательство истинности того или иного суждения, закона, правила и т.п. весьма важно, но значительно интереснее и важнее выяснение всех возможных заключений, которые могут последовать из заданных посылок. Для этой цели служит алгоритм «Импульс-С». Алгоритм «Импульс-С» синтеза импликативного заключения. Алгоритм инженерного синтеза импликативных силлогизмов по заданным посылкам немногим отличается от предыдущего алгоритма: 50 51 1)найти полную единицу системы М посылок, заменив импликацию по формуле x y = x’ + y; 2)привести полученное выражение к ДНФ; 3)подставляя в полученное выражение необходимые аргументы и отбрасывая лишние, т.е. заменяя их логической единицей, выводим соответствующие заключения как функции интересующих нас аргументов. Если в результате подстановки будет получена единица, то заключение является частноутвердительным. Пример. Пусть известно, что [(pq)(qr)]. Найти заключение f(q,r). Решение. По алгоритму «Импульс-С» имеем: 1. M = (pq)(qr) = (p’+q)(q’+r). 2. M = (p’+q)(q’+r) = p’q’+p’r+qr = p’q’+qr. 3. f(q,r) = M(q,r) = q’+qr = q’+r = q r. Задача 2.1.1. Рассмотрим задачу из [7] о крокодиле. Когда крокодил похитил ребёнка одной египтянки и та попросила его не есть ребёнка, то крокодил ответил: " Я верну тебе ребёнка, если ты отгадаешь, что я с ним сделаю". Найти ответ египтянки. Решение. В [7] даётся пространное, на 5 страницах, словесное толкование различных ситуаций. Решим эту задачу аналитически. Обозначим через х - "крокодил съест ребёнка", через у - ответ египтянки: " Ты съешь ребёнка". Тогда условие крокодила будет описано следующей формулой: [(xy)x'][(x y)x] = ((x y)+ x’)(( xy)+x)=(xy'+x'y+x')(x'y'+xy+x)=(x'+y')(x+y') = y'. Следовательно, условие крокодила непротиворечиво лишь при ответе: " Ты не съешь ребёнка". Значит, египтянка должна ответить: " Ты съешь ребёнка" - тогда крокодил умрёт от противоречий. Аналогично решается задача о путнике на мосту, которого за правдивый ответ должны повесить, а за ложный - утопить. Задача 2.1.2. В тёмной комнате находятся 3 мудреца. На столе лежат 2 белых и 3 чёрных шляпы. Каждый мудрец надевает наугад одну из шляп, затем все "кильватерной колонной" выходят в освещённое помещение. 3-й мудрец видит шляпы 1-го и 2-го мудрецов, 2-й - только шляпу 1-го. На вопрос о цвете шляп 3й и 2-й мудрец ответили : " Не знаю" . Что сказал 1-й мудрец ? Решение. Пусть х1, х2, х3 означают, что чёрные шляпы надеты соответственно 1-м, 2-м и 3-м мудрецами. Ответ 3-го мудреца означает, что на на 1-м и 2-м - не 51 52 белые шляпы, что соответствует выражению (х1' х2')'. Если бы на первом мудреце была белая шляпа, то 2-й по ответу 3-го определил бы, что на нём чёрная шляпа . Т. к. 2-й мудрец не нашёл ответа, то имеем (х1')' = х1. В итоге получим: (х1' х2')'х1 = (х1 + х2)х1 = х1. Значит, на первом мудреце чёрная шляпа, а на втором могла быть любая шляпа. Задача 2.1.3. В [36,стр. 432] приведена аксиоматическая система Фреге. Непонятно, почему эта система носит название аксиоматической. Аксиома – это исходное положение, принимаемое без доказательств при дедуктивном построении теории(“Толковый математический словарь” – М.: Рус.яз., 1989 – 244с.). Докажем все “аксиомы” с помощью алгоритма “Импульс”. 1. M = a (b a) = a’+b’+a = 1 2. M = (c (ab)) ((ca) (cb)) = (c’+a’+b) (a’c+c’+b) = (c’+a’+b) (a’+c’+b) = 1 3. M = (a(bc)) (b(ac)) = (a’+b’+c) (b’+a’+c) = 1 4. M = (ab) (b’ a’) = (a’+b) (a’+b) = 1 5. a’’ a = a’+a = 1 6. a a’’ = a’+a = 1 Таким образом, мы подтвердили корректность всех “аксиом “ Фреге. Аксиомами их считать можно лишь при полном незнании математической логики. Арнольд Гейлинкс – бельгийский логик и философ(1625-1669гг) доказал правила де Моргана: 6. ab a+b 7. (a b)’ (b’ a’)’ 8. (bc)(ac)’ (ab)’ 9. (ab)(ac)’ (bc)’ 10. ab’ (ab)’ Докажем эти правила современными методами (алгоритм “Импульс”). ab a+b = (ab)'+a+b = a'+b'+a+b = 1 (a b)' (b'a')' = (a b)+(b+a')' = (a'+b)+(a'+b)' = 1 (bc)(ac)' (ab)' = bc'+a'+c+ab' = 1 (ab)(ac)' (bc)' = ab'+a'+c+bc' = 1 ab' (ab)' = (a'+b)+(a'+b)' = 1 Позднеримский философ Боэций (480-524) [36, стр. 100] выявил следующее соотношение: (x y) (x’y’ xy x’y). Классическая логика доказывает этот закон с помощью таблиц истинности, что и громоздко, и непрофессионально. С помощью алгоритма “Импульс” доказательство укладывается в две строчки. Читатель в состоянии самостоятельно выполнить это доказательство. Задача 2.1.4. В [36,стр.284] приводится закон замкнутых (гауберовых) (ab)(cd)(ef)(bd’)(df’)(fb’)(a+c+e) (a’b’)(c’d’)(e’f’). Проверим его состоятельность. 52 систем: 53 Решение. По алгоритму “Импульс” получим следующие соотношения. М = (ab)(cd)(ef)(bd’)(df’)(fb’)(a+c+e) (a’b’)(c’d’)(e’f’) = = (a’+b)(c’+d)(e’+f)(b’+d’)(d’+f’)(f’+b’)(a+c+e) (a+b’)(c+d’)(e+f’) = = ab’+cd’+ef’+bd+df+bf+a’c’e’+ad’e+ad’f’+b’d’e+b’d’f’+b’ce+b’cf’+acf’ = 1. Таким образом, мы доказали истинность закона. Однако проверим его физическую реализуемость. Ведь совершенно ясно, что (ab) (a’b’) 1. Поэтому проверим, какие выводы на самом деле следуют из заданных посылок. По алгоритму “Импульс - C” найдём полную единицу системы, а из неё сможем получить любые интересующие нас функции от необходимых аргументов. М=(ab)(cd)(ef)(bd’)(df’)(fb’)(a+c+e)= (a’+b)(c’+d)(e’+f)(b’+d’)(d’+f’)(f’+b’)(a+c+e) M’ = ab’+cd’+ef’+bd+df+bf+a’c’e’ После занесения M’ в карту Карно и заполнения оставшихся пустыми клеток карты единицами получим: M = a’b’c’d’ef+a’b’cde’f’+abc’d’e’f’, откуда M(a,b) = a’b’+ab = (a b) M(c,d) = c’d’+cd = (c d) M(e,f) = e’f’+ef = (e f) Это отнюдь не согласуется с выводами Гаубера. Для большей наглядности проиллюстрируем закон замкнутых систем скалярными диаграммами. В формуле полной единицы М мы получили три набора. Изобразим эти наборы в виде скаляров: М = 000011+001100+110000. Каждая единица набора изображается утолщённой линией. Графические результаты подтверждают наши аналитические выкладки. Функции импликации и равнозначности не идентичны. Как будет показано в дальнейшем, импликация аналогична силлогистическому общеутвердительному функтору. Поэтому результаты Гаубера некорректны. Суть его ошибки заключается в том, что были заданы очень жёсткие исходные уловия, которые могут быть выполнены лишь с некоторыми ограничениями. Задача 2.1.5. Это задача Лобановой С.В. При синтезе функции переноса в однораз- 53 54 рядном сумматоре получается выражение: p1 = p0(ab)+ab, где а,b – складываемые числа, p0 и p1 – входной и выходной переносы. После минимизации получается функция p1 = p0(a+b)+ab. Напрашивается «очевидный» вывод: (ab) = (a+b). Но это противоречит здравому смыслу и математике. Поэтому проверим истинность суждения: [(p0(ab)+ab) = [(p0(a+b)+ab)] [(ab) = (a+b)]. Решение. Доказывать истинность [(p0(ab)+ab) = [(p0(a+b)+ab)] [(ab)=(a+b)]=1 достаточно муторно, поэтому рассмотрим общий случай, на его основе выведем общий закон, а на основе закона решим задачу Лобановой С.В. Исходя из равенств y = ax+b, y = az+b проверить суждение [(ax+b) = (az+b)] (x=z), т.е. можно ли удалять из правой и левой части равенства одинаковые логические слагаемые и сомножители. На основе алгоритма «Импульс» получаем [(ax+b)=(az+b)](x=z) = (ax+b)(az+b)+(x=z) = (ax+b)(az+b) + b’(a’+x’)+ (x=z) = b+axz+a’b’+b’x’+xz+x’z’ = x’+z+a’+b 1. Из этого закона ясно видно, что исходное суждение ложно. Это было видно и без закона, на основании здравого смысла, однако его всегда нужно поддерживать строгими математическими доказательствами. Поскольку закон инициирован задачей Лобановой С.В., то он носит её имя. Поставить вопрос оказалось сложнее, чем ответить на него. Мы доказали, что нельзя сокращать обе части равенства на общие логические сомножители или удалять общие логические слагаемые. Закон Лобановой С.В. Сокращение на общий множитель или отбрасывание общих частей в левой и правой половинах логического уравнения недопустимо. Аналогично выведем и все другие импликативные законы логического умножения и сложения, не известные мировой классической логике. Простота алгоритмов «Импульс» и «Импульс-С» превращает дедуктивную логику в индуктивную. Математическое доказательство импликативных законов настолько просто, прозрачно и примитивно, что нет никакого резона запоминать не только их, но и подавляющее большинство остальных логических законов. Школьники и студенты ни в коем случае не должны зубрить любые законы, но обязаны при необходимости уметь их выводить. Зубрёжка унижает Человека. Связь импликативных законов с силлогистикой будет рассмотрена в соответствующем разделе. 54 55 55 56 56 57 57 58 58 59 Рассмотрим некоторые частные случаи импликативных законов. Попытаемся найти условия, при которых возможно сокращение общих множителей или исключение общих слагаемых. (ac=bc)(a→c)(b→c) → (a=b) = (ac=bc)(a’+c)(b’+c) → (a=b)=(ac≠bc)+ac’+bc’+(a=b) = = ac(bc)+(ac)’bc+ac’+bc’+ab+a’b’ = 1. ((a+c)=(b+c))(a→c’)(b→c’) → (a=b) = ((a+c)≠(b+c))+ac+bc+(a=b) = =(a+c)(b+c)’+(a+c)’(b+c)+ ac+bc+(a=b) = ab’c’+a’bc’+ac+bc+ab+a’b’ = 1. Нам удалось найти такие условия. Смысл этих условий станет понятным при изучении силлогистики, когда мы докажем, что (x → y) ≡ Axy. 2.2. Практикум по логике суждений. Прекрасным примером применения логики суждений для доказательства законов в различных областях науки являются задачи, предложенные Сергеем Леонидовичем Катречко[8]. Речь идёт о таких науках как математика, физика, химия, грамматика, богословие и др. Сам автор решает эти задачи на основе рассуждений. Однако алгоритм “Импульс” существенно упрощает выводы. Задача 2.2.1. Если равнодействующая всех сил, действующих на движущееся тело, не равна 0, то оно движется неравномерно или непрямолинейно, так как известно, что если эта равнодействующая равна 0, то тело движется раномерно и прямолинейно. Решение. Проверим это утверждение. Введём следующие обозначения: X – равнодействующая всех сил равна 0, 59 60 Y – движение равномерно, Z - движение прямолинейно. Тогда по алгоритму “Импульс” получим: (x yz) (x’ (y’+z’)) = (x’+yz) (x+y’+z’) = x(y’+z’)+x+y’+z’ = = x+y’+z’ 1. Т.е. мы доказали несостоятельность данного доказательства, но не утверждения. Здесь посылка и заключение связаны эквивалентностью, а не импликативностью. Задача 2.2.2. Если все посылки истинны и рассуждение правильно, то заключение правильно. В данном рассуждении заключение ложно. Значит, или рассуждение неправильно, или не все посылки истинны. Решение. X – посылки истинны, Y – рассуждение правильно, Z - заключение верно. (xy z)z’ (y’+x’) = (x’+y’+z)z’ (y’+x’) = xy+z+y’+x’ = 1. Задача 2.2.3. Если в суффиксе данного полного прилагательного или причастия пишется два н, то они пишутся и в соответствующем наречии. Неверно, что в суффиксе данного наречия пишется два н. Следовательно, в суффиксе полного прилагательного или причастия, из которого образовалось наречие, пишется одно н. Решение. X – в причастии два н, Y – в полном прилагательном два н, Z – в наречии два н. ((x+y) z)z’ x’y’ = (x’y’+z)z’ x’y’ = x’y’z’ x’y’ = x+y+z+x’y’ = 1. Мы доказали даже более сильное утверждение. Задача 2.2.4. Бог или бессилен предотвратить зло, или он не желает предотвращать его(зло существует на Земле). Если бог всемогущ, то неверно, что он бессилен предотвратить зло. Если бог всеблаг, то неверно, что он не желает предотвращать зло. Следовательно, неверно, что бог всемогущ и всеблаг. Решение. X – бог всемогущ, Y – бог всеблаг, U – зло существует, V – бессилен против зла, W – желает предотвратить зло. u(u (v+w’))(x v’)(y w) (xy)’ = u(u’+v+w’)(x’+v’)(y’+w) (xy)’ = = u’+uv’w+xv+yw’+x’+y’ = 1. Таким образом, мы чисто аналитически(математически) доказали, что бог не всемогущ и не всеблаг одновременно. Однако это заключение можно оспорить, если удастся доказать некорректность посылок. Задача 2.2.5. 60 61 Если каждый раз в полдень солнце находится в зените и сейчас полдень, то сейчас солнце находится в зените. Решение. X – сейчас полдень, Y – солнце в зените. (x y)x y = (x’+y)x y = xy y = x’+y’+y = 1. Однако обратное утверждение неверно: (x y)y x = (x’+y)y x = y x 1. Это заключение не согласуется со здравым смыслом. Ошибка вызвана тем, что X и Y связаны отношением эквивалентности, а не следования. Поэтому формальный вывод должен выглядеть так: (x y)x y = xy y = x’+y’+y = 1 (x y)y x = xy x = x’+y’+x = 1 Задача 2.2.6. Если нельзя получить воду, то неверно, что имеется в наличии водород и оксид магния. Если имеется углерод, но углекислого газа получить не удалось, то не было в наличии кислорода. Если имеется углекислый газ и вода, то можно получить углекислоту. Можно ли получить углекислоту, если имеется в наличии оксид магния, кислород, водород и углерод. Решение. X – нет воды, Y – есть водород и оксид магния, Z – есть углерод, U – есть углекислый газ, V – есть кислород, W – есть углекислота. (x y’)(zu’ v’)(ux’ w) (yvz w) = (x’+y’)(z’+u+v’)(u’+x+w) (y’+v’+z’+w) = xy+zu’v+ux’w’+y’+v’+z’+w = 1. Это означает, что углекислоту получить можно. Задача 2.2.7.(18) Он сказал, что придёт, если не будет дождя.(а на его слова можно полагаться). Но идёт дождь. Значит, он не придёт. Решение. X – он придёт, Y – нет дождя. (y x)y’ x’ = (y’+x)y’ x’ = y’ x’ = y+x’ 1. Задача 2.2.8.(19) Джонс утверждает, что не встречал этой ночью Смита. Если Джонс не встречал этой ночью Смита, то либо Смит был убийцей, либо Джонс лжёт. Если Смит не был убийцей, то Джонс не встречал его этой ночью, а убийство было совершено после полуночи. Если убийство было совершено после полуночи, то либо Смит был убийцей, либо Джонс лжёт. Следовательно, убийцей был Смит. Решение. X – Джонс не встречал Смита, X’ – Джонс лжёт, т.е. он встречал этой ночью Смита, Y – Смит – убийца, Z – убийство было совершено после полуночи. 61 62 (x ( y+x’))(y’ xz)(z (y+x’)) y = (x’+y)(y+xz)(z’+y+x’) y = xy’+y’(x’+z’)+xy’z+y = 1. Задача 2.2.9.(23) Если элементарная частица имеет античастицу или не относится к числу стабильных, то она имеет массу покоя. Следовательно, если элементарная частица не имеет массы покоя, то она относится к числу стабильных. Решение. X – наличие античастицы, Y – частица нестабильна, Z – наличие массы покоя. ((x+y) z) (z’ y’) = (x’y’+z) (z+y’) = (x+y)z’+z+y’ = xz’+yz’+z+y’ = 1. Задача 2.2.10.(26) Прямые a и b или параллельны, или пересекаются, или скрещиваются. Если прямые a и b лежат в одной плоскости, то они не скрещиваются. Прямые a и b лежат в одной плоскости и не пересекаются. Следовательно, прямые a и b параллельны. Решение. X – прямые параллельны, Y – прямые пересекаются, Z – прямые скрещиваются, U – прямые лежат в одной плоскости. (xy’z’+x’yz’+x’y’z)(u z’)uy’ x = (xy’z’+x’yz’+x’y’z)(u’+z’)uy’ x = (xy’z’+x’yz’+x’y’z)’+uz+u’+y+x = 1. Эта задача может быть упрощена за счёт того, что z = (x+y)’: (u (x+y))uy’ x = (u’+x+y)uy’ x = xy’u x = x’+y+u’+x = 1 Дополнительно решим ещё одну задачу из геометрии: M = (y u)y’ = (y’+u)y’ = y’ M(u) = 1, т.е. нельзя сказать ничего определённого относительно плоскостей в том случае, когда прямые не пересекаются: « Возможно, прямые лежат в одной плоскости». Задача 2.2.11.(28) Если философ – дуалист, то он не материалист. Если он не материалист, то он диалектик или метафизик. Он не метафизик. Следовательно, он диалектик или дуалист. Решение. X – дуалист, Y – материалист, Z – диалектик, U – метафизик. (x y’)(y’ (z+u))u’ (z+x) = (x’+y’)(y+z+u)u’(x+z) = xy+u’y’z’+u+x+z 1. Следовательно, заключение неверно. А каков же правильный ответ? По алгоритму «Импульс – С» получим следующие результаты. M = (x y’)(y’ (z+u))u’ = (x’+y’)(y+z+u)u’. M’ = xy+u’y’z’+u. Из карты Карно получим M = u’y’z+u’x’y. Откуда выводятся правильное заключение: f(x,y,z) = x’y+y’z , т.е. философ – материалист или диалектик или то 62 63 и другое вместе. Задача 2.2.12.(34) Перед последним туром футбольного чемпионата сложилась турнирная ситуация, позволяющая утверждать следующее. Если «Динамо» проиграет свой последний матч, то в случае выигрыша «Спартака» он станет чемпионом. Если же «Спартак» выиграет матч и станет чемпионом, то «Торпедо» займёт второе место. В последнем туре первыми стали известны результаты встреч с участием «Динамо» и «Спартака»: «Динамо» проиграло, а «Спартак» выиграл. Можно ли в этом случае, не дожидаясь результатов других встреч, утверждать, что «Спартак» стал чемпионом, а «Торпедо» заняло второе место? Решение. A – выиграет «Динамо», B – выиграет “Спартак”, C – “Спартак” – чемпион, D – “Торпедо” на втором месте. (a’b c)(bc d)a’b cd = ( a+b’+c)(b’+c’+d)a’b +cd = 1, т.е. «Спартак» стал чемпионом, а «Торпедо» заняло второе место. Задача 2.2.13.(37) Докажите следующую теорему: если прямая l, принадлежащая плоскости P, не перпендикулярна прямой n, то она не перпендикулярна проекции m прямой n на плоскость P, если верна следующая теорема: если прямая l принадлежит плоскости P и перпендикулярна проекции m прямой n на плоскость P, то прямая l перпендикулярна прямой n. Решение. X – l перпендикулярна m, Y – l перпендикулярна n. (x y) (y’ x’) = (x’+y) (y+x’) = 1. Мы доказали теорему, не привлекая никаких познаний из стереометрии и даже не зная о её существовании. Задача 2.2.14.(38) Известно, что, если данный многоугольник правильный, то в него можно вписать окружность. 1. Данный многоугольник правильный, следовательно, в него можно вписать окружность. 2. В данный многоугольник нельзя вписать окружность, следовательно, он неправильный. 3. В данный многоугольник можно вписать окружность, следовательно, он правильный. Проверить эти утверждения. Решение. X – многоугольник правильный, Y – в многоугольник можно вписать окружность. 1. (x y)x y = (x’+y)x y = xy y x’+y’+y = 1. 2. (x y)y’ x’ = (x’+y)y’ x’ = x’y’+x’ x+y+x’ = 1. 3. (x y)y x = (x’+y)y x = y x y’+x 1, т.е. третье утверждение ложно. Это легко докажет школьник, знающий геометрию, но нам эти познания не потребовались. 63 64 Задача 2.2.15.(39) Если число делится на 4, то оно чётное. Число – чётное. Значит,оно делится на 4. Решение. X – число делится на 4, Y – число чётное. (x y)y x = (x’+y)y x = y x = y’+x 1. Задача 2.2.16. Если целое число больше 1, то оно простое или составное. Если целое число больше 2 и чётное, то оно не является простым. Следовательно, если если целое число больше 2 и чётное, то оно составное(здесь присутствует скрытая посылка). Решение. x – число больше 1 y – число простое z – число составное u – число больше 2 и чётное. Скрытая посылка зыключена в том, что число может быть или простым, или составным, третьего не дано,т.е. y’ = z. (x (y+z))(u y’)(y’=z) (u z) = (x’+y+z)(u’+y’)(y’=z) (u’+z ) = xy’z’+uy+yz+y’z’+u’+z = 1 Задача 2.2.17. Если бы он не пошёл в кино, то он не получил бы двойки. Если бы он подготовил домашнее задание, то не пошёл бы в кино. Он получил двойку. Значит, он не подготовил домашнее задание. Решение. x – пошёл в кино y – получил двойку z – подготовил домашнее задание. (x’ y’)(z x’)y z’ = (x+y’)(z’+x’)y z’ = x’y+xz+y’+z’ = 1. Задача 2.2.18. Я люблю Бетти или я люблю Джейн. Если я люблю Бетти, то я люблю Джейн. Следовательно, я люблю Джейн. Решение. х – люблю Бетти у – люблю Джейн (x+y)(x y) y = (x+y)(x’+y) y = y y = y’+y = 1. Задача 2.2.19. Если аргументы некоторого рассуждения истинны, а его тезис не является таковым, то рассуждение не является правильным. Данное рассуждение правильно и его аргументы истинны. Следовательно, его тезис является истинным. Решение. 64 65 X – аргументы верны Y – тезис верен Z – рассуждение верно. (xy’ z’)xz y = (x’+y+z’)xz y = xyz y = x’+y’+z’+y = 1. Задача 2.2.20. Докажите, что если натуральное число оканчивается на 0 и сумма цифр кратна 3, то само это число кратно 15. Используйте при этом следующие посылки: если число оканчивается на 0, то оно кратно 5; если сумма цифр числа кратна 3, то число кратно 3; если число кратно 3 и кратно 5, то оно кратно 15. Решение. X – число кратно 5 Y – число кратно 3 Z – число кратно 15 U – число оканчивается на 0 V – сумма цифр числа кратна 3. (u x)(v y)((xy z) (uv z) = (u’+x)(v’+y)(x’+y’+z) (u’+v’+z) = ux’+vy’+xyz’+u’+v’+z = 1. Задача 2.2.21. Если студент знает логику, то он сможет проверить выводимость формулы из посылки. Если студент не знает логику, но он прослушал курс "Логика" и освоил математический анализ в логике суждений, то он также сможет установить выводимость формулы. Значит, если студент или знает логику, или прослушал курс "Логика" и освоил матанализ в логике суждений, то он может проверить выводимость формулы из посылок. Решение. X – знает логику Y – сможет проверить выводимость формулы из посылки Z – прослушал курс логики и освоил матанализ в логике суждений. (x y)(x’z y) ((x+x’z) y) = (x’+y)(x+z’+y) (x’z’+y) = xy’+x’zy’+x’z’+y = 1. Задача 2.2.22. Если каждое действительное число есть алгебраическое число, то множество действительных чисел счётно. Множество действительных чисел несчётно. Следовательно, не каждое действительное число есть алгебраическое число. Решение. X – действительное число Y – алгебраическое число Z – счётное множество чисел. ((x y) (x z))(x z)’ (x y)’ = ((x’+y) (x’+z))(x’+z)’ (x’+y)’ = (xy’+x’+z)(x’+z)’ xy’ = (x’+y)xz’+x’+z +xy’ = xyz’+x’+z+xy’ = 1. Задача 2.2.23. Курс акций падает, если процентные ставки растут. Большинство владельцев акций разоряется, если курс акций падает. Следовательно, если процентные ставки растут, то большинство владельцев акций разоряется. 65 66 Решение. X – курс акций падает Y – процентные ставки растут Z – акционеры разоряются. (y x)(x z) (y z) = (y’+x)(x’+z) (y’+z) = x’y+xz’+y’+z = 1 Задача 2.2.24. Если капиталовложения останутся постоянными, то возрастут правительственные расходы или возникнет безработица. Если правительственные расходы не возрастут, то налоги будут снижены. Если налоги будут снижены и капиталовложения останутся постоянными, то безработица не возрастёт. Следовательно, правительственные расходы не возрастут. Решение. X – капиталовложения постоянны Y – правительственные расходы растут Z – растёт безработица U – снижаются налоги. (x (y+z))(y’ u)(ux z’) y’ = (x’+y+z)(y+u)(u’+x’+z’) y’ = xy’z’+y’u’+xzu+y’ 1. Следовательно, заключение неверно. Задача 2.2.25. Проверьте правильность рассуждения средствами логики суждений: "Если человек осуждён судом, то он лишается избирательных прав. Если человек признан невменяемым, то он также лишается избирательных прав. Следовательно, если человек обладает избирательным правом, то он здоров и не был осуждён судом". Решение. X – осуждён судом Y – лишён избирательных прав Z – невменяем. (x y)(z y) (y’ x’z’) = (x’+y)(z’+y) (y+x’z’) = xy’+zy’+y+x’z’ = 1. Задача 2.2.26. Если Джон - автор этого слуха, то он глуп или беспринципен. Следовательно, если Джон не глуп или не лишён принципов, то он не является автором этого слуха. Решение. X – Джон – автор слуха Y – Джон глуп Z – Джон беспринципен. (x (y+z)) ((y’+z’) x’) = (x’+y+z) (yz+x’) = xy’z’+yz+x’ 1, т.е. Джон даже в этом случае может распускать слухи. Задача 2.2.27. Если в параллелограмме один угол прямой, то диагонали такого параллелограмма равны. Следовательно, при несоблюдении этого требования диаго- 66 67 нали параллелограмма не равны. Решение. X – в параллелограмме один угол прямой; Y - диагонали параллелограмма равны. (x y) (x’ y’) = (x’+y) (x+y’) = xy’+x+y’ = x+y’ 1, т.е. мы утверждаем, что заключение неверно. Однако любой школьник, любящий геометрию, скажет, что мы ошибаемся. И он будет прав: дело в том, что прямоугольники и параллелограммы с равными диагоналями соединены не причинноследственными связями, а функцией эквивалентности. Нельзя применять логику бездумно. Поэтому решение должно быть таким: (x y)(x’ y’)=(x’y’+xy)(x+y’)=xy’+x’y+x+y’ = 1, что и требовалось доказать. Надеюсь, что такая логика понравится даже тем учащимся, которые не любят математику,грамматику,физику, химию и другие науки, поскольку логика легко и просто решает задачи всех научных дисциплин. 67 68 Глава третья Силлогистика. Употребляйте с пользой время. Учиться надо по системе. Сперва хочу вам в долг вменить На курсы логики ходить. Ваш ум, не тронутый доныне, На них приучат к дисциплине, Чтоб взял он направленья ось, Не разбредаясь вкривь и вкось. Что вы привыкли делать дома Единым махом наугад, Как люди пьют или едят, Вам расчленят на три приема И на субъект и предикат. В мозгах, как и в мануфактуре, Есть ниточки и узелки. Посылка не по той фигуре Грозит запутать челноки. (Гете "Фауст") В этом фрагменте из «Фауста» как в капле воды отразилась вся классическая силлогистика, вся логика Аристотеля. Этот раздел посвящён так называемому обобщённому(интегрированному) анализу и синтезу силлогизмов. Едва ли подобные интегрированные оценки потребуются при решении проблем искуственного интеллекта (ИИ), поэтому интегрированную силлогистику можно просмотреть «по диагонали». Под силлогистикой понимается раздел логики, занимающийся анализом и синтезом силлогизмов. Силлогизм – это логическая конструкция, состоящая из двух посылок, связанных общим термином, и следующего из этих посылок заключения. Классический пример силлогизма с общим(средним) термином «люди»: Все люди смертны. Сократ – человек. Сократ смертен. В жизни такие силлогизмы встречаются чрезвычайно редко. Гораздо чаще мы сталкиваемся с такими наборами посылок, из которых вывести заключение значительно сложнее. Рассмотрим некоторые примеры подобных силлогизмов. В книге Бахтиярова К.И. "Логические основы компьютеризации умозаключений" приводится тест Ф.Джонсон-Лэрда и М.Стидмена: Ни один химик не есть пчеловод. Некоторые пчеловоды - художники. -------------------------------------------Некоторые художники - не химики. Такое заключение должно следовать, по мнению авторов, из данных посылок. Тестирующие весьма огорчились, что с этим простым заданием справились лишь 8 человек из 20. На самом же деле задачку не решил никто, в том числе и тестирующие профессора. Ответ совершенно иной. Западные препо- 68 69 даватели в принципе не могли решить данный силлогизм. Бертран Рассел в своей работе «История западной философии» (М.:2000 –768с.) на стр.194 решает силлогизм: Все люди разумны. Некоторые животные – люди. Некоторые животные – разумны. «Провокационный» силлогизм автора. Все люди смертны. Некоторые люди неграмотны. -----------------------------------------Некоторые смертные неграмотны. В соответствующих разделах мы рассмотрим и проверим все вышеприведённые примеры. Троичная логика. При аналитическом описании базисов силлогистики приходится использовать троичную логику. Эту логику представим следующими базисными операциями : инверсией, конъюнкцией и дизъюнкцией [3]. Таблица базисных функций 3-значной логики Базисные функции определяются следующии соотношениями : XY = min(X,Y) X+Y = max(X,Y) Минимизация логических функций от двух аргументов в троичной логике несущественно отличается от аналогичной операции в булевой алгебре. Используя свойство 1+i=1, мы, например, имеем право приводить выражения типа xy+i(x’+y’) к виду xy+i. Базисы силлогистики. 69 70 Современная логика суждений давно вызывает неудовлетворенность как своим несоответствием Аристотелевой логике,так и нечеткостью описания с точки зрения математической логики. Введение кванторов не разрешило этих проблем, поскольку кванторы являются просто мнемоникой. Это называется «поменяли шило на мыло»: вместо силлогистических функторов А, I ввели квантор всобщности и квантор существования. Рассмотрим вначале логику непосредственных умозаключений[9]. Для выражения любого умозаключения или посылки достаточно двух конструкций (в скобках представлена краткая форма записи суждений): 1)Все X суть Y(Axy); 2)Некоторые X суть Y(Ixy); Однако традиционно в логике используются 4 базовых суждения (силлогистических функтора): 1)Все X суть Y(Axy); 2)Ни один X не есть Y(Exy); 3)Некоторые X суть Y(Ixy); 4)Некоторые X не суть Y(Oxy). Из диаграмм Венна с помощью таблиц истинности на основе классического синтеза логических функций могут быть тривиально получены следующие соотношения [23]: Axy = x'+y (1) Exy = x'+y' (2) Эти соотношения не вызывают сомнений, тем более, что подтверждение тому можно найти при внимательном прочтении фундаментальной, основополагающей работы Порецкого П.С.[34]. Не знать её или не разобраться в ней для логика(для математика тем более) так же постыдно, как для школьника не знать таблицу умножения. Используя метод представления общеутвердительного функтора как пересечения множеств Х и Y по – Порецкому, получим следующий результат: Axy ≡ (x = xy) = xy + x’(xy)’ = xy + x’(x’ + y’) = xy + x’ = x’ + y. Аналогично выводится и соотношение для Exy: Exy ≡ (x = xy’) = xy’+x’(xy’)’ = xy’+x’(x’+y) = xy’+x’ = x’+y’. Кстати говоря, из соотношения Axy = x'+y = x → y следует и объяснение физического смысла импликации. Поскольку высказывание «Все Х суть Y» эквивалентно импликации «Из истинности Х следует истинность Y», постольку эквивалентны и их аналитические представления. Действительно, высказывания «Все люди талантливы» и «Если ты человек, то ты талантлив» с точки зрения здравого смысла означают одно и то же. Отсюда же следует и вывод о бессмысленности разделения логики на силлогистику и логику суждений. Что касается суждений Ixy, Oxy,то здесь сложилась спорная ситуация. Во-первых, ни в одном источнике нет аналитического представления силлогистического функтора (квантора[32]) Ixy, т.е. фактически нет аналитического описания базиса силлогистики. Это и понятно: для решения данной задачи требуется многозначная логика. В классической силлогистике все авторы стремились использовать двузначную логику. Во-вторых, здравый смысл и булева алгебра утверждают, что Oxy =(Ixy)', а в традиционной логике Oxy = (Axy)' и Ixy = (Exy)', что отнюдь не бесспорно и не убедительно. Однако примем на веру эти формулы, поскольку именно их рекомендуют для запоминания студентам. На этом основании мы получим следующие формулы для Ixy,Oxy: Ixy = (Exy)' = xy (3) 70 71 Oxy = (Axy)' = xy' Прежде всего эти соотношения противоречат друг другу. По определению "Некоторые Х суть Y" и "Некоторые Х не суть Y" взаимно инверсны, т.е. Ixy = (Oxy)', Oxy = (Ixy)'. А из приведённых формул следует эквивалентность суждений "Некоторые Х не суть Y" и "Некоторые Х суть не-Y", что совсем не соответствует действительности. Кроме того, частноотрицательное суждение вообще не имеет самостоятельного смысла, поскольку является тривиальным отрицанием частноутвердительного высказывания. Выборочная проверка при помощи кругов Эйлера "правильных" модусов EIO 1-й - 4-й фигур, EAO, OAO 3-й фигуры и AAI, EAO 4-й фигуры также подтвердила всю несостоятельность соотношений Ixy, Oxy. Аналитический метод контроля силлогизмов дал такие же результаты. Попытаемся прояснить содержательный смысл соотношения (3), из которого следует, что безусловно существуют лишь ситуация x=y=1. Поскольку логические аргументы представляют собой скаляры, максимальная длина которых не может превышать "полной единицы" (универсума), т.е. x+x'=1, введем понятие скалярных диаграмм и заменим ими круги Эйлера. Необходимо отметить, что впервые геометрическую интерпретацию (интервальный метод изображения множеств ) силлогистических функторов применил Иоганн Генрих Ламберт(1728-1777гг. ), немецкий философ, математик, физик и астроном. Однако, он допустил ряд ошибок, главной из которых явилось отсутствие фиксации универсума. Эта ошибка на несколько столетий похоронила идею математической силлогистики. Из рисунка видно, что такая "логика" не имеет никакой практической ценности. "Бытовой" логике, вероятно, более соответствует нижеприведённая скалярная диаграмма. Скалярная диаграмма не только определяет суждение Ixy как пересечения множеств X и Y, но и отмечает различные ситуации этого пересечения. Все аналитические соотношения получены на основе трёхзначной логики. B аристотелевой силлогистике под Ixy понимается любая комбинация понятий x,y, лишь бы пересечение этих понятий не было пустым[1,35]. Аристотелевой трактовке этого суждения соответствуют следующие скалярные диаграммы. 71 72 Вновь введенные скалярные диаграммы отличаются от диаграмм Ламберта[36] следующими принципиальными характеристиками: 1)наличие фиксации универсума; 2)размещение силлогистического функтора Еxy на двух, а не на одном уровне; 3)возможность "дробного" (разрывного) представления понятия в пределах универсума; 4)возможность графической и аналитической интерпретации результатов анализа и синтеза силлогизмов. Наличие даже одного из перечисленных отличий привело к переименованию кругов Эйлера в диаграммы Венна. Вполне естественно, что вновь введённые скалярные диаграммы получили название диаграмм Лобанова. Справедливости ради следует отметить, что скалярные диаграммы впервые применил Лейбниц[12, стр.601], но как и его ученик Ламберт не сумел их использовать для аналитического описания функторов и синтеза заключений в силлогизмах. На рисунке показан процесс перехода от диаграмм Венна к диаграммам Лобанова и синтез по ним аналитического описания силлогистических функторов Axy, Exy, Ixy. 72 73 С аристотелевским определением частного суждения Ixy не согласны многие логики. В работе [5] автор утверждает, что "научное употребление слова "некоторые" совпадает с общеразговорным", т.е. с бытовым, а не аристотелевским. Кроме того, Васильев Н.А. считает,что Ixy и Oxy должны считаться одним суждением. Он также заявляет: "В математике так называемые частные суждения сводятся ... к общим, и она прекрасно обходится без этого нелепого в совершенной науке слова "некоторые". К этому же должна стремиться и всякая наука... Частное суждение нужно рассматривать вовсе не как какой-то вывод из общего суждения, а как особый вполне самостоятельный вид суждения, вполне координированный с общими суждениями, исключающий их и исключаемый любым из них…Частноутвердительное и частноотрицательное суждение суть одно суждение, а не два.". С точкой зрения такого известного ученого трудно не согласиться. Да и здравый смысл просто бунтует против Аристотелевой трактовки частноутвердительного и частноотрицательного суждений. Имеет некоторый практический смысл и такая трактовка суждения Ixy, как представленная на скалярной диаграмме. 73 74 Под базисом силлогистики будем понимать всевозможные варианты представления суждений Axy, Exy, Ixy. Суждение Oxy получается автоматически из Ixy, поскольку является его отрицанием. 3.1. Все x суть y(Axy). 1.Традиционное представление этого суждения изображено на скалярной диаграмме, по которой заполнена таблица истинности. По таблице истинности синтезируем логическую функцию Axy: Axy = (xy')' = x'+y = Ay'x' = Exy' = (xy) = (y'x') Здесь уместно сделать одно замечание. Много копий было сломано при выяснении физической сущности импликации. Из таблицы истинности этот смысл не вырисовывался и вызывал недоумение. Но ведь x y = x’ + y = Axy. Да и в жизни импликация и общеутвердительный квантор эквивалентны. Мы можем сказать: «Во всяком равнобедренном треугольнике углы при основании равны». То же значение имеет и импликативное утверждение: «Если треугольник равнобедренный, то углы при его основании равны». 2.Традиционное представление Axy не исчерпывает все комбинация аргументов x,y представлена на диаграмме. 74 ситуации. Вторая 75 Ситуация, представленная на рисунке под символом Y2, может быть проиллюстрирована следующим высказыванием: "Все люди смертны". Это справедливо при условии, что "мир"(универсум) - все живые существа,т.к.все живое-смертно. С учетом вышеизложенного выражение для функции Axy примет вид: Axy = y+ix'y' С точки зрения здравого смысла, учитывая то обстоятельство, что аргументами во всех силлогистических функторах(кванторах) являются множества, не может множество Y быть одновременно и равно множеству X, и больше этого множества. Возможно, Аристотель пытался искать заключения в силлогизмах для случаев полного отсутствия информации о мощности аргументовмножеств. При решении задач ИИ такая ситуация недопустима. 3.Третий вариант суждения Axy изображен на скалярных диаграммах. По cравнению со 2-м вариантом здесь добавлено суждение "y эквивалентно универсуму". Для ситуации на рисунке под символом Y3 справедливо высказывание "Все люди владеют словом". Если весь "мир" - живые существа, то понятия "люди" и "говорящие живые существа" эквивалентны. Из таблицы получаем следующее соотношение: 75 76 Axy = xy+ix' Эти три варианта базиса для Axy не исчерпывают всех ситуаций, но в силлогистике оставшиеся за пределами рассмотрения комбинации аргументов не являются решающими. 3.2. Ни один x не есть y(Exy). 1.Классическое представление Exy изображено на скалярных диаграммах. Из таблицы имеем: Exy = (xy)' = x'+y' = Axy' = Ayx' = Eyx = (xy') = (yx') По методу Порецкого [34] с использованием формулы равнозначности получим: Exy = (x = xy’) = xy’+x’(xy’)’ = xy’+x’ = x’+y’. 2.Второй вариант суждения Exy представлен на рисунке. Для иллюстрации диаграммы рисунка под символом Y2 подходит высказывание "Ни один живой не есть мертвый". Из таблицы имеем: Exy = x'y+xy'+ix'y' 76 77 3.3. Некоторые x суть y. Лобачевский Н.И. создал "воображаемую геометрию". По образу и подобию великого русского геометра не менее великий русский логик Васильев Н.А. разработал "воображаемую логику". Мы попробуем разобраться хотя бы в общеразговорной(бытовой) логике, тем более что в [5] частному суждению Ixy уделено недостаточное внимание. 1.Первый вариант суждения Ixy представлен на рисунке. Иллюстрацией для этого варианта служит высказывание "Некоторые люди(x) мудрые люди(y)"("мир" - люди). Из таблицы получим соотношение: Ixy = x 2.Второй вариант суждения Ixy представлен на рисунке. Из таблицы получим соотношение: Ixy = x+y+ix'y'. После минимизации формула примет вид Ixy = x+y+ix' = x+y+iy'. Здесь метод Порецкого бессилен, т. к. он расчитан лишь на описание общеутвердительных или общеотрицательных суждений. 77 78 3.Третий вариант суждения Ixy представлен на рисунке. Этот базис соответствует Аристотелевскому [36]. Из таблицы получим соотношение: Ixy = xy+i(x'+y') = xy+i. 4.Четвёртый вариант суждения Ixy представлен на рисунке. Этот базис получил название несимметричного. Ситуация на рисунке под символом Y1 иллюстрируется высказыванием "Некоторые юристы(x) - выпускники юридических вузов(y)"(не-юристов юридические вузы не выпускают). Из таблицы получим соотношение: Ixy = x+y'+ix'y = x+y'+iy 78 79 5.Пятый вариант суждения Ixy представлен на рисунке. Ситуация на рисунке под символом Y3 иллюстрируется высказыванием "Некоторые люди(x) суть неговорящие существа(y)" (не - люди тем более не разговаривают). Универсум - "живые существа". Из таблицы получим соотношение: Ixy = x+ix' = x+i. 6.Шестой вариант суждения Ixy представлен на рисунке. Из таблицы получим соотношение: Ixy = x+y 7. Седьмой вариант функтора Ixy выглядит так: 79 80 После минимизации получим Ixy = y+i. 9. Восьмой вариант функтора Ixy (базис Васильева Н. А.). Этот вариант удовлетворяет всем требованиям Васильева Н.А.: Ixy = Ix’y = Ixy’ = Ix’y’. 9.Девятый вариант суждения Ixy представлен на рисунке. Из таблицы получим соотношение: Ixy = xy+x'y'+i(xy'+x'y) = xy+x'y'+i 80 81 Вопрос о выборе базиса должен решаться отдельно для каждого конкретного силлогизма. Нередко частноутвердительное суждение бездумно употребляется вместо общеутвердительного. Если для суждения "Некоторые животные - млекопитающие" мы будем использовать любой симметричный базис, то придем к абсурдному заключению "Некоторые млекопитающие - животные", поскольку на самом деле исходное суждение должно иметь вид "Все млекопитающие - животные". Именно такую ошибку дважды допустили преподаватели Кэмбриджа и Оксфорда, авторы хорошего учебного пособия по философии, на стр.170 и 174[37]. Для указания используемого базиса автор применяет нумерацию, состоящую из вариантов суждений в порядке Axy-Exy-Ixy.Например, для анализа силлогизмов в общем (неконкретном) виде автор когда-то предпочитал общеразговорный базис 1-1-2, который описывается следующими соотношениями: Axy = (xy')' = x’+y Exy = (xy)' = x’+y’ Ixy = x+y+ix'y' = x+y+i. В настоящее время автор считает единственно правильным базисом только. базис здравого смысла 1-1-8. Этот базис назван автором базисом Васильева, т.к. он удовлетворяет требованиям русского логика Васильева Н.А. относительно научного и общеразговорного смысла силлогистического функтора Ixy. 81 82 Заключение. 1.Анализ современного состояния логики показал полное отсутствие аналитического представления базиса силлогистики, а также несостоятельность классического силлогистического базиса который не является ни Аристотелевским, ни общеразговорным (бытовым). 2.Впервые показано, что даже общие суждения имеют неоднозначную структуру и аналитическое описание. 3.Впервые представлено все многообразие базиса частноутвердительного суждения и дано его аналитическое представление. 4.Впервые найдено аналитическое выражение для частноутвердительного суждения, удовлетворяющего критерию Васильева. 82 83 Глава четвёртая Силлогистика Аристотеля - Жергонна. В [36] приведены так называемые "жергонновы отношения". С помощью этих отношений Ж.Д.Жергонн(1771-1859) представил все классы суждений (силлогистические функторы), выделенные Аристотелем, на языке теории множеств. Автор пока не может дать однозначного заключения о корректности проделаннной Жергонном операции. Поэтому данная силлогистика носит двойное имя. Переведем "жергонновы отношения" на язык скалярных диаграмм [24]. По скалярным диаграммам были построены соответствующие таблицы истинности. Из таблиц истинности получаем следующие соотношения: "Все X суть Y" : Axy = xy+x'y'+ix'y "Ни один X не есть Y" : Exy = x'+y'= (xy)' "Некоторые X суть Y" : Ixy = xy+i(xy)' "Некоторые X не суть Y": Oxy = xy'+i(xy')' Полученные соотношения позволяют построить силлогистику без кванто83 84 ров [22]. Очень интересные решения этой проблемы имеются в [5,26]. Известны попытки решения задач силлогистики с помощью кванторного аппарата исчисления предикатов[32]. Однако, судя по современному состоянию силлогистики, такие попытки успеха не имели, да и иметь не могли: мнемоника не может быть исчислением. Это обстоятельство ставит под сомнение здравомыслие современных математиков, до сих пор не отказавшихся от термина «кванторное исчисление». С помощью формул для силлогистических функторов A, E, I, O можно выполнять все операции над силлогизмами, т.е. находить аналитическое решение задач, связанных с силлогизмами. Все задачи этого раздела, посвящённого силлогистике Аристотеля решаются в базисе АристотеляЖергонна. Для того, чтобы проверить силлогизм, нужно выполнить алгоритм "Осташ-Т" [24]. 4.1. Алгоритм "Осташ-Т" (тест, анализ) 1.Заменить посылки и заключение выражениями в соответствии с формулами для функторов A, E, I, O. 2.Получить выражение в виде конъюнкции всех посылок, имплицирующей заключение. 3.Проверить это выражение на тождественность единице, занеся его в карту Карно (КК). Если выполняется тождественность единице, то заключение истинно. Если хотя бы одна из посылок или заключение являются частным суждением, то силлогизм является истинным даже при получении модальной единицы (т.е. в некоторых клетках КК проставлены символы модальности i) при условии, что m=1 или m'=1 (в этом случае строка m или соответственно m' должна содержать не менее 3-х целых единиц и только одну составную, т.е.1=i+j). В противном случае заключение не имеет места. Для синтеза заключения по заданным посылкам также можно использовать алгоритм "Осташ-Т", несколько изменив его. Алгоритм "Осташ-С" (синтез) 1.Заменить посылки выражениями в соответствии с формулами для функторов A,E,I,O. 2.Получить выражение в виде конъюнкции всех посылок и проинвертировать его. Занести полученное выражение в карту Карно (КК). 3.Доопределить полученную функцию одним из выражений для силлогистических функторов A, E, I, O таким образом, чтобы получить тождественую или модальную единицу. При доопределении иметь в виду, что из частной посылки должно следовать частное заключение. Перед доопределением в одной строке КК(m или m') должно быть не менее 2-х, а после доопределения не менее 3-х целых единиц. Доопределяемое заключение должно содержать минимально необходимое количество единиц. Функция доопределения является искомым заключением. Если в доопределяемой строке КК имеется 2 полных единицы и 2 значения j, то доопределение невозможно. 4.Если вышеуказанное доопределение невозможно, то из данных посылок нельзя вывести никакого заключения. Синтез посылок от синтеза заключений отличается лишь тем, что доопределение КК выполняется в этом случае для отрицания посылки. 84 85 Аналитические методы на основе алгоритмов "Осташ-Т" и "Осташ-С" дополняются графическим методом на базе скалярных диаграмм. Алгоритм ТВАТ (Тушинский вечерний авиационный техникум) прост и нагляден. 4.2. Алгоритм «ТВАТ» (графический синтез силлогизмов). 1.Изобразить все возможные ситуации для исходных посылок с помощью скалярных диаграмм Лобанова. 2.Занести в таблицу истинности все значения f(x,y) для входных наборов xy: 00,01,10,11. 3.Выполнить минимизацию логической функции заключения f(x,y) в трёхзначной логике. 4.Полученный результат представить в виде силлогистического функтора в соответствии с известным базисом. Пример 4.2.1. Ни один x не есть m Некоторые m суть y Найти f(x,y) Решение. Будем считать, что частно-утвердительное суждение представлено в базисе Аристотеля-Жергонна. По алгоритму ТВАТ получим: 4.3. Алгоритм «РЕДАН» (синтез недостающей посылки). 1.Изобразить все возможные ситуации для исходной посылки и заключения с помощью скалярных диаграмм. 2.Занести в таблицу истинности все значения f(m,y) для входных наборов my: 00,01,10,11. 3.Выполнить минимизацию логической функции заключения f(m,y) в трёхзначной логике. 4.Полученный результат представить в виде силлогистического функтора в соответствии с известным базисом. Пример 4.3.1. 85 86 Найти недостающую посылку в силлогизме Amx & f(m,y) Ixy(3). Решение. Из диаграммы видно, что заключение описывается формулой Fz(x,y) = xy + i = Ixy(3), т.е. все условия задачи соблюдены. Однако это не единственное решение. Во второй скалярной диаграмме заключение также описывается формулой Fz(x,y) = xy + i = Ixy(3), но вторая посылка выглядит иначе. F(m,y) = m’ + y = Amy Пример 4.3.2. Найти недостающую посылку в силлогизме Emx & f(m,y) Exy. Решение. 86 87 Из диаграммы видно, что заключение описывается формулой f(m,y) = x’y’+i = Ix’y’(3). На самом деле здесь нужно раздельно рассматривать 3 заключения: Emy, (m~y), Imy с вероятностями P(Emy) = P(m~y) = 1/6, P(Imy) = 2/3. 4.4. Алгоритм «НИИДАР» графического нахождения исходных посылок. 1. По СДНФ полной единицы системы М построить сокращённую таблицу истинности для неё. 2. По сокращённой таблице истинности построить скалярные диаграммы, разбив интервал универсума на части, количество которых равно числу наборов в таблице истинности для М. Каждая часть универсума изображается соответствующим набором из таблицы истинности для М. 3. Из скалярных диаграмм выбрать (N – 1) логических функций от двух переменных, где N – число аргументов. Пример 4.4.1. Дано: M = m’x’+my’. Найти все исходные посылки силлогизма. Решение. По полной единице системы М строим сокращённую таблицу истинности, а по ней скалярные диаграммы. 87 88 Из диаграмм видно, что исходными посылками являются Axm, Emy, т.е. M = AxmEmy = (x’+m)(m’+y’) = m’x’+x’y’+my’ = m’x’+my’, что и требовалось доказать. 4.5. Алгоритм «СГА» аналитического нахождения исходных посылок. По полной единице системы построить n-1 посылок от двух аргументов, где n – количество терминов(аргументов). 2. Посылки должны в совокупности охватить все аргументы. 3. Ни одна из посылок не должна превращаться в логическую константу, равную 1, т.е. ни одна из исходных посылок не должна быть частноутвердительным суждением. 1. Пример 4.5.1. Дано: M = m’+x’y’. Найти все исходные посылки силлогизма. Решение. По полной единице системы М строим функции M(m,x), M(m,y). M = M(m,x)M(m,y) = (m’+x’)(m‘+y’) = EmxEmy. Это и есть исходные посылки силлогизма, полученные чисто аналитически. Пример 4.5.2. Дано: M = ab+cd. Найти все исходные посылки сорита. Решение. По полной единице системы М строим функции M(a,c), M(a,d), M(b,c). M(a,c) = a+c. M(a,d) = a+d M(b,c) = b+c. M = M(a,c)M(a,d)M(b,c) = (a+c)(a+d)(b+c) = ab+cd. Если бы мы взяли в качестве аргументов a,b , то получили бы M(a,b) = ab+1 = 1 = Iab, что не позволило бы восстановить М по трём по- 88 89 сылкам. Простота графического алгоритма анализа и синтеза силлогизмов наводит на мысль о том, что и скалярные диаграммы, и алгоритм могли быть открыты 25 веков назад Аристотелем. Во всяком случае, скаляры были известны Евклиду. Алгоритмы «Осташ» и «ТВАТ» дают одинаковые по полноте и корректности результаты. Существует более простой и эффективный аналитический метод, позволющий получать корректные, но для некоторых частных силлогизмов не всегда полные результаты. Этот метод оформлен автором в виде алгоритма «ИЭИ» (Ивановский энергетический институт). Предпочтительная область применения данного алгоритма - силлогистика здравого смысла, т.е. русская и общеразговорная. Кроме того, алгоритм «ИЭИ» незаменим при аналитическом синтезе соритов (многопосылочных силлогизмов). И всё же графические методы анализа и синтеза силлогизмов и соритов, т.е. с помощью скалярных диаграмм Лобанова, самые наглядные и корректные. 4.6. Алгоритм "ИЭИ "(аналитический синтез заключения) 1. Заменить посылки выражениями в соответствии с формулами для функторов A,E,I,O. 2. Получить выражение для полной единицы М системы в виде конъюнкции всех посылок. 3. Получить из М функцию М(х,у), заменив средний член m или m' на 1. Если средний член m/m' входит в силлогизм автономно, то заменить его на i. Полученная функция М(х,у) является заключением силлогизма. Если в М встречается терм im или im’, то заключения не существует. Алгоритм «ИЭИ» можно считать частным случаем алгоритма «Селигер» для решения логических уравнений. Пример 4.6.1. Все m суть х Все m суть y Найти f(x,y) Решение. По алгоритму ИЭИ получим: M = AmxAmy = (x+m’)(m’+y) = m’+xy Если это выражение представить в виде таблицы истинности M(m,x,y), а из неё получить таблицу M(x,y) = f(x,y), то выражение для искомого заключения примет вид: f(x,y) = xy+i = Ixy(3). Этот процесс представлен на рисунке. Из рисунка становится ясно, почему при автономном вхождении среднего термина m в формулу для полной единицы системы M(m,x,y) средний термин нужно заменять не на 1, а на i. 89 90 Пример 4.6.2. Ни один x не есть m Некоторые m суть y Найти f(x,y) Решение. По алгоритму ИЭИ получим: M = ExmImy(3) = (x’+m’)(my+i) = mx’y+ix’+im’ F(x,y) = x’y+i = Ix’y(3) По алгоритму ТВАТ получим: В классической логике[9] при синтезе заключений для конкретного силлогизма в качестве шаблона используются фигуры(1 – 4), представленные на рисунке, и модусы. Считается, что с помощью таких шаблонов-ходуль для инвалидного мышления можно придти к правильным выводам. 90 91 Приведём так называемые «правильные» модусы[9]. Фигура 1: AAA, EAE, AII, EIO. Фигура 2: EAE, AEE, EIO, AOO. Фигура 3: AAI, IAI, AII, EAO, OAO, EIO. Фигура 4: AAI, AEE, IAI, EAO, EIO. Развёрнутая запись модуса AAA для первой фигуры, например, выглядит так: AmxAym Aym. Используя приведённые методы, проверим некоторые модусы для 4-х фигур категорического силлогизма в базисе Аристотеля - Жергонна. Синтез силлогизмов проведём графическим методом в связи с его простотой и наглядностью. В результате получим следующие заключения. Здесь и далее под обозначением N.n понимается номер фигуры и номер модуса в данной фигуре. Например, 1.6 означает 6-й модус первой фигуры. Фигура 1. 1.1. AmxAym -> f(x,y) = mx'+jm'x+m'y+jmy'+f(x,y) = 1 Алгоритм «ТВАТ» и алгоритм "Осташ-С" дали одинаковый результат: f(x,y) = xy+x'y'+ixy' = Ayx. Для алгоритма «ИЭИ» получим: M = AmxAym = (m’x’+mx+im’x)(y’m’+ym+iy’m) = m’x’y’+ixy’+mxy M(x,y) = x’y’+xy+iy’x = Ayx Таким образом, все три алгоритма дали одинаковый результат, который совпал с «правильным» модусом AAA. В дальнейшем синтез силлогизмов будем выполнять по самым простым и прозрачным алгоритмам ИЭИ и ТВАТ. 91 92 1.6. EmxEym -> f(x,y). По алгоритму «ИЭИ» M = EmxEym = (m’+x’)(y’+m’) = m’+x’y’ M(x,y) = x’y’+i = Ix’y’. Фигура 2. 2.4. AxmOym -> f(x,y) = m'x+jmx'+j(m'y)'+f(x,y) = 1(i) По алгоритму «ИЭИ» M = AxmOym = (x’m’+xm+ix’m)(ym’+iy’+im) = m’x’y+im+ix’y’ M(x,y) = x’y+i = Ix’y Фигура 3. 3.2. AmxEmy -> f(x,y) = mx'+jm'x+my+f(x,y) = 1(i) 92 93 Фигура 4. 4.1.AxmAmy -> f(x,y) = m’x+jmx’+my’+jm’y+f(x,y) = 1 У Аристотеля этому модусу соответствует заключение Ixy, что не согласуется ни со здравым смыслом, ни с формальным выводом. Кроме того, из анализа фигур 1 и 4 видно, что они идентичны, а следовательно должны давать одинаковые модусы. Например, модусу AII 1-й фигуры должен соответствовать модус IAI 4-й фигуры, модусу EIO 1-й фигуры – модус IEO 4-й фигуры. Таких несоответствий между модусами 1-й и 4-й фигур насчитывается не менее четырёх. Указанные несоответствия можно было бы заметить 24 века назад, поскольку для этого не требуется ничего, кроме начального образования. 4.5. ExmAmy -> f(x,y) = mx+my'+jm'y+f(x,y) = 1(i) В результате полной проверки традиционных 64-х силлогизмов получим следующие правильные модусы: 93 94 1-я фигура: AAA,AEO,AII,EAE,EEI,EII,IEO,OEI. 2-я фигура: AAI,AEE,AOI,EAE,EEI,EII,IEI,OAI. 3-я фигура: AAI, AEI, AII, AOI, EAI, EEI, EII,EOI,IAI,IEI,OAI,OEI. 4-я фигура: AAA, AEE, EAO, EEI, EIO, EOI, IAI, IEI. Кстати, на самом деле проверять нужно было бы 256 модусов даже для случая двухфункторной (A,I) силлогистики. Полученные результаты очевидны, однако в большей своей части данные модусы являются абсолютно новыми для аристотелевой силлогистики[18].Кроме того, аристотелевский модус AAI в 4-й фигуре является некорректным. Проверим теперь традиционную логику[9] с помощью алгоритмов «Осташ». Её базис явно отличается от базиса Аристотеля-Жергонна. Попробуем описать этот базис аналитически. Из логического квадрата[9] следуют традиционные соотношения: Axy = (Oxy)',Exy = (Ixy)'. Поскольку Axy = (xy')',то Oxy = xy'.Для Ixy определяем формулу,исходя из того, что Exy = (xy)'.Откуда получаем Ixy = xy. Разумеется, подобный базис никакого отношения к здравому смыслу не имеет. Тем не менее проверим на основе этого базиса некоторые традиционные "правильные" модусы. Проверку проведем в соответствии с алгоритмом "Осташ-Т". 1-я фигура EIO: (mx)'my -> xy' = mx+m'+y'+xy' 1 2-я фигура EIO:(mx)'ym -> xy' = mx + m'+y'+xy' 1 3-я фигура EAO:(mx)'(my')' -> xy' = mx+my'+xy' 1 OAO:mx'(my')' -> xy' = m'+x+my'+xy' 1 EIO:(mx)'my -> xy' = mx + m'+y'+xy' 1 4-я фигура AAI:(xm')'(my')' -> xy = xm'+my'+xy 1 EAO:(xm)'(my')' -> xy' = mx+my'+xy' 1 Аналитическая и графическая проверки выбранных "правильных" модусов выявили некорректность последних. Соотношения (1) - (4) описывают аристотелевскую логику, которая не соответствует требованиям, предъявленным русским ученым Васильевым Н.А.[5] к частным суждениям с научной точки зрения и с позиции логики здравого смысла. Автор с глубочайшим уважением относится к Аристотелю, впервые в истории человечества предложившему формальные методы анализа и синтеза силлогизмов. Однако нельзя признать, что логика Аристотеля является логикой здравого смысла, а его «правильные» модусы исчерпывают все достоверные ситуации силлогистики. Поэтому логика Аристотеля-Жергонна представляет интерес с чисто научно-исторической точки зрения. Проиллюстрируем применение алгоритма «Редан» на простом примере. Пусть задан тривиальный силлогизм: Все люди(m) талантливы(x). Все студенты(y) – люди(m). 94 95 Все студенты(y) талантливы(x). Казалось бы, если нам известны первая посылка и заключение, то мы легко найдём вторую посылку, и она будет иметь вид Aym, т.е. “Все студенты – люди. Проверим наши рассуждения с помощью алгоритма «Редан». Все люди(m) талантливы(x). F(m,y) = ? Все студенты(y) талантливы(x). Решение. Для универсума «живые существа» получим такие диаграммы. Наряду с этим необходимо подчеркнуть пассивную роль кванторного исчисления, предназначенного, казалось бы для защиты аристотелевой силлогистики. В [32] приводится пример элегантного доказательства достоверности первого модуса первой фигуры (AmxAym -> Ayx) с применением кванторного исчисления. Однако этот модус самый примитивный из всех, и легко доказывается даже в обычной двоичной логике без привлечения кванторов («лишних сущностей» по Оккаму). Кванторный механизм создавался, в первую очередь, для того, чтобы проверить силлогистику Аристотеля. Однако до сих пор такой проверки не произошло. Отсюда можно сделать следующий вывод: либо кванторным исчислением матлогики не владеют настолько, чтобы доказать или опровергнуть правоту Аристотеля, либо само кванторное исчисление является ущербным. Автор склоняется ко второму выводу, поскольку кванторное исчисление – примитивная мнемоника и ничего более. Некоторые дополнительные аспекты проблем современной силлогистики изложены в [21]. 4.7. Ошибки Аристотеля. Важнейшим разделом классической логики является силлогистика, основные положения которой были разработаны Аристотелем. Решение задач силлогистики 95 96 опирается на аристотелевы фигуры, модусы и 4 основных правила посылок[9]. Задача 1. Проверить корректность 1-го правила посылок классической силлогистики. Решение. Это правило формулируется так [9, стр.133]: «Хотя бы одна из посылок должна быть утвердительным суждением. Из двух отрицательных посылок заключение с необходимостью не следует». Подберём контр-пример на 1-е правило посылок. Ни один человек(m) не является бессмертным(x). Ни один человек(m) не является счастливым(y). F(x,y) = ? В данном силлогизме универсумом(U) является множество существ. По алгоритму ИЭИ получим следующий результат. Примем априори, что счастливых меньше, чем бессмертных. По алгоритму ТВАТ получим графическое решение. Здесь Y1 – Y4 – различные ситуации распределения множеств счастливых существ. Предполагается, что Боги тоже могут быть несчастны. F(x,y) = y’+i = Ixy’(7), т.е. “Некоторые бессмертные несчастливы”. Результаты графического синтеза заключения совпали со здравым смыслом и опровергли 1-е правило посылок. Здесь и далее апостроф обозначает инверсию, а цифра в скобках – номер базиса. Приведу здесь задачку проф. Белорусского Государственного Университета Беркова В.Ф.: Ни один ребёнок (х) – не юноша (m). Ни один юноша (m) – не взрослый мужчина (y). F(x,y) = ? Казалось бы, она по Аристотелю полностью совпадает с предыдущей. Следовательно, заключение должно быть аналогичным. Однако аналитический метод требует скрупулёзного учёта всех условий. Поэтому в данном силлогизме будут не две посылки, а по меньшей мере три. Причём эта третья сразу сделает задачку Беркова бессмысленной: придётся указать, что универсум 96 97 мужчин состоит из трёх непересекающихся множеств юношей, детей и взрослых мужчин. Аналитика (алгоритм ИЭИ) лишь подтвердит очевидность. M = EmxEym & (mx’y’+m’xy’+m’x’y) = (m’+x’)(y’+m’)(mx’y’+m’xy’+m’x’y) = (x’y’+m’)(mx’y’+m’xy’+m’x’y) = m’xy’ + m’x’y + mx’y’. F(x,y) = xy’ + x’y + x’y’ = x’ + y’ = Exy. Значительно проще и безопаснее пользоваться графо-аналитическим алгоритмом ТВАТ: он страхует от неучёта дополнительных условий. Все условия в графике изображаются автоматически, машинально. Из этого рисунка и без таблицы истинности видно, что «Ни один ребёнок – не взрослый мужчина». Главная ошибка Аристотеля как раз и заключается в том, что он не принимает во внимание содержание терминов и универсума. Оппоненты иногда возражают, что в моих силлогизмах появляются скрытые дополнительные посылки. Это вызвано лишь требованиями здравого смысла: не может быть одновременно множество X больше, меньше и равно множеству Y. Поскольку Аристотель игнорирует требования рассудка, то будем играть по его правилам. В этом случае опровержение 1-го правила посылок будет выглядеть таким образом: EmxEmy → f(x,y). 97 98 Мы получили заключение «Некоторые не-Х суть не-Y» в третьем базисе, т.е. в базисе Аристотеля. В этом случае опровержение Аристотеля выполнено без привлечения скрытых посылок. Задача 2. Проверить корректность 2-го правила посылок классической силлогистики. Решение. Это правило формулируется так [9, стр.134]: «Если одна из посылок – отрицательное суждение, то и заключение должно быть отрицательным». Контрпример для этого случая может быть таким. Все люди(m) – животные(x). Ни один человек(m) не имеет хвоста(y). F(x,y) = ? В качестве универсума(U) примем множество существ, в том числе и Богов (бесхвостых). Наиболее наглядным является графическое решение по алгоритму ТВАТ. Из скалярных диаграмм видно, что заключение является общеутвердительным: «Все хвостатые существа – животные», что опровергает 2-е правило посылок. 98 99 Опять сыграем по правилам Аристотеля, т.е. пренебрежём здравым смыслом: у нас Y одновременно и меньше, и больше Х. Найдём заключение для следующих посылок: АmxEmy → f(x,y). Полученное заключение прочитывается так: «Некоторые Х суть не-Y». Можно ли считать это отрицательным заключением? Едва ли. Если Yбесхвостые, а Х – животные, то результат выглядит так: «Некоторые животные имеют хвосты». Если под отрицательными суждениями иметь в виду только общеотрицательные функторы, то тогда неправота Аристотеля абсолютна. Задача 3. Проверить корректность 3-го правила посылок классической силлогистики[9, стр.134]. Решение. Это правило формулируется так: «Хотя бы одна из посылок должна быть общим суждением. Из двух частных посылок заключение с необходимостью не следует». Рассмотрим контр-пример: Некоторые люди (m) неграмотны (x). Некоторые люди (m) бескультурны (y). F(x,y) = ? Пусть U – множество животных и богов. Предположим, что культурным (вежливым, например) может быть и неграмотный, т.е. примем, что некультурных меньше, чем неграмотных. Животные по определению не могут быть ни культурными, ни грамотными. Боги могут быть и невежами, и невеждами. Вновь воспользуемся алгоритмом ТВАТ. 99 100 f(x,y) = x+i = Ixy(5), т.е. «Некоторые неграмотные бескультурны». Это соответствует математике и здравому смыслу, что ставит под сомнение корректность 3-го правила посылок. Если принять, что без образования не может быть культуры, то мы сразу получим тривиальное заключение «Все неграмотные бескультурны». И это общеутвердительное заключение получено абсолютно корректно в полном соответствии со здравым смыслом при двух частноутвердительных посылках. Однако проверим это утверждение, пренебрегая здравомыслием, т.е. опять строго по-Аристотелю. Получим следующую картину при невыполнимом в реальной жизни условии, что Y одновременно и меньше, и больше Х. Проведём синтез силлогизма ImxImy → f(x,y). 100 101 Да, действительно для человека с больным рассудком 3-е правило посылок Аристотеля неопровержимо. Задача 4. Проверить 4-е правило посылок на примере синтеза силлогизма: Все люди (m) смертны (x) Некоторые люди (m) неграмотны (y) -----------------------------------------------f(x,y) = ? Решение. Конкретизируем рассматриваемый силлогизм. В храме Аполлона находятся 2 жреца, 3 жертвенных животных и сам бог Аполлон. Известно, что неграмотных четверо. Универсум состоит из 6 «душ»: жрецов, животных и бога. Следовательно, по алгоритму ТВАТ возможно одно единственное заключение: «Все неграмотные смертны». Мы не можем считать Аполлона неграмотным: пришлось бы увеличить количество безграмотных до 5 единиц. Такое заключение перечёркивает 4-е правило посылок[9,стр.135]:” Если одна из посылок – частное суждение, то и заключение должно быть частным”. Однако вновь вернёмся к правилам игры Аристотеля. Вновь по алгоритму ТВАТ проведём синтез силлогизма. Пусть это будет силлогизм EmxImy → f(x,y). 101 102 Мы подтвердили 4-е правило посылок, но нужно иметь в виду, что частноутведительный функтор Аристотеля не «вписывается ни в какие ворота», ему по утверждению Васильева[5] нет места в науке. Следовательно, мы доказали, что с точки зрения здравого смысла все правила посылок и все модусы некорректны. Даже для человека с больным воображением, пользующегося базисом Аристотеля, первая половина всех правил посылок ущербна. Одновременно мы доказали, что на заключение влияют не только характер посылок, но и количественные характеристики всех терминов-множеств. Таким образом, все логические построения Аристотеля оказались хрупкими костылями для интеллектуальных инвалидов. Итак, мы убедились, что все правила силлогистики некорректны. Рассматривать после этого “правильные” модусы Аристотеля уже не имеет смысла. Наиболее очевидная ошибка Аристотеля связана с первым модусом 4-й фигуры. Здравый смысл и математика убеждают нас в том, что от перестановки посылок заключение не изменяется. Однако все логики вслед за Аристотелем повторяют, что 1-й фигуре соответствует модус ААА, а 4-й – AAI. Приведём результаты синтеза этого модуса в базисе Аристотеля по алгоритму ТВАТ: 102 103 Мы доказали, что первые модусы 1-й и 4-й фигуры ничем не отличаются друг от друга, т.е. строго математически подтвердили правоту здравого смысла. Наиболее грубая, невежественная ошибка Аристотеля заключается в том, что он в своих модусах не учитывает ни содержание терминов, ни их количественные характеристики. Это невежество тиражируется мировой наукой, преподаванием безграмотной болтологики в средних и высших учебных заведениях России. Невежество современных математиков заключается не только в том, что они проигнорировали предостережение Ф. Бэкона, который ещё в 1620г. заявил о бесполезности и даже вредности логики Аристотеля, но и в том, что эти «так называемые логики» (по выражению Кэрролла) не сумели за 120 лет освоить трудов выдающихся математиков П.С. Порецкого и Л. Кэрролла. Аналитическое представление кванторов Axy и Exy впервые разработал в 1881 г. гениальный русский логик П.С. Порецкий, а вслед за ним к таким же результатам пришёл талантливый английский писатель и учёный Л. Кэрролл. До сих пор ни в одном учебнике по математической логике вы не встретите этих формул, однако будете всюду натыкаться на кванторное исчисление, которое ничего не исчисляет, и алгебру множеств, которая является обычной алгеброй логики. Заключение 1.Предложены простые и надежные способы графической и аналитической проверки силлогизмов и синтеза заключений или посылок для любых базисов. 2.Применение предложенных методов избавляет от необходимости запоминания множества логических правил и законов. 3.Предложенные методы ставят крест на исчислении предикатов, кванторный аппарат которого не справился, да и не мог по определению справиться, с задачами анализа и синтеза силлогизмов, поскольку является не исчислением, а примитивной мнемоникой. 4.Впервые аналитически описан базис логики Аристотеля-Жергонна. 5.Впервые на основе базиса Аристотеля-Жергонна разработана силлогистика, существенно отличающаяся от классической. 6.Впервые проверены все 64 модуса силлогистики АристотеляЖергонна. Доказано, что аристотелев модус AAI в 4-й фигуре не является правильным. 7.Впервые доказано, что ни силлогистика Аристотеля-Жергонна, ни классическая силлогистика не укладываются в прокрустово ложе 19 «правильных» модусов. 8.Доказано, что ни классическая силлогистика, ни силлогистика Аристотеля-Жергонна не имеют никакого отношения к логике здравого смысла. 9. Доказано, что все 4 правила посылок с точки зрения здравого смысла некорректны. 103 104 Глава пятая Атомарная силлогистика. Внимательный анализ силлогизмов приводит к выводу о том, что даже базисы логики здравого смысла не всегда корректно выражают содержание посылок. Проиллюстрируем это следующим силлогизмом [11]. Все солдаты (х) храбрые(m) Некоторые англичане(y) храбрые(m) ---------------------------------Некоторые англичане – солдаты Решение. Представим 2-ю посылку в русском базисе. Правомерно ли использование во второй посылке русского базиса[27]? По меньшей мере, допущена некорректность по отношению к англичанам и нарушена достоверность посылки. Исходя из скалярной диаграммы для Imy(2) и полагая универсумом все человечество, приходим к выводу, что возможны ситуации, когда все трусы - англичане. Это несправедливо. Правильным в этом случае будет использование базиса Васильева. Рассмотрим посылку, которая не вписывается ни в один из базисов. Суждение "Все люди (х) смертны (у)" при условии, что универсумом являются живые существа, описывается следующей формулой: Axy = y. Посылка "Ни один живой человек(x) не есть труп(y)" также имеет нестандартное аналитическое представление: Exy = xy'+x'y. Многообразие базисов приводит к мысли о том, что разумнее иметь некий элементарный базис, на основе которого можно как из кирпичиков (атомов) строить описание любой посылки. Автор предлагает следующий "атомарный" базис. Все Х суть Y. a) Иллюстрация: "Все квадраты(x) суть прямоугольники(y)".В данном случае универсум - параллелограммы. 104 105 b) Иллюстрация: "Все люди(x) смертны(y)" при условии, что универсум – смертные существа. Ни один X не есть Y. a) Иллюстрация: "Ни один круг(x) не есть квадрат(y)" Универсум(U) - геометрические фигуры. b) Иллюстрация: "Ни один живой (х) не есть труп (у)" Некоторые X суть Y. 105 106 a) Иллюстрация: " Некоторые студенты (х) отличники (у)". U – учащиеся. b) Иллюстрация: "Некоторые люди (х) неграмотны (у)". Универсум – смертные существа. На основе атомарного базиса может быть построен любой другой. Например, функтор Ixy(2) представляет собой объединение Ixy(a), Ixy(b). Функтор Axy(3) является комбинацией функторов Axy(a), Axy(c). Все эти объединения легко выполняются с помощью скалярных диаграмм. Для фиксации и компактного описания введём операцию сцепления (конкатенации) функторов, обозначив ее символом ||. Тогда вышеприведенные словесные описания могут быть представлены в виде следующих выражений. Ixy(2) = Ixy(a) || Ixy(b) Axy(3) = Axy(a) || (x=y) Можно ли сделать атомарный базис более компактным, более элементарным? Да, безусловно. Необходимо произвести следующие замены. Axy(b) = Axy(a)Ax'y(a); Axy(c) = (y=x) - равнозначность; Exy(a) = Axy'(a); Exy(b) = (y=x') - неравнозначность; Ixy(b) = Ax'y(a). Таким образом, элементарный атомарный базис в качестве фундамента имеет всего лишь два силлогистических функтора: Axy = x'+y, Ixy = x+y+x'y' = 1 Опишем на основе этих формул все базисы здравого смысла и базис Аристотеля. Русский базис. Axy(2) = Axy = x'+y 106 107 Exy(2) = Axy' = x'+y' Ixy(2) = Ixy || Ax'y = x+y+ix’y' = x+y+i Базис Васильева. Axy(8) = Axy = x'+y Exy(8) = Axy' = x'+y' Ixy(8) = Ixy = x+y+x'y' = 1 Базис Аристотеля-Жергонна. Axy(3) = Axy || (x=y) = xy+x'y'+ix'y = xy+x'y'+iy Exy(3) = Axy' = x'+y' Ixy(3) = Ixy || Ax'y || Axy || Ayx || (x=y) = xy+i(x'+y') = xy+i Oxy(3) = Ixy || Ax'y || Axy' || Ayx = xy'+i(x'+y) = xy’+i = Ixy'(3) Для синтеза силлогизмов в атомарном базисе пригодны все разработанные автором алгоритмы: "Осташ", "ИЭИ", "ТВАТ" . Самым простым и надёжным является графический алгоритм «ТВАТ». Пример 1. Все люди(m) смертны (х) Некоторые люди(m) неграмотны (у) _______________________________ Найти f(x,y) Решение. В данном случае универсум - существа. M = Amx(b)Imy(b) = x(m+y) = xm+xy f(x,y) = xy+x = x = Ayx(b) Число в скобках (индекс) указывает вариант базиса. Базис заключения может быть не только атомарным, но и смешанным (русский, общеразговорный, Аристотеля и т.д.). Базис посылок, как правило, должен быть атомарным. Рассмотрим синтез соритов, т.е. многопосылочных силлогизмов. Никаких проблем здесь не существует, если логик хорошо знает карту Карно или метод обобщенных кодов для минимизации логических функций[13,14]. При числе посылок более 10 разумнее использовать программы минимизации на основе метода обобщённых кодов Мавренкова для любого ПК. Пример 2. Пусть в атомарном базисе в варианте "a" задан сорит из 6 посылок: M = AabAbcAcdAdeAexExy = (ab')'(bc')'(cd')'(de')'(ex')'(xy)'.Найти заключения для различных комбинаций аргументов. Решение. Перемножать все эти функторы слишком утомительно. Инженерная логика в таких ситуациях использует формулу Моргана и работает с M'. M' = ab'+bc'+cd'+de'+ex'+xy. Заполнив карту Карно на 7 переменных для М', сразу из нее получим выражение для М: M = a'b'c'd'(e'x'+xy') + dexy'(a'b'+bc). Отсюда можем получить заключение для любых аргументов. Вся операция занимает не более 5 мин при условии, что под рукой бланки карт Карно на 6-8 переменных. Однако не мешает проверить истинность полученного для М выражения. Делается это просто: нужно вывести из М все исходные посылки. Для 107 108 чего нужно прсто заменить на логическую единицу все «лишние» переменные. Например, для M(a,b) получим: M(a,b) = a’b’+a’b’+b = a’+b = Aab, что точно соответствует первой посылке заданного сорита. Остальные посылки читатель может проверить самостоятельно. Аналогично могут быть получены заключения(функции) для любых других аргументов. Это метод Порецкого и здесь он намного превзошёл Кэрролла, который из каждого сорита мог вывести лишь одно заключение. М(a,y) = a'+a'y'+y'a'+y' = a'+y' = Eay М(a,x) = a'x'+a'x+xa'+x = a'+x = Aax М(b,d) = b'd'+db'+db = b'+d = Abd и т.д. Все заключения получены в атомарном базисе (вариант "а"). Пример 3. Пусть первые 5 посылок сорита заданы в атомарном базисе, а шестая - в русском. M = AabAbcAcdAdeAexIxy Найти заключение f(a,y). Решение. Используя решение предыдущего примера для М(a,x),получим: M = AabAbcAcdAdeAexIxy = AaxIxy = (a'+x)(x+y+ix'y') =x+a'y+ia'x'y' M(a,y) = a'y+i = Ia'y(3). Заключение получено в 3-м (Аристотелевом) базисе. Скалярные диаграммы подтверждают полученные результаты. Пример 4. Все добрые люди – честные Все недобрые люди – агрессивные Найти заключение f(x,y). Решение. Добрые люди – m. Честные люди – x. Агрессивные люди – y. Люди – универсум U. По алгоритму «ИЭИ» M = AmxAm’y = (m’+x)(m+y) = mx+m’y. F(x,y) = x+y = Ixy(6) = Ax’y = Ay’x. F(x,y) = x+y = Ixy(6) = Ax’y = Ay’x, т.е. результаты всех методов синтеза совпали. 108 109 Пример 5. На конференциях, семинарах и лекциях я часто подбрасывал слушателям силлогизм: Все люди(m) смертны(x). Некоторые люди(m) неграмотны(y). -----------------------------------------Некоторые смертные неграмотны. Я заранее предупреждал испытуемых, что все их попытки решения задачи обречены на провал. "Корифеи" возмущались, но справиться с силлогизмом не смог никто. Это в принципе невозможно без знания Русской логики. Она дисциплинирует мышление, заставляет конкретизировать посылки, вкладывая строго определённый смысл в каждый термин, требует чёткого определения универсума. По канонам классической логики заключение должно выглядеть так: Некоторые смертные неграмотны". На самом деле здесь возможны несколько вариантов решения в зависимости от универсума и конкретного наполнения терминов, почему и не может решить силлогизм ни один академик. Одно из возможных заключений имеет вид: Все неграмотные смертны. Это вопиюще противоречит законам классической логики, но вполне согласуется со здравым смыслом, если мы в качестве универсума примем множество смертных и бессмертных существ и будем считать всех животных неграмотными, а богов - грамотными. 5.1. Практикум по силлогистике. В своей книге “Логика для студентов” О. А. Солодухин приводит большое количество задач. Это первый гуманитарий, который пытается привлечь математику для анализа силлогизмов. Проверим эти задачи алгоритмами ИЭИ и ТВАТ. В дальнейшем все примеры будут построены на базисе Васильева,поскольку именно он более всего отражает логику здравого смысла. Напомним, что этот базис имеет следующее аналитическое представление: Axy = x'+y Exy = x'+y' Ixy(8) = x+y+x'y' = 1, где в скобках указан номер базиса для частноутвердительного суждения, а апостроф означает отрицание. Для частно-утвердительного суждения были получены следующие выражения: 1. Ixy = x 2. Ixy = x+y+ix’y’ – русский базис 3. Ixy = xy + i(x’+y’) – базис Аристотеля 109 110 4. 5. 6. 7. 8. Ixy = x+y’+ ix’y Ixy = x+ix’ Ixy = x+y Ixy = y+iy’ Ixy = x+y+x’y’ = 1 – базис Васильева Следующие задачи созданы Кэрроллом[11]. Задача 1[11] Только философы эгоисты. Нет циника, который не был бы эгоистом. Следовательно, все циники – философы. Решение. Пусть x – философы, y – циники, m – эгоисты. Универсум – люди. Тогда по алгоритму ИЭИ получим: M = AmxAym = (m’+x)(y’+m) = m’y’+xy’+mx F(x,y) = y’+x = Ayx, т.е. наш результат подтвердил истинность заключения. Проверим решение по алгоритму ТВАТ. F(x,y) = y’+x = Ayx, т.е. результаты по алгоритмам ИЭИ и ТВАТ совпали. Задача 2[11] Лишь глупые люди верят в конец света. Тот, кто верит в гармонию мира, не верит в конец света. Всегда найдётся глупец, который не верит в гармонию мира. Решение. Пусть х – глупые люди, m – верящие в конец света, у – верящие в гармонию мира. Универсум – люди. M = AmxEym = (m’+x)(y’+m’) = m’+xy’ f(x,y) = xy’+i = Ixy’(3) F(x,y) = xy’+i = Ixy’(3). 110 111 Если трактовать заключение как “Все глупцы не верят в гармонию мира”, то такой вывод ошибочен. Задача 3[11] Каждого, кто верит в себя, можно считать Человеком. Никто, ни один Человек не верит политикам. Все, кто верит политикам, не верит в себя. Решение. Пусть х – кто верит в себя, m – Человек, у – кто верит политикам. Универсум – люди. M = (x m)Emy = (xm+x’m’)(m’+y’) = x’m’+xmy’ f(x,y) = x’+y’ = Exy. Задача 4[11,стр.151] Нет таких членов парламента, которые не участвовали бы в законотворчестве. Только 12% членов парламента составляют юристы. Не все, кто создают законы, являются юристами. Решение. Пусть x – законотворцы, m – члены парламента, y – юристы. Универсум – люди. M = AmxImy(8) = (m’+x)&1 = m’+x F(x,y) = x+i = Ixy(5). F(x,y) = x+i = Ixy(5), т.е. алгоритмы ИЭИ и ТВАТ дали одинаковые результаты,формально не подтверждающие заключение Кэрролла, поскольку в 111 112 нём не указан базис. Задача 5[11] Среди юристов имеются профессиональные бизнесмены. Настоящий бизнесмен не боится инфляции. Некоторые юристы не опасаются инфляции. Решение. Пусть x – юристы, m – бизнесмены, y – не боящиеся инфляции предприниматели. Универсум – люди. M = IxmAmy = 1*(m’+y) = m’+y F(x,y) = y+i = Ixy(7). Опять формальное несовпадение исходного заключения с полученными результатами, поскольку в заключении не указан базис. По умолчанию в классической логике используется базис Аристотеля, т.е. 3-й базис. Задача 6[11] Только политики верят в пользу насилия. Не всякий любитель насилия любит собственных детей. Некоторые политики не любят своих детей. Решение. Пусть x – политики, m – любители насилия, y – не любящие своих детей родители.Универсум – люди. M = AmxImy(8) = (m’+x)&1 = m’+x F(x,y) = x+i = Ixy(5) 112 113 Опять формальное несовпадение результатов с исходным заключением Кэрролла. Задача 7[11] Только в споре рождается истина. Никто не станет спорить, кроме глупца или мошенника. Лишь глупец или мошенник могут достичь истины. Решение. Пусть x – “родители истины”, m – спорщики, y – глупец или мошенник. Универсум – люди. M = AxmAmy = (x’+m)(m’+y) = m’x’+x’y+my F(x,y) = x’+y = Axy. Задача 8[11,стр.151] Боязливый к прекрасному полу – боязлив и в жизни. Тот, кто знает логику, не боится женщин. Трус не разбирается в логике. Решение. Пусть x – боязливый в жизни, m – боящийся женщин, y – знающий логику. Универсум – мужчины. M = AmxEym = (m’+x)(y’+m’) = m’+xy’, F(x,y) = xy’+i = Ixy’(3). В данном случае исходное заключение кардинально ошибочно. Должно быть в 3-м базисе: «Некоторые трусы не разбираются в логике» . Задача 9[11] Среди болтунов нет логиков. Только болтун может стать политиком. 113 114 Ни один логик не станет политиком. Решение. Пусть x – логик, m – болтун, y – политик. Универсум – люди. M = EmxAym = (m’+x’)(y’+m) = m’y’+x’y’+mx’ F(x,y) = x’+y’ = Exy. Задача 10[11] Иногда проходимец может оказаться ясновидцем. Если ты ясновидец, то не должен лгать. Существуют проходимцы, которые обязаны говорить правду. Решение. Пусть x – проходимец, m – ясновидец, y – честный. Универсум – люди. M = IxmAmy = 1&(m’+y) = m’+y F(x,y) = y+i = Ixy(7) Опять Кэрролл получил заключение в 3-м базисе, а должно быть в 7-м. Задача 11[1,стр.152] Лишь двоечник по убеждению – лентяй. Ни один студент не любит получать двойки. Значит, среди студентов нет лентяев. Решение. Пусть x – лентяй, m – двоечник, y – студент.Универсум – учащиеся. M = AxmEym = (x’+m)(y’+m’) = x’y’+my’+m’x’ F(x,y) = x’+y’ = Exy. 114 115 Задача 12[11] Лишь в правовом государстве реализуются права граждан. Только демократическое государство может быть правовым. Права граждан могут быть реализованы лишь в демократическом государстве. Решение. Пусть x – реализующее права граждан государство, m – правовое государство, y – демократическое государство. Универсум – государство. M = AxmAmy = (x’+m)(m’+y) = m’x’+x’y+my = m’x’+my F(x,y) = x’+y = Axy. Особый класс рассуждений составляют логические конструкции, в которых вместо связки «есть»(«суть») используется любой другой глагол. В книге Вагина В.Н. «Дедукция и обобщение в системах принятия решений» – М.: Наука, 1988 на стр.44 приводится пример 2.18: Некоторые студенты(m) любят(z) всех преподавателей(x). Ни один студент(m) не любит(z) ни одного невежду(y). Следовательно, ни один преподаватель не является невеждой. Этот силлогизм(?!) якобы анализируется с помощью “кванторного исчисления”, которое ничего кроме мнемоники из себя не представляет. На двух страницах приводится “доказательство” истинности заключения. Однако 5 минут здравого размышления дают совершенно иной ответ. Поэтому проверим результат с позиций Русской логики. Вариант 1. Не очень обоснованно, но будем считать глагол “любить” эквивалентом обычной связки “есть”. Тогда по алгоритму ИЭИ получим: M = ImxEmy = m’+y’. F(x,y) = y’+i = Ixy’(7). 115 116 Поскольку обоснованность замены глагола “любить” связкой “есть” весьма сомнительна, то проверим заключение по варианту 2. Вариант 2. Учтём глагол «любить» как ещё одну логическую переменную z. Тогда по алгоритму ИЭИ получим: M = Im(zx)Em(zy) = m’+(zy)’ = m’+z’+y’. F(x,y) = i+i+y’ = y’+i = Ixy’(7), т.е. “Некоторые преподаватели – не невежды”, что и требовалось доказать. 5.2. Практикум по решению соритов. Сорит – это умозаключение, в котором из нескольких посылок выводится, как правило, одно заключение. Посылки в сорите, за редчайшим исключением, являются общеутвердительными или общеотрицательными. На самом деле реально посылки могут быть как общего, так и частного характера. Но самое главное, что заключений в сорите может быть огромное количество. Оно определяется как число сочетаний из числа посылок по 2, т.е. K = С(n, 2) = n(n-1)/2, где К – число заключений, n – число терминов в посылках. Количество абсолютно новых заключений меньше К на число исходных посылок. Если же рассматривать искомые заключения, как функции от трёх и более переменных, то К значительно возрастает. Однако при этом теряется прозрачность полученных результатов. Алгоритм «Осташков» для решения соритов достаточно прост. Он является следствием из алгоритмов «ИЭИ» (синтез силлогизмов) и «Селигер»(решение логических уравнений) [25]. Аббревиатуры СДНФ (совершенная дизъюнктивная нормальная форма) и МДНФ (минимальная дизъюнктивная нормальная форма) являются традиционными в классической логике, поэтому не требуют пояснений. Алгоритм «Осташков» синтеза соритов. 1. Привести систему уравнений к нулевому виду (исходная система). 2. Заполнить карту Карно нулями в соответствии с термами левых частей исходной системы уравнений, а в оставшиеся клетки вписать единицы. Эти единичные термы представляют собой СДНФ полной единицы системы М. 3. Произвести минимизацию совокупности единичных термов. Полученное соотношение представляет МДНФ уравнения полной единицы системы М. 4. Получить из М все заключения сорита как функции от двух заданных переменных, заменяя на 1 все «лишние» переменные. 5. Представить результаты в виде скалярных диаграмм. Пример 1. «Энциклопедия - Россия-Он-Лайн» излагает пример решения сорита клас116 117 сическим методом. Далее это решение приводится в виде текста, выделенного курсивом. Алгебра множеств является подразделом булевых алгебр, впервые возникших в трудах Дж.Буля (1815–1864). В аксиомах булевой алгебры отражена аналогия между понятиями «множества», «событие» и «высказывания». Логические высказывания можно записать с помощью множеств и проанализировать с помощью булевой алгебры. Даже не вдаваясь в детальное изучение законов булевой алгебры, мы можем получить представление о том, как она используется на примере одной из логических задач Льюиса Кэрролла. Пусть у нас имеется некоторый набор утверждений: 1. Не бывает котенка, который любит рыбу и которого нельзя научить всяким забавным штукам; 2. Не бывает котенка без хвоста, который будет играть с гориллой; 3. Котята с усами всегда любят рыбу; 4. Не бывает котенка с зелеными глазами, которого можно научить забавным штукам; 5. Не бывает котят с хвостами, но без усов. Какое заключение можно вывести из этих утверждений? Рассмотрим следующие множества (универсальное множество I включает в себя всех котят): A – котята, любящие рыбу; B – котята, обучаемые забавным штукам; D – котята с хвостами; E – котята, которые будут играть с гориллой; F – котята с зелеными глазами и G – котята с усами. Первое утверждение гласит, что множество котят, которые любят рыбу, и дополнение множества котят, обучаемых забавным штукам, не имеют общих элементов. Символически это записывается как 1. AC(B) = O. Аналогичным образом остальные утверждения можно записать так: 2. C(D)E = O; 3. G М A; 4. BF = O; 5. D М G. Принимая во внимание теоретико-множественный смысл символов (или воспользовавшись законами булевой алгебры), мы можем переписать утверждения 1, 2 и 4 в виде 1. A М B; 2. E М D; 4. B М C(F). Таким образом, мы переформулировали исходные утверждения в следующие: 1. Котят, которые любят рыбу, можно обучить забавным штукам; 2. У котят, которые будут играть с гориллой, есть хвосты; 4. У котят, которых можно обучить забавным штукам, глаза не зеленые; Теперь можно расположить символические записи утверждений в таком порядке, чтобы последний символ предыдущего утверждения совпадал с первым символом следующего (этому условию удовлетворяет расположение утверждений в по- 117 118 рядке 2, 5, 3, 1, 4). Возникает цепочка включений E М D М G М A М B М C(F), из которой можно сделать вывод, что E М C(F) или «Не бывает котенка с зелеными глазами, который будет играть с гориллой». Такое заключение едва ли очевидно, если рассматривать пять исходных утверждений в их словесной формулировке. Как несложно убедиться, классическая логика при синтезе соритов громоздка и однобока (даёт одно единственное заключение). Решим этот сорит в соответствии с алгоритмом «Осташков». Используем все обозначения и универсум из цитируемой энциклопедии. Тогда наши посылки будут описаны с помощью силлогистических функторов следующим образом: 1. Aab. 2. Aed. 3. Aga. 4. Ebf. 5. Adg. Для перевода мнемонических записей на язык математики воспользуемся Руской логикой[26]: Axy = x’+y; Exy = x’+y’; Ixy(8) = 1. Здесь и далее во всех аналитических выражениях апостроф представляет инверсию аргумента или функции. Переходим к выполнению алгоритма “Осташков”. Вначале находим полную единицу системы М как логическое произведение всех исходных посылок. 1. M = AabAedAgaEbfAdg = (a’+b)(e’+d)(g’+a)(b’+f’)(d’+g). Поскольку перемножать 5 двучленов утомительно, то переходим к M’ с помощью правила Де Моргана: M’ = ab’+d’e+a’g+bf+dg’ 2 и 3. После заполнения карты Карно и проведения минимизации[13] получим: M = a’b’d’e’g’+bd’e’f’g’+abd’e’f’+abdf’g 4. Перебирая все комбинации из шести переменных по 2 получим 15 заключений: f1(a,b) = a’b’+b+ab+ab = a’+b = Aab;(Все котята-“рыболюбы” обучаются забавным штукам) f2(a,d) = a’d’+d’+ad’+ad = a+d’ = Ada;(Все котята с хвостами любят рыбу) f3(a,e) = a’e’+e’+ae’+a = a+e’ = Aea;(Все играющие с гориллой любят рыбу) f4(a,f) = a’+f’+af’+af’ = a’+f’ = Eaf;(Все зеленоглазые не любят рыбу) 118 119 f5(a,g) = a’g’+g’+a+ag = a+g’ = Aga;(Все усатые любят рыбу) f6(b,d) = b+d’ = Adb;(Все хвостатые обучаются забавным штукам) f7(b,e) = b+e’ = Aeb;(Все играющие с гориллой обучаются забавным штукам) f8(b,f) = b’+f’ = Ebf;(Зеленоглазые не обучаются забавным штукам) f9(b,g) = b+g’ = Agb;(Все усатые обучаются забавным штукам) f10(d,e) = e’+d = Aed;(Все играющие с гориллой имеют хвосты) f11(d,f) = d’+f’ = Edf;(Все зеленоглазые – бесхвостые) f12(d,g) = d’+g = Adg;(Все хвостатые – с усами) f13(e,f) = e’+f’ = Eef;(Зеленоглазые не будут играть с гориллой) f14(e,g) = e’+g = Aeg;(Все играющие с гориллой имеют усы) f15(f,g) = g’+f’ = Efg.(Зеленоглазые – без усов). Поскольку универсум – котята, то во всех заключениях речь идёт только о них. Отобразим исходные посылки на скалярных диаграммах в таком порядке: AabAgaAdgAedEbf. Из диаграмм легко получаются все 15 заключений. Для разнообразия построим ещё одно заключение в виде функции от трёх переменных. f16(a,b,d) = a’b’d’+bd’+abd’+abd = a’d’+ab =(a+d)’+ab = A(a+d)(ab), т.е. “Все рыболюбы или обучаемые забавным штукам суть хвостатые рыболюбы”. Такое заключение подтверждается и скалярными диаграммами. Кстати, диаграммы дают более разнообразные заключения. Кроме полученного из М аналитически f16(a,b,d) из диаграмм можно вывести заключение f17(a,b,d) = A(ad)b и т.д. 119 120 Из анализа результатов можно сделать следующие выводы: 1. Полученные функции f1(a, b),f5(a, g),f8(b, f),f10(d, e),f12(d, g) соответствуют исходным посылкам 1,3,4,2,5, что подтверждает правильность результатов синтеза. 2. Даже все синтезированные заключения не дают наглядного представления о взаимном соотношении множеств a,b,d,e,f,g. С этой задачей могут справиться лишь скалярные диаграммы. Рассмотренный пример чрезвычайно прост. Такой примитивностью грешат все сориты (по определению), поскольку они представляют «цепочки» вложенных друг в друга посылок, когда из одной посылки легко выводится другая. Попробуем решить более сложную задачу, когда посылки не укладываются в прокрустово ложе традиционного сорита. Пример 2. Пусть заданы 4 суждения: Aa’c, Aa’d, Ab’c, Ab’d. Если исходные посылки из предыдущего примера можно было сразу представить в виде скалярных диаграмм и тем самым получить готовое решение сорита, то в данном примере так не получится. Решение по алгоритму «Осташков» выглядит следующим образом. M = Aa’c Aa’d Ab’c Ab’d = (a+c)(a+d)(b+c)(b+d). M’ = a’c’+a’d’+b’c’+b’d’. После занесения в карту Карно и минимизации получим: M = ab+cd. f1(a,b) = ab+1 = 1 = Iab(8); f2(a,c) = a+c = Aa’c; f3(a,d) = a+d = Aa’d; f4(b,c) = b+c = Ab’c; f5(b,d) = b+d = Ab’d; f6(c,d) = 1+cd = 1 = Icd(8). Полученные функции f2 – f5 совпали с исходными посылками, что подтвердило корректность синтеза, но впредь лишнюю работу делать не обязательно: можно было построить лишь f1, f6. Пример 2 впервые показывает, что заключение сорита может быть частно-утвердительным. По результатам синтеза построим скалярные диаграммы. Поскольку такой процесс эвристического построения несколько затруднителен, то предлагается использовать с этой целью сокращённую таблицу истинности для М и формализовать синтез скалярных диаграмм. 120 121 Как несложно догадаться, скалярные диаграммы представляют собой двоичные коды рабочих наборов полной единицы системы М. Иногда возникает задача восстановить по известной полной единице системы М исходные посылки. Алгоритм разложения логического уравнения на исходные посылки прост. Алгоритм графического нахождения исходных посылок. 1. Построить сокращённую таблицу истинности для М. 2. По сокращённой таблице истинности построить скалярные диаграммы. 3. Из скалярных диаграмм выбрать C(N,2) логических функций от двух переменных, где N – число аргументов, а C(N,2) – число сочетаний из N по 2. Пример 3. В задаче Порецкого о птицах получена полная единица системы: M = sy+gx’. Найти минимальное количество возможных посылок. Построим сокращённую таблицу истинности для М. По полученной таблице истинности нарисуем скалярные диаграммы. 121 122 По скалярным диаграммам выберем наиболее простые логические функции от двух переменных: f1(g,s) = g+s = Ag’s; f2(g,y) = g+y = Ag’y; f3(s,x) = s+x’ = Axs; f4(y,x) = x’+y = Axy. После перемножения полученных посылок определим M: M = (g+s)(g+y)(x’+s)(x’+y) = (g+sy)(x’+sy) = sy+gx’, что совпадает с исходными данными. Кстати, у Порецкого вместо 4-х посылок использованы 5. Т.е. для описания логической системы от n переменных достаточно n двухаргументных посылок. Однако это одно из возможных решений задачи: в результате мы можем получить f5(g,x) = Egx. Поэтому правильным решением будет полный перебор всех двухаргументных посылок. Из М следует, что f5(g,x) = 1 = Ixy(8), но никак не Egx. Алгоритм аналитического отыскания исходных посылок. По заданной полной единице системы построить C(N,2) посылок сорита как функций от двух переменных, заменяя на 1 все «лишние» переменные. Здесь N – число аргументов. Проверить полученные результаты логическим перемножением посылок и сравнением с заданной полной единицей системы. Пример 4. Пусть задано M = m’+xy. Найти исходные посылки. f1(m, x) = m’+x = Amx; f2(m, y) = m’+y = Amy. M = (m’+x)(m’+y) = m’+xy, что и требовалось доказать. Однако данный пример не так прост, как кажется на первый взгляд. Здесь кроется подвох, связанный с отысканием f3(x,y). Поэтому из М находим третью посылку f3(x,y) = 1 = Ixy(8). Именно эти три посылки однозначно определяют всю систему М. При графическом методе по заданной М нужно построить таблицу истинности, а по ней нарисовать скалярные диаграммы. Из скалярной диаграммы видно, что на самом деле M = AmxAmyIxy(8). Если не использовать графический алгоритм поиска посылок, то можно было бы получить f3(x,y) = Axy, f4(x,y) = Ayx и т.д. 122 123 Пример 5 Если Бог существует, то он всемогущ и всеблаг. Бог или бессилен предотвратить зло, или он не желает предотвращать его(зло существует на Земле). Если Бог всемогущ, то неверно, что он бессилен предотвратить зло. Если Бог всеблаг, то неверно, что он не желает предотвращать зло. Вывести все возможные заключения. Решение. X – Бог всемогущ, Y – Бог всеблаг, Z – Бог существует, U – зло существует, V – Бог бессилен против зла, W – Бог желает предотвратить зло. Рассматривая эту задачу в разделе «Логика суждений», мы пришли к выводу о невозможности существования Бога(при условии, что все посылки корректны). Однако, этот вывод далеко не единственный из заданных посылок. Чтобы найти все 15 двуаргументных заключения, необходимо вначале получить полную единицу системы: M = (z xy)u(u (v+w’))(x v’)(y w) = = (z’+xy)u(u’+v+w’)(x’+v’)(y’+w). Чтобы не перемножать все посылки, воспользуемся формулой де Моргана. M’ = z(x’+y’)+u’+uv’w+xv+yw’. После занесения нулей в карту Карно в соответствии с M’ и заполнения оставшихся пустыми клеток карты Карно единицами получим в результате минимизации: M = x’y’z’uv + y’z’uv’w’ + x’z’uvw. Из М выведем все двуаргументные заключения: F1(x,y) = x’y’+y’+x’ = x’+y’ = Exy; F2(x,z) = x’z’+z’ = z’; F3((x,u) = x’u+u = u; F4(x,v) = x’v+v’ = x’+v’ = Exv; F5(x,w) = x’+w+x’w = x’+w’ = Exw; F6(y,z) = z’; F7(y,u) = y’u+u = u; F8(y,v) = y’v+y’v’+v = y’+v = Ayv; F9(y,w) = y’+y’w’+w y’+w Ayw; F10(z,u) = z’u = (Auz)’, т.е. «Неверно, что всё зло от Бога»; F11(z,v) = z’v+z’v’+z’v = z’; F12(z,w) = z’+z’w’+z’w = z’; F13(u,v) = uv+uv’+uv = u; F14(u,w) = u+uw’+uw = u; F15(v,w) = v+v’w’+vw = v+w’ = Awv. Пример 6. Дано: M = A(a+b)c & A(c+d)e. Найти все незаданные логические функции от двух переменных. Решение. 123 124 M = A(a+b)c & A(c+d)e = (a’b’+c)(c’d’+e) = a’b’c’d’+a’b’e+ce. Отсюда легко могут быть получены все функции от двух переменных (см.алгоритм «Осташков» и работу Порецкого [34]). Однако в таком решении нет наглядности, оно непрозрачно. Поэтому построим таблицу истинности, а по ней – мои скалярные диаграммы. Из диаграмм видны все соотношения между множествами (логическими переменными a – e). Пример 7. Это задача Акимова О.Е. [1, №24, с.58]. Вот её текст. Уменьшение температуры приводит к снижению давления и уменьшению объёма. Увеличение объёма приводит к росту скорости потока. Повышение давления приводит к падению уровня, если при этом уменьшать температуру. Снижение скорости приводит к уменьшению давления или росту температуры. Технолог Иванов рассудил так: «Мне надо повысить давление при одновременном снижении скорости потока, поэтому я должен увеличить объём и температуру». Автор утверждает, что истинным утверждением является такое: «Уменьшение температуры и увеличение давления ведут к уменьшению объёма». Решение. Введём обозначения: a – уменьшение температуры. b – снижение давления. c – уменьшение объёма. d – снижение скорости. e – падение уровня. По алгоритму «Импульс» получим следующее решение. (a→bc)(c’→d’)(b’a→e)(d→(b+a’)) → (a’c’→b’d) = a(b’+c’)+c’d+ab’e’+ab’d+a+ c + b’d = c’d’+a+c+b’d ≠ 1, т.е. технолог Иванов ошибается. Чтобы проверить Акимова О.Е. [1,с.64], заменим правую часть нашего выражения: (a→bc)(c’→d’)(b’a→e)(d→(b+a’)) → (a’b→c) = a(b’+c’)+c’d+ab’e’+ab’d+a+b’+ +c = c’d’+a+b’+c ≠ 1, т.е. автор примера не прав. Однако, это скорее всего опечатка Акимова, поскольку словесная формулировка заключения переводится на язык логики иначе: (ab’→c). 124 125 В этом случае заключение по алгоритму «Импульс» получается достоверным: (a→bc)(c’→d’)(b’a→e)(d→(b+a’)) → (ab’→c) = a(b’+c’)+c’d+ab’e’+ab’d+a’+b+ +c = 1. Но не будем торопиться с выводами. Проверим решение задачи с помощью алгоритма «Осташков». Полная единица системы выглядит так: M = (a→bc)(c’→d’)(b’a→e)(d→(b+a’)) = (a’+bc)(c+d’)(b+a’+e)(d’+b+a’). Перемножать все эти выражения в скобках утомительно – воспользуемся формулой де Моргана: M’ = a(b’+c’)+c’d+ab’e’+ab’d = ab’+ac’+c’d. Занесём M’ нулями в карту Карно – получим в результате: M = a’(c+d’)+bc. Найдём заключение в виде f(a,b,c) = M(a,b,c) = a’c+a’+bc = a’+bc = a→bc. Для проверки этого абсолютно правильного и единственного заключения представим полную единицу системы в графическом виде. Посмотрим, возможно ли заключение Акимова в виде (ab’→c), что эквивалентно A(ab’)c. Из диаграмм Лобанова видно, что пересечение множеств ab’ пусто, т.е. исходная посылка ложна. А из ложной посылки можно вывести всё, что угодно. Следовательно, решение Акимова безграмотно. Работа [1] насыщена примерами и задачами, что говорит о высоком профессионализме автора и его любви к математике. Однако, в области математической логики – дремучее невежество и вопиющая безграмотность. Это общая беда всех матлогиков и тем более логиков-гуманитариев. Какие ещё выводы можно было бы сделать из диаграмм? Ну, например, A(ac)b = ac→b. Как это понимать? Заключение a→bc не единственное? Нет, единственное: просто заключение ac→b вторично, является производным из исходного a→bc. Дело в том, что здесь проявляются импликативные законы. Импликативно-силлогистические законы и их связь с силлогистикой. 1. Законы умножения. 1.1. Левую часть импликации можно логически умножить на любую логическую переменную. (a→b) → (ac→b) = (a’+b) → (a’+c’+b) = ab’+a’+c’+b = 1, или Aab → A(ac)b 1.2. Обе части импликации можно логически умножить на одну и ту же логическую переменную. (a→b) → (ac→bc) = (a’+b) → (a’+c’+bc) = ab’+a’+c’+bc = 1, или 125 126 Aab → A(ac)(bc) 1.3. Нельзя сокращать обе части импликации на общий множитель. (ac→bc) → (a→b) = (a’+c’+bc) → (a’+b) = ac(b’+c’)+a’+b ≠ 1. В этом случае правильная импликация выглядит так: A(ac)(bc) → Iab(8). 1.4. Любой логический сомножитель правой части импликации можно переносить в левую. (a→bс) → (ac→b) = (a’+bc) → (a’+c’+b) = a(b’+c’)+a’+c’+b = 1, или Aa(bc) → A(ac)b (a→bс) → (ab→c) = (a’+bc) → (a’+b’+c) = a(b’+c’)+a’+b’+c = 1, или Aa(bc) → A(ab)c 1.5. Нельзя в правой части импликации вводить любой сомножитель. (a→b) → (a→bc) = (a’+b) → (a’+bc) = ab’+a’+bc ≠ 1, или Aab → Aa(bc) ≠ 1 Правильная импликация в этом случае: Aab → Ia(bc) (3). 2. Законы сложения. 2.1. Левую и правую части импликации можно логически сложить с одной и той же логической переменной. (a→b) → ((a+c)→(b+c)) = (a’+b) → (a’c’+b+c) = ab’+a’c’+b+c = 1, или Aab → A(a+c)(b+c). 2.2. К правой части импликации можно добавлять любое логическое слагаемое. (a→b) → (a→(b+c)) = (a’+b) → (a’+b+c) = ab’+a’+b+c = 1, или Aab → Aa(b+c). 2.3. Из левой части импликации можно удалять любое логическое слагаемое. ((a+c)→b) → (a→b) = (a’c’+b) → (a’+b) = (a+c)b’+a’+b = 1, или A(a+c)b → Aab, A(a+c)b → Acb. 2.4. Нельзя исключать общие логические слагаемые из левой и правой частей импликации. ((a+c)→(b+c)) → (a→b) = (a’c’+b+c) → (a’+b) = b’c’(a+c)+a’+b ≠ 1, или A(a+c)(b+c) → Aab ≠ 1. В этом случае правильная импликация выглядит так: A(a+c)(b+c) → Iab(8). Импликативные законы хорошо иллюстрируются скалярными диаграммами, подтверждая лишний раз единство логики суждений и силлогистики. 126 127 Все вышеперечисленные «аксиомы», законы и правила приведены не для запоминания, а в качестве иллюстрации простоты доказательства этих законов, в качестве иллюстрации возможностей созданной в России Русской логики, т.е. математической теории доказательств. 127 128 Выводы. 1. Анализ силлогистик здравого смысла (русской и общеразговорной) привел к выводу о том, что наряду с использованием этих силлогистик необходимо построение атомарной силлогистики. 2. Впервые разработана атомарная силлогистика и даны методы синтеза атомарных силлогизмов и примеры их использования для решения конкретных задач. 3. Впервые представлены методы синтеза соритов. 4. Показано, что для каждой содержательной посылки нужно использовать свой конкретный базис. 128 129 Глава шестая Естественный вывод и кванторы. В главе под таким названием в [32] излагается вывод умозаключений из нескольких посылок. Это может быть непосредственное умозаключение, простой категорический силлогизм или сорит. Но суть не в названии, а в методах получения результатов. В [32] для анализа умозаключений (доказательства корректности формулы) применяются кванторы. Автор при доказательстве применяет вспомогательные выводы с достаточно обременительными правилами. Приведём пример одного такого доказательства[32,стр.299].Необходимо проверить формулу: x(A(x) B(x)) & x A(x) x B(x) Цепочка вспомогательных выводов выглядит следующим образом. x(A(x) B(x)) & x A(x) A(c1) A(c1) B(c1) B(c1) x B(x) x(A(x) B(x)) & x A(x) x B(x) Во-первых, сложно, а во-вторых не очевидно. Поскольку здесь налицо простой категорический силлогизм (две посылки и одно заключение), то можно применить алгоритм «Осташ-Т». Для экономии заменим А(х) на a и В(х) на b. Не применяя кванторов, получим в русском базисе следующее выражение. Ax(a b)Ixa Ixb = x(a b)’ + jx’a’ + x + b + ix’b’ = 1(i), что доказывает истинность исходной формулы. Более очевидным является доказательство в обычной логике суждений. M = (a b) & ia ib = (a’+b)ia ib = iab ib = (iab)’+ ib = a’+b’+jab+ib = 1 Без кванторов также можно анализировать сориты, т.е. умозаключения с тремя и более посылками. Из [32,стр.301] позаимствуем для доказательства формулу, которая без кванторов примет вид: Ax(a+b)Ix(a c)Ax(b c) Ixc = x(a+b)’+jx’(a’+c)’+x(b’+c)’+x+c+ix’c’ = = x+c+x’ac’+ix’ac’ = 1(i). Полученные по алгоритмам «Осташ-Т» и «ТВАТ» результаты подтверждают достоверность анализируемого сорита. Поскольку каждый сорит, в конце концов, приводится к силлогизму, то анализ и синтез соритов можно проводить 129 130 по алгоритмам «Осташ», «ИЭИ» и «ТВАТ». В данном сорите после приведения его к силлогизму средним термином является переменная a. Доказательство ложности непосредственного умозаключения «поскольку все люди - мужчины или женщины, то все люди - мужчины или все люди - женщины» сопровождается в [32,стр.300] сложными вспомогательными выводами и пространными рассуждениями, что отнюдь не делает доказательство убедительным. Более того, подобные попытки обречены на неудачу, поскольку в данной ситуации требуется не двоичная, а комплементарная логика. Словесная формулировка данного умозаключения чрезвычайно аморфна. Это неотъемлемая черта любого естественного языка, с которой приходится мириться. Поэтому для анализа умозаключения прежде всего необходимо корректно аналитически представить посылку и заключение, для чего изобразим посылку на скалярной диаграмме. Здесь x - люди, m - мужчины, g - женщины. Дело в том, что в посылке на основе здравого смысла предполагается исключение ситуации, когда человек является одновременно и мужчиной и женщиной (гермафродит). Кроме того, человек не может быть одновременно не мужчиной и не женщиной. И уж тем более не может быть никогда мужчины или женщины не-человека. Поэтому в таблице истинности данные ситуации отмечены как невозможные. Отсюда получаем выражение для посылки f: f = x(mg’+m’g)+x’m’g’ На самом деле в этой задаче условие и доказательство должны были выглядеть так:AmxAgx Amx+Agx = (Amx)’+(Agx)’+Amx+Agx = 1 В примере 11.2.3.4[32, стр.301] требуется доказать кванторное соотношение: x(A(x) + B(x)) & x (A(x) C(x)) &x(B(x) C(x)) x C(x). На основе русской силлогистики получим следующее доказательство: A(a+b)x Ix(ac) A(bc)x Ixc = (a+b)x’+jx’ac’+(b’+c)x’+x+c+i = x’+x+c+i = 1 На основе инженерной логики суждений доказательство выглядит ещё проще: (a+b) i(ac) (bc) ic = a’b’+ac’+j(a’+c)+bc’+ic = 1. В примере 11.2.3.1[32, стр.301] заменим кванторное выражение x (A(x)B(x)) x (A(x)) x (B(x)) на бескванторное и проведём доказательство: iab ia ib = iab iab = 1. Проведём аналогичные замены в примерах 11.2.3.2 – 11.2.3.6[32]. Получим следующие доказательства. 130 131 11.2.3.2. x(A(x) + B(x)) & x(A(x))’ xB(x) (a+b) ia’ ib = a’b’+a+ja’+ib = 1. 11.2.3.3. x (A(x) + B(x)) & x(A(x))’ xB(x) i(a+b) a’ b = (i(a+b))’+a+b = a’b’+j(a+b)+a+b = 1. 11.2.3.5. x(A(x) + B(x)) & x(A(x) C(x)) & x(B(x) D(x)) x(C(x)+D(x)). (a+b)(ac)(bd) (c+d) = a’b’+ac’+bd’+c+d = 1. 11.2.3.6. xA(x)+xB(x) x (A(x)+B(x)) ia+ib i(a+b) = i(a+b) i(a+b) = 1. В книге В. Ф. Беркова “Логика: задачи и упражнения” (М. : 1998, стр. 122) приведена задача из логики отношений, которую предлагается решать с помощью многоместных предикатов. Попытаемся её решить без привлечения кванторного исчисления. Задача 8б. Выведите заключение из следующих посылок: Иван дружит с Марьей, Марья дружит с Петром. Решение. Примем в качестве универсума множество дружественных отношений(круг друзей). Введём следующие обозначения: m – множество друзей Марьи, x – множество друзей Ивана, y – множество друзей Петра. Тогда по алгоритму ТВАТ получим следующие скалярные диаграммы. Кстати, по алгоритму ИЭИ мы получим такой же результат. M = Ixm(3)Imy(3) = (mx+im’+ix’)(my+im’+iy’) = mxy+im’+ix’y’ f(x,y) = i. 131 132 Следовательно, никакого заключения из этих посылок сделать невозможно. На скалярных диаграммах изображены не все возможные «дружественные» ситуации, но даже представленных скаляров хватило для корректного решения задачи. Решение могло быть получено лишь при заданных количественных характеристиках для терминов силлогизма. 132 133 Заключение. Автор не считает предложенные методы, алгоритмы и полученные по ним результаты истиной в последней инстанции. Однако эти результаты хорошо согласуются со здравым смыслом. Автор видит пути ревизии изложенных методов и собирается критически переосмыслить их при более благоприятных обстоятельствах. Но некоторые итоги не вызывают сомнения: - силлогистика Аристотеля не является полной; многие «правильные» модусы Аристотеля ошибочны (наиболее очевидная ошибка - модус AAI 4-й фигуры); - правила посылок некорректны; - модусы не имеют смысла, поскольку не учитывают универсум, конкретное содержание посылок и количественные характеристики терминов; - аналитическое представление силлогистических функторов Axy,Exy впервые дано русским логиком П. С. Порецким; - кванторы не решают проблем анализа и синтеза силлогизмов; 133 134 Глава седьмая Логика П.С.Порецкого. Платон Сергеевич Порецкий родился 3 октября 1846 г. в Елизаветграде Херсонской губернии в семье военного врача[36]. В 1870 г. закончил физматфак Харьковского университета. Был оставлен профессорским стипендиатом на кафедре астрономии. С 1876 г. избирается астрономом-наблюдателем Казанского университета. За 1876-79 гг. Порецкий опубликовал 2 тома наблюдений на меридианном круге. Несмотря на слабое здоровье участвует в общественной жизни университета, являясь секретарем секции физматнаук, казначеем, а затем и пожизненным членом. Редактирует либеральную газету "Телеграф". За астрономические исследования в 1886 г. ему присуждается ученая степень доктора астрономии и звание приват-доцента. Принимал заочное участие в ряде международных научных конгрессов, вел активную переписку как с русскими, так и иностранными учеными. П.С.Порецкий умер 9 августа 1907 г. в с.Жоведь Гродненского уезда Черниговской губернии, куда переехал из Казани в 1889 г., будучи уже тяжелобольным. Смерть застала его за неоконченной статьей по логике. Логикой занимается с 1880 г. В 1881 г. выходит его работа "Изложение основных начал мат.логики ...". В 1884 г. издает свой большой труд "О способах решения логических равенств и об обратном способе математической логики"[34], где излагает теорию логических равенств, закон форм посылок, закон замещения системы посылок одной посылкою, закон разложения посылок на элементы, закон исключения терминов из посылок, закон умозаключений(синтез), закон причин. В этой работе Платон Сергеевич решил поставленную Лейбницем проблему создания логического исчисления. Сам Лейбниц связывал с идеями заложенного им логического исчисления неосуществимую мечту о времени, когда вместо того, чтобы спорить, люди возьмут карандаши и будут вычислять. Какой-нибудь конкретной потребности в логическом исчислении как таковом в эпоху Лейбница ещё не было. Независимо от Лейбница идеи алгебры логики, или исчисления классов, равносильного логике Аристотеля, были развиты наряду со многими другими исчислениями, созданными в XIX столетии, А. де Морганом, Булем, Джевонсом, Пирсом, Шредером. Венцом этого периода в истории математической логики были работы русского логика, астронома и математика, собрата Н. И. Лобачевского по Казанскому университету Платона Сергеевича Порецкого. Переходя в своей известной «Алгебре логики» к изложению метода П. С. Порецкого, Л. Кутюра •писал: «Буль и Шредер преувеличивали аналогию алгебры логики с обыкновенной алгеброй. В логике различие терминов известных и неизвестных является искусственным и почти бесполезным: все термины в сущности известны, и речь идёт только о том, чтобы из данных между ними отношений вывести новые отношения (т. е. отношения неизвестные или неявно известные)». Такова цель метода П. С. Порецкого. П. С. Порецкий и сам сознавал значение созданного им метода. В предисловии к своей первой большой работе по математической логике (1884) «О способах решения логических равенств и об обратном способе математической логики» 134 135 он писал: «Обращаясь к нашему сочинению, предлагаемому ныне на суд читателя, мы должны сказать, что: 1) оно заключает в себе первый опыт (не только в нашей, но и в иностранной литературе) построения полной и вполне законченной теории качественных умозаключений и 2) оно представляет собой (за исключением немногих страниц, посвящённых изложению приёмов других авторов) вполне самостоятельную работу, имеющую тем большее значение, что самые общие формулы и приёмы этой теории получены впервые только нами. Целая же часть этой теории (переход от умозаключений к посылкам) вполне и безраздельно принадлежит нам, как по приёмам, так и по самой идее о возможности решения этой задачи». Порецкий далёк от претензии построить универсальное логическое исчисление. В предисловии к [34] он чётко заявляет, что развиваемое им исчисление пригодно лишь для «качественных» умозаключений(«качество» в понимании Порецкого соответствует одноместному предикату). В логических равенствах Порецкий использует суждения только общего характера(утвердительные или отрицательные). Более того, можно утверждать, что в случае получения частного заключения эти методы не работают Работа П.С.Порецкого "Из области математической логики"(1902) является обобщением классической силлогистики. Синтезируется несколько заключений из заданных посылок(элиминация), что даёт возможность доказать отсутствие каких-либо других следствий, помимо следствий искомого вида. Элиминацию до сих пор не освоила современная логика. Аксиоматика Порецкого. В [36] утверждается, что аксиоматика Порецкого имеет вид: a a, ((a b)(b c)) (a c), (ab) a, (ab) b, ((a b)(a c)) (a (bc)), ((a b)(b a)) (a = b), (a = b) (a b), (a = b) (b a). Непонятно, почему все эти соотношения называются аксиомами, поскольку они легко и просто доказываются с помощью алгоритма «Импульс». Воспользуемся алгоритмом «Импульс» для доказательства того, что все аксиомы Порецкого являются теоремами: 1) a a = a’ + a = 1, 2) ((a b)(b c)) (a c)=((a’+b)(b’+c)) (a’+c)=ab’+bc’+a’+c = 1, 3) (ab) a = a’+b’+a = 1, 4) (ab) b = a’+b’+b = 1, 5) ((a b)(a c))(a (bc)) = ((a’+b)(a’+c)) (a’+bc) = ab’+ac’+a’+bc = 1, 6) ((a b)(b a)) (a=b)=((a’+b)(b’+a)) (a=b)=ab’+ba’+ab+a’b’=1, 7) (a = b) (a b) = ab’+ba’+a’+b = 1, 8) (a = b) (b a) = ab’+ba’+b’+a = 1. Стяжкин Н.И.[36] приводит исчисление Порецкого в виде длинного списка из более чем 20 аксиом и правил: (1A) e = e – принцип тождества; (2П) (e=c) (c=e) – симметричность равенства; 135 136 (3П) ((e=c)&(c=b)) (e=b) – транзитивность равенства; (4A) ee = e – идемпотентность умножения; (4*A) e+e = e – идемпотентность сложения; (5A) ec = ce – коммутативность умножения; (5*A) e+c = c+e – коммутативность сложения; (6A) (ec)b = e(cb) – ассоциативность умножения; (6*A) (e+c)+b = e+(c+b) – ассоциативность сложения; (7A) e(e+c) = e – принцип поглощения; (7*A) e+ec = e – принцип поглощения; (9П) (e=c) (e+b=c+b); (9*П) (e=c) (eb=cb); (10A) e(c+b) = ec+eb; (11A) e+e’ = 1; (11*A)e&e’ = 0; (12A) e&0 = 0; (12*A)e&1 = e. Нет нужды доказывать, что весь этот набор аксиом и правил на самом деле является набором теорем, которые легко выводятся по алгоритму «Импульс». Более того, на стр.377 [36] долго и многословно поясняется, как с помощью аксиом и правил можно доказать одну из теорем логических следствий Порецкого. Покажем, как просто это делается по алгоритму «Импульс»(здесь переменная e1 заменена на c): (e=ec) (e=e(c+x)) = e(ec)’+e’ec+ec+ex+e’(e’+c’x’) = ec’+ec+ex+e’ = e+e’ = 1. Главные задачи Порецкого рассмотрены в разделе, посвящённом решению логических уравнений. Здесь лишь необходимо подчеркнуть, что аналитическое описание силлогистических функторов Axy, Exy впервые в мире ввёл Платон Сергеевич Порецкий, а через 12 лет после него к таким же результатам пришёл Л.Кэрролл. Современная логика до сих пор об этом не догадывается. Если внимательно изучать его работу[34], то становится очевидным, что функтор Axy Порецкий воспринимал как пересечение множеств X и Y. Таким образом по-Порецкому имеем: Axy (xxy) = xy + x’(x’+y’) = xy+x’ = x’+ y. Ayx (yxy) = xy + y’(x’+y’) = xy+y’ = y’+x. Exy (xxy’) = xy’ + x’(x’+y) = xy’+x’ = x’+y’. Таким образом, вышеприведённые аналитические представления общеутвердительного и общеотрицательного функторов были получены гениальным русским логиком сто двадцать лет назад, а мировая беспомощная наука до сих прозябает в невежестве. 136 137 Глава восьмая Логика Л.Кэрролла. Прошло более 100 лет после выхода в свет математических трудов великого английского математика и писателя Льюиса Кэрролла. В предисловии к «Истории с узелками» [11] проф. Я.А. Смородинский отмечает многогранность таланта этого учёного. Анализируя книги и статьи о Л. Кэрролле, он замечает, что одни авторы склонны видеть в нём лишь поэта, автора детских сказок об Алисе, другие – посредственного математика, не разобравшегося с традиционной логикой. В конце концов историки науки признали, что логические работы Кэрролла намного опережали своё время [11]. Но в это признание трудно поверить: в прекрасном учебнике «История логики» под редакцией добротного педагога В.Ф. Беркова нет ни слова о великом логике. Молчит о нём и английская наука: нет пророка в своём отечестве. В наше время ни один логик не рискнёт признаться в незнании его работ. Однако мало прочесть работы Кэрролла, их нужно ещё и понять. А вот с этой задачей не справился ни один учёный. Таким образом, великий логик опередил не только своё время, но и наше. Саркастическое отношение Кэрролла к этим «так называемым логикам» можно распространить и на наших современников. В предисловии Ю. Данилова к книге Л.Кэрролла «Логическая игра» высказывается мысль об искусстве правильного (логичного) рассуждения, об умении получать правильные заключения даже из несколько необычных суждений. «Например, из странных посылок Ни одно ископаемое животное не может быть несчастно в любви. Устрица может быть несчастна в любви. следует вполне здравое, и, что самое главное, правильное, заключение: «Устрица – не ископаемое животное», - утверждает Ю. Данилов [11]. Однако это далеко не так. Проведём синтез заданного силлогизма по алгоритму ТВАТ [28]. Вторая посылка модальна, следовательно устрица может быть как несчастной в любви, так и счастливой. Поэтому появляются три ситуации, представленные скалярами Y1, Y2, Y3. Введём следующие обозначения: U - универсум, состоящий из живых существ. M – несчастные в любви существа. X – ископаемые животные. Y – устрица. F(x,y) = y’+i = Ixy’(7), т.е. «Некоторые ископаемые животные – не устрицы». Мы 137 138 получили частно-утвердительное заключение в 7-ом базисе [28]. Здесь и далее апостроф обозначает отрицание. Это так называемая интегрированная, обобщённая оценка. В жизни не может быть ситуаций Y1 – Y3 одновременно: не может быть одна и та же устрица ископаемой и неископаемой. Поэтому действительное заключение выглядит так: «Вероятно, устрица – неископаемое животное». Судя по скалярным диаграммам эта вероятность составляет 2/3. Величина вероятности определяется объёмами множеств-терминов U,m,x,y. У Кэрролла есть одна слабость: он любит формулировать посылки какнибудь поизощрённее, считая, что такие задачи представляют повышенную сложность для «нервически припадочных логиков». Это невежественное заблуждение: просто в результате подобных изысков зачастую чрезвычайно некорректно формулируется условие задачи. Постановка задачи должна быть абсолютно прозрачной, всегда нужно стремиться к предельной простоте посылок. Не нужно пугаться отрицательных форм суждений, но заменять утвердительную форму на отрицательную просто по прихоти – дурной тон в математике. Во-первых, в данном силлогизме во второй посылке нужно убрать модальность. Во-вторых, в этой же посылке выбрать один из вариантов: либо «Всякая устрица несчастна в любви», либо «Некоторые устрицы несчастны в любви». В первом случае заключение будет простым: «Устрица – не ископаемое животное». Во втором по алгоритму ТВАТ получим следующий результат. F(x,y) = x’+i = Ix’y(5), т.е. «Некоторые неископаемые животные – устрицы». Заключение получено в 5-ом базисе. Как видно из данного примера, посылки могут быть предельно простыми и прозрачными, а синтез заключения оказывается сложным. Неинтегрированное заключение выглядит так: «Вероятнее всего устрица – неископаемое животное». Для М = 0,5U, x = 0,25U эта вероятность составит 0,75. Возможно, вычисление вероятности окажется более сложным процессом, учитывающим распределение всех ситуаций Y1 – Y4, но для школьников можно воспользоваться приблизительным методом оценки. Главное, чтобы студенты и учащиеся могли находить все значимые ситуации при синтезе силлогизма. Кстати, вовсе не обязательно давать интегрированные заключения, поэтому школьники могут обходиться без таблиц истинности и трёхзначной логики. Останется, как и просил Лейбниц, одна прозрачная гео- 138 139 метрия с арифметикой. Кэрролл прекрасно понимал, что фигуры и модусы Аристотеля не справляются ни с анализом, ни с синтезом силлогизмов. К тому же он, возможно, читал Ф. Бекона, утверждавшего, что логика Аристотеля вредна. Поэтому талантливый мыслитель искал инструмент для решения поставленных логических задач. И такой инструмент был им создан: это диаграммы Кэрролла. С помощью диаграмм [11] он сумел реализовать синтез огромного массива силлогизмов, не прибегая к бесполезным терминам субъекта и предиката, большей и меньшей посылки, к традиционным некорректным правилам, фигурам и модусам. Однако не все силлогизмы поддавались анализу и синтезу с помощью диаграмм Кэрролла. В связи с этим в его работе [11] появилась глава, посвящённая логическим ошибкам. На основе своих диаграмм Кэрролл приходит к выводу, что существуют посылки, которые не ведут ни к какому логическому заключению, тем самым как бы подтверждая мысль Аристотеля в отношении неправильных модусов. Для иллюстрации этого утверждения он приводит следующий силлогизм [11]: Все солдаты (х) храбрые (m). Некоторые англичане (у) храбрые (m). ------------------------------------------------Некоторые англичане – солдаты. «Выглядит это весьма похоже на силлогизм, и менее опытный логик вполне мог бы принять такое рассуждение за силлогизм», - заявляет Кэрролл. Однако проведём синтез по алгоритму ТВАТ и докажем, что это силлогизм. Изобразим на диаграмме все значимые ситуации. Универсум – множество людей. F(x,y) = x’+i = Ix’y(5), т.е. «Некоторые не-солдаты – англичане». Это интегрированное заключение отнюдь не противоречит здравому смыслу. Раздельный анализ изображённых на диаграмме ситуаций даст следующие заключения: «Некоторые солдаты – англичане» (8-й базис), «Все солдаты – англичане» и «Ни один солдат – не англичанин». Второе и третье заключения противоречат действительности, поскольку армии имеются во всех странах мира, в том числе и в Англии. Следовательно, остаётся лишь одно заключение «Некоторые солдаты – англичане», что совпадает с гипотетическим заключением Л.Кэрролла, поскольку частно-утвердительный функтор в 8-ом базисе симметричен. Как видим, интегрированное заключение отличается от неинтегрированного, но последнее было получено с использованием дополнительной информации об армиях государств. Тем не менее триада Кэрролла является силлогизмом без всяких натяжек: великий английский логик проявил здесь элементарную бестолковость. 139 140 Льюис Кэрролл видел недостатки своих диаграмм, поэтому он продолжал поиски формальных методов анализа и синтеза силлогизмов и соритов. В результате этих поисков был создан «метод индексов»[11, с.262], который является ничем иным как обычной математической логикой. Впервые в западной логике появляется аналитическое описание общеутвердительного и общеотрицательного функторов [11, с.263]: Axy = (xy’)’ = x’+y; Exy = (xy)’ = x’+y’. Неважно, что эти соотношения были представлены «карточной» символикой, важно, что именно с них начинается истинно математическая силлогистика Европы. Задолго до Кэрролла (в 1884г.) точно такие же результаты были получены гениальным русским логиком Платоном Сергеевичем Порецким [34]. Это нисколько не умаляет заслуг Кэрролла, поскольку он был самоучкой и безусловно не знал о работах русского учёного, который тоже не оказался пророком в своём отечестве. Мировая математическая силлогистика, конечно же, начинается с П.С.Порецкого. Однако до сих пор ни в одном учебнике по логике вы не найдёте этих основополагающих формул. Сделав такой выдающийся шаг в формализации логики, Кэрролл тут же совершает ряд ошибок. «Теперь я возьму три различные формы, которые могут принимать пары силлогизмов, и с помощью диаграмм раз и навсегда выведу из них заключения…», - заявляет великий логик [11, с.265]. Здесь он повторяет заблуждения Аристотеля, считавшего, что заключение силлогизма не зависит от объёма терминов . В переводе на современную символику эти три фигуры Кэрролла описываются соотношениями: 1. ExmAym Exy 2. AmxIym Ixy 3. AmxAmy Ixy. Бесспорной здесь является лишь 1-я фигура. Для 2-й фигуры заключением является Ixy(2), для 3-й – Ixy(3), т.е. совершенно разные формы частноутвердительного функтора. Для 2-й фигуры при мощности множеств u=3, m=2, x=3, y=2 получим заключение Ayx. Для 3-й фигуры при u, m, x, y = 4, 2, 3, 4 соответственно имеем заключение Axy. Это грубейшая ошибка Кэрролла. Однако никто не заметил, что на стр.265 своих «Узелков» выдающийся логик Запада вслед за Порецким напрочь отметает все бесполезные термины вроде субъекта, предиката, большей и меньшей посылок и прочей наукообразной чепухи. Что касается соритов, то здесь достижения Кэрролла более чем скромны. Он выбирает самые простые сориты для синтеза всего лишь одногоединственного заключения, тогда как П.С.Порецкий решает сложные сориты с выводом многих заключений. Задачи Л.Кэрролла. В своей книге «История с узелками» [11] Льюис Кэрролл приводит огромное количество изящных и остроумных логических задач. В отличие от современных академиков-«логиков» выдающийся английский математик не боится уронить свой авторитет, применяя совершенно новые методы для анализа и синтеза силлогизмов и соритов. В этих примерах восхищают яркость таланта 140 141 учёного и писателя, юмор и увлекательность изложения чрезвычайно серьёзной науки. За сто двадцать лет на логическом небосклоне не появилось ни одной звезды, сопоставимой по гениальности с такими учёными, как Порецкий П.С. и Л. Кэрролл. Более того, все современные «авторитеты» от логики не доросли даже до освоения научного наследия своих великих предшественников и сделали всё, чтобы превратить науку о мышлении в болтологику. Автор с огорчением констатирует, что классическая логика деградировала по сравнению с концом 19-го столетия. Мы вместе с читателем пройдёмся по всем задачам величайшего английского гения и проверим корректность их решения на основе Русской логики. Общеизвестна страсть Л.Кэрролла к «инверсной силлогистике». Вместо того, чтобы просто сказать, что «Все y суть m”, знаменитый учёный обязательно всё вывернет наизнанку и заявит, что «Ни один m’ не есть y». Простим Кэрроллу эту слабость и не будем корректировать его силлогизмы. Подобные уловки ещё имеют смысл в классической логике, которая приходит в замешательство от инверсных терминов, но в Русской логике такие выверты просто смешны. Кроме того, остроумный логик зачастую так закрутит текст посылки, что понять её смысл становится просто невозможно. Это уже слишком: условие задачи должно быть абсолютно прозрачным и математически жёстким, иначе такая постановка воспринимается как недомыслие. Однако следует подчеркнуть высочайшую дисциплину мышления гениального логика: он в каждой задаче оговаривает универсум и чётко формулирует содержание терминов. Современные «логики» сплошь и рядом даже не догадываются о необходимости соблюдать эти требования. Автор заранее извиняется за нарушение некоторых грамматических норм. Вызвано это стремлением сократить длинноты в суждениях при сохранении математической точности. Например, вместо фразы «Некоторые мучные изделия, не являющиеся сдобными булочками, не суть пышные» будет записано «Некоторые не-сдобные булочки не пышны». Дефис перед прилагательным «сдобные» означает логическое отрицание всего термина «сдобные булочки». Произвести синтез и анализ силлогизмов([11], стр. 289) на основе алгоритмов ИЭИ и ТВАТ. Частноутвердительное суждение Ixy задаётся в базисе Васильева. Нумерация задач соответствует [11]. 8.1 Ни одно m не есть x’. Все m’ суть y. Решение. M = Emx’Am’y = (m’+x)(m+y) = mx+m’y. F(x,y) = x+y = Ax’y = Ay’x = Ex’y’. 141 142 F(x,y) = x+y = Ax’y = Ay’x = Ex’y’. Ответы по [11] и по алгоритмам ИЭИ, ТВАТ совпали. 8.2. Ни одно m’ не есть x. Некоторые m’ суть y’. Решение. M = Em’xIm’y’ = m+x’. F(x,y) = x’+i = Ix’y(5). Ответы по [11] и по алгоритмам ИЭИ, ТВАТ не совпали. У Кэрролла F(x,y) = Ix’y’(3), что не соответствует скалярным диаграммам. 8.3. Все m’ суть x. Все m’ суть y’. Решение. M = Am’xAm’y’ = (m+x)(m+y’) = m+xy’. F(x,y) = xy’+i = Ixy’(3). 142 143 F(x,y) = xy’+i = Ixy’(3). Ответы совпали. 8.4. Ни один x’ не есть m’. Все y’ суть m. Решение. M = Em’x’Ay’m = (m+x)(m+y) = m+xy. F(x,y) = xy+i = Ixy(3). Ответы по [11] и по алгоритмам ИЭИ, ТВАТ не совпали. У Кэрролла нет заключения, что не соответствует скалярным диаграммам. 8.5. Некоторые m суть x’. Ни один y не есть m. Решение. M = Imx’Eym = m’+y’. F(x,y) = y’+i = Ixy’(7). 143 144 F(x,y) = y’+i = Ixy’(7). Ответы по [11] и по алгоритмам ИЭИ, ТВАТ не совпали. У Кэрролла заключение f(x,y) = Ix’y’(3), что не соответствует скалярным диаграммам. 8.6. Ни один x’ не есть m. Ни одно m не есть y. Решение. M = Ex’mEmy = (x+m’)(m’+y’) = m’+xy’. F(x,y) = xy’+i = Ixy’(3). F(x,y) = xy’+i = Ixy’(3). Ответы по [11] и по алгоритмам ИЭИ, ТВАТ не совпали. У Кэрролла нет заключения, что не соответствует скалярным диаграммам. 8.7. Ни одно m не есть x’. Некоторые y’ суть m. Решение. M = Emx’Iy’m = m’+x. F(x,y) = x+i = Ixy(5). 144 145 F(x,y) = x+i = Ixy(5). Ответы по [11] и по алгоритмам ИЭИ, ТВАТ не совпали. У Кэрролла заключение f(x,y) = Ixy’(3), что не соответствует скалярным диаграммам. 8.8. Все m’ суть x’. Ни одно m’ не есть y. Решение. M = Am’x’Em’y = (m+x’)(m+y’) = m+x’y’. F(x,y) = x’y’+i = Ix’y’(3). F(x,y) = x+i = Ixy(5). Ответы по [11] и по алгоритмам ИЭИ, ТВАТ не совпали. У Кэрролла заключение f(x,y) = Ixy’(3), что не соответствует скалярным диаграммам. 8.9. Некоторые x’ суть m’. Ни одно m не есть y’. Решение. M = Im’x’Emy’ = m’+y. F(x,y) = y+i = Ixy(7). 145 146 F(x,y) = y+i = Ixy(7). Ответы по [11] и по алгоритмам ИЭИ, ТВАТ не совпали. У Кэрролла отсутствует заключение, что не соответствует скалярным диаграммам. 8.10. Все x суть m. Все y’ суть m’. Решение. M = AxmAy’m’ = (x’+m)(m’+y) = my+m’x’. F(x,y) = x’+y = Axy. Поскольку алгоритм ИЭИ при получении общеутвердительного или общеотрицательного заключения работает безукоризненно, то в подобных случаях алгоритм ТВАТ можно не использовать. Ответы по [11] и по алгоритму ИЭИ не совпали. У Кэрролла заключение выглядит несколько иначе: f(x,y) = AxyAy’x’. Здесь Кэрролл что называется перемудрил, поскольку Axy = Ay’x’ = x’+y. Поэтому решение Кэрролла является простой тавтологией. 8.11. Ни одно m не есть x. Все y’ суть m’. Решение. M = EmxAy’m’ = (m’+x’)(m’+y) = m’+x’y. F(x,y) = x’y+i = Ix’y(3). F(x,y) = x’y+i = Ix’y(3). Ответы по [11] и по алгоритмам ИЭИ, ТВАТ не совпали. У Кэрролла отсутствует заключение, что не соответствует скалярным диаграммам. 146 147 8.12. Ни один x не есть m. Все y суть m. Решение. M = ExmAym = (x’+m’)(m+y’) = m’y’+mx’. F(x,y) = x’+y’ = Exy. 8.13. Все m’ суть x. Ни один y не есть m. Решение. M = Am’xEym = (x+m)(m’+y’) = my’+m’x’. F(x,y) = x+y’ = Ayx. 8.14. Все m суть x. Все m’ суть y. Решение. M = AmxAm’y = (x+m’)(m+y) = m’y+mx. F(x,y) = x+y = Ay’x =Ax’y = Ex’y’. 8.15. Ни один x не есть m. Ни одно m’ не есть y. Решение. M = ExmEm’y = (x’+m’)(m+y’) = m’y’+mx’. F(x,y) = x’+y’ = Exy = Axy’ = Ayx’. 8.16. Все x суть m’. Все y суть m. Решение. M = Axm’Aym = (x’+m’)(m+y’) = m’y’+mx’. F(x,y) = x’+y’ = Exy. 8.17. Ни один x не есть m. Все m’ суть y. Решение. M = ExmAm’y = (x’+m’)(m+y) = m’y+mx’. F(x,y) = x’+y = Axy. 8.18. Ни один x не есть m’. Ни одно m не есть y. Решение. M = Exm’Emy = (x’+m)(m’+y’) = my’+m’x’. F(x,y) = x’+y’ = Exy. 8.19. Все m суть x. Все m суть y’. Решение. M = AmxAmy’ = (m’+x)(m’+y’) = m’+xy’. 147 148 F(x,y) = xy’+i = Ixy’(3). F(x,y) = xy’+i = Ixy’(3). 8.20. Ни одно m не есть x. Все m’ суть y. Решение. M = EmxAm’y = (m’+x’)(m+y) = mx’+m’y. F(x,y) = x’+y = Axy. Приняв каждую из следующих пар конкретных суждений за посылку силлогизма , вывести заключение[11стр.290]. 8.21. Я совершил прогулку. Я чувствую себя лучше. Решение. Введём следующие обозначения: Универсум u - люди, m – я, x - совершившие прогулку, y – чувствующие себя лучше. F(x,y) = y+i = Ixy(7), т.е. «Некоторые из тех, кто совершил прогулку, чувствуют себя лучше». 8.22. Никто не читал этого письма, кроме Джона. Никто из тех, кто не читал этого письма, не знает его содержания. Решение. Введём следующие обозначения: Универсум u - люди, m – прочитавшие письмо, x - Джон, y – знающие содержание письма. M = (m x)(m’ y’) = (mx+m’x’)(my+m’y’) = mxy+m’x’y’. 148 149 F(x,y) = xy+x’y’ = (y x). Здесь Л.Кэрролл допускает по меньшей мере 2 ошибки: подменяет эквивалентность терминов посылок общеотрицательными функторами и оперирует с единичным множеством как с общим. F(x,y) = xy+x’y’ = (x y), т.е. “Джон и только Джон знает содержание этого письма”. 8.23. Те, кто не стар, любят ходить пешком . Ни вы, ни я не стары. Решение. Введём следующие обозначения: U - люди, m – старые, x - любящие пешую ходьбу, y – вы и я. M = Am’xEym = (m+x)(m’+y’) = my’+m’x. F(x,y) = x+y’ = Ayx, т.е. “Вы и я любим ходить пешком”. 8.24. Ваш курс всегда честен. Ваш курс – лучшая политика. Решение. Введём следующие обозначения: Универсум u - курсы, m – ваши, x - честные, y – курсы, являющиеся лучшей политикой. M = AmxAmy = (m’+x)(m’+y) = m’+xy. F(x,y) = xy+i = Ixy(3). F(x,y) = xy+i = Ixy(3), т.е. «Честный курс – иногда лучшая политика». 8.25. Ни одно жирное животное не может бегать быстро. 149 150 Некоторые гончие бегают быстро. Решение. Введём следующие обозначения: Универсум u - животные, m – быстрые, x - жирные, y – гончие. M = ExmIym(8) = (m’+x’) & 1 = m’+x’. F(x,y) = x’+i = Ix’y(5). F(x,y) = x’+i = Ix’y(5), т.е. «Некоторые гончие не жирные». Казалось бы, ответ совпал с результатом Л. Кэрролла, однако Кэрролл не оговорил базис, а следовательно, он ошибся: в классической силлогистике используется лишь базис Аристотеля. 8.26. Некоторые из тех, кто достоин славы, получают награду. Лишь тот, кто храбр, достоин славы. Решение. Введём следующие обозначения: Универсум u - люди, m – достойные славы, x – получающие награду, y – храбрые. M = ImxEy’m(8) = (m’+y) & 1 = m’+y. F(x,y) = y+i = Ixy(7). F(x,y) =y+i = Ixy(7), т.е. «Некоторые храбрецы получают награду». Вновь результат Л.Кэрролла некорректен, хотя в словесной формулировке заключения идентичны: великий логик в принципе был не в состоянии определить базис. 150 151 8.27. Конфеты сладкие. Некоторые сласти очень нравятся детям. Решение. Введём следующие обозначения: Универсум u - лакомства, m – сладости, x – конфеты, y – любимые детьми лакомства. M = AxmImy(8) = (x’+m) & 1 = x’+m. F(x,y) = x’+i = Ix’y(5). F(x,y) =x’+i = Ix’y(5), т.е. «Некоторые не-конфеты – любимые детьми лакомства». Л.Кэрролл ошибочно утверждает, что заключение вывести нельзя. 8.28. Джон находится в этом доме. Все , кто находится в этом доме , больны. Решение. Введём следующие обозначения: универсум u - люди, m – находящиеся в этом доме, x – Джон, y – больные. M = AxmAmy = (x’+m)(m’+y) = m’x’+my. F(x,y) = x’+y = Axy,т.е.» Джон болен». Синтез по алгоритму ТВАТ даёт такой же результат, хотя аналитические операции с одиночными множествами далеко не всегда приводят к корректным заключениям. 8.29. Зонтик – очень нужная вещь в путешествии. Отправляясь в путешествие , всё лишнее следует оставлять дома. Решение. Введём следующие обозначения: Универсум u - вещи, m – нужные в путешествии вещи, x – зонты, y – вещи, которые следует оставлять дома. M = AxmAm’y = (x’+m)(m+y) = x’y+m. F(x,y) = x’y+i = Ix’y(3). 151 152 F(x,y) =x’+i = Ix’y(3), т.е. «Некоторые не-зонты следует оставлять дома». Вновь Кэрролл не в ладах с базисом. Кроме того, великий логик опять не уточнил: лишнее – это ненужное или нужное, но не для путешествия. Иначе ответ будет таким: «Зонтик нельзя оставлять дома». 8.30. Музыка , которую можно услышать , вызывает колебания воздуха . Музыка , которую нельзя услышать, не стоит того , чтобы за неё платили деньги. Решение. Введём следующие обозначения: Универсум u - музыка, m – слышимая музыка, x – вызывающая колебания воздуха, y – стоящая того, чтобы за неё платили деньги. M = AmxAm’y’ = (m’+x)(m+y’) = m’y’+mx. F(x,y) = x+y’ = Ayx, т.е. “ Вся музыка, которая стоит того, чтобы за неё платить деньги, вызывает колебания воздуха”. 8.31. В некоторые праздничные дни идёт дождь. Дождливые дни навевают тоску. Решение. Введём следующие обозначения: Универсум u - дни, m – дождливые, x – праздничные, y – тоскливые. M = IxmAmy = m’+y. F(x,y) = y+i = Ixy(7). 152 153 F(x,y) =y+i = Ixy(7), т.е. «Некоторые праздничные дни тоскливы». Вновь Кэрролл не в ладах с базисом. 8.32. Ни один француз не любит пудинга. Все англичане любят пудинг. Решение. Введём следующие обозначения: Универсум u -люди, m – любящие пудинг, x – французы, y – англичане. M = EmxAym =(m’+x’)(m+y’) = m’y’+mx’. F(x,y) = x’+y’ = Exy, т.е. «Ни один француз – не англичанин». 8.33. Ни одну фотографию, на которой девушка хмурится или неестественно улыбается, нельзя считать удачной. Ни один фотограф не может удержаться, чтобы не снять девушку нахмуренной или неестественно улыбающейся. Решение. Введём следующие обозначения: Универсум u – портреты девушек, m – портреты нахмуренных или неестественно улыбающихся девушек, x – удачные, y – фотолюбительские. M = EmxAym =(m’+x’)(m+y’) = m’y’+mx’. F(x,y) = x’+y’ = Exy, т.е. «Ни одну любительскую фотографию девушки нельзя считать удачной». 8.34. Все бледные люди флегматичны. Ни о ком нельзя сказать что у него поэтическая внешность, если он не бледен Решение. Введём следующие обозначения: Универсум u – люди, m – бледные, x – флегматичные, y – с поэтической внешностью. M = AmxEym’ =(m’+x)(m+y’) = m’y’+mx. F(x,y) = x+y’ = Ayx, т.е. «Все поэтические натуры флегматичны». 8.35. Ни один старый скряга не жизнерадостен. Некоторые старые скряги тощи. Решение. Введём следующие обозначения: Универсум u - люди, m – старые скряги, x – жизнерадостные, y – тощие. M = EmxImy = m’+x’. F(x,y) = x’+i = Ix’y(5). 153 154 F(x,y) =x’+i = Ix’y(5), т.е. «Некоторые нежизнерадостные особы -тощие». Вновь Кэрролл не в ладах с базисом. 8.36. Те,кто сохраняет самообладание, не вспыльчивы. Некоторые судьи вспыльчивы. Решение. Введём следующие обозначения: Универсум u - люди, m – вспыльчивые, x – сохраняющие самообладание, y – судьи. M = Axm’Iym = m’+x’. F(x,y) = x’+i = Ix’y(5). F(x,y) =x’+i = Ix’y(5), т.е. «Некоторые судьи теряют самообладание». Вновь Кэрролл не в ладах с базисом. 8.37. Все свиньи жирные. Ни одно животное, вскормленное на ячвенном отваре, не жирно. Решение. Введём следующие обозначения: Универсум u - животные, m – жирные, x – свиньи, y – вскормленные на ячменном отваре. M = AmxEym = (m+x’)(y’+m’) = m’x’+my’. F(x,y) = x’+y’ = Exy,т.е. »Ни одна свинья не вскормлена на ячменном отваре». 8.38. Все непрожорливые кролики черные. Ни один старый кролик не склонен к воздержанию в пище. Решение. Введём следующие обозначения: Универсум u - кролики, m – прожорливые, x – чёрные, y – старые. M = Am’xEym’ = (m+x)(y’+m) = xy’+m. F(x,y) = xy’+i = Ixy’(3). 154 155 F(x,y) =xy’+i = Ixy’(3), т.е. «Некоторые чёрные кролики не старые». 8.39. Некоторые картины свидетельствуют о зрелости их автсров. Незрелый художник не пишет ничего подлинно ценного. Решение. Введём следующие обозначения: Универсум u – произведения искусства, m – зрелые произведения, x – картины, y – представляющие подлинную ценность. M = ImxEm’y = y’+m. F(x,y) = y’+i = Ixy’(7). F(x,y) =xy’+i = Ixy’(3), т.е. «Некоторые картины не представляют подлинной ценности». У Л.Кэрролла нет заключения. 8.40. Я никогда не пренебрегаю важными делами. Ваше дело не имеет особой важности. Решение. Введём следующие обозначения: Универсум u – дела, m – важные, x – пренебрегаемые, y – ваше. M = EmxEmy = (m’+x’)(y’+m’) = m’+x’y’. F(x,y) = x’y’+i = Ix’y’(3). 155 156 F(x,y) =y’+i = Ixy’(7), т.е. «Некоторые дела, которыми я пренебрегаю, не включают ваше дело». Здесь по алгоритму ТВАТ получено более корректное заключение, чем по алгоритму ИЭИ, т.к. учтены особенности единичного множества. У Л.Кэрролла нет заключения. 8.41. Некоторые уроки трудны. То, что трудно, требует особого внимания. Решение. Введём следующие обозначения: Универсум u – предметы, m – трудные, x - уроки, y – требующие особого внимания. M = IxmAmy = m’+y. F(x,y) = y+i = Ixy(7). F(x,y) =y+i = Ixy(7), т.е. «Некоторые уроки требуют особого внимания». У Л.Кэрролла такое же заключение, но по умолчанию предполагается 3-й базис, т.е. базис Аристотеля, что неверно. 8.42. Все умные люди пользуются всеобщей любовью. Все обязательные люди пользуются всеобщей любовью. Решение. Введём следующие обозначения: Универсум u – люди, m – любимые, x - умные, y – обязательные. 156 157 M = AxmAym(x’+m)(y’+m) = m+x’y’. F(x,y) = x’y’+i = Ix’y’(3). F(x,y) =y+i = Ix’y’(3), т.е. «Некоторые неумные - необязательные». У Л.Кэрролла нет заключения, что неверно. 8.43. Невнимательному человеку ничего не стоит допустить оплошность. Ни один внимательный человек не забывает о своём обещании. Решение. Введём следующие обозначения: Универсум u – люди, m – внимательные, x – допускающие оплошность, y – забывающие свои обещания. M = Am’xEmy = (x+m)(y’+m’) = my’+m’x. F(x,y) = x+y’ = Ayx, т.е. «Все забывчивые допускают оплошность». Остальные задачи этого параграфа у Л.Кэрролла даны без решений и ответов, поэтому мы их оставим для самостоятельной проработки. Однако задача 5.34 представляется любопытной, посему сделаем для неё исключение. 8.44. Ничто разумное никогда не ставило меня в тупик. Логика ставит меня в тупик. Решение. Введём следующие обозначения: Универсум u – науки, m – ставящие в тупик, x – разумные, y – логика. M = EmxAym = (x’+m’)(y’+m) = m’y’+mx’. F(x,y) = x’+y’ = Ayx’, т.е. «Вся логика неразумна». Весьма симптоматичное заявление маститого логика. С этим мнением нельзя не согласиться, если иметь в виду классическую логику и классических “логиков”. 1. Проверить, являются ли следующие тройки абстрактных суждений силлогизмами [11,стр.296]. Все посылки будем считать заданными в базисе Васильева, а частноутвердительные заключения – в базисе Аристотеля(по классической традиции). 6.1. Некоторые x суть m. Ни одно m не есть y’. Некоторые x суть y. Решение. 157 158 M = IxmEmy’ = m’+y. F(x,y) = y+i = Ixy(7). F(x,y) =y+i = Ixy(7). Вновь Кэрролл не в ладах с базисом. 6.2. Все x суть m. Ни один y не есть m’. Ни один y не есть x’. Решение. M = AxmEym’ = (x’+m)(y’+m) = x’y’+m. F(x,y) = x’y’+i = Ix’y’(3). F(x,y) =x’y’+i = Ix’y’(3). Следовательно, исходное заключение неверно. 6.3. Некоторые x суть m’. Все y’ суть m. Некоторые x суть y. Решение. M = Ixm’Ay’m = y+m. F(x,y) = y+i = Ixy(7). 158 159 F(x,y) =y+i = Ixy(7). Следовательно, исходное заключение неверно по базису. 6.4. Все x суть m. Ни один y не есть m. Все x суть y’. Решение. M = AxmEym = (x’+m)(y’+m’) = my’+m’x’. F(x,y) = y’+x’ = Exy. 6.5.Некоторые m’ суть x’. Ни одно m’ не есть y. Некоторые x’ суть y’. Решение. M = Ix’m’Em’y = y’+m. F(x,y) = y’+i = Ixy’(7). F(x,y) =y’+i = Ixy’(7). Следовательно, исходное заключение неверно по базису и по семантике(смыслу). 6.6. Ни один x’ не есть m. Все y суть m’. Все y суть x’. Решение. M = Ex’m’Aym’ = (x+m’)(y’+m’) = xy’+m’. F(x,y) = xy’+i = Ixy’(3). F(x,y) =xy’+i = Ixy’(3). Следовательно, исходное заключение неверно по семантике. 6.7. Некоторые m’ суть x’. Все y’ суть m’. Некоторые x’ суть y’. Решение. M = Im’x’Ay’m’ = y+m’. F(x,y) = y+i = Ixy(7). 159 160 F(x,y) =y+i = Ixy(7). Следовательно, исходное заключение неверно по семантике. 6.8. Ни одно m’ не есть x’. Все y’ суть m’. Все y’ суть x. Решение. M = Em’x’Ay’m’ = (m+x)(y+m’) = m’x+my. F(x,y) = y+x = Ax’y = Ay’x = Ex’y’. Следовательно, исходное заключение не единственное. 6.9. Некоторые m суть x’. Ни одно m не есть y. Некоторые x’ суть y’. Решение. M = Ix’mEym = y’+m’. F(x,y) = y’+i = Ixy’(7). F(x,y) =y’+i = Ixy’(7). Следовательно, исходное заключение неверно. 6.10. Все m’ суть x’. Все m’ суть y. Некоторые y суть x’. Решение. M = Am’x’Am’y = (x’+m)(y+m) = m+x’y. F(x,y) = x’y+i = Ix’y(3). 160 161 F(x,y) = x’y+i = Ix’y(3). 6.11. Все x суть m’. Некоторые y суть m. Некоторые y суть x’. Решение. M = Axm’Iym = x’+m’. F(x,y) = x’+i = Ix’y(5). F(x,y) = x’+i = Ix’y(5). Кэрролл ошибся в базисе. 6.12.Ни один x не есть m. Ни одно m’ не есть y’. Ни один x не есть y’. Решение. M = ExmEm’y’ = (x’+m’)(m+y) = mx’+m’y F(x,y) = x’+y = Axy = Exy’. 6.13. Ни один x не есть m. Все y’ суть m. Все y’ суть x. Решение. M = ExmAy’m = (x’+m’)(m+y) = mx’+m’y F(x,y) = x’+y = Axy = Exy’. В решении Кэрролла допущена ошибка. 6.14. Все m’ суть x’. Все m’ суть y. Некоторые y суть x’. Решение. M = Am’x’Am’y = (x’+m)(m+y) = x’y+m. F(x,y) = x’y+i = Ix’y(3). 161 162 F(x,y) = x’y+i = Ix’y(3). 6.15. Некоторые m суть x’. Все y суть m’. Некоторые x’ суть y’. Решение. M = Imx’Aym’ = m’+y’. F(x,y) = y’+i = Ixy’(7). F(x,y) = y’+i = Ixy’(7). Кэрролл ошибся в базисе и семантике. 6.16. Ни один x’ не есть m. Все y’ суть m’. Некоторые y’ суть x. Решение. M = Ex’mAy’m’ = (x+m’)(m’+y) = xy+m’. F(x,y) = xy+i = Ixy(3). F(x,y) = xy+i = Ixy(3). Кэрролл ошибся в базисе. 162 163 6.17. Ни одно m’ не есть x. Все m’ суть y’. Некоторые x’ суть y’. Решение. M = Em’xAm’y’ = (x’+m)(m+y’) = x’y’+m. F(x,y) = x’y’+i = Ix’y’(3). F(x,y) = x’y’+i = Ix’y’(3). 6.18. Ни один x’ не есть m. Некоторые m суть y. Некоторые x суть y. Решение. M = Ex’mImy = x+m’. F(x,y) = x+i = Ixy(5). F(x,y) = x+i = Ixy(5). Кэрролл ошибся в базисе. 6.19. Некоторые m суть x. Все m суть y. Некоторые y суть x’. Решение. M = ImxAmy = m’+y. F(x,y) = y+i = Ixy(7). 163 164 F(x,y) = y+i = Ixy(7). Кэрролл ошибся в базисе и семантике. 6.20.Ни один x’ не есть m’. Некоторые m’ суть y’.Некоторые x суть y’. Решение. M = Ex’m’Im’y’ = m+x. F(x,y) = x+i = Ixy(5). F(x,y) = y+i = Ixy(5). Кэрролл ошибся в базисе и семантике. 7. Проверить, являются ли следующие тройки конкретных суждений силлогизмами[13,стр.296]. В дальнейшем все задачи по анализу и синтезу силлогизмов будут решаться на основе алгоритма “ИЭИ” и только в случае расхождения результатов, полученных по алгоритмам “ИЭИ” и “ТВАТ” будут приводиться скалярные диаграммы. Во всех задачах универсум обозначается через U. Замечания по решению задач Л.Кэрроллом будут приводиться лишь при несовпадении результатов, полученных по алгоритмам Русской логики и методам Л.Кэрролла. 7.1. Ни об одном враче нельзя сказать , что он восторженная натура. Вы натура восторженная. Вы не врач. Решение. U – люди. M – восторженные. X – врачи. Y – вы. M = ExmAym = (x’+m’)(m+y’) = mx’+m’y’. F(x,y) = x’+y’ = Exy. 164 165 7. 2. Словари полезны. Полезные книги высоко ценятся. Словари ценятся. Решение. U – книги. M – полезные. X – словари. Y – ценные. M = AxmAmy = (x’+m)(m’+y) = m’x’+my. F(x,y) = x’+y = Axy. 7. 3.Ни один скряга не альтруист. Никто, кроме скряг, не станет собирать скорлупу от яиц. Ни один альтруист не собирает скорлупу от яиц. Решение. U – люди. M – скряги. X – альтруисты. Y – сборщики скорлупы. M = Emx & (m y) = (x’+m’)(m’y’+my) = mx’y+m’y’. F(x,y) = x’+y’ = Exy. Несмотря на совпадение результатов необходимо отметить, что зачастую Л.Кэрролл путает общеутвердительный функтор с эквивалентностью(см. также задачу 7.5). 7. 4.Некоторые эпикурейцы не отличаются щедростью. Все мои дядюшки щедры. Мои дядюшки не эпикурейцы. Решение. U – личности. M – щедрые. X – эпикурейцы. Y – мои дядюшки. M = Ixm’Aym = y’+m. F(x,y) = y’+i = Ixy’(7), т.е. «Некоторые эпикурейцы не мои дядюшки». Л. Кэрролл ошибся в базисе. 7. 5. Золото тяжелое. Ничто, кроме золота, не сможет заставить его замолчать. Ничто легкое не сможет заставить его замолчать. Решение. U – предметы. M – золотые. X – тяжёлые. Y – те, что заставят его замолчать. M = Amx & (m y) = (m’+x)(m’y’+my) = mxy+m’y’. F(x,y) = y’+x = Ayx 7. 6. Некоторые здоровые люди тучны. Ни один нездоровый человек не силен. Некоторые тучные люди не сильны. Решение. U – люди. 165 166 M – здоровые. X – тучные. Y – сильные. M = ImxEm’y = m+y’. F(x,y) = y’+i = Ixy’(7), т.е. «Некоторые тучные люди не сильны». У Кэрролла нет заключения. 7. 7. Я почерпнул эти сведения из газеты, не гнушающейся слухами. Все газеты, не гнушающиеся слухами, распространяют небылицы. Это была небылица. Решение. U – печатные издания. M – газеты. X – прочитанная мною газета. Y – распространяющие небылицы. M = AxmAmy = (x’+m)(m’+y) = m’x’+my. F(x,y) = x’+y = Axy, т.е. «Прочитанная мною газета распространяет небылицы». 7. 8.Некоторые галстуки безвкусны. Все, сделанное со вкусом, приводит меня в восторг. Я не в восторге от некоторых галстуков. Решение. U – вещи. M – безвкусные. X – галстуки. Y – приводящие в восторг. M = ImxAm’y = m+y. F(x,y) = y+i = Ixy(7), т.е. «Некоторые галстуки приводят меня в восторг». У Кэрролла нет заключения. 7. 9.Он никогда не поет больше часа. Если пение продолжается более часа, окружающим надоедает слушать. Его пение не надоедает слушать. Решение. U – пение. M – пение более часа. X – его пение. Y – надоедливое пение. M = Axm’Amy = (x’+m’)(m’+y) = x’y+m’. F(x,y) = x’y+i = Ix’y(3), т.е. «Некоторое не его пение надоедливо». У Кэрролла нет заключения. 7. 10. Некоторые свечи дают очень мало света. Свечи для того и предназначены, чтобы давать свет. Некоторые вещи, предназначенные для того, чтобы давать свет, дают его очень мало. Решение. U – вещи. M – свечи. X – дающие мало света. Y – предназначенные светить. 166 167 M = ImxAmy = y+m’. F(x,y) = y+i = Ixy(7), т.е. заключение верно по смыслу, но некорректно по базису. 7. 11. Все, кто всерьез хочет учиться, должны упорно работать. Некоторые из этих мальчиков работают упорно. Некоторые из этих мальчиков всерьез хотят учиться. Решение. U – личности. M – работающие упорно. X – желающие учиться. Y – эти мальчики. M = AxmIym = x’+m. F(x,y) = x’+i = Ix’y(5), т.е. «Некоторые из этих мальчиков не хотят учиться». У Л.Кэрролла нет заключения. 7. 12.Все львы свирепы. Некоторые львы не пьют кофе. Некоторые живые существа, пьющие кофе, не свирепы. Решение. U – живые существа. M – львы. X – свирепые. Y – не пьющие кофе. M = AmxImy = x+m’. F(x,y) = x+i = Ixy(5), т.е. «Некоторые свирепые существа не пьют кофе». Кэрролл ошибся в базисе. 7. 13. Ни один скряга не щедр. Некоторые старики скупы. Некоторые старики – скряги. Решение. U – люди. M – щедрые. X – скряги. Y – старики. M = ExmIym’ = x’+m’. F(x,y) = x’+i = Ix’y(5), т.е. «Некоторые старики не скряги». У Кэрролла нет заключения. 7. 14.Ни одно ископаемое животное не может быть несчастно в любви. Устрица может быть несчастна в любви. Устрицы – не ископаемые животные. Решение. U – животные. M – несчастные в любви. X – ископаемые. Y – устрицы. M = ExmAym = (x’+m’)(y’+m) = mx’+m’y’. F(x,y) = x’+y’ = Exy. 7. 15. Необразованные люди обо всем судят поверхностно. 167 168 Все студенты – народ образованный. Ни один студент не судит обо всем поверхностно. Решение. U – люди. M – образованные. X – поверхностные. Y – студенты. M = Am’xAym = (x+m)(y’+m) = m+xy’. F(x,y) = xy’+i = Ixy’(3), т.е. «Некоторые поверхностные люди не студенты». 7. 16. Все козлята прыгают. Ни одно молодое животное не здорово, если оно не прыгает. Все козлята здоровы. Решение. U – животные. M – прыгающие. X – козлята. Y – здоровые. M = AxmAm’y’ = (x’+m)(y’+m) = m+x’y’. F(x,y) = x’y’+i = Ix’y’(3), т.е. «Некоторые нездоровые животные не козлята». У Кэрролла нет заключения. 7. 17. Плохо управляемые предприятия не приносят прибыли. Железными дорогами никогда не управляют плохо. Все железные дороги приносят прибыль. Решение. U – предприятия. M – плохо управляемые. X – приносящие прибыль. Y – железные дороги. M = Amx’Aym’ = (x’+m’)(y’+m’) = m’+x’y’. F(x,y) = x’y’+i = Ix’y’(3), т.е. «Некоторые предприятия, не являющиеся железными дорогами, не приносят прибыль». 7. 18. Ни один профессор не невежествен. Все невежественные люди тщеславны. Ни один профессор не тщаславен. Решение. U – люди. M – невежды. X – профессора. Y – тщеславные. M = ExmAmy = (x’+m’)(y+m’) = m’+x’y. F(x,y) = x’y+i = Ix’y(3), т.е. «Некоторые тщеславные люди – не профессора». 7. 19. Благоразумный человек избегает встречи с гиеной. Ни одного банкира нельзя обвинить в неблагоразумии. Ни один банкир не упустит случая избежать встречи с гиеной. Решение. 168 169 U – люди. M – благоразумные. X – избегающие встречи с гиеной. Y – банкиры. M = AmxEym’ = (x+m’)(y’+m) = m’y’+mx. F(x,y) = x+y’ = Ayx = Eyx’, т.е. «Ни один банкир не упустит случая избежать встречи с гиеной». 7. 20. Все осы злы. Ни один щенок не зол. Щенки – не осы Решение. U – живые существа. M – злые. X – осы. Y – щенки. M = AxmEym = (x’+m)(y’+m’) = my’+m’x’. F(x,y) = x’+y’ = Eyx, т.е. «Щенки – не осы». 7. 21. Ни один бездельник не станет знаменитостью. Некоторые художники – не бездельники. Некоторые художники станут знаменитостями. Решение. U – личности. M – бездельники. X – знаменитости. Y – художники. M = EmxIym’ = x’+m’. F(x,y) = x’+i = Ix’y(5), т.е. «Некоторые художники – не знаменитости». У Л.Кэрролла нет заключения. 7. 22. Все эти конфеты – шоколадные помадки. Все эти конфеты восхитительны на вкус. Шоколадные помадки восхитительны на вкус. Решение. U – лакомства. M – эти конфеты. X – шоколадные помадки. Y – восхитительно вкусные. M = AmxAmy = (x+m’)(m’+y) = xy+m’. F(x,y) = xy+i = Ixy(3), т.е. «Некоторые шоколадные помадки восхитительно вкусны». 7. 23. Ни одна горячая сдоба не полезна. Все булочки с изюмом неполезны. Булочки с изюмом – не сдоба. Решение. U – мучные изделия. M – полезные. X – горячая сдоба. Y – булочки с изюмом. 169 170 M = ExmAym’ = (x’+m’)(m’+y’) = x’y’+m’. F(x,y) = x’y’+i = Ix’y’(3), т.е. «Некоторые не булочки с изюмом являются не горячей сдобой». У Л.Кэрролла нет заключения. 7. 24.Некоторые анонимные сообщения ложны. Все сообщения, авторы которых известны, заслуживают доверия. Некоторые ложные сообщения не заслуживают доверия. Решение. U – сообщения. M – анонимки. X – ложные. Y – заслуживающие доверия. M = ImxAm’y = y+m. F(x,y) = y+i = Ixy(7), т.е. «Некоторые ложные сообщения заслуживают доверия». У Л.Кэрролла нет заключения. 7. 25. Некоторые подушки мягкие. Ни одна кочерга не мягкая. Некоторые кочерги не подушки. Решение. U – домашняя утварь. M – мягкая. X – подушки. Y – кочерёжки. M = IxmEym = y’+m’. F(x,y) = y’+i = Ixy’(7), т.е. «Некоторые подушки – не кочерёжки». У Л.Кэрролла 3-й базис(аристотелев) вместо 7-го. 7. 26. В неправоподобные истории трудно поверить. Ни одна из его историй не правдоподобна. Ни в одну из его историй не легко поверить. Решение. U – истории. M – неправдоподобные . X – истории, в которые верится с трудом. Y – его истории. M = AmxEym’ = (m’+x)(y’+m) = mx+m’y’. F(x,y) = y’+x = Ayx, т.е. заключение правильно. 7. 27. Ни один вор не является честным человеком. Некоторых нечестных людей уличают в неблаговидных поступках. Некоторых воров уличают в неблаговидных поступках. Решение. U – люди. M – честные. X – воры. Y – уличаемые в неблаговидных поступках. M = ExmIm’y = x’+m’. F(x,y) = x’+i = Ix’y(5), т.е. «Некоторых не-воров уличают в неблаговидных поступках». У Л.Кэрролла нет заключения. 7. 28. Ни одна сдобная булочка не полезна 170 171 Все, что выпечено из теста и пышно, не полезно. Все сдобные булочки пышны. Решение. U – мучные изделия. M – полезные. X – сдобные булочки. Y – пышные. M = ExmAym’ = (x’+m’)(y’+m’) = x’y’+m’. F(x,y) = x’y’+i = Ix’y’(3), т.е. «Некоторые не-сдобные булочки не пышны». У Л.Кэрролла нет заключения. 7. 29. Ни одна птица, кроме павлина, не гордится своим хвостом. Некоторые птицы, гордящиеся своим хвостом, не могут петь Некоторые павлины не могут петь. Решение. U – птицы. M – гордящиеся своим хвостом. X – павлины. Y – певчие. M = (x m)Imy’ = x’m’+mx. F(x,y) = x’+x = 1 = Ixy(8), т.е. «Некоторые павлины могут петь». У Л.Кэрролла 3-й базис(аристотелев) вместо 8-го. 7. 30. Тепло успокаивает боль. Ничто из того,что не успокаивает боли, не полезно при зубной боли. Тепло полезно при зубной боли. Решение. U – лечебные процедуры. M – успокаивающие боль. X – тепло. Y – полезные при зубной боли. M = AxmEm’y = (x’+m)(m+y’) = x’y’+m. F(x,y) = x’y’+i = Ix’y’(3), т.е. «Некоторые не-тепловые процедуры не полезны при зубной боли». У Л.Кэрролла нет заключения. 7. 31. Ни один банкрот не богат. Некоторые купцы – не банкроты. Некоторые купцы богаты. Решение. U – деловые люди. M – банкроты. X – богатые. Y – купцы. M = EmxIym’ = x’+m’. F(x,y) = x’+i = Ix’y(5), т.е. «Некоторые купцы не богаты». У Л.Кэрролла нет заключения. 7. 32. Скучные люди невыносимы. Ни одного скучного человека не упрашивают остаться, когда он собирается уходить из гостей. Ни одного невыносимого человека не упрашивают остаться, когда он собирается уходить из гостей. Решение. U – люди. 171 172 M – скучные. X – невыносимые. Y – те, кого просят остаться. M = AmxEmy = (x+m’)(m’+y’) = xy’+m’. F(x,y) = xy’+i = Ixy’(3), т.е. «Некоторых невыносимых людей не упрашивают остаться, когда они собираются уходить из гостей». 7. 33. Все разумные люди ходят ногами. Все неразумные люди ходят на голове. Ни один человек не ходит на голове и ногах. Решение. U – люди. M – разумные. X – ходящие ногами. Y – ходящие на голове. M = AmxAm’y = (x+m’)(m+y) = mx+m’y. F(x,y) = x+y = Ax’y = Ay’x = Ex’y’, т.е. «Все не-ходящие на ногах ходят на голове, и все не-ходящие на голове ходят на ногах». Заключение Л.Кэрролла «Ни один человек не ходит ни вниз головой, ни вверх ногами« не следует из посылок, хотя и соответствует здравому смыслу. 7. 34. Ни одна ручная тележка не комфортабельна. Ни один некомфортабельный экипаж не пользуется популярностью. Ни одна ручная тележка не пользуется популярностью. Решение. U – экипажи. M – комфортабельные. X – ручные тележки. Y – популярные. M = ExmEm’y = (x’+m’)(m+y’) = m’y’+mx’. F(x,y) = x’+y’ = Exy, т.е. заключение правильно. 7. 35. Ни одна лягушка не имеет поэтической внешности. Некоторые утки выглядят прозаично. Некоторые утки – не лягушки. Решение. U – живые существа. M – с поэтической внешностью. X – лягушки. Y – утки. M = ExmIym’ = m’+x’. F(x,y) = x’+i = Ix’y(5), т.е. «Некоторые утки – не лягушки». Казалось бы, заключение противоречет здравому смыслу. Это связано с тем, что нам известно содержание терминов «лягушка» и «утка», и оно никак не задействовано в посылках. Если вместо них ввести «злокую кудру» и «бокрёнка», то всё сразу встанет на свои места. У Л.Кэрролла нет заключения. 7. 36. Ни один император не зубной врач. Всех зубных врачей боятся дети. Ни одного императора дети не боятся. Решение. U – личности. 172 173 M – дантисты. X – императоры. Y – личности, которых боятся дети. M = ExmAmy = (m’+x’)(m’+y) = x’y+m’. F(x,y) = x’y+i = Ix’y(3), т.е. «Некоторых не-императоров боятся дети». 7. 37. Сахар сладкий. Соль несладкая. Соль – не сахар. Решение. U – бакалейные товары. M – сладкие. X – сахар. Y – соль. M = AxmAym’ = (m+x’)(y’+m’) = my’+m’x’. F(x,y) = x’+y’ = Exy, т.е. заключение верно, а у Л.Кэрролла вновь «перебор»: «Заключение неполно: пропущено суждение «Сахар – не соль». Что в лоб, что по лбу. 7. 38. Каждый орёл умеет летать. Некоторые свиньи не умеют летать. Некоторые свиньи – не орлы. Решение. U – живые сущетва. M – летающие. X – орлы. Y – свиньи. M = AxmIym = m+x’. F(x,y) = x’+i = Ix’y(5). ». У Л.Кэрролла 3-й базис вместо 5-го. 8. Предположив , что каждый из приводимых далее наборов абстрактных суждений является набором посылок сорита, найти заключение. Поиск заключений соритов будем вести по алгоритму «Осташков». 8.1 Ни одно c не есть d. Все a суть d. Все b суть c. Решение. M = EcdAadAbc = (c’+d’)(a’+d)(b’+c). По формуле де Моргана получим M’ = cd+ad’+bc’. В соответствии с M’ занесём нули в карту Карно, а в пустые клетки запишем единицы. После минимизации полученной полностью определённой логической функции зафиксируем результат M = a’b’c’+a’cd’+b’c’d. Отсюда по алгоритму «Осташков» найдём все возможные заключения. F1(a,b) = a’+b’ = Eab, что совпадает с результатом Л.Кэрролла. Далее определим оставшиеся два заключения, которых нет у знаменитого логика. Во всех своих соритах Л.Кэрролл всегда находил лишь одно заключение, что сви- 173 174 детельствует как о недостатках его методов, так и о недостаточности воображения. У Порецкого П.С. таких просчётов нет. F2(a,c) = a’+c’ = Eac. F3(b,d) = b’+d’ = Ebd. Разернув М в СДНФ, или выписав СДНФ из карты Карно, заполним сокращённую таблицу истинности для М, а по ней построим скалярную диаграмму. Скалярная диаграмма весьма наглядна: она не только даёт возможность вычислить все заключения, но и позволяет проверить исходные посылки, что повышает «помехоустойчивость» синтеза и достоверность полученных результатов. Для соритов алгоритм «Осташков» может быть значительно упрощен и заменён алгоритмом «Суздаль»: можно начать синтез непосредственно с построения скалярных диаграмм, предварительно выстроив посылки в определённом, «любимым» Кэрроллом, порядке. Он сам говорит о этом своём пристрастии в одной из задач по синтезу соритов: «Если я решаю логическую задачу без ворчанья, то можно быть уверенным, что она мне понятна. Посылки в этих соритах расположены не в том порядке, как в привычных мне задачах. Ни одна легкая задача не вызывает у меня головной боли. Я не могу понять задач, в которых посылки расположены не в том порядке, к которому я привык. Я никогда не ворчу на задачу, если от нее у меня не болит голова.» В данной задаче этот «любимый» Кэрроллом порядок выглядит так: AadEcdAbc. Такая последовательность посылок позволяет без труда однозначно выстроить скалярные диаграммы. Такой подход весьма эффективен при большом(более 6) количестве аргументов. 174 175 8.2. Все d суть b. Ни одно a не есть c’. Ни одно b не есть c. Решение. M = AdbEac’Ebc = (d’+b)(a’+c)(b’+c’) = AdbAacEbc. M’ = b’d+ac’+bc. M = a’c’d’+a’bc’+b’cd’. F1(a,d) = a’+d’ = Ead, что совпадает с результатом Л.Кэрролла. F2(a,b) = a’+b’ = Eab. F3(c,d) = c’+d’ = Ecd. По алгоритму “Суздаль” получим: AdbEbcAac. 8.3. Все b’ суть a. Ни одно a не суть d. Все b суть c. Решение. M = Ab’aEadAbc = (a+b)(a’+d’)(b’+c). M’ = a’b’+ad+bc’. M = ab’d’+acd’+a’bc. F1(c,d) = c+d’ = Adc, что совпадает с результатом Л.Кэрролла. 175 176 F2(a,c) = a+c = Aa’c. F3(b,d) = b+d’ = Adb. 8.4. Ни одно c не есть d. Все b суть c. Ни одно a не есть d’. Решение. M = EcdAbcEad’ = (c’+d’)(b’+c)(a’+d). M’ = cd+ad’+bc’. M = ab’c’+a’cd’+b’c’d. F1(a,b) = a’+b’ = Eab, что совпадает с результатом Л.Кэрролла. F2(a,c) = a’+c’ = Eac. F3(b,d) = b’+d’ = Ebd. 8.5. Все d суть e. Все c суть a. Ни одно b не есть d’. Все e суть a’. Решение. По алгоритму «Суздаль» освободимся от лишних инверсий: M = AdeAcaEbd’Aea’ = AdeAcaEbd’Eae. «Цепочка» получится в виде: M = AbdAdeEaeAca. По ней строим скалярные диаграммы сорита. Непосредственно из скалярных диаграмм видны все возможные заключения. Их число равно 5*4/2 – 4 = 6. F1(b,c) = Ebc, что совпадает с результатом Л.Кэрролла. F2(a,b) = Eab. F3(a,d) = Ead. F4(b,e) = Abe. F5(c,d) = Ecd. F6(c,e) = Ece. 8.6. 176 177 Все c суть b. Все a суть e. Все d суть b’. Все a’ суть c. Решение. По алгоритму «Суздаль» освободимся от лишних инверсий: M = AcbAaeAdb’Aa’c = AcbAaeEbdAa’c. «Цепочка» получится в виде: M = AcbEbdAa’cAae. По ней строим скалярные диаграммы сорита. Непосредственно из скалярных диаграмм видны все возможные заключения. Их число равно 5*4/2 – 4 = 6. F1(d,e) = Ade, что совпадает с результатом Л.Кэрролла. F2(a,b) = Aa’b. F3(a,d) = Ada. F4(b,e) = Ab’e. F5(c,d) = Ecd. F6(c,e) = A’ce. 8.7. Ни одно b не есть c. Все e суть h. Все a суть b. Ни одно d не есть h. Все e’ суть c. Решение. По алгоритму «Суздаль» имеем: M = EbcAehAabEdhAe’c. «Цепочка» получится в виде: M =AehEdhAe’cEbcAab. По ней строим скалярные диаграммы сорита. 177 178 F1(a,d) = Ead получаем непосредственно из скалярных диаграмм. Аналогично могут быть получены остальные 9 заключений. 8.8. Ни одно d не есть h’. Ни одно c не есть e. Все h суть b. Ни одно a не есть d’. Ни одно b не есть e’. Решение. По алгоритму «Суздаль» освободимся от лишних инверсий: M = Ed’EceAhbEad’Ebe’ = AdhEceAhbAadAbe. «Цепочка» получится в виде: M = AadAdhAhbAbeEce. По ней строим скалярные диаграммы сорита. Из скалярных диаграмм непосредственно получаем F1(a,c) = Eac, что совпадает с результатом Л.Кэрролла. Аналогично могут быть получены остальные 9 заключений. 8.9. Все h’ суть k’. Ни одно b’ не есть a. Все c суть d. 12 Все e суть h’. 178 179 Ни одно d не есть k’. Ни одно b не есть c’. Решение. По алгоритму «Суздаль» освободимся от лишних инверсий: M = Ah’k’Eb’aAcdAeh’Edk’Ebc’ = AkhAabAcdEehAdkAbc. «Цепочка» получится в виде: M = AabAbcAcdAdkAkhEeh. По ней строим скалярные диаграммы сорита. Из скалярных диаграмм непосредственно получаем F1(a,e) = Eae, что совпадает с результатом Л.Кэрролла. Аналогично могут быть получены остальные 14 заключений. 8.10. Все a суть d. Все k суть b. Все e суть h. Ни одно a’ не есть b. Все d суть c. Все h суть k. Решение. По алгоритму «Суздаль» освободимся от лишних инверсий: M = AadAkbAehEa’bAdcAhk = AadAkbAehAbaAdcAhk. «Цепочка» получится в виде: M = AehAhkAkbAbaAadAdc. По ней строим скалярные диаграммы сорита. 179 180 Из скалярных диаграмм непосредственно получаем F1(e,c) = Aec, что совпадает с результатом Л.Кэрролла. Аналогично могут быть получены остальные 14 заключений. 8.11. Ни одно e не есть k. Ни одно b’ не есть m. Ни одно a не есть c’. Все h’ суть e. Все d суть k. Ни одно c не есть b. Все d’ суть l. Ни одно h не есть m’. Решение. По алгоритму «Суздаль» освободимся от лишних инверсий: M=EekEb’mEac’Ah’eAdkEbcAd’lEhm’=EekAmbAacAh’eAdkEbcAd’lAhm «Цепочка» получится в виде: M = AhmAmbEbcAacAh’eEekAdkAd’l. По ней строим скалярные диаграммы сорита. 180 181 Из скалярных диаграмм непосредственно получаем F1(a,l) = Aal, что совпадает с результатом Л.Кэрролла. Аналогично могут быть получены остальные 27 заключений. 8.12. Все n суть m. Все a’ суть e. Ни одно c’ не есть l. Все k суть r’. Ни одно a не есть h. Ни одно d не есть l’. Ни одно c не есть n. Все e суть b. Все m суть r. Все h суть d. Решение. По алгоритму «Суздаль» освободимся от лишних инверсий: M = AnmAa’eAlcEkrEahAdlEcnAebAmrAhd. «Цепочка» имеет вид:M=EahAhdAdlAlcEcnAnmAmrAa’eAebEkr. По ней строим скалярные диаграммы сорита. 181 182 Из скалярных диаграмм непосредственно получаем F1(b,k) = Akb, что совпадает с результатом Л.Кэрролла. Аналогично могут быть получены остальные заключения. Построенные диаграммы можно оспорить, поскольку в данном случае мы имеем дело не с соритом, а с полисиллогизмом. Это одно из возможных решений. В данной ситуации нужно было воспользоваться алгоритмом “Осташков”, однако с картой Карно от 11 переменных возиться не захотелось, а подходящей программы минимизации на ПК под рукой не оказалось. 9. Предположив , что каждый из приводимых далее наборов конкретных суждений является набором посылок сорита , найти заключение. 9.1 Малые дети неразумны. Тот, кто может укрощать крокодилов, заслуживает уважения. Неразумные люди не заслуживают уважения. Вселенная –“люди” , a = способные укротить крокодилов, b = малые дети, c = не заслуживающие уважения, d = разумные. Решение. По алгоритму «Осташков» определим полную единицу системы М: M = Abd’Aac’Ad’c = (b’+d’)(a’+c’)(d+c). M’ = bd+ac+c’d’. Заполним карту Карно нулями в соответствии с М’, а в оставшиеся клетки впишем единицы. После минимизации получим: M = a’b’d+b’c’d+a’cd’. F(a,b) = a’+b’ = Eab. Выпишем рабочие наборы из карты Карно в виде сокращённой таблицы истинности и в соответствии с п.5 алгоритма «Осташков» построим диаграммы. 182 183 Из диаграмм также f(a,b) = Eab, т.е. «Ни один ребёнок не способен укротить крокодила». Все остальные соотношения между терминами сорита легко могут быть найдены как из М, так и из диаграмм. 9.2 Мои кастрюли – единственные из принадлежащих мне вещей , которые сделаны из олова. Все ваши подарки чрезвычайно полезны. Ни от одной из моих кастрюль нет никакой пользы. Вселенная – “мои вещи” , a = сделанные из олова, b = мои кастрюли, c = полезные, d = ваши подарки. Решение. По алгоритму «Осташков» определим полную единицу системы М: M = (b a)EbcAdc = (ab+a’b’)(b’+c’)(d’+c). Здесь необходимо подчеркнуть, что Кэрролл описывает первую посылку через общеутвердительный функтор, что некорректно по сути и кроме того допускается двоякая трактовка: Aab и Aba из-за аморфности формулировки суждения. Автор обязан абсолютно точно ставить “техническое задание”. Этот недостаток Кэрролла чрезвычайно серьёзен. M’ = (ab’+a’b)+bc+c’d). Заполним карту Карно нулями в соответствии с М’, а в оставшиеся клетки впишем единицы. После минимизации получим: M =a’b’(c+d’)+abc’d’. F(a,d) = a’+d’ = Ead, т.е. “Ни один из ваших подарков – не оловянный”. Поскольку совокупность посылок удалось описать в виде сорита, то можно сразу изобразить его в виде диаграмм. Из диаграмм также f(a,d) = Ead. 9.3 183 184 Ни одна из молодых картофелин не была поджарена. Все картофелины на этой тарелке съедобны. Ни одна жареная картофелина не съедобна. Вселенная – “картофелины”, a = жареные, b = съедобные, c = на этой тарелке, d = молодые. Решение. По алгоритму «Осташков» определим полную единицу системы М: M = EdaAcbEab = (a’+d’)(b+c’)(a’+b’) = a’b+a’c’+b’c’d’. Полученное выражение описывает полисиллогизм, поскольку однозначую диаграмму в этом случае нарисовать невозможно. Тем не менее попробуем всё-таки представить этот полисиллогизм на диаграммах. Вначале изобразим суждения Eab, затем Acb, а потом представим все ситуации, возможные в этом полисиллогизме для Eda. Из диаграмм и таблицы истинности получим f(c,d) = Icd(3), т.е. «Некоторые картофелины не на этой тарелке – не молодые». Мы получили полное решение полисиллогизма, хотя по М можно было сразу получить одно из частных решений. Кстати все частные решения отражены на диаграммах Лобанова: Adc, Acd, Icd(8), Ecd. Л.Кэрролл в принципе не мог получить правильного результата, поскольку он не умеет решать полисиллогизмы. 9.4 Ни одна утка не танцует вальс. Ни один офицер не откажется протанцевать вальс. У меня нет другой птицы, кроме уток. Вселенная – “живые существа”, a = утки, b = моя домашняя птица, c = офицеры, d = желающие танцевать вальс. Решение. По алгоритму «Осташков» определим полную единицу системы М: 184 185 M = EadEcd’Aba = (a’+d’)(c’+d)(b’+a) = AbaEadAcd. Данное выражение является соритом, поскольку можно выстроить “цепочку Кэрролла”: AbaEadAcd. Поэтому сразу построим диаграммы Лобанова. Из диаграмм также f(b,c) = Ebc, т.е. «Ни одна моя домашняя птица не является офицером». Ответы совпали. 9.5 Всякий, кто находится в здравом уме, может заниматься логикой. Ни один лунатик не может быть присяжным заседателем. Ни один из ваших сыновей не может заниматься логикой. Вселенная – “люди”, a = способные заниматься логикой, b = те, кто может быть присяжным заседателем, c = находящиеся в здравом уме, d = ваши сыновья. Решение. По алгоритму «Осташков» определим полную единицу системы М: M = AcaEc’bEda = (c’+a)(c+b’)(d’+a’) = AcaAbcEad. M’ = a’c+bc’+ad. Из карты Карно получим: M = a’b’c’+ab’d’+acd’. Отсюда f(b,d) = b’+d’ = Ebd. Данное выражение является соритом, поскольку можно выстроить “цепочку Кэрролла”: AcaAbcEad. Поэтому сразу построим диаграммы Лобанова. Из диаграмм также f(b,в) = Ebв, т.е. «Ни один мой сын не является присяжным заседателем». Разногласий с Кэрроллом нет. 9.6 В этой коробке нет моих карандашей. Ни один из моих леденцов – не сигара. Вся моя собственность, не находящаяся в этой коробке, состоит из сигар. 185 186 Вселенная – “мои вещи”, a = сигары, b = в этой коробке, c = карандаши, d = леденцы. Решение. По алгоритму «Осташков» определим полную единицу системы М: M = EbcEdaAb’a = (b’+c’)(a’+d’)(a+b) = Ab’aEdaEbc. Данное выражение является соритом, поскольку мы сумели выстроить “цепочку Кэрролла”: Ab’aEdaEbc. Поэтому сразу построим диаграммы Лобанова. Из диаграмм f(c,d) = Ecd, т.е. «Ни один из моих карандашей не леденец». Разногласий с Кэрроллом нет. Однако, если мы не поленимся и выведем соотношение между сигарами и карандашами, то получим f1(a,c) = Aca, т.е. «Все карандаши – сигары». В этом проявляется небрежность Кэрролла как составителя сорита, неумение синтезировать все возможные заключения и отсутствие наглядности в символическом методе великого логика. 9.7 Ни одного опытного человека нельзя считать некомпетентным. Дженкинс всегда допускает грубые ошибки в работе. Ни один компетентный человек не допустит грубых ошибок в работе. Вселенная – “люди”, a = всегда допускающие грубые ошибки в работе, b = компетентные, c = опытные, d = Дженкинс. Решение. По алгоритму «Осташков» определим полную единицу системы М: M = Ecb’AdaEba = (c’+b)(d’+a)(b’+a’) = AcbEbaAda. Данное выражение является соритом, поскольку мы сумели выстроить «цепочку Кэрролла». Поэтому сразу построим диаграммы Лобанова. 186 187 Из диаграмм также f(c,d) = Ecd, т.е. «Дженкинс неопытен». Разногласий с Кэрроллом нет. 9.8 Ни один терьер не блуждает среди знаков Зодиака. То, что не блуждает среди знаков Зодиака, не может быть кометой. Только у терьера хвост колечком. Вселенная – “предметы”, a = кометы, b = имеющие хвост колечком, c = терьеры, d = блуждающие среди знаков Зодиака. Решение. По алгоритму «Осташков» определим полную единицу системы М: M = (c b)EcdAd’a’ = (c b)EcdAad. Данное выражение является соритом, поскольку мы сумели выстроить «цепочку Кэрролла». Поэтому сразу построим диаграммы Лобанова. Из диаграмм также f(a,b) = Eab, т.е. «Ни у одной кометы нет хвоста колечком». Разногласий с Кэрроллом нет. 9.9 Никто не станет выписывать газету “Таймс”, если он не получил хорошего образования. Ни один дикобраз не умеет читать. Те, кто не умеет читать, не получили хорошего образования. Вселенная – “живые существа”, a = умеющие читать, b = дикобразы, c = выписывающие газету “Таймс”, d = получившие хорошее образование. Решение. По алгоритму «Осташков» определим полную единицу системы М: M = AcdEbaAa’d’= AcdAdaEba. Данное выражение является соритом, поскольку мы сумели выстроить «цепочку Кэрролла». Поэтому сразу построим диаграммы . 187 188 Из диаграмм также f(b,c) = Ebc, т.е. «Ни один дикобраз не выписывает газету «Таймс». Разногласий с Кэрроллом нет. 9.10 Все пудинги вкусны. Это блюдо – пудинг. Ни одно вкусное иблюдо не полезно. Вселенная - <<блюда>>, a = вкусные, b = пудинги, c = блюдо, d = полезные. Решение. По алгоритму «Осташков» определим полную единицу системы М: M = AbaAcbEad = AcbAbaEad . Данное выражение является соритом, поскольку мы сумели выстроить «цепочку Кэрролла». Поэтому сразу построим диаграммы . Из диаграмм также f(c,d) = Ecd, т.е. «Ни один дикобраз не выписывает газету «Таймс». Разногласий с Кэрроллом нет. 9.11 Когда мой садовник рассуждает на военные темы, его стоит послушать. Никто не может помнить битву при Ватерлоо, если он не очень стар. Того, кто не помнит битву при Ватерлоо, не стоит слушать, когда он рассуждает на военные темы. Вселенная - <<люди>>, a = те, кто может помнить битву при Ватерлоо, b = мой садовник, c = тот, кого стоит слушать, когда он рассуждает о войне. Решение. По алгоритму «Осташков» определим полную единицу системы М: M = AbcEad’Aa’c’ = AbcAcaAad . 188 189 Данное выражение является соритом, поскольку мы сумели выстроить «цепочку Кэрролла». Поэтому сразу построим диаграммы . Из диаграмм также f(b,d) = Abd, т.е. «Мой садовник стар». Разногласий с Кэрроллом нет. 9.12 Все колибри имеют яркое оперение. Ни одна крупная птица не питается нектаром. Птицы,которые не питаются нектаром, имеют неяркое оперение. Вселенная – “птицы”, a = колибри, b = крупные, c = питающиеся мёдом, d = с ярким оперением. Решение. По алгоритму «Осташков» определим полную единицу системы М: M = AadEbcAc’d’ = AadAdcEbc . Данное выражение является соритом, поскольку мы сумели выстроить «цепочку Кэрролла». Поэтому сразу построим диаграммы . Из диаграмм также f(a,b) = Eab = Aab’, т.е. «Все колибри невелики». Разногласий с Кэрроллом нет. 9.13 Все утки в этой деревне, имеющие метку “Б”, принадлежат миссис Бонди. Утки в этой деревне не носят кружевных воротничков, если не принадлежат миссис Бонди. У миссис Бонди в этой деревне нет серых уток. Вселенная – “утки в этой деревне”, a = принадлежащие миссис Бонди, b = имеющие метку “Б”, c = серые, d = носящие кружевные воротнички. Решение. 189 190 По алгоритму «Осташков» определим полную единицу системы М: M = AbaAdaEca = (b’+a)(d’+a)(c’+a’). M’ = a’b+a’d+ac. Из карты Карно получим: M = ac’+a’b’d’. Данное выражение является полисиллогизмом. Поэтому построим таблицу истинности для М. Из диаграмм также f1(c,d) = Ecd, т.е. «Ни одна серая утка не носит кружевных воротничков». Разногласий с Кэрроллом нет. Однако, если найти соотношение f2(b,d) = Ibd(8), то окажется, что ,во-первых, Кэрролл не смог бы определить это заключение, а во-вторых, графический метод синтеза полисиллогизмов даёт более жёсткий результат: f2(b,d) = Ibd(3). 9.14 Вся старая посуда на этой полке имеет трещины. Ни один горшок на этой полке не новый. Всё, что стоит на этой полке, пригодно для хранения воды. Вселенная – “посуда на этой полке”, a = не протекающая, b = имеющая трещины, c = горшки, d = старые. Решение. 190 191 Третья посылка в этом полисиллогизме некорректна, поскольку на полке стоят старые горшки, не пригодные для хранения воды. Не будем фантазировать за Кэрролла, и простим ему эту небрежность. 9.15 Все незрелые фрукты неполезны. Все эти яблоки созрели. Ни один фрукт, выросший в тени, не зрелый. Вселенная - <<фрукты.>>, a = выросшие в тени, b = зрелые, с = эти яблоки, D = полезные. Решение. По алгоритму «Осташков» определим полную единицу системы М: M =Ab’d’AcbEab = (b+d’)(c’+b)(a’+b’) = AdbAcbEab. M’ = b’d+b’c+ab. M = a’b+b’c’d’ F1(c,d) = 1 = Icd(8). F2(a,c) = a’+c’ = Eac. F3(a,d) = a’+d’ = Ead. Данное выражение является полисиллогизмом, поскольку мы не сумели выстроить «цепочку Кэрролла. Поэтому найдём частное решение. Выпишем рабочие наборы из карты Карно в виде сокращённой таблицы истинности и в соответствии с п.5 алгоритма «Осташков» построим диаграммы. . Из диаграмм также F1(c,d) = 1 = Icd(8). F2(a,c) = a’+c’ = Eac, т.е. «Эти яблоки выросли на солнце». F3(a,d) = a’+d’ = Ead. Разногласий с Кэрроллом нет. 9.16 Щенок, не желающий лежать спокойно, всегда будет вам благодарен, Если вы предложите ему скалку. Хромой щенок не скажет вам спасибо, если вы предложите ему скалку. Никто, кроме хромых щенят, не станет ткать. Вселенная - <<щенята>>, a = те, кто станет ткать, b = те, которые благодарные За скалку, с = хромые, d = желающие лежать спокойно. Решение. По алгоритму «Осташков» определим полную единицу системы М: 191 192 M = Ad’bAcb’Ec’a = (d+b)((c’+b’)(c+a’) = EbcAacAd’b. Данное выражение является соритом, поскольку мы сумели выстроить «цепочку Кэрролла». Поэтому сразу построим диаграммы . Из диаграмм также f(a,d) = Aad, т.е. «Все «ткачи» - лежебоки». Разногласий с Кэрроллом нет. 9.17 Ни одно имя в этом списке не годится для героя романа. Имена, начинающиеся с гласной, всегда мелодичны. Ни одно имя не годится для героя романа, если оно начинается с согласной. Вселенная - <<имена>>, a = начинающиеся с гласной, b = стоящие в этом Списке, c = мелодичные, d = подходящие герою романа. Решение. По алгоритму «Осташков» определим полную единицу системы М: M = EbdAacEa’d = (b’+d’)((a’+c)(a+d’). M’ = bd+ac’+a’d. Из карты Карно получим: M = a’c’d’+cd’+a’b’c. Данное выражение является полисиллогизмом. Поэтому построим таблицу истинности для М и по таблице истинности получим частное решение в виде диаграмм Лобанова. . Из диаграмм также f1(b,c) = Ibc(8), т.е. «Некоторые имена из этого списка мелодичны». У Кэрролла грубая ошибка: его заключение “Ни одно имя в этом списке не мелодично”. Более точное решение можно получить с помощью диаграмм, изобразив на них все возможные ситуации. 192 193 F1(b,c) = Ib’c(3), т.е. «Некоторые имена не из списка мелодичны». Силлогизмы Л.Кэрролла для самостоятельного решения. Автор предлагает решать их с помощью графического алгоритма «ТВАТ». 24.Свиньи не летают. Свиньи прожорливы. 25. Все солдаты отлично маршируют. Некоторые дети – не солдаты. 26. Ни один свадебный пирог не полезен. Всего, что не полезно, следует избегать. 27. Джон трудолюбив. Ни один трудолюбивый человек не несчастен. 28. Ни один философ не тщеславен. Некоторые тщеславные люди – не игроки. 29. Некоторые законы о налогах несправедливы. Все законы, принятые на прошлой неделе, относятся к налогообложению. 30. Ни один военный не пишет стихов. Ни один из моих жильцов не штатских. 31. Ни одно лекарство не приятно на вкус. Александровский лист – лекарство. 32. Некоторые циркуляры не доставляют удовольствия. Ни одно письмо, в котором содержится какая – нибудь просьба, не доставляет удовольствия. 33. Все британцы отважны. Ни один моряк не хвастун. 35. Некоторые свиньи дикие. Все свиньи жирные. 36. Все осы злые. Всех злых существ необходимо остерегаться. 193 194 37. Ни один старый кролик не прожорлив. Все черные кролики прожорливы. 38. Некоторые яйца сварены вкрутую. Нет такого яйца, которое нельзя было бы разбить. 39. Ни одна антилопа не безобразна. Изящные создания радуют взгляд. 40. Все канарейки, получающие достаточное количество корма, поют громко. Ни одна канарейка не настроена меланхолически, если она п оет громко 41. Некоторые стихи оригинальны. Ни одна оригинальная работа не делается без вдохновения. 42. Ни в оной из исследованных до сих стран не обитают драконы. Неисследованные страны пленяют воображение. 43. Ни один кусок угля не бел. Ни один негр не бел. 44. Ни один мост не сделан из сахара. Некоторые мосты живописны. 45. Ни один ребенок не терпелив. Ни один нетерпеливый человек не может сидеть спокойно. 46. Ни одно четвероногое не может свистеть. Некоторые кошки – четвероногие. 47. Скучные люди невыносимы. Вы скучный человек. 48. Некоторые устрицы молчаливы. Ни одно молчаливое созданье не забавно. 49. Канарейки, которые не поют громко, несчастливы. Ни одна канарейка, получающая достаточное количество корма, не поет негромко. 50. Все мои сестры простужены. Никто не может петь,если он простужен. 51. Все, что сделано из золота, драгоценно. Некоторые шкатулки драгоценны. 52. Некоторые секретари – птицы. Все секретари заняты полезным делом. 53. Все мои кузины несправедливы. Все судьи справедливы. 54. Боль подтачивает силы. Никакая боль не желательна. 55. Все лекарства имеют отвратительныц вкус. Александрийский лист – лекарство. 56. Некоторые нелюбезные замечания вызывают раздражение. Ни одно критическое замечание не любезно. 57. Ни у одного высокого человека нет курчавых волос. У негров курчавые волосы. 58. Все философы рассуждают логично! Человек, не умеющий рассуждать логично, всегда упрям. 59. Джон трудолюбив. Все трудолюбивые люди счастливы. 60. Эти блюда великолепно приготовлены. 194 195 Некоторые блюда, если плохо приготовить, вредны для здоровья. 61. Книга с захватывающим сюжетом не подходит для чтения легко возбудимым людям. От скучных книг клонит в сон. 62. Ни одна свинья не летает. Все свиньи прожорливы. 63. Если человек начеку, он не даст провести себя мошеннику. Вы и я начеку. 64. Некоторые сны ужасны. Ни один барашек не внушает ужаса. 65. Ни одному лысому созданью не нужна расческа. Ни у одной ящерицы нет волос. 66. Все битвы сопровождаются страшным шумом. То, что происходит без шума, может ускользнуть от внимания. 67. Все мои кузины несправедливы. Ни один судья не несправедлив. 68. Все яйца можно разбить. Некоторые яйца сварены вкрутую. 69. Предубежденным людям нельзя доверять. Некоторые непредубежденные люди не пользуются симпатией у окружающих. 70. Ни один властный человек не популярен. Она властный человек. 71. Некоторые лысые люди носят парик. У всех ваших детей чудесные собственные волосы. 72. Ни одного омара нельзя считать неразумным. Ни одно разумное существо не станет ждать невозможного. 73. Ни один кошмарный сон не приятен. Неприятные ощущения не желательны. 74. Ни один пирог со сливами не полезен Некоторые полезные вещи вкусны. 75. Того,что вкусно, не следует опасаться. Некоторые сорта варенья вкусны. 76. Все утки при ходьбе переваливаются с боку на бок. То, что переваливается при ходьбе с боку на бок, не изящно. 77. Эти бутерброды вкусны. Ничто из того, что лежит на этом блюде, не вкусно. 78. Ни один богатый человек не просит милостыню. Тем, кто небогат, следует соразмерять расходы с доходами. 79. Пауки ткут паутину. Некоторые существа, не ткущие паутины, - дикари. 80. В некоторых из этих магазинов немного народу. В магазине, где много народу, неуютно. 81. Предусмотрительные путешественники всегда имеют при себе деньги на мелкие расходы. Непридусмотрительные путешественники теряют багаж. 82. Некоторые сорта герани красного цвета. Все эти цветы красные. 83. Ни одна из моих кузин не справедлива. Все судьи справедливы. 195 196 84. Занятые люди никогда не жалуются. Недовольные люди всегда жалуются. 85. Ни одна из моих кузин не справедлива. Ни один судья не несправедлив. 86. Все трезвенники любят сахар. Ни один соловей не пьет вина. 87. Ни одна загадка не интересует меня, если ее можно решить. Все эти загадки неразрешимы. 88. Все ясные объяснения удовлетворительны. Некоторые извинения неудовлетворителоны. 89. Все пожилые леди любят поговорить. Все добродушные леди любят поговорить. 90. Ни один добрый поступок не беззаконен. То, что законно, можно делать без колебаний. 91. Ни один ребенок не любит прилежно заниматься. Среди детей нет скрипачей-виртуозов. 92. Все монеты достоинством в один шиллинг круглые. Все эти монеты круглые. 93. Ни один честный человек не мошенничает. Ни одному нечестному человеку нельзя верить. 94. Ни один из моих мальчиков не умен. Ни одна из моих девочек не жадна. 95. Все шутки для того и предназначены, чтобы смешить людей. Ни один парламентский акт не шутка. 96. Ни одно богатое приключениями путешествие не останется забытым. Путешествия без приключений не стоят того, чтобы им посвящали книги. 97. Все мои мальчики непослушны. Все мои девочки недовольны. 98. Ни одна приятная неожиданность не вызывает у меня чувства досады. Ваш визит для меня приятная неюжиданность. Сориты Л.Кэрролла для самостоятельного решения. Рекомендуется найти все возможные заключения соритов. Кэрролл существенно упростил задачу, введя символические обозначения всех терминов соритов. Попытайтесь провести синтез соритов без подсказок скзочника. 18 Все члены общин находятся в полном рассудке. Ни один член парламента, носящий титул пэра, не станет участвовать в скачках на мулах. Все члены палаты лордов носят титул пэра. Вселенная - <<члены парламента>>, a = члены палаты общин, , b = находящиеся в полном рассудке, c = те, кто может принять участие в скачках на мулах, D = носящие титул пэра. 19 1.Ни один из товаров, который был куплен и оплачен, не находится более в продаже в этом магазине. 196 197 Ни один из этих товаров нельзя вынести из магазина, если на нем нет ярлычка с надписью <<Продано>>. Ни на одном из этих товаров нет ярлычка с надписью <<Продано>>, если он не куплен и не оплачен. Вселенная - <<товары в этом магазине >>, a = те, которые можно вынести из магазина, b = купленные и оплаченные, c = те, на которых есть ярлычок с надписью <<Продано>>, d = находящиеся в продаже. 20 Ни один акробатический трюк, не объявленный в программе циркового представления, никогда не исполнялся. Ни один акробатический трюк не возможен, если он включает в себя четверное сальто. Ни один невозможный акробатический трюк никогда не стоит в программе циркового представления. Вселенная - <<акробатические трюки>>, a = оьъявленные в программе циркового представления, b = исполняемые в цирке, c = включающие в себя четверное сальто, d = возможные . 21 Никто из тех, кто действительно ценит Бетховена, не станет шуметь во время исполнения <<Лунной сонаты>>. Морские свинки безнадежно невежественны в музыке. Те, кто безнадежно невежествен в музыке, не станут соблюдать тишину во время исполнения <<Лунной сонаты>>. Вселенная - <<живые существа >>, a = морские свинки, b = безнадежно невежественные в музыке, c = соблюдающие тишину во время исполнения <<Лунной сонаты>>, d = действительно ценящие Бетховена. 22 Яркие цветы всегда благоухают. Я не люблю цветы, выросшие не на открытом воздухе. Ни один цветок, выросший на открытом воздухе, не имеет бледной окраски. Вселенная - <<цветы>>, a = яркие, b = выросщие на открытом воздухе, с = благоухающие. 23 Ораторы, рассчитывающие на внещний эффект, слишком много думают о себе. Находиться в обществе хорошо информированных людей приятно. Находиться в обществе людей, которые слишком много думают о себе, неприятно. Вселенная - <<люди>>, a = люди, в обществе которых приятно находиться, b = хорошо информированные, c = ораторы, , бьющие на внешний эффект, d = слишком много о себе думающие. 24 Ни одного мальчика моложе 12 лет не принимают в эту школу на полный пансион. У всех прилежных мальчиков рыжие волосы. Ни один из мальчиков, приходящих в школу только на занятия, не учит греческий язык. Никто, кроме мальчиков моложе 12 лет, не любит бить баклуши. 197 198 Вселенная - <<мальчики, учащиеся в этой щколе>>, a = зачисленные на полный пансион, b = прилежные, c = изучающие греческий язык, d = рыжие, e = моложе 12 лет. 25 Мой доктор разрешает мне есть лишь не очень калорийные блюда. То, что я могу есть, вполне подходит на ужин. Свадебные пироги всегда очень калорийны. Мой доктор разрешает мне есть все, что подходит для ужина. Вселенная - <<продукты питания>>, a = что я могу есть, b = то, что разрешает мне есть доктор, c = подходящие для ужина, d = очень калорийные, e = свадебный пирог. 26 Дискуссии в нашем клубе вряд ли разбудят британского льва, если брать их под контроль сразу же, как только они становятся слишком щумными. Неумело направленные дискуссии угрожают спокойствию в стенах нашего клуба. Дискуссии, проходящие под председательством Томкинса, вполне могут разбудить британского льва. Умело направленные дискуссии в нашем клубе неизменно берутся под контроль, как только они становятся слишком шумными. Вселенная - <<дискуссии в нашем клубе>>, a = те, которые берутся Под контроль, когда они становятся слишком шумными. Вселенная - <<дискуссии в нашем клубе, a = те, корые берутся под контроль, когда они становятся слишком шумными, b = угрожающие спокойствию астенах нашего клуба, c = проходящие под председательством Томкинса, d = вполне cпособные разбудить британского льва, e = умело направляемые. 27 Все мои сыновья стройны. Никто из моих детей не здоров, если он не делает утренней зарядки. Все обжоры среди моих детей страдают ожирением Ни одна из моих дочерей не делает утренней зарядки. Вселенная - <<мои дети> , a = страдающие ожирением, b = обжоры, c = здоровые, d = сыновья, e = делающие утреннюю зарядку. 28 Вещи, продаваемые на улице, не имеют особой ценноссти Только дрянь можно купить за гроши. Яйца большой гагарки представляют большую ценность. Лишь тю, что продается на улице, и есть настоящая дрянь. Вселенная - <<вещи>>, a = вещи, которым грош цена, b = яйца большой гагарки, c = дрянь, d = продаваемые на улице, 198 199 e = имеющие большую ценность. 29 Ни у одной продаваемой здесь книги, кроме тех книг,которые выставлены на витрине, нет золочёного обреза. Все авторские издания снабжены красным ярлычком. Все книги с красными ярлычками продаются по цене от 5 шиллингов и выше. Лишь авторские издания выставляются на витрине. Вселенная – “продаваемые здесь книги”, a = авторские издания, b = с золочёным обрезом , c = с красным ярлычком, d = выставленные на витрине, e = продаваемые по цене от 5 шиллингов и выше. 30 Кровоостанавливающие средства, действие которых нельзя проверить, сплошное шарлатанство. К настойке календулы не следует относиться с презрением. Все лекарства, способные остановить кровотечение, когда вы порежете палец, полезны. Все шарлатанские кровоостанавливающие средства достойны презрения. Вселенная – “кровоостанавливающие средства”, a = способные остановить кровотечение, b = достойные презрения, c = шарлатанские, d = настойка календулы, e = полезные в тех случаях, когда вы порежете палец. 31 Ни один из встреченных в море, но оставшихся незамеченным предметов – не русалка. Встреченные в море предметы, о которых делается запись в вахтенном журнале, стоят того, чтобы их запомнить. В моих путешествиях мне никогда не доводилось видеть ничего такого, что стоило бы запомнить. О встреченных в море и замеченных предметах делается запись в вахтенном журнале. Вселенная – “встреченные в море предметы”, a = те, о которых делается запись в судовом журнале, b = русалки, c = виденные мной, d = замеченные, e = стоящие того, чтобы их запомнить. 32 Единственные книги в этой библиотеке, которые я не рекомендую читать, безнравственны по своему содержанию. Все книги в твёрдых переплётах обладают выдающимися литературными достоинствами. Все романы вполне нравственны по своему содержанию. Я не рекомендую вам читать ни одну из книг в мягкой обложке. 199 200 Вселенная – “книги в этой библиотеке”, a = в твёрдом переплёте, b = нравственного содержания, c = рекомендуемые мной для чтения, d = романы, e = обладающие выдающимися литературными достоинствами. 33 Ни одна птица, кроме страуса, не достигает 9 футов роста. В этом птичнике нет птиц, которые принадлежали бы кому-нибудь, кроме меня. Ни один страус не питается пирогами с начинкой. У меня нет птиц, которые бы достигали 9 футов роста. Вселенная – “птицы”, a = находящиеся в этом птичнике, b = питающиеся пирогами с начинкой, c = мои, d = 9 футов роста, e = страусы. 34 Ни одна интересная поэма не останется не признанной людьми с тонким вкусом. Ни одна современная поэма не свободна от аффектации. Все ваши поэмы написаны о мыльных пузырях. Ни одна аффектированная поэма не находит признания у людей с тонким вкусом. Ни одна древняя поэма не написана о мыльных пузырях. Вселенная – “поэмы”, a = аффектированные, b = древние, c = интересные, d = написанные о мыльных пузырях, e = получившие признание у людей с тонким вкусом, h = написанные вами. 35 Все плоды на этой выставке, которые не будут удостоенынаграды,являются Собственностью организационного комитета. Ни один из представленных мной персиков не удостоен награды. Ни один из плодов, распроданных после закрытия выставки, не был незрелым. Ни один из спелых плодов не был выращен в теплице. Все плоды, принадлежащиеорганизационному комитету выставки, были рспроданы после ее закрытия. Вселенная - <<плоды, представленные на этой выставке, a = принадлежавшие организационному комитету, b = удостоенные награды, c = выращенные в теплице, d = мои персики, e = спелые, h = распроданные после закрытия выставки. 36 200 201 Те, которые нарушают свои обещания, не заслуживают доверия. Любители выпить очень общительны. Человек, выполняющий свои обещания, честен. Ни один трезвенник не ростовщик. Тому, кто очень общителен, всегда можно верить. Вселенная - <<люди>>, a = честные, b = ростовщики, c = нарушающие свои обещания, d = заслуживающие доверия, e = очень общительные, h = любители выпить. 37 Котёнок, который любит рыбу, поддаётся дрессировке. Котёнок без хвоста не станет играть с гориллой. Котята с усами всегда любят рыбу. У котёнка, поддающегося дрессировке, не бывает зелёных глаз. Если у котёнка нет хвоста, то у него нет и усов. Вселенная – “котята”, a = с зелёными глазами, b = любящие рыбу, c = с хвостами, d = поддающиеся дрессировке, e = с усами, h = котята, которые станут играть с гориллой. 38 Все выпусники Итона в этом колледже играют в крикет. Никто, кроме преподавателей, не обедает за верхним столом. Ни один з тех, кто играет в крикет, не умеет грести. Все мои друзья в этом колледже – выпусники Итона. Все преподаватели – прекрасные гребцы. Вселенная - <<люди этого колледжа>>, a = играющие в крикет, b = обедающие за верхним столом, c = выпусники Итона, d = мои друзья, e = прекрасные гребцы, h = преподаватели. 39 Ни один из имеющихся здесь моих ящиков я не рискну открыть. Мой письменнй стол сделан из палисандрового дерева. Все мои ящики, за исключением тех, которые находятся здесь, покрыты лаком. Нет ни одного моего ящика, который я бы не рискнул открыть, если только он не полон живых скорпионов. Все мои ящики из палисандрового дерева покрыты лаком. Вселенная - <<мои ящики>>, a = ящики, которые я рискну открыть, b = полные живых скорпионов, c = находящиеся здесь, 201 202 d = сделанные из палисандрового дерева, e = покрытые лаком., h = письменные столы. 40 Все авторы литературных произведений, постигшие природу человека, умные люди. Ни одного автора нельзя считать истинным поэтом, если он не способен волновать сердца людей. Шекспир написал <<Галета>>. Ни один автор, не постигший природу человека, не способен волновать сердца людей. Только истинный поэт мог написать <<Гамлета>>. Вселенная - <<авторы литературных произведений, a = способные волновать сердца людей, b = умные, c = Шекспир, d = истинные поэты, e = постигшие природу человека, h = автор <<Гамлета>>. 41 Я с отвращением отношусь ко всему тому, что не может служить мостом. Все, что можно воспеть в стихах, для меня приятный подарок. Радуга не выдержит веса тачки. Все, что может служить мостом, выдержит вес тачки. Я бы н е принял в качестве подарка то, что вызывает у меня отвращение. Вселенная - <<предметы, a = способные выдержать вес тачки, b = то, что я приму в подарок, c = вызывающие у меня отвращение, d = радуги, e = то, что может служить мостом, h = то, что можно воспеть в стихах. 42 Если я решаю логическую задачу без ворчанья, то можно быть уверенным, что она мне понятна. Посылки в этих соритах расположены не в том порядке, как в привычных мне задачах. Ни одна легкая задача не вызывает у меня головной боли. Я не могу понять задач, в которых посылки расположены не в том порядке, к которому я привык. Я никогда не ворчу на задачу, если от нее у меня не болит голова. Вселенная - <<логические задачи, которые я рещаю>>, a = задачи, в которых посылки расположены в привычном мне порядке, b = легкие, c = задачи, на которые я ворчу, d = вызывающие у меня головную боль, e = эти сориты, h = понятные мне задачи. . 43 202 203 Любая моя мысль, которую нельзя выразить в виде силогизма, поистинне смешна. Моя мечта о сдобных булочках не стоит того, чтобы ее записывать на бумаге. Ни одну мою несбыточную мечту нельзя выразить в виде силлогизма. Мне не приходило в голову ни одной действительно смешной мысли, о которой бы я не сообщил своему поверенному. Я только и мечтаю, что о сдобных булочках. Я никогда не высказывал своему поверенному ни одной мысли, если она не стоила того, чтобы её записать на бумаге. Вселенная - <<мои мысли>> , a = те из них, которые можно выразить в виде силлогизма , b = мечты о сдобных булочках, c = сбывшиеся, d = мои мечты, e = поистине смешные, h = мысли, о которых я сообщаю своему поверенному, k = мысли, стоящие того, чтобы их записать на бумагу. 44 Ни одна из представленных здесь картин, кроме батальных, не представляет ценности. Ни одна из картин, вывешенных без рам, не покрыта лаком. Все батальные картины написаны маслом. Все распроданные картины представляют ценность. Все картины английских мастеров покрыты лаком. Все картины, которые были вывешены в рамах, проданы. Вселенная – “представленные здесь картины”, a = батальные, b = принадлежащие кисти английских мастеров, c = в рамах, d = написанные маслом, e = проданные, h = представляющие ценность, покрытые лаком. 45 Животные, которые не брыкаются, всегда невозмутимы. У осла нет рогов. Буйвол всегда может перебросить вас через ограду. Животных, которые не брыкаются, не легко проглотить. Животное, у которого нет рогов, не может перебросить вас через ограду. Все животные, кроме буйвола, легко приходят в ярость. Вселенная – “животные”, a = животные,которые могут перебросить вас через ограду, b = буйволы, c = ослы, d = животные, которых легко проглотить, e = легко приходящие в ярость, h = с рогами, k = брыкающиеся. 46 Никто не забудет причесаться, если он отправляется на бал. 203 204 Нельзя сказать, что человек выглядит превосходно, если он неопрятен. Курильщики опиума утрачивают контроль над собой. Причёсанный человек выглядит превосходно. Никто не наденет белых лайковых перчаток, если он не отправляется на бал. Человек всегда неопрятен, если он утратил контроль над собой. Вселенная – “люди”, a = собирающиеся на бал, b = причёсанные, c = сохраняющие контроль над собой, d = превосходно выглядящие, e = курильщики опиума, h = опрятные, k = надевшие белые лайковые перчатки. 47 Ни один муж, дарящий жене новые платья, не может быть несговорчивым. Аккуратный муж всегда возвращается домой к чаю. Жене нелегко содержать в порядке одежду мужа, если он имеет обыкновение вешать свою шляпу на газовый рожок. Хороший муж всегда дарит своей жене новые платья. Ни один муж не может не быть несговорчивым, если жена не следит за его одеждой. Неаккуратный муж всегда вешает свою шляпу на газовый рожок. Вселенная – “мужья ”, a = всегда возвращающиеся домой к чаю, b = всегда дарящие своим жёнам новые платья, c = несговорчивые, d = хорошие, e = вешающие шляпу на газовый рожок, h = мужья, за одеждой которых жена следит, k = аккуратные. 48 Все, что не слишком безобразно, можно держать в гостиной. То, что покрыто налетом соли, никогда не бывает абсолютно сухим. То, что покрыто влагой, не следует держать в гостиной. Купальные кабинки у моря всегда покрыты налётом соли. Ничто, сделанное из перламутра, не может быть слишком безобразным. Все, что стоит у самого моря, покрывается налётом соли. Вселенная - <<вещи>>, a = слишком безобразные, b = купальные кабинки, c = покрытые налётом соли, d = стоящие у самого моря, e = сделанные из перламутра, h = абсолютно сухие, k = вещи, которые можно держать в гостиной. 49 Я не называю день <<несчастливым>>, если Робинсон вежлив со мной. Среды всегда бывают пасмурными днями. Если люди берут с собой зонты, день никогда не бывает солнечным. 204 205 Единственный день недели, когда Робинсон невежлив со мной, - среда. Всякий возьмет с собой зонт, если идет дождь. Мои <<несчастливые >> дни неизменно оказываются солнечными. Вселенная - <<дни>>, a = дни, которые я называю <<счастливыми>>, b = пасмурные, c = дни, когда берут с собой зонты, d = дни, когда Робинсон вежлив со мной, e = дождливые, h = дни, которые оказываются солнечными, k = среды. 50 Ни одна акула не сомневается, что она прекрасно вооружена. К рыбе, не умеющей танцевать менуэт, относятся без почтения. Ни одна рыба не будет вполне уверена в том, что она прекрасно вооружена, если у нее нет трех рядов зубов. Все рыбы, кроме акул, очень добры к детям. Ни одна крупная рыба не умеет танцевать менуэт. К рыбе, имеющей три ряда зубов, следует относиться с почтением. Вселенная - <<рыбы>>, a = умеющие танцевать менуэт, b = вполне уверенные, что они прекрасно вооружены, c = рыбы, к которым относятся без почтения, d = имеющие три ряда зубов, e = большие рыбы, h = добрые к детям, k = акулы. 51 Все человечество, за исключением моих лакеев, обладает известной долей здравого смысла. Лишь дети могут питаться одними сладостями. Лишь тот, кто играет в <<классы>>, знает, что такое настоящее счастье. Ни у одного ребенка нет ни капли здравого смысла. Ни один машинист не играет в <<классы>>. Ни об одном моем лакее нельзя сказать, что он не знает, в чем заключается настоящее счастье. Вселенная – <<человеческие существа>>, a = машинисты, b = обладающие здравым смыслом, c = играющие в <<классы>>, d = знающие, что такое настоящее счастье, e = живущие на одних сладостях, h = дети, k = мои лакеи. 52 Я люблю всех животных, которые принадлежат мне. Собаки грыызут кости. Ни одно животное я не пускаю к себе в кабинет, если оно не <<служит>>, когда его об этом попросят. Все животные во дворе принадлежат мне. 205 206 Всем животным, которых я люблю, разрешается входить ко мне в кабинет. Единственные животные, которые <<служат>>, если их попросить, - собаки. Вселенная - <<животные>>, a = которых я впускаю в свой кабинет, b = животные, которых я люблю, c = собаки, d = грызущие кости, e = животные во дворе, h = мои, k = животные, которые <<служат>>, когда их попросят. 53 Животные всегда испытывают смертельную обиду, если я не обращаю на них внимания. Те животные, которые принадлежат мне, находятся на той площадке. Ни одно животное не сможет отгадать загадку, если оно не получило соответствующего образования в школе-интернате. Ни одно животное на этой площадке не барсук. Если животное испытывает смертельную обиду, оно носится с бешеной скоростью и воет. Я никогда не обращаю внимания на животных, которые не принадлежат мне. Ни одно животное, получившее соответствующее образование в школеинтернате, не станет носиться с бешеной скоростью и выть. Вселенная - <<животные>>, a =способные разгадывать загадки, b = барсуки, c = находящиеся на этой площадке, d = испытывающие смертельную обиду, если не обратить на них внимания, e = мои, h = животные, на которых я обращаю внимание, k = получившие соответствующее образование в школе-интернате, l = носящиеся с бешеной скоростью и воющие. 54 Все письма в этой комнате, на которых проставлена дата отправления, написаны наголубой бумаге Ни одно из писем, кроме тех, которые составлены в третьем лице, не написаны черными чернилами. Я не регистрирую писем, которые не могу прочитать. Ни в одном из писем, написанных на одной страничке, не пропущена дата. Все неперечеркнутые письма написаны черными чернилами. Все письма, написанные Брауном, начинаются со слов “Уважаемый сэр!” Все письма, написанные на голубой бумаге, зарегистрированы мной. Ни одно из писем, написанных более чем на одной странице, не перечёркнуто. Ни одно из писем, начинающихся со слов “Уважаемый сэр!”, не написано в третьем лице. Вселенная – “письма в этой комнате”, a = начинающиеся со слов “Уважаемый сэр!”, 206 207 b = перечёркнутые, c = датированные, d = зарегистрированные мной, e = написанные чёрными чернилами, h = составленные в третьем лице, k = письма, которые я могу прочитать, l = написанные на голубой бумаге, m = на одной страничке, n = написанные Брауном. 55 Единственные животные в этом доме – кошки. Любое животное можно приручить, если оно любит глядеть на луну. Если животное вызывает у меня отвращение, я стараюсь держаться от него подальше. Ни одно животное не плотоядно, если оно не бродит по ночам. Ни одна кошка не упустит случая поймать мышь. Я не пускаю к себе в кабинет животных, кроме тех, которые находятся в этом доме. Кенгуру не поддаются приручению. Лишь плотоядные животные ловят мышей. Животные, которых я не пускаю к себе в кабинет, вызывают у меня отвращение. Животные, которые бродят по ночам, любят смотреть на луну. Вселенная – “животные”, a = животные, от которых я стараюсь держаться подальше, b = плотоядные, c = кошки, d = вызывающие у меня отвращение, e = находящиеся в этом доме, h = кенгуру, k = охотящиеся на мышей, l = любящие смотреть на луну, m = бродящие по ночам, n = поддающиеся приручению, r = животные, которых я пускаю к себе. Заключение. 1. Льюис Кэрролл своими методами мог решать лишь силлогизмы или сориты, содержащие общеутвердительные или общеотрицательные посылки. 2. При получении частноутвердительных заключений методы Кэрролла дают как правило некорректные результаты. 207 208 Глава девятая Вероятностная логика. Впервые в мире о связи логики с теорией вероятности заявил П.С.Порецкий в своей работе «Решение общей задачи теории вероятностей при помощи математической логики»//Собрание протоколов заседаний секции физико-математических наук об-ва естествоиспытателей при Казанском ун-те. 1887. Т.5. Он показал, как легко и просто решаются вероятностные задачи с помощью логики. Мы будем решать обратную задачу: рассчитывать вероятностные характеристики силлогизма. Этот раздел требует знаний основ комбинаторики. В наше время сочетания, размещения и перестановки изучали в 7-м классе. Будем обозначать число сочетаний из m элементов по n как C(m,n), а размещения – как A(m,n). Известно, что C(m,n) = A(m,n)/n!, A(m,n) = m(m-1)(m-2)...(m-n+1), C(m,n) = C(m,mn). При синтезе заключений зачастую имеют место несколько вариантов решений. Такие силлогизмы будем называть многовариантными. Требуется определить вероятность реализации каждого заключения в многовариантном силлогизме. Сначала рассчитаем вероятности общих и частных суждений вида Axy, Exy, Ixy. Вероятность события Axy. Пусть известно nx - количество элементов множества Х и ny – количество элементов множества Y, а также n – число элементов в универсуме U. Требуется определить вероятность события «Все Х суть У», т.е. найти P(Axy). Построим скалярные диаграммы для случая n=8, nx=2, ny=4. В 8 клетках скалярной диаграммы множество У, состоящее из 4 элементов можно разместить различными способами, число которых определяется как число сочетаний из n=8 по ny=4, т.е. C(n,ny) = C(8,4) = 8*7*6*5/4! = 70. Однако при соблюдении условия Axy количество вариантов размещения элементов множества У существенно меньше. Их число определяется из следующих соображений. Два элемента множества У должны обязательно занимать 1-ю и 2ю клетки диаграммы. Оставшиеся (ny-nx) = 4-2 = 2 элемента можно разместить в 6 клетках с 3-ей по 8-ю включительно разными способами, число которых определяется как число сочетаний C(n-nx,ny-nx) = C(8-2,4-2) = C(6,2) = 6*5/2! = 15. Таким образом, вероятность P(Axy) = C(n-nx,ny-nx)/C(n,ny) = 15/70 = 3/14. P(Axy) = C(n-nx,ny-nx)/C(n,ny) 208 209 Вероятность события Exy. Пусть известно nx - количество элементов множества Х и ny – количество элементов множества Y, а также n – число элементов в универсуме U. Требуется определить вероятность события «Ни один Х не есть У», т.е. найти P(Exy). Построим скалярные диаграммы для случая n=8, nx=2, ny=4. Общее количество вариантов размещения элементов множества У в универсуме как и в предыдущем случае равно C(n,ny) = C(8,4) = 8*7*6*5/4! = 70. Количество вариантов размещения элементов множества У при соблюдении условия Exy определяется по формуле C(n-nx,ny) = C(8-2,4) = C(6,4) = C(6,2) = 6*5/2! = 15. Таким образом, вероятность P(Exy) = C(n-nx,ny)/C(n,ny) = 15/70 = 3/14. P(Exy) = C(n-nx,ny)/C(n,ny) Вероятность события Ixy. Пусть известно nx - количество элементов множества Х и ny – количество элементов множества Y, а также n – число элементов в универсуме U. Требуется определить вероятность события «Некоторые Х суть У», т.е. найти P(Ixy). Построим скалярные диаграммы для случая n=8, nx=2, ny=4. Общее количество вариантов размещения элементов множества У в универсуме как и в предыдущих случаях равно C(n,ny) = C(8,4) = 8*7*6*5/4! = 70. Для выполнения условия Ixy нужно, чтобы один элемент множества Y размещался или в клетке 1, или в клетке 2, но не в двух сразу (тогда получится Axy). Таким образом, существуют две равновеликих группы вариантов размещения элементов множества Y при выполнении требования Ixy. Рассчитаем количество размещений для одной группы вариантов. Оно определяется числом сочетаний C(n-nx,ny-1) = C(8-2,4-1) = C(6,3) = 6*5*4/3! = 20. Следовательно, общее количество вариантов размещения элементов множества Y при выполнении условия Ixy составит 2*20 = 40. 209 210 Таким образом, вероятность P(Ixy) = C(n-nx,ny-1)/C(n,ny) = 40/70 = 4/7. Определим сумму вероятностей P(Axy)+P(Exy)+P(Ixy) = 3/14+3/14+4/7 = 1. Следовательно, P(Ixy) = 1 – P(Axy) – P(Exy). Для «разминки» решим следующую задачку. Задача 9.1. Некоторые студенты (m) – отличники (x). Некоторые студенты (m)– блондины (y). ------------------------------------------------ Найти f(x,y), если известно, что в компании молодёжи из 10 человек студенты составляют 20%, отличники – тоже 20%, а блондины – 40%. Решение. Классическая логика однозначно утверждает, что заключения не существует. Однако в Русской логике эта задача легко решается. Примем в качестве универсума (U) всю компанию молодёжи из 10 человек, тогда получим решение по алгоритму ТВАТ: Ixy = x'+i= Ix’y(5), т.е. «Некоторые не-отличники – блондины». Такое интегрированное заключение не противоречит здравому смыслу, но не имеет количественной оценки возникновения возможных ситуаций Axy, Exy, Ixy. Определим эти вероятности, для чего найдём количество всевозможных способов реализации второй посылки Imy, т.е. k(Imy). Нам известны количественные характеристики: n=10, m=2, x=2, y=4. Отсюда получим, используя формулу для сочетаний k(Imy) = 2 x C(n-m,y-1) = 2 x C(8,3) = 2 x 56 = 112. Аналогично найдём количество возможных вариантов для заключений Axy, Exy, Ixy. k(Axy) = C(n-x-1,y-x) = C(7,2) = 21. k(Exy) = C(n-x-1,y-1) = C(7,3) = 35. k(Ixy) = C(n-x-1,y-1) + C(n-x-1,y-2) = C(7,3) + C(7,2) = 35 + 21 = 56. 210 211 Проверка подтверждает, что k(Axy)+k(Exy)+k(Ixy) = k(Imy). Теперь легко находятся вероятности всех вариантов заключений. P(Axy) = k(Axy)/k(Imy) = 21/112 = 3/16. P(Exy) = k(Exy)/k(Imy) = 35/112 = 5/16. P(Ixy) = k(Ixy)/k(Imy) = 56/112 = ½ = 0,5. Алгоритм «Циклон» (синтез многовариантных силлогизмов). 1. Убедиться, что для всех терминов-множеств исходных посылок и универсума силлогизма указаны количественные характеристики (заданы мощности множеств или хотя бы соотношения между ними). 2. Изобразить все возможные ситуации для исходных посылок с помощью скалярных диаграмм Лобанова. 3. Определить вероятность каждого варианта заключения, используя формулы вычисления количества сочетаний. 4. В том случае, когда первой посылкой является общеутвердительное или общеотрицательное суждение, то достаточно определить вероятности заключений по одному варианту из всех возможных для первой посылки. Необходимо отметить влияние количественной характеристики терминов на заключение силлогизма. Задача 9.2. Дана полная единица системы в виде M = AxmImy. Найти заключение. Решение. Поскольку содержимое терминов не оговорено, то мы имеем право представить решение задачи в виде следующих скалярных диаграмм. Из таблицы истинности выведем соотношение: f(x,y) = x'+i= Ix’y(5). Задача 9.3. Сохраним условие предыдущей задачи, т.е. пусть M = AxmImy. Но оговорим количественные характеристики множеств U, M, X, Y. Пусть множество универсума содержит 5 элементов,т.е. nU = 5, а остальные характеристики соответственно nM = 3, nX = 1, nY = 2. Найти заключение. Решение. Диаграммы примут вид: 211 212 Из таблицы истинности выведем соотношение: f(x,y) = x'+i= Ix’y(5). Хотя интегрированное заключение и не изменилось, но количество вариантов решения уменьшилось: здесь физически невозможна ситуация Ixy. Таким образом, решение силлогизма зависит и от соотношения содержимых терминов, т.е. от мощностей всех задействованных множеств. В этой задаче несложно подсчитать вероятности вариантов заключений (на скалярных диаграммах представлено лишь по одному варианту для Exy, Axy). P(Exy) = 4/6 = 2/3, P(Axy) = 2/6 = 1/3. Задача 9.4. Пусть M = AxmAym и nU = 5, nM = 3, nX = 2, nY = 1. Найти заключение. Решение. 212 213 F(x,y) = y’ + i = Ixy’(5), т.е. «Некоторые Х суть не-У» в 5-м базисе. Вероятностные характеристики различных вариантов заключений легко находятся из диаграмм. P(Exy) = 1/3. P(Ayx) = 2/3. Задача 9.5. Пусть M = AxmImy и nU = 5, nM = 3, nX = 2, nY = 3. Найти заключение. Решение. Диаграммы примут вид: Из таблицы истинности выведем соотношение: f(x,y) = x'+y+i= Ix’y(2). Определим вероятностные характеристики. n = n(Imy) = C(3,1)*C(2,2)+C(3,2)*C(2,1) = 3*1+3*2 = 9. n(Axy) = 1. n(Ixy) = 9-1 = 8. P(Axy) = n(Axy)/n = 1/9. P(Ixy) = n(Ixy)/n = 8/9. Задача 9.6. Пусть M = AxmAym и nU = 6, nM = 4, nX = 2, nY = 2. Найти заключение. Решение. Диаграммы примут вид: Из таблицы истинности выведем соотношение: f(x,y) = x'y’+i= Ix’y’(3). Определим вероятностные характеристики. 213 214 n = n(Aym) = C(4,2)=4* 3/2 = 6. n(Exy) = 1. n(x=y) = 1. n(Ixy) = 6-(1+1) = 4(на рисунке представлен лишь один вариант из 4-х). P(Exy) = n(Exy)/n = 1/6. P(x=y) = 1/6. P(Ixy) = n(Ixy)/n = 4/6 = 2/3. Задача 9.7. Пусть M = AxmAym и nU = 6, nM = 4, nX = 2, nY = 3. Найти заключение. Решение. Диаграммы примут вид: Из таблицы истинности выведем соотношение: f(x,y) = x'+y+i= Ix’y(2). Определим вероятностные характеристики. n = n(Aym) = C(4,3)=4* 3*2/6 = 4. n(Axy) = 2. n(Ixy) = 4 - 2 = 2. P(Axy) = 2/4 = 1/2. P(Ixy) = n(Ixy)/n = 2/4 = 1/2. Задача 9.8. Пусть M = AxmAym и nU = 6, nM = 5, nX = 3, nY = 2. Найти заключение. Решение. Диаграммы примут вид: Из таблицы истинности выведем соотношение: f(x,y) = x'+y+i= Ix’y(2). Определим вероятностные характеристики. n = n(Aym) = C(5,2)=5* 4/2 = 10. 214 215 n(Exy) = 1. n(Ayx) = C(3,2) = 3*2/2 = 3 n(Ixy) = 10 – (1+3) = 6. P(Exy) = 1/10. P(Ayx) = 3/10. P(Ixy) = n(Ixy)/n = 6/10 = 3/5. Задача 9.9. Пусть M = AxmImy и nU = 8, nM = 5, nX = 2, nY = 3. Найти заключение. Решение. Диаграммы примут вид: Из таблицы истинности выведем соотношение: f(x,y) = x'+i= Ix’y(5). Определим вероятностные характеристики. n = n(Iym) = C(5,1)*C(3,2) + C(5,2)*C(3,1) = 5* 3 + 10*3 = 45. n(Exy) = C(3,1)*C(3,2) + C(3,2) * C(3,1) = 18. n(Axy) = C(3,1) = 3. n(Ixy) = 45-(18+3) = 24. P(Exy) = n(Exy)/n = 18/45 = 2/5. P(Axy) = 3/45 = 1/15. P(Ixy) = n(Ixy)/n = 24/45 = 8/15. Задача 9.10. Пусть M = AxmImy и nU = 8, nM = 5, nX = 2, nY = 3. Найти заключение задачи 9.9 при смене мест посылок. Решение. Диаграммы примут вид: 215 216 Из таблицы истинности выведем соотношение: f(x,y) = x'+i= Ix’y(5), т.е. от перестановки посылок заключение не изменилось. Определим вероятностные характеристики. n = n(Axm) = C(5,2) = 5* 4/2 = 10. n(Exy) = C(3,2) = 3. n(Axy) = 1. n(Ixy) = 10-(1+3) = 6. P(Exy) = n(Exy)/n = 3/10. P(Axy) = 3/45 = 1/10. P(Ixy) = n(Ixy)/n = 6/10 = 3/5. Мы получили совершенно иные вероятностные характеристики, чего быть не может. Это связано с тем, что при частной посылке, стоящей на первом месте необходимо рассматривать не один вариант Imy, а все n = n(Iym) = C(5,1)*C(3,2) + C(5,2)*C(3,1) = 5* 3 + 10*3 = 45, и находить среднее значение вероятностных характеристик. Поэтому для упрощения расчётов нужно на первое место ставить общеутвердительную или общеотрицательную посылку. Задача 9.11. Для задачи 9.9 M = AxmImy и nU = 8, nM = 5, nX = 2, nY = 3. Найти заключения при различных вариантах первой общеутвердительной посылки. Решение. Таких вариантов будет C(5,2) = 10. Для первого варианта диаграммы примут вид: Из таблицы истинности выведем соотношение: f(x,y) = x'+i= Ix’y(5). Определим вероятностные характеристики. n = n(Iym) = C(5,1)*C(3,2) + C(5,2)*C(3,1) = 5* 3 + 10*3 = 45. n(Exy) = C(3,1)*C(3,2) + C(3,2) * C(3,1) = 18. n(Axy) = C(3,1) = 3. 216 217 n(Ixy) = 45-(18+3) = 24. P(Exy) = n(Exy)/n = 18/45 = 2/5. P(Axy) = 3/45 = 1/15. P(Ixy) = n(Ixy)/n = 24/45 = 8/15. 217 218 218 219 Все 10 вариантов диаграмм для данного силлогизма дают одинаковые вероятностные характеристики заключений. Это означает, что в том случае, когда первой посылкой является общеутвердительное или общеотрицательное суждение, то достаточно определить вероятности заключений по одному варианту из всех возможных. Задача 9.12. Пусть M = AmxAmy и nU = 5, nM = 1, nX = 2, nY = 3. Найти заключение. Решение. Из скалярных диаграмм видно, что n(Amy) = C(4,2) = 6, n(Axy) = C(3,1) = 3, n(Ixy) = C(3,2) = 3. P(Axy) = n(Axy)/n(Amy) = 3/6 = 0,5. P(Ixy) = n(Ixy)/n(Amy) = 3/6 = 0,5. Задача 9.13. Пусть M = AmxAmy и nU = 5, nM = 2, nX = 3, nY = 4. Найти заключение. Решение. Из скалярных диаграмм получим такие результаты. n(Amy) = C(3,2) = 3, n(Axy) = C(2,1) = 2, n(Ixy) = 1. P(Axy) = n(Axy)/n(Amy) = 2/3. P(Ixy) = n(Ixy)/n(Amy) = 1/3. Задача 9.14. 219 220 Пусть M = AmxAmy и nU = 6, nM = 2, nX = 3, nY = 4. Найти заключение. Решение. Из скалярных диаграмм получим такие результаты. n(Amy) = C(4,2) = 6, n(Axy) = C(3,1) = 3, n(Ixy) = 6-3 = 3. P(Axy) = n(Axy)/n(Amy) = 3/6 = 0,5. P(Ixy) = n(Ixy)/n(Amy) = 3/6 = 0,5. Решение в общем виде для ситуации nu>(nx+ny-nm), ny>nx, nx>nm : n(Amy) = C(nu-nm,ny-nm), n(Axy) = C(nu-nx,ny-nx), n(Ixy) = n(Amy)-n(Axy). P(Axy) = C(nu-nx,ny-nx)/ C(nu-nm,ny-nm), P(Ixy) = n(Ixy)/ C(nu-nm,ny-nm) = [C(nu-nm,ny-nm) - C(nu-nx,ny-nx)]/ C(nu-nm,nynm). Задача 9.15. Пусть M = EmxEmy и nU = 3, nM = 1, nX = 1, nY = 1. Найти заключение. Решение. Найдём интегрированное заключение по алгоритму ИЭИ. M = EmxEmy = (m’+x’)(m’+y’) = m’+x’y’ F(x,y) = x’y’ + i = Ix’y’(3). Вероятностные оценки двухвариантного заключения: P(Exy) = 0,5; P(x ~ y) = 0,5. Задача 9.16. Пусть M = AmxAmy и nU = 4, nM = 1, nX = 2, nY = 3. Найти заключение. 220 221 Решение. Интегрированное заключение f(x,y) = y+i = Ixy(7). Вероятностные характеристики двухвариантного заключения: P(Axy) = 2/3; P(Ixy) = 1/3. Задача 9.17 Пусть M = ImxImy и nU = 6, nM = 3, nX = 2, nY = 3. Найти заключение. Решение. Интегрированное заключение: f(x,y) = x’+i = Ix’y(5). Задача 9.18 Пусть M = ImxImy и nU = 5, nM = 3, nX = 2, nY = 3. Найти заключение. Решение. 221 222 Интегрированное заключение: f(x,y) = x’y+i = Ix’y(3). Задача 9.19 Пусть M = ImxImy и nU = 4, nM = 2, nX = 2, nY = 2. Найти заключение. Решение. Интегрированное заключение: f(x,y) = i , т.е. нет заключения. Вероятностные характеристики 3-вариантного заключения: P(Exy) = ¼; P(x~y) = ¼, P(Ixy) = ½. Результаты решения трёх последних примеров ярко высвечивают зависимость заключения не только от объёма терминов и универсума, но и от соотношения этих объёмов. Задача 9.20. Вернёмся к вышеприведённому тесту Ф.Джонсон-Лэрда и М.Стидмена: 222 223 Ни один химик не есть пчеловод. Некоторые пчеловоды - художники. -------------------------------------------Некоторые художники - не химики. Решение. Пусть универсум состоит из химиков, пчеловодов и художников, причём n=4, m=2, x=1, y=2. Решение представлено на диаграммах ЛВИ. Из диаграмм видно, что заключение двухвариантно: Exy, Axy. Определим вероятности этих вариантов: P(Exy), P(Axy). N(Imy) = C(2,1)*C(2,1) = 2*2 = 4 N(Exy) = C(2,1)*C(1,1) = 2 N(Axy) = C(2,1)*C(1,1) = 2 P(Exy) = n(Exy)/n(Imy) = 2/4 = 0,5 P(Axy) = n(Axy)/n(Imy) = 2/4 = 0,5. Поскольку авторы силлогизма не имели ни малейшего представления о вероятностной силлогистике, то они в принципе не имели права тестировать студентов. Кроме того сам тест задан некорректно: не указаны количественные характеристики терминов и не определён универсум. Аналогично, вероятностным методом, решается задача нахождения недостающей посылки. Алгоритм «Комета» вероятностного синтеза недостающей посылки (вероятностный графический синтез недостающей посылки). 1. Изобразить на диаграммах Лобанова исходную посылку и все варианты заданного заключения. 2. Определить вероятность каждого варианта искомой посылки. Задача 9.21. Дано: Axm & f(m,y) → Exy, n=6, m=3, x=1, y=2. Найти f(m,y). Решение. По п.1 алгоритма «Комета» строим диаграммы Лобанова и определяем, что в этом случае искомая посылка трехвариантна. 223 224 По п.2 алгоритма «Комета» находим K(Exy) = C(5,2) = 20/2 = 10. K(Emy) = C(3,2) = 3. P(Emy) = 0,3. K(Aym) = 1. P(Aym) = 0,1. K(Imy) = 10-3-1 = 6. P(Imy) = 0,6. Аналитический метод дал бы единственный результат: Emy. 224 225 Глава десятая Дисциплина мышления. Человеческое мышление по своей природе хаотично, неорганизованно, аморфно, недисциплинированно. Автор в этом отношении не является исключением из общего правила. Стоит ли огорчаться по данному поводу? Вероятно, с этим нужно смириться как с неизбежностью. Ведь мы не бьём тревогу относительно того, что не в силах состязаться с ЭВМ в шахматах и прочих рутинных вычислительных операциях. Человек – это изумительное по совершенству создание, его предназначение состоит в решении творческих, эвристических задач, где «неорганизованность» мышления, возможно, играет главную роль. Заставлять человека играть в шахматы – это то же самое, что забивать микроскопом гвозди. Однако вооружить человека инструментом, дисциплинирующим мышление, можно и нужно. Эта задача значительно сложнее и важнее повальной компьютеризации. Зачастую компьютеризация превращает нас в «мартышек с арифмометром», а дисциплинирование мышления такой катастрофой не грозит. К тому же если «знание – это сила», то «мышление – это могущество». Поэтому игра стоит свеч. В качестве такого «мыслительного инструмента» выступает Русская логика. Проиллюстрируем её возможности на конкретном примере. Бертран Рассел в своей работе «История западной философии» (М.:2000 –768с.) на стр.194 приводит силлогизм: Все люди разумны. Некоторые животные – люди. Некоторые животные – разумны. Покажем на этом примере недостатки мышления Б.Рассела. Во-первых, отсутствие дисциплины мышления проявляется в отсутствии универсума, хотя даже 100 лет назад Льюис Кэрролл[11] не позволял себе такого невежества. Определим, например, в качестве универсума весь животный и растительный мир. Во-вторых, последняя посылка по утверждению Васильева Н.А. и с позиции русской логики просто безграмотна: в силу симметрии частноутвердительного функтора мы должны считать, что некоторые люди – животные, а остальные - растения или ещё что-нибудь неодушевлённое. В соответствии с русской логикой и здравым смыслом вторую посылку необходимо заменить суждением «Все люди – животные». В-третьих, по теории великого русского физиолога И.П. Павлова разумными могут быть люди и только люди, т.е. «люди» и «разумные существа» – эквивалентные понятия.. Следовательно, и первая посылка некорректна. Отредактировав Б.Рассела, получим следующие посылки. Все люди(m) и только люди разумны(x). Все люди(m) – животные(y). F(x,y) = ? Решение. Пусть x – разумные существа, m – люди, y – животные. Универсум – животный и растительный мир. M = (xm)Amy = (xm+x’m’)(m’+y) = m’x’+xmy+x’m’y = m’x’+xmy 225 226 F(x,y) = x’+y = Axy. Таким образом мы получили правильное заключение «Все разумные – животные», что вполне согласуется со здравым смыслом. Рассмотренные примеры демонстрируют не только дремучее невежество Б.Рассела, но и его бестолковость. Маститый академик и Нобелевский (так и хочется сказать Шнобелевский) лауреат шаблонно использовал при решении задачи фигуры и модусы (хрупкие костыли Аристотеля для интеллектуальных инвалидов типа телевизионных «знатоков»), которые не учитывают содержание терминов силлогизма и универсума. «Сыграем в поддавки» с Б.Расселом: он пытался использовать фигуры и модусы Аристотеля. Подгоним силлогизм под Аристотеля: Все люди(m) разумны(x). Некоторые люди(m) вежливы(y). ----------------------------------------------F(x,y) = ? Если в качестве универсума примем множество людей, богов(разумных и вежливых) и животных, то получим заключение: «Все вежливые – разумны», что опять не совпадает с заключением именитого академика. Б.Рассел в монографии «Искусство мыслить»(М.:1999) на с. 38 приводит такой силлогизм: «Если А находится вне В и В находится вне С, то А находится вне С». Данный силлогизм – образец вопиющей безграмотности и бестолковости. По алгоритму ТВАТ построим диаграммы. Кстати, вся аморфность мышления Б. Рассела, как и любого другого «мыслителя», сразу проявляется при прорисовке скалярных диаграмм. Именно они принудительно дисциплинируют мышление. 226 227 Не блещут дисциплиной мышления и преподаватели Оксфордского и Кембриджского университетов, самых престижных вузов Запада. В своей книге "Философия"(М.:1997) на стр. 172 Д. Тейчман и К. Эванс проявили не только оголтелую славянофобию ("Все поляки - маньяки"), но и вопиющую безграмотность. Вместо того, чтобы сформулировать посылку в виде "Все олени - животные", они заявляют "Некоторые животные - олени"(стр.170). Из такой посылки следует абсолютно абсурдное заключение: “Некоторые олени – животные”. Или совсем уж бестолковый перл: "Некоторые солдаты - люди"(стр.174). Таких ляпсусов отечественные логики всё-таки не допускают. Рассмотрим ещё один силлогизм: Все животные (m) смертны(х). Некоторые животные(m) неграмотны(y). F(x,y) = ? В этом случае могут быть несколько вариантов универсума. Например: 1. U = животные + растения. 2. U = животные + растения + неживая природа(НП). 3. U = животные + растения + неживая природа+боги. Тогда для первого варианта получим следующие скалярные диаграммы: Из скалярных диаграмм видно, что f(x,y) = x = Ayx & Ay’x, т.е. “Все неграмотные и все грамотные смертны”. Скалярные диаграмы для второго варианта универсума имеют вид: Заключение в этом случае получается совершенно иным: F(x,y) = x+y = Ax’y & Ay’x, т.е. “Все бессмертные неграмотны, а все грамотные смертны". Все эти результаты не соответствуют ни одному классическому модусу и нарушают главный закон силлогистики о частной посылке и частном заключе- 227 228 нии, однако вполне согласуются со здравым смыслом. Для третьего универсума диаграммы выглядят иначе: Из таблицы истинности получаем третье заключение, также противоречащее классическим модусам (результат в 5-м базисе, а не в базисе Аристотеля): F(x,y) = x+ix’ = Ixy(5). Однако исходя из здравого смысла, боги не могут быть одновременно грамотными, неграмотными и “полуграмотными”, как это представлено на скалярных диаграммах для 3-го универсума. Следовательно, силлогизм для этого универсума должен быть построен для трёх случаев: боги грамотные; боги неграмотные; некоторые боги неграмотные. Для грамотных богов решение выглядит так: Из диаграмм видно, что f(x,y) = Ayx, т.е. «Все неграмотные – смертны». Для варианта с неграмотными богами имеем: 228 229 Заключение в этом случае имеет вид f(x,y) = x+y = Ax’yAy’x, т.е. «Все бессмертные неграмотны, а все грамотные смертны». Построим скалярные диаграммы для «полуграмотных» богов. Для этого варианта заключение выглядит так: f(x,y) = 1 = Ixy(8), т.е. в базисе Васильева «Некоторые смертные неграмотны». В силу симметричности и обратимости частно-утвердительного функтора Васильева имеем: Ixy = Ixy’ = Ix’y = Ix’y’. Следовательно, одновременно можно утверждать, что «Некоторые смертные грамотны», «Некоторые бессмертные неграмотны», «Некоторые бессмертные грамотны». Силлогизмы подобного типа не могут быть решены без скалярных диаграмм, конкретизации универсума и содержания посылок. Автор и сам без скалярных диаграмм и русской логики становится беспомощным при анализе и синтезе сложных силлогизмов. Таким образом, логика дисциплинирует мышление, тренирует ум. Это вполне согласуется с мыслью Гераклита о том, что надо воспитывать в себе «многомыслие», а не «многознание. В «Диалогах» Платона [33, стр.117] встречается такой вопрос: “ Скажи мне, Клиний, те из людей, кто идёт в обучение, - они мудрецы или невежды?» И далее утверждается, что любой ответ будет неверным. Это яркий пример терминологической путаницы: мудрец – не всезнайка, а просто умный, обогащённый жизненным опытом и знаниями многих наук(в первую очередь математических) человек. Если бы Клиний и его оппоненты определили содержание термина, то никакого диспута не возникло бы. 229 230 Глава одиннадцатая. Логические уравнения и обратные функции. 11.1. Решение логических уравнений. Под решением логического уравнения будем понимать преобразование исходного уравнения к явному виду относительно одной из переменных. Впервые в мире эту проблему сумел разрешить гениальный русский учёный Платон Сергеевич Порецкий[34] в своей работе о логических равенствах . Однако Порецкий П.С. допустил ряд ошибок, для уcтранения которых пришлось разработать алгебру 4-значной комплементарной логики и алгоритм «Селигер» [6 - 8]. Эта проблема рассмотрена также в работах Н.П.Брусенцова [3]. Предлагается более простой и эффективный метод решения логических уравнений[17, 29], основанный на применении таблиц истинности и четырёхзначной логики. Автором впервые предлагается четырехзначная логика.Она полностью соответствует общеразговорной,или бытовой логике.Вышеназванная логика представлена базисными функциями. Значения этой логики имеют следующий смысл : 0 - нет, j - не может быть никогда, i- может быть, 1 - да. Таблица базисных функций 4-значной комплементарной логики XY 00 0j 0i 01 j0 jj ji j1 X’ 1 1 1 1 i i i i X&Y 0 0 0 0 0 j 0 j X+Y 0 j i 1 j j 1 1 XY i0 ij ii i1 10 1j 1i 11 X’ j j j j 0 0 0 0 X&Y 0 0 i i 0 j i 1 X+Y 1 1 i 1 1 1 1 1 Следует обратить внимание на комплементарность (взаимодополняемость,взаимоинверсность) значений переменных : 0+1=1, i+j=1, 01=0, ij=0. В связи с этим вполне естественно назвать такую логику комплементарной. Для приведённых базисных функций комплементарной логики как и для 3-значной логики также справедлив закон Де Моргана. При решении системы логических уравнений вначале определяется так называемая полная единица задачи (системы), а потом отыскивается решение уравнения относительно одной из переменных. Под решением здесь и далее понимается преобразование исходного уравнения к явному виду относительно одной из переменных. Поскольку построение полной единицы системы не вызывает затруднений, рассмотрим решение логического уравнения с помощью таблиц истинности, считая полную единицу (m) известной. 230 231 В качестве примера рассмотрим именно ту задачку, с которой автор начинал освоение классической логики. Тогда, в 1995г.,только что получив в подарок от Н.П.Брусенцова его книжку «Начала информатики»[3], я заявил, что в логике нет и не может быть проблем, поскольку там всё понятно даже четверокласснику. В ответ Учитель предложил решить любое логическое уравнение. Я ответил, что справлюсь с этим за 5 минут. При всём при том я даже не знал, что такое «решение логического уравнения». Я взял в качестве уравнения первое, что пришло в голову: M = ab+cd. Брусенцов Н.П. заявил, что это сложное уравнение, но мне оно таким не казалось – я справился с ним за обещанные 5 минут. Надеюсь, что Читатель тоже уложится в этот интервал. Пример 1. Дано : m = ab + cd = 1 Найти : d = f(a,b,c) Решение. На основании исходного логического уравнения полной единицы строим таблицу истинности для разрешённых наборов, т.е. тех наборов, на которых исходное уравнение имеет решение, т.е. разворачиваем ДНФ в СДНФ. Перенеся столбцы a,b,c из исходной таблицы в качестве значений аргументов, а столбец d - в качестве значений искомой функции, получим таблицу истинности для d = f(a,b,c). По полученной таблице заполним карту Карно, откуда после минимизации выведем соотношения для d = f(a,b,c). Если на некотором наборе функция принимает значение как 0, так и 1, то в соответствующую клетку карты Карно вписываем символ i. Если на каком либо наборе функция не определена, то в соответствующую клетку карты Карно вносим значение j. Здесь и далее апостроф означает отрицание аргумента или функции. Применение карты Карно не имеет принципиального значения : просто автор считает карты Карно наиболее эффективным инструментом для минимизации булевых функций. ba c \ 00 01 11 10 j j i j 1 1 i 1 Клетки карты Карно с координатами 011 и 111 заполнены значением i, т.к. 231 232 на этих наборах(индивидах,конституентах) d принимает значения как 0, так и 1. Наборы 000, 001 и 010 в таблице отсутствуют, поскольку при таких значениях аргументов исходное уравнение не имеет решения, поэтому соответствующие карты Карно заполнены символом j. Для трёхзначной логики в этих клетках помещается прочерк [13], т.е. символ недоопределённости. Доопределение минимизируемой функции единицами позволяет получить компактную формулу. Для комплементарной логики имеем: d = cb’ + ca’ + iba + j(c’b’ + c’a’) Для трёхзначной логики это уравнение выгдядит проще: d = b’ + a’ + iba Но просто ещё не значит истинно. Поэтому произведём проверку полученных результатов. Кстати, эту проверку я ввёл далеко не сразу. Как её сделать? Очень просто. Если из M = ab+a’b’ мы получили решение a=b, то и из a=b мы должны на основе формулы эквивалентности вернуться к M = ab+a’b’. Работать с эквивалентностью в 4-значной комплементарной логике достаточно сложно, поэтому я предлагаю Читателю более простой метод обычной булевой алгебры. Дело в том, что для выражения y = f1+if2+jf3 удалось установить соответствие y = f1+yf2+y’f3. Запомните это рекурсивное соотношение: Я предлагаю Читателю поломать голову над выводом вышеприведённого соответствия. Кстати, заодно и над модификацией алгебры 4-значной комплементарной логики: не всё мне там нравится. Да, есть ещё одна проблема: один студент ТВАТ на моих лекциях по Русской логике заявил, что общеразговорная логика 5-значна: 5-е значение – «не знаю». Надеюсь, что кто-нибудь из русских мыслителей создаст алгебру 5-значной логики. К стыду своему, фамилию этого толкового русского студента я не запомнил. Приношу ему свои самые искрение извинения. Кстати, за 10 прошедших лет это был единственный студент (надеюсь, будущий выдающийся учёный), который открыл 5-значную логику здравого смысла. А теперь приступим непосредственно к проверке полученных результатов. Начнём с 4-значной комплементарной логики. Приведём выражение d = cb’ + ca’ + iba + j(c’b’ + c’a’) к рекурсивному виду. Получим d = c(a’+b’)+abd+c’d’(a’+b’). Теперь найдём полную единицу системы, т.е. M. Поиск будем вести по формуле эквивалентности M = (x=y) = xy+x’y’. Тогда M = [d = c(a’+b’)+abd+c’d’(a’+b’)] = d[c(a’+b’)+abd+c’d’(a’+b’)] + d’[c(a’+b’)+abd+c’d’(a’+b’)]’ = cd(a’+b’)+abd+d’(a’c’d+abd’) = cd(a’+b’)+abd+abd’ = ab+cd, что и требовалось доказать. 232 233 То, что [c(a’+b’)+abd+c’d’(a’+b’)]’ = (a’c’d+abd’), удалось выяснить с помощью карты Карно: очень скучен процесс аналитического инвертирования. Итак, проверка решения уравнения в 4-значной комплементарной логике закончилась благополучно. Проведём проверку решения уравнения в 3-значной логике. Приведём выражение d = b’ + a’ + iba к рекурсивному виду. Получим d = b’+a’+dba=b’+a’+d. Откуда M = (d = b’+a’+d) = d(b’+a’+d)+d’(b’+a’+d)’ = d+abd’ = d+ab, что не сответствует исходному значению М. Мы доказали, что решение логических уравнений возможно только в 4-значной комплементарной логике, чего не знал и не мог знать П.С.Порецкий. Внимательно анализируя метод решения логических уравнений великого русского логика П.С.Порецкого[3], приходишь к выводу, что кое в чём гениальный математик ошибался. Но и на солнце бывают пятна, поэтому великим грехом эту оплошность назвать нельзя. В связи с тем, что при решении логических уравнений приходится зачастую проводить минимизацию булевых функций от большого числа переменных, полезно ознакомиться с соответствующими алгоритмами, изложенными в [13,14] и в диссертации автора[15]. Пример 2. Рассмотрим 1-ю задачу Порецкого[34]. Между птицами данного зоосада существует 5 отношений: 1. Птицы певчие - крупные или обладающие качеством Y. 2. Птицы, не имеющие качества Y - или не крупные, или не имеют качества Х. 3. Птицы певчие в соединении с крупными объединяют всех птиц с качеством Х. 4. Каждая не-крупная птица есть или певчая, или обладающая качеством Х. 5. Между птиц с качеством Х совсем нет таких птиц с качеством Y, которые не будучи певчими, были бы крупные. Определить, были ли птицы качества Х певчие или нет. Узнать то же в отношении птиц качества Y.Найти, были ли среди качества Х птицы качества Y и наоборот. Решение. Пусть Х - птицы качества Х. Y - птицы качества Y. S - певчие птицы. G - крупные птицы. Тогда условие задачи будет представлено следующими рекурсивными уравнениями [34] : 1. s= (g+ у)s; 2. у’= (g’+x’)у’; 3. s+g+x’=1; 4. g’=(s+x)g’; 5. xуs’g=0. Эти уравнения Порецкий через эквивалентность приводит к единичной форме: 1. g+у+s’=1 2. g’+x’+у=1 3. s+g+x’=1 233 234 4. s+g+x=1 5. x’+у’+s+g’=1 Нетрудно заметить, что система уравнений Порецкого представляет из себя сорит, содержащий посылки общего характера. Посылки частноутвердительного характера метод Порецкого обрабатывать не может. Кстати, используя силлогистические функторы Аху и Еху, можно получить эти соотношения сразу, не прибегая к рекурсии и эквивалентности. Исходя из вышесказанного можно утверждать, что аналитическое представление силлогистических функторов Axy, Exy было впервые в мире дано русским логиком Порецким П.С. Правда, мировая логика не заметила этого научного достижения, как не увидела и того,что позже к аналогичному выводу пришел и Л.Кэрролл[11]. Логика до сих пор прозябает в невежестве. 1.As(g+y) = (s(g+y)’)’ = s’+g+y = 1 2. Ay’(g’+x’) = (y’(g’+x’)’)’ = y+g’+x’ = 1 3. Ax(s+g) = (x(s+g)’)’ = x’+s+g = 1 4. Ag’(s+x) = (g’(s+x)’)’ = g+s+x = 1 5. Ex(ys’g) = (x(ys’g))’ = x’+y’+s+g’ = 1 Поэтому, видимо, целесообразно изучать решение логических уравнений после освоения силлогистики. Полная логическая единица всей задачи определится как конъюнкция всех левых частей системы логических уравнений. Эту рутинную операцию можно заменить на менее утомительную процедуру построения дизъюнкции нулей. Получим систему: 1. g’у’s=0 2. gxу’=0 3. g’s’x=0 4. g’s’x’=0 5. gs’xу=0 Полный логический нуль системы равен дизъюнкции всех левых частей системы логических уравнений. Проведём решение задачи Порецкого с использованием карты Карно, а потом сопоставим результаты. Заполним карту Карно нулями в соответствии с нулевыми термами системы, а в оставшиеся клетки впишем единицы. Тогда полная логическая единица всей задачи после минимизации примет вид: m=sу+gx’ xy gs 00 01 11 10 00 01 11 10 0 0 1 1 0 1 1 1 0 1 1 0 0 0 0 0 234 235 Выпишем из карты Карно все единичные термы в виде таблицы истинности. По полученной таблице построим таблицы для х=f1(g, s),y=f2(g,s) и у=f3(х). Если на каком-либо наборе функция принимает значение как 0, так и 1, то в соответствующую клетку карты Карно вписываем i. Если какой-нибудь набор отсутствует, то для этого набора в карту Карно вносим значение j комплементарной логики. После минимизации получим для комплементарной логики системы уравнений: x = is + jg’s’ у = g’s + ig + jg’s’ у = x + ix’ = (x + ix) + ix’ = x + i После приведения к рекурсивной форме имеем: x = xs + x’g’s’ у = g’s + yg + y’g’s’ у=x+y Результаты, полученные Порецким: x = xs у = gу + g’s у=у+x Сравнивая системы уравнений, можно заметить расхождение в результатах. Проверим себя и Порецкого. Полная единица системы M(g,s,x) = s+gx’. Это следует из основной формулы M(g,s,x,y) = sy+gx’. Для комплементарной логики имеем M(g,s,x) = (x=xs+x’g’s’) = xs+x’(xs+x’g’s’)’ = xs+x’(x’s+gs’+xs’) = xs+x’s+x’g = s+gx’, что и требовалось доказать. Для Порецкого проверка не увенчалась успехом. Здесь великий логик допустил ошибку:он,как и автор в своё время,не догадался о проверке - восстановлении М. Привожу проверку для x=xs: M(g,s,x) = (x=xs) = xs+x’(xs)’ = xs+x’ = s+x’, что не соответствует заданному M(g,s,x). Строгим решением является лишь результат, полученный на основе комплементарной логики. Комплементарная логика в электронике повышает надёжность любого 235 236 устройства. Электронная система, построенная на такой логике фиксирует те ситуации, которые не могут быть никогда. Например, в сложной системе управления своевременное обнаружение таких состояний может предотвратить аварию или отказ. Поэтому можно надеяться, что вычислительная техника (да и не только она, но и юриспруденция тоже) будет строиться на комплементарной логике. Кстати, первая в мире троичная ЭВМ «Сетунь-70» была создана в России Брусенцовым Н.П. (МГУ). Что касается 4-значной ЭВМ, то аппаратная реализация комплементарной логики на современной двоичной элементной базе весьма несложна. Основываясь на примерах 1 и 2, составим алгоритм решения системы логических уравнений. 11.2. Алгоритм «Селигер» решения логических уравнений. 1. Привести систему уравнений к нулевому виду (исходная система). 2. Заполнить карту Карно нулями в соответствии с термами левых частей исходной системы уравнений, а в оставшиеся клетки вписать единицы. Эти единичные термы представляют собой СДНФ полной единицы системы. 3. Произвести минимизацию совокупности единичных термов. Полученное соотношение представляет МДНФ уравнения полной единицы системы. 4. Построить сокращённую (только для единичных термов) таблицу истинности уравнения полной единицы и выписать из неё все значения входных и выходной переменных в виде частной таблицы истинности для искомой функции. 5. Произвести минимизацию полученного выражения.. 6. Привести полученное выражение к рекурсивной форме, заменив i на прямое значение искомой переменной, а j – на инверсное значение этой переменной. 7. Произвести проверку рекурсивного выражения на соответствие его полной единице системы для задействованных аргументов. Алгоритм «Селигер» предполагает не только графическую, но и аналитическую минимизацию методом обобщённых кодов [13, 29]. Для систем уравнений с числом аргументов не более 10 графический метод эффективнее. Минимизация в трёхзначной и комплементарной логиках для двоичных аргументов несущественно отличается от минимизации в двузначной : нужно лишь проводить раздельное склеивание по i, j, 1 или 0. Пример 3 Рассмотрим 2-ю задачу Порецкого. Относительно белья в комоде известны 2 положения: 1) часть его состояла из крупных предметов, всё же остальное было тонким, причём часть этого последнего была поношена, прочая часть дёшево стоила; 2) всё бельё не тонкое, а также всё бельё не новое, но дорогое, принадлежало или к такому тонкому белью, которое не было ни крупно, ни дорого, или 236 237 же к такому крупному белью, которое частью было ново, частью же, будучи тонким, было дёшево. Узнать, какое бельё было поношено: крупное или мелкое. Решение. Пусть а - тонкое, b - крупное, с - дорогое, d - новое бельё. Тогда имеем следующую систему уравнний: 1. b + a(d’ + c’) = 1 2. (a’ + d’c) = ab’c’ + b(d + ac’) В соответствии с алгоритмом «Селигер» получим: 1. a’b’ + b’cd = 0 2. a’b’ + a’d’ + cd’ + 0 Нулевые термы системы уравнений занесём в карту Карно, откуда получим функцию полной единицы. M = ac’+bd. По полученному соотношению строим сокращённую таблицу истинности и выписываем из неё значения b и d в виде таблицы, из которой получаем логическую функцию. Из этой функции следует, что d не зависит от b, что совпадает с результатом Порецкого. Если построить диаграммы Лобанова, то сразу становятся очевидными все зависимости между аргументами a, b, c, d. Например, понятно, что «Всё дорогое бельё – новое» и «Всё дорогое бельё – крупное». 237 238 238 239 11.3. Равносильные преобразования. При решении логических уравнений иногда возникает необходимость в равносильных преобразованиях. Эта проблема рассмотрена в [3] и решена путём введения понятий парного и непарного индивидов. Однако, чёткое определение этих понятий отсутствует. Докажем раносильность преобразований с помощью традиционных методов. Пусть х, у - логические функции, для которых справедливо уравнение х = у, приведённое через эквивалентность к виду. ( х = у ) = ху + х’у’ Требуется найти парный индивид z , т.е. такую функцию, добавление (удаление) которой к обеим частям равенства х=у не нарушало бы его равносильности. Это требование записывается в виде уравнения. x+z=у+z Но полученное выражение через формулу эквивалентности приводится к виду: (x+z=у+z) = (x+z)(у+z)+(x+z)’(у+z)’ = = xу+x’у’+z = (х=у)+z Откуда следует, что z должен принадлежать исходному равенству, и парным индивидом для исходного уравнения х=у может быть любой терм уравнения или их комбинация, т.е. в данном случае парными индивидами являются термы ху, х’у’, xу+х’у’. х=у х +ху = у + ху х + х’у’ = у + x’у’ x + ху + x’у’ = у + xу + х’у’ Пример 4. Пусть х+а = у+b . Найти парные термы (индивиды). Решение. Развернём исходное уравнение на основе формулы эквивалентности : (x+a=у+b)=(х+а)(у+b)+(х+а)’(у+b)’ = xу+ау+bx+ab+a’b’x’у’ Парными термами в этом случае являются ху, ау, bx, ab, a’b’x’у’ и все их комбинации, которые более наглядно можно представить на карте Карно. Любой набор термов из единичных фигур покрытия [3] карты Карно может быть парным индивидом. Определим общее количество парных индивидов n. Пусть u - количество переменных, входящих в уравнение f1=f2. Тогда количество конституент единицы k определится следующими соотношениями. Для чётного u: k = 1 + [2^(u/2) - 1]^2 239 240 Для нечётного u: k = 1+(2^[(u+1)/2]-1) Эти соотношения легко выводятся из анализа карты Карно для уравнения х+а = у+b .Общее количество парных индивидов равно сумме биноминальных коэффициентов для бинома степени k без единицы: n = 2^k - 1 11.4. Отыскание обратных функций. На основе метода, заложенного в алгоритме «Селигер», можно вывести соотношения для операций, обратных конъюнкции и дизъюнкции. Поскольку эти операции часто называются соответственно логическими умножением и сложением, то логично обратным операциям присвоить имена логического деления и логического вычитания. Впервые формулы для логического частного и логической разности для троичной логики получены Н.П.Брусенцовым[3, с.37]. Поскольку в троичной логике не может быть получено корректное решение, то требуется проверка уравнений Брусенцова. Если логическое уравнение вида z=f(x1, x2, x3 .....xi .....xn) решается относительно одной из своих переменных, например, отыскивается обратная функция x1=fi(z, x2, x3 .....xi ..... xn), то можно воспользоваться более простым алгоритмом «Селигер-С» решения задачи. Алгоритм «Селигер-С» синтеза обратных функций. 1. Построить таблицу истинности для уравнения z=f(x1, x2 ..... xn). 2. По исходной таблице истиннсти построить таблицу истинности для обратной функции вида x1=fi(z, x2 ......xn) простой перестановкой столбцов z и х1. 3. По полученной таблице истинности построить обратную функцию x1=fi(z, x2, ..... xn) и провести её минимизацию. 4. Проверить полученное решение, вычислив полную единицу системы М по обратной функции. Пример 5. Дано: z = xу , v = x + у. Найти: у = z/x , у = v-x . Решение. На основе формулы эквивалентности преобразуем исходную формулу z=xу. Тогда получим (z=xу) = zxу + z’(x’+у’). В соответствии с пп.4, 5 алгоритма «Селигер» получим у = xz+ix’z’+jx’z. Решим ту же задачу посредством алгоритма «Селигер-С». Исходные уравнения представим в виде таблицы истинности. Тогда в соответствии с п.2 алгоритма «Селигер-С» построим частные таблицы истинности для у= z/x и у=v-x. 240 241 В соответствии с п.3 алгоритма «Селигер-С проведём минимизацию искомых функций в комплементарной логике. Для комплементарной логики получим: у = z/x = xz + ix’z’ + jx’z = xz+x’yz+x’y’z - уравнение логического деления. у = u-x = x’v + iv + jxv’ = x’v+yv+xy’v’ - уравнение логического вычитания. Проверим оба полученных результата(проверка всех 16 обратных логических функций от двух аргументов будет проведена ниже). Пусть вначале это будет операция логического деления. В рекурсивной форме она выглядит так: у = xz + yx’z’ + y’x’z Найдём полную единицу системы М для полученной функции. M = (у = xz + yx’z’ + y’x’z ) = y(xz + yx’z’ + y’x’z )+y’(xz + yx’z’ + y’x’z )’ = = xyz+x’yz’+y’(y’z’+xz’+x’yz) = xyz+x’yz’+y’z’ = xyz+z’(x’+y’). Она должна совпадать с исходной M = (z=xy) = xyz+z’(xy)’ = xyz+z’(x’+y’). Налицо совпадение результатов. Проверим формулу, полученную для логической разности. Исходная полная единица M = (v = x+y) = v(x+y) + v’(x+y)’ = xv+yv+x’y’v’. Полная единица системы на основе логической разности M = (y = x’v+yv+xy’v’) = x’yv+yv+y’(x’v+yv+xy’v’)’ = yv+y’(x’v’+yv’+xy’v) = = yv+x’y’v’+xy’v = xv+yv+x’y’v’, ч.т.д. Проверка подтвердила правильность полученных результатов. Теперь проверим формулы, полученные Брусенцовым Н.П. [3, с.37]. Для логического деления была получена формула: y = xz+ix’. 241 242 Приведём её к рекурсивному виду – получим y = xz+yx’. Найдём полную единицу системы: M = (y = xz+yx’) = xyz+x’y+y’(xz+yx’)’ = xyz+x’y+y’(xz’+y’x’)’ = xyz+x’+xy’z’ = x’+x(y=z) = x’+(y=z), что не соответствует исходной М. Для логического вычитания Брусенцовым Н.П. построена частичная функция [3, с.37] : y = x’z+ix. В рекурсивном виде y = x’z+yx. Найдём полную единицу системы M = (y = x’z+yx) = x’yz+xy+y’(x’z+yx)’ = x’yz+xy+y’(x’z’+y’x) = x’yz+xy+xy’ = x’yz+x, что не соответствует исходной М. Как мы убедились, однозначными и строгими решениями являются лишь уравнения комплементарной логики. Следовательно, в принципе не может быть правильным решение логического уравнения в троичной логике. Пример 5. Дана система логических уравнений (В. С. Левченков «Булевы уравнения» – М.:1999 ): ax = bc bx = ac Найти х. Решение . Напрашивается простой и “очевидный” метод решения: сложить левые и правые части уравнений и сократить на общий множитель. В результате получим (a+b)x = (a+b)c. Откуда x = c, a = b. Ответ настораживает, тем более, что что решение противоречит принципу отыскания парных индивидов, поэтому проверим его на основе разработанных алгоритмов. . Действительно, сложить левые и правые части уравнений мы имеем право на основании правила (9П) Порецкого[34,стр,376]. Кстати, заодно и проверим это правило: (e=c) (e+b=c+b) = ec’+e’c+(e+b)(c+b)+(e+b)’(c+b)’ = ec’+e’c+ec+b+e’b’c’ = 1; Да, Порецкий не ошибся. Однако относительно сокращения на общий множитель великий русский логик нам ничего не сообщил. А так хочется это сделать, тем более что всё очевидно, и обычная алгебра нам не запрещает подобные операции. Проверим допустимость сокращения на общий множитель с помощью алгоритма “Импульс”: (cx=cy) (x=y) = cx(cy)’+(cx)’cy+xy+x’y’ = cxy’+cx’y+xy+x’y’ 1. Оказывается, что алгебра логики не разрешает нам этакие вольности По алгоритму “Селигер” : M = (ax = bc)( bx = ac) M’ = (ax bc) + ( bx ac) = ab’x+ac’x+a’bc+bcx’+a’bx+bc’x+acx’+ab’c. После занесения M’в карту Карно получим M = a’b’+abcx+c’x’. Откуда решение системы логических уравнений в соответствии с алгоритмом «Селигер» примет вид: x = abc+ia’b’+jc(ab’+a’b) = abc+xa’b’+x’c(ab’+a’b). a = bcx+ic’x’+jb(cx’+c’x) = bcx+ac’x’+a’b(cx’+c’x). Проверка этих рекурсивных уравнений по полной единице системы М дала положительные результаты. Заданная система уравнений может быть представлена графически при помощи скалярных диаграмм . Скалярные диаграммы построены по рабочим наборам таблицы истинности для М. 242 243 Скалярные диаграммы дают полное представление о системе уравнений. Подтвердим корректность метода на решении более прозрачной задачи. Пример 6. Дана система логических уравнений: x=y u=v Найти решение системы. Решение. M = (x = y)(u = v) = (xy + x’y’)(uv + u’v’) = u’v’(x’y’ + xy)+uv(x’y’ + xy) По алгоритму «Селигер» получим y(x,u,v) = x(u = v)+j(u v) Для перехода к y(x) достаточно в таблице истинности для полной единицы М вынести столбец значений y в графу функций и произвести синтез y(x) по вышеизложенным алгоритмам. В результате мы подтвердим исходное уравнение системы y(x) = x. Аналогично можно показать,что u(v) = v. Кстати, в данном случае есть более простой способ поверки решения системы: в уравнении y(x,u,v) = x(u = v)+j(u v) убрать «лишние» переменные, т.е. подставить u = v = 1. Получим y(x) = x(1 = 1)+j(1 1) = х+ j0 = х, что и требовалось доказать. Используя алгоритм «Селигер» или «Селигер-С», можно получить полную систему обратных функций для двоичной логики. В таблице приведена полная система функций двоичной логики. xy z0 z1 z2 z3 z4 z5 z6 z7 z8 z9 00 01 10 11 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 z1 0 1 0 1 0 z1 1 1 0 1 1 z1 2 1 1 0 0 z1 3 1 1 0 1 z1 4 1 1 1 0 z1 5 1 1 1 1 Перестановкой столбцов у и z исходной таблицы строим таблицу истинности для полной системы обратных функций. 243 244 xz y0 y1 y2 y3 y4 y5 y6 y7 y8 y9 00 01 10 11 I J I J i j 0 1 i j 1 0 i j j i 0 1 i j 0 1 0 1 0 1 1 0 0 1 j i 1 0 i j 1 0 0 1 y1 0 1 0 1 0 y1 1 1 0 j i y1 2 j i i j y1 3 j i 0 1 y1 4 j i 1 0 y1 5 j i j i Из таблицы обратных функций получаем полную симметричную систему обратных функций y = f1(x,z),а по алгоритму «Селигер» – y = f2(x): у0 = iz’+jz y0 = j у1 = xz+ix’z’+jx’z y1 = x+jx’ у2 = xz’+ix’z’+jx’z y2 = jx’ у3 = i(xz+x’z’)+j(xz’+x’z) y3 = ix+jx’ у4 = x’z+ixz’+jxz y4 = x’+jx у5 = z y5 = 1 у6 = xz’+x’z y6 = x’ у7 = x’z+ixz+jxz’ y7 = x’+ix у8 = x’z’+ixz’+jxz y8 = jx у9 = xz+x’z’ y9 = x у10= z’ y10 = 0 у11= x’z’+ixz+jxz’ y11 = ix у12= i(xz’+x’z)+j(xz+x’z’) y12 = ix’+jx у13= xz+ix’z+jx’z’ y13 = x+ix’ - импликация у14= xz’+ix’z+jx’z’ y14 = ix’ у15= iz+jz’ y15 = i Кстати, переход от левой системы уравнений к правой легко выполняется простой заменой z на 1 и z’ на 0. Аналогичные результаты мы получим, если таблицу прямых функций заменим скалярными диаграммами, а из них по алгоритму ТВАТ выведем соотношения y = f(x). Самой примечательной из полученных функций является y13 = x+ix’ – импликация. Из этого выражения легко просматривается физический смысл импликации: y обязательно истинно, если истинно x, но иногда y истинно даже при ложном х. Решая 1-ю задачу Порецкого, мы заметили аналогию между рекурсивным вхождением функции и комплементарным значением i. Резонно предположить, что такая аналогия существует между комплементарным j и рекурсивным значением инверсии функции. Проверим это предположение на полученных одноаргументных функциях и убедимся в их обратимости с помощью формулы эквивалентности. 0) (y = j) (y = y') M = (y=y') = yy'+y'y = 0 1) (y = x+jx') (y = x+x'y') = (y = x+y') M = (y=x+y') = y(x+y')+y'(x+y')' = xy+y'x'y = xy 2) y = jx' x'y' M = (y=x'y') = yx'y'+y'(x'y')' = y'(x+y) = xy' 3) y = ix+jx' xy+x'y' M = (y=xy+x'y') = y(xy+x'y')+y'(xy'+x'y) = xy+xy' = x 4) y = x'+jx x'+xy' = x'+y' 244 245 M = (y=x'+y') = y(x'+y')+y'(x'+y')' = x'y 5) y = 1 M = (y=1) = y&1+y'&0 = y 6) y = x' M = (y=x') = xy'+x'y 7) y = x'+ix x'+xy = x'+y M = (y=x'+y) = y(x'+y)+y'(x'+y)' = y+xy' = x+y 8) y = jx xy' M = (y=xy') = yxy'+y'(xy')' = x'y' 9) y = x M = (y=x) = x'y'+xy 10)y = 0 M = (y=0) = y&0+y'&1 = y' 11)y = ix xy M = (y=xy) = yxy+y'(xy)' = xy+y' = x+y' 12)y = ix'+jx x'y+xy' M = (y=x'y+xy')=y(x'y+xy')+y'(x'y'+xy)=x'y+x'y' = x' 13)y = x+ix' x+x'y = x+y M = (y=x+y) = y(x+y)+y'(x+y)' = y+x'y' = x'+y 14)y = ix' x'y M = (y=x'y) = yx'y+y'(x'y)' = x'y+y' = x'+y' 15)y=i y M = (y=y) = y&y+y'&y' = y+y' = 1 После обращения были получены все 16 прямых функций от двух аргументов без какого-либо искажения. Это подтверждает правильность всех алгоритмов решения логических уравнений и корректность комплементарной логики. А нельзя ли найти решение поставленной задачи, не прибегая к 4-значной логике? Оказывается, можно. Автором разработан алгоритм «Волга», опирающийся только на булеву алгебру при неявном использовании 4-значной комплементарной логики. Алгоритм «Волга» решения уравнений в двоичной логике. 1. Привести систему уравнений к нулевому виду. 2. Заполнить карту Карно нулями в соответствии с термами левых частей исходной системы уравнений, а в оставшиеся клетки вписать единицы. Эти единичные термы представляют собой СДНФ полной единицы системы. Минимизация СДНФ желательна. 3. Построить по СДНФ сокращённую (только для единичных термов) таблицу истинности уравнения полной единицы и выписать из неё все значения входных и выходных переменных в виде частной таблицы истинности для искомой функции. 4. Если на каком-либо наборе функция Y принимает как 0, так и 1, то присвоить ей значение Y. Если существуют наборы, на которых функция Y не определена, то на этих наборах искомой функции присвоить её инверсное значение, т.е. Y’. 5. Произвести минимизацию полученного выражения. 6. Произвести проверку рекурсивного выражения на соответствие его полной единице системы для задействованных аргументов, т.е. выполнить проверку равносильности произведённых преобразований. 245 246 Алгоритмы «Селигер» и «Волга» разработаны для решения уравнений, представленных в виде произведения многочленов. Если уравнение задано в виде СДНФ, то пп. 1 – 2 следует опустить. Выводы. 1. Простота метода, заложенного в алгоритме «Селигер», позволяет решать логические уравнения от большого числа переменных. 2. Минимизация логических функций в 4-значной комплементарной логике несущественно отличается от традиционных методов двузначной логики. 3. Парные термы для равносильных преобразований определяются набором термов, полученных на основе применения формулы эквивалентности к исходному логическому уравнению. 4. Применение метода при выводе обратных логических функций показало, что однозначное решение для двоичных аргументов может быть получено лишь в комплементарной логике. Троичная и тем более двоичная логики не годятся для решения логических уравнений. 5.Впервые получены все 16 обратных логических функций для двух аргументов. 6. Комплементарная логика при аппаратной реализации позволяет значительно упростить решение проблемы самодиагностирования вычислительной техники: например появление j на любом выходе может свидетельствовать о сбое или отказе. 246 247 Заключение. Подводя итог вышеизложенному, необходимо отметить следующее. Никакое образование немыслимо без изучения логики. Этот предмет в качестве основного впервые ввёл в гимназиях и Академии великий русский учёный М.В. Ломоносов. С тех пор логику в обязательном порядке изучали в гимназиях России и по указанию Сталина в 1946-1957 гг. в школах СССР. В связи с этим удивляют безграмотность и бестолковость современной математики. Перечислим основные недостатки классической логики. 1. Классическая логика не использует минимизацию логических функций с помощью карт Карно в том числе и в связи с незнанием алгоритмов, разработанных автором. Карты Карно – необходимейший и обязательный инструмент логика. 2. Классическая логика проявляет невежество при доказательстве законов логики суждений, поскольку не применяет аналитических методов, что катастрофически сужает круг рассматриваемых задач. 3. Отсутствие аналитического представления силлогистических функторов лишает фундамента логику предикатов. 4. Все законы и правила силлогистики либо некорректны, либо никчёмны по своей сути, поскольку в них не учитывается влияние универсума и конкретного содержания терминов. 5. Все фигуры и модусы силлогистики никчёмны, поскольку нельзя анализировать и синтезировать силлогизмы в общем виде без рассмотрения конкретного базиса, универсума и содержания каждого термина. 6. Классическая силлогистика оперирует лишь функторами Axy, Exy, Ixy, Oxy и не охватывает подавляющее большинство суждений любого другого типа. 7. Функтор Oxy является не только лишним, но и некорректным. 8. В классической логике до сих пор не решена проблема единичного множества. 9. Нет окончательного результата в проблеме решения логических уравнений и в синтезе обратных логических функций. 10. Искореняется всякое мышление. 11. В связи с вышеперечисленным студенты и преподаватели обречены на унылую бестолковую зубрёжку и не умеют решать серьёзные задачи логики. Приведём основные результаты, полученные при создании Русской логики. 1. Создана графическая алгебра логики [29]. 2. Разработаны графические методы минимизации логических функций для большого числа аргументов с помощью карт Карно(алгоритм «НИИРТА») [13]. 3. Создана 4-значная комплементарная логика и её алгебра с методами минимизации комплементарных функций [17]. 4. Разработаны простые методы решения логических уравнений (алгоритм «Селигер») на основе комплементарной логики [17]. 5. Разработан метод проверки решений логических уравнений, построенный на восстановлении полной единицы системы М на основе функции равнозначности. 247 248 6. Применение алгоритма «Селигер-С» при выводе обратных логических функций показало, что однозначное решение для двоичных аргументов может быть получено лишь в комплементарной логике [17]. 7. Впервые получены все 16 обратных логических функций для двух аргументов, в том числе функции логического вычитания и деления [27]. 8. Комплементарная логика при аппаратной реализации позволяет значительно упростить решение проблемы самодиагностирования вычислительной техники: например появление j на любом выходе может свидетельствовать о сбое или отказе [26]. 9. Синтезированы методы нахождения парных термов для равносильных преобразований логических равенств [26]. 10. Предложен простой математический метод анализа и синтеза законов логики суждений (алгоритм «Импульс») [28]. 11. Предложены скалярные диаграммы, позволившие формализовать силлогистику и дать графическую интерпретацию алгебры логики [19]. 12. Впервые создан аналитический базис силлогистики и определены его разновидности: русский, аристотелевский, базис Васильева и т.д. [18] 13. Впервые показано, что даже общие суждения имеют неоднозначную структуру и аналитическое описание [16]. 14. Впервые представлено все многообразие базиса частноутвердительного суждения и дано его аналитическое представление [28]. 15. Впервые найдены аналитические выражения для всех частноутвердительных суждений, удовлетворяющих критерию Васильева [29]. 16. Предложен простой и надежный способ графической и аналитической проверки силлогизмов и синтеза заключений для любых базисов (алгоритмы «Осташ», «ИЭИ» и «ТВАТ») [28]. 17. Применение предложенного метода избавляет от необходимости запоминания множества логических правил и законов. 18. Руская логика оперирует не только функторами Axy, Exy, Ixy, но и суждениями любого типа [24]. 19. Впервые аналитически описан базис логики Аристотеля-Жергонна. Впервые на основе базиса Аристотеля-Жергонна разработана силлогистика, существенно отличающаяся от классической [27]. 20. Впервые проверены все 64 модуса силлогистики Аристотеля-Жергонна. Доказано, что многие «правильные» модусы Аристотеля, в том числе и модус AAI 4-й фигуры, не корректны [18]. 21. Впервые доказано, что силлогистика Аристотеля-Жергонна не укладывается в прокрустово ложе 19 «правильных» модусов [18]. 22. Разработаны графоаналитический алгоритм «Осташков» синтеза полисиллогизмов и графический алгоритм «Суздаль» синтеза соритов [29]. 23. Разработан графический алгоритм «Редан» синтеза недостающей посылки. 24. Доказано, что ни силлогистика Аристотеля, ни силлогистика АристотеляЖергонна не имеют никакого отношения к логике здравого смысла [30]. 25. Впервые обнаружена и учтена при синтезе силлогизмов зависимость заключения от объёма универсума и содержания терминов [29]. 26. Впервые решена проблема единичного множества в силлогистике [19]. 27. Доказано, что все 4 классических правила посылок ошибочны [29]. 28. Показано, что фигуры и модусы не имеют смысла, поскольку не учитывают универсум и конкретное содержание посылок [30]. 248 249 29. Отмечено, что аналитическое представление силлогистических функторов Axy, Exy впервые дано русским логиком П. С. Порецким, чего до сих пор не поняла мировая наука [29]. 30. Впервые дан анализ ошибок П.С.Порецкого при решении логических уравнений. 31. Показано, что общеразговорная логика не является двоичной [17]. 32. Впервые показано, что вся силлогистика является вероятностной, поскольку как правило заключения получаются многовариантными [29]. 33. Разработаны методы определения вероятностных характеристик многовариантных заключений [30]. Подводя итог, нельзя не придти к выводу, что впервые в мире создана истинно математическая логика, не противоречащая здравому смыслу. Фактически родилась совершенно новая наука, сделан первый шаг в осуществлении именно научной, а не просто очередной научно-технической революции, поскольку созданы предпосылки для рационализации труда учёных. Впервые в мире реализованы мечты Аристотеля и Лейбница. Их чаяния воплощены в России. Требуется скорейшее внедрение русской логики в школьное и вузовское преподавание для искоренения недостатков и ошибок классической логики, а также в связи с тем, что логика составляет фундамент искусственного интеллекта, главного стратегического научного направления 3-го тысячелетия, по уровню развития которого судят о научном потенциале державы. Россия вновь вернула себе мировое лидерство в одной из самых важных математических наук. 249 250 ЧАСТЬ 3. Букварь разработчика цифровых устройств. Инженерные методы разработки цифровых устройств. Глава первая Инженерная комбинаторика. 1.1. Синтез комбинационных схем на мультиплексорах и ПЛИС. Мультиплексором называется такая комбинационная схема(КС), которая реализует функцию: Y = XiAi , где Xi - i - й входной сигнал, Ai - i - й адресный код. Мультиплексор коммутирует вход Xi на выход Y, если на адресном входе установлен код Ai . Если адресная шина мультиплексора является n - разрядной , то синтез КС по таблице истинности от (n+1) переменных не требует дополнительных элементов. При синтезе автомата для тайного голосования(задача 1 из раздела 1.3) были получены следующие функции адресных входов мультиплексора : A0 = 0; A1 = A2 = A3 = A4 = A5 = A6 = X4; A7 = 1. Удобнее и проще синтезировать КС на базе ПЛИС(программируемых интегральных схем). К их числу относятся программируемые логические матрицы(ПЛМ), программируемая матричная логика(ПМЛ), матрицы логических ячеек(МЛЯ) и перепрограммируемые постоянные запоминающие устройства(ППЗУ).Наиболее популярные ПЛИС: ПЛМ - К556РТ2 ПМЛ - К15556ХП4 МЛЯ - БИС фирм Xilinx, Altera ППЗУ - К155РЕ3,К556РТ4,К573РФ5, К573РФ8. Для ПЛМ, ПМЛ и МЛЯ требуется обязательная минимизация, для ППЗУ необходимо приведение функции к СДНФ. 250 251 Глава вторая. Триггеры Триггером называется логическое устройство с двумя устойчивыми состояниями. Выходной сигнал на выходе такого устройства зависит не только от входных сигналов , действующих в данный момент , но и от сигналов , воздействовавших в предыдущий момент времени. Существует несколько видов триггеров. Наиболее распространёнными из них являются SR- , D- , и JK- триггеры. 2.1 SR- триггеры. SR- триггер имеет 2 управляющих входа S и R. Если S = 1 , то выход триггера Q = 1 , если R = 1 , то Q = 0. Комбинация S = 1 и R = 1 для SR - триггера является запрещённой. На рисунках представлены две реализации SR - триггера и его условное обозначение. Схемы и обозначения SR-триггеров. При синтезе схем на ПЛИС используется САПР MAX+PLUS II, которая требует предварительной установки всех элементов памяти в строго определённое состояние. Для этого необходимо ввести хотя бы вход сброса. Простое решение этой проблемы выглядит так. 251 252 Полученный SR-триггер работает без замечаний, что видно из приведён- 252 253 ных диаграмм. Разумеется, нельзя подавать одновременно S=R=1: это приводит к самовозбуждению. Однако представленная схема обладает большой задержкой распространения сигнала. При построении схем с высоким быстродействием необходимо более компактное решение. Оно может быть таким. За быстродействие пришлось заплатить: инверсный выход триггера нельзя использовать в режиме сброса. Как и в первой схеме запрещается одновременная подача S=R=1. 253 254 2.2 D- триггеры. D- триггер при наличии разрешающего сигнала на тактовом входе устанавливается в состояние , соответствующее потенциалу на входе D. Таким образом , D- триггер является тактируемым элементом памяти. Тактирование может осуществляться как потенциалом , так и фронтом (передним или задним). Триггер, тактируемый потенциалом, может изменить своё состояние только при наличии определённого потенциала на тактовом входе C. Триггер , тактируемый фронтом, меняет своё состояние только с приходом определённого фронта сигнала на тактовый вход C. На рисунках представлены тактируемые потенциалом и передним фронтом Dтриггеры и их условные обозначения, а также временные диаграммы работы. 254 255 Схема и условное обозначение тактируемого потенциалом D-триггера. Условное обозначение и диаграммы работы переднефронтового D-триггера 2.3 . JK- триггеры. JK- триггеры являются самыми сложными из рассмотренных элементов памяти. Они обладают большими функциональными возможностями. JK- триггеры могут быть тактируемыми и нетактируемыми. Универсальный JK- триггер может работать во всех режимах. Например, для перевода универсального JK- триггера в нетактируемый режим достаточно на вход C подать потенциал C = 1. На рисунке изображён тактируемый задним фронтом JK- триггер серии134 (1ТК343) и временные диаграммы его работы. Условное обозначение и диаграммы работы заднефронтового JK-триггера. 255 256 Работает JK- триггер следующим образом. При J=1 и K= 1 тактовый импульс переводит триггер в противоположное состояние (Qn = Qn-1’) . При J = 0 и K = 0 триггер сохраняет предыдущее состояние (Qn = Qn-1). При J = 1 и K = 0 Qn = 1 , при J = 0 и K = 1 Qn = 0. Работа любого триггера может быть однозначно описана с помощью таблицы переходов. Таблица переходов для SR-, D- и JK- триггеров. Вход 1 Вход 2 SR- триггер JK- триггер D- триггер 0 0 Qn-1 Qn-1 0 0 1 0 0 0 1 0 1 1 1 1 1 Qn-1’ 1 2.4 Анализ работы схем с памятью Анализ работы схем с памятью может быть графическим или табличным. Наиболее удобным является табличный метод анализа, так как он позволяет оторваться от принципиальной схемы устройства. Этот способ основан на описании функций управляющих входов , или функций возбуждения. Задача 12 Произвести анализ работы устройства, изображённого на рисунке, табличным способом. Схема устройства к задаче 12. Решение. Опишем функции возбуждения входов SR- триггера. S = E1(E1E2)’ = E1(E1’ + E2’) = E1E2’ R = E2(E1’ + E2’) = E1’E2 Зададим исходное состояние SR- триггера. Пусть Q0 = 0. Далее будем изменять входные сигналы E1 и E2 , определять функции S и R , а по ним находить Qn. Процесс анализа отражён в таблице. E1 E2 0 0 0 1 S=E1E2’ 0 0 R=E1’E2 0 1 Qn 0 0 256 Примечание Q1=Q0 , т.е Qn=Qn-1 Q2=0 257 1 0 1 1 1 0 0 0 1 1 Q3=1 Q4=Q3 , т.е. Qn=Qn-1 Даже простой пример показывает,насколько неудобен ручной анализ работы схем с памятью.В главе «Конечные автоматы» мы познакомимся с более эффективным методом. Однако не нужно забывать, что существует множество САПР, позволяющих проводить анализ работы не только цифровых, но и аналоговых схем. 257 258 Глава третья РЕГИСТРЫ И СЧЁТЧИКИ Наиболее часто в схемах с памятью используются такие функциональные узлы, как регистры и счётчики. Регистры разделяются на два типа: параллельные (регистры памяти) и последовательные (регистры сдвига). Регистры могут быть реализованы на любых триггерах. 3.1 Регистры памяти. Эти регистры предназначены для хранения информации, представленной в виде двоичного кода. Регистры памяти осуществляют параллельную запись всего кода с приходом тактового импульса. Записанная информация хранится до прихода следующего тактового импульса. На рисунке представлен один из вариантов регистра памяти, реализованного на D- триггерах, тактируемых задним фронтом. Этот регистр предназначен для записи и хранения 4разрядного кода X. С приходом заднего фронта тактовой частоты f т регистр запишет код X и будет хранить его до тех пор, пока код X не изменит своей величины. Но это изменение кода X пройдёт на выход регистра только с приходом заднего фронта fт. Схема параллельного регистра. 3..2. Регистры сдвига. Сдвиговые регистры широко используются в цифровой технике, в частности для преобразования последовательного двоичного кода в параллельный или наоборот. На рисунке изображён сдвиговый регистр , реализованный на JK- триггерах. Схема регистра сдвига. 258 259 Благодаря последовательной схеме соединения разрядов регистра каждый задний фронт fт устанавливает последующий триггер в состояние, в котором до этого находился предыдущий, осуществляя сдвиг информации на разряд вправо. На следующем рисунке представлена ИС типа 533ИР1, которая реализует функции как 4-х разрядного регистра памяти, так и функции регистра сдвига в зависимости от значения сигнала на входе выбора режима V2: при V2=0 - режим сдвига, при V2=1 - режим параллельной записи. На рисунке : C1- тактовый вход продвижения информации , поступающей по входу V1. C2- тактовый вход параллельной записи. Если смена режима для 533ИР1 происходит в процессе работы, то для обеспечения безошибочной работы регистра необходимо выполнить условие C1’C2’=1. Условное обозначение универсального регистра. 259 260 3..3. Двоичные счётчики. Двоичные счётчики могут быть синхронными и асинхронными . Двоичный асинхронный счётчик может быть построен последовательным соединением счётных триггеров, или JK- триггеров , у которых J=K=1. Асинхронный и синхронный двоичные счётчики. Недостатком асинхронных счётчиков является задержка в установлении соответствующего кода после прихода счётного импульса. Эта задержка, в частности, может приводить к появлению ложных кодов на выходе счётчика и сбою дешифратора. Например, после кода 011 на выходе счётчика должен появиться код 100 (коды записаны в порядке Q3Q2Q1). В асинхронном счётчике при последовательном срабатывании триггеров код будет меняться следующим образом 011-010-000-100, т.е. во время переходного процесса появляются два ложных кода 010 и 000. В двоичных синхронных счёичиках срабатывание триггеров происходит одновременно или почти одновременно , так как все тактовые входы триггеров запараллелены . Временная диаграмма двоичного счётчика представлена на рисунке. 260 261 Диаграммы работы двоичного счётчика. Для построения синхронных счётчиков с коэффициентом деления K=2n используется n JK- триггеров, функции возбуждения которых определяются соотношением m-1 Jm=Km=& Qi , i=1 где Jm, Km - соответствующие входы JK- триггера, на котором реализован m-ый разряд счётчика. 261 262 3.4 . Десятичные счётчики. Десятичные счётчики строят на основе четырёхразрядных двоичных. Для понижения коэффициента пересчёта четырёразрядного счётчика с 16 до 10 вводят различные логические связи. В зависимости от вида логической связи одним и тем же десятичным числам в различных счётчиках могут соответствовать различные четырёхразрядные двоичные коды. В этом случае говорят, что счётчики работают в различных двоично-десятичных кодах. Наиболее часто в счётчиках используется взвешенное кодирование. Если любое десятичное число А может быть выражено в виде суммы n А = a iQ i , i=0 где Qi - двоичные числа (0 или 1) в соответствующих разрядах кода, аi - некоторые постоянные числа (веса разрядов), то кодирование, построенное на данном соотношении, называется взвешенным. Чаще других употребляется двоично-десятичный код 8-4-2-1.Здесь и далее цифры 8, 4, 2, 1 обозначают веса разрядов двоично-десятичного кода. Преимущество кода в его одназначности. Другие же коды неодназначны. Например, в коде 4-2-2-1 десятичное число 4 можно представить как 1000 или 0110, поэтому существуют таблицы, однозначно закрепляющие за каждым кодом соответствующее десятичное число . В таблице приводятся наиболее употребительные двоично-десятичные коды. Код с избытком 3 является самодополняющимся. Для этих кодов характерно то, что при их поразрядном инвертировании получается код числа, дополняющее данное до девяти. Это свойство кода удобно при построении цифровых приборов, измеряющих знакопеременные величины. Q4Q3Q2Q1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 код 8-4-2-1 0 1 2 3 4 5 6 7 8 9 - Невзвешенный код 0 1 2 3 4 5 - 262 Код с избытком 3 0 1 2 3 4 5 6 7 263 1 1 1 1 1 0 1 1 1 1 1 0 0 1 1 1 0 1 0 1 - 8 9 6 7 263 8 9 - 264 3.5. Элементная база для построения счётчиков. В настоящее время промышленность выпускает ИС, реализующие асинхронные двоично-десятичные счётчики (533ИЕ2), счётчики-делители на 12 (533ИЕ4) и делитель на 16 (533ИЕ5). 533ИЕ2 имеет коэффициент деления К = 2 х 5, для 533ИЕ4 К = 2 х 6, для 533ИЕ5 К = 2 х 8. На рисунке в поле изображения микросхемы использованы следующие обозначения: С1, С2 - тактовые входы соответственно для 1-го и 2-го разрядов; R0 - вход обнуления; R9 - вход установки счётчика в состояние 1001. Для 533ИЕ4 выходы с весами 2, 4, 6, 12 обозначают выходы соответственно 1-го, 2-го, 3-го и 4-го разрядов, для счётчиков 533ИЕ2 и 533ИЕ5 выходы с весами 1, 2, 4, 8 обозначают выходы соответственно 1го, 2-го, 3-го и 4-го разрядов. Двоичный и десятичный счётчики изменяют свои состояния в соответствии с натуральной последовательностью кодов. Счётчик 533ИЕ4(133ИЕ4) изменяет своё состояние в соответствии со следующей последовательностью десятичных кодов: 0-1-2-3-4-5-8-9-10-11-12-13.Это связано с тем, что счётчик построен по схеме соединения делителей с коэффициентами деления 2 x 3 x 2 вместо 2 x 2 x 3 . Такую архитектуру можно объяснить лишь безграмотностью разработчиков. Условные обозначения ИС асинхронных счётчиков 133 серии. 264 265 Глава четвёртая СИНТЕЗ СЧЁТЧИКОВ Существует несколько методов синтеза счётчиков. Рассмотрим два из них. 4.1 Синтез счётчиков с использованием установочных входов. Суть этого метода заключается в том, что для построения счётчика с коэффициентом деления К используется n-разрядный двоичный счётчик (n=Ilog2KC), охваченный обратной связью, которая формируется с помощью сборки двоичного кода К и подаётся на установочные входы обнуления. Например, для построения счётчика с К=10 необходимо использовать 4-х разрядный двоичный счётчик, а на установочные R-входы подать набор (сборку) Q4Q3’Q2Q1’. Реализация этого счётчика изображена на рисунке. Синхронный двоичный счётчик. На схеме этого рисунка и в дальнейшем на все незадействованные входы микросхем подавать постоянный потенциал логической 1. Реализация асинхронного счётчика с К=10 на базе ИС 133ИЕ5 представлена на следующем рисунке. В этой схеме кроме сборки используется так называемый триггер-защёлка. Рекомендуется использовать его для надёжного 265 266 обнуления и для повышения помехозащищённости счётчика. В силу того, что при данном методе синтеза используется лишь часть состояний двоичного счётчика, сборка может быть отминимизирована. Например, для счётчика с К=10 сборка соответствует Q4Q2, для счётчика с К=9 - Q4Q1, с К=12 - Q4Q3, с К=11 - Q4Q2Q1. Схема десятичного счётчика на базе двоичного. Синтез многоразрядных счётчиков на базе стандартных ИС имеет некоторую специфику. При использовании 533ИЕ2(133ИЕ2) коэффициент деления представляется в двоично-десятичном коде и на его основе формируются обратные связи. Например, для К = 125 получаем 2/10 – код, равный 100100101. Это соответствует установочной функции Q1Q3Q6Q9. Для счётчика 533ИЕ4(133ИЕ4) необходимо представить коэффициент деления в 2/12 – коде с учётом специфики реализации архитектуры этой ИС. Синтез счётчика на базе ИС 533ИЕ5(133ИЕ5) наиболее прост: достаточно представить коэффициент деления в двоичном коде, чтобы получить установочную функцию. 266 267 Выводы и рекомендации Счётчики, реализованные с использованием установочных входов, обладают следующими недостатками: 1) низкая помехозащищённость по цепи обратной связи: если помеха вызовет сбой в этой цепи, то счётчик преждевременно обнулится; 2) при синхронной реализации из-за разброса параметров отдельных триггеров возможно появление ложных комбинаций, которые приведут к преждевременному обнулению счётчика (например, при переходе от кода 0111 к коду 1000 возможно кратковременное появление кода 1010, что приводит к обнулению счётчика с К=10). Неоспоримым преимуществом таких счётчиков является их простота. Рекомендуется применение их при построении счётчиков с переменным К, а также при синтезе синхронизаторов без жёсткой привязки фронтов импульсных последовательностей. Задание 5. а) Построить асинхронные делители частоты с использованием установочных входов : 5-1) К=12 на 533ИЕ5 5-2) К=8 на 533ИЕ2 5-3) К=80 на 533ИЕ2 б) Построить синхронные делители частоты с использованием установочных входов : 5-4) К=80 на JK-триггерах 533ТВ1 5-5) К=24 на JK-триггерах 134ТВ3. 267 268 4.2 Синтез счётчиков с использованием управляющих входов. Этот метод основан на использовании таблицы входов элементов памяти, которая может быть получена из таблицы переходов. По таблице входов можно определить, какие сигналы необходимо подать на управляющие входы, чтобы перевести элемент памяти из одного состояния в другое. Построим таблицу входов для JK-триггера. Из таблицы переходов следует, что для перевода триггера из состояния 0 в состояние 0 на JK-входы необходимо подать JK=00 или JK=01, т.е. для осуществления этого перехода состояние управляющего входа К безразлично. Условно операцию определения функций возбуждения для реализации перехода триггера из состояния 0 в состояние 0 можно записать так : JK = 00 + 01 = 0- . Для перевода JK-триггера из состояния 0 в состояние 1 на JK-входы необходимо подать комбинацию JK = 10 + 11 = 1- . Для перевода JK-триггера из 1 в 0 должна быть подана комбинация JK = 01 + 11 = -1 , а для перевода из 1 в 1 JK = 00 + 10 = -0 . Аналогично можно получить таблицу входов для SR-триггера и Dтриггера. Таблица входов для JK -, SR - и D -триггеров. Qn-1 0 0 1 1 5.2.1 Qn 0 1 0 1 J K 0 1 - 1 - 0 S R 0 1 0 0 1 - 0 D 0 1 0 1 Синтез синхронных счётчиков. Этот метод прекрасно изложен у Гутникова В.С. Для синтеза счётчика необходимо построить совмещённую таблицу состояний и входов счётчика. Проследим этот процесс на примере синтеза синхронного делителя на 5 (счётчик с К=5). Совмещенная таблица счетчика с К = 5 N состояния 0 1 2 3 4 Q3Q2Q1 000 001 010 011 100 J3K3 0001-1 268 J2K2 01-0 -1 0- J1K1 1-1 100- 269 При переходе из 0-го состояния в 1-ое триггер 1-го разряда переходит из состояния 0 в состояние 1. Для осуществления этого перехода по таблице входов для JK-триггера определяем что должны быть поданы J1=1, K1=-, т.е. уровень сигнала К1 не влияет на выполнение перехода из 0 в 1. Для 2-го и 3-го разрядов переход из 0-го состояния в 1-ое требует перевода триггеров 2-го и 3го разрядов из состояния 0 в состояние 0, что соответствует J2K2 = J3K3 = 0-. Аналогично заполняются строки таблицы для 1-го, 2-го и 3-го состояний. Для перехода из 4-го состояния в начальное (нулевое) необходимо, чтобы 1-ый и 2-ой триггеры сохранили на своих выходах 0, а 3-ий перешёл из состояния 1 в состояние 0. Для этого необходимо обеспечить J1K1 = J2K2 = 0-, a J3K3 = -1. Далее совмещённая таблица интерпретируется как таблица истинности для булевых функций J1, K1 , J2, K2, J3, K3, зависящих от входных переменных Q3Q2Q1, и синтез счётчика сводится к синтезу булевых функций возбуждения J1, K1, J2, K2, J3, K3. После минимизации функций возбуждения получаем результат : J3 = Q2Q1 J2 = K2 = Q1 J1 = Q3’ K3=К1 = 1 В соответствии с этим результатом строим счётчик. Счётчики можно строить на различных элементах памяти, при этом нужно использовать соответствующую таблицу входов. 269 270 Синхронный делитель на 5. Задача 13. Построить счётчик с К=3 на D-триггерах. Решение Строим совмещённую таблицу и синтезируем функции возбуждения D2 и D1. Q2 0 0 1 Q1 0 1 0 D2 = Q1 D2 0 1 0 D1 1 0 0 D1 = Q2’Q1’ Cхема счётчика представлена на рисунке. Синхронный делитель на 3. Весьма важным моментом является кодирование состояний счётчика. При оптимальном кодировании удаётся получить наиболее компактную реализацию счётчика. Вопросы оптимального кодирования состояний счётчика полностью не решены. Алгоритмы, предлагаемые у Баранова С.И. для оптимального кодирования состояний микропрограммных автоматов, далеко не всегда дают положительные результаты. Рассмотрим влияние кодирования состояний счётчика на примере синтеза делителя на 5. Задача 14 Построить счётчик с К=5 при невзвешенном кодировании состояний на 270 271 JK-триггерах. Решение. Строим совмещённую таблицу и синтезируем функции возбуждения. Q3Q2Q1 000 001 101 111 110 J3K3 01-0 -0 -1 J2K2 001-0 -1 J1K1 1-0 -0 -1 0- K3 = K2 = Q1’ J2 = Q3 ; J3 = Q1 J1 = Q2’ ;K1= Q2 Делитель на 5 при невзвешенном кодировании. Из сравнения рисунков видно, что получившийся счётчик имеет оптимальную структуру. Можно построить, как минимум, ещё 3 различных варианта делителей на 5, имеющих минимальную реализацию. Одна из таких реализаций приводится у Гутникова В.С. Рассмотренный делитель на 5 был синтезирован с применением так называемого соседнего кодирования, которое считается оптимальным для построения конечных автоматов на элементах памяти с раздельными входами, типа JK- или SR-триггеров. Если для построения синхронного счётчика с К=12 применить соседнее кодирование 0000, 0001, 0011, 0010, 0110, 1110, 1010, 1011, 1001, 1000, 1100, 0100, то коэффициент сложности счётчика, построенного на JK-триггерах, составит 26, а при использовании взвешенного двоичного кодирования ( 0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010,1011) коэффициент сложности схемы будет равен 8. Практика построения синхронных счётчиков с большими коэффициентами пересчёта показала, что наилучшие результаты даёт взвешенное двоичное кодирование состояний счётчика. Методы синтеза счётчиков полностью пригодны для разработки схем различных синхронизаторов и распределителей импульсов, так как и те, и другие являются счётчиками с невзвешенным кодированием состояний. Пример синтеза синхронизатора, используемого в цифровом фильтре, рассмотрен в задаче 11, где Q10 - Q12 - выходы синхронизатора, а Q1 - Q9 - выходы вспомогательного счётчика с К=320. Функции возбуждения этого счётчика 271 272 не представляют интереса, так как счётчик состоит из известных делителей частоты на 32 и на 10. 272 273 4.2.2 . Синтез асинхронных счётчиков. Синтез асинхронных счётчиков возможен при выполнении следующих условий: 1) если хотя бы один разряд обеспечивает формирование заднего фронта для всех тех случаев, когда другой разряд изменяет своё состояние; 2) задержка, вносимая самой длинной цепью делителя от тактового входа одного разряда до входа возбуждения другого, должна быть меньше периода тактовой частоты последнего из указанных разрядов. Синтез асинхронных счётчиков разбивается на 4 этапа : 1) находится совокупность разрядов, в которой один из разрядов мог бы формировать тактовую частоту для других (этот разряд будем называть тактовым); 2) для тактируемых разрядов из этой совокупности совмещённая таблица для функций возбуждения заполняется только по строкам, соответствующим заднему фронту тактового разряда, а в остальных строках ставится прочерк; 3) д ля разрядов, на тактовый вход которых поступает основная частота f, синтез осуществляется по синхронному методу; 4) определяется граничная частота fгр для данной реализации. Задача 15 Построить асинхронный делитель на 6. Решение. Строим совмещённую таблицу. Q3Q2Q1 000 001 010 011 100 J3K3 -0-1-- J2K2 -1--1 -- J1K1 1-1 1-1 1- 1. Разряды 1, 2, и 3 образуют совокупность, в которой 1-ый разряд может формировать тактовую частоту для 2-го и 3-го. 2. Заполняем совмещённую таблицу в соответствии со 2-м и 3-м этапами синтеза асинхронных счётчиков. 3. Определяем функции возбуждения : J3=Q2, J2=Q3’, J1=K1=K2=K3=1 , по которым строим счётчик. 4. Определяем граничную частоту, считая, что счётчик реализован на триггерах 134ТВ3 с задержкой =100 нс. Наиболее длинная цепь от выхода Q2 до выхода J2. Задержка по этой цепи составляет 100 нс. Граничная тактовая частота для 2-го и 3-го разрядов равна 1/100 нс = 10 Мгц. Приведённая к тактовому входу 1-го разряда fгр= 20 Мгц. Реальная граничная частота будет не более 1,5 Мгц, так как это частотный предел ИС серии 134. 273 274 Асинхронный делитель на 6. Выводы и рекомендации. 1. Счётчики, реализованные с использованием управляющих входов, не застрахованы от появления ложных выходных наборов, но это никогда не приводит к сбою в работе счётчиков, так как изменение состояния счётчиков происходит при установившемся значении выходных наборов. 2. Синхронные счётчики указанного класса позволяют реализовать импульсные последовательности с высокой точностью привязки фронтов. 3.Если высокая степень точности привязки импульсной последовательности не требуется, то предпочтительнее асинхронная реализация счётчиков. 4. Как синхронные, так и асинхронные счётчики с использованием управляющих входов максимально защищены от сбоев по установочным входам. Задание 6. Построить синхронные и асинхронные делители частоты с использованием управляющих входов на JK - и D -триггерах : 6-1) К = 12 6-2) К = 14 6-3) К = 24 6-4) К = 25 4.3. Реверсивные счётчики Реверсивные счётчики (РС) могут быть асинхронными и синхронными. И те и другие могут быть как двоичными так и с произвольным коэффициентом пересчёта К. На рисунке показана схема асинхронного двоичного РС без зоны нечувствительности,т.е. такого РС, который с приходом каждого тактового импульса изменяет своё состояние. 274 275 Асинхронный и синхронный реверсивные счётчики. Изменение направления счёта в РС происходит в зависимости от величины сигнала N. При N = 1 счётчик считает в прямом направлении, при N = 0 - в обратном. Асинхронный РС практически не может быть использован, так как при изменении направления счёта может изменяться код, записанный в РС. Например, при переходе от суммирования к вычитанию, если предыдущий триггер находится в состоянии 1, то сигнал на входе последующего триггера изменится с 1 на 0, что приведёт к его опрокидыванию. Этого недостатка лишены синхронные счётчики, так как они изменяют своё состояние по заднему фронту тактовой частоты,и изменение N в промежутке между фронтами (т.е. на протяжении периода тактовой частоты) не влияет на состояние РС. Пример синхронного двоичного РС приводится на рисунке. Построение РС без зоны нечувствительности с произвольным К осуществляется методом синтеза счётчиков с использованием управляющих входов. Аналогично можно строить РС с зоной нечувствительности. Задача 16. Построить синхронный РС без зоны нечувствительности с К=3 на JKтриггерах. Решение. Строим совмещённую таблицу и синтезируем функции возбуждения J2, K2, J1, K1. Код состоян. Q2Q1 0 0 0 1 N=1 J2K2 01 1- N=0 J1K1 1-1 275 J2K2 10- J1K1 0-1 276 Код состоян. Q2Q1 1 0 N=1 J2K2 -1 N=0 J1K1 0- J2K2 -1 J1K1 1- С помощью карт Карно получаем : J2 = Q1’N’ + Q1N = (Q1N’+Q1’N)’ J1 = Q2’N + Q2N’ = (Q2N+Q2’N’)’ Схема счётчика и синтез функций возбуждения представлены на рисунке. Синхронный реверсивный счётчик с К=3 без зоны нечувствительности. Задача 17 Построить синхронные РС с зоной нечувствительности на JK-триггерах. К=3. При R1R2=10 РС должен считать в прямом направлении, при R1R2= 01 - в обратном, при R1R2=00 РС не изменяет своего состояния, ситуация R1R2=11 является запрещённой. Решение. Строим совмещённую таблицу и синтезируем функции возбуждения. Код сост. Q2Q1 0 0 0 1 1 0 R1R2 = 10 J2K2 J1K1 011-1 -1 0- R1R2 = 01 J2K2 J1K1 100-1 -1 1- R1R2 = 00 J2K2 J1K1 000-0 -0 0- J2’ = Q1’R2’ + Q1R1’ J1’ = Q2’R1’ + Q2R2’ K2’= R1*R2 K1’= R1’R2’ В этой задаче минимизацию функций вюзбуждения удобнее проводить по нулям, т.е. получать минимальную форму инверсии функции возбуждения. В этом случае удаётся применить ИС типа 2И-2ИЛИ-НЕ, что уменьшает количество корпусов ИС и снижает число связей между элементами. Задание 7. Построить РС без зоны нечувствительности и с зоной нечувствительно- 276 277 сти на JK-, D - и тактируемых SR - триггерах : 7-1) К = 10 7-2) К = 12 7-3) К =16 4.4.Распределители импульсов. В инженерной практике большое значение имеет синтез распределителей импульсов (РИ). Под распределителем импульсов понимается устройство, работа которого описывается периодической логической функцией вида Qi = Fi(t) , где Qi – i –выход РИ, t – время. Самым простым решением задачи будет построение РИ на основе тактового генератора (ТГ),счётчика и дешифратора. Однако полученный РИ имеет ряд недостатков. Одним из них является искажение выходной последовательности в результате возникновения гонок. Избавиться от них можно, введя дополнительный регистр на выходе дешифратора. Однако, в случае построения быстродействующих РИ требуется минимальное запаздывание, а дополнительный регистр противоречит предъявленным требованиям. Выходом из сложившейся ситуации служит синтез синхронного РИ в соответствии с приводимым алгоритмом. Алгоритм излагается параллельно с синтезом конкретного РИ. Пусть необходимо построить РИ, имеющий две выходные последовательности Q1,Q2 с периодом Тс, представленные на рисунке. Алгоритм синтеза РИ. 1.Определить величину одной дискреты времени D как наибольший общий делитель (НОД) из длительностей импульсов Т1 и интервалов между ними Т0 для всех Qi: Т1: 40,20,30,20 (мкс) Т0: 20,20,20,30 (мкс). Из исходных данных получим: D = НОД(Т1,Т0) = НОД(40,20,30,20,20,20,20,30) = 10мкс. 2.Импульсные последовательности Qi разбить на отрезки величиной D. 277 278 Для каждого j – го отрезка записать код вида (Q1*Q2* . . . Qm*)j, где m – количество выходов РИ. Среди m выходных последовательностей не должно быть взаимно инверсных, т. к. инверсные последовательности получаются автоматически на инверсных выходах элементов памяти. Здесь символ * свидетельствует о том, что переменная может входить как в прямом, так и в инверсном значении. В примере получены коды Q1*Q2*: 11,11,11,10,00,01,11,10,00,00. 3. В множестве кодов вида (Q1*Q2* . . . Qm*) подсчитать максимальное число К одинаковых кодов. Если одинаковых кодов нет, перейти к п. 6. В нашем примере чаще других повторяется код 11, К = 4. 4. Определить общее количество элементов памяти N по формуле N = m + ] log2K[ Запись ] log2K[ означает, что, если двоичный логарифм является дробной величиной, то результат округляется до ближайшего большего целого числа. N = 2 + ]log2 4[ = 2 + 2 = 4 5. Доопределить m – разрядные коды (Q1*Q2* . . . Qm*) до N – разрядных таким образом, чтобы среди них не было одинаковых. Q1Q2Q3Q4: 1100,1101,1110,1000,0000,0100,1111,1001,0001,0010. 6. Используя аппарат синтеза синхронных счётчиков, построить РИ. 278 279 4. 5. Cчётчики на сдвиговых регистрах. При синтезе синхронных счётчиков или РИ на базе ПЛИС возникает необходимость построения цифровых устройств с минимальной комбинационной частью за счёт некоторого увеличения количества элементов памяти. Поскольку, например, в МЛЯ Xilinx количество D-триггеров исчисляется сотнями, то потеря даже десяти триггеров не станет ощутимой. Используя метод Девяткова В. В. , можно построить синхронный стётчик с произвольным коэффициентом деления на сдвиговом регистре(ССдР). Особенностью построения ССдР является то, что синтезу подлежит функция возбуждения лишь одного разряда вне зависимости от коэффициента пересчёта. Алгоритм синтеза ССдР. 1.Выполнить П-разбиение всех состояний счётчика. 2.Записать это разбиение в виде столбца состояний младшего разряда счётчика. 3. Произвести сдвиг этого столбца вниз на одну позицию и записать его в виде столбца состояний очередного разряда счётчика. 4. Сравнить построчно полученные коды состояний счётчика. Выполнять операции 3 и 4 до полного развязывания кодов состояний. Пример. Построить ССдР с коэффициентом пересчёта К=17. Решение. 1.Выполняем П-разбиение 17 состояний ССдР, распределив их между двумя группами: 0-группа - 1, (4,5,6), (11,12,13,14,15); 1-группа - (2,3), (7,8,9,10), (16,17). №состояни я 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Q0Q1Q2Q3Q4Q5 8-й код D0 011000 101100 110110 011011 001101 000110 100011 110001 111000 111100 011110 001111 000111 000011 000001 30 54 66 33 15 06 43 61 70 74 36 17 07 03 01 1 1 0 0 0 1 1 1 1 0 0 0 0 0 1 279 280 16 17 100000 110000 40 60 1 0 Из таблицы истинности получаем: D0 = Q3’Q4’Q5 + Q2’Q0’Q5’ + Q2Q3’Q4’ + Q0Q1’ D1 = Q0 D2 = Q1 D3 = Q2 D4 = Q3 D5 = Q4 Комбинационная часть ССдР получилась минимальной за счёт увеличения разрядности регистра на единицу. Рутинная операция развязывания состояний ССдР требует тем не менее внимания, поэтому её вместе с Празбиением и формированием таблицы истинности имеет смысл реализовать в виде простенькой программы. program ssr; uses crt; type vect=array[1..2048] of word; var v0,v1,v :vect; i,j,k,n:integer; {---------------------------------------------------------} procedure pirazb(k:integer;var v0:vect); {Пи-разбиение для младшего разряда счетчика с коэффициентом деления k} var i,j,ik,jk,l:integer; begin l:=1;ik:=1;jk:=2; repeat for i:=ik to ik+2*(l-1) do v0[i]:=0; for j:=jk to jk+2*l-1 do v0[j]:=1; ik:=jk+2*l; jk:=ik+2*l+1; l:=l+1; until (i>k) or (j>k); end; {----------------------------------------------------------} procedure sdwig(n:integer;var v0,v1:vect); {Сдвиг исходного вектора вниз на один разряд} var i,v0n:integer; begin for i:=n downto 2 do v1[i]:=v0[i-1]; v1[1]:=v0[n]; end; {----------------------------------------------------------} procedure kley(n:integer;var v0,v1,v:vect); 280 281 var i:integer; begin for i:=1 to n do v[i]:=v1[i]+2*v0[i]; end; {----------------------------------------------------------} function razwyaz(k:integer;var v:vect):integer; label 1; var i,j:integer; begin razwyaz:=1; for i:=1 to k-1 do for j:=i+1 to k do if v[i] = v[j] then begin razwyaz:=0; goto 1; end; 1:end; {----------------------------------------------------------} procedure formtbl(k:integer;var v0,v:vect;var n:integer); {Развязывание кодов счётчика. k - коэффициент пересчёта, v0 - исходный вектор, v1 - результирующий вектор кодов состояний счетчика, n - количество разрядов в коде состояний счетчика, v1,v2 - промежуточныe векторы, f - флаг развязки. } var f,i:integer; v1,v2:vect; begin n:=1; for i:=1 to k do v2[i]:=v0[i]; repeat sdwig(k,v0,v1); kley(k,v2,v1,v); n:=n+1; f:=razwyaz(k,v); for i:=1 to k do begin v0[i]:=v1[i]; v2[i]:=v[i]; end; until (f=1) or (n>16); end; {================================================} 281 282 begin clrscr; writeln('г=======================================¬'); writeln('¦ Синтез счетчиков на сдвиговых ¦'); writeln('¦ регистрах.Коэффициент деления <= 2048 ¦'); writeln('¦ SSR.pas ¦'); writeln('¦ Лобанов В.И. 17-03-1999 ¦'); writeln('L=======================================-'); writeln; write('Введите k<=2048 '); readln(k); writeln; pirazb(k,v0); for i:=1 to k do write(v0[i]:2); writeln; formtbl(k,v0,v,n); for i:=1 to k do write(v[i]:8); writeln; if n>16 then writeln ('Переполнение разрядной сетки'); writeln('n = ',n:2); writeln('Нажмите Enter '); readln; end. Синтез счетчиков на сдвиговых регистрах(ССР) по программе ssr.pas дал такие результаты: Коэффициент деления: 10 20 30 40 50 60 Разрядность ССР : 4 8 10 12 14 16 Результаты работы этой программы убедительно доказывают неэффективность синтеза РИ на сдвиговых регистрах: слишком быстро растёт объём памяти. Глава пятая. КОНЕЧНЫЕ АВТОМАТЫ. 5.1 Понятие о конечном автомате. Автоматы Мили и Мура. Конечным автоматом называется устройство, задаваемое конечным множеством из элементов : 1) множество входных сигналов (входной алфавит) х = { х1, ... , хf, ... х } ; 2) множество состояний (алфавит состояний) А = { a0,, ... , am, ... aм }; 3) множество выходных сигналов (выходной алфавит) у = { у1, ... , уg , ... уG } ; 282 283 4) функция переходов - ; 5) функция выходов - ; 6) начальное состояние автомата - а0. Под состоянием понимается одна из множества отличных друг от друга ситуаций, в которой может оказаться конечный автомат. Например, счётчик с К=5 имеет 5 различных состояний, реверсивный счётчик с К=10 имеет 10 различных состояний. В общем виде структура конечного автомата представлена на рисунке. Из него видно, что конечный автомат состоит из комбинационной схемы КС, которая формирует выходной алфавит у и функции возбуждения , и элементов памяти ЭП с выходами . Обобщённая схема конечного автомата. Функции возбуждения описывают те сигналы, которые необходимо подать на управляющие входы элементов памяти. На практике наибольшее распространение получили автоматы Мили и Мура. Автомат Мили задаётся уравнениями : a(t+1) = (a(t), x(t)) ; у(t) = (a(t), x(t)) ; Автомат Мура описывается соотношениями: a(t+1) = (a(t), x(t) ) ; у(t) = (a(t)). Из законов функционирования автоматов Мили и Мура видно, что они отличаются только формированием выходного алфавита. Структурные схемы автоматов Мили и Мура представлены ниже. 283 284 Схемы автоматов Мили и Мура. 284 285 5.2. Методы задания автоматов. ГСА. Любой конечный автомат может быть представлен с помощью направленных графов, таблиц переходов и выходов, граф-схем алгоритмов (ГСА), логических схем алгоритмов (ЛСА) или матричных схем алгоритмов (МСА). Этот перечень можно было бы продолжить. Наиболее наглядной формой представления автомата является ГСА. ГСА - ориентированный связный граф, содержащий вершины четырёх типов: начальную, условную, операторную и конечную. Условные обозначения вершин ГСА. ГСА удовлетворяет следующим требованиям: 1. Содержит конечное число вершин. 2. Имеет одну начальную и одну конечную вершины. 3. Входы и выходы вершин соединяются дугами, направленными от выхода ко входу. 4. Каждый выход соединён только с одним входом. 5. Любой вход соединяется по крайней мере с одним выходом. 6. Для любой вершины графа существует хотя бы один путь к конечной вершине. 7.В каждой условной вершине записывается один из элементов множества логических условий (входной алфавит). х = { x1, .... , xf, ... xF}. 8. В каждой операторной вершине записывается оператор уt - подмножество множества выходных сигналов у. у = { у1, ... , уg , ... уG }. Допускается уt = . Наиболее наглядно алгоритм работы КА описывается с помощью графсхемы алгоритма (ГСА). Однако рисование ГСА – утомительный процесс, поэтому иногда используется логическая схема алгоритма (ЛСА). Ниже приведена ЛСА работы контроллера для установки режимов синтезатора частоты (СЧ) AD9854. Здесь использованы следующие обозначения: X1 – UDCLK с выхода СЧ, X2 – «укороченный» ГИП, Y1 – СБРОС для СЧ, Y2 – разрешение записи в СЧ (EWR), Y3 – UDCLK для фиксации записанных данных в СЧ. 285 286 A0(Y1)A1(Y1)A2(Y1)A3(21/00,Y2)A4(22/00,Y2)A5A6(Y3)A7(1D/14,Y2)A8(1E/46,Y2) A9(1F/C6,Y2)A10(20/00,Y2)A11A12(Y3)A13(1F/03,Y2)A14A15(Y3)A16(04/1A,Y2) A17(05/E1,Y2) A18(06/47,Y2) A19(07/AE,Y2) A20(08/14,Y2) A21(09/7B,Y2)A22A23(Y3) 1 A24(11/K4,Y2) A25(12/K3,Y2) A26(13/K2,Y2) ) A27(14/K1,Y2) ) A28(15/K0,Y2)A29 A30(Y3) A31(1A/ V2,Y2) A32(1B/ V1,Y2) A33(1C/ V0,Y2) A34A35(Y3) 2 A36x12x2 1 A0(Y1) В скобках рядом с состояниями указаны выходные сигналы, адреса и данные для СЧ. 286 287 5.3. Синтез конечных автоматов. Различают два метода синтеза: эвристический и формальный. Эвристический метод - метод проб и ошибок, но зачастую он приводит к весьма экономным решениям. Единственный его недостаток заключается в том, что для получения решения эвристическим методом требуется длительное время работы высококвалифицированных специалистов. При таком подходе в век НТР достаточно сложное устройство может морально устареть прежде, чем закончится его эвристическая разработка. При формальном методе синтеза решение задачи получается чрезвычайно быстро, сроки разработок существенно сокращаются, а саму формальную разработку можно переложить либо на ЭВМ, либо на технический персонал. Не следует считать, что формальный метод исключает творческий этап в разработке цифрового устройства. От того, насколько остроумна была идея, т.е. алгоритм устройства, целиком и полностью зависит сложность схемы прибора, изделия. Поэтому правильнее считать формальный метод формально эвристическим. Обычно синтез конечных автоматов (цифровых устройств, микропрограммных автоматов) осуществляется по следующей схеме. 1. Проработка идеи реализации конечного автомата, выявление отдельных узлов и связей между ними. Составление структурной схемы автомата. 2. Составление ГСА, разметка ГСА. 3. Составление по ГСА обратной структурной таблицы. 4. Кодирование состояний. Для асинхронного автомата применяется противогоночное кодирование, для синхронного применяется кодирование, обеспечивающее минимизацию комбинационной части устройства. 5. Построение принципиальной схемы по обратной структурной таблице автомата. Кстати,именно этот формальный метод использует автор уже более четверти века как для разработки конечных автоматов на базе цифровых интегральных микросхем,так и ,введя в него некоторые дополнения, для синтеза сложных релейных схем.Возврат к релейным схемам был связан с высокой помехоустойчивостью и радиационной стойкостью реле.Особенно это стало актуальным после Чернобыля. Каждый из 5 пунктов требует обстоятельного разговора. Попытаемся понять суть этих вопросов на примере построения достаточно простых конечных автоматов. Задача 18. Очистить от дребезга входной сигнал х, подача которого осуществляется тумблером. Решение. Очистку от дребезга можно осуществить, например, с помощью синхронного конечного автомата (КА). Задача КА будет заключаться в том, чтобы по заднему фронту тактовой частоты f выходной сигнал у принимал то же значение, что и входной сигнал х. В этой ситуации выходной сигнал не изменится на протяжении всего периода тактовой частоты, как бы не менялся при этом х1. 287 288 Для того, чтобы дребезг входного сигнала не проявлялся на выходе, необходимо иметь тактовую частоту с периодом, превышающим длительность дребезга. Так как дребезг тумблера длится не более 2 мс, то период тактовой частоты должен быть не менее 2 мс. Структурная схема автомата получилась простой. Идею обработки входного сигнала х и выдачи очищенного от дребезга выходного сигнала у можно выразить с помощью временной диаграммы. Из временной диаграммы видно, что при первом же совпадении заднего фронта с х=1 автомат должен выдать у = 1, а при совпадении заднего фронта с х = 0 автомат должен выдать у = 0. 2. Опишем логику работы автомата, т.е. зададим автомат, с помощью ГСА . Разметим ГСА для автомата Мура, для чего рядом с каждой операторной вершиной проставим идентификатор состояний, причём начальная и конечная вершины ГСА отмечаются как одинаковые состояния. В начальной стадии КА находится в начальном состоянии а0 (начальная вершина) и проверяет наличие сигнала х. Если х=0, то КА не меняет своего состояния, что отображено связью х=0, выходящей из первой условной вершины и входящей в конечную вершину, которая отмечена начальным состоянием а0. В начальной и конечной вершинах нет ни одного оператора, т.е. у=0. Если х=1, то КА оказывается в новом состоянии а1 по связи х=1, выходящей из первой условной вершины и входящей в операторную вершину с оператором у. Если после того, как КА оказался в состоянии а1, входной сигнал х к моменту прихода заднего фронта тактовой частоты не изменил своего значения, т.е. х=1, то КА останется в состоянии а1 и будет выдавать на своём выходе сигнал у=1 (связь из второй условной вершины). В том случае, если приход заднего фронта тактовой частоты совпадает с х=0, то КА вернётся в начальное состояние а0. Таким образом, составление, разметка и проверка ГСА работы КА закончены, так как мы убедились, что выходной сигнал у по заднему фронту тактовой частоты принимает то же значение, что и входной сигнал х. 288 289 3. Составим для конечного автомата обратную структурную таблицу. Обратная структурная таблица показывает, при каких входных сигналах и из каких состояний осуществляется переход в данное состояние и какие выходные сигналы выдаются при этом переходе. В столбце состояние перехода (СП) для автомата Мура указывается не только состояние перехода, но и выходной сигнал, который соответствует данному состоянию. Исх.сост. (ИС) a0 a1 a0 a1 Код исх. сост. 0 1 0 1 Вх.сигн. x 0 0 1 1 Сост.перех. (СП) a0 (-) a1 (у) Код СП (КСП) 0 0 1 1 Функ.возб. JK 0-1 1-0 4. Так как синтезируемый конечный автомат имеет только 2 состояния, то его можно построить на одном элементе памяти. n = ]log2N[, где n - количество элементов памяти,необходимое для реализации КА, имеющего N состояний. n = ] log22[ = 1 Таким образом, коды состояний будут одноразрядными. Так как автомат очень простой, то кодирование может быть произвольным. Кодирование состояний приведено в таблице 29. Выбираем в качестве элемента памяти JKтриггер. Столбцы для функций возбуждения заполняются в соответствии с таблицей входов конкретного элемента памяти (в данном случае JK-триггера) для обеспечения перехода из исходного состояния в состояние перехода. Функции возбуждения синтезируются как логические функции, зависящие от кода исходного состояния и входного сигнала. J = x, K = x’ Выходные функции зависят только от кода состояния перехода (для автомата Мура). Поэтому у = , т.е. выходной сигнал формируется на прямом выходе JK-триггера. Синтез функций возбуждения и принципиальная схема конечного автомата приводятся на рисунке. Задачу очистки от дребезга можно было решать на любом элементе па- 289 290 мяти. В частности для D-триггера мы получили бы более компактное решение, а именно : D=x, у= Автомат очистки от дребезга. 290 291 5.4 Кодирование состояний и сложность комбинационной схемы. При синтезе счётчика с К=5 мы видели, что сложность комбинационной части счётчика зависит от кодирования состояний. Это утверждение справедливо для всего класса конечных автоматов. В [3] приводятся два простых алгоритма оптимального кодирования состояний конечного автомата. Эти алгоритмы хорошо работают при синтезе автоматов, насчитывающих от нескольких десятков до нескольких сотен функций возбуждения и несколько сотен переменных, когда классические методы минимизации булевых функций оказываются неприемлемыми. Алгоритм триггерах. оптимального кодирования состояний автомата на D- 1. Каждому состоянию автомата Qm (m=1, ... , M) ставится в соответствие целое число Nm, равное числу переходов в состояние аm. 2. Числа N1, ... , Nm, ... Nм сортируются по убыванию. 3. Состояние Qt с максимальным Nt кодируется кодом (00....0). 4. Следующие I состояний (I - число элементов памяти) в упорядоченном в п.2 списке кодируется кодами, в которых используется одна единица в какомлибо разряде, а во всех остальных разрядах нули. 5. Для кодирования следующих I состояний используются коды, содержащие две единицы, затем три единицы и т.д., до тех пор, пока все состояния не будут закодированы. Суть этого алгоритма заключается в том, что мы стремимся использовать минимальное количество единиц в кодах тех состояний, переход в которые происходит чаще всего. Таким образом, функции возбуждения реже принимают значение 1, что приводит к уменьшению количества термов. Так как классические методы минимизации при синтезе сложных автоматов не применяются, то по алгоритму кодирования мы получаем коды состояний, обеспечивающие минимальную комбинационную часть конечного автомата. Для конечных автоматов, построенных на триггерах с раздельными входами, применяется алгоритм кодирования состояний, минимизирующий суммарное число изменений состояний элементов памяти на всех переходах автомата. Соседнее кодирование является частным случаем кодирования состояний, получаемым по указанному алгоритму. Задача 20. Построить 10-разрядный кодовый замок. который открывается последовательным нажатием двух определённых клавиш. Предусмотреть защиту от посторонних. Замок должен открываться кодом 19. Решение. Построим замок, используя автомат Мили. ГСА кодового замка и её разметка представлены на рисунке. В этой ГСА использованы следующие обозначения : х0 - не нажата ни одна из клавиш х1 - нажата только клавиша №1 х2 - нажата только клавиша №9 х3 - снятие сигнализации 291 292 у1 - включить соленоид у2 - включить сирену По ГСА строим обратную структурную таблицу. 292 293 ГСА кодового замка. СП КСП Вых. 321 Входы 000 x0x1’ a0 000 010 x2’ 000 100 x1 000 000 x1 a1 001 001 x1 001 001 x1’ a2 011 011 x0 011 011 x2x0’ a3 010 у1 010 x2 010 у1 000 x1’x0’ a4 100 у2 011 x0’x2’ 100 у2 100 x3’ 100 у2 После применения алгоритма оптимального раздельными входами получаем коды : ИС a0 a3 a4 a0 a1 a1 a2 a2 a3 a0 a2 a4 a0 - 000 293 J3K3 J2K2 J1K1 0000-1 001 0000100-0 01-0 0-0 -0 0-0 -1 0-0 о1001-1 -1 -0 00кодирования для триггеров с 294 a1 - 001 a2 - 011 a3 - 010 a4 - 100 После минимизации получим функции возбуждения : J3 = 2’1’x1’x0’ + 21x2’x0’ ; K3 = x3 ; J2 = 1x1’ ; K2 = 1’x2’ + x2’x0’ ; J1 = 3’2’x1 ; K1 = 2x0’ . Выходные функции для автомата Мили : у1 = 2x2x0’ + 21’x2 ; у2 = 3’2’1’x1’x0’ + 31x2’x0’ + 3x3’ ; Если бы кодовый замок был построен на автомате Мура, то выходные функции приняли бы вид : у1 = 21’ у2 = 3 Далеко не всегда автомат Мура даёт более компактные решения, чем автомат Мили. Например, если часть ГСА имеет вид, представленный на нижеприведённом рисунке, то реализация этой ГСА с помощью автомата Мили позволит уменьшить число состояний, а значит, и количество элементов памяти. 294 295 5.5 . Гонки и противогоночное кодирование. При работе автомата могут появиться гонки, вызванные разбросом параметров элементов памяти. Задержки, вносимые триггерами, имеют различные значения, поэтому одни элементы памяти изменяют свои состояния быстрее, чем другие. Такие состязания могут привести, например, к тому, что переход из состояния 011 в состояние 110 может произойти при входном сигнале х двумя путями : 011-010-110 или 011-111-110. Если из состояний 010 и 011 есть переход под действием сигнала х в состояние 110, то такие состязания называются некритическими, если же таких переходов нет, то состязания называются критическими. При критических состязаниях работа автомата нарушается. Считается, что некритические состязания не опасны, но это не совсем так. Автомат, попадая в промежуточные состояния ( в нашем примере это состояния с кодами 010 и 111 ), может сформировать короткий выходной сигнал, которого окажется вполне достаточно, например для обнуления какого-либо функционального узла, т.е. работа автомата будет искажена. Следовательно существует проблема защиты как от критических, так и от некритических гонок. Существует несколько способов защиты от гонок, мы рассмотрим только один из них - противогоночное кодирование. Противогоночное кодирование заключается в развязывании тех пар состояний, для которых осуществляется переход под действием одного и того же сигнала. Пусть (, ) и (, ) - две пары двоичных кодов. Пары (, ) и (, ) называются развязанными, если некоторый разряд кода принимает одно значение на паре (, ) и противоположное - на паре (, ). Мацевитный Л.В. и Денисенко Е.Л. доказали следующую теорему: в автомате, состояния которого закодированы двоичными кодами конечной длины, гонки отсутствуют тогда, когда для двух любых переходов (am, as) и (ak, al), as al . происходящих под действием одного и того же входного сигнала, пары кодов состояний развязаны. Авторы приводят алгоритм кодирования. 295 296 Алгоритм противогоночного кодирования 1. Выписать все пары переходов, подлежащие развязыванию. 2. Закодировать первую пару кодом 00, вторую - 11. 3. Доопределять следующие пары таким образом, чтобы получались коды 0011 или 1100. 4. Проверить развязку состояний и повторным применением алгоритма добиться минимальной длины кода. Суть этого алгоритма заключается в том, что, развязывая состояния, мы исключаем критические состязания. Задача 21. Осуществить противогоночное кодирование для счётчика с К=1,5. Переходы, подлежащие развязыванию, заданы массивами М1 и М2. Решение. М1 (под действием сигнала х’) M2 (под действием сигнала х) ( а0а0 ) ( а0а1 ) ( а5а0 ) ( а2а3 ) ( а1а2 ) ( а4а5 ) ( а2а2 ) ( а3а4 ) Развязывание пар переходов в М1 начнём с первого перехода (а0а0) . Пары (а0а0) и (а5а0) развязывать не нужно, так как состояния переходов совпадают. Переходим ко второй паре. Вводим переменную 1 и образуем по этой переменной четвёрку (0011) для состояний а5, а0, а1, а2. Рассматриваемая пара переходов развязана. Состояния а0 а1 а2 а3 а4 а5 1 0 1 1 0 Из таблицы видно, что развязана также пара (а5а0) и (а2а2). Приступаем к развязыванию пары (а5а0), (а3а4). Развязывание пары (а5а0), (а3а4). Состояния а0 а1 а2 а3 а4 а5 1 0 1 1 1 1 0 296 297 Из таблицы видно, что для развязывания этих пар нужно закодировать (а3а4) кодом (11). Пара (а1а2), (а2а2) развязывания не требует. Переходим к развязыванию пары (а1а2), (а3.а4). Развязывание этой пары отражено в следующей таблице. Развязывание пары (а1а2), (а3а4). Состояния 12 а0 0а1 10 а2 10 а3 11 а4 11 а5 0Из таблицы видно, что пришлось добавить переменную 2. Добавляя переменную 3, развязываем оставшиеся пары (а0а1), (а2а3) ; (а0а1), (а4а5) и (а2а3), (а4а5). Развязывание пар (а0а1), (а2а3) ; (а0а1), (а4а5) и (а2а3), (а4а5). Состояния а0 а1 а2 а3 а4 а5 123 000 100 101 111 110 010 Задача 22 Построить тактируемый потенциалом D-триггер. Решение. 1. Строим ГСА, разметку ведём для автомата Мура. В ГСА использованы обозначения : x1 - тактовый сигнал x2 - выходной сигнал на входе y - выход D - триггера 297 298 ГСА и схема тактируемого потенциалом D-триггера. 2. Строим обратную структурную таблицу автомата. ИС а0 а1 а0 а1 0 1 0 1 СП а0 (-) а1 (у) КСП 0 0 1 1 Вх. х1’ + х2’ х1х2’ х1х2 x1’+x1x2 SR 001 10 -0 у = а1 = 3. После минимизации получаем функции возбуждения : S = x1x2 ; R = x1x2’ = x1x2’ + x1x1’ = x1(x2’ + x1’) = x1(x1x2)’ Задача 23 Построить синхронный JK-триггер на асинхронных SR-триггерах. Решение. Будем строить JK-триггер, тактируемый задним фронтом. Триггер имеет два состояния : 0 и 1, но в силу того, что изменение этих состояний происходит с приходом заднего фронта тактовой частоты, каждому выходному состоянию соответствуют 2 промежуточных. Пусть х3 - сигнал тактовой частоты, тогда при х3=0 триггер устанавливается в одно из выходных состояний, при х3=1 триггер переходит в состояние подготовки изменения выхода. Таким образом, конечный автомат, реализующий функции синхронного JK-триггера, должен иметь 4 состояния. 1. Строим ГСА с разметкой для автомата Мура. В ГСА использованы обозначения : 298 299 х1 - сигнал на входе J х2 - сигнал на входе К х3 - тактовая частота у - выход JK-триггера ГСА заднефронтового JK-триггера. 2. Строим обратную структурную таблицу автомата ИС x3x2x1 СП КСП S2R2 21 а0 00 0-а0 00 0а3 10 01(-) 00 01 а1 01 0-0 00 0а0 00 1-а1 01 0а1 01 1-(-) 01 0а1 01 0-1 а2 11 10 а2 11 0-(у) 11 -0 299 S1R1 0001 10 -0 -0 -0 300 а3 а2 а3 10 1 1 10 001-1-- 11 10 10 а3 (у) -0 -0 -0 10 01 0- 3. После минимизации получим : у = а2 + а3 = 11 + 10 = 1 - = 2 S2 = 1x3’x1 ; R2 = 1’x3’x2 S1 = 2’x3 + 2x3’x2’ R1 = 2’x3’x1’ + 2x3 Задача 24 Построить автомат, очищающий от дребезга входной сигнал х1. Длительность дребезга не более 2 мс. Передний фронт выходного сигнала формировать с задержкой, не превышающей 20 мкс. Задержка для заднего фронта не более 8 мс. В нашем распоряжении частоты - 100 Кгц, 250 Гц, 500 Гц, 1 Кгц, 2 Кгц. Решение. Строим синхронный автомат, Так как задержка по переднему фронту не должна превышать 20 мкс, то для тактирования используем частоту f =100 Кгц. В силу того, что длительность дребезга не превышает 2 мс, используем в качестве измерителя этого интервала частоты - 250 Гц, 500 Гц, 1 Кгц и 2 Кгц. 1. Строим ГСА с разметкой для автомата Мура. В ГСА использованы обозначения : х1 - входной сигнал х2 - сигнал с частотой 250 Гц х3 - логическое произведение сигналов с частотами 250 Гц, 500 Гц, 1 Кгц и 2 Кгц. у - выходной сигнал. Данная ГСА не является единственной. Вероятно, это и не лучшее решение. Но полученная ГСА не имеет ничего лишнего.Предлагается самостоятельно прорисовать временные диаграммы работы конечного автомата по заданной ГСА для лучшего понимания процесса очистки от дребезга. 300 301 ГСА антидребезгового автомата. 2. Строим обратную структурную таблицу. ИС а0 а2 а0 а1 а1 а2 а1 а2 21 10 01 10 00 00 01 00 01 x3x2x1 --0 110 --1 --1 -10 --1 -00 0-0 СП а0 (-) а1 КСП 10 10 00 00 00 00 01 01 (у) а2 (у) J2K2 -0 1-1 00000- J1K1 0-1 000-1 1-0 После минимизации получим : у = 2’ J2 = 1x3x1’ K2 = x1 J1 = 2’x2’x1’ K1 = x3 + x1 Задача 25 Построить счётный триггер на асинхронных SR-триггерах. Решение. Прежде всего необходимо отметить, что Варшавский и Поспелов в своей монографии «Апериодические автоматы» отрицают возможность формального синтеза счётного триггера на асинхронных элементах памяти. 1. Строим ГСА, описывающую работу счётного триггера. Размечаем ГСА 301 302 для автомата Мура. В ГСА использованы следующие обозначения : х - входной сигнал у - выход счётного триггера ГСА счётного триггера. 2. Строим обратную структурную таблицу. ИС а0 а3 а0 а1 а1 а2 а2 а3 21 00 10 00 01 01 11 11 10 x 0 0 1 1 0 0 1 1 СП а0 КСП 00 00 01 01 11 11 10 10 а1 а2 (у) а3 (у) S2R2 001 0010 -0 -0 -0 После минимизации получаем : у = а2 + а3 = 2 S2 = 1x’ ; R2 = 1’x’ S1 = 2’x ; R1 = 2x Схема счётного триггера представлена на рисунке. 302 S1R1 0010 -0 -0 -0 01 0- 303 Счётный триггер. При синтезе цифрового фазового детектора(ЦФД) возникла задача слежения за фазой двух сигналов с частотой 10 МГц с точностью не хуже 2%. Поскольку запаздывание элементов составляло не более 2 нс, а тактовых частот выше 10 МГц не было в распоряжении разработчика, то пришлось строить асинхронный МПА на быстродействующей ПЛИС EP1K10TC100-1. Первоначально ГСА МПА ЦФД состояла всего из 5 операторных вершин, но в процессе противогоночного, соседнего кодирования пришлось добавить 6ю вершину. Этого оказалось мало: тупиковые, неиспользуемые состояния приносили немало хлопот, появляясь время от времени при симуляции ЦФД. Пришлось их тоже ввести в основной цикл ГСА. ЦФД работает без замечаний, если разность фаз сравниваемых сигналов превышает 2 нс/100 нс * 360 = 7,2 градуса. В качестве элементов памяти были использованы быстродействующие SRтриггеры со сбросом. 303 304 304 305 Задание 8. 8-1. Построить тактируемый потенциалом JK-триггер на SR-триггерах. 8-2. Построить тактируемый фронтом D-триггер на SR-триггерах. 8-3. Построить десятиразрядный кодовый замок, срабатывающий при последовательном нажатии 3-х кнопок. Предусмотреть защиту от постороннего. При синтезе использовать как JK-триггеры, так и D-триггеры, тактируемые фронтом. 5.6. Синтез нечётных и дробных делителей частоты со скважностью 2. Довольно часто приходится строить делители частоты с нечётным или дробным(вида n+0,5) коэффициентом деления. При этом, как правило, требуется обеспечить на выходе скважность S = 2. Синхронные элементы памяти в этом случае не годятся: приходится коммутировать фронты входной частоты. Это не всегда удобно. Выход из ситуации заключается в применении SR – триггеров. Для этого создаётся ГСА или ЛСА и синтезируется конечный автомат на SR – триггерах. При этом обязательно выполняется противогоночное кодирование. Причём не просто противогоночное,а соседнее для дробных делителей частоты (ДДЧ) по следующему авторскому алгоритму. Суть алгоритма обусловлена тем, что количество состояний ДДЧ при S = 2 обязательно чётно. 305 306 Алгоритм «Комета» соседнего кодирования состояний ДДЧ. 1. Разбить всю группу состояний ДДЧ пополам. 2. Закодировать первую половину состояний ДДЧ кодами Грэя. 3. Закодировать вторую половину состояний ДДЧ зеркальным отражением кодов первой половины, заменив старший разряд кода с 0 на 1. Для ДДЧ с Кд = 1,5 и скважностью 2 имеем следующее кодирование 000, 001,011 – 111, 101, 100 или 0-1-3-7-5-4. Такие же коды состояний имеет и делитель на 3 с S = 2. Задача 6.6.1. Построить делитель частоты с Кд = 1,5 и скважностью 2. Решение. Решение иллюстрируется с помощью САПР MAX+PLUS II. На нижеприведённых рисунках представлен асинхронный делитель частоты с коэффициентом деления, равным 1,5. 306 307 Задача 6.6.2. Построить делитель частоты с Кд = 3 и S = 2. 307 308 308 309 309 310 310 311 5. 7. Синтез релейных автоматов. Релейные автоматы (РА) и релейные схемы в наше время воспринимаются как анахронизм. Однако, после аварии на Чернобыльской АЭС выяснилось, что эта техника может работать там, где спотыкаются микропроцессоры. Кроме того,оказалось,что не только большие интегральные схемы(БИС), но и микросхемы среднего уровня интеграции(СИС) подвержены сбоям при воздействии жёстких промышленных помех. Даже при выполнении всех помехозащитных мероприятий сбой в компьютерной системе управления в сентябре 1998 г. вывел из строя отечественную ракету с зарубежными спутниками на борту. Инерционные релейные схемы обладают повышенной помехоустойчивостью. Синтез релейных автоматов имеет некоторые особенности по сравнению с синтезом МПА на интегральных микросхемах. Рассмотрим синтез РА на простых примерах. Задача 26. Построить РА «кнопочной станции». При нажатии кнопки «Пуск»(x1) РА выдаёт сигнал управления Y, который может быть снят лишь после нажатия кнопки «Стоп»(x2). Одновременное нажатие кнопок «Пуск» и «Стоп» недопустимо. Решение. Построим ГСА для «кнопочной станции». ГСА «кнопочной станции». ГСА для РА тривиальна. По ней построена обратная таблица переходов. ИС a1 a0 a0 a1 1 0 0 1 x2x1 1-0 -1 0- СП a0 a1 P 0 0 1 1 311 312 Поскольку ситуация x2x1 недопустима, то при различных доопределениях можно получить как минимум два варианта функции возбуждения P: 1) P = x1 + x2’; 2) P = ( + x1)x2’. Право на жизнь имеют оба варианта, но второй для релейщиков почему-то оказался более предпочтительным. В данном примере синтез РА ничем не отличается от синтеза МПА на базе D-триггеров, хотя автомат в данном случае является асинхронным. Однако при разработке более сложных релейных схем необходимо учитывать возможность проявления гонок и появления генераторного режима. Поэтому необходимо прежде всего обеспечить противогоночное кодирование. Кроме того,во избежание возникновения генераторного режима нужно при синтезе функций возбуждения так располагать прямоугольники Карно в КК,чтобы они все взаимно перекрывали друг друга, чтобы не было ни одного автономного прямоугольника. Для построения помехоустойчивых РА необходимо использовать достаточно инерционные реле с временем переключения порядка 20 - 100 мс. Автор для этой цели применял телевизионное реле КУЦ-1М.Можно строить РА на электростатических реле, которые выпускаются в стандартных корпусах интегральных схем(ИС). Обычно синтез МПА ведётся на основе синхронных элементов памяти. Весьма желательно иметь такой элемент и для релейных схем. Для упрощения синтеза РА построим синхронный переднефронтовой релейный D-триггер. Далее этот триггер можно будет использовать в качестве стандартного модуля, синтезируя лишь функции возбуждения и сняв проблему генераторного режима.Построим ГСА переднефронтового D-триггера. ГСА переднефронтового D-триггера. 312 313 По ГСА переднефронтового D-триггера строим обратную таблицу переходов. ИС a0 a3 a0 a1 a2 a1 a2 a2 a0 a3 10 00 10 00 01 11 01 11 11 00 10 x2x1 -0 -0 11 -1 11 -0 -0 01 01 -1 СП a0 a1 (Y) a2 (Y) a3 P1P2 00 00 01 01 01 11 11 10 10 10 После минимизации с учётом перекрытия прямоугольников Карно получим: P1 = 10x2’ + 0x1’ + 0’x2’x1 + 1x2’x1 + 10’x1 P0 = 1’0 + 0x1’ + x2x1(1’ + 0) Для автоматического обеспечения перекрытия прямоугольников Карно предлагается алгоритм синтеза РА на базе SR-триггеров. Алгоритм синтеза РА на базе SR-триггеров. 1. Провести формальный синтез КА на SR-триггерах, обеспечив обязательное противогоночное кодирование. 2. Заменить все SR-триггеры на эквивалентные релейные схемы, имея в виду, что функция возбуждения реле имеет вид: P = (S+)R', где P - вход реле, S, R - входы SR-триггера, - выход реле(нормально-разомкнутые контакты реле). Для иллюстрации этого алгоритма построим РА кнопочной станции: ИС x2x1 СП P SR a1 1 1a0 0 01 a0 0 -0 0 0a0 0 -1 a1 1 10 a1 1 01 -0 Cинтез функций возбуждения с учётом недопустимости ситуации x2x1 = 11 позволяет получить следующие результаты: S = x1 R = x2 P = (x1+)x2' Т.е. получен один из двух вариантов рабочей функции возбуждения РА. 313 314 Поскольку от воздействия помех необходимо защищать в первую очередь элементы памяти,то всю комбинационную часть РА можно выполнить на ПЛМ или ППЗУ,т.е. РА может быть «гибридным».Наличие электровакуумных(ламповых) триггеров не оставляет сомнений в том,что формальный синтез МПА можно распространить и на этот класс радиационностойких приборов. 314 315 5.8.Синтез ГСА по функциям возбуждения. В СССР в 80-е годы к сожалению возобладала технология «цельнотянутого» проектирования. Автор всегда был ярым противником такой «технологии». Если автомат построен эвристически, то «вскрыть» его значительно проще, чем формальносинтезированный. Но иногда такое вскрытие формального автомата просто необходимо: например, при утрате ГСА даже собственных разработок МПА. Впервые предлагается алгоритм «РоссЭко» синтеза ГСА по известным функциям возбуждения. Функции возбуждения легко получить из принципиальной схемы МПА. Алгоритм «РоссЭко». 1.Занести все функции возбуждения в карты Карно так, чтобы горизонтали(строки КК) были отмечены кодами состояний МПА , а вертикали - входными сигналами. 2.Заполнить таблицу прямых переходов (ТПП) таким образом,чтобы одинаковым исходным состояниям и одинаковым входным сигналам соответствовало одинаковое состояние перехода. 3.По ТПП построить ГСА. Пример. Даны функции возбуждени РА: P1 = 0x1’ + 10 + 1x7 P0 = 1’x7 + 1’0 + 0x7 Найти ГСА. Решение. Построим КК по известным функциям возбуждения.Из КК видно,что из состояния a0 = 00 по сигналу x7’ осуществляется переход в состояние a0.Аналогично,из a0 по x7 выполняется переход в a1 и т.д. Заполним ТПП. ИС a0 a0 a1 a1 10 00 00 01 01 x7x2x1 0-1---1 --0 СП a0 a1 a1 a2 P1P0 00 01 01 11 a2 a2 a3 a3 11 11 10 10 -0-10-1-- a3 a2 a0 a3 10 11 00 10 315 316 Построение ГСА по ТПП не вызывает затруднений. Кроме основного своего назначения ТПП позволяет проверить корректность синтеза функций возбуждения по заданной ГСА. 316 317 Глава шестая МИКРОКОНТРОЛЛЕРЫ 6.1. Простой промышленный микроконтроллер В настоящее время отечественная промышленность выпускает широкий ассортимент микроконтроллеров (МК) для управления технологическими процессами. Среди них наиболее популярными являются микропроцессорные приборы семейства «ПРОТАР» производства Московского завода тепловой автоматики и «ЛОМИКОНТ», «РЕМИКОНТ» разработки НИИТеплоприбор и многоцелевые контроллеры КР-300 серии «КОНТРАСТ»(г.Чебоксары). Эти микроконтроллеры обладают большими функциональными возможностями: позволяют обрабатывать аналоговые и цифровые входные сигналы, обеспечивают многоканальное управление. Все эти неоспоримые достоинства весьма существенны при решении проблем управления в сложных технологических системах. Однако применение вышеназванных МК оказывается нерентабельным при решении задач управления простыми технологическими процессами. Таким образом, оказался неприкрытым класс простых производств так называемого малого бизнеса, где требуется простой, надёжный, легко перепрограммируемый (т.е. фактически универсальный) и, что не менее важно, дешёвый промышленный микроконтроллер. Исходя из практики разработки и 5летней эксплуатации промышленных контроллеров данного класса, были сформулированы следующие технические требования : 1. Количество управляющих входов 8 2. Количество каналов управления 4 3. Рабочий диапазон температур от +5 до 40С 4. Питание от сети переменного тока - напряжение 220 В(+22В, -33В) - частота 50 Гц(+1 Гц, -1Гц) 5. Потребляемая мощность от сети не более 10 ВА Наиболее простым решением данной проблемы явилась бы реализация подобного устройства на базе однокристальной микро-ЭВМ (ОМЭВМ) типа КМ816ВЕ31 (Intel8051), КР1801ВЕ1( 4-разрядная КМОП ОМЭВМ) или «микрочип» серии РIC. Однако у пользователя сразу возникает ряд проблем. Во-первых, необходимо в качестве платы за «гибкость» МК иметь в наличии отладочную систему, стоимость которой может достигать 5 тыс. долларов. Во-вторых, для модификации программного обеспечения потребуется квалифицированный программист. В-третьих, помехозащита МК, работающего в непосредственной близости от магнитных пускателей и управляющего электродвигателями мощностью до 6 кВт и более при реальных условиях низкого качества промышленной сети и особенно заземления, оказалась чрезвычайно сложной проблемой для МК на базе ОМЭВМ. Сбои в работе ОМЭВМ могут приводить к катастрофическим последствиям. И никакие «войч-доги» ситуацию не спасают.Это слишком дешёвая, а посему малоэффективная мера защиты. Опыт эксплуатации 317 318 станков с числовым программным управлением (ЧПУ) показал, что только при создании специальной отдельной сети питания для ЧПУ можно надеяться на нормальное функционирование МК. А это дорогостоящее мероприятие не по карману представителям малого бизнеса. Кроме того,даже в случае принятия дорогостоящих помехозащитных мер возможны катастрофические по своим результатам сбои. Неудачный запуск российской ракеты с зарубежными спутниками на борту в начале сентября 1998г. был обусловлен сбоем в компьютерной системе. Надёжность работы МК на базе ОМЭВМ можно обеспечить только за счёт введения диагностических процессоров (ДП). ДП следит практически за каждым шагом МК по отображению программы последнего в памяти ДП. В случае отклонения от программы ДП принудительно отправляет МК в ближайшую точку возврата, откуда МК повторяет попытку прохождения сбойного участка с предварительным восстановлением необходимого фрагмента оперативной памяти. В случае нескольких неудачных повторных попыток ДП выдаёт сообщение об отказе. Однако реализация ДП в виде микропрограммного автомата для ОМЭВМ КР1816ВЕ35 на традиционной элементной базе потребовала 67 корпусов микросхем (МС). Перевод полученного решения на матрицы логических ячеек (МЛЯ) типа Xilinx позволил сократить количество МС до 12. Но и такая реализация является слишком громоздкой для МК. состоящего из 3-5 МС. Кардинальным решением является разработка специализированной МС ДП. До настоящего времени эта проблема не решена и едва ли разрешится в ближайшем будущем из-за отсутствия финансирования. Появление в последнее время быстродействующих микропроцессоров и памяти позволяют надеяться на создание ДП в виде специализированного МК. Сбои такого ДП могут привести только к одному «катастрофическому» последствию: к одному или нескольким лишним обращениям в точку возврата.Опасен лишь одновременный сбой МК и ДП, но в такой ситуации не спасает даже полное резервирование. В связи с вышеизложенным в качестве альтернативы ОМЭВМ при создании простого и надёжного промышленного МК выступает микропрограммный автомат (МПА). МК на базе МПА(МК-МПА) реализован на двух микросхемах: К561ЛН2 и КМ1556ХП4. Первая МС обеспечивает генерацию тактовой частоты и защиту с фильтрацией трёх входных сигналов, а вторая реализует собственно МПА. Возможности КМ1556ХП4 таковы, что позволяют запрограммировать любой конечный автомат на 16 состояний. Этого вполне достаточно для реализации абсолютного большинства простейших МК. Кстати говоря, эта « простота» реализуется на традиционных МК с ОМЭВМ программой объёмом около 1 кбайта. Для индикации состояний МПА на плате предусмотрен монтаж 8 светодиодов типа АЛ307БМ. Для сопряжения с исполнительными устройствами к четырём выходам КМ156ХП4 подключены оптроны АОТ110А. Такая схема обеспечивает гальваническую развязку и возможность управления однофазными и трёхфазными двигателями 6 кВт и более. Управляющие воздействия могут подаваться на любое промежуточное реле (например, КУЦ-1М), а затем на магнитный пускатель. Возможна замена промежуточного реле и магнитного пускателя на симисторный блок управления. МК-МПА эксплуатируется в достаточно сложных условиях( повышенная влажность, широкий диапазон температур) в течение 3 лет на самых различных объектах без замечаний. Области применения чрезвычайно широки: управление и позиционное регулирование в системах водоподготовки и водоснабжения, в нефтяной, газовой и металлургической промышленности, в энергетике, в сфере обслуживания и других отраслях 318 319 народного хозяйства. Симисторный блок управления (СБУ) реализован идентично МК-МПА. Эта идентичность позволяет использовать плату МК-МПА в качестве СБУ. Для уменьшения потребления по цепям управления симисторными ключами ТСО142-40-6 применяется импульсное воздействие на оптроны. СБУ способен также изменять фазу отсечки, что обеспечивает возможность регулирования мощности двигателя. В СБУ введены тепловая защита и защита от пропадания фазы. Переход на СБУ устранил грохот от переключения магнитных пускателей, значительно снизил уровень помех, что повысило надёжность работы МКМПА. СБУ эксплуатируется без замечаний несколько лет. Печатная плата имеет габариты 90мм х 90мм. Стоимость комплетующих элементов чрезвычайно низкая. Во всех схемах используется только отечественная элементная база. Простота также очевидна. Надёжность подтверждена длительной эксплуатацией на промышленных объектах. Весь цикл по созданию новой программы, «прошивке» КМ1556ХП4 и отладке МК-МПА занимает 2-3 дня. Никаких отладочных систем, кроме самого дешёвого программатора, не требуется. 319 320 6.2. Микропроцессорная техника. Для решения задач автоматического контроля наряду с увеличением производства существующих аналитических приборов необходимо создаватьновые универсальные измерительные системы на основе встроенных микроконтроллеров (МК). МК участвует в расчете контролируемого свойства вещества или параметра состава, управлении измерительным процессом,автоматической компенсацией температурной погрешности.Кроме своих основныхзадач измерительного характера МК может решать вопросы автоматическогоконтроля и диагностики аналитического прибора (АП). Наряду с этим оптимально спроектированный МК может служить средством отладки вновь разрабатываемого программного обеспечения при модификации уже существующего АП. Рассмотрим кратко в данном аспекте все проблемы и возможности МК при проектировании устройств и систем на их основе. Архитектура микроконтроллера. В настоящее время номенклатура МК чрезвычайно широка. Остановим свой выбор на относительно дешевых и достаточно мощных МК семейства MCS51.Отечественным аналогом этого МК является однокристальная микроЭВМ КМ1816ВЕ51(в дальнейшем для краткости именуемая МК51). МК51 имеет в своем составе следующие аппаратные средства: - процессор с 1-байтным АЛУ и схемы аппаратного умножения и деле ния; - стираемое ПЗУ программ емкостью 4 Кбайта; - ОЗУ данных емкостью 128 байт; - два 16-битных таймера/счетчика; - программируемые схемы ввода/вывода(32 линии); - блок двухуровневого векторного прерывания от 5 источников; - асинхронный канал дуплексного последовательного ввода/вывода информации со скоростью 375 Кбод; - генератор,схема синхронизации и управления. Структура МК51 и система команд настолько гибки, что идет постоянная модернизация МК данного семейства. MCS552 уже имеет встроенный 8канальный 10-разрядный АЦП, ПЗУ объемом 8 Кбайт,ОЗУ - 256 байт,5 восьмиразрядных портов ввода/вывода и один 8-разрядный входной порт, 3 16разрядных таймера/счетчика, структуру вложенных прерываний с 15 источниками и двумя уровнями приоритета,двойной интерфейс ЦАП на основе ШИМ, два последовательных интерфейса, таймер "будильника"(watch-dog), режим ожидания и режим пониженной мощности. Порты ввода/вывода информации. Все 4 порта МК51 предназначены для ввода или вывода информации побайтно.Выходные драйверы портов Р0 и Р2,а также входной буфер порта Р0 используются при обращении к внешней памяти(ВП).При этом через портР0 в режиме мультиплексирования сначала выводится младший байт адреса ВП,а затем выдается или принимается байт данных.Через портР2 выводится стар- 320 321 ший байт адреса в тех случаях,когда разрядность адреса равна 16 бит. Все выводы порта Р3 могут быть использованы для реализации альтернативных функций. Альтернативные функции могут быть задействованы путем записи 1 в соответствующие биты регистра-защелки порта Р3. Таймер/счетчик. Два программируемых 16-битных таймера/счетчика(Т/С0 и Т/С1) могут быть использованы в качестве таймеров или счетчиков внешних событий. При работе в качестве таймера содержимоеТ/С инкрементируется в каждом машинном цикле, т.е. через каждые 12 периодов генератора тактовой частоты.При работе в качестве счетчика содержимое Т/С инкрементируется при переходе из 1 в 0 внешнего входного сигнала. Различают 4 режима работы Т/С. 2Режим 0. 0В этом режиме на вход 8-битного таймера подключается 5битный предделитель частоты,т.е. таймер имеет разрядность 13 бит.При переполнениии Т/С устанавливается флаг прерывания TF соответствующего Т/С.Входной синхросигнал таймера разрешен,когда управляющий бит TR0(1) установлен в 1 и либо бит блокировки равен 0,либо либо на вход прерывания поступает уровень 1. 2Режим 1. 0Работа Т/С в режиме 1 такая же, как в режиме 0,но таймер имеет разрядность 16 бит. 2Режим 2. 0В режиме 2 работа организована так,что переполнение 8битного счетчика TL0(1) приводит не только к установке флага,но и перезагрузке в TL0(1) содержимого старшего байта TH0(1) таймерного регистра.При перезагрузке содержимое TH0(1) не изменяется. 2Режим 3. 0Можно считать,что в этом режиме МК51 имеет в своем составе три таймера/счетчика. Последовательный интерфейс. Через универсальный асинхронный приемопередатчик(УАПП) осуществляется прием и передача информации,представленной последовательным кодом(младшими битами вперед).В состав УАПП входят сдвигающие регистры и специальный буферный регистр SBUF приемопередатчика.УАПП может работать в четырех режимах. Режим 0. 0Передача и прием информации в объеме 8 бит ведется через вывод входа приемника RXD.Через внешний вывод выхода передатчика TXD выдаются импульсы сдвига. Частота передачи равна 1/12 частоты резонатора. Режим 1. 2В этом режиме осуществляется обмен информацией в объеме 210 бит: старт-бит(0), 8 бит данных и стоп-бит(1). Режим 2. 0Через TXD передаются или через RXD принимаются 11 бит информации:старт-бит,8 бит данных,программируемый 9-й бит паритета и стопбит.Частота обмена равна 1/32 или 1/64 частоты резонатора в зависимости от SMOD. Режим 3. 0Этот режим совпадает с предыдущим,за исключением частоты обмена,которая задается таймером. Программа вывода данных по каналу RS-232. ;г====================================¬ ;¦ ПРОГРАММА КОНТРОЛЛЕРА 80C552 ¦ 321 322 ;¦ Работа с RS-232 ¦ ;¦ ¦ ;¦ Лобанов В.И. tasm 22.01.99 ¦ ;L====================================; ;-------------------------------------¬ ;¦ Символические имена ¦ ;L------------------------------------x1 .equ p1.1;Датчик давления 1 x2 .equ p1.2;Датчик давления 2 y1 .equ p4.1;Вкл.ЭМК 1 y2 .equ p4.2;Вкл.ЭМК 6 ;=============================================== .ORG 0000H ljmp start; ;*********************************************** .ORG 0080H start lcall install ;установка режимов setb ea;разреш.всех прерываний setb tr1; Запуск T1 mov a,#55h; mov p3,#0ffh;Прогр. Р3 на альтернат.ф-ции start1 lcall spout1;Вывод информации из МКУ ; lcall spin1;Ввод информации в МКУ lcall delay1; ljmp start1; ;*********************************************** spout1 jnb ti,$;проверка флага ti послед.порта clr ti;сброс флага ti mov sbuf,a;в+дача байта ret ; ;*********************************************** spin1 jnb ri,$; clr ri; mov a,sbuf; ret ; ;*********************************************** delay mov r6,#255; djnz r6,$ ; ret ; ;*********************************************** delay1 mov r7,#255; dl1 lcall delay; djnz r7,dl1; ret ; ;*********************************************** #INCLUDE EQU552.ASM #INCLUDE INST51.ASM .end Подпрограмма инсталляции оформляется в виде отдельного файла 322 323 inst51.asm. install nop ; ;г=======================================¬ ;¦ П/П ПЕРВОНАЧАЛЬНОЙ УСТАНОВКИ 1816ve31 ¦ ;L=======================================;----------------------------------------¬ ;¦ PCON - управление энергопотреблением ¦ ;L---------------------------------------;---------------------------------------mov pcon,#00000000b ;---------------------------------------; I- 1- РЕЖИМ Х/Х(0.15 от номин.) ; I-1-РЕЖИМ МИКОРОПОТРЕБЛЕНИЯ(I < 10 мкА) ; I-ФЛАГ ОБЩЕГО НАЗН ; I- ФОН ; I ; I ; I ; I- 1 - БИТ УДВОЕНИЯ СКОРОСТИ ПЕРЕДАЧИ ;----------------------------------------¬ ;¦ TMOD - режимы таймеров ¦ ;L---------------------------------------;GATE1 C/T1 M1.1 M0.1 GATE0 C/T0 M1.0 M0.0 ; 7 6 5 4 3 2 1 0 ;0-ТАЙМЕР, 1- СЧЕТЧИК ;0-СЧЕТ ОТ INT0 ЗАПРЕЩЕН ; Режимы счетчиков:0 - 13 бит,1 - 16 бит, ; 2 - 8 бит с автоперезагрузкой, ; 3 - 2 по 8 бит. ;---------------------------------------mov tmod,#00100001b ;Т1 во 2-м режиме,Т0 - в 1-м ;---------------------------------------;---------------------------------------------¬ ;¦ TCON - управление таймерами ¦ ;L--------------------------------------------;TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 ;7 6 5 4 3 2 1 0 ;---------------------------------------mov tcon,#00000101b mov th0,#0c3h mov tl1,#0 mov th1,#230 ;Частота обмена инф.=8кбод ;---------------------------------------;-----------------------------------------------------------------¬ ;¦ СТРУКТУРА UART - упр-ние УАППом(RS232)¦ 323 324 ;+ ¦ ;¦ SCON REGISTER ¦ ;L----------------------------------------------------------------;SM0 SM1 SM2 REN TB8 RB8 TI RI ;7 6 5 4 3 2 1 0 ;---------------------------------------mov scon,#01010010b ;8-битовый УАПП на прием ;и передачу ;---------------------------------------;---------------------------------------------¬ ;¦ СТРУКТУРА ПРЕРЫВАНИЙ ¦ ;¦ IP REGISTER (ПРИОРИТЕТЫ)¦ ;L--------------------------------------------;XXX XXX XXX PS PT1 PX1 PT0 PX0 ;7 6 5 4 3 2 1 0 ;PX0,PX1 - приоритет внеш.прерывания INT0,INT1 ;PT0,PT1 - приоритет прерыв. по переполн. таймеров T0,T1 ;PS0,PS1 - приоритет прерывания SIO0,SIO1(RS-232,I2C) ;---------------------------------------mov ip,#00010110b ;PT0,PX1,PS ;---------------------------------------;--------------------------------------------------------------------¬ ;¦ IE REGISTER (РАЗРЕШЕНИЕ ПРЕРЫВАНИЯ) ¦ ;L-------------------------------------------------------------------;EA EAD ES1 ES ET1 EX1 ET0 EX0 ;7 6 5 4 3 2 1 0 ;EX0,EX1 - разреш.внеш.прерыв. INT0 и INT1 ;ET0,ET1 - разреш.прерыв.таймера Т0 и Т1 ;ES,ES1 - разреш.прерыв.УАПП(RS-232) и I2C ;EAD - разреш.прер.АЦП, EA - разреш.всех прерыв. ;---------------------------------------mov ie,#00010110b ;ET0,EX1,ES clr tr0 clr tr1 ret ; В виде отдельного файла equ552.asm оформляется и архитектура 80С552. ;*************************************************** ; Прямо-адресуемые регистры RAM 8X552 ;*************************************************** p0 .equ 080H ;Port 0 - МХ-шина адреса/данных sp .equ 081H ;Stack pointer dpl .equ 082H ;указатель данных dph .equ 083H ;---- " ------ 324 325 pcon .equ 087H ;управление энергопотреблением tcon .equ 088H ;упр-ние таймерами tmod .equ 089H ;режимы таймеров tl0 .equ 08AH ;регистры таймеров tl1 .equ 08BH ;----- " ----th0 .equ 08CH ;----- " ----th1 .equ 08DH ;----- " ----p1 .equ 090H ;Port 1 - захват,IIC-шина,управл.таймером Т2 scon .equ 098H ;упр-ние последоват. портом 0 sbuf .equ 099H ;буфер последоват.порта p2 .equ 0A0H ;Port 2 - ст.байт адреса для внеш.памяти ie .equ 0A8H ;регистр разрешения прерывания p3 .equ 0B0H ;Port 3 - RS-232,INT0,INT1,T0,T1,RD,WR ip .equ 0B8H ;приоритеты прерываний 0 p4 .equ 0C0H ;Port 4 - CMSR0...CMSR5,CMT0,CMT1 p5 .equ 0C4H ;Port 5 - ADC0...ADC7 psw .equ 0D0H ;слово состояния программы s1con .equ 0D8H ;упр-ние последоват.портом 1 a .equ 0E0H ;Accumulator b .equ 0F0H ;Secondary Accumulator ip1 .equ 0F8H ;приоритеты прерываний 1 r0 .equ 00H ;РОН0 r1 .equ 01H ;РОН1 r2 .equ 02H ;РОН2 r3 .equ 03H ;РОН3 r4 .equ 04H ;РОН4 r5 .equ 05H ;РОН5 r6 .equ 06H ;РОН6 r7 .equ 07H ;РОН7 ;*********************************************** ;Прямо-адресуемые биты RAM ;*********************************************** p0.0 .equ 080H ;port 0 bit 0 p0.1 .equ 081H ;port 0 bit 1 p0.2 .equ 082H ;port 0 bit 2 p0.3 .equ 083H ;port 0 bit 3 p0.4 .equ 084H ;port 0 bit 4 p0.5 .equ 085H ;port 0 bit 5 p0.6 .equ 086H ;port 0 bit 6 p0.7 .equ 087H ;port 0 bit 7 p1.0 p1.1 p1.2 p1.3 p1.4 p1.5 p1.6 p1.7 .equ 090H .equ 091H .equ 092H .equ 093H .equ 094H .equ 095H .equ 096H .equ 097H ;p1.0/СТ01 - вх.сигнал логики захвата ;p1.1/СТ11 - вх.сигнал логики захвата ;p1.2/СТ21 - вх.сигнал логики захвата ;p1.3/СТ31 - вх.сигнал логики захвата ;p1.4/T2 - вход внеш.такт.имп./вых.генер. Т2 ;p1.5/RT2 - сигнал сброса таймера Т2 по п/ф. ;p1.6/SCL -такт.линия послед.порта IIC-шины ;p1.7/SDA - линия данных послед.порта IIC-шины 325 326 p2.0 p2.1 p2.2 p2.3 p2.4 p2.5 p2.6 p2.7 .equ .equ .equ .equ .equ .equ .equ .equ 0A0H 0A1H 0A2H 0A3H 0A4H 0A5H 0A6H 0A7H ;p2 bit 0 ;p2 bit 1 ;p2 bit 2 ;p2 bit 3 ;p2 bit 4 ;p2 bit 5 ;p2 bit 6 ;p2 bit 7 p3.0 p3.1 p3.2 p3.3 p3.4 p3.5 p3.6 p3.7 .equ .equ .equ .equ .equ .equ .equ .equ 0B0H 0B1H 0B2H 0B3H 0B4H 0B5H 0B6H 0B7H ;p3.0/RxD - вход последоват. порта ;p3.1/TxD - выход последоват. порта ;p3.2/INT0 - вход внеш. прерывания 0 ;p3.3/INT1 - вход внеш.прерывания 1 ;p3.4/внеш.вход Т0 - вх.внеш.такт.имп. Т0 ;p3.5/внеш.вход Т1 - вх.внеш.такт.имп. Т1 ;p3.6/WR - строб записи во внеш. память ;p3.7/RD - строб чтения из внеш. памяти p4.0 p4.1 p4.2 p4.3 p4.4 p4.5 p4.6 p4.7 .equ .equ .equ .equ .equ .equ .equ .equ 0C0H 0C1H 0C2H 0C3H 0C4H 0C5H 0C6H 0C7H ;p4.0/SEPCLK - вых.такт.импульсов порта SEP ;p4.1/SEPDAT - вход/вых. данных порта SEP ;p4.2/ECI1 - вход внешних такт.имп. PCA1 ;p4.3/C1EX0 - вх. захв.,вых.PWM/сравн.М0 PCA1 ;p4.4/C1EX1 - вх. захв.,вых.PWM/сравн.М1 PCA1 ;p4.5/C1EX2 - вх. захв.,вых.PWM/сравн.М2 PCA1 ;p4.6/C1EX3 - вх. захв.,вых.PWM/сравн.М3 PCA1 ;p4.7/C1EX4 - вх. захв.,вых.PWM/сравн.М4 PCA1 ; TCON REGISTER - управление таймерами it0 ie0 it1 ie1 tr0 tf0 tr1 tf1 .equ .equ .equ .equ .equ .equ .equ .equ 088H 089H 08AH 08BH 08CH 08DH 08EH 08FH ;вид прерыв. по INT0(1-уровень,0-задн.фронт) ;флаг запроса внеш.прерыв.по INT0 ;вид прерыв. по INT1(1-уровень,0-задн.фронт) ;флаг запроса внеш.прерыв.по INT1 ;бит включения Т0 ;флаг переполнения Т0 ;бит включения Т1 ;флаг переполнения Т1 ; SCON REGISTER - управление последоват. портом ri .equ 098H ;флаг прерыв. приемника ti .equ 099H ;флаг прерыв. передатчика rb8 .equ 09AH ;9-й бит принимаемых данных(реж.2 и 3) tb8 .equ 09BH ;9-й бит передаваемых данных(реж.2 и 3) ren .equ 09CH ;бит разрешения приема послед. данных sm2 .equ 09DH ;бит разрешения многопроцессорной работы sm1 .equ 09EH ;1-й бит определения режима работы sm0 .equ 09FH ;0-й бит определения режима работы 326 327 ; IE REREGIER - разрешение прерываний ex0 .equ 0A8H ;внеш. прерывание INT0 et0 .equ 0A9H ;переполнение 0-го таймера ex1 .equ 0AAH ;внеш. прерывание INT1 et1 .equ 0ABH ;переполнение 1-го таймера es .equ 0ACH ;последоват. порт УАПП(RS-232) es1 .equ 0ADH ;последоват. порт I2C ead .equ 0AEH ;разреш.прерыв.АЦП ea .equ 0AFH ;запрещение всех прерываний ; IP REGISTER - приоритеты прерываний px0 pt0 px1 pt1 ps pt2 .equ .equ .equ .equ .equ .equ 0B8H 0B9H 0BAH 0BBH 0BCH 0BDH ;внеш. прерывание INT0(высш.приоритет) ;переполнение 0-го таймера ;внеш. прерывание INT1 ;переполнение 1-го таймера ;последоват. порт ;переполнение 2-го таймера(низш.приоритет) ; ACCUMULATOR acc.0 acc.1 acc.2 acc.3 acc.4 acc.5 acc.6 acc.7 .equ .equ .equ .equ .equ .equ .equ .equ 0E0H 0E1H 0E2H 0E3H 0E4H 0E5H 0E6H 0E7H ;acc bit 0 ;acc bit 1 ;acc bit 2 ;acc bit 3 ;acc bit 4 ;acc bit 5 ;acc bit 6 ;acc bit 7 ; PSW REGISTER - слово состояния программы p ov rs0 rs1 f0 ac cy .equ 0D0H ;флаг четности .equ 0D2H ;флаг переполнения .equ 0D3H ;выбор банка регистров .equ 0D4H ;----- " ----.equ 0D5H ;флаг пользователя 0 .equ 0D6H ;флаг дополн. переноса .equ 0D7H ;флаг переноса Пример реализации блока управления и индикации . 327 328 E r r o Фирма КТЦ-МК предлагает широкий выбор жидкокристаллических индикаrторов различных типов. Большой популярностью у специалистов пользуются !алфавитно-цифровые ЖКИ-модули на базе контроллера HD44780 фирмы Hitachi или его аналогов производства других фирм: Epson, Philips, Samsung, Sanyo, Toshiba . N Контроллер HD44780 допускает подключение к микропроцессорам по четырёх o битному или восьми битному интерфейсу. Выбор интерфейса производится пользователем исходя из ограничений на время, затрачиваемое на обмен данb ными с котроллером, или количество используемых линий подключения к микроo ЭВМ. o Специалистами фирмы применялись различные схемы подключения алфавитkно-цифровых ЖКИ-модулей к микрo-ЭВМ семейства AT89CX051 фирмы Atmel. m На Рис.1 представлена схема подключения ЖКИ-модуля на базе контроллера aHD44780 к микро-ЭВМ семейства MCS51 в режиме работы с внешней памятью, rпозволяющая оптимизировать процесс обмена данными по времени. Пересылка kбайта осуществляется по командам: MOVX A,@DPTR или MOVX A,@DPTR. n В этом случае в DPTR следует загружать адрес с учётом того, что младший бит aА0 будет обозначать направление передачи (запись/чтение), а бит А1 тип переm даваемой информации (команда/данные). e Ниже приведены исходные тексты подпрограммы на языке ассемблера ASM51, g позволяющие записывать данные, инструкции в контроллер, считывать данные. iПриведен так же примерный текст подпрограммы инициализации контроллера в vрежим восьми битного интерфейса, при работе с двумя строками. Отображение eкурсора и мигание отключено. Курсор установлен в начало первой (верхней) n строки. . ;г====================================¬ ;¦ ПРОГРАММА КОНТРОЛЛЕРА 80C552 ¦ ;¦ Панель управления и индикации ¦ ;¦ pui.asm ¦ ;¦ Лобанов В.И. tasm 17.03.99 ¦ ;L====================================; ;-------------------------------------¬ ;¦ Символические имена ¦ 328 329 ;L------------------------------------; p5.0 - Кнопка "Старт" ; p5.1 - Кнопка "HC/RPM" ; p5.2 - Кнопка "Печать" ; p5.3 - Кнопка "2/4 такт" ; r0 хранит состояние клавиатуры ; r1 - счетчик на 6 мс y1 .equ p3.5 ;Звукоиндикатор wrc_lc .equ 8000h;Адрес регистра команды wrc rdc_lc .equ 8001h;Адрес регистра команды rdc wrd_lc .equ 8002h;Адрес регистра данных wrd rdd_lc .equ 8003h;Адрес регистра данных rdd ;=============================================== .ORG 0000H ljmp start; ;*********************************************** .ORG 000BH ljmp intt0;Внутр.прерывание от Т0 ;********************************************** .ORG 0013H ljmp int1;Внеш.прерывание 1 ;*********************************************** .ORG 0080H start lcall install ;установка режимов mov r0,#0; st1 nop ; ajmp st1; ;*********************************************** install setb p3.3;Альтерн.ф-ция внеш.прер.INT1 setb p3.6;Альтерн.ф-ция записи в РВПД(/WR) clr y1;Порт P3.5 на вывод setb et0;Прерыв. от T0 mov tmod,#11h; Режим 1 для T0,T1 setb tr0; Запуск T0 setb ex1; Разреш.внеш.прерыв.INT1 setb it1;Прерывание по заднему фронту INT1(TCON), setb ea; при этом сброс ie1 вып-ся аппаратно. acall lcdinit; ret ; ;*********************************************** ;Инициализация HD44780 lcdinit mov a,#38h; 8 бит,2 строки,матр.5х8 acall wrc; acall tau6 ; Ожидание готовности mov a,#38h; 8 бит,2 строки,матр.5х8 acall wrc; acall tau6 ; Ожидание готовности mov a,#0ch; Вкл.диспл.,откл.курсор,выкл.мерцание 329 330 cls acall wrc; mov a,#06h;Перемещ.курсора вправо acall wrc; mov a,#01h;Очистка экрана acall wrc; ret ; ;Чтение данных из HD44780 rdd_lcd mov dptr,#rdc_lc; waitdd movx a,@dptr; jb acc.7,waitdd; mov dptr,#rdd_lc; movx a,@dptr; ret ; ;Запись данных в HD44780 из ACC wrd push a; mov dptr,#rdc_lc; waitrd movx a,@dptr; Ожидание jb acc.7,waitrd; готовности mov dptr,#wrd_lc; pop a; movx @dptr,a; ret ; ;Запись команды в HD44780 из ACC wrc push a; mov dptr,#rdc_lc; waitrc movx a,@dptr; Ожидание jb acc.7,waitrc; готовности pop a; mov dptr,#wrc_lc; movx @dptr,a; ret ; ;*********************************************** intt0 push psw; mov th0,#0fdh;Прерывание по Т0 mov tl0,#00h; с частотой 1кГц dec r1; lcall opros1; pop psw; reti ; ;*********************************************** int1 push psw; push a; push b; push dpl; push dph; mov r0,p5;Состояние клавиш в r0 lcall opros; 330 331 pop dph; pop dpl; pop b; pop a; pop psw; reti ; ;*********************************************** opros mov a,r0; jb acc.0,kl1; jb acc.1,kl2; jb acc.2,kl3; jb acc.3,kl4; ajmp kl; kl1 lcall sa1; ajmp kl; kl2 lcall sa2; ajmp kl; kl3 lcall sa3; ajmp kl; kl4 lcall sa4; kl ret ; ;*********************************************** opros1 mov a,r0; jnb acc.1,oprend; lcall sa2; oprend ret ; ;*********************************************** sa1 acall cls ; mov a,#80h;Обнуление счетчика acall wrc; знакоместа mov a,#43h; C acall wrd; mov a,#81h; acall wrc; mov a,#54h; T acall wrd; mov a,#82h; acall wrc; mov a,#41h; A acall wrd; mov a,#83h; acall wrc; mov a,#50h; P acall wrd; mov a,#84h; acall wrc; mov a,#54h; T acall wrd; ret ; ;*********************************************** 331 332 sa2 nop ; cpl y1; Звук.частота 1кГц mov a,#80h;Обнуление счетчика acall wrc; знакоместа mov a,#048h; H acall wrd; mov a,#043h; C acall wrd; mov a,#02fh; / acall wrd; mov a,#052h; R acall wrd; mov a,#050h; P acall wrd; mov a,#04dh; M acall wrd; ret ; ;*********************************************** sa3 acall cls; mov a,#80h;Обнуление счетчика acall wrc; знакоместа mov a,#0a8h; П acall wrd; mov a,#045h; Е acall wrd; mov a,#0abh; Ч acall wrd; mov a,#041h; А acall wrd; mov a,#054h; Т acall wrd; mov a,#0c4h; Ь acall wrd; ret ; ;*********************************************** sa4 acall cls ; mov a,#80h;Обнуление счетчика acall wrc; знакоместа mov a,#032h; 2 acall wrd; mov a,#02fh; / acall wrd; mov a,#034h; 4 acall wrd; mov a,#054h; T acall wrd; mov a,#041h; A acall wrd; mov a,#04bh; K acall wrd; 332 333 mov a,#054h; T acall wrd; mov a,#0c0h;Переход на 2-ю строку acall wrc; mov a,#0aah; Ф acall wrd; mov a,#0a5h; И acall wrd; mov a,#048h; H acall wrd; mov a,#0a5h; И acall wrd; mov a,#0ach; Ш acall wrd; ret ; ;*********************************************** tau6 mov r1,#06h; tau6=6 ms t61 mov a,r1; jnz t61; ret ; ;*********************************************** #INCLUDE EQU552.ASM .end 333 334 6.3. Отладочные средства. Отладочные средства подразделяются на программные и аппаратные.К программным относятся кросс-ассемблеры и компиляторы языков высокого уровня(ЯВУ).К аппаратным средствам можно отнести программаторы, эмуляторы ПЗУ,внутрисхемные эмуляторы и адаптируемые отладочные системы. 6.3.1. Программные отладочные средства. Наиболее популярным представителем этого класса является турбоассемблер TASM.Это наиболее гибкий кросс-ассемблер для MCS51.Он позволяет настраиваться на любую систему команд. Программа пишется на ассемблере в любом текстовом редакторе.З атем она обрабатывается турбоассемблером и 16-чный модуль загружается в эмулятор ПЗУ EMD256.Приводим один из вариантов работы с TASM. Руководство пользователя TASM. 1.Запустить командный файл comp_51.bat с именем своего ассемблеpного файла,но без pасшиpения. 2.Будут получены след.файлы: <name>.lst - листинг, <name>.obj - объектный файл, <name>.sym - табл.символов. 3.Переименовать <name>.obj в <name>.hex и переслать его в директорию EMD256. 4.Загрузить <name>.hex в эмулятор ПЗУ. Для этого нужно вызвать командный файл tr.bat (name).hex в директории EMD256. Широко применяются также кросс-компиляторы C51 и PAS51 для ЯВУ С и PASCAL. Особый класс отладочных средств составляют симуляторы,представляющие собой математическую модель разрабатываемого МКУ. Недостатком такого подхода является отсутствие реального масштаба времени. 6.3.2. Аппаратные отладочные средства. Строго говоря программаторы с большой натяжкой можно отнести к отладочным средствам. Тем не менее при проектировании микроконтроллерных устройств (МКУ) без программаторов не обойтись.Они нужны для того, чтобы "зашить" в ПЗУ отлаженную программу. Номенклатура программаторов достаточно обширна. Они выпускаются различными отечественными фирмами: "КТЦ-МК", "Фитон", "Точка опоры" и др. Среди программаторов наиболее приемлемыми по цене и функциональным возможностям нужно назвать программаторы следующих типов: "Стерх","Unipro", "picPROG+". 334 335 К апаратным отладочным средствам следует отнести также макетноотладочные платы типа EB-552,KIT-552,KIT-PIC01,KIT-PIC-03 и т.п. Эти платы предоставляют в распоряжение пользователя аппаратное ядро разрабатываемого МКУ, избавляют его от необходимости лишних монтажных работ и "изобретения велосипеда". Эмулятор микросхем ПЗУ ф. "КТЦ-МК" типа EMD256 предназначен для эмуляции работы микросхем ПЗУ типа 27256 непосредственно в составе отлаживаемой схемы, как в качестве программной памяти в микропроцессорных системах,так и памяти микропрограмм для микропрограммных автоматов. Класс внутрисхемных эмуляторов настолько обширен, что нет смысла перечислять все типы. Как правило это узко ориентированные программноаппаратные устройства, рассчитанные на конкретный тип МК или микропроцессора (МП).Стоимость их относительно высока,поэтому большинство разработчиков обходятся эмуляторами ПЗУ. 6.3.3. Адаптируемая отладочная система для проектирования микроконтроллеров Отладочные системы (ОС) разработки микроконтроллерных устройств (МКУ) являются основным инструментом при проектировании и отладке цифровых устройств на базе микропроцессоров (МП) и однокристальных микроЭВМ(МЭВМ). И если внедрение микропроцессоров (МП) и микроконтроллерных устройств считается основой научно-технической революции, то создание ОС является основой основ этой революции. Существует несколько типов отладочных систем. Мы будем рассматривать наиболее эффективную: ОС с внутренней эмуляцией. В этой категории создаются два типа ОС: на базе специализированных чрезвычайно дорогих и как правило недоступных отладочных кристаллов или на основе серийных МП и МЭВМ. Разработчики предпочитают ОС на серийных МП и МЭВМ. В настоящее время широкое распространение получили так называемые «микро-чипы» серии РIС. Фирменные отладочные средства стоят около 10 тыс. долларов и построены на базе отладочного кристалла, который не поставляется отдельно. Однако данная фирма поставляет на рынок БИС МЭВМ типа РIС 17С42. Эта БИС имеет открытую шину адреса-данных, что позволяет разработать для всех МЭВМ данной серии адаптируемый внутрисхемный эмулятор с режимом реального времени. Выбор каналов управления МЭВМ для обеспечения режимов отладки в традиционных схемах чрезвычайно ограничен. В качестве таких каналов используется либо вход готовности(Readу), либо вход запроса прерывания (Int). К сожалению, вход Readу имеется далеко не у каждой МЭВМ, а использование входа Int ограничивает возможности целевого МКУ. Кроме того, существуют рMOS-динамические архитектуры, которые в принципе не допускают остановки МП и организации пошагового режима отладки. Традиционно под каждый процессор разрабатывается своя специализированная отладочная система. Специализация затрагивает не только программное обеспечение, но и всю аппаратную поддержку Это приводит к тому, что создание отладочных средств под новый микропроцессор затягивается на 1-2 года, а их стоимость достигает 5-10 тыс. долларов. В связи с этим возникла задача по разработке адаптируемой отладочной системы(АОС) для проектирования МКУ[15]. Эта АОС должна обеспечивать 335 336 достижение следующих технических результатов : - расширение сферы применения за счёт обеспечения отладки любых микропроцессоров, имеющих открытую шину адреса данных и хотя бы один из входов :Readу(готовность), с(тактовый) или Int(прерывание); - неизменность аппаратной реализации для отладки различных микропроцессоров и микро-ЭВМ при минимальном объёме корректировки программного обеспечения инструментальной ПЭВМ; - возможность потактовой и покомандной отладки МКУ, что позволяет диагностировать целевой процессор ; - простота реализации. За последние 10 лет архитектура отладочных средств с внутрисхемной эмуляцией для проектирования микроконтроллерных устройств не претерпела сколько-нибудь заметных изменений. Традиционно ОС строятся из трёх блоков : блок сопряжения (БС), блок загрузки и управления (БЗУ), блок отладочной модели (БОМ). БС выполняется либо в виде платы параллельного интерфейса, встраиваемого во внутренний канал персонального компьютера (ПК) IВМ РС, либо в виде устройства последовательного дрступа, подключаемого к одному из внешних СОМ-портов. Первый вариант реализации предпочтительнее. Разработка БС прекрасно изложена в периодике, однако схемные реализации здесь грешат избыточностю. Около 10 лет автором экссплуатируется параллельный БС на 3-х ИС средней интеграции, обепечивающий побайтовое сопряжение с 21 каналом. Габариты БС 105х115 мм. БС встраивается во внутренний канал ПК. Отладочная модель для каждого типа микропроцессора (МП) или однокристальной микро-ЭВМ(ОМЭВМ) должна быть уникальной. Связано это с обеспечением режима реального времени. Однако аппаратные затраты на уникальность незначительны : всего 1-2 орпуса. БОМ включает в себя МП или ОМЭВМ и, возможно, регистр адреса. Схема БОМ традиционна и не создаёт проблем разработчику. Конструктивно БОМ представляет собой сменный элемент, подключённыё к выходному разъёму БЗУ. К выходному разъёму БОМ в свою очередь подключается ленточный кабель, оканчивающийся так называемым сокетом, который вставляется в колодку на отлаживаемом МКУ вместо целевого МП или ОМЭВМ. Такое подключение позволяет проводить отладку МКУ в реальном масштабе времени. БЗУ в адаптируемой отладочной системе(АОС) является универсальным узлом. В традиционных архитектурах БЗУ уникален. БЗУ АОС содержит интерфейсы адреса-данных(ИАД) и управляющих сигналов(ИУС) для связи с инструментальной персональной ЭВМ, ОЗУ программ пользователя (ОЗУПП), ОЗУ контрольных точек (ОЗУКТ), формирователь сигнала управления (ФСУ), коммутатор шины адреса (КША) и коммутатор шины данных (КШД), а также программируемый блок (ПБ), интезирующий сигналы управления для целевого МП или МЭВМ. 336 337 Блок-схема АОС. В предпочтительном варианте выполнения программируемый блок может содержать синхронизатор(СГ), регистр(РГ) и программируемую комбинационную схему (ПКС). Вышеуказанное выполнение ПБ позволяет расширить номенклатуру отлаживамых МКУ, обеспечить адаптацию под новые типы микропроцессоров и ОМЭВМ. Причём адаптации подвергается несущественная часть программного обеспечения, аппаратная поддержка остаётся без изменения. Наличие программируемого блока позволяет по выбору разработчика использовать для отладки входы синхронизации, готовности или прерывания целевого микропроцессора. Для этого разработчику необходимо лишь переписать содержимое ПКС. Наличие дублирующей выходной шины управления позволяет в некоторых случаях обходиться без регистра и повысить быстродействие АОС. При использовании тактового входа целевого МП для отладки для отладки МКУ программируемый блок позволяет обеспечить как покомандное, так и потактовое исполнение программы пользователя, что делает возможной диагностику не только МКУ, но и целевого МП. 337 338 Схема программируемого блока АОС. Программируемый блок может быть реализован на одной микросхеме программируемой логической матрицы (ПЛМ) типа КС1556ХП8 или КС1556ХП6, либо на БИС матрицы логических ячеек (МЛЯ) типа Altera или Хilinx. Однако ПБ можно выполнить и на трёх микросхемах. Для этого достаточно одного 8разрядного регистра, одной микросхемы ПКС, в качестве которой можно использовать ПЛМ типа КР556РТ2, ППЗУ КР556РТ7 или КР556РТ16, а также РПЗУ К573РФ4 или ОЗУ любого типа ёмкостью не менее 2к х 8 бит; в качестве синхрогенератора можно применить микросхему обычного счётчика. Назначение блоков, узлов и шин АОС описывается следующим образом. Блок ИАД предназначен для приёма и передачи адреса и данных от инструментальной ПЭВМ. Блок ИУС передаёт сигналы управления от инструментальной ПЭВМ на ФСУ и ПКС. Блок ОЗУПП хранит программу пользователя, а также программу выведения содержимого внутренней памяти целевого процесора, которая загружается в ОЗУПП лишь на время её исполнения. ФСУ служит для формирования сигналов управления работой ОЗУПП, ОЗУКТ, КША, МШД. ОЗУКТ хранит информацию о наличии контрольных точек, что позволяет останавливать выполнение программы пользователя при достижении заранее заданных адресов. ПКС формирует функции возбуждения для регистра и выхъодные функции ДШУВых для ПБ. СГ формирует синхросигналы для Рг и синхронизированную частоту для МКУ. КША коммутирует ШАВ от целевого процессора на ША. ШД мультиплицирует и коммутирует ШДВ на ШД в прямом и обратном направлении. Регистр совместно с ПКС и СГ образуют ПБ, являющийся последовательностным автоматом. Посколку даже 8-разрядный регистр допускает построение КА на 256 состояний, то это позволяет утверждать, что практически для любого МКУ может быть реализована своя система булевых функций для ПКС. Однако для записи булевых функций в ПКС требуется программатор или набор сменных модулей ПКС. Это не всегда удобно, поэтому ПКС можно выполнить на базе ОЗУ и менять набор булевых функций, переписывая их из инструментальной ПЭВМ непосредственно в ОЗУ. Данная архитектура при управлении работой МКУ по 338 339 тактовому входу допускает также возможность неизменной системы булевых функций в ПКС 6 для некоторых типов процессоров. Управление работой МКУ по тактовому входу является относительно сложным, но зачастую единственно возможным. Значительно проще управление по входам Готовность или Прерывание. Традиционные аппаратные реализации такого управления для МП и ОМЭВМ типа Iutel 8080, Iutel 8048, Z 80 и т.п. свободно вписываются в схему ПБ. Подобная архитектура позволяет перенастраивать ПБ под любой тип МП или ОМЭВМ. Кроме того, для управления в пошаговом режиме не занимается вход прерывания базового МП. Необходимости в применении специальных отладочных МП также не возникает. С помощью описанной АОС были разработаны и переданы заказчику МКУ на базе ОМЭВМ КР1814ВЕ1(р-МОП с динамической памятью), КР1806ВЕ1 (4-разрядная, КМОП), К1868ВЕ1, КР1816ВЕ51, R6504, М6820 и др. Адаптация занимала от 2-х недель до месяца. Архитектура АОС защищена в Роспатенте под №523 от 16.06.1995г. АОС реализована на 14 корпусах БИС в отдельном конструктиве с размерами 155х125х25 мм. Программная часть отладочной системы написана в среде ДССП (создатель - Брусенцов Н.П., МГУ) вед.инженером Локтевым Н.М. Выбор данной cреды объясняется наличием большого опыта работы программиста в данной среде и наличия определённых программных наработок. Полная версия программы поддержки отладочного устройства включает в себя следующие программные компоненты: - так называемая базисная система, которая гораздо шире базовой системы ДССП за счёт того,что к ней пристыковано большинство из имеющихся в составе ДССП библиотек : - программа создания и поддержки параметров настройки и функционирования системы ; - программа сохранения системы и авторизации доступа ; - модуль дизассемблера ; - модуль редактирования памяти ; - модуль поддержки аппаратной части отладчика ; - сервисная оболочка системы ; - кросс-ассемблер ; - управляющая программа аппаратной части ; - модуль программатора ПЗУ. Краткие технические характеристики АОС 1. Разрядность целевых процессоров, бит - 4; 8 2. Объём ОЗУ программ, кбайт -4 3. Количество контрольных точек - 4096 4. Количество корпусов ИМС - 14 5. Основные режимы работы : - отладка программ ; - сброс всех контрольных точек ; - распечатка справочника по системе ; - запись любого участка ОЗУ программ на магнитный носитель в виде файла ; - чтение файла программы и запись его в ОЗУ программ ; - запись-чтение внешней и внутренней памяти МКУ на магнитный искатель. 6. Режим отладки включает в себя автоматический и пошаговый режимы, 339 340 а также режим контрольных точек. 340 341 6.4. Средства контроля и диагностики. По окончании этапа разработки даже на стадии выпуска опытной партии приборов на базе МКУ возникают проблемы организации контроля и диагностики. Ручной контроль чрезвычайно обременителен и ненадежен. Организация автоматизированного контроля требует разработки соответствующего оборудования. Зарубежное стоит чрезвычайно дорого. Цена систем контроля достигает нескольких тысяч долларов. Поэтому значительно дешевле разработать достаточно простые и надежные системы на базе персонального компьютера (ПК). Такая система состоит из платы параллельного интерфейса и блока контрольно-диагностического устройства (КДУ). КДУ для проверки любого цифрового устройства, имеющего не более 24 входов/выходов, реализован автором на 6 микросхемах среднего уровня интеграции. КДУ позволяет не только проводить входной контроль микросхем, но и проверять готовые изделия на частотах порядка 500 кГц. Переход на более высокие частоты связан с введением ОЗУ и не представляет сложной проблемы. Программная поддержка проста, но громоздкая база данных потребует значительных усилий по ее наращиванию, введению данных по новой комплектации. Однако уровень программистов для пополнению этой базы данных может быть очень низким. В принципе на основе ПК может быть создано рабочее место разработчика, включающее в себя средства отладки и контроля. Такой инженерный комплекс автоматизации разработок (ИКАР) явился бы весьма эффективным инструментом для отечественных приборостроителей. В качестве такой универсальной контрольно-диагностической системы (УКОС) может быть использована схема, представленная на рисунке. УКОС может работать как в автономном режиме, так и в системе с персональным компьютером. Она легко перепрограммируется из средства контроля в систему отладки микроконтроллеров. 341 342 БЛОК-СХЕМАУКОС - вар.15.04.2004 D Упр 2 3 4 5 6 7 8 9 А B C D E F СУ AD8138AR C Int1 УПР УПР CLK 6МГц CЧ (1к) R3 510 JTG1 UDClk R2 100 3 R1 1к 8 Согласующее устр-во FT8U245AM 32 логические вх/вых 74АС14ТТR авт / ручн ТШ P1 Сброс по питанию ЖКИ 4 х 20 DV-20400S1FBLY/R Аудио-2 I/O JTG1 8 Аудио-1 Примечания 1.СУ - согласующее устроиство 2.Задействованы около 100 из 147 выводов пользователя 3.Для запоминания одного ТВ-поля требуется не менее 20мс/20нс = 1Мслово по 14 бит. 4.Для одного из логических вх/вых резистор R1 заменить со 100 Ом на 510 Ом. 5.При включении питания обеспечить высокоимпедансное состояние по выходу UDClk 6.Номинальная скорость передачи по LPT- порту 2 Мбайт/с. 7. Время записи в RAM2 равно int[4 Мслов х 18бит/слово / (2М х8)бит/с] = 5 с R4 1к CLK + - ФНЧ AD 8138 Int1 XTAL1 Int0 1 RDY ТГ 75МГц AT89C5131-S3SIL 2 USB-МК 0 КП1554АП6 (74АС245) RDY P4 18 + - CLK DLC 8 8 2 ADM 488AR 75МГц 2 Синх AD9854ASQ P0 EP1K100QC208-1 MPU P3 3 RS-485 PLA1 Коммутатор 2 ST232BW RAM - 49 кбит users pin = 147 3 RS-232 9 8 USER Reset 88 ТШ 10 4 P2 PLA2 Reset VD6 +5В,-5В, +3,3В,+2,5В 2 USB-ПЛИС R6 100 R5 330 LPT 16 LPT 4 3 JTG1 SRAM JTAG1 75МГц 2 14 f50 DA1 14 СУ ADC AD 9244 BST-40 37,5МГц + - ФНЧ AD 9755 АТТ AD 8009 УПР Видео AT65-0106 50дБ,6бит,2ГГц 18 18 ADR CE1 D1E WE1 WE2 AD USER DE2 CE2 144 ADClk 14 AD 8138 AR Вход аналоговый EPC2LC20 + - DAC 21 А0-20 RAM1 2 JTG2 2 корп. C D1 D2 DA2 3 4 JTAG2 6 АТТ 3 R7 10к RAM - 49 кбит users pin = 147 Релейный блок вкл. питания . . . . . . EP1K100QC208-1 8 75 МГц 75 МГц D CE DE WE 21 (2кор.) 7,5нс K7N321801M А0-20 RAM2 2 75 МГц 2 CE DE WE D логические входы (2кор.) 7,5нс K7N321801M Для отладки схемы УКОС рекомендуется использование простого контрольно-диагностического устройства (КДУ), блок-схема которого представлена на рис. Блок-схема мини-КДУ - вар.15.04.04 Разъём модулятора 1 LPT-разъём R1 100 Входы/ выходы ПК 24 D R2 10к ТГ 50МГц B689-V5 Управление R3 1к CLK 4 4 4 ТШ 147 МГц, 2,5 нс, EPM7128SLC84-15 Занято 63 из 68 вх/вых. PLA1 логические вх/вых Разъём модулятора 2 логические вх/вых Цепи питания 32 R6 100 внешнее питание Разъём связи с ОК 32 I/O логические вх/вых R5 10к Упр +5В Сброс 4 R4 1к ТШ СБР JTAG JTAG R7 1к +5В D+5 В Сброс по питанию Примечания 1.Питание +5В/1А. 2.Задействованы 63 из 68 выводов пользователя 3.Для одного из логических вх/вых(UDClk) резистор R5 заменить со 100 Ом на 510 Ом. 4.При включении питания обеспечить высокоимпедансное состояние по выходу UDClk 5.Внешнее питание: D+5В,D+3,3В,А+5В,А-5В,А+3,3В. Reset 342 343 program generat; uses crt; var m:array[0..255] of integer; i,n,t:integer; {=========================================================} begin clrscr; writeln('╔════════════════════════════════════════╗'); writeln('║ Программа управления "Генератор". ║'); writeln('║ Для выхода из программы нажмите "ENTER". ║'); writeln('║ Лобанов В.И. 19-03-2004. ║'); writeln('╚════════════════════════════════════════╝'); writeln; write('Введите задержку(t в мс) и длину массива(n) '); readln(t,n); for i:=0 to n-1 do m[i]:=i; i:=0; repeat{имитация работы 8-разрядного двоичного счётчика} delay(t); port[$378]:=m[i]; {посылка в порт 378h байт из массива m[]} if i=n-1 then i:=0 else inc(i); until keypressed; clrscr; end. 343 344 6.5. Синтез проверяющих тестов для комбинационных схем. Подавляющее большинство разработчиков ограничивает свои притязания функциональным контролем изделия. Этого безусловно недостаточно для гарантии работоспособности цифрового устройства (ЦУ). Кроме функционального существует ещё и тестовый контроль, который в свою очередь подразделяется на проверяющий и диагностический. Фундаментальные результаты в области синтеза тестов для ЦУ были получены в Институте проблем управления (см. работы Пархоменко П.П., «Основы технической диагностики» - М.: Энергия,1978). Даже построение проверяющих тестов представляет собой весьма сложную проблему. Поэтому ограничимся расссмотрением синтеза проверяющих тестов для комбинационных схем. Существуют формальные методы построения проверяющих тестов, обнаруживающих кратные неисправности, существуют и программные пакеты синтеза таких тестов. Однако в настоящее время всё это либо слишком дорого, либо не удовлетворяет требований разработчиков. При соблюдении условий управляемости и наблюдаемости любое ЦУ может быть разбито на комбинационные узлы и элементы памяти, к которым при использовании контролепригодных регистров типа LSSD обеспечивается непосредственный доступ. Контроль ЦУ представляет в этом случае раздельное тестирование комбинационных схем и элементов памяти. Здесь будут кратко рассмотрены лишь вопросы контроля «комбинаторики». Наибольшей проверяющей способностью для комбинационных схем обладает так называемый тривиальный тест, обнаруживающий максимальное количество неисправностей. Однако длина такого теста весьма велика и составляет 2n , где n – количество входов комбинационной схемы. Для некоторых регулярных устройств эта величина может быть существенно уменьшена. В 1978г. при разработке прибора 20 изделия 83В6 оборонного назначения автором был построен тест, эквивалентный тривиальному, для многовходового сумматора с последовательным переносом. Черновик статьи был представлен Халчеву В.Ф. (ИПУ) и далеко не сразу встретил его понимание. В связи с тем, что сумматор обладает регулярной структурой, имеется возможность построения короткого теста, эквивалентного тривиальному и не зависящему от разрядности объекта контроля. Для этого построим такой тест, который для каждого разряда сумматора обеспечит тривиальное тестирование. Поскольку каждый разряд сумматора имеет три входа, то длина тривиального теста не превысит 8 наборов. Покажем на частном примере синтеза проверяющего теста для 6-разрядного сумматора, что длина общего теста не зависит от разрядности и равна 8 наборам. Пусть вход переноса для млашего разряда сумматора обнулён, т.е. соединён с «землёй». Синтез теста иллюстрируется таблицами 1 и 2. В табл.1 представлены проверяющие наборы и их номера для 6-разрядного сумматора, в табл.2, в левой её части расписаны наборы тривиального теста для одного разряда сумматора, а в правой части отмечено, каким проверяющим набором из табл.1 создаётся для данного разряда каждый набор тривиального теста. В таблицах идентификаторы ai, bi обозначают соответственно i-ые разряды первого и второго слагаемых, а pi-1 – входной перенос i-го разряда, т.е. эти переменные описывают все входы i-го разряда сумматора. Из табл. 2 вид- 344 345 но,например, что пабором 1 из табл.1 создаётся набор 000 тривиального теста для всех разрядов сумматора. Набор 5 создаёт набор 001 для 3-го и 5-го разрядов сумматора и набор 110 для 2-го, 4-го и 6-го разрядов сумматора. Таким образом, для построения проверяющего теста, эквивалентному тривиальному, необходимо, чтобы правая часть табл.2 была полностью покрыта номерами проверяющих наборов из табл.1. Таблица 1. Номер набора 1 2 3 4 5 6 7 8 aaaaaa 654321 000000 111111 000000 111111 101010 010101 111111 000001 bbbbbb 654321 000000 000000 111111 111111 101010 010101 000001 111111 Таблица 2. Тривиальный тест aibipi-1 000 001 010 011 100 101 110 111 Разряды сумматора s6s5s4s3s2s1 111111 65656333333 83838222222 77777565656 44444- В нашем случае непокрытым оказался первый разряд на наборах 001,011,101 и 111, т.е. на тех наборах, на которых входной перенос 1-го разряда должен принять значение 1. Эти 4 набора физически нереализуемы, т.к. вход переноса 1-го разряда соединён с «землёй». Следовательно, тест, эквивалентный тривиальному, построен. Очевидно, что предлагаемый подход можно применить к синтезу проверяющих тестов для сумматоров любой разрядности. В табл.3 приводится тест для 11-разрядного сумматора, из которой видно, что изменилась только длина каждого набора, а порядок чередования нулей и единиц в наборах остался прежним. Естественно, это не единственный тест для проверки сумматора, но вполне очевидно, что длина его минимальна. 345 346 Таблица 3. Номер Входы a11 – a1 Входы b11 – b1 набора 1 00000000000 00000000000 2 11111111111 00000000000 3 00000000000 11111111111 4 11111111111 11111111111 5 01010101010 01010101010 6 10101010101 10101010101 7 11111111111 00000000001 8 00000000001 11111111111 В том случае, если входной перенос младшего разряда может принимать значения 0 и 1, то длина теста может увеличиться, но не более, чем на 4 набора. Если немного подумать, то, вероятно, и для этого случая можно найти тривиальный тест длиной 8 наборов. Синтез неоптимального тривиального теста для 3-разрядного сумматора приводится в табл.4 и табл.5. Таблица 4. Номер Входы a3 – a1 набора 1 000 2 111 3 000 4 111 5 010 6 101 7 111 8 001 9 000 A 000 B 001 C 001 Таблица 5. Тривиальный тест aibipi-1 000 001 010 011 100 101 110 111 Входы b3 – b1 Вход p0 000 000 111 111 010 101 001 111 000 001 000 001 0 0 0 0 0 0 0 0 1 1 1 1 Разряды сумматора s3s2s1 111 569 333 38A 222 77B 656 44C 346 347 Анализ приводимых примеров позволяет утверждать, что предлагаемая методика обеспечивает синтез проверяющих тестов эквивалентных тривиальным в области обнаружения как минимум одиночных неисправностей, для параллельных многоразрядных сумматоров с последовательным переносом. Длина этих тестов не превышает 12 наборов и не зависит от разрядности сумматора. Время построения теста вручную для 20-разрядного сумматора не превышает 30 минут. 347 348 Глава седьмая ПРОЕКТИРОВАНИЕ МПА НА БАЗЕ ПЛИС. 7.1. ОПТИМАЛЬНОЕ ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ СИСТЕМ УПРАВЛЕНИЯ. Международный валютный фонд (МВФ) потребовал от России ликвидации ведущих технических вузов: МВТУ им. Баумана, МЭИ, МАИ, ЛПИ, НПИ и др. (р/с «Резонанс», 23.09.2003). В настоящее время идёт медленное тотальное уничтожение Российского образования и науки. «Вымирают» целые кафедры технических вузов, т.е. целые, зачастую уникальные, научные направления, Плодятся лишь псевдонаучные гуманитарные «академии» по выращиванию болтунов и демагогов. В этих условиях минимальной задачей старшего поколения советских инженеров и учёных, проспавших Советский Союз, является неукоснительная передача всего накопленного опыта и знаний новой генерации инженеров и учёных. Нельзя забывать, что в «технари» даже в советские времена шла наиболее талантливая молодёжь, тем более теперь. Это будущее России. В связи с разгромом советской электроники все разработчики лихо набросились на зарубежную элементную базу, поскольку здесь не нужно напрягать интеллект. Однако требования безопасности России диктуют безусловный переход на отечественную элементную базу. В цифровой и даже аналоговой электронике такой переход возможен лишь за счёт базовых матричных кристаллов (БМК). Мне как инженеру с 30-летним стажем хотелось бы помочь в деле проектирования молодым проектировщикам цифровой электроники. Разумеется, все мои рекомендации следует воспринимать критически, пытаясь найти альтернативное, возможно, более приемлемое решение. Автор не претендует на истину в последней инстанции. Разработчик – это прежде всего мыслитель, притом талантливый. Для начала рассмотрим работу над проектом в среде системы MAX+PLUS II фирмы ALTERA. Приведём сокращённое описание свободно распространяемой через Internet версии САПР MAX+PLUS II Baseline, в дальнейшем изложении мы будем ориентироваться преимущественно на неё. В приложении «Краткий справочник по Русской логике и ИМРЦУ» читатель найдёт сокращённую инструкцию (для лентяев, презирающих английский язык) по работе в САПР MAX+PLUS II Baseline. Автор - лентяй, поэтому и создал для себя такую шпаргалку. Название системы MAX+PLUS II является аббревиатурой от Multiple Array MatriX Programmable Logic User System. Система MAX+PLUS II имеет средства удобного ввода проекта, компиляции и отладки, а также непосредственного программирования устройств. 348 349 Процедуру разработки нового проекта от концепции до завершения можно упрощённо представить следующим образом: 1.создание нового файла проекта или иерархической структуры нескольких файлов проекта с помощью любого сочетания редакторов в системе MAX+PLUS II, то есть графического, текстового и сигнального редакторов; 2.задание имени файла — проекта верхнего уровня в качестве имени проекта; 3.назначение семейства ПЛИС для проекта; 4.открытие окна компилятора Compiler и выбор кнопки Start для начала компиляции проекта. По желанию пользователя можно подключить модуль извлечения временных параметров проекта Timing SNF Extractor для создания файла, используемого при временном моделировании; 5. в случае успешной компиляции возможен временной анализ, для чего следует выполнить следующее: для проведения временного анализа задержек открыть окно Timing Analyzer, выбрать режим анализа и нажать кнопку Start; для проведения симуляции нужно сначала создать векторной тестовый вектор в файле канала тестирования (.scf), пользуясь сигнальным редактором, или в файле вектора (.vec), пользуясь текстовым редактором. Затем открыть окно отладчика Simulator и нажать кнопку Start; 6.открытие окна программатора Programmer с по-следующим выбором одного из двух способов: использование программатора MPU (Master Programming Unit) или подключение загрузочных устройств BitBlaster, Byte-Blaster или FLEX Download Cable к устройству, программируемому в системе; 7. выбор кнопки Program для программирования устройств с памятью типа EPROM или EEPROM либо выбор кнопки Configure для конфигурации устройства с памятью типа SRAM. ПО системы MAX+PLUS II содержит 11 приложений и главную управляющую программу. Различны приложения, обеспечивающие создание проекта, могут быть активизированы мгновенно, что позволяет пользователю переключаться между ними щелчком мыши или с помощью команд меню. В это же время может работать одно из фоновых приложений, например, компилятор, симулятор, анализатор синхронизации и программатор. Одни и те же команды разных приложений работают одинаково, что облегчает задачу разработки логического дизайна. Hierarchy Display Обзор иерархии - отображает текущую инрархичнскую структуру файлов в виде дерева светвями, представляющими собой подпроекты Graphic Editor Графический редактор - позволяет разрабатывать схемный логический проект в формате реального отображения на экране WYSIWYG 349 350 Symbol Editor Символьный редактор - позволяет редактировать существующие символы и создавать новые Text Editor Текстовый редактор - позволяет создавать и редактировать текстовые файлылогического дизайна, написанные на языках AHDL, VHDL, Verilog HDL Waveform Editor Сигнальный редактор - выполняет двойную функцию: инструмент для рахработки дизайна и инструмент для ввода тестовых векторов и наблюдения результатов тестирования Floorplan Editor Поуровневый планировщик - позволяет графическими средствами делать назначения контактам устройства и ресурсов логических элементов Compiler Компилятор - обрабатывает графические проекты Simulator Симулятор - позволяет тестировать логические операции и внутреннюю синхронизацию проектируемой логической цепи Timing Analyzer Временной анализатор - анализирует работу проектируемой логической цепи после того, как она была синтезирована и оптимизирована компилятором Programmer Программатор - позволяет программировать, конфигурировать, проводить верификацию и тестировать ПЛИС фирмы ALTERA Message Processor Генератор сообщений - выдает на экран сообщения об ошибках, предупреждающие и информационные сообщения Перед тем как начать работать в системе MAX+PLUS II, следует понять разницу между файлами проекта, вспомогательными файлами и проектами. 350 351 Файл проекта — это графический, текстовый или сигнальный файл, созданный с помощью графического или сигнального редакторов системы MAX+PLUS II или в любом другом, использующем промышленные стандарты, схемном или текстовом редакторе либо при помощи программы netlist writer, имеющейся в пакетах, поддерживающих EDIF, VHDL и Verilog HDL. Этот файл содержит логику для проекта MAX+PLUS II и компилируется компилятором. Компилятор может автоматически обрабатывать следующие файлы проекта: графические файлы проекта (.gdf); текстовые файлы проекта на языке AHDL (.tdf); сигнальные файлы проекта (.wdf); файлы проекта на языке VHDL (.vhd); файлы проекта на языке Verilog (.v); схемные файлы OrCAD (.sch); входные файлы EDIF (edf); файлы формата Xilinx Netlist (.xnf); файлы проекта Altera (.adf); файлы цифрового автомата (.smf). Вспомогательные файлы — это файлы, связанные с проектом MAX+PLUS II, но не являющиеся частью его иерархического дерева. Большинство таких файлов не содержит логики проекта. Некоторые из них создаются автоматически приложением системы MAX+PLUS II, другие — пользователем. Примерами вспомогательных файлов являются файлы назначений и конфигурации (.acf), символьные файлы (.sym), файлы отчета (.rpt) и файлы тестовых векторов (.vec). Проект состоит из всех файлов иерархической структуры проекта, в том числе вспомогательных и выходных файлов. Именем проекта является имя файла проекта верхнего уровня без расширения. Система MAX+PLUS II выполняет компиляцию, тестирование, анализ синхронизации и программирование сразу целого проекта, хотя пользователь может в это время редактировать файлы этого проекта в рамках другого проекта. Для каждого проекта желательно создавать отдельный подкаталог в рабочем каталоге системы MAX+PLUS II. В системе MAX+PLUS II легко доступны все инструменты для создания проекта. Разработка проекта ускоряется за счёт имеющихся стандартных функций, в том числе примитивов, мегафункций, библиотеки параметризованных модулей (LPM) и макрофункций устаревшего типа микросхем 74 серии. В системе MAX+PLUS II есть три редактора для разработки проекта: графический, текстовый и сигнальный, а также два вспомогательных редактора: поуровневый планировщик и символьный редактор. В иерархической структуре проекта на любом уровне допускается смешанное использование файлов с расширениями “.gdf .tdf .vhd .v .edf .sch”. Однако файлы с расширением “.wdf .xnf .adf .smf ” должны быть либо на самом нижнем иерархическом уровне проекта, либо быть единственными. Во всех приложениях MAX+PLUS II есть возможность с помощью команд из меню Assign вводить, редактировать и удалять типы назначений ресурсов, устройств и параметров, которые управляют компиляцией проекта. Пользователь может делать назначения для текущего проекта независимо от того, открыт ли какой-нибудь файл проекта или окно приложений. Доступны следующие типы назначений. 351 352 Clique assignment (Назначение клики) задаёт, какие логические функции должны оставаться вместе в одном и том же блоке логической структуры LAB, блоке ячеек памяти EAB, в одном ряду или устройстве. Chip assignment (Назначение кристалла) задаёт, какие логические функции должны быть реализованы в одном и том же устройстве в случае разделения проекта на несколько устройств. Pin assignment (Назначение контакта) назначает вход или выход одной логической функции конкретному контакту или нескольким контактам чипа. Location assignment (Назначение ячейки) назначает единственную логическую функцию конкретной ячейке чипа. Probe assignment (Назначение зонда) присваивает уникальное имя входу или выходу логической функции. Connected pin assignment (Назначение соединенных контактов) задаёт внешнее соединение двух или более контактов на схеме пользователя. Local routing assignment (Назначение местной разводки) присваивает коэффициент разветвления по выходу узла логическому элементу, находящемуся в том же блоке LAB, что и узел, или в соседнем LAB, прилежащем к узлу, с использованием общих местных разводок. Device assignment (Назначение устройства) назначает тип ПЛИС, на которой реализуется проект. Logic option assignment (Назначение логической опции) управляет логическим синтезом отдельных логических функций во время компиляции с применением стиля логического синтеза. Timing assignment (Назначение временных параметров) управляет логическим синтезом и подгонкой отдельных логических функций для получения требуемых характеристик для времени задержки tPD (вход – неподрегистренный выход), tCO (синхросигнал – выход), tSU (синхросигнал – время установки), fMAX (частота син-хросигнала). Можно определить глобальные опции устройства для компилятора, чтобы он использовал их для всех устройств при обработке проекта. Для резервирования дополнительных возможностей на будущее можно задать процентное соотношение контактов и логических элементов, которые должны оставаться неиспользованными во время текущей компиляции. С использованием команды Global Project Para-meters можно задать имена и глобальные установки, которые будут использованы компилятором для параметров всех параметризованных функций в проекте. При помощи команды Global Project Timing Require-ments можно ввести глобальные требования по синхронизации для поекта, задавая общие характеристики для времени задержки tPD (вход – нерегистрируемый выход), tCO (син- 352 353 хросигнал – выход), tSU (синхросигнал – время установки), fMAX (частота синхросигнала). Команда Global Project Logic Synthesis позволяет сделать глобальные установки для компилятора в части логического синтеза проекта. Все пять редакторов MAX PLUS II и три редактора создания дизайна (графический, текстовый и сигнальный) имеют общие функции, такие как, например, создание, сохранение и открытие файла. Кроме того, приложения редактора MAX PLUS II имеют следующие общие функции: создание файлов символов и файлов с прототипами функций (Include-файлы); поиск узлов; траверз иерархического дерева; всплывающие окна меню, зависящего от контекста; временной анализ; поиск и замена фрагментов текста; отмена последнего шага редактирования, его возвращения, вырезка, копирование, вставка и удаление выбранных фрагментов, обмен фрагментами между приложениями MAX PLUS II или приложениями Windows; печать. Графический редактор (Graphic Editor) обеспечивает проектирование в реальном формате изображения (WYSIWIG). Графические файлы проекта (.gdf) или схемные файлы OrCAD (.sch), созданные в данном графиче-ском редакторе, могут включать любую комбинацию символов примитивов, мегафункций и макрофункций. Символы могут представлять собой любой тип файла проекта (.gdf .sch .tdf .vhd .v .wdf .edf .xnf .adf .smf). Инструмент выбора (“стрелка”) облегчает разработку дизайна. Он позволяет двигать и копировать объекты, а также вводить новые символы. Когда вы помещаете его на контакт или конец линии, он автоматически преобразуется в инструмент рисования ортогональных линий. Если им щелкнуть на тексте, он автоматически преобразуется в инструмент редактирования текста. Графический редактор обеспечивает ряд других возможностей. Например, можно увеличивать или уменьшать масштаб отображения на экране, выбирать гарнитуру и размер шрифта, задавать стили линий, устанавливать и отображать направляющие, получать зеркальное отображение, поворачивать выделенные фрагменты на 90, 180 или 270 градусов; задавать размер и ориентацию текущего листа схемы. Символьный редактор (Symbol Editor) позволяет просматривать, создавать и редактировать символ. Символьный файл имеет то же имя, что и проект, и расширение “.sym”. Команда Creat Default Symbol меню File, которая есть в графическом, текстовом и сигнальном редакторах, создает символ для любого файла проекта. Символьный редактор обладает следующими характеристиками: можно переопределить символ, представляющий файл проекта, создавать и редактировать выводы и их имена, используя входные, выходные и двунаправленные выводы, а также задавать варианты ввода символа в файл графического редактора, задать значения параметров и их значения по умолчанию; сетка и направляющие помогают выполнить точное выравнивание объектов, в символе можно вводить комментарии. 353 354 Текстовый редактор (Text Editor) является инструментом для создания текстовых файлов проекта на языках описания аппаратуры: AHDL (.tdf), VHDL (.vhd), Verilog HDL (.v). В этом текстовом редакторе можно работать также с произвольным файлом формата ASCII. Все перечисленные файлы проекта можно создавать в любом текстовом редакторе, однако данный редактор имеет встроенные возможности ввода файлов проекта, их компиляции и отладки с выдачей сообщений об ошибках и их локализацией в исходном тексте или в тексте вспомогательных файлов; кроме того, существуют шаблоны языковых конструкций для AHDL, VHDL и Verilog HDL, выполнено окрашивание синтаксических конструкций. В данном редакторе можно вручную редактировать файлы назначений и конфигурации (.acf), а также делать установки конфигурации для компилятора, симулятора и временного анализатора. Пользуясь данным текстовым редактором, можно создавать тестовые векторы (.vec), используемые для тестирования, отладки функций и при вводе сигнального проекта. Можно также создавать командные файлы (.cmd — для симулятора и .edc — для EDIF), а также макробиблиотеки (.lmf). В текстовом редакторе MAX PLUS II обеспечивается контекстная справка. Сигнальный редактор (Waveform Editor) служит инструментом создания описания проекта, ввода тестовых векторов и просмотра результатов тестирования. Пользователь может создавать сигнальные файлы проекта (.wdf), которые содержат временные диаграммы, описывающие логику работы проекта, а также файлы каналов тестирования (.scf), которые содержат входные вектора для тестирования и функциональной отладки. Разработка описания проекта в сигнальном редакторе является альтернативой его созданию в графическом или текстовом редакторах. Здесь можно графическим способом задавать комбинации входных логических уровней и требуемых выходов. Созданный таким образом файл WDF может содержать как логические входы, так и входы цифрового автомата, а также выходы комбинаторной логики, счётчиков и цифровых автоматов. Способ разработки дизайна в сигнальном редакторе лучше подходит для цепей с чётко определёнными последовательными входами и выходами, то есть для цифровых автоматов, счётчиков и регистров. С помощью сигнального редактора можно легко преобразовывать временные диаграммы сигналов целиком или частично, создавая и редактируя узлы и группы. Простыми командами можно создавать файл таблицы ASCII-символов (.tbl) или импортировать файл тестовых векторов в формате ASCII (.vec) для создания файлов тестируемых каналов SCF и сигнального дизайна WDF. Можно также сохранить файл WDF как SCF для проведения тестирования или преобразовать SCF в WDF для использования его в качестве файла проекта. Сигнальный редактор имеет следующие отличительные черты: можно создать или отредактировать узел, задав его тип; при разработке WDF можно задать тип логики узла, задать значения по умолчанию в логическом узле, а также имя состояния по умолчанию в узле типа цифрового автомата, для упрощения создания тестового вектора можно легко добавить в файл тестируемых каналов SCF несколько узлов или все из информационного файла симулятора (.snf), существующего для полностью откомпилированного проекта, можно объединять от 2 до 256 узлов для создания новой группы (шины) или разгруппировывать объединённые ранее в группу узлы. Можно также объединять группы с другими группами. Значение группы может быть отображено в двоичной, десятичной, шестнадцатеричной или восьмеричной системе счисления с преобразованием или без в код Грэя, можно копиро- 354 355 вать, вставлять, перемещать или удалять выбранную часть (“интервал”) сигнала, а также весь узел или группу. Можно также инвертировать, вставлять, переписывать, повторять, расширять или сжимать интервал сигнала любой длины с любым логическим уровнем, тактовым сигналом, последовательностью счёта или именем состояния, задать сетку для выравнивания переходов между логическими уровнями, в любом месте файла можно вводить комментарии между сигналами, менять масштаб отображения. Для облегчения тестирования можно сделать наложение любых выходов в текущем файле или наложить второй файл сигнального редактора для сравнения сигналов его узлов и групп с соответствующими сигналами текущего файла. Поуровневый планировщик (Floorplan Editor) предназначен для назначения ресурсов физических устройств и просмотра результатов разводки, сделанных компилятором. В окне поуровневого планировщика могут быть представлены два типа изображения: Device View (Вид устройства) показывает все контакты устройства и их функции; LAB View (Вид логического структурного блока) показывает внутреннюю часть устройства, в том числе все логические структурные блоки (LAB) и отдельные логические элементы. После выполнения всех назначений и задания проекта приступают к его компиляции. Сначала компилятор извлекает информацию об иерархических связях между файлами проекта и проверяет проект на простые ошибки ввода описания проекта. Компилятор применяет разнообразные способы увеличения эффективности проекта и минимизации использования ресурсов устройства. Если проект слишком большой, чтобы быть реализованным в одном устройстве, компилятор может автоматически разбить его на части для реализации в нескольких устройствах того же самого семейства, при этом число соединений между устройствами минимизируется. В файле отчёта (.rpt) затем будет отражено, как проект будет реализован в одном или нескольких устройствах. Кроме того, компилятор создает программирующие файлы, используемые программатором для программирования одного или нескольких устройств. У разработчика также есть возможность настроить обработку проекта. Например, можно задать стиль логического синтеза проекта по умолчанию и другие параметры логического синтеза в рамках всего проекта, что позволит провести логический синтез в соответствии с вашими потребностями. Кроме того, вы можете ввести требования по синхронизации в рамках всего проекта, точно задать разбиение большого проекта на части для реализации в нескольких устройствах и выбрать варианты параметров устройств, которые будут применены для всего проекта в целом. Загрузку готового проекта в ПЛИС или конфигурационное ПЗУ выполняют с помощью программатора (Programmer). Ниже приводится пример МПА,представленного на ГСА. текстового 355 файла для проекирования 356 356 357 TITLE "Блок связи и команд"; INCLUDE "tm1"; INCLUDE "tm2"; INCLUDE "ctc"; INCLUDE "dff"; SUBDESIGN bsc ( f50,reset,z1,z2,z3,z4,z5,z7,z9: INPUT; y1,y2,y3,y6,q[3..0] y4,y5,y7,y8 : OUTPUT; : output; ) VARIABLE mtm1 : tm1; mtm2 : tm2; mctc : ctc; rg[3..0] : DFF; z6,z8,z10,d[3..0] : NODE; BEGIN rg[].clk = f50; rg[].clrn = reset; rg[].d = d[]; q[] = rg[].q; mtm1.clk = f50 & y4; mtm1.reset = !y7; mtm2.clk = mtm1.ct5; mtm2.reset = !y7; 357 358 z10 = mtm2.ct0; z6 = mtm2.ct6; mctc.clk = y5; mctc.reset = !y8; z8 = mctc.ct2; table q[3..0],z10,z9,z8,z7,z6,z5,z4,z3,z2,z1 => d[3..0]; 0 , x , 0, x, x, x, x, x, x, x, x => 0; 1 , x , x, x, x, x, x, x, x, 1, x => 0; 12 , x , 0, x, x, x, x, x, x, x, x => 0; 15 , x , x, x, x, x, x, x, x, x, x => 0; 0 , x , 1, x, x, x, x, x, x, x, x => 1; 1 , x , x, x, x, x, x, 0, x, 0, x => 1; 14 , x , x, 0, x, x, x, 1, x, x, x => 1; 1 , x , x, x, x, x, x, 1, x, 0, x => 2; 2 , x , x, x, x, x, x, 1, x, x, 1 => 2; 9 , x , x, x, 0, x, x, x, x, x, x => 2; 11 , x , x, 0, x, 1, x, x, 0, x, 1 => 2; 2 , x , x, x, x, x, x, 1, x, x, 0 => 3; 7 , x , x, x, x, x, x, x, x, x, 0 => 3; 8 , 1 , x, x, x, x, x, x, x, x, x => 3; 11 , x , x, 0, x, 1, x, x, 1, x, x => 3; 11 , x , x, 0, x, 1, x, x, 0, x, 0 => 3; 3 , x , x, x, x, x, x, x, x, x, x => 4; 4 , x , x, x, 0, x, 1, x, 1, x, x => 4; 4 , x , x, x, x, x, x, x, 0, x, x => 5; 5 , x , x, x, x, x, x, x, x, x, x => 6; 358 359 6 , 0 , x, x, x, x, x, x, x, x, 1 => 6; 6 , 1 , x, x, x, x, x, x, x, x, x => 7; 7 , x , x, x, x, x, x, x, x, x, 1 => 7; 6 , 0 , x, x, x, x, x, x, x, x, 0 => 8; 8 , 0 , x, x, x, x, x, x, x, x, x => 8; 4 , x , x, x, 1, x, 1, x, 1, x, x => 9; 9 , x , x, x, 1, x, x, x, x, x, x => 9; 4 , x , x, x, x, x, 0, x, 1, x, x => 10; 10 , x , x, x, x, x, x, x, x, x, x => 11; 11 , x , x, 0, x, 0, x, x, x, x, x => 11; 11 , x , x, 1, x, x, x, x, x, x, x => 12; 12 , x , 1, x, x, x, x, x, x, x, x => 12; 14 , x , x, 1, x, x, x, 1, x, x, x => 12; 2 , x , x, x, x, x, x, 0, x, x, x => 13; 13 , x , x, x, x, x, x, x, x, x, x => 14; 14 , x , x, x, x, x, x, 0, x, x, x => 14; end table; table q[3..0]=> y1,y2,y3,y4,y5,y6,y7,y8; 0 => 0, 0, 0, 0, 0, 0, 0, 0; 1 => 0, 0, 0, 0, 0, 0, 1, 1; 2 => 0, 0, 0, 0, 0, 0, 1, 1; 3 => 1, 0, 0, 0, 0, 0, 1, 0; 4 => 0, 0, 0, 0, 0, 0, 0, 0; 5 => 0, 1, 0, 0, 0, 0, 1, 0; 6 => 0, 0, 0, 1, 0, 0, 0, 0; 7 => 0, 0, 0, 0, 0, 0, 0, 0; 359 360 8 => 0, 0, 0, 1, 0, 0, 0, 0; 9 => 0, 0, 1, 0, 0, 0, 0, 0; 10 => 0, 0, 0, 0, 1, 0, 1, 0; 11 => 0, 0, 0, 1, 0, 0, 0, 0; 12 => 0, 0, 0, 0, 0, 1, 0, 0; 13 => 0, 0, 0, 0, 1, 0, 0, 0; 14 => 0, 0, 0, 0, 0, 0, 0, 0; 15 => 0, 0, 0, 0, 0, 0, 0, 0; end table; end; Рассмотрим ещё несколько реализаций проектов ЦУ на ПЛИС ф. «Альтера». Частотный детектор. Частотный детектор (ЧД) сравнивает частоту на выходе синтезатора частоты (СЧ) с эталонной частотой 10 МГц и выдаёт результат в виде сигналов «больше», «меньше» или «равно». Схема ЧД состоит из двух счётчиков и конечного автомата (КА). 360 361 361 362 362 363 Начало Y5 a0 0 Z0 1 Y4 a1 0 Z1 1 Y1 – «больше», Y2 – «меньше», Y3 – «равно», Y4 – разрешение счёта, a21 Z0 0 Конец 363 364 Y5 – сброс счётчиков. Фазовый детектор. Фазовый детектор (ФД) определяет сдвиг по фазе между опорным сигналом 10 МГц и сигналом на выходе синтезатора частоты. Для нормальной работы КА требуется высокое быстродействие ПЛИС. Поскольку необходимо отслеживать разность фаз не хуже 2нс за период 100нс, а тактовая частота не превышает 38 МГц, то КА должен быть асинхронным. Пришлось создать предельно «отжатые» SR-триггеры со входом сброса (они представлены на рисунке). У этого триггера есть незначительный недостаток в режиме обнуления, но к нему нет претензий в рабочем режиме. Кроме того, во избежание гонок, пришлось применить оригинальное противогоночное кодирование, когда состояния не просто развязываются по-Баранову, а обеспечивается переход в любое состояние при изменении только одного бита в кодах состояний. 364 365 365 366 366 367 367 368 Последняя диаграмма свидетельствует о срыве работы КА по причине недостаточного быстродействия ПЛИС. Если разность фаз не превышает 1нс, то КА не успевает отслеживать переходы из одного состояния в другое. 368 a0 Началоо 369 1 Z1 0 a1 0 Z1 1 1 Z2 0 a4 1 Y1 Z2 a2 0 0 Z2 Y2 1 a5 1 a7 Z1 0 a6 a3 ГСА КА фазового детектора Конец a0RS-485. Приёмопередатчик Для обеспечения обмена информацией между ПК и КДУ-2 на рассстоянии не менее 300 м используется интерфейс RS-485. Микроконтролер для выполнения этой задачи в режиме полудуплекса реализован на ПЛИС в САПР MAX+PLUS II v.10(файл prmprdrs.gdf). 369 370 370 371 371 372 SUBDESIGN kars485 ( reset,z1,z2,z3 : INPUT;%сброс RG,последоват.вход,прошёл Старт,прошли 9 имп. по 6,3 мкс% clk : input; % тактовая частота 1,5873 МГц с периодом 630 нс% y1,y2 : output;%разрешение работы делителю на 10,разрешение счёта для информационного СТИ % q[1..0]: OUTPUT; % выходы RG % ) VARIABLE q[1..0],qy[1..0] : DFF; d[1..0],dy[1..0] : NODE;% D- входы RG, RGY % BEGIN q[].clk = clk; q[].clrn = !reset; q[].prn = VCC; q[] = d[]; qy[].clk = clk; qy[].clrn = !reset; qy[].prn = VCC; qy[] = dy[]; 372 373 table q[1..0], z3, z2, z1 => d[1..0]; 3 , 1 , x , x => 0 ; 0 , x , x , 0 => 0 ; 0 , x , x , 1 => 1 ; 1 , x , x , 1 => 1 ; % ТОП МПА % 1 , x , x , 0 => 2 ; 2 , x , 0 , x => 2 ; 2 , x , 1 , x => 3 ; 3 , 0 , x , x => 3 ; end table; table q[1..0] => dy0,dy1; 0 => 0, 0; 1 => 0, 0;% выходные функции % 2 => 1, 0; 3 => 1, 1; end table; y1 = qy0; y2 = qy1; end; subdesign paritet ( d[8..0] : input; p : output; ) begin p = d0 $ d1 $ d2 $ d3 $ d4 $ d5 $ d6 $d7 $ d8; end; 373 374 374 375 SUBDESIGN trans485 ( reset,z1,z2 : INPUT;%сброс RG,Пуск,прошли 12 имп. по 6,3 мкс% clk : input; % тактовая частота 1,5873 МГц с периодом 630 нс% y0,y1,y2 : output;%разрешение работы делителей на 10 и 12,загрузка,строб записи данных в сдвиговый RG % q[1..0]: OUTPUT; % выходы RG КА % ) VARIABLE q[1..0],qy[2..0] : DFF; d[1..0],dy[2..0] : NODE;% D- входы RG КА, RGY % BEGIN q[].clk = clk; q[].clrn = !reset; q[].prn = VCC; q[] = d[]; qy[].clk = clk; qy[].clrn = !reset; qy[].prn = VCC; qy[] = dy[]; table 375 376 q[1..0], z2, z1 => d[1..0]; 2 , 1 , x => 0 ; 0 , x , 0 => 0 ; 0 , x , 1 => 1 ; 1 , x , x => 3 ; % ТОП МПА % 3 , x , x => 2 ; 2 , 0 , x => 2 ; end table; table q[1..0] => dy0,dy1,dy2; 0 => 0 , 0 , 0 ; 1 => 0 , 1 , 0 ;% выходные функции % 3 => 0 , 1 , 1 ; 2 => 1 , 0 , 0 ; end table; y0 = qy0; y1 = qy1; y2 = qy2; end; Проект приёмопередатчика RS-485 занял всего 1% от объёма ПЛИС EP1K100Qc208-1. 376 377 Телевизионный генератор испытательных сигналов. Блок-схема ТВ-ГИС. Структурная схема телевизионного генератора испытательных сигналов (ТВГИС) представлена на рисунке. Выход Сумматор КДУКДУ-2 ФНЧ-1 УМ-1 ФНЧ-2 УМ-2 СЧ КДУ На схеме использованы следующие обозначения: КДУ – контрольно-диагностическое устройство, СЧ – синтезатор частоты, 377 378 ФНЧ – фильтр нижних частот, УМ – усилитель мощности. КДУ. БЛОК: КОНФИГУРАЦИОННОЕ ПЗУ БЛОК: ДВА МОДУЛЯТ ОРА +3.3VD2 DD4 R76 1,8к БЛОК: ГЕНЕРАТ ОР ЧАСТ ОТ Ы VCC G OUT AGND FC 4 3 7 +5VA1 C5 0.1 6 7 2 R2 -5VA1 C3 0.1 +3.3VD2 3 VD1 2 4 GND R32 51 C6 0.1 Цепь R31 100 R5 390 R74 1,8к XP1 Конт 1 2 3 4 5 6 7 8 9 10 R75 1,8к R80 1,8к XDQB4 XDQB5 XDQB6 XDQB7 XDQB8 XA8_M XA9_M XA10_M XA11_M XA12_M XA13_M XA14_M XA15_M DD3 9 11 19 3 R77 1,8к VPP VCC GND 5 VCCS 14 VPPS C9 0.1 R4 100 2 SRAM DATA 4 DCLK 8 OE 12 CASC 13 CONF 1 TDO CS TDI TMS TCK +5B +5 B 1 15 IDC10MS р о зе тки пр и бо р н ые xlr C2 0.1 R30 100 1 DA1 AD8009 R1 22 Q0 CNFDN Q2 Q3 +3.3VD2 R79 1,8к C4 0.1 ZQ1 2 C1 10.0x10B +5VA1 R3 51 +5VA1 CNFDN +5VA1 DATA0 DCLK NSTATUS NCONFIG 18 20 10 +5B C14 0.1 +3.3VD2 EPC2LC20 4 0.1 +2.5VD1 +3.3VD2 XA16_M XA17_M XA18_M XWE_M XDQA1 XDQA2 XDQA3 XDQA4 CLK75 RESET_PLIS R78 22 +5B C7 0.1 DD1:7 +5B 14 DD1:1 1 C8 10.0x10B 7 R81 1,8к +2.5VD1 +3.3VD2 R73 30к DD1:2 2 3 DD1:3 4 5 6 9 R82 22 XDQA5 XDQA6 XDQA7 XDQA8 XCS_M XA0_M +3.3VD2 10 74AC14 74AC14 74AC14 R83 30к XA1_M XA2_M XA3_M XA4_M +2.5VD1 Q15 Q16 NSTATUS Q1 XA0_M 22 R29 A0_M XWE_M 1,8к R27 XA1_M 22 R28 R6 22 A1_M XOE_M R7 22 R8 22 A2_M XCS_M R9 22 A3_M XUB_M R10 22 A4_M XLB_M R11 22 R12 22 A5_M XA18_M R13 22 XA17_M R14 22 XA16_M R15 22 R25 1,8к R58 22 DQA1 DQA2 XDQA3 R35 22 R36 22 R37 22 R38 22 R59 22 XDQA4 LB_M XDQA5 A18_M XDQA7 A17_M XDQA8 XDQB1 R60 22 DQA3 R61 22 R62 22 R63 22 R64 22 R65 22 DQA4 DQA5 A0_M A1_M A2_M A3_M A4_M A5_M A6_M A7_M A8_M A9_M A10_M A11_M A12_M A13_M A14_M A15_M A16_M A17_M A18_M 5 4 3 2 1 44 43 42 28 27 26 25 24 23 22 21 20 19 18 DQA6 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 A16 A17 A18 IO1 IO2 IO3 IO4 IO5 IO6 IO7 IO8 IO9 IO10 IO11 IO12 IO13 IO14 IO15 IO16 VCC VSS DQA7 DQA8 DQB1 OE_M CS_M LB_M UB_M WE_M 41 6 39 40 17 OE CS LB UB WE VCC VSS 7 8 9 10 13 14 15 16 29 30 31 32 35 36 37 38 33 DQA8 DQA7 DQA6 DQA5 DQA4 DQA3 DQA2 DQA1 A8_M XA15_M R39 22 XA14_M R40 22 XDQB2 XDQB3 XDQB4 A14_M XDQB5 XDQB6 XA13_M R41 22 A13_M XDQB7 R51 1,8к A11_M XA12_M R42 22 F E R6 +3.3VD2 D R7 DP B C +2.5VD1 G S12 S7 +3.3VD1 34 11 CLK75 +3.3VD1 12 R66 22 R67 22 +3.3VD2 Q5 Q6 S8 +3.3VD2 DQB2 DQB3 A15_M R50 1,8к A10_M Q4 K6X8016T3B A16_M R49 1,8к A9_M R5 A DQB8 DQB7 DQB6 DQB5 DQB4 DQB3 DQB2 DQB1 R48 1,8к R24 1,8к XA11_M R57 22 UB_M R47 1,8к A7_M R23 1,8к XA10_M R34 22 R46 1,8к A6_M R22 1,8к XA9_M XDQA2 XDQA6 R21 1,8к XA8_M CS_M R45 1,8к R20 1,8к XA7_M R33 22 R44 1,8к R19 1,8к XA6_M OE_M R43 1,8к R18 1,8к XA5_M 22 R55 XDQA1 R17 1,8к XA4_M WE_M 1,8к R53 R16 1,8к XA3_M 22 R56 1,8к R54 1,8к R26 XA2_M R4 R3 R0 R1 R2 DD2 A12_M XDQB8 R68 22 R69 22 R70 22 R71 22 R72 22 DQB4 ОЗУ фирмы SAMSUNG 512Kx16 bit: K6X8016T 3B-F в корпусе 44-T SOP2-400F DQB5 DQB6 БЛОК: ОЗУ 512Кx16 DQB7 DQB8 R52 1,8к S9 S11 S10 R8 RESET_PLIS S6 +2.5VD1 S5 S4 Q7 S3 S2 S1 +3.3VD2 RD_RS DE_RS Q22 TD_RS Q8 Q9 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 TCK CONF_DONE nCEO TDO VccIO GND I/O I/O I/O CLKUSR I/O I/O I/O I/O I/O RDYnBSY I/O I/O INIT_DONE GND VccINT VccIO GND I/O I/O I/O I/O I/O I/O I/O I/O GND VccINT VccIO GND I/O I/O I/O I/O I/O I/O VccIO GND I/O I/O I/O I/O VccINT GND TMS TRST nSTATUS I/O I/O I/O I/O I/O I/O GND I/O I/O LOCK I/O I/O I/O VccIO I/O I/O I/O I/O I/O VccINT I/O I/O I/O GND Vcc_CKLK Ded_IN1 Ded_CP1 Ded_IN2 GND_CKLK GND I/O VccIO I/O I/O I/O I/O I/O I/O VccINT I/O I/O I/O I/O I/O I/O VccIO I/O I/O I/O I/O I/O I/O nCS CS nWS I/O nRS I/O I/O VccINT I/O I/O I/O I/O I/O I/O VccIO I/O I/O I/O I/O I/O GND I/O Dev_OE VccINT Ded_IN4 Ded_CP2 Ded_IN3 GND Dev_CLRn I/O VccIO I/O I/O I/O I/O I/O I/O GND I/O I/O I/O I/O DATA7 VccIO DATA6 I/O DATA5 DATA4 I/O DATA3 DATA2 DATA1 DATA0 DCLK nCE TDI VccINT GND I/O I/O I/O I/O VccIO GND I/O I/O I/O I/O I/O I/O VccIO GND I/O I/O I/O I/O I/O I/O VccINT GND I/O I/O I/O I/O VccINT GND I/O I/O I/O I/O VccIO GND I/O I/O I/O I/O I/O I/O VccIO GND MSEL0 MSEL1 VccINT nCONFIG EP1K100QC208-1 378 208 207 206 205 204 203 202 201 200 199 198 197 196 195 194 193 192 191 190 189 188 187 186 185 184 183 182 181 180 179 178 177 176 175 174 173 172 171 170 169 168 167 166 165 164 163 162 161 160 159 158 157 156 155 154 153 152 151 150 149 148 147 146 145 144 143 142 141 140 139 138 137 136 135 134 133 132 131 130 129 128 127 126 125 124 123 122 121 120 119 118 117 116 115 114 113 112 111 110 109 108 107 106 105 XDQB3 XDQB2 XDQB1 XLB_M XUB_M XOE_M XA7_M +2.5VD1 XA6_M XA5_M DT1 DT2 XRESET-G1 XF75+2 +3.3VD2 XF75-2 XRESET-G2 XD7 XD6 XD5 XF75+2 XF75-2 +5B -5B XF75+1 XF75-1 XRAMP2 Q10 +2.5VD1 Q11 Q12 Q13 Q14 XRD2 +3.3VD2 XUDCLK2 XHOLD2 XWR2 XA0 XA1 XA2 XA3 XA4 XA5 XD0 XD2 +3.3VD2 XD1 XD4 XD3 XWR1 XF75+1 XF75-1 XUDCLK1 XRAMP1 DATA0 DCLK +5B -5B Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q17 Q18 +2.5VD1 Q11 XRE8 XRE4 XRE7 XRE3 +3.3VD2 Q13 XRE6 XRE2 XRE5 XRE1 DRDY RD +3.3VD2 Q16 CLKI ADC15 ADC16 ADC13 ADC14 ADC11 +2.5VD1 Q20 ADC12 ADC9 ADC10 ADC7 +2.5VD1 ADC8 ADC5 ADC6 ADC3 +3.3VD2 ADC4 ADC1 ADC2 Q19 Q20 Q21 +3.3VD2 +2.5VD1 NCONFIG Q12 Q14 Q15 Q17 Q18 Q19 Q21 Q22 XT1 1 3 5 7 9 11 13 15 17 19 21 23 XT3 2 4 6 8 10 12 14 16 18 20 22 24 DT2 +3.3VD2 XD7 XD5 XD3 XD1 XD0 XA4 XA2 XA0 XWR2 XHOLD2 XT2 1 3 5 7 9 11 13 15 17 19 21 23 10к R218 10к R214 10к R217 10к R213 10к R212 10к R216 10к R211 10к R210 10к R215 10к R208 10к R209 10к R206 10к R205 10к R207 10к R203 10к R204 10к R198 10к R199 10к R200 10к R201 10к R219 10к R202 10к R220 1 3 5 7 9 11 13 15 17 19 21 23 2 4 6 8 10 12 14 16 18 20 22 24 +3.3VA1 XRESET-G2 XD6 XD4 XD2 XA5 XA3 XA1 XUDCLK2 XRD2 XRAMP2 XT4 2 4 6 8 10 12 14 16 18 20 22 24 DT1 +3.3VD2 XD7 XD5 XD3 XD1 XD0 XA4 XA2 XA0 XWR1 XHOLD2 1 3 5 7 9 11 13 15 17 19 21 23 2 4 6 8 10 12 14 16 18 20 22 24 +3.3VA1 XRESET-G1 XD6 XD4 XD2 XA5 XA3 XA1 XUDCLK1 XRD2 XRAMP1 379 C34 47MKF X 16B XT 6 C36 10MKF X 16B Конт 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 +5B C49 1,0 НА ПЛИС R85 22 XRE3 RE3 RE4 R89 1,8к R86 22 XRE5 RE5 RE6 ADC10 R97 22 XRE4 RE8 R91 1,8к R98 22 XRE6 R99 22 AD1 R109 22 R110 22 AD10 AD2 AD11 AD3 XRE8 ADC12 ADC13 R111 22 AD12 AD4 R112 22 R128 22 AD13 AD5 AD6 AD15 R115 22 ADC5 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 AD2 AD4 AD6 AD8 AD10 AD12 AD14 AD16 UDCLK4 DRDY7723 RE5 RE6 RE7 RE8 C50 0,1 -5B L1 100мкГ +3.3VA1 +3.3VD2 -5VA1 C35 1,0 +3.3VD2 C48 0,1 +3.3VD2 L2 1 AD7 4 SF0905 S01YS C51 0,1 PBD-32 2 R129 22 3 ADC6 C54 1,0 R121 1,8к R106 1,8к ADC16 ADC4 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 R120 1,8к AD14 R114 22 ADC3 R127 22 R119 1,8к R113 22 ADC2 R126 22 R103 1,8к R105 1,8к ADC15 R125 22 R118 1,8к R104 1,8к ADC14 +5VA2 -5B +3.3VA1 AD1 AD3 AD5 AD7 AD9 AD11 AD13 AD15 RD7723 RE1 RE2 RE3 RE4 R117 1,8к R102 1,8к R95 1,8к ADC1 R116 1,8к R101 1,8к ADC11 R94 1,8к RE7 AD9 R100 1,8к R93 1,8к R90 1,8к R87 22 XRE7 ADC9 XRE2 R92 1,8к XT 5 +5B RE2 R124 22 R130 22 ADC7 R122 1,8к AD16 R107 1,8к AD8 L3 1 R131 22 ADC8 4 SF0905 S01YS C52 0,1 R123 1,8к 2 3 C55 1,0 UDCLK4 RD7723 DRDY7723 RD +5VA2 C61 10.0x10B C58 0,1 CLKI 750 R135 +5VA2 22 R133 1,8к R136 22 R134 1,8к R137 +3.3VD2 БЛОК: ВНЕШНИЕАЦП DRDY 22 R132 +5VA1 C60 10.0x10B C57 0,1 +5B RE1 R88 1,8к R108 22 +3.3VA1 XRE1 R96 22 C32 10MKF X 16B R84 22 MF-16MRB Цепь +3.3VD2 0.1 L4 1 SF0905 S01YS 2 3 C56 1,0 DA2 1 C15 1,0 Vin 3 5 Vout GND C33 4.7 4 BYPASS +3.3VD1 C62 10.0x10B C59 0,1 +2.5VD1 ON/OFF 2 4 C53 0,1 15 0.1 10 LP2992 C31 0,01 БЛОК: 20 КНОПОК И СЕМИСЕГМЕНТНЫЙ 4-ХРАЗРЯДНЫЙ ИНДИКАТОР +5B R154 ... R158 1,8к R164 ... R171 1,8к R181 1,8к R182 1,8к R184 1,8к R189 1,8к DD5:7 DD5:1 R159 100 2 DD5:2 R1 R160 100 4 R161 100 SB6 SB11 SB16 SB2 SB7 SB12 SB17 SB3 SB8 SB13 SB18 +5B 7 6 A B C D E F G DP 5 SB19 SB4 SB9 SB14 SB5 SB10 SB15 DD5:4 R3 R162 100 8 9 SB20 DD5:5 R163 100 10 LPT 1 WRIT E R139 100 S1 S8 R149 100 D7 R138 10k D1 D2 R140 100 R141 100 S2 S3 S9 S10 R150 100 R151 100 D8 DAT AST B WRIT E D1 D2 D3 D4 D5 D6 D7 D8 R146 10k D3 R142 100 S4 S11 R152 100 RESET 1 DAT AST B R147 10k D4 R143 100 S5 S12 R153 100 ADDRST B R148 10k D5 D6 R144 100 R145 100 S6 S7 RESET 1 БЛОК: LPT-порт ADDRST B Конт 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 R5 R6 R7 R8 11 R5 R6 R7 R190 ... R197 100 R8 C65 0,47 C63 0,47 C64 0,47 X1 Цепь Конт 1 2 RD 3 TD 4 DT R 5 GND 6 DSR 7 RT S 8 CT S 9 DRB_9MA INT R WAIT ACK XFIAG R166 R176 100 +5VA3 R168 DA3 1 C2+ 2 GND 3 C24 V5 DOUT 1 6 DOUT 2 7 DOUT 3 8 RIN1 9 RIN2 10 DOUT 4 11 RIN3 12 DOUT 5 13 FON 14 FOFF 28 C1+ 27 V+ 26 VCC 25 C124 DIN1 23 DIN2 22 DIN3 21 ROUT 1 20 ROUT 2 19 DIN4 18 ROUT 3 17 DIN5 16 ROUT 1B 15 ERR C66 0,47 1 C67 0,47 2 22 22 R188 SN75C3238 22 +5B X2 Конт 1 2 3 4 5 6 7 8 9 DRB_9FA R178 1к Цепь DAVAIL 379 R169 22 R179 100 +5VA3 DA4 8 VCC 7 B 6 A 5 GND 1 RO 2 RE 3 DE 4 DI R185 22 R186 22 R187 22 ADM485 22 R177 R180 1к L5 БЛОК: RS232-порт, RS485-порт. DPY LED SF0905 S01YS 4 C68 0.1 3 C69 1.0 R183 A B C D E F G DP 12 Dig1 9 Dig2 8 Dig3 6 Dig4 +5VA3 CEN36F Цепь HG1 11 7 4 2 1 10 5 3 +5B R4 14 3 DD5:3 R2 SB1 1 +5VA3 R0 RD_RS DE_RS T D_RS C70 0.1 C71 10.0x10B 380 Телевизионный цифровой синхрогенератор. 380 381 381 382 title "comparator"; constant c32=20; constant c64=40; SUBDESIGN cmp1 ( a[9..0],b[2..0]: input; % вход от Т64,вход от СТИ % z2,z3,z4,z7 : output;%32мкс,64мкс,5имп.,пауза>25мкс% ) BEGIN z2 = (a[] > 255-c32)&(a[] < 255+c32); z3 = (a[] > 511-c64)&(a[] < 511+c64); z4 = (b[] == 5); z7 = (a[] > 200); end; title "cmp2"; constant t4=30;% 4мкс % constant t64=479;% 60мкс % constant t672=5376;% 672мкс % constant t640=5120;%640мкс % SUBDESIGN cmp2 ( a[14..0] : input; % вход от Т1280 % z3,z4,z5,z6 : output;% 672мкс,640мкс,60мкс,4мкс% ) 382 383 BEGIN z3 = a[] == t672; z4 = a[] == t640; z5 = a[] == t64; z6 = a[] == t4; end; end; TITLE "Timer"; parameters (width = 15); assert (width >= 0) report "Значение параметра должно быть больше чем %" width severity error; subdesign cnt_sum ( clk : input; reset : input; dout[width..0] : output; ) variable rg[width..0] : dff; begin rg[].clrn = !reset; rg[].clk = clk; rg[].d = rg[].q+1; dout[] = rg[].q; end; INCLUDE "dff"; SUBDESIGN ka1 ( reset,z1,z2,z3,z4 : INPUT;%сброс RG,видеосмесь,32мкс,64мкс,5имп.% z7, clk : input; % пауза>25мкс,входная частота 8Мгц% y1,y2,y3,y4,y5: output;%сброс Т64,имп-с счёта для СТИ,сброс СТИ,% % СИП-1,СИП-2% y7,y8,q[4..0]: OUTPUT;%уст.флаг,сбросить флаг,выходы RG% ) VARIABLE q[4..0] : DFF; d[4..0] : NODE;% D- входы RG % BEGIN q[].clk = clk; q[].clrn = reset; q[].prn = VCC; q[] = d[]; table q[4..0], z7, z4, z3, z2, z1 => d[4..0]; 0 , x , x , x , x , 0 => 0; 0 , x , x , x , x , 1 => 1; 383 384 1 , x , x , x , x , 1 => 1; 1 , x , x , x , x , 0 => 2; 2 , x , x , x , x , 0 => 2; 4 , x , x , x , x , x => 2; 14 , x , x , x , x , x => 2; 2 , x , x , x , x , 1 => 3; 3 , x , x , x , x , 1 => 3;% ТОП МПА % 3 , x , x , 0 , x , 0 => 4; 3 , x , x , 1 , x , 0 => 5; 5 , x , x , x , x , x => 6; 6 , x , x , x , x , 0 => 6; 7 , x , x , x , 0 , 0 => 5; 6 , x , x , x , x , 1 => 7; 7 , x , x , x , x , 1 => 7; 7 , x , x , x , 1 , 0 => 8; 10 , x , x , x , x , 0 => 8; 8 , x , x , x , x , x => 9; 9 , x , x , x , x , 0 => 9; 9 , 0 , x , x , x , 1 => 10; 10 , x , x , x , x , 1 => 10; 9 , 1 , 1 , x , x , 1 => 11; 18 , x , x , x , x , x => 12; 12 , x , x , x , x , 0 => 12; 13 , x , 0 , x , x , 0 => 12; 12 , x , x , x , x , 1 => 13; 13 , x , x , x , x , 1 => 13; 13 , x , 1 , x , x , 0 => 14; 17 , x , 1 , x , x , 0 => 14; 9 , 1 , 0 , x , x , 1 => 15; 19 , x , x , x , x , x => 16; 16 , x , x , x , x , 0 => 16; 17 , x , 0 , x , x , 0 => 16; 16 , x , x , x , x , 1 => 17; 17 , x , x , x , x , 1 => 17; 11 , x , x , x , x , x => 18; 15 , x , x , x , x , x => 19; end table; table q[4..0] => y1,y2,y3,y4,y5,y7,y8; 0 => 1, 0, 1, 0, 0, 0, 1; 1 => 1, 0, 0, 0, 0, 0, 0; 2 => 0, 0, 1, 0, 0, 0, 0; 3 => 0, 0, 0, 0, 0, 0, 0; % выходные функции % 4 => 1, 0, 0, 0, 0, 0, 0; 5 => 1, 0, 0, 0, 0, 0, 0; 6 => 0, 0, 0, 0, 0, 0, 0; 7 => 0, 0, 0, 0, 0, 0, 0; 8 => 1, 1, 0, 0, 0, 0, 0; 9 => 0, 0, 0, 0, 0, 0, 0; 10 => 0, 0, 0, 0, 0, 0, 0; 384 385 11 12 13 14 15 16 17 18 19 => 0, 0, 1, 0, 1, 1, 0; => 0, 1, 0, 0, 1, 0, 0; => 0, 0, 0, 0, 1, 0, 0; => 1, 0, 0, 0, 0, 0, 0; => 0, 0, 1, 1, 0, 0, 1; => 0, 1, 0, 1, 0, 0, 0; => 0, 0, 0, 1, 0, 0, 0; => 0, 0, 0, 0, 1, 0, 0; => 0, 0, 0, 1, 0, 0, 0; end table; end; title "FSSI"; INCLUDE "dff"; SUBDESIGN ka2 ( reset,clk,z1,z2 :INPUT;%сброс RG,вх.частота 8Мгц,СИП-1,СИП-2% z3,z4,z5,z6 :input;% 672мкс,640мкс,60мкс,4мкс% y1,y2,q[3..0]:output;%сброс Т1280,ССИ,вых.RG% ) VARIABLE q[3..0] : DFF; d[3..0] : NODE;% D- входы RG % BEGIN q[].clk = clk; q[].clrn = reset; q[].prn = VCC; q[] = d[]; table q[3..0], z6, z5, z4, z3, z2, z1 => d[3..0]; 0 , x , x , x , x , 0 , 0 => 0; 0 , x , x , x , x , x , 1 => 1; 1 , x , x , x , x , x , 1 => 1; 10 , x , x , x , x , x , 1 => 1; 1 , x , x , x , x , x , 0 => 2; 2 , x , x , x , 0 , x , x => 2; 2 , x , x , x , 1 , x , x => 3; 5 , x , 1 , x , x , 0 , x => 3; 3 , x , x , x , x , x , x => 4; 4 , 0 , x , x , x , x , x => 4; 4 , 1 , x , x , x , x , x => 11; 11 , x , x , x , x , x , x => 5;% ТОП МПА % 5 , x , 0 , x , x , x , x => 5; 5 , x , 1 , x , x , 1 , x => 6; 0 , x , x , x , x , 1 , 0 => 6; 6 , x , x , x , x , 1 , x => 6; 6 , x , x , x , x , 0 , x => 7; 7 , x , x , 0 , x , x , x => 7; 7 , x , x , 1 , x , x , x => 8; 10 , x , 1 , x , x , x , 0 => 8; 8 , x , x , x , x , x , x => 9; 9 , 0 , x , x , x , x , x => 9; 385 386 9 , 1 , x , x , x , x , x => 12; 12 , x , x , x , x , x , x => 10; 10 , x , 0 , x , x , x , x => 10; end table; table q[3..0] 0 1 2 3 4 5 6 7 8 9 10 11 12 end table; => => => => => => => => => => => => => => y1,y2; 1, 0; 1, 0; 0, 0; 1, 0; 0, 0; 0, 1; % выходные функции % 1, 0; 0, 0; 1, 0; 0, 0; 0, 1; 1, 1; 1, 1; end; Синтезатор частоты. Синтезатор частоты (СЧ) построен на ИМС фирмы Analog Device AD9854. Она имеет два выхода, один из них квадратурный. По двум каналам установлены ФНЧ и усилители мощности. Этот узел обладает высокой универсальностью. Он может быть использован в цифровых телевизионных и радиопередатчиках, в телевизионных генераторах испытательных сигналов (ГИС). Принципиальная схема СЧ представлена на рисунке. 386 387 C1 2* R2 22 F75+2 XF75+2 R24 22 XF75-2 F75-2 -5V R13 1k8 R35 1k8 L13 4 SF0905 S01YS 1 R3 22 RAMP2 XRAMP2 XA5 R14 1k8 R4 22 HOLD2 XD0 R15 1k8 R6 270 XD1 XUDCLK2 XD2 XD3 R7 22 XWR2 XD4 XA0 XD5 XA1 XD6 XA2 XD7 XA3 XRESET-G R12 22 D4 R30 22 D3 R31 22 D6 R32 22 R33 22 XA4 R34 22 D0 D1 D2 D3 D4 D5 D6 D7 8 7 6 5 4 3 2 1 A0 A1 A2 A3 A4 A5 19 18 17 16 15 14 UDCLK2 WR2 RD2 HOLD2 D5 F75-2 F75+2 D7 R44 1k8 R21 1k8 A4 D1 R29 22 R43 1k8 R20 1k8 R11 22 A3 R28 22 R42 1k8 R19 1k8 R10 22 A2 RESET_G RAMP2 D0 D1 D2 D3 D4 D5 D6 D7 20 21 22 29 70 69 68 64 71 30 RESET_G 1 3 2 XF75-2 AGND +5V -5V 1 3 5 7 9 11 13 15 17 19 21 23 2 4 6 8 10 12 14 16 18 20 22 24 C11 12pF IOT2 IOT2B VOUT VINN VINP DACR C15 8.2pF C5 27pF C9 47pF 2.2pF 52 R53 50 51 43 42 56 C6 27pF C12 12pF L4 68nH C10 47pF C17 22pF C16 DT D+3.3V XD7 XD5 XD3 XD1 XD0 XA4 XA2 XA0 XWR2 XHOLD2 1 3 5 7 9 11 13 15 17 19 21 23 2 4 6 8 10 12 14 16 18 20 22 24 R57 50 AGND кабель рд-50-0.87-21 AGND C14 39pF +5V L14 22pF* C19 R54 50 C18 27pF C20 0.1 1 4 2 3 SF0905 S01YS C43 0.1 A1+5V AGND A1+5V C44 1.0 C21 0.1 C45 0.1 C46 10.0x10B AGND A1-5V AGND AGND R48 100 * R49 100 * C24 2.2pF C28 12pF C32 8.2pF 2 AGND C3 0.1 55 D+3.3V A1+5V R50 3k9 * A+3.3V R58 50 L9 68nH 7 L15 DA3 AD8009 1 R63 50 6 L11 68nH 3 7 4 C22 27pF C26 47pF C30 39pF C34 22pF 61 R61 50 D1+3.3V 2 кабель рд-50-0.87-21 3 C48 1.0 AGND A1-5V 4 SF0905 S01YS C47 0.1 6 C49 0.1 C50 10.0x10B R62 120 * R46 1k3 C25 C4 0.01 2.2pF L8 82nH A+3.3V R59 50 C23 27pF C29 12pF L10 68nH C27 47pF C33 8.2pF L12 68nH C31 39pF C36 R60 50 22pF* A1+5V AGND C35 27pF C37 0.1 C38 0.1 C7 ... C12 D+3.3V AGND A1-5V A+3.3V XRESET-G XD6 XD4 XD2 XA5 XA3 XA1 XUDCLK2 XRD2 XRAMP2 C42 10.0x10B 4 5 A1-5V 8.2pF L6 68nH XT2 AGND R55 50 R47 50 L7 82nH PLLF C13 39pF C41 0.1 DA2 AD8009 3 R56 120 * C8 49 36 7 6 L5 68nH 48 R51 3k9 * DACBR L3 68nH 4 L2 82nH AD9854ASQ C2 0.1 IOT1 IOT1B UDCLK WRB RDB FSK S/P CLKA CLK CLKB CLKEN MASR SK R45 1k8 D+3.3V XF75+2 DAC A0 A1 A2 A3 A4 A5 R22 1k8 XT1 R52 50 DA1 R41 1k8 R18 1k8 R9 22 2.2pF 2 D2 R40 1k8 R17 1k8 R8 22 A1 C7 L1 82nH R27 22 3 C40 1.0 A1+5V D0 R39 1k8 R23 3k6 A0 R26 22 R38 1k8 R1 3k6 WR2 A1-5V 2 R37 1k8 XRD2 R16 1k8 UDCLK2 C39 0.1 A5 R36 1k8 XHOLD2 R5 22 RD2 R25 22 AGND 0.1 6 C57 10.0x10B DD1 DT D1+3.3V 1 3 2 DG # t°C VCC GND DS1822 C13 ... C20 A+3.3V 0.1 8 C66 10.0x10B AGND Power Table Ref Des Device(Type) Package GND DA1 AD9854ASQ LQFP_ED-80 78,77,76,75,72,28,27, 26,12,11 387 D+3.3V 80,79,74,73,25,24,23, 10,9 AGND 67,66,62,59,53,47,46, 45,41,40,39,34,33 A+3.3V 65,60,54,50,44,38,37, 32,31 388 Особенности создания проекта для БМК. Прежде, чем приступать к проектированию цифрового устройства (ЦУ) на БМК, необходимо разработать его на основе ПЛИС. Поскольку у меня есть опыт работы с ПЛИС лишь ф. Altera, то речь будет идти о комплектующих и инструментарии этой фирмы. Для относительно несложных проектов вполне достаточно САПР MAX+PLUS II. Если в вашем ЦУ предполагается использование нескольких быстродействующих процессоров, то, учитывая требования технологии «система на кристалле» (System on Chip – SoC), следует отдать предпочтение САПР Excalibur. Проект должен быть выполнен в тексто-графическом формате [26], что обеспечит его «прозрачность». Разработка ЦУ является микропрограммированием, т.е. ей присущи все недостатки мини-, миди- и макропрограммирования (ассемблеры и языки высокого уровня): невозможно создать «прозрачную» текстовую программу, особенно, если её листинг превышает сотню страниц. Тексто-графическое исполнение облегчает выполнение требований по структурированному программированию. Кстати, обязательное требование размещения любого блока, модуля и т.п. в одном экране. Это облегчит восприятие проекта в целом. В качестве языков микропрограммирования используются AHDL, VHDL, VeryLog. Самым простым и самым популярным из них является AHDL. Автор также отдаёт предпочтение этому языку (чем проще, тем талантливее). Однако в качестве стандарта принят VHDL. Фирмы, владеющие технологиями БМК, весьма неохотно берут проекты, выполненные на AHDL. Фирма «Ангстрем», наиболее серьёзное предприятие, имеющее многолетний опыт разработок на основе БМК, разместила информацию о своих возможностях на сайте http://www.angstrem.ru. 388 389 389 390 Прежде, чем передавать проект для реализации на БМК, рекомендуется проверить его в макетном исполнении на ПЛИС. И только при остром цейтноте можно пропустить этот этап. Перевод проекта из системы MAX+PLUS II в OrCAD представляет дополнительную головную боль. Правда, если вам удастся договориться с ф. «Ангстрем», то эту неблагодарную работу за дополнительную плату фирма возьмёт на себя. Полная верификация проекта с учётом реальных задержек также выполняется в OrCAD. Вполне возможно, что после верификации вам придётся заняться подгонкой схемы под заданное быстродействие. При бортовом исполнении проекта следует обратить самое пристальное внимание на радиационную стойкость: этот параметр должен быть 2У, во всяком случае не хуже 1У. Контролепригодность. Появление стандарта на контролепригодность ПЛИС, БМК и т.п. предопределило введение тестового порта с сигналами: CLK (тактовая частота тестирования), TMS (разрешение тестирования), TDI (вход тестовых данных) и TDO (выход тестовых данных). Схема одного из вариантов тестируемого триггера представлена на рисунке 1, счётчик на основе этого триггера изображён на рис. 2. 390 391 Рис.1. Схема тестируемого D-триггера. 391 392 Рис.2. Схема тестируемого счётчика. На рис.1 использованы следующие обозначения: С (рабочая частота тактирования), ТC (тактовая частота тестирования), TЕ (разрешение тестирования), D (вход рабочих данных), TI (вход тестовых данных) и TDO (выход тестовых данных), NR (активно-низкий сброс). Разумеется, на основе тестируемого триггера можно построить не только счётчик, но и любой микропрограммный автомат (МПА). Однако, пока не будет создана соответствующая библиотека стандартных тестируемых элементов с оптимальной топологией, все усилия разработчика по обеспечению контролепригодности будут тщетны. Использование сквозной линии : CLK и TMS требует использование глобальных связей. Такая возможность предусмотрена в ПЛИС ф. “Altera”, но её нет в БМК ф. «Ангстрем». Кроме того, в САПР «Ангстрем» до сих пор в библиотеке стандартных элементов нет контролепригодных элементов памяти (ЭП). С большим трудом удалось доказать безусловную необходимость таких программ. Такая «недальновидность» характерна для всех известных мне отечественных разработчиков. Всё, что реализовано на БМК с использованием ЭП (более 100 проектов), неконтролепригодно. Кстати, это в первую очередь должен знать Заказчик, поскольку в противном случае все заверения разработчика о том, что он гарантирует хоть какую-то полноту контроля, являются блефом. Обычно наш Заказчик требует 80%-полноту контроля. САПР моделирования неисправностей и проверки полноты контроля типа CAMELOT не всем по кар- 392 393 ману, поэтому мы всю жизнь обманывали друг друга. Заказчик же делал вид, что нам верил. В настоящее время такое положение вещей недопустимо. Раньше мы оправдывали свою беспомощность большими аппаратными затратами, теперь этого «козыря» у разработчиков нет. Несколько слов о JTAG-интерфейсе. Несмотря на все его достоинства, он не обеспечивает входной контроль БМК. Поэтому, получив БМК от изготовителя, вы не сумеете убедиться в его исправности, если не выполните все те требования, о которых говорилось выше. До сих пор все разработки с точки зрения контролепригодности вопиюще безграмотны. При проектировании топологии заказных КМОП БИС даже не рассматривается структура тестируемого триггера (“Chip News, №2, 2003, с.513). Разработки на БМК даже у профессионалов советской выучки грешат подобными недостатками. Поэтому я настоятельно рекомендую руководителям разрабатывающих подразделений введение аттестации цифровиков хотя бы в объёме «Азбуки разработчика цифровых устройств» [26]. Более того, вполне допустим анализ уровня исполнения проекта внешними разработчикамипрофессионалами. Требуется введение вневедомственной ревизионной службы по контролю технического уровня исполнения проекта (цифровой и аналоговой части, помехозащите, стыковке ПЛИС и БМК с МП и т.п.), в том числе и по контролепригодности с полнотой тестирования. Вслед за контролепригодностью возникает проблема синтеза тестов. Имея контролепригодную схему, можно автоматизировать в определённой степени синтез тестов. Для этого САПР должна уметь на основе введённой схемы строить тест для заранее заданных наборов сигналов на входах определённого элемента схемы. Теоретически можно построить тест, эквивалентный тривиальному, т.е. со 100% - полнотой контроля. Длина такого теста может быть вполне разумной. Одновременно с решением вопросов контролепригодности, необходимо предусмотреть и самодиагностируемость(LSSD, BILBO). Все эти проблемы подробно рассмотрены в прекрасной книге Беннетса , перевод которой выполнил профессионал в области диагностики, проф. ХПИ Леонид Викторович Дербунович. 393 394 7.2. О недостатках САПР MAX+PLUS II. Широкое внедрение ПЛИС фирмы Altera в практику цифровых разработок связано не только с достоинствами этих микросхем, но и не в последнюю очередь с появлением отечественной литературы по данному вопросу. Десять лет тому назад появление САПР ПЛИС Xilinx сопровождалось такими сложностями, что применять эту систему в практических разработках не было ни малейшего желания. В прекрасном практическом курсе Антонова не только разобран весь процесс проектирования, но ещё и приложен компакт-диск с самой САПР. Это уже выше всех ожиданий, поскольку покупка MAX+PLUS II обошлась бы разработчику в $1000. Более подробный перечень литературы по данной тематике приведен в книге Антонова А.П. «Язык описания цифровых устройств AHDL». Но как же поступают наши и зарубежные разработчики, получив в руки такое мощное оружие. Очень просто: они рисуют схемы в графическом редакторе. В МИФИ такой подход называют вентильным мышлением. Я называю подобный метод технологией мартышки с арифмометром. Обиднее всего то, что данную «технологию» используют безусловно талантливые и высокопрофессиональные разработчики с прекрасной математической подготовкой. Слабым утешением может служить тот факт, что зарубежные цифровики ещё более безграмотны. У отечественных разработчиков начинает просыпаться интерес к синтезу микропрограммных автоматов, хотя это и происходит спустя 30 лет после выхода в печать популяризаторских работ[13]. А «передовой Запад» демонстрирует своё невежество даже в таком суперважном программном продукте как MAX+PLUS II. На рис. 1 представлен файл ka2.tdf(в оригинале moore2.tdf) микропрограммного автомата(МПА), позаимствованный из фирменных материалов. После трансляции файла ka2.tdf и симуляции файла ka2.scf были получены временные диаграммы работы этого МПА(рис.2). Если не полениться и вручную проверить работу описанного в файле ka2.tdf МПА, то мы получим иные временные диаграммы (рис.3). Кстати, пришлось вначале формально построить МПА, а потом нарисовать его схему в графическом редакторе (рис.4). Симулятор и в данном случае подтвердил промашку фирмы. После анализа огрехов фирмы Altera был найден способ автоматического решения проблемы. Это фундаментальная ошибка, поскольку она не позволяет использовать формальный синтез МПА. Подобная оплошность свидетельствует не только о беспомощности разработчиков фирмы, но и о безграмотности западных цифровиков, т.к. вопиющая ошибка не была обнаружена за рубежом вплоть до появления САПР в России, т.е. в течение по меньшей мере 5 лет. SUBDESIGN ka2 ( clk : INPUT; reset : INPUT; y : INPUT; 394 395 z : OUTPUT; ) VARIABLE ss : MACHINE WITH STATES (s0,s1,s2,s3); zd : NODE; BEGIN ss.clk = clk; ss.reset = reset; z = DFF(zd, clk, VCC, VCC); TABLE % current current next % state input state output % ss, y => ss, zd ; s0, 0 => s0, 0; s0, 1 => s2, 1; s1, 0 => s0, 0; s1, 1 => s2, 1; s2, 0 => s2, 1; s2, 1 => s3, 0; s3, 0 => s3, 0; s3, 1 => s1, 1; END TABLE; END; Рис. 1 395 next % 396 Рис. 2 Рис. 3 396 397 Рис.4 Проверим работу САПР на примере минимизации логической функции от 8 переменных. Функция У задана таблицей истинности в виде 10-чных и 397 398 двоичных наборов z(10), z(2) соответственно. Z(10) Z(2) 1 00000001 17 00010001 64 01000000 208 11010000 144 10010000 48 00110000 96 01100000 240 11110000 Y 1 1 1 1 1 0 0 0 После минимизации по методу обобщённых кодов[13, 26] получаем результат: Y = z5’, где апостроф означает инверсию, что в 25 раз проще функции, выданной САПР MAX+PLUS II. Дополнительный недостаток САПР заключается ещё и в том, что некоторые мегафункции некорректно работают в определённых ситуациях(например, LPM_COUNTER в проектах fssi.gdf, fsip.gdf). Приходится заменять их на стандартные счётчики. Иногда и эта мера не спасает – приходится менять алгоритм работы автомата, вводя лишний, ничем не мотивированный сброс. 398 399 399 400 400 401 401 402 Кроме того, реализация SR-триггера на элементах ИЛИ-НЕ также привела к непредсказуемым эффектам. Пришлось заменить на стандартный SRтриггер из библиотеки элементов(см. fsip.gdf). Вызывает нарекания пользователей и работа с двухпортовой памятью(см. probaram.tdf). При трансляции, например, запрашивается количество выводов ПЛИС. Мой опыт работы с САПР MAX+PLUS II относительно невелик. Однако он не помешал в течение одной недели выловить глобальную погрешность САПР ф. Altera. Это говорит, во-первых, о простоте AHDL и САПР в целом, а вовторых, о жёсткой необходимости владения инструментом формального синтеза МПА. Общий стаж цифровых разработок составляет более четверти века, что позволяет мне высказать некоторые рекомендации. Во-первых, профессионал – это не тот, кто всё знает, а тот специалист, кто умеет ориентироваться в море информации и осваивать новые перспективные направления. Во-вторых, при освоениии новых технологий, дабы не превратиться в мартышку с арифмометром, нужно знать азбуку своей профессии. Для цифровика эта азбука заключается в следующем: 1. Алгебра логики. 2. Карты Карно на 8 - 12 переменных как наиболее эффективный способ ручной минимизации Булевых функций. 3. Метод обобщённых кодов как наиболее эффективный машинный метод минимизации Булевых функций от большого числа переменных(32 и более). 402 403 4. Формальный синтез МПА. 5. Эвристические методы синтеза последовательностных схем. Без знания этих основ цифровик не имеет права на звание инженера. Синтез МПА фундаментально и элегантно изложен у Баранова С.И. Однако эта элегантность и математическая строгость не позволили подавляющему большинству инженеров освоить формальный синтез. Эвристические методы прекрасно и просто описаны у Гутникова. Метод обобщённых кодов был разработан в конце 60-х годов на 21-й кафедре Академии им. Дзержинского д. т. н. Мавренковым Леонидом Трофимовичем. Дальнейшее развитие метода и доведение его до инженерных методик было выполнено сотрудниками этой кафедры к.т.н. Кустенко А.С., к.т.н. Кузнецовым Н.В. и к.т.н. Салтыковым Ю.А.(см. "Вопросы оборонной техники", 1972 г.). Все 5 пунктов «цифрового букваря» достаточно просто изложены в техническом руководстве по материалам лекций, прочитанных автором в 1976г. для ведущих специалистов НИИРТА[13], а также в “Азбуке разработчика цифровых устройств”[26]. Кроме вышеперечисленного ликбеза разработчику-цифровику необходимо осваивать и классическую логику. Связано это с тем, что 21 век называют веком искусственного интеллекта (ИИ). Задачи ИИ будут решать цифровики. Но фундаментом ИИ являются логика суждений и силлогистика. Классическая мировая логика в этом плане дремуче невежественна. Проблемы этих дисциплин с инженерной точки зрения абсолютно прозрачны и впервые решены в России[16 – 31, 34], а также на сайте http://ruslogic.narod.ru], посему их результатами первыми должны воспользоваться российские инженеры. На вышеприведённом рисунке представлен проект цифрового фильтра второго 403 404 порядка. После трансляции он занял 25% объёма ПЛИС EPF10K20. После добавления к нему аналогичного фильтра FLTR1.GDF, т.е. тоже 25% объёма EPF10K20, была получена схема: 404 405 Вместо ожидаемых 50% транслятор выдал сообщение о нехватке памяти. После замены EPF10K20 на ACEX1K(EP1K30TC144-1) трансляция прошла успешно. ** DEVICE SUMMARY ** Chip/ POF filtr Device Input Output Bidir Memory Memory Pins Pins Pins Bits % Utilized LCs % Utilized EP1K30TC144-1 User Pins: § Project Information 32 32 53 53 0 3008 12 % 452 0 d:\lvi\altera\project\redan\filtr\filtr.rpt 405 26 % LCs 406 Из распечатки файла filtr.rpt видно, что проект занял бы не более 50% ПЛИС EPF10K20. Работа 2-портового ОЗУ вызывает много вопросов(см. ramridp в otv81int, we & !clk = we & clk) Групповые операции присвоения тоже иногда приводят к неожиданностям. 406 407 SUBDESIGN karam1 % контроллер динамической памяти % ( z1,z2,z3,z4,z5 : input;% RESET,прошли 4096 тактов,2 тактa,WRITE,READ % z6,z7,z8,clk : input;% прошли 3 тактa,прошли 507 тактов,kr % y1,y2,y3,y4,y5,y6,y8 : output;% nWE,nRAS,nCAS,nCS,DQM,CKE,запуск таймера % y9,y10,y11,y12,y13,y14 : output; % A10,READY - готовность к работе,выдать адрес 0227h,выдать AdrStr,выдать AdrBank,выдать AdrStlb % y15,y16,y17,y18,y19 : output; % сигнал готовности данных для записи в ОЗУ,EOW-End of Write,EOR-End of Read,A[10..9]/A[1..0],Fcta % q[5..0] : output;% вых. регистра КА % ) VARIABLE q[5..0],qy[19..1] : DFF; d[5..0],dy[19..1],f[19..1] : NODE;% d - входы RG % BEGIN q[].clk = clk; q[].clrn = !z1; q[].prn = VCC; q[].d = d[]; qy[].clk = clk; qy[].clrn = !z1; 407 408 qy[].prn = VCC; qy[].d = dy[]; table q[5..0],z8,z7,z6,z5,z4,z3,z2,z1 => d[5..0]; 11 , x, x, x, x, x, x, x, 1 => 0; 0 , x, x, x, x, x, x, x, 1 => 0; 0 , x, x, x, x, x, x, x, 0 => 1; 1 , x, x, x, x, x, x, 0, x => 1; 1 , x, x, x, x, x, x, 1, x => 2; 2 , x, x, x, x, x, x, x, x => 3; 3 , x, x, x, x, x, x, x, x => 4; 4 , x, x, x, x, x, 0, x, x => 4; 4 , x, x, x, x, x, 1, x, x => 5; 5 , x, x, x, x, x, x, x, x => 6; 6 , x, x, x, x, x, 0, x, x => 6; 6 , x, x, x, x, x, 1, x, x => 7; 7 , x, x, x, x, x, x, x, x => 8; 8 , x, x, x, x, x, x, x, x => 9; 9 , x, x, x, x, x, x, x, x => 10; 10 , x, x, x, x, x, 0, x, x => 10; 10 , x, x, x, x, x, 1, x, x => 11; 11 , x, x, x, 0, 0, x, x, 0 => 11; 18 , x, x, x, x, x, x, x, x => 11; 37 , x, x, x, x, x, x, x, x => 11; 11 , x, x, x, 0, 1, x, x, 0 => 12; 12 , x, x, x, x, x, x, x, x => 13; 13 , x, x, x, x, x, 0, x, x => 13; 13 , x, x, x, x, x, 1, x, x => 14; 14 , x, x, x, x, x, x, x, x => 15; 15 , x, x, x, x, x, x, x, x => 16;% ТОП МПА % 16 , x, x, x, x, x, x, x, x => 17; 17 , x, x, x, x, x, 0, x, x => 17; 17 , x, x, x, x, x, 1, x, x => 18; 11 , x, x, x, 1, x, x, x, 0 => 19; 19 , x, x, x, x, x, x, x, x => 20; 20 , x, x, x, x, x, 0, x, x => 20; 20 , x, x, x, x, x, 1, x, x => 21; 21 , x, x, x, x, x, x, x, x => 22; 22 , x, x, x, x, x, x, x, x => 23; 23 , x, x, x, x, x, x, x, x => 24; 24 , x, x, x, x, x, x, x, x => 25; 25 , x, 0, x, x, x, x, x, x => 25; 25 , x, 1, x, x, x, x, x, x => 26; 30 , 0, 1, x, x, x, x, x, x => 26; 26 , x, x, x, x, x, x, x, x => 27; 27 , x, x, x, x, x, x, x, x => 28; 28 , x, x, x, x, x, x, x, x => 29; 29 , x, x, x, x, x, x, x, x => 30; 30 , x, 0, x, x, x, x, x, x => 30; 30 , 1, 1, x, x, x, x, x, x => 31; 408 409 31 32 32 33 34 35 36 , x, x, x, x, x, x, x, x => 32; , x, x, x, x, x, 0, x, x => 32; , x, x, x, x, x, 1, x, x => 33; , x, x, x, x, x, x, x, x => 34; , x, x, x, x, x, x, x, x => 35; , x, x, x, x, x, x, x, x => 36; , x, x, x, x, x, x, x, x => 37; end table; table q[5..0] => f19,f18,f17,f16,f15,f14,f13,f12,f11,f10,f9,f8,f6,f5,f4,f3,f2,f1; 0 => 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0, 0, 0, 0, 0, 0, 0, 0; 1 => 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0, 1, 1, 1, 0, 1, 1, 1; 2 => 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1, 0, 1, 0, 0, 1, 0, 0; 3 => 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0, 0, 1, 0, 0, 0, 0, 1; 4 => 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0, 1, 1, 0, 1, 1, 1, 1; 5 => 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0, 0, 1, 0, 0, 0, 0, 1; 6 => 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0, 1, 1, 0, 1, 1, 1, 1; 7 => 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0, 0, 1, 0, 0, 0, 0, 1; 8 => 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0, 0, 1, 0, 1, 1, 1, 1; 9 => 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0, 0, 0, 0, 0, 0, 0, 1; 10 => 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0, 1, 0, 0, 1, 1, 1, 1; 11 => 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0, 0, 0, 0, 1, 1, 1, 1; 12 => 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0, 0, 1, 0, 0, 1, 1, 1; 13 => 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0, 1, 1, 0, 1, 1, 1, 1; 14 => 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0 , 0 , 0, 0, 1, 0, 0, 1, 0, 1; 15 => 0 , 0 , 0 , 0 , 1 , 1 , 1 , 0 , 0 , 0 , 1, 0, 1, 0, 0, 0, 1, 0; 16 => 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0, 0, 0, 0, 0, 0, 0, 1; 17 => 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0, 1, 0, 0, 1, 1, 1, 1; 18 => 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0, 0, 0, 0, 1, 1, 1, 1;% таблица выходных функций % 19 => 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0, 0, 1, 0, 0, 1, 1, 1; 20 => 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0, 1, 1, 0, 1, 1, 1, 1; 21 => 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0 , 0 , 0, 0, 1, 0, 0, 1, 0, 1; 22 => 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0 , 0 , 0 , 1, 0, 1, 0, 0, 0, 1, 1; 23 => 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0, 0, 1, 0, 1, 1, 1, 1; 24 => 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0, 0, 1, 0, 1, 1, 1, 1; 25 => 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0, 1, 1, 0, 1, 1, 1, 1; 26 => 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0 , 0 , 0, 0, 1, 0, 0, 1, 0, 1; 27 => 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0 , 0 , 0 , 1, 0, 1, 0, 0, 0, 1, 1; 28 => 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0, 0, 1, 0, 1, 1, 1, 1; 29 => 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0, 0, 1, 0, 0, 0, 0, 1; 30 => 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0, 1, 1, 0, 1, 1, 1, 1; 31 => 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0, 0, 1, 0, 1, 1, 1, 1; 32 => 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0, 1, 1, 0, 1, 1, 1, 1; 33 => 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0, 0, 0, 0, 0, 0, 0, 1; 34 => 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0, 0, 0, 0, 1, 1, 1, 1; 35 => 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0, 0, 0, 0, 1, 1, 1, 1; 36 => 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0, 0, 0, 0, 1, 1, 1, 1; 37 => 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0, 0, 0, 0, 1, 1, 1, 1; end table; 409 410 dy[6..1] = f[6..1]; dy[19..8] = f[19..8]; dy8 = f8; dy7 = gnd; y1 = qy1; y2 = qy2; y3 = qy3; y4 = qy4; y5 = qy5; y6 = qy6; y8 = qy8; y9 = qy9; y10= qy10; y11= qy11; y12= qy12; y13= qy13; y14= qy14; y15= qy15; y16= qy16; y17= qy17; y18= qy18; y19= qy19; end; 410 411 7.3. О повышении технического уровня отечественных разработок. В настоящее время остро ощущается разрыв поколений разработчиков, резко снизился технический уровень НИОКР. Это результат целенаправленного уничтожения морали, культуры, образования, науки, экономики, политики и обороноспособности России, осуществляемого «пятой колонной» по указанию так называемого Всемирного правительства (США). Бороться с этой предательской политикой фактически оккупационного правительства необходимо на всех фронтах, в том числе и на научно-техническом. Задачей старшего поколения инженеров и учёных является передача накопленных знаний молодому поколению патриотов, строителей новой России. Автор более 30 лет занимается разработками цифровых систем управления, длительное время возглавлял отдел в ЦННИИ «Циклон» (головной институт Минэлектронпрома СССР), внедрял микропроцессоры и вычислительную технику в народное хозяйство, поэтому о советских разработках знает не понаслышке. Если даже в СССР технический уровень проектов был недостаточно высоким, то теперь он опустился до радиолюбительства. Задача старшего поколения проектировщиков заключается в повышении уровня современных разработок и передаче накопленного опыта молодой генерации конструкторов. В НИИ Дальней Радиосвязи (НИИДАР) сложилась группа разработчиковпрофессионалов, имеющих 30 – 40-летний опыт создания систем управления оборонного назначения. Возглавляет группу зам.руководителя НПП «Полигонные системы ПВО» Кашин Ф.А. На его счету разработки систем управления радиовзрывателями (РВ) для ракет (изделия 83В6, 88В6, 98В6, 3В46, 9ЖБ920 – изделие «Крым» и т.п.), а также систем спутниковой навигации и систем полигонных испытаний для головок самонаведения и РВ при работе по движущейся цели. При создании этих систем использовалась как отечественная, так и современная зарубежная элементная база (ПЛИС, микроконтроллеры, синтезаторы частоты и т.п.). В группе обобщён опыт проведения работ НИИРТА (НПО «Импульс», Минсредмаш СССР), ЦНИИ «Циклон» (Минэлектронпром СССР), НПП «Полигонные системы ПВО», НПП «Редан» (при ГУП НПП «Регион») и НИИДАР. Эта группа в состоянии выявить недостатки проекта в объёме изделия 88В6 и предложить решения по устранению недостатков. Скопившиеся за последнее десятилетие претензии к уровню цифровых разработок изложены в работах автора. В основном это незнание инженерных и формальных методов синтеза микропрограммных автоматов (МПА), неумение построить тестопригодную систему и тем более разработать тест со 100% полнотой контроля. Элементарным признаком безграмотной разработки является использование «рассыпной» элементной базы вместо разрешённых к применению БМК, ПЛМ и ПМЛ. В случае применения зарубежных ПЛИС по незнанию игнорируются вопросы стыковки ПЛИС с входными и выходными сигналами. Не решаются вопросы повышения надёжности при спецвоздействиях хотя бы на таком уровне как это сделано в изделии 5Е50 в 70-е годы прошлого века. 411 412 Многолетний стаж разработок цифровых систем управления в Минсредмаше, разработка и внедрение в народное хозяйство микропроцессорных систем, а также участие в разработках изделий других ведомств оборонного характера позволили накопить определённый практический и теоретический багаж. Программирование на языках высокого уровня (ЯВУ): Фортран, Алгол, Паскаль, Си, Форт, РАЯ и использование не менее двух десятков ассемблеров привело к выводу, что далеко не всё благополучно в стане программистов. Опыт схемотехнического проектирования и постоянные контакты с разработчиками Советского Союза выявили слабую теоретическую подготовку отечественных разработчиков в области синтеза микропрограммных автоматов (МПА). Непродолжительное, к сожалению, взаимодействие с ведущими специалистами СССР в области диагностики, такими как проф. Дербунович Л.В.(ХПИ, г. Харьков), к.т.н. Мызь А.Н.(ХПИ), тем не менее привело к мысли о низком профессиональном уровне разработчиков цифровых систем управления в области обеспечения контролепригодности своих разработок и их тестировании (автор не является исключением). 412 413 Уровень современных разработок и элементная база: ПЛИС, сигнальные процессоры и отечественные аналоги. Сложность современных задач по цифровой обработке информации достигла такого уровня, что говорить о реализации этих проектов на традиционной «рассыпной» элементной базе не приходится. Одна из плат НИР–овского варианта модуля цифровой обработки сигнала имеет в своём составе 6 сигнальных процессоров типа ADSP2181 и 6 ПЛИС FLEX10K20. Использование указанной элементной базы позволило обеспечить массогабаритные и надёжностные требования к изделию. Однако бортовые системы категорически должны строиться на базе отечественных микросхем. МИД в лице своего министра заявило 26.01.03 о возврате к холодной войне. За прошедшие годы ситуация только обострилась: грузино-осетинская война 2008г. с участием России и США выявила дополнительные недостатки разгромленного «пятой колонной» военно-промышленного комплекса . Проектирование современных цифровых и аналоговых систем управления напоминает зачастую процесс построения домиков из кубиков в детском саду. В целом такая тенденция прогрессивна. Беда лишь в том, что «кубики» эти зарубежные. Однако требования безопасности России диктуют безусловный переход на отечественную элементную базу. Свежий пример: при создании цифрового телевизионного передатчика были использованы весьма неплохие ИС АЦП AD9244, AD7723 и синтезатор AD9854. А теперь наш ОМТС столкнулся с проблемой эмбарго. В советские времена мы с гордостью говорили: «Только СССР и Америка делают всю номенклатуру электронной техники». Ушли те времена, а проблема обеспечения электронной безопасности осталась. В своих разработках мы столкнулись с тем, что Заказчик (а это люди в погонах, защитники России) справедливо и жёстко потребовал от нас перевода предыдущих разработок на отечественную элементную базу. В цифровой и даже аналоговой электронике такой переход возможен лишь за счёт базовых матричных кристаллов (БМК). Что может в настоящее время предложить разгромленная электронная промышленность России? В области сигнальных процессоров разработаны в ГУП НПЦ ЭЛВИС двухпроцессорные (RISC – и DSP – ядро) микросхемы Мультикор-11хх (МС11хх) на основе 0,54-мкм (3 металла) библиотеки отечественного изготовителя ОАО «Ангстрем». Микросхема МС-11Т имеет интеграцию около 2 млн. вентилей и размеры кристалла 10,1х10,1мм. Функциональные возможности Мультикор-11 на уровне сигнального 32-разрядного процессора TMS320VC5470. Опытные образцы МС-11Т получены в IV квартале 2002г. На их основе созданы платы KIT, с помощью которых проверяется работа САПР отладки программного обеспечения для МС-11Т. Автор присутствовал при демонстрации процесса отладки САПР. В конце 2003г. была создана базовая версия инструментального программного обеспечения MCS для СБИС на базе платформы «Мультикор». Демо-версия MCS была любезно предоставлена автору руководством. Вся стратегия проектирования ГУП НПЦ ЭЛВИС чётко вписывается в требования технологии разработок «система на кристалле» (СнК, или SoC). 413 414 В настоящее время серийные образцы «Мультикоров» содержат уже 15 млн. транзисторов. Кристаллы были изготовлены по технологии 0,25 мкм и содержат RISC - и DSP – ядро. Производительность процессоров – порядка 600 Мflops. Напомню, что такую производительность имеет сигнальный процессор SHARC ADSP21160N компании Analog Devices, являющейся флагманом в создании компонентов для построения систем ЦОС. В середине 2004 г. был создан процессор по технологии «Мультикор» с производительностью 2400 Mflops и свыше 14 млрд. оп./с. для байтовых форматов данных, что соответствует характеристикам самого мощного чипа DSP Tiger SHARC (TS201, 0,13мкм, 3600 Mflops). Но мало освоить технологию разработки кристаллов – нужно дать проектировщикам инструментарий для создания систем ЦОС на базе «Мультикор». Фирма ЭЛВИС блестяще справилась и с этой задачей. Создан системный «Мультикор-конструктор» на основе набора СБИС, позволяющий разработчику РЭА легко создавать как связанные, так и распределённые системы. В конструктор входят разнообразные средства отладки и моделирования, инструментальные платы и мощное программное обеспечение. Запад не продаёт системы такого интеллектуального уровня (эмбарго). Процессоры «Мультикор» будут продаваться без ограничений. Кроме того, тестовое инструментальное ПО для чипов «Мультикор» передаётся бесплатно. В области БМК достаточно широкая номенклатура от Н1806ХМ1 (1,5 тыс. вентилей) до 1592ХМ1 (100 тыс. вентилей, 50 МГц). Более подробную информацию можно получить на сайте http://www.angstrem.ru. Могу лишь отметить, что отечественные БМК в настоящее время решают все проблемы по замене ПЛИС фирмы “Altera” вплоть до реализации проектов, выполненных на EP1K50 . Перевод одной ПЛИС в настоящее время обходится в 440 тыс.руб. Это относительно дорого, но альтернатива отсутствует: кто не любит свою армию – кормит чужую. Кстати по западным меркам цена чрезвычайно низкая. Популярная в последнее десятилетие технология проектирования «система на кристалле» (СнК, SoC) поддержана отечественной электроникой выпуском СБИС 1879ВМ3. Эта СБИС содержит два 6-разрядных АЦП и четыре 8разрядных ЦАП (быстродействие 600 Мвыборок/с.), выпускается в радиационностойком исполнении с пятой Приёмкой Заказчика. Эта же фирма выпускает и сигнальный процессор Л1879ВМ1. Так что «ещё не вечер» для русской электроники, а интеллектом Россия не обижена. 414 415 Проблемы проектирования современных цифровых систем управления. Современное проектирование цифровых устройств и систем предъявляет к разработчику повышенные требования, что вызывает появление ряда проблем. Использование ПЛИС и БМК только обострило эти проблемы. Постараемся рассмотреть их комплексно. Во-первых, необходимо отметить, что советские инженеры – самые талантливые и образованные в мире. По роду своей предыдущей деятельности мне приходилось общаться почти со всеми разработчиками в СССР и анализировать зарубежные проекты. Во-вторых, современные разработки предъявляют более жёсткие требования к проектировщикам, поэтому поговорим о наших недостатках. Формализация ТЗ. Пять лет назад, выполняя какую-то разработку для фирмы МиГ, я с удивлением обнаружил, что опытные профессионалы, описывая работу МПА, рисуют многочисленные циклограммы. Во-первых, это не гарантирует полного и корректного описания работы МПА, во-вторых, обременительно. Попытался привить им культуру задания МПА с помощью граф-схем алгоритмов (ГСА). Кажется, удалось обратить их в свою веру. Спустя два года, сотрудничая со специалистами «Полигонных систем ПВО», я столкнулся с необходимостью введения некоторого более мощного формального языка описания работы МПА. В качестве такого инструмента может использоваться П-код («Дисциплина программирования» Дзержинского Ф.Я. и Завгороднего Н.В. – М.:1983 г.) или Псевдо-Паскаль. Заманчиво с этой целью использовать просто Паскаль или Си: можно получить вместе с ТЗ и математическую модель проектируемого МПА. Однако, при этом теряется прозрачность ТЗ. Тем не менее решение этой проблемы желательно. Вот как выглядит частичное описание на Псевдо-Паскале работы МПА для управления БИС динамической памяти на 256 Мбайт. Program rdram1; { Процедура чтения из ОЗУ1: инициируется командой READ от RS232. } {READ=1 пока не появится EOR=0} Begin repeat nop; until (read = 1) and (ready=1) and (write=0); eosrf: cke := 1; #we := #ras := #cas := 1; #cs := 0; delay(1); cke := 1; #we := #ras := #cas := 1; #cs := 1; 415 416 delay(2); i:=0; repeat act: A[12..0]:=AdrStr; BA0..BA1:=AdrBank; #we:=cke:= #cas :=1;#ras:=#cs := 0; delay(1); reada: A[9..0]:=AdrStb; A10:=1; BA0..BA1:=AdrBank; #we:=#ras:=cke:=1;#cas:=#cs:=0; dqm:= 0; delay(1); cke := 1; #we := #ras := #cas := 1; #cs := 1; delay(1); cbr: подать без присвоения AD[10..9]-1; if i>0 then begin #we := 1; #ras := #cas := #cs :=0; cke :=1; dqm := 0; end; delay(1); cke := 1; #we := #ras := #cas := 1; #cs := 1; AD[25..0]:=AD[25..0]+1; delay(508); i :=1; until kr = 1; delay(3); slfr: #we := 1; #ras := #cas := #cs := cke := 0; delay(3); eor := 0; delay(1); eor:=1; end. Примерно такие же по объёму алгоритмы подготовки к работе ОЗУ и записи в ОЗУ, поэтому ГСА получается довольно громоздкой. Кстати, традиционная эвристическая реализация такого МПА, выглядит уже неразумной, поскольку очевиден явно программный характер задачи. Программирование и микропрограммирование. Уже в 70-е годы прошлого столетия стала проявляться тенденция превращения цифровых схемотехников в программистов. Во-первых, потому, что в разработки был внедрён синтез микропрограммных автоматов , а во-вторых, потому, что каждый инженер обязан владеть программированием (но не обязательно программировать!), поскольку для него это то же самое, что в 19 веке счёты для бухгалтера. В настоящее время синтез цифровых систем выполняется на формальных микро-языках VHDL, AHDL, VERYLOG. Схемотехники ста- 416 417 ли микропрограммистами. А следовательно, и проблемы схемотехников и программистов стали общими. Например, программисты не умеют верифицировать свои программы, схемотехники тоже недолюбливают схемную диагностику. Простой тест для программистов: из файла триадами поступают целые числа, которые интерпретируются как длины сторон треугольника. Программа определяет тип треугольника. Ни один из программистов не определил все 14 наборов тестов. Ни программисты, ни схемотехники ничего не знают о диагностическом процессоре. Кроме того, наше программное обеспечение (ПО) построено на западных операционных системах (ОС) и языках программирования, не защищено от взлома, вскрытия, т.е. не соблюдается элементарная информационная безопасность. Выход из тупика в использовании отечественных технологий. Примером такой технологии является ДССП и язык РАЯ (МГУ,Брусенцов Н.П.,http://www.trinitas.ru ). Кстати, язык РАЯ в ДССП позволяет писать в 5 – 7 раз более компактные программы, чем это способен делать ЯВУ Си. Сегодня переход на отечественные программные технологии не реален, но когда-то нужно опомниться. Кстати, в настоящее время в МГУ ведутся работы по реализации ДССП-процессора на ПЛИС EP1K100QC208-1. Автор в свободное от основной работы время участвует в этих работах. Далее, технология структурированного программирования мало что даёт, если объём ПО превышает 1000 стр. текста на языке Си. Микропрограммисты решают проблему создания относительно прозрачной схемы текстографическим проектированием. Возможно, на этом же пути находится решение проблем дисциплины программирования: лет 30 тому назад существовал графический Паскаль. В качестве примера текстографического проектирования приводится частичное описание видеоконтроллера цифрового телевизионного передатчика (ЦТВП), управляющего синтезатором частоты AD9854. Здесь верхние уровни иерархии представлены в графическом виде, а микропрограммы нижнего уровня создаются в текстовом формате. На рис.1 и 2 представлены схемотехника, микропрограммы и результат симуляции работы видеоконтроллера. Для отладки видеотракта ЦТВП используется примитивное контрольнодиагностическое устройство (КДУ), состоящее из ПЛИС EP1K100QC208-1, конфигурационного ПЗУ и БИС ОЗУ ёмкостью 2 ТВ-экрана. Габариты платы КДУ составляют 100 х 100 мм. КДУ связано с ПК по интерфейсам USB, LPT, RS-232, RS-485. Программа для управления видеоконтроллером amvideo.pas работает под MS DOS в ПК. Скорость обмена между ПК и КДУ не превышает 200 кбайт в сек. program amvideo; {программа амплитудной модуляции для СЧ типа AD9854} uses printer,dos,crt; const base = $378;{базовый адрес регистра данных} strobe = $01;{маска бита STROBE регистра управления} autofd = $02;{маска бита AUTOFD регистра управления - nWR для СЧ} init = $04;{маска бита INIT регистра управления - UdClk для СЧ} slctin = $08;{маска бита SELECTIN регистра управления} busy = $10;{маска бита BUSY регистра состояния} 417 418 type vect=array[0..1023] of real; massiv=array[0..9] of byte; var n,nr :longint; bytemas:massiv; ni,i,j:longint; tau:word; ch :char; nis,nrs,ns:string; c1,c2 :array[1..32] of real; m:array[0..6143] of byte; c,f,fh,h,ftw,fsys:real; addr,data:byte; csys:double; {addr,data - адрес и данные для СЧ, f - несущая частота, h - шаг по частоте, ftw - код установки частоты для AD9854, fiint - нач. фаза в дискретах времени, шина управления(порт $37A) для записи из компьютера: nSTROBE - запись в регистры адреса и данных КДУ, nAUTO_FD - сигнал записи для СЧ, nINIT - сигнал обновления информации(UdClk) для СЧ, nSLCT_IN - выбор регистра адреса(0) или регистра данных(1) } {-------------------------------------------------------------} function intchar(m:integer):char; var ch:char; begin case m of 0..9: ch:=chr(m+ord('0')); 10..35: ch:=chr(ord('A')+m-10); else begin writeln('Ошибка ввода'); halt; end; end{case}; intchar:=ch; end; {-------------------------------------------------------------} function stpn(x,y:real):real; begin stpn:=exp(y*ln(x)); end; {--------------------------------------------------------------} function int10(a:longint;b:integer):string; {Пеpевод целого 10-ичного числа в (2..36)-ичные системы} {a,b - исх. 10-ичн. число и основание сист. счисл. соотв-енно} var s:string; 418 419 m,i,j:integer; chrarr:array[0..30] of string; begin i:=0; for j:=0 to 30 do chrarr[j]:=' '; repeat m:=(a mod b); chrarr[i]:=intchar(m); a:=a div b; i:=i+1; until (a=0); s:=chrarr[i]; for j:=i-1 downto 0 do s:=s + chrarr[j]; int10:=s; end; {--------------------------------------------------------------} procedure int256(f:real;var mass:massiv); {Разделение целого 10-ичного числа на байты} {f - исх. 10-ичн. число} var fi,fri,m:longint; ff,fr:real; i:integer; begin ff:=f/65536;{масштабирование} fr:=frac(ff)*65536; fri:=trunc(fr); fi:=trunc(ff); mass[1]:=fri mod 256; mass[2]:=fri div 256; i:=3; repeat m:=fi mod 256;{m:=a mod 256} mass[i]:=m; fi:=fi div 256;{a div 256} i:=i+1; until (fi=0); end; {---------------------------------------------------------} procedure ustanow; begin port[base]:=0; {0 -> регистр данных LPT1} port[base+2]:=0; {0 -> регистр управления LPT1} writeln; end; {--------------------------------------------------------------} procedure ustreg; {Установка АМ-режима работы СЧ} var i:integer; begin 419 420 port[base]:=$1f; {посылка в порт 378h байтa адреса} port[base+2]:=strobe; port[base+2]:=0; port[base]:=$c6; {посылка в порт 378h байта данных для СЧ} port[base+2]:=strobe xor slctin; port[base+2]:=slctin; port[base+2]:=0; for i:=1 to 10 do begin port[base+2]:=autofd;{nWR для СЧ} port[base+2]:=0; port[base+2]:=init;{UdClk для СЧ} port[base+2]:=0; end; port[base]:=$1f; {посылка в порт 378h байтa адреса} port[base+2]:=strobe; port[base+2]:=0; port[base]:=06; {посылка в порт 378h байта данных для СЧ} port[base+2]:=strobe xor slctin; port[base+2]:=slctin; port[base+2]:=0; for i:=1 to 10 do begin port[base+2]:=autofd;{nWR для СЧ} port[base+2]:=0; port[base+2]:=init;{UdClk для СЧ} port[base+2]:=0; end; port[base]:=$1d; {посылка в порт 378h байтa адреса} port[base+2]:=strobe; port[base+2]:=0; port[base]:=$10; {посылка в порт 378h байта данных для СЧ} port[base+2]:=strobe xor slctin; port[base+2]:=slctin; port[base+2]:=0; for i:=1 to 10 do begin port[base+2]:=autofd;{nWR для СЧ} port[base+2]:=0; port[base+2]:=init;{UdClk для СЧ} port[base+2]:=0; end; port[base]:=$1e; {посылка в порт 378h байтa адреса} port[base+2]:=strobe; port[base+2]:=0; port[base]:=$44; {посылка в порт 378h байта данных для СЧ} port[base+2]:=strobe xor slctin; port[base+2]:=slctin; port[base+2]:=0; for i:=1 to 10 do 420 421 begin port[base+2]:=autofd;{nWR для СЧ} port[base+2]:=0; port[base+2]:=init;{UdClk для СЧ} port[base+2]:=0; end; port[base]:=$20; {посылка в порт 378h байтa адреса} port[base+2]:=strobe; port[base+2]:=0; port[base]:=$40; {посылка в порт 378h байта данных для СЧ} port[base+2]:=strobe xor slctin; port[base+2]:=slctin; port[base+2]:=0; for i:=1 to 10 do begin port[base+2]:=autofd;{nWR для СЧ} port[base+2]:=0; port[base+2]:=init;{UdClk для СЧ} port[base+2]:=0; end; end; {--------------------------------------------------------------} procedure ustfreq(var bytemas:massiv); {Установка частоты} {bytemas - массив кодов задаваемой частоты} var i:integer; begin port[base]:=04; {посылка в порт 378h байтa адреса} port[base+2]:=strobe; port[base+2]:=0; port[base]:=bytemas[5];{посылка в порт 378h байта данных для СЧ} port[base+2]:=strobe xor slctin; port[base+2]:=slctin; port[base+2]:=0; for i:=1 to 10 do begin port[base+2]:=autofd;{nWR для СЧ} port[base+2]:=0; port[base+2]:=init;{UdClk для СЧ} port[base+2]:=0; end; port[base]:=05; {посылка в порт 378h байтa адреса} port[base+2]:=strobe; port[base+2]:=0; port[base]:=bytemas[4]; {посылка в порт 378h байта данных для СЧ} port[base+2]:=strobe xor slctin; port[base+2]:=slctin; port[base+2]:=0; for i:=1 to 10 do begin 421 422 port[base+2]:=autofd;{nWR для СЧ} port[base+2]:=0; port[base+2]:=init;{UdClk для СЧ} port[base+2]:=0; end; port[base]:=06; {посылка в порт 378h байтa адреса} port[base+2]:=strobe; port[base+2]:=0; port[base]:=bytemas[3]; {посылка в порт 378h байта данных для СЧ} port[base+2]:=strobe xor slctin; port[base+2]:=slctin; port[base+2]:=0; for i:=1 to 10 do begin port[base+2]:=autofd;{nWR для СЧ} port[base+2]:=0; port[base+2]:=init;{UdClk для СЧ} port[base+2]:=0; end; port[base]:=07; {посылка в порт 378h байтa адреса} port[base+2]:=strobe; port[base+2]:=0; port[base]:=bytemas[2]; {посылка в порт 378h байта данных для СЧ} port[base+2]:=strobe xor slctin; port[base+2]:=slctin; port[base+2]:=0; for i:=1 to 10 do begin port[base+2]:=autofd;{nWR для СЧ} port[base+2]:=0; port[base+2]:=init;{UdClk для СЧ} port[base+2]:=0; end; port[base]:=08; {посылка в порт 378h байтa адреса} port[base+2]:=strobe; port[base+2]:=0; port[base]:=bytemas[1]; {посылка в порт 378h байта данных для СЧ} port[base+2]:=strobe xor slctin; port[base+2]:=slctin; port[base+2]:=0; for i:=1 to 10 do begin port[base+2]:=autofd;{nWR для СЧ} port[base+2]:=0; port[base+2]:=init;{UdClk для СЧ} port[base+2]:=0; end; end; {--------------------------------------------------------------} procedure lptend; 422 423 {Окончание работы с LPT} var i:integer; begin port[base]:=$5f; {посылка в порт 378h признака конца работы с LPT} port[base+2]:=strobe; port[base+2]:=0; port[base]:=$c6; {посылка в порт 378h байта данных для СЧ} port[base+2]:=strobe xor slctin; port[base+2]:=slctin; port[base+2]:=0; for i:=1 to 10 do begin port[base+2]:=autofd;{nWR для СЧ} port[base+2]:=0; port[base+2]:=init;{UdClk для СЧ} port[base+2]:=0; end; end; {=========================================================} begin clrscr; ustanow; writeln('Подайте напряжение +5 В, затем нажмите ENTER'); readln; writeln('╔═══════════════════════════════╗'); writeln('║ Амплитудно-частотная модуляция на ║'); writeln('║ основе СЧ с помощью КДУ и ПК ║'); writeln('║ Лобанов В.И. 18-11-2004 ║'); writeln('╚═══════════════════════════════╝'); ustreg; csys:=stpn(2,40); writeln('Системная константа csys = 2^40 = ',csys); write('Введите системную и несущую частоты диапазона в МГц '); readln(fsys,f); ftw:=f/fsys*csys; writeln('Десятичный код частоты f = ',f:10:6,' равен ftw = ',ftw); for j:=0 to 9 do bytemas[j]:=0; writeln; int256(ftw,bytemas); writeln('Байты кода = '); for j:=5 downto 0 do write(bytemas[j]:6); writeln; ustfreq(bytemas); lptend; writeln('Нажмите ENTER'); readln; clrscr; end. 423 424 Конечно, эту программку на Паскаль можно сократить в несколько раз, но спешка при отладке аппаратуры не позволила тратить время на «причёсывание». Рис.1. Структурная схема видеоконтроллера ЦТВП. 424 425 425 426 Рис.2. ЦТВП. Микропрограммы конечных 426 автоматов видеоконтроллера 427 Формальный синтез МПА при использовании ПЛИС. Широкое внедрение ПЛИС фирмы Altera в практику цифровых разработок связано не только с достоинствами этих микросхем, но и не в последнюю очередь с появлением отечественной литературы по данному вопросу. Десять лет тому назад появление САПР ПЛИС Xilinx сопровождалось такими сложностями, что применять эту систему в практических разработках не было ни малейшего желания. В прекрасном практическом курсе Антонова А.П., не только разобран весь процесс проектирования, но ещё и приложен компакт-диск с самой САПР MAX+PLUS II. Эта САПР имеет ряд существенных недостатков, но позволяет даже радиолюбителю решать серьёзные задачи. Однако, перевод полученного решения на БМК требует знания формальных методов синтеза МПА. Прежде всего это связано с минимизацией булевых функций, поскольку такая операция не только экономит ресурсы, но и минимизирует задержку комбинационной схемы. Аппарат минимизации в САПР реализован из рук вон плохо. Следовательно, цифровику необходимо знать азбуку своей профессии: на калькулятор надейся, а таблицу умножения не забывай. Кто умеет работать с картами Карно на 8-10 переменных? Никто. А ведь это азбука. Не всегда есть под рукой эффективная программа минимизации, да зачастую (в 99% всех случаев) она и не требуется. Кстати, самым эффективным алгоритмом минимизации обладает метод обобщённых кодов. Он был 427 428 проверен автором в конце 70-х годов прошлого века при минимизации булевых функций от 45 переменных. До сих пор ничего более элегантного не появилось. Этот метод разработан в конце 60-х годов 20-го века на 21-й кафедре Академии им. Дзержинского полковником, д. т. н. Мавренковым Леонидом Трофимовичем. Дальнейшее развитие метода и доведение его до инженерных методик было выполнено сотрудниками этой кафедры к.т.н. Кустенко А.С., к.т.н. Кузнецовым Н.В. и к.т.н. Салтыковым Ю.А.(см. "Вопросы оборонной техники", 1972 г.). В открытой печати этот метод появился в 1977г.. Формальный синтез МПА в САПР также имеет дефекты. Недостатков в САПР слишком много, но это тема для отдельного разговора. Т.е. САПР MAX+PLUS II не удовлетворяет запросы профессиональных разработчиков. При работе с БМК проектировщик всегда должен быть готов к тому, что некоторые элементы и модули ему придётся строить формально. В частности цифровик обязан уметь создавать любую элементную базу на основе И-НЕ (функционально полный элемент ИЛИ-НЕ в OrCAD не позволит создать SR-триггер из-за гонок). Например, при работе на предельных частотах для синтеза асинхронных МПА требуется SR-триггер со сбросом, иначе не удастся провести симуляцию в пакете MAX+PLUS II. Этот элемент памяти необходимо построить чисто формально, причём с предельно высоким быстродействием. Сплошь и рядом приходится синтезировать МПА, работающие по самым причудливым алгоритмам. Применять эвристику для решения подобных задач всё равно, что забивать микроскопом гвозди. Вообще цифровик должен уметь формально строить МПА на любых элементах, в том числе и на лампах, и на реле. Это потребовалось в Чернобыле. Применение микропроцессоров породило проблему помехоустойчивости. Сбои в работе процессора могли приводить к катастрофическим последствиям. Поэтому появились всевозможные «войч-доги», которые контролировали время выполнения циклических участков программы. Однако этот приём оказался малоэффективным. На смену «сторожевым собачкам» пришёл диагностический процессор (ДП) CERBERUS-16. Но высокая сложность устройства, большой латентный период обнаружения ошибки и сложность подготовки программы ДП не позволили внедрить его в производство. В ХПИ им. В.И. Ленина, на кафедре автоматики и телемеханики в 1985 г. был разработан отечественный ДП, лишённый вышеуказанных недостатков. Работами по созданию и испытаниям ДП руководил проф. Леонид Викторович Дербунович. Кроме самой схемы был разработан транслятор с ассемблера КМ1816ВЕ48 на язык диагностического процессора. ДП успешно прошёл испытания и был рекомендован в 1990 г. к производству в виде специализированной БИС. Отсутствие финансирования и развал Советского Союза похоронили перспективный проект. Автор попытался перевести схему ХПИ на ПЛИС Xilinx, но низкий уровень интеграции позволил сократить объём с 66 корпусов лишь до 12. Такой результат не имеет практической ценности. Появление ПЛИС и БМК высокой интеграции позволяют возродить надежду на реализацию идей харьковчан в виде одной ПЛИС, а возможно и одного отечественного БМК. Макетирование проектов. Несмотря на то, что САПР MAX+PLUS II при симуляции выдаёт достаточно корректные результаты, макетирование проектируемой схемы остаётся насущной необходимостью. Поэтому имеет смысл разработки макетной платы, 428 429 которая содержит одну или несколько различных ПЛИС, несколько АЦП и ЦАП с возможностью коммутации связей. Это позволит проверять работу различных ПЛИС с различными периферийными устройствами. Такая предварительная проверка позволит подготовить проект для реализации его на БМК с минимальным количеством ошибок. В большинстве случаев можно воспользоваться готовыми платами для макетирования, так называемыми KIT. Кроме того, необходимо аналогичное макетирование для обеспечения входного контроля получаемых БМК. Полагаться на гарантии поставщика было бы неразумно. Математическая логика и искусственный интеллект. Как заявил директор ГУП НПЦ «ЭЛВИС» Петричкович Я.Я. Россия не может конкурировать с Китаем в области бытовой электроники: слишком дёшев труд в КНР . А вот в области высоких технологий Россия вне досягаемости Китая, Индии и абсолютного большинства других стран. «ЭЛВИС» уже «наступает на пятки» Америке в создании элементной базы для систем ЦОС. Но в России остался ещё невостребованным потенциал огромной мощности. Все советские инженеры прекрасно владели математикой, а это фундамент искусственного интеллекта. 21 век называют веком искусственного интеллекта (ИИ), но отсутствие математической логики (взамен аристотелевской) препятствует решению фундаментальных проблем ИИ в том числе и для целей обороны. По степени решения проблем ИИ судят о научном потенциале державы. В 21-м веке будут соревноваться не технологии, а интеллекты. Самой высокой технологией станет ИИ. В России создана Русская логика для решения задач ИИ. Решены проблемы, над которыми трудилось всё человечество (и «физики», и «лирики») 25 веков. Эта истинно математическая логика, созданная в России, прошла проверку на различных конференциях, симпозиумах и конгрессах, в том числе и международных. С 1998 г. не прозвучало ни одного критического замечания в адрес логики России. В свободное от основной работы время автор преподавал Русскую логику в школах, гимназиях, техникумах, колледжах и вузах, а также в обществе «Знание». Эта логика легко осваивалась даже семиклассниками. Основы Русской логики изложены на сайтах http://ruslogic.narod.ru, http://ruslogic.by.ru, http://www.trinitas.ru . И тем не менее преподаваемая в России логика дремуче невежественна и вопиюще безграмотна. Работы автора переведены за рубежом. Есть опасение, что там освоят Русскую логику раньше, чем мы. По докладу автора на «КС» по военной безопасности при Комитете по обороне ГД РФ 13.11.2003 было принято решение «о ликвидации логической необразованности всего российского общества в целом, как в 20-е годы прошлого века была ликвидирована начальная неграмотность в Советской России». Поэтому инженерному корпусу России придётся поголовно осваивать Русскую логику. Заключение. У России есть шанс подняться с колен. Нужна лишь политическая воля. 429 430 Что касается решения чисто инженерных и научных проблем, то имеет смысл изложить некоторые рекомендации. Для Заказчика и руководителей НИИ, ОКБ и НПО предлагается производить прикидочный анализ уровня НИОКР по следующим признакам отсутствия квалификации: использование «рассыпной» элементной базы вместо технологии СнК (SoC) или хотя бы использования разрешённых к применению БМК, ПЛМ, ПМЛ и ПЛИС; чисто эвристические решения при синтезе всех МПА; применение асинхронных МПА на низких частотах; «игра» на задержках вместо построения синхронного МПА; отсутствие контролепригодности; отсутствие самодиагностики; отсутствие обоснования полноты тестирования. Необходимый минимум знаний и умений разработчика-цифровика можно определить следующим перечнем : умение работать с картой Карно на большое число переменных (не менее 8); владение методом обобщённых кодов Мавренкова для ручной и машинной минимизации булевых функций; знание инженерных методов разработки цифровых устройств; умение синтезировать счётчики с любыми, в том числе с дробными, коэффициентами деления и распределители импульсов любого вида; умение превратить любую циклограмму в ГСА для последующего формального синтеза МПА; умение формально построить любой элемент памяти на ИС типа ИНЕ, ИЛИ-НЕ, лампах и реле; владение формальными методами синтеза МПА на ИС, лампах и реле; знание вопросов диагностики на уровне, обеспечивающем контролепригодность, самодиагностику, контроль и диагностику разрабатываемого прибора; знание математической логики, фундамента ИИ. Экспресс-анализ технического уровня НИОКР может быть также произведён вневедомственной группой профессионалов-электронщиков. В связи с чрезвычайно низким уровнем разработок современных инженеров России предлагается проведение следующих оргмероприятий: 1. Создать вневедомственную группу (подразделение) по контролю технического уровня НИОКР (КТУ) по анализу проекта и выработке предложений по устранению выявленных недостатков в составе не более 10 человек с рабочим циклом на одну НИОКР в 1 – 2 недели. Группа КТУ будет выявлять наиболее характерные ошибки и давать заключение о техническом уровне НИОКР. Естественно, такой анализ целесообразнее проводить на этапе НИР. 2. Проведение технического обучения ведущих специалистов разрабатывающих организаций и подразделений Приёмки Заказчика (не более 40 часов); 3. Издание технического руководства по разработке цифровых устройств. 4. Аттестация инженеров-цифровиков в объёме «АРЦУ». 430 431 5. Перестройка преподавания гуманитарной и математической логики в средних и высших учебных заведениях России. 431 432 Краткий справочник по русской логике и ИМРЦУ. Варианты силлогистического функтора Ixy. 1.Ixy = Ixy || Ayx || Axy = xy+x'y'+i(xy'+x'y) (Ixy)' = j(xy'+x'y) 2.Ixy = Ixy || Ax'y = x+y+ix'y' (Ixy)' = jx'y' 3.Ixy = Ixy || Axy || Ayx || Ax'y || (x=y) = xy+i(x'+y') (Ixy)' = j(x'+y') 4.Ixy = Ixy || Ayx = x+y'+ix'y (Ixy)' = jx'y 5.Ixy = Ixy || Ayx || Ax'y = x+ix' (Ixy)' = jx' 6.Ixy = Ax'y = Ay'x = Ex'y' = x+y (Ixy)' = x'y' 7.Ixy = Ixy || Axy || Ax'y = y+iy' (Ixy)' = jy' 8.Функтор Васильева изображен на рисунке. Ixy = 1 (Ixy)’ = 0 Любой базис может быть представлен с помощью атомарного базиса,состоящего всего из двух функторов: Axy = x'+y, Ixy = x+y+x'y' = 1 Русский базис. Axy(2) = Axy = x'+y Exy(2) = Axy' = x'+y' Ixy(2) = Ixy || Ax'y = x+y+ixy' Базис Васильева. Axy(8) = Axy = x'+y Exy(8) = Axy' = x'+y' Ixy(8) = Ixy = x+y+x'y' = 1 Базис Аристотеля-Жергонна. Axy(3) = Axy || (x=y) = xy+x'y'+ix'y Exy(3) = Axy' = x'+y' Ixy(3) = Ixy || Ax'y || Axy || Ayx || (x=y) = xy+i(x'+y') Oxy(3) = Ixy || Ax'y || Axy' || Ayx = xy'+i(x'+y) = Ixy'(3) 432 433 Алгоритмы. «АКТЕЛ» - аналитический синтез исходных посылок. «Импульс» - анализ законов логики суждений. «Импульс-С» – синтез законов логики суждений. «ИЭИ» - аналитический синтез силлогизмов. «Комета» - вероятностный графический синтез недостающей посылки). «НИИДАР» - графический синтез исходных посылок. «НИИРТА» – минимизация логических функций по картам Карно. «Осташков» - синтез полисиллогизмов. «РЕДАН» – графический синтез недостающей посылки. «СГА» - аналитический синтез исходных посылок. «Селигер» – решение логических уравнений. «Селигер-С» синтез обратных функций. «Суздаль» – графический синтез соритов. «ТВАТ» – графический синтез силлогизмов. «Циклон» - синтез многовариантных силлогизмов. Алгоритм «НИИРТА» графической минимизации булевых функций. 1. Заполнить карту Карно нулями и единицами в соответствии с таблицей истинности или заданным алгебраическим выражением. 2. Покрыть все элементарные квадраты Карно, в которых записаны единицы, минимальным количеством фигур покрытия, каждая из которых имеет максимальную площадь. Если в КК единиц больше, чем нулей, то покрыть все нулевые наборы и получить инверсию искомой функции. 3. Проверить каждую фигуру покрытия на соответствие принципу симметрии. В противном случае изменить контур фигуры покрытия в соответствии с принципом симметрии так, чтобы она превратилась в прямоугольник Карно. 4. Каждому прямоугольнику Карно соответствует одна импликанта, причём если в границах прямоугольника Карно какая-либо переменная принимает значения как 0 , так и 1 , то эта переменная не войдёт в импликанту. Алгоритм «Импульс»(анализ законов логики суждений). 1)произвести замену всех знаков импликации на символы дизъюнкции в соответствии с известной формулой x y = x’ + y; 2)привести полученное выражение к ДНФ; 3)занести ДНФ в карту Карно и убедиться, что она вся покрыта единицами – это свидетельствует о истинности проверяемого закона или суждения. Алгоритм «Импульс-С»(синтез импликативных силлогизмов). Алгоритм инженерного синтеза импликативных силлогизмов по заданным посылкам немногим отличается от предыдущего алгоритма: 1)найти полную единицу системы М посылок, заменив импликацию по формуле x y = x’ + y; 2)привести полученное выражение к ДНФ; 3)подставляя в полученное выражение необходимые аргументы и отбрасывая лишние, т.е. заменяя их логической единицей или на i в случае автоном- 433 434 ного их вхождения, выводим соответствующие заключения как функции интересующих нас аргументов. Алгоритм "ИЭИ "(аналитический синтез силлогизма). 1.Заменить посылки выражениями в соответствии с формулами для функторов A,E,I,O. 2.Получить выражение для полной единицы М системы в виде конъюнк- ции всех посылок. 3. Получить из М функцию М(х,у), заменив средний член m или m' на 1. Если средний член m/m' входит в силлогизм автономно, то заменить его на i. Полученная функция М(х,у) является заключением силлогизма. Если в М встречается терм im или im’, то заключения не существует. Алгоритм «ТВАТ» (графический синтез силлогизмов). 1.Изобразить все возможные ситуации для исходных посылок с помоскалярных диаграмм Лобанова. 2.Занести в таблицу истинности все значения f(x,y) для входных наборов xy: 00,01,10,11. 3.Выполнить минимизацию логической функции заключения f(x,y). 4.Полученный результат представить в виде силлогистического функтора в соответствии с известным базисом. щью Алгоритм «РЕДАН» (графический синтез недостающей посылки). 1.Изобразить все возможные ситуации для исходной посылки и заключения с помощью скалярных диаграмм. 2.Занести в таблицу истинности все значения f(m,y) для входных наборов my: 00,01,10,11. 3.Выполнить минимизацию логической функции посылки f(m,y). 4.Полученный результат представить в виде силлогистического функтора в соответствии с известным базисом. Алгоритм «Осташков» (синтез заключений полисиллогизма). 1. Привести систему уравнений к нулевому виду (исходная система). 2. Заполнить карту Карно нулями в соответствии с термами левых частей исходной системы уравнений, а в оставшиеся клетки вписать единицы. Эти единичные термы представляют собой СДНФ полной единицы системы М. 3. Произвести минимизацию совокупности единичных термов. Полученное соотношение представляет МДНФ уравнения полной единицы системы М. 4. Получить из М все К заключений сорита как функции от двух заданных переменных, заменяя на 1 все «лишние» переменные или на i в случае автономного их вхождения в формулу. 5. Представить результаты в виде скалярных диаграмм. Алгоритм «Суздаль» (графический синтез заключений сорита). 1. Устранить по возможности все инверсии аргументов в посылках. 434 435 2. Выстроить посылки в «цепочку», обеспечивающую однозначное графическое представление сорита. 3. В соответствии с «цепочкой» изобразить скалярные диаграммы сорита. 4. Найти все возможные двуместные заключения с помощью скалярных диаграмм. Алгоритм «НИИДАР» графического нахождения исходных посылок. 1. По СДНФ полной единицы системы М построить сокращённую таблицу истинности для неё. 2. По сокращённой таблице истинности построить скалярные диаграммы, разбив интервал универсума на части, количество которых равно числу наборов в таблице истинности для М. Каждая часть универсума изображается соответствующим набором из таблицы истинности для М. 3. Из скалярных диаграмм выбрать (N – 1) логических функций от двух переменных, где N – число аргументов. Алгоритм «СГА» аналитического нахождения исходных посылок. 1. По полной единице системы построить n-1 посылок от двух аргументов, где n – количество терминов(аргументов). 2. Посылки должны в совокупности охватить все аргументы. 3. Ни одна из посылок не должна превращаться в логическую константу, равную 1, т.е. ни одна из исходных посылок не должна быть частноутвердительным суждением. Алгоритм «АКТЕЛ» аналитического отыскания исходных посылок. По заданной полной единице системы построить N-1 посылок сорита как функций от двух переменных, заменяя на 1 все «лишние» переменные. Здесь N – число аргументов. Проверить полученные результаты логическим перемножением посылок и сравнением с заданной полной единицей системы. Алгоритм «Селигер» решения логических уравнений. 1. Привести систему уравнений к нулевому виду (исходная система). 2. Заполнить карту Карно нулями в соответствии с термами левых частей исходной системы уравнений, а в оставшиеся клетки вписать единицы. Эти единичные термы представляют собой СДНФ полной единицы системы. 3. Произвести минимизацию совокупности единичных термов. Полученное соотношение представляет МДНФ уравнения полной единицы системы. 4. Построить сокращённую (только для единичных термов) таблицу истинности уравнения полной единицы и выписать из неё все значения входных и выходной переменных в виде частной таблицы истинности для искомой функции. 5. Произвести минимизацию полученного выражения.. 6. Привести полученное выражение к рекурсивной форме, заменив i на 435 436 прямое значение искомой переменной, а j – на инверсное значение этой переменной. 7. Произвести проверку рекурсивного выражения на соответствие его полной единице системы для задействованных аргументов. Алгоритм «Селигер-С» синтеза обратных функций. 1. Построить таблицу истинности для уравнения z=f(x1, x2 ..... xn). 2. По исходной таблице истиннсти построить таблицу истинности для обратной функции вида x1=fi(z, x2 ......xn) простой перестановкой столбцов z и х1. 3. По полученной таблице истинности построить обратную функцию x1=fi(z, x2, ..... xn) и провести её минимизацию. 4. Проверить полученное решение, вычислив полную единицу системы М по обратной функции. Алгоритм «Циклон» (синтез многовариантных силлогизмов). 1. Убедиться, что для всех терминов-множеств исходных посылок и универсума силлогизма указаны количественные характеристики (заданы мощности множеств или хотя бы соотношения между ними). 2. Изобразить все возможные ситуации для исходных посылок с помощью скалярных диаграмм Лобанова. 3. Определить вероятность каждого варианта заключения, используя формулы вычисления количества сочетаний. 4. В том случае, когда первой посылкой является общеутвердительное или общеотрицательное суждение, то достаточно определить вероятности заключений по одному варианту из всех возможных для первой посылки. Алгоритм «Комета» (вероятностный графический синтез недостающей посылки). 1. Изобразить на диаграммах Лобанова исходную посылку и все варианты заданного заключения. 2. Определить вероятность каждого варианта искомой посылки. Инструкция по пакету MAX+PLUS II. ПО системы MAX+PLUS II содержит 11 приложений и главную управляющую программу. Различные приложения, обеспечивающие создание проекта, могут быть активизированы мгновенно, что позволяет пользователю переключаться между ними щелчком мыши или с помощью команд меню. В это же время может работать одно из фоновых приложений, например, компилятор, симулятор, анализатор синхронизации и программатор. Одни и те же команды разных приложений работают одинаково, что облегчает задачу разработки логического дизайна. Hierarchy Display 436 437 Обзор иерархии - отображает текущую инрархичнскую структуру файлов в виде дерева с ветвями, представляющими собой подпроекты Graphic Editor Графический редактор - позволяет разрабатывать схемный логический проект в формате реального отображения на экране WYSIWYG Symbol Editor Символьный редактор - позволяет редактировать существующие символы и создавать новые Text Editor Текстовый редактор - позволяет создавать и редактировать текстовые файлы логического дизайна, написанные на языках AHDL, VHDL, Verilog HDL Waveform Editor Сигнальный редактор - выполняет двойную функцию: инструмент для рахработки дизайна и инструмент для ввода тестовых векторов и наблюдения результатов тестирования Floorplan Editor Поуровневый планировщик - позволяет графическими средствами делать назначения контактам устройства и ресурсов логических элементов Compiler Компилятор - обрабатывает графические проекты Работа с графическим редактором. Выбрав графический редактор, открыть новый файл(как в Word). Двойным щелчком в окне редактора вызвать библиотеку. На первых порах лучше работать с библиотекой \mf, которая содержит стандартные элементы серии 74ХХ. Схему любого библиотечного элемента можно посмотреть, выполнив двойной щелчок на выделенном элементе. Кроме того, можно посмотреть справочник, выполнив следующие операции: - выделить нужный элемент щелчком мыши; - щёлкнуть на нём правой клавишей мыши; - выбрать в появившемся меню опцию Edit Ports/Parameters…; - выбрать Help on <name>. В этом справочнике имеется прототип функции для текстового редактора и таблица истинности для выбранного элемента. Лучше пользоваться более простым алглритмом: щёлкнуть на символе “?”; перетащить этот символ на нужный элемент; прочитать Help. При работе с мегафункцией необходимо выполнить следующие операции: 1. Вызвать нужный символ из библиотеки мегафункций. 437 438 2. Правой клавишей мыши щёлкнуть внутри символа. 3. Выставить необходимые параметры, отменить лишние входы. Графический редактор Altera похож на редактор PaintBrush. Но многие операции имеют свои особенности. Проведение шин выполняется через команду Options/LineStyle или с помощью кнопки Тип линии на инструментальной линейке с выбором вида соединительной линии. Обозначение шины выполняется латиницей в режиме указателя(наклонная стрелка в левом инструментальном поле), но лучше это делать в текстовом режиме, поместив маркер в тексте входа/выхода ли над маркируемой линией. Например, rg[12..1], где 12 и 1 – соответственно старший и младший индексы связей. Обозначение отдельной связи в шине состоит из имени шины и её индекса. Например, rg[1]. Линии, идущие от входов/выходов можно не обозначать, т. к. им автоматически присваиваются имена входов/выходов. Входы и выходы задаются с помощью примитивов, которые вызываются двойным щелчком. Они также должны быть поименованы. Точка на шине или связи ставится с помощью инструментальной линейки слева. Связи лучше проводить с помощью инструмента в виде прямого угла. Удалять связи можно с помощью клавиши Delete, предварительно выделив удаляемый отрезок. С помощью примитивов можно вводить GND и VCC(“землю” и питание). Примитивы вызываются двойным щелчком левой клавиши мыши. Вращение элемента выполняется командой Rotate, выбираемой из меню, появляющегося после щелчка правой клавишей мыши(контекстное меню). Проще выполнить команду вращения из опции Edit. Распечатка схем из графического редактора. 1. Уменьшить до предела масштаб изображения, чтобы определить необходимый размер листа и способ расположения рисунка. 2. В опции File выбрать Size и установить необходимый размер листа(обычно это 17x22in).Это можно сделать методом перебора предлагаемых форматов. 3. Проверить, помещается ли в этом листе вся схема. 4. Войти в опцию File и выбрать Print Setup для установки книжного или альбомного расположения. 5. Щёлкнуть на иконке принтера. Примечание. Перенос «окна» из MAX+PLUS II в Word через “Print Screen”. Создание графиков для MAX+PLUS II с помощью Excel. 1. Выделить нужные сигналы и сменить систему счисления с 16-ичной на 10-ичную двойным щелчком ЛКМ. 438 439 2. Вызвать в MAX+PLUS II опцию File/Create Table File и сохранить нужные сигналы в виде таблицы с предложенным именем <имя>.tbl. 3. Вызвать Excel. 4. Открыть только что созданный файл <имя>.tbl. 5. Указать № строки, с которой будет импортироваться таблица. 6. Указать пробел в качестве разделителя. 7. Выделить столбцы в таблице Excel, которые будут представлены графиками. 8. Щёлкнуть по иконке построения графика и выбрать вид графика. Создание библиотечного элемента. 1. Создать файл <name>.gdf и оттранслировать его. 2. Щёлкнуть «мышью» на команде File/Create Default Symbol. Реализация иерархического проекта в графическом реакторе. 1. Изобразить все блоки (подпрограммы) в виде файлов *.gdf. 2. Провести компиляцию каждого блока(подпрограммы). 3. С помощью команды File/Create Default Symbol занести каждый блок(подпрограмму) в свою библиотеку подпрограмм в виде символа. 4. Вставить этот символ как обычный стандартный элемент в головной(main) блок(программу). 5. Отразить все связи с этим элементом в головном блоке. Вызов своего библиотечного элемента. 1. Двойной щелчок в поле проекта( в графическом редакторе). 2. В окне Simbol File выбрать свой элемент. 3. Щёлкнуть по кнопке ОК. Работа с текстовым редактором. Этот редактор создаёт файлы с расширением *.tdf. Можно использовать языки AHDL, VHDL. При наличии резервных входов, к которым подведён какой-либо сигнал , нужно обязательно задействовать эти входы в описании проекта. Для просмотра include-файлов нужно щёлкнуть по иконке с изображением папки, выбрать директорию maxplus2\max2inc при ключе All files и просмотреть файлы с расширением *.inc. Содержимое этих файлов можно увидеть в директории maxplus2\max2lib\mf. Чтобы увидеть содержимое function(include) нужно щёлкнуть на опции Templates(стр.121,ч. 1 фирм. перевода) Создание Include-файла. 1.Создать файл <name>.tdf с шапкой TITLE и оттранслировать его. 2.Щёлкнуть “мышью” по команде File/Create Default Include File. 3. Прочитать этот файл и уточнить названия входов/выходов. Просмотр Include-файла из стандартной библиотеки. 439 440 1. 2. 3. 4. 5. Щёлкнуть по Help. Выбрать опцию Searh for Help on… Найти имя примитива(4count, 8count и т.д.). Щёлкнуть на кнопке Показать. Просмотреть содержимое. Просмотр Include-файла из собственной библиотеки. 1. Открыть папку с искомым Include-файлом. 2. Вызвать свой Include-файл. 3. Просмотреть содержимое Настройка на ПЛИС серии MAX7000S. 1. Войти в опцию Assign / Device . 2. Убрать «галочку» в окне Show Only Fastest Speed Grades(Только самые быстрые ПЛИС). 3. Установить в окне Device Family тип ПЛИС MAX7000S(EPM9320ARI208-10). 4. Только потом дать имя проекту и запустить трансляцию. Создание комбинированного проекта, Рациональное проектирование связано с использованием графического и текстового редактора одновременно. Стандартные узлы(счётчики,регистры,сумматоры и т.п.) удобно создавать в графическом редакторе. Микропрограммные автоматы(МПА), произвольные логические функции, операции с условиями, циклами и т.п. нужно синтезировать в текстовом редакторе. При таком проектировании экономится время, а схема получается достаточно прозрачной. Порядок решения задачи в этом случае может быть следующим. 1. Разбить схему на стандартные узлы и нестандартные блоки. 2. Создать в текстовом редакторе проект(ы), описывающий все нестандартные блоки. 3. Оттранслировать текстовый файл(ы) с локальным именем проекта и создать символ, соответствующий данному нестандартному блоку. 4. В графическом редакторе создать файл с глобальным именем, в который включить все нестандартные блоки в виде символов и все стандартные узлы. Оттранслировать полученный файл. Компиляция и отладка. Перед компиляцией в опции File/Project задать имя проекта(имя головного файла с расширением *.gdf). В опции меню Assign/Device выбрать в окне Device Family тип микросхемы. Для отмены глобальных входов тактирования, сброса и выбора кристалла нужно в меню выбрать опцию Assign, а в ней Global Project Logic Synthesis и убрать все «галочки» в секциях Automatic Global, MAX Device Synthesis Options и др. Убедиться, что в окне Global 440 441 Project Synthesis Style установлен режим Normal. В этом случае глобальные входы можно использовать в качестве обычных. Только после этого можно приступить к компиляции. Компиляция проводится либо через опцию MAX+plusII/Compiler , либо через главную инструментальную линейку. При появлении окна компилятора нужно щёлкнуть по клавише Start. При наличии ошибок в компилируемом файле появляются соответствующие сообщения. Выделив нужное сообщение и щёлкнув на кнопке Location, можно локализовать ошибку . Для определения объёма проекта необходимо выполнить след. операции: 1.Щёлкнуть “мышью” на “пирамиде”. 2.Вскрыть опцию rpt. 3.Просмотреть сообщение до опции %LCS Utilized. Моделирование. Открыть файл с расширением *.sсf, щёлкнув по соответствующему значку главной инструментальной линейки. Двойным щелчком вызвать меню ввода входных/выходных переменных. Для установки интервала времени моделирования нужно войти в опцию File/EndTime и выставить нужное время(us,ms,s) или масштаб(1,10,100,1000). Если частота уже выставлена, то переход к более низким её значениям можно выполнить в опции Multiplied By. Для задания тактовой частоты нужно использовать левую инструментальную линейку (иконка с символом С), предварительно щелчком выделив диаграмму тактовой частоты. Нужную частоту выставить через опцию Options/Grid Size или View/Time Range. Если при установке частоты не срабатывает задание шага, то щёлкнуть по 3-й справа иконке на горизонтальной инструментальной линейке, а потом снова на вертикальной линейке повторить задание частоты. Для установки значений входных сигналов нужно с помощью вертикального репера установить щелчком с протаскиванием длительность сигнала, а затем и его значение с помощью иконки с символом 1 на левой инструментальной панели. Для ввода значения группового входа выполнить следующие операции: 1. Выделить нужную группу. 2. Щёлкнуть правой клавишей мыши внутри выделенной группы. 3. Выбрать опцию Overwrite/Group Value. 4. Ввести нужное значение. Для переноса (вставки) диаграмм входов-выходов : 1. Выделить нужную группу. 2. Удалить её (или вставить в нужное место). 3. Вставить в нужное место. Для запуска пакета моделирования(симулятор) необходимо щёлкнуть на кнопке симулятора главной инструментальной панели или запустить вект. файл. Назначение ресурсов. Вначале установить тип ПЛИС через опцию Assign/Device. Затем войти 441 442 в опцию Assign/Global Project Logic Synthesis и погасить все «галочки». Для указания нумерации выводов следует выполнить след. операции: 1. Войти в меню Assign. 2. Выбрать опцию Pin/Location/Chip… 3. В появившихся окнах записать имя узла и номер вывода ПЛИС. Просмотреть результаты своей работы по распределению ресурсов можно, вызвав файл <name>.acf. или <name>.pin. Здесь <name> - имя проекта. Цоколёвку также можно проверить, просмотрев файл <name>.rpt или просто в окне графического редактора данного проекта. 4. Щёлкать на кнопке Add и вводить новые данные. Если необходимо изменить нумерацию выводов, то используйте кнопку Change. 5. Провести трансляцию заново. 6. Окончательный результат по назначению ресурсов проверить в файле <name>.rpt. Программирование ПЛИС. После назначения ресурсов возможно программирование ПЛИС. Программирование выполняется в следующем порядке: 1. При выключенном ПК подсоединить кабель ByteBlaster к принтерному разъёму ПК и программируемому прибору. 2. Включить ПК, запустить MAX+PLUS II. 3. Подать питание(обычно +5В) на программируемый прибор. 4. Войти в опцию меню File и задать имя проекта. 5. Выбрать опцию MAX+plus II/Programmer и нажать кнопку Program или просто щёлкнуть мышью на иконке программирования. 6. Убедиться в успешном выполнении программирования. 7. Отключить питание программируемого прибора. 8. Выйти из MAX+PLUS II. 9. Выключить ПК. 10. Отсоединить кабель ByteBlaster. 442 443 Перечень сокращений АРЦУ – азбука разработчика цифровых устройств БИС - большая интегральная схема БМОК – база минимального обобщённого кода ДНФ - дизъюнктивная нормальная форма ДССП – Диалоговая система структурированного программирования ЗОК - запрещённый обобщённый код ИИ - искусственный интеллект ИМРЦУ – инженерные методы разработки цифровых устройств ИС - интегральная схема ИЭИ - Ивановский энергетический институт КА - конечный автомат КДУ - контрольно-диагностическое устройство КК - карта Карно КС - комбинационная схема МДНФ – минимальная ДНФ МОК - минимальный обобщённый код МПА – микропрограммный автомат НИИДАР – НИИ дальней радиосвязи НИИРТА – НИИ радиотехнической аппаратуры НТР - научно-техническая революция ПК - прямоугольник Карно ПЛИС - программируемая логическая интегральная схема ПЛМ - програмируемая логическая матрица ПМЛ - программируемая матричная логика ППК - предполагаемый прямоугольник Карно РАЯ - Развиваемый(Русский) адаптивный язык РЛ - Русская логика РОК - рабочий обобщённый код САПР – система автоматизированного проектирования СГА - Современная Гуманитарная Академия СДНФ – совершенная дизъюнктивная нормальная форма ТВАТ - Тушинский вечерний авиационный техникум 443 444 Литература 1. Акимов О.Е. Дискретная математика: логика, группы, графы.– М.:ЛБЗ,2003. 2. Аристотель. Сочинения. В 4-х томах. Т.2- М.: Мысль,1978. 3. Брусенцов Н.П. Начала информатики. - М: Фонд "Новое тысячелетие",1994. 4. Брусенцов Н. П. Полная система категорических силлогизмов Аристотеля. -В кн. Вычислительная техника и вопросы кибернетики . Вып.19. М.: МГУ,1982. 5. Васильев Н.А.О частных суждениях. - Казань:Университет,1910. 6. Войтов А. Г. Самоучитель мышления. – М.: 1999. 7. И.Л.Галинская. Льюис Кэрролл и загадки его текстов – М.: РАН.,Институт научной информации по общественным наукам,1995. 8. Катречко С. Л. Введение в логику. Программа курса. – М.: УРАО, 1997. 9. Кириллов В.И., Старченко А.А. Логика. - М.: Юрист,1995. 10. Кузичев А.С. Диаграммы Венна. История и применения. М., Наука, 1968 . 11. Кэрролл Л. История с узелками. - М.:Мир,1973. 12. .Лейбниц Собрание сочинений в 4 томах. Том 3. – М.:1983 13. Лобанов В.И. Инженерные методы разработки цифровых устройств. М.: НИИРТА,1977. 14. Лобанов В.И. Метод минимизации булевых функций от большого числа переменных с помощью карт Карно. - Инф. Листок N54-87,М: МособлЦНТИ,1987. 15. Лобанов В.И. Отказоустойчивый микроконтроллерный регулятор с программируемой структурой обработки данных. Диссертация на соискание ученой степени канд. техн. наук. - Харьков, ХПИ,1989. 16. Лобанов В.И. Кризис логики суждений и некоторые пути выхода из него.//Современная логика: проблемы теории, истории и применения в науке (Материалы V Общероссийской научной конференции) - СПб: 1998. 17. Лобанов В.И. Решение логических уравнений. //Научно-техническая информация. Сер. 2. N%9, 1998, с. 40 - 46. 18. Лобанов В.И. Силлогистика Аристотеля-Жергонна. //НТИ, сер.2, Информационные процессы и системы, N9, 1999, с. 11 - 27. 19. Лобанов В.И. Базовые проблемы классической логики.//Современная логика: Проблемы теории,истории и применения в науке(Материалы VI Общероссийской научной конференции), СПбГУ, 2000 — с.499 — 504. 20. Лобанов В.И. Синтез и минимизация комбинационных схем//Информатика и образование,N5,2000, стр. 60 – 63. 21. V. I. Lobanov. The solution of logical equations. // Documentation and Mathematical Linguistics, vol. 32, №5,1998, p. 16 – 27 . 22. V. I. Lobanov. Many-valued quantifier-free syllogism (second basis). // Documentation and Mathematical Linguistics, vol. 32, №5,1998, p. 40 – 60 (гонорар выплачен 4.11.2000). 23. Лобанов В.И. Практикум по логике суждений. //Информатика и образование, №2,2001, с. 47-52. 24. Лобанов В.И. Практикум по силлогистике . //Информатика и образование, №5,2001. 444 445 25. Лобанов В.И. Решебник по Русской логике. – М.: Компания Спутник+, 2002 – 133с. 26. Лобанов В.И. Азбука разработчика цифровых устройств. – М.: Горячая линия – Телеком, 2001 – 192с. 27. Лобанов В.И. Русская логика против классической (азбука математический логики). – М.: Компания Спутник+, 2002 – 126с. 28. Лобанов В.И. Русская логика против классической. //Рационализм и культура на пороге третьего тысячелетия(материалы Третьего Российского философского конгресса),том 1, стр.278, г.Ростов-на-Дону, 2002. 29. Лобанов В.И. Русская логика для школьников (и академиков). – М.:»Эндемик»,2004 – 110с. 30. Лобанов В.И. Русская логика для «физиков» и «лириков». – М.: Спутник+, 2005 – 427с. 31. Лобанов В.И. Русская вероятностная логика для школьников и умных академиков. – М.: 2008 – 33с. 32. Непейвода Н.Н. Прикладная логика. - Ижевск: Удмурт.университет,1997. 33. Платон. Диалоги. – М.: Мысль, 2000. 34. Порецкий П.С. О способах решения логических равенств и об одном обратном способе математической логики.// Собрание протоколов заседаний секции физико-математических наук общества естествоиспытателей при Казанском университете, т. 2, Каз., 1884. 35. Светлов В.А. Практическая логика. - СПб: Изд. Дом »МиМ»,1997. 36. Стяжкин Н.И. Формирование математической логики. - М: 1967. 37. Тейчман Д. , Эванс К. Философия. - М.: Весь Мир,1997. 38. Шачнев В.А. Математическая логика. - М: 1991. 445 446 Оглавление РУССКАЯ ВЕРОЯТНОСТНАЯ ЛОГИКА ................................................................. 1 ПРЕДИСЛОВИЕ ................................................................................................................................................. 3 ЧАСТЬ 1 .................................................................................................................. 11 ИНЖЕНЕРНАЯ ЛОГИКА. ....................................................................................... 11 Глава первая .................................................................................................................................................... 11 КОМБИНАЦИОННЫЕ ЛОГИЧЕСКИЕ ЦЕПИ ..................................................................................... 11 1.1 Основные положения алгебры логики .................................................................................................. 11 1.2 Алгебра множеств. .................................................................................................................................. 13 1.3 Разновидности логических интегральных схем ( ИС ) ......................................................................... 14 1.4. Синтез комбинационных схем ................................................................................................................ 16 1.5.Минимизация полностью определённых булевых функций. ................................................................ 18 1.6.Карты Карно для 7, 8, 9 и 10 переменных. .............................................................................................. 19 Алгоритм «НИИРТА» графической минимизации булевых функций. ........................................................ 23 1.7.Оценка сложности реализации булевых функций .................................................................................. 25 1.8. Формы задания булевых функций. ......................................................................................................... 26 1.9. Минимизация недоопределённых булевых функций ............................................................................ 29 1.10. Минимизация системы булевых функций............................................................................................ 30 1.11. Анализ комбинационных схем . ............................................................................................................ 33 Глава вторая ...................................................................................................................................................... 34 МИНИМИЗАЦИЯ ЛОГИЧЕСКИХ ФУНКЦИЙ МЕТОДОМ ОБОБЩЁННЫХ КОДОВ. ............ 34 2.1. Общий алгоритм определения МОК. ..................................................................................................... 35 2.2. Алгоритм соседнего определения базы МОК (алгоритм Мавренкова). .............................................. 38 2.3. Выводы...................................................................................................................................................... 44 ЧАСТЬ 2 .................................................................................................................. 47 МАТЕМАТИЧЕСКАЯ ЛОГИКА СУЖДЕНИЙ И ПРЕДИКАТОВ. ........................... 47 Глава первая ...................................................................................................................................................... 47 Глава вторая ..................................................................................................................................................... 49 2.1.Законы логики суждений .......................................................................................................................... 49 Алгоритм «Импульс» анализа законов логики суждений. ........................................................................... 49 Алгоритм «Импульс-С» синтеза импликативного заключения. ................................................................. 50 2.2. Практикум по логике суждений. ............................................................................................................. 59 Глава третья ..................................................................................................................................................... 68 Силлогистика. ................................................................................................................................................... 68 Троичная логика. .............................................................................................................................................. 69 Базисы силлогистики. ...................................................................................................................................... 69 3.1. Все x суть y(Axy). .................................................................................................................................... 74 446 447 3.2. Ни один x не есть y(Exy). ......................................................................................................................... 76 3.3. Некоторые x суть y. .................................................................................................................................. 77 Глава четвёртая ............................................................................................................................................... 83 Силлогистика Аристотеля - Жергонна. ....................................................................................................... 83 4.1. Алгоритм "Осташ-Т" (тест, анализ) .................................................................................................... 84 4.2. Алгоритм «ТВАТ» (графический синтез силлогизмов). ........................................................................ 85 4.3. Алгоритм «РЕДАН» (синтез недостающей посылки). ........................................................................ 85 4.4. Алгоритм «НИИДАР» графического нахождения исходных посылок. .............................................. 87 4.5. Алгоритм «СГА» аналитического нахождения исходных посылок. .............................................. 88 4.6. Алгоритм "ИЭИ "(аналитический синтез заключения) ....................................................................... 89 4.7. Ошибки Аристотеля. ................................................................................................................................ 95 Заключение ..................................................................................................................................................... 103 Глава пятая ...................................................................................................................................................... 104 Атомарная силлогистика. ............................................................................................................................. 104 5.1. Практикум по силлогистике. ................................................................................................................. 109 5.2. Практикум по решению соритов........................................................................................................... 116 Алгоритм «Осташков» синтеза соритов. ................................................................................................. 116 Импликативно-силлогистические законы и их связь с силлогистикой. ............................................. 125 Глава шестая ................................................................................................................................................... 129 Естественный вывод и кванторы. ............................................................................................................... 129 Глава седьмая .................................................................................................................................................. 134 Логика П.С.Порецкого. .................................................................................................................................. 134 Глава восьмая .................................................................................................................................................. 137 Логика Л.Кэрролла. ........................................................................................................................................ 137 Задачи Л.Кэрролла. ........................................................................................................................................ 140 Силлогизмы Л.Кэрролла для самостоятельного решения. .................................................................... 193 Сориты Л.Кэрролла для самостоятельного решения. ............................................................................. 196 Глава девятая .................................................................................................................................................. 208 Вероятностная логика. .................................................................................................................................. 208 Алгоритм «Циклон» (синтез многовариантных силлогизмов). .......................................................... 211 Алгоритм «Комета» вероятностного синтеза недостающей посылки ................................................. 223 Глава десятая ................................................................................................................................................... 225 Дисциплина мышления. ................................................................................................................................ 225 Глава одиннадцатая. ...................................................................................................................................... 230 Логические уравнения и обратные функции. ....................................................................................... 230 11.1. Решение логических уравнений. ......................................................................................................... 230 11.2. Алгоритм «Селигер» решения логических уравнений. ...................................................................... 236 11.3. Равносильные преобразования............................................................................................................ 239 11.4. Отыскание обратных функций. ........................................................................................................... 240 Алгоритм «Селигер-С» синтеза обратных функций................................................................................. 240 447 448 Алгоритм «Волга» решения уравнений в двоичной логике. ....................................................................... 245 Заключение. ................................................................................................................................................. 247 ЧАСТЬ 3. БУКВАРЬ РАЗРАБОТЧИКА ЦИФРОВЫХ УСТРОЙСТВ. ................ 250 ИНЖЕНЕРНЫЕ МЕТОДЫ РАЗРАБОТКИ ЦИФРОВЫХ УСТРОЙСТВ. ........... 250 Глава первая .................................................................................................................................................. 250 Инженерная комбинаторика. ....................................................................................................................... 250 Глава вторая. ................................................................................................................................................... 251 Триггеры........................................................................................................................................................... 251 2.1 SR- триггеры. ....................................................................................................................................... 251 2.2 D- триггеры. ............................................................................................................................................. 254 2.3 . JK- триггеры. ......................................................................................................................................... 255 2.4 Анализ работы схем с памятью.............................................................................................................. 256 Глава третья .................................................................................................................................................... 258 РЕГИСТРЫ И СЧЁТЧИКИ .......................................................................................................................... 258 3.1 Регистры памяти...................................................................................................................................... 258 3..2. Регистры сдвига. ................................................................................................................................... 258 3..3. Двоичные счётчики. .............................................................................................................................. 260 3.4 . Десятичные счётчики. ........................................................................................................................... 262 3.5. Элементная база для построения счётчиков. ....................................................................................... 264 Глава четвёртая .............................................................................................................................................. 265 СИНТЕЗ СЧЁТЧИКОВ ................................................................................................................................. 265 4.1 Синтез счётчиков с использованием установочных входов. ............................................................... 265 4.2 Синтез счётчиков с использованием управляющих входов. ............................................................. 268 4.3. Реверсивные счётчики ........................................................................................................................... 274 4.4.Распределители импульсов. ................................................................................................................... 277 4. 5. Cчётчики на сдвиговых регистрах. ...................................................................................................... 279 Глава пятая. ..................................................................................................................................................... 282 КОНЕЧНЫЕ АВТОМАТЫ. ......................................................................................................................... 282 5.1 Понятие о конечном автомате. Автоматы Мили и Мура. .................................................................... 282 5.2. Методы задания автоматов. ГСА. ......................................................................................................... 285 5.3. Синтез конечных автоматов. ................................................................................................................. 287 5.4 Кодирование состояний и сложность комбинационной схемы. ......................................................... 291 5.5 . Гонки и противогоночное кодирование. ............................................................................................. 295 5.6. Синтез нечётных и дробных делителей частоты со скважностью 2. ................................................. 305 Алгоритм «Комета» соседнего кодирования состояний ДДЧ. .................................................................. 306 5. 7. Синтез релейных автоматов. ................................................................................................................ 311 5.8.Синтез ГСА по функциям возбуждения. ............................................................................................... 315 Глава шестая ................................................................................................................................................... 317 МИКРОКОНТРОЛЛЕРЫ ............................................................................................................................. 317 6.1. Простой промышленный микроконтроллер ........................................................................................ 317 6.2. Микропроцессорная техника. ............................................................................................................... 320 6.3. Отладочные средства. ......................................................................................................................... 334 6.4. Средства контроля и диагностики. ....................................................................................................... 341 6.5. Синтез проверяющих тестов для комбинационных схем. .................................................................. 344 448 449 Глава седьмая .................................................................................................................................................. 348 ПРОЕКТИРОВАНИЕ МПА НА БАЗЕ ПЛИС. ...................................................................................... 348 7.1. ОПТИМАЛЬНОЕ ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ СИСТЕМ УПРАВЛЕНИЯ. ....................... 348 Частотный детектор. ..................................................................................................................................... 360 Фазовый детектор. ........................................................................................................................................ 364 Приёмопередатчик RS-485. .......................................................................................................................... 369 Телевизионный генератор испытательных сигналов. ................................................................................ 377 КДУ. ............................................................................................................................................................... 378 Телевизионный цифровой синхрогенератор............................................................................................... 380 Синтезатор частоты. ..................................................................................................................................... 386 Особенности создания проекта для БМК. ................................................................................................... 388 7.2. О недостатках САПР MAX+PLUS II. ................................................................................................... 394 7.3. О повышении технического уровня отечественных разработок. ....................................................... 411 Уровень современных разработок и элементная база: ПЛИС, сигнальные процессоры и отечественные аналоги. .......................................................................................................................................................... 413 Проблемы проектирования современных цифровых систем управления. ............................................... 415 Заключение. ................................................................................................................................................... 429 Краткий справочник по русской логике и ИМРЦУ. ............................................................................... 432 Перечень сокращений .................................................................................................................................... 443 Литература ....................................................................................................................................................... 444 Оглавление ....................................................................................................................................................... 446 449