Автор: Гололобов В.Н.  

Теги: электроника  

ISBN: 0-408-01461-X

Год: 2007

Текст
                    В.Н. Гололобов
АН08
Москва 2006-2007

Наглядная электроника 2 Оглавление ПРЕДИСЛОВИЕ.................................................4 ГЛАВА 1. ОБЗОР..............................................6 Листая старые журналы.......................................6 Самые старые из моих журналов...............................6 Журнал «Радио» для начинающих..............................29 gEDA в Linux...............................................35 Oregano....................................................35 Qucs.......................................................37 Гвоздь в Интернете.........................................38 ГЛАВА 2. ЧТО ДЕЛАТЬ, ЕСЛИ НЕТ ВЫБОРА? XLAB, WINDOWS........44 ГЛАВА 3, ДЛЯ САМЫХ НАЧИНАЮЩИХ. ПРОЕКТ «НОВЫЙ ГОД»..........66 ГЛАВА 4. ЦИФРОВОЙ РЕГУЛЯТОР УГЛА ОПЕРЕЖЕНИЯ ЗАЖИГАНИЯ ДЛЯ АВТОМОБИЛЯ. MICRO-CAP, WINDOWS............................ 81 ГЛАВА 5. ЖУЧКИ ДЛЯ ДЖЕЙМСА БОНДА. CIRCUITMAKER, WINDOWS... 98 ГЛАВА 6. А ПОЧЕМ У ВАС HI-END? QUCS, LINUX................110 ГЛАВА 7. РЕГЕНЕРАТИВНЫЙ ПРИЕМНИК. OREGANO, LINUX И ДРУГИЕ..132 ГЛАВА 8. ДЛЯ СРЕДНЕГО РАДИОЛЮБИТЕЛЬСКОГО ВОЗРАСТА. КОНСТРУИРУЕМ КОМАНДОАППАРАТ УПРАВЛЯЕМОЙ МОДЕЛИ............150 ГЛАВА 9. ЭЛЕКТРИЧЕСКИЕ МОДУЛИ, ПРИМЕРЫ И НАРАБОТКИ........162 ГЛАВА 10. ГОТОВЫЕ СХЕМЫ. БЕЖАТЬ ЛИ СРАЗУ В МАГАЗИН, ХВАТАТЬСЯ ЛИ ЗА ПАЯЛЬНИК? LTSPICE, WINDOWS..........................172 ГЛАВА 11. РЕМОНТ. WINDOWS, LINUX 182 ГЛАВА 12. САМООБРАЗОВАНИЕ.................................194 ГЛАВА 13. НАРИСУЕМ БЫСТРО И... XCIRCUIT, DIA, XFIG, QCAD, VARICAP. LINUX.....................................................215
Наглядная электроника 3 ГЛАВА 14. СИМУЛЯТОРЫ ЭЛЕКТРИЧЕСКИХ СХЕМ. NGSPICE, SPICEOPUS... 225 ГЛАВА 15. РАЗВОДКА ПЕЧАТНОЙ ПЛАТЫ. KICAD, РСВ (GEDA), EAGLE - LINUX. ULTIBOARD, TRAXMAKER-WINDOWS..............................236 ГЛАВА 16. «ВАЛЬС ПОД ВОДОПАДОМ» ИЛИ ПРОДОЛЖЕНИЕ ГЛАВЫ 3..........264 ПРИЛОЖЕНИЯ..................................................... 277 4. gEDA — GPL Electronic Design Automation.......................278 RKiCAD...........................................................304 C. Qucs Work Book (главы)........................................379 D. KTechlab Handbook.............................................424 E. SpiceOpus— эмулятор схем......................................434 F. Gpsim, Gputils................................................465
Наглядная электроника 4 Предисловие Если вас интересует электроника, и у вас есть компьютер, то не использовать его при работе над своими проектами, по меньшей мере, неразумно. Но если вы думаете, что компьютер хорош только для посещения тематических форумов или для поиска схем и справочной информации, то это не так. Конечно, советы опытных людей, которые вы получите, общаясь с ними в Интернете, крайне важны, а обилие доступных схем и справочных данных, размещенных как на любительских, так и на профессиональных сайтах, очень помогут вам в работе. Но совет - это хороший ответ на правильно заданный вопрос. А чтобы задать такой вопрос, нужно «почти» знать на него ответ. И в этом смысле ваш компьютер может очень помочь вам. Речь идет о системах автоматизированного проектирования и разработки электроники (или в англоязычном варианте EDA). Многие смотрят на них только, как на атрибуты профессиональной деятельности. Действительно, основное назначение подобных систем - профессиональная работа. По этой причине программы оснащены симуляторами, встроенными или внешними, используют встроенные или внешние программы разводки печатных плат и создания всех необходимых файлов для передачи в производство - фотошаблонов, файлов для сверлильных станков и т.д. Есть и ещё одна обширная область применения этих программ, весьма важная - обучение. Использование этих программ в целях обучения удобно и практично, как мне кажется, на всех уровнях: от школьного радиокружка до вуза. И, по моему мнению, они сегодня обязательно должны быть в арсенале радиолюбителя, как опытного, так, и особенно, начинающего. Опытному радиолюбителю эти программы позволят сэкономить время, силы, а начинающему радиолюбителю использование подобных программ может принести пользу, сравнимую с чтением книг по предмету. Я ничего не имеет против традиционного подхода для начинающих через повторение схем, взятых из журналов и книг. Но в этом есть две опасности: схема, которую повторил начинающий радиолюбитель, может прекрасно заработать сразу, и схема, которую начинающий собрал, проделав все рекомендации по пайке и наладке, так и не заработала. В первом случае едва ли радиолюбитель, потративший много сил на сборку схемы, станет экспериментировать с ней. Скорее всего, он закрепит плату в подходящей коробочке, а коробочку закроет, чтобы никогда больше не открывать. Следующая схема, которую он попытается повторить, может привести его ко второму случаю. И начинающего, который тщательно собирал схему, добросовестно налаживал и проверял в соответствии с описанием, схема, которая так и не заработала, может навести на неверную мысль, что не всем это дано. Он глубоко заблуждается, поскольку причиной, противной, но простой, отсутствия работы схемы могла стать неисправная микросхема, или транзистор, или сама схема слишком сложная для повторения даже профессионалом. Еще одна причина, по которой начинающий радиолюбитель, по мнению автора, имеет преимущества при использовании программ EDA, кроется в дороговизне приборов. Во всяком случае, для многих начинающих радиолюбителей потратить 10-20 тысяч рублей на осциллограф - несбыточная мечта. А кроме осциллографа нужны и генераторы, и источники питания, и мультиметр и т.д. Компьютер же у многих есть, и, если не гоняться за «самым крутым», то вполне можно обзавестись стареньким, но успешно работающим компьютером. В конечном счете, триединство: чтение книг, работа за компьютером и работа с паяльником, - станет самым эффективным и быстрым путем в электронику. Не будучи ярым противником операционной системы Windows, я приведу примеры программ EDA для этой платформы, но в основном постараюсь рассказать о программах для Linux. Это объясняется стоимостью, как самой операционной системы, так и программ для нее. Для меня они слишком дороги. Боюсь, что и для многих радиолюбителей тоже. Операционную систему Linux я впервые купил, влекомый случаем и любопытством (она стоила около 400 рублей), в пакете ASPLinux. Как оказалось, кроме собственно операционной системы я оказался обладателем нескольких программ-серверов, позволяющих организовать небольшой офис, программ офисных приложений, включающих и великолепные текстовые процессоры, и программы презентаций, создания рисунков, большое количество программ для работы с графикой, не уступающих по качеству аналогам, например Photo Shop. С доступом в Интернет можно найти множество свободно распространяемых программ различного назначения. Если для написания книги я скачивал демо-версию программы Multisim, объемом более 150 Мбайт, то многие программы для Linux укладываются в 5-10 Мбайт и меньше. Книга, которую я пишу, обильно разбавляя ее картинками, пишется в редакторе (точнее в текстовом процессоре) OpenOffice.org Writer. При необходимости можно преобразовать всю статью в формат Microsoft Word. Все рисунки выполнены средствами, входящими в дистрибутив. Так что очень советую обратить внимание на дистрибутивы Linux. Работа за компьютером с программами EDA особенно полезна, с моей точки зрения, для начинающих любителей электроники. Эти программы позволяют лучше, быстрее, и интереснее освоить многое из мира транзисторов-резисторов, чем, скажем, лабораторные стенды, даже собранные своими руками. Я уверен в необходимости физической реализации всего, что создано за компьютером, хотя бы в макетном варианте, из-за возможного неправильного толкования компьютерной реализации. Да и практическая работа с
Наглядная электроника 5 реальными измерительными приборами весьма полезна не только для начинающих. Однако использование компьютера для полной разработки своего устройства с помощью современных программ не только возможно, но и осуществляется в профессиональной практике. Программы позволяют нарисовать схему, симулировать ее работу, проверить ее в разных условиях, оценить поведение устройства при выходе из строя элементов. Программы осуществляют разводку печатной платы, что полезно, даже если вы не собираетесь делать печатный монтаж. С помощью программ вы можете увидеть плату в трехмерном виде и исправить все недочеты, связанные с конструкцией. Читая книгу, можно представить себе автора в образе умудренного опытом седовласого учителя. А мне хотелось бы, чтобы вы видели автора молодым оболтусом, который хватается за все подряд, уверенный в своей правоте и всезнании. Это поможет вам критически подойти ко всему ниже написанному, проверяя любые утверждения, любые советы самостоятельно, поскольку нет ничего более ценного, чем собственный опыт.
Наглядная электроника 6 Глава 1. Обзор Листая старые журналы Когда-то, много лет назад, я любил, возвращаясь домой в дни получки, обойти книжные магазины. Я наметил несколько маршрутов, меняя их по настроению, в обычных магазинах заходил в отделы технической литературы, в букинистических художественной. Я никогда не был коллекционером, но путешествия по книжным магазинам мне нравятся и по сей день, хотя теперь я бываю в них крайне редко. В один из таких походов, раздосадованный тем, что не встретил ничего интересного на прилавках, я купил несколько связок старых номеров журнала «Радио», и по возвращении домой, рассортировав их по номерам, стал просматривать: начало одной, конец другой статьи. Меня не очень волновали проблемы радиолюбительства в стране, да и себя я не относил к радиолюбителям, так что достаточно быстро стал подумывать о зря потраченных деньгах, и что зря я нес поклажу, да и сейчас зря трачу время на чтение журналов. Однако мое пристрастие к самим походам по книжным магазинам, доставлявшим мне изрядное удовольствие, заставило продолжить перелистывание. И в награду я наткнулся на интересную для себя статью из истории развития радио. Затем мое внимание привлекло не совсем обычное схемное решение, а в итоге, я не только пролистал все купленные журналы, но несколько лет после этого выписывал журнал, и в букинистическом магазине специально интересовался подшивками за прошлые годы. Я перестал, в отличие от многих своих знакомых, относиться к радиолюбительской литературе с высокомерным пренебрежением. Сегодня, по прошествии многих лет, я, хотя и не стал праведным радиолюбителем, но с очевидной искренностью верю, что радиолюбительство, в широком понимании этого, есть большое благо для всех, кто выбрал это увлечение. Задумав написать книгу для радиолюбителей, я поначалу решил рабочий проект организовать по возрастному любительскому стажу, начав с главы, которую назвал бы «Для младших радиолюбителей». И вот что интересно, подумал я, а, сколько лет может быть «младшему радиолюбителю»? Наблюдая, как мой полуторагодовалый сосед с упоением щелкает кнопочками телевизора, когда приходит в гости, я бы сказал, что это вполне подходящий возраст. Но, с другой стороны, знавал я и тех, кому далеко за пятьдесят, но кто однажды решив отремонтировать карманный приемник с оторванным проводком, так и не отстал от этого занятия. Что ж, и пятьдесят, думаю, не менее подходящий возраст для «младшего радиолюбителя». Получается как у классика - любви все возрасты покорны! Сегодня развитие техники и технологии в области электроники, казалось бы, все дальше отодвигают ее от любительства к профессиональной деятельности. «Чип, карточка, модуль», как единицы рассуждений и размышлений, это не катушка детекторного приемника, намотанная на банке из-под варенья. Да и журналы сегодняшние не чета тем, старым, что рассказывали об удивительном новом приборе - транзисторе. В один из дней, бывают такие, отыскивая свободное место в квартире для размещения чего-то ненужного, но обязательного к хранению, я подумал, что пора бы выбросить все старые журналы. В мусор отправились новомодные некогда дайджесты, следом полетели сборники статей из разных областей, но когда я стал увязывать первую стопку журналов «Радио», по случайности она оказалась той самой, купленной давным- давно, и мне захотелось перелистать их еще раз. Листая старые журналы, я решил рассказать о них. Не пересказывать статьи или историю журнала, а рассказать о схемах, которые мне, по той или иной причине, показались интересны. Для рассказа об этих схемах я выбрал ряд программ, предназначенных для схемотехнических работ, или позволяющих работать со схемами. Этот ряд определяется в первую очередь тем, что мне удалось отыскать, и далеко, я полагаю, не исчерпывающий ряд. Самые старые из моих журналов Самый ранний из сохранившихся у меня журналов оказался №5 за 1956 год. Что же это был за год? Прошло немногим более десяти лет после окончания Великой Отечественной войны, принесшей небывалые разрушения и незабываемое горе нашей стране. Но странно, в преддверие 9 мая в редакционной статье 1956 года говорится о планах полной радиофикации страны к 1960 году, ученые рассказывают об изучении свойств сегнетоэлектриков и полупроводников, а министр связи говорит о внедрении цветного телевидения. Вчера, обедая, я включил телевизор. Рассказывали о войне. Правда, не о той далекой, а о совсем недавней - войне между криминальными группировками за полное владение крупным предприятием. А после начала перестройки прошло лет двадцать. Ничего не понимаю в жизни. Поэтому лучше вернусь к тому, в чем чуть- чуть разбираюсь. В журнале №8 за 1959 год есть статья Г. Лаврова «Полупроводниковый триод в режиме ключа». Статья, как следует из названия, посвящена различным аспектам и нюансам применения транзисторов в качестве
Наглядная электроника 7 электронных ключей. Я бы не обратил внимания на статью, если бы она не начиналась с одного простого и ясного примера, который есть определенный смысл рассмотреть вне рамок, собственно, статьи. Для начала я перерисую то, на что обратил внимание: Рис. 1.1. Ключевое управление коллекторным двигателем. Вот описание, взятое из статьи, которое станет основой первого эксперимента. «... очень благодатная область применения полупроводниковых приборов — использование их в качестве переключающих элементов в системах автоматического управления с плавным изменением параметров. Поясним принцип действия такой системы на примере регулирования скорости вращения электродвигателя постоянного тока ЭД с помощью механического ключа Кл, разрывающего цепь питания обмотки управления ОУ двигателя. Будем размыкать и замыкать ключ с определенной частотой. Среднее значение тока, протекающего через обмотку, зависит от соотношения между временем, в течение которого ключ замкнут, и временем, когда он разомкнут». Вначале определимся с программой для этих экспериментов. Из того, что я нашел, для Linux есть gEDA, Xcircuit, Oregano, KiCAD, Qucs, KTechlab. Ряд программ требуют внешнего симулятора, я остановил свой выбор на SpiceOpus. В Windows есть Multisim, Xlab, CircitMaker, MicroCap и LTspice. He все программы с одинаковым успехом послужат поставленной цели, насколько я понимаю, но с программами разберемся по ходу дела. Для начала попробуем провести эксперимент в программе для Windows. И начну я с программы, которую знаю лучше других, это Multisim (Electronics Workbench). Программа - очень удобная для начинающих, но очень дорогая. В настоящий момент последнюю версию программы можно загрузить с сайта производителя, и использовать время пробного использования для знакомства с ней. Итак, чтобы проиллюстрировать сказанное в статье, я предлагаю заменить электродвигатель резистором, а вместо механического ключа сразу взять транзистор. В этом случае схема приобретает следующий вид:
Наглядная электроника & drv mag Multisim - [drvmag] 0е ЕА View Place Emulate Transfer Tools Reports Options Window Help _|j DgjeGi*^ о Tg s %" a- > a - ® C <® «> I-In Use List- \ 1 T Рис.1.2. Схема для экспериментов с электродвигателем. Источник питания — VI 12В. Источником управляющих импульсов служит V2, двигатель заменен резистором R1 сопротивлением 1 кОм, для получения графического вида тока, протекающего через двигатель, мы будем просматривать напряжение на резисторе R3, а конденсатор С1 емкостью 10 мкФ послужит эквивалентом реактивной составляющей. Один канал осциллографа подключен к задающему генератору, второй к цепи наблюдения. При соотношении импульсов, когда ключ большее время замкнут, чем разомкнут, осциллограф покажет следующее: Рис. 1.3. Управление двигателем широкими импульсами Таким образом, верхняя диаграмма показывает, что среднее напряжение, соответствующее току через двигатель, будет большим. Посмотрим, что произойдет, когда ключ больше времени будет находиться в разомкнутом состоянии, чем в замкнутом:
Наглядная электроника 9 Рис. 1.4. Управление двигателем узкими импульсами Видно, что ток уменьшается. Подобный метод управления, с помощью широтно-импульсной модуляции, не утратил своей актуальности по сегодняшний день. Аналогичным образом, хотя и несколько иначе, управляются сегодня семисторы в устройствах плавной регулировки яркости светильников. При этом импульсный сигнал подается на управляющий электрод, а частота повторения импульсов синхронизируется с сетевым напряжением. Правда, есть еще один способ регулировки — пропуск полуволн сетевого напряжения. Этот метод может лучше работать со светильниками, имеющими низковольтные галогенные лампы и понижающий трансформатор. Первый метод управления приводит к тому, что трансформатор начинает шуметь. Широтно-импульсную модуляцию можно применить для управления температурой нагрева, если ее нужно поддерживать постоянной. Можно просто включать нагреватель и выключать при достижении заданной температуры, но при этом из-за большой инерционности тепловых процессов девиация температуры может оказаться выше, чем в случае широтно-импульсного управления. И еще один пример, когда использовать среднее значение последовательности импульсов оказалось полезным, припомнился мне в связи с проблемами использования шкал самодельных приборов. Не всегда получалось нарисовать достаточно красивую шкалу и приспособить ее на прибор. Случилось, что мне понадобился генератор, обосновать необходимость которого для текущей работы не получалось. Я решил, что проще собрать его, потратив час-другой, чем это время тратить на изобретение обоснования, тем более, что заявку, если и удовлетворят, то произойдет это не раньше, чем через несколько месяцев. Собрать подходящий генератор на куске макетной платы заняло не более часа, немного времени заняло и подобрать подходящую коробку, чтобы его разместить, но рисовать шкалу... я отказался от этой мысли. С другой стороны и без шкалы использовать генератор было неудобно. И тогда я подумал, что могу приспособить вольтметр для измерения среднего значения напряжения, который могу использовать вместо шкалы. Как это будет выглядеть, я сейчас постараюсь объяснить с помощью программы Multisim, попутно немного рассказав, как ею пользоваться. Итак, запускаем программу и заказываем новый файл стандартными средствами Windows (т.е. меню File и подменю New в основном меню программы). Для начала мне понадобится генератор (в качестве базы я использовал тогда генератор прямоугольных импульсов). В программе Multisim источники разного рода напряжений можно найти либо в основном меню в подменю Component., меню Place, либо на панели инструментов — крайняя слева кнопка со значком заземления. В любом случае открывается диалоговое окно:
Наглядная электроника 10 Рис. 1.5. Диалоговое окно компонент в меню программы Multisim Используя раздел основной базы данных Sources (Источники), я выбираю в левой части окна из предложенного списка SIGNAL_VOLTAGE нужный мне вариант - CLOCK_VOLTAGE. Нажимаю клавишу ОК и, перемещая курсор с привязанной к нему иконкой тактового генератора в нужное мне место, нажимаю левую клавишу мышки, чтобы зафиксировать размещение. Затем повторяю всю процедуру еще раз, но теперь обращаюсь к POWER_SOURCES, откуда беру символ заземления, обозначенный как GROUND. Почему я использую тактовый генератор? Это один из вариантов, вы можете попробовать использовать в этом эксперименте PULSE_VOLTAGE или Function Generator из предлагаемых инструментов на инструментальной панели справа. Мне сейчас понадобятся резисторы и конденсатор, которые я найду в диалоговом окне, открывающемся при нажатии второй клавиши слева на инструментальной панели под основным меню, клавиши с изображением резистора При этом открывается то же окно диалога, но с поддиалогом Basic, в который можно было попасть и в предыдущем случае, заменив источники в окошке, где на рис. 1.5 написано Sources на Basic, и выбирая RESISTOR Рис. 1.6. Диалоговое окно выбора резисторов в программе Multisim Как вы видите, резисторы даже имеют значение класса точности — 5%. Конденсаторы в диалоговом окне располагаются чуть ниже, обозначенные как CAPACITOR Провести соединения достаточно просто — при перемещении курсора к открытому концу элемента схемы, резистора или конденсатора, или выводу прибора, он меняет вид. Теперь вы нажимаете левую клавишу мышки, можете ее отпустить, и проводите провод к нужному месту (это может быть и провод, соединяющий два элемента схемы), где повторно нажимаете клавишу мышки. При попадании в место соединения курсор меняет цвет, внутри кружка, в который он превратился в начале прокладки провода, зажигается зеленый индикатор. После того, как я добавляю осциллограф с правой панели инструментов, и провожу все соединения, схема приобретает вид:
Наглядная электроника 11 & imp uh - Multisim - [imp uh] File Edt View Place Sirrniate Transfer Tools Reports Optorts Window Help D Й J в В Ю UH Q Т|Н%”й->Л1-Е)С<яа> |---in use let — For Help, press Fl г J Г Г Г Г Г Г Г Рис. 1.7. Первоначальная схема следующего эксперимента В данный момент на экране осциллографа XSC1 я наблюдаю следующую картину: Рис. 1.8. Импульсы тактового генератора на емкости Прямоугольные импульсы - это импульсы тактового генератора, и теперь проще понять, почему я использовал тактовый генератор. В низком состоянии выхода генератора напряжение равно нулю, в высоком 5 вольт, то есть, импульсы однополярные, что и позволяет получить среднее значение напряжения не равное нулю. При значении резистора 1 кОм и значении емкости 100 нФ мне приходится изменить частоту с 1 кГц (значение по умолчанию) на 10 кГц. Это выполняется двойным щелчком мышки по иконке генератора, где значение меняется в окошке открывающегося диалогового окна. После нажатия на клавишу ОК, все и получается «ОК». Сегодня, скажу честно, я уже не помню, каким образом я получил возможность измерять частоту с помощью вольтметра. Если я сейчас подключу вольтметр, его можно найти, нажав на инструментальной панели под основным меню клавишу с изображением семисегментного ицдикатора, и выбрав из списка слева VOLTMETER Кстати, есть возможность выбрать четыре варианта для удобства подключения - два варианта полярности выводов при горизонтальном расположении выводов, и два варианта при вертикальном расположении выводов. Так вот, если сейчас я подключу вольтметр и измерю напряжение на
Наглядная электроника 12 конденсаторе при двух значениях частоты генератора, положим, 1 кГц и 10 кГц, я получу одно и то же значение напряжения. Поэтому, возвращаясь к началу разговора, я хочу преобразовать импульсы до подачи их на конденсатор. А именно, я сделаю импульсы фиксированной длительности. Есть разные способы добиться этого, например, с помощью таймера 555 (для этого он и предназначен), либо с помощью цифровых одностабильных генераторов, либо построив укоротитель импульсов на цифровых вентилях, либо как-то еще. Первая попытка проверить работу схемы с микросхемой серии 555 не увенчалась успехом. Программа показывает, что симуляция идет, но осциллограф не показывает ни исходного, ни полученного сигнала. Попробую чуть позже вернуться к этому, чтобы понять, не прав ли я в настройках, или не права программа в работе, а сейчас использую схему одновибратора, построенного на логических элементах И-НЕ: & friq_meter - Multisim - [friq_meter] File Edit View Mace 5«nulate Transfer Tools Reports Options Window Help D e J в В О В Q Q Q |—In Use list— _je|K Рис. 1.9. Схема получения импульсов постоянной длительности Если импульсы имеют постоянную длительность, то изменение частоты, по моему мнению, должно приводить к ситуации, схожей с предыдущей, где мы рассматривали широтно-импульсную модуляцию Посмотрим, так ли это? Вот как выглядят сигналы при частоте 1 кГц: Рис. 1.10. Вид импульсов при частоте 1 кГц Те импульсы, что ниже, это импульсы, подлежащие измерению. Верхний ряд отображает исходные
Наглядная электроника 13 импульсы. А вот, что происходит с изменением частоты: Рис. 1.11. Вид импульсов при частоте 5 кГц Есть надежда, что идея будет работать, Осталось добавить цепочку считывания средних значений, как на рисунке 1.7. Схема приобретает следующий вид (я сразу добавлю вольтметр): Рис. 1.12. Измерение среднего значения напряжения При частоте 1 кГц вольтметр показывает 0.38 В, а сигнал имеет вид:
Наглядная электроника 14 Рис. 1.13. Вид измеряемого сигнала на частоте 1 кГц Если изменить частоту сигнала, увеличив ее до 20 кГц, то вольтметр покажет: friq_meter - Multisim - [friq_meter] File Edit View Place Sanulate Transfer Took Reports Opborts Widow Help D & О El • «О (В Ф Q |-In Use List- _^)fr>q_meter |~ For Hets press Fl Tran: 7.017 ms ШЕН Рис. 1.14. Показания вольтметра на частоте 20 кГц Показания вольтметра увеличились до 1,2 В. Я думаю, что использовал такое или похожее решение. К подобной схеме я позже возвращался, когда занимался аналоговым электронным регулятором угла опережения для автомобиля. Я использовал схему для получения регистрации числа оборотов двигателя. Позже аналоговая схема мне не понравилась, и я разрабатывал цифровую схему. Это было очень давно, так что я не помню схему, но к этому, возможно, вернусь позже, поскольку, если я ничего не путаю, был один интересный момент, о котором я хотел бы рассказать. Но позже. А сейчас попробуем разобраться, почему не заработал таймер LM555 в программе Multisim. Таймер можно найти либо в меню компонент в разделе Mixed (подменю Component... меню Place в основном меню), либо воспользоваться инструментальной панелью, где диалоговое окно вызывается иконкой с нарисованной на ней синусоидой и цифрами 01. Проверка показывает, что и следовало ожидать, нужно было правильно настроить схему:
Наглядная электроника 15 Circuitl - Multisim - [Circuitl] File Edit View Place Sanulate Transfer Tools Reports Options Window Help _ SIX DB'JlBI О @ %‘ P- a - E) С « l-mus.ua- E?? Рис. 1.15. Схема таймера 555 в программе Multisim Однако продолжим путешествие по журналам. Очень полезным, с моей точки зрения, было то, что журналы помещали номограммы для радиотехнических расчетов. Можно выполнить расчеты вручную, это так, но гораздо удобнее пользоваться номограммами. Например, в том же майском журнале есть «Графический расчет усилителей ВЧ» (ламповых). Сегодня можно для этих же целей использовать либо множество программ, существующих и для Windows, и для Linux, либо использовать электронные таблицы, расчеты в которых придется создать самому, но сделать их удобными для себя. В Windows в офисном пакете это Exel, а в Linux в каждом современном дистрибутиве - это несколько программ, входящих в офисный пакет OpenOffice, в пакет программ KOffice, и электронная таблица для среды Gnome. Но прежде, чем накапливать программы расчета, следует решить, а не достаточно ли программ EDA, если они позволяют достаточно легко и просто настроить схему, не прибегая к сложным расчетам. Перебирая журналы за 60е годы, я встретил много интересного, но отобрал только несколько простых схем, чтобы опробовать их в программах. Первая схема взята из журнала №2 за 1965 год. Автор статьи В. Басс из Новосибирска описывает «Широкодиапазонный генератор частоты». Схема генератора выглядит следующим образом:
Наглядная электроника 16 & 2_1965_generator Multisim - [2_1965_generator] File ЕЛ View Масе SmruJate Transfer Toots Reports Options Whdow Help _|Д|Х| D^jSGlXft О j--In Use ListZ ? T Рис. 1.16 Широкодиапазонный генератор частоты Индуктивность L1 может быть индуктивностью наушников. Автор предлагает, например, ТМ-2А с сопротивлением 60 Ом, при этом частота генератора должна быть 1200 Гц, а форма сигнала (это работа программы Multisim, а не рисунок из журнала): Рис. 1.17. Форма сигнала широкодиапазонного генератора частоты Если вы посмотрите журнал на странице 37, то увидите картинку очень похожую на эту. Что я могу сказать - если о схеме, то даже по прошествии 40 лет с момента публикации журнала простота схемы завораживает, полезность несомненная. Мне много раз приходилось сталкиваться с проблемой получения генератора, когда на его создание хочется истратить не более 10-15 минут. Это одно из таких решений. Но что я хотел сказать в действительности, так это то, как хорошо справилась с задачей программа Multisim! Посмотрим, так ли удачно у меня получится с другими программами. Следующей будет программа CircuitMaker. Она существенно дешевле в полномасштабной версии, чем аналогичная версия предыдущей программы, но остается достаточно дорогостоящей. Посмотрим, насколько легко я получу похожий результат (если получу). После запуска программы открывается привычное для пользователей Windows окно с основным меню в верхней части, с инструментальной панелью чуть ниже и с окном проекта (и компонент) слева. Не мудрствуя лукаво, я выбираю из меню компонент транзисторы в разделе Trnsistors, который раскрывается при нажатии значка «+» левее названия раздела:
Наглядная электроника 17 — CircuitMakei - [UHTTTUO.CKT- 100%] File Edit View Options Macros SrnJabon Wave Help -^bal g D В Й a * + A / /> Q © ко К ? 0 7 k Biowse S each | Рис. 1.18. Выбор транзисторов в программе CircuitMaker Непосредственно модель транзистора можно выбрать в нижнем окне обозревателя, а помещается в нужное место он после нажатия на клавишу Place, когда его иконка появляется рядом с курсором в рабочем пространстве, а окончательно нажатием на левую клавишу мышки. Аналогично разместим остальные элементы схемы, как на рисунке 1.16. Если после установки элемента потребуется его передвинуть, то достаточно его выделить щелчком левой клавиши мышки, нажать на левую клавишу мышки и «перетащить его, подцепив мышкой»:
Наглядная электроника 18 pF CircuitMaker - [UNTITLED I* 100%] Fie Edit Vtew Options Macros Sinulation Wave Help g в в e В ii + A / /> Q St* к ? ®7 * Biowse | Search] I _______ £ Айва __r'. S, V Adobe Photoshop | а] 1Ыстая старые жур. a Ci vJtMater Рис. 1.19. Размещение элементов схемы в программе CircuitMaker Элементы могут появляться с неудобной ориентацией. Чтобы их развернуть, достаточно выделить элемент, и щелкнуть по нему правой клавишей мышки. В появившемся меню есть раздел Rotate 90, щелчок по которому поворачивает компонент схемы на 90 градусов. На рисунке 1.19 выделен этот пункт меню. А обозреватель, слева, показывает, где я отыскивал индуктивность L1. Теперь я постараюсь изменить номиналы резисторов и индуктивности, чтобы привести их в соответствие с предыдущей схемой. Для этого я двойным щелчком по каждому из этих компонент открываю окно диалога свойств компонента, где в поле Label-Value задаю нужные значения и нажимаю клавишу ОК. Добавляя батарейку в качестве элемента питания и землю, на всякий случай (которые я пока беру из раздела General, раскрывая меню Sources), я готов приступить к соединению всех элементов схемы Для этой процедуры на инструментальной панели ниже основного меню программы выбирем значок «+». После этого курсор меняет свой вид, позволяя начать провод от вывода элемента схемы, который приобретает вид квадратика при наведении на него курсора, простым щелчком левой клавиши мышки. Появляются направляющие, что очень удобно, и схема легко соединяется:
Наглядная электроника 19 CitcuiWtoker - [1)|ПТТШ>.СКТ 100%] Fie Edit View Options Macros Simjlation Wave Help g в e e 4 t + A / P Q El <!► К ? ® 7 ► Browse S each | Hotkey | Place | - General ~ + BJTs + Capadtors + Diodes + Inductors + Instruments + Resistors - Sources +V Battery Grotrrd I Souce VSouce ♦ Active Components ♦ Ampliliers/Biffers ♦ Analog ♦ Capadtocs ♦ Comparators ♦ Correctors ♦ Crystals ♦ Data Converters ♦ Digital + Digital Animated + Digital Basics + Digital by Function ♦ Digital by Numbet v Model_______Description_____ Рис. 1.20. Соединение элементов схемы в программе CircuitMaker Попробую наудачу использовать Probe Tool (пробник), инструмент, который я нахожу на инструментальной панели чуть левее увеличительного стекла, которое, как я думаю, служит для изменения масштаба обозрения схемы (zoom). На схеме появляется символ «А» в рамке, но попытка запустить симуляцию схемы не увенчивается успехом. Придется обратиться к руководству. Читаем: «Analog Mode is the accurate, “real-world" simulation mode you can use for analog, digital and mixed-signal circuits». Переведу эту фразу и пояснения дальше, пока не пойму, как оживить симуляцию. Итак: «AnalogMode—это точный, «реалистичный» режим симуляции, который вы можете использовать для аналоговых, цифровых и смешанных цепей. Этот режим даст результат, схожий с тем, что вы получите на реальной макетной плате. В режиме Analog Mode устройства работают наподобие элементов реального мира, а каждая индивидуальная функция модели, как дубль реального элемента. Например, цифровая интегральная схема имеет точно подобранные временные задержки, установки и время удержания, и т.д. Выходы устройств отслеживают эффект их нагрузки, и почти все параметры реальных устройств берутся в расчет. Мир аналоговый — это классический мир электроники. В отличие от цифровой электроники здесь нет ограничений логических состояний, уровень напряжения любого данного узла цепи не ограничен сверху или снизу. Аналоговая симуляция, следовательно, более комплексная. Режим аналоговой и смешанной симуляции в CircuitMaker использует улучшенную версию Berkeley Spice3f5/Xspice, позволяющую вам верно воспроизводить любую комбинацию аналоговых и цифровых устройств без ручной вставки цифро- аналоговых или аналогово-цифровых конвертеров. Эта mixed-signal (смешанные сигналы) или mixed-mode (смешанный режим) симуляция возможна постольку, поскольку CircuitMaker включает точные, событийно-управляемые поведенческие модели для своих цифровых компонент, включая TIL и CMOS цифровые устройства. В аналоговом режиме есть также широкое разнообразие анализаторов, которые могут использоваться в этом режиме для проверки и анализа разных аспектов вашей разработки. Чтобы выполнить аналоговую симуляцию, вы должны удостовериться, что есть Spice информация для каждого устройства в схеме. Только те устройства, что в списке аналоговых или аналогово-цифровых в библиотеке устройств (Device Library book) имеют Spice данные, ассоциированные с ними. Вы можете использовать и другие устройства в схеме, коль скоро сможете предоставить необходимую Spice информацию для этих устройств. Флажок в диалоговом окне свойств устройства (Device Properties) показывает, будет, или нет, оно функционировать в режиме аналоговой симуляции (означающее наличие данных симуляции Spice для
Наглядная электроника устройства). Если аналоговый флажок не установлен, и вы используете устройство в аналоговой симуляции, появится предупреждение, а это устройство игнорируется, оставляя открытую цепь в месте расположения устройства. Вы задаете установки аналоговых анализаторов, используя диалоговое окно Analyses Setup, описанное ниже в руководстве. По умолчанию, когда вы создаете новую схему, аналоговые анализаторы получают предустановленные опции Always Set Defaults. Это означает, что Operating Point Analysis (Multimeter) доступен в простых цепях постоянного тока. Для более сложных цепей применяется Transient Analysis (oscilloscope) с предустановленными условиями. В меню Simulation должен быть выбран режим Analog Mode, а не DigitalMode. Контекстно-чувствительный инструмент Probe Tool (пробник) позволяет вам быстро проверить любую точку в цепи в процессе симуляции и увидеть результирующую осциллограмму или данные в окне анализа (Analysis Window). Заметьте, что Probe Tool используется в аналоговом режиме иначе, чем в цифровом. Прежде, чем запустить симуляцию, вы должны щелкнуть левой клавишей мышки по Probe Tool в цепи для добавления или удаления тестовых точек реального времени (Run-Time Test Points). Заметьте, однако, что вы не имеете предопределенных тестовых точек до запуска симуляции. Дальше в руководстве посмотрите о работе с тестовыми точками. В процессе симуляции коснитесь кончиком Probe Tool провода, вывода устройства или корпуса устройства, чтобы увидеть или вывести данные в этой точке. Инструмент отображает одну из шести букв: V, I, Р, Z, N или R. Значение этих букв проиллюстрировано слева. Щелкните левой клавишей мышки в точке цепи, где вы хотите встать пробником, и значение или осциллограмма незамедлительно появятся в текущем окне (активном) анализа. Для получения множества диаграмм просто щелкайте мышкой, удерживая клавишу Shift, в режиме пробника столько раз, сколько нужно, и диаграммы соберутся в «стеке» текущего окна анализа. Заметьте, что если CircuitMaker показывает, что данные тока или мощности не доступны, остановите симуляцию и щелкните по клавише Analyses Setup на инструментальном меню. Щелкните по клавише Analog Options и выберите флажки Node Voltage, Supply Current, Device Current и Power в нижнем правом углу окна диалога. Затем вновь запустите симуляцию». Ну, вот. Перевести я перевел, осталось почитать и попробовать. Если не получится, будем читать дальше. Но меня торопят — пора освобождать компьютер. Обещаю, что через минуту освобожу, и начинаю бессистемные попытки оживить симуляцию схемы. Успех достигается только после нескольких манипуляций в диалоговом окне Analyses Setup, находящееся в разделе основного меню под рубрикой Simulation, где я устанавливаю флажок Transient/Fourier..., снимая все остальные, и несколько увеличиваю общее время наблюдения. В итоге получаю следующую картину происходящего: • CircuitMaker - [С documents and Settings! tgenerator .CKT* 190%] File Edit View Optiors Macros Jmiiation Wave Help Рис. 1.21. Наблюдение выходного сигнала в программе SircuitMaker
Наглядная электроника 21 Я согласен, что это не дело, поспешно «дергать разные веревочки», пытаясь получить результат. Но я пока не намерен покупать программу, и тщательное изучение всех ее возможностей и особенностей в данный момент не является основной задачей этой обзорной главы. Поэтому продолжим путешествие по журналам 60х. В журнале №4 за 1965 год есть перепечатка в рубрике «За рубежом» под названием «Усилительная ступень с постоянным усилением», которая начинается так: «На рисунке изображена схема интересной усилительной ступени на транзисторах, усиление которой не зависит от свойств примененных транзисторов. Она представляет собой каскодное включение двух транзисторов с прямой связью». Попробуем разобраться в схеме, используя программу Xlab. Если судить по остаткам текста на польском языке, которые я встречаю в нескольких разделах меню, это программа польского производства, но распространяемая бесплатно (если я понимаю все правильно). Запускаю программу и начинаю создавать схему. Первое, с чем я сталкиваюсь — мне пока не нужно работать с программой, но нужно использовать ее для иллюстраций. Черный фон, удобный для постоянной работы, я хотел бы заменить на белый. Ищу, как это сделать, заглядываю в раздел Options основного меню, где и нахожу пункт Schematic editor... В диалоговом окне, которое появляется после выбора этого раздела, действительно в левом нижнем углу есть надпись Background color, а чуть правее окошко для ввода цифр, сейчас в нем «О», и дальше квадратик с черным цветом заливки. Пробую заменить цифру «О» на «1», вижу, как квадратик справа меняет цвет, и подбираю (уже число) «15», когда контрольный цвет становится белым. Попутно снимаю флажок Visible для Grid, подразумевая, что сетка в рабочей области окна редактирования схемы будет не видна. Теперь поищем компоненты. Под основным меню есть инструментальная панель, на которой есть кнопка с изображением транзистора, нажимаем ее, перемещаем курсор в рабочую область, видим иконку транзистора, привязанную к курсору, и, щелкая левой клавишей мышки, оставляем транзистор в нужном месте. Но... после щелчка транзистор исчезает. Но... в окне компонент, которое появляется вместе с появлением рабочей области, свойства транзистора отображаются. Где я не прав? Вспоминаю, что когда цвет фона был черным, элементы отображались белым, а цвет выделенного элемента в произведенных мною настройках был красным. Выделяю прямоугольник в рабочей области и обнаруживаю, что много транзисторов я успел выбрать, им стыдно за меня, они покраснели. Удаляем лишнее. Однако попытка найти возможность изменить цвет компонента оказывается безуспешной. Возвращаемся к исходным настройкам, позже посмотрим, что можно будет сделать, чтобы иллюстрация не была перегружена черным фоном. Расположив компоненты в рабочей области, я должен их соединить. Если нажать левую клавишу мышки, когда курсор находится над выводом компонента, то появляется изображение паяльника, удерживая клавишу нажатой, я действительно провожу соединение до следующего нужного мне вывода. Повторяя эту операцию несколько раз, я соединяю схему. Не придумав, как поменять цвета, я получаю следующий результат (с измененным цветом в графическом редакторе): ав ОТО О D D- D Electric Graphic | • peitips н и e © |Q XLab [C:\XLab\work\const.ntl] File Edit Wjtaw View Rndysrs Options Wrdow Help Ins: Wstaw dement | Shift: Rysuj przewod | Ctrl-Z: Cofnij | F9: Symuluj XYl I” XY2: Г Рис. 1.22. Вид усилительной ступени в программе XLab const ntl (1) obj Doti = Dot{}, obj Dot2 = Dot ft, obj Dot3 = Dot ft, obj Dot 4 = Dot {). obj Gioundl = Eround {}, objQ1 = 8JTn{}; objQ2 = BJTpft: obj HI = RO. objR2 = R{l
Наглядная электроника 22 А, в конечном счете, не получилось ничего, поскольку возникает ошибка при выполнении симуляции, есть рекомендация загрузить последнюю версию из Интернета, но сейчас у меня поврежден сетевой кабель, вследствие чего «Интернета нету». Посмотрим, как выглядит пример симуляции в программе, который можно получить с помощью схемы из раздела примеров: Рис. 1.23. Работающая симуляция в программе XLab Постараюсь вернуться к программе позже, а пока посмотрим, что получится в программе Micro-Cap. Первое, что хочется сказать о программе язык программы русский. Компоненты можно взять либо на инструментальной панели, где на кнопках изображены наиболее ходовые элементы схемы, либо взять из основного меню в разделе «Компонент». Доступных компонент очень много, и выпадающее меню разбито на множество подразделов. Чтобы провести соединения я выбираю на инструментальной панели (из нижнего ряда, четвертая иконка слева) средство соединения компонент, провожу соединения и получаю результат:
Наглядная электроника 23 р Micro-Cap 7.0.0 - [C:\MC7\DATA\CIRCUIT 1.СIR] - Р1 fcjj Файл Редапирова»* !£омтонент Окна Опции Анализ Создание Поиошь _ o’ X d g? в е i в х «а) е х ян + ~ -и- -и- -к -> -i- ф <$> s m % п s pg Г^ТП-\й?’Р1 □ X if В ** “I V «*Л ?? Ч ЧЬ ‘fl © F |r<|<>>l|\TextXPage 1/ Select Mode Drawing area Рис. 1.24. Схема усилительной ступени в программе Micro-Cap Попробуем запустить симуляцию этой схемы, если она работает в демо-версии. Первые попытки сделать это не приводят к успеху, я запускаю Переходные процессы... в разделе Анализ основного меню, но не происходит ничего интересного. Если не считать того, что в меню на месте Анализ появляется Analysis. Это интересно, но не сейчас. Я меняю свойства генератора V0, для чего щелкаю дважды по генератору левой клавишей мышки и в открывшемся диалоговом окне меняю в нижней части в окошке F значение на 100HZ, а значение А на 0.1, что по моим представлениям должно установить частоту 100 Гц, и амплитуду сигнала 100 мВ. Модель генератора я выбираю VSIN: Рис. 1.25. Окно выбора параметров генератора в программе Micro-Cap Попутно я меняю значения резисторов, обнаружив, что после запуска режима анализа переходных процессов на инструментальной панели активизируется клавиша Node Voltages, нажав которую можно получить значения напряжений во всей цепи. Значения резисторов я меняю с тем, чтобы получить постоянное напряжение на выходе примерно равным половине питающего напряжения. Изменить значение резисторов, как и других, думаю, элементов схемы, можно так же, как я менял параметры генератора - в
Наглядная электроника 24 диалоговом окне, появляющемся после двойного щелчка левой клавишей мышки по элементу. Затем, как ни хотелось этого избежать, пришлось почитать руководство к программе. Руководство к программе достаточно подробно, хорошо иллюстрировано, и, если не уподобляться мне, не спешить, а вдумчиво его прочитать, то результаты будут лучше. Для меня же прояснилось далеко не все, но руководство описывало режим интерактивной пробы. Попробую найти этот режим. Как мне кажется, это должно соответствовать рубрике Исследование переходных процессов в бывшем разделе основного меню Анализ. Запуск этого режима открывает новое окно рядом с окном редактора схемы. Теперь, щелкнув мышкой по узлу базы транзистора Q1, я получаю сигнал, который заказывал. Щелчок по выходу в точке соединения резистора R5 и конденсатора С2 дает требуемую картину: р Micro-Cap 7.0.0 - б1 файл Редакптюеание Окна Опции Probe vertical Horizontal Scope Помощь Рис. 1.26. Диаграмма сигналов в программе Micro-Cap Изменение значения резистора R3 с 1 кОм на 500 Ом приводит к уменьшению выходного сигнала, то есть к уменьшению усиления. В исходном варианте это было около 11, теперь коэффициент усиления снижается до 6. Что и следовало ожидать, поскольку коэффициент усиления должен быть равен отношению суммы резисторов R3 и R4 к R3. Несомненно, если не считать неудачи с Xlab, к этой программе я, возможно, вернусь позже, остальные программы достаточно удобно позволяют разобраться со схемами. Поэтому я продолжу листать журналы, но теперь сменю операционную систему. Я уже говорил, что Linux (точнее ASPLinux 11), в котором я работаю, меня более чем устраивает во всех отношениях. Программ для этой операционной системы с каждым годом становится все больше. Программы доступны, даже коммерческие версии стоят значительно дешевле, чем программы для Windows. Многие версии работают в обеих операционных системах. Мне нравится мой ASPLinux, может и вам он понравится. Следующая схема, которую я хочу рассмотреть взята из журнала №8 за 1966 год. Обнаружил ее я на странице 59, и называется статья «Омметр с линейной шкалой». Первой из программ, в которой исследуем предложенную схему, пусть будет Oregano. Программа русифицирована. В правом окне выбираем библиотеку Default, в библиотеке выбираем NPN транзистор (в оригинале это PNP), выбираем резисторы. Первая проблема обнаруживается с кодировкой. Вместо текста в рабочей области рисуются квадратики. Вторая проблема обнаруживается при попытке запустить симуляцию, и приводит к полному зависанию компьютера. Проблемы интересные, но их решение следуют отложить. Поэтому меняем программу: пусть будет KiCAD. Запуск программы открывает диалоговое окно менеджера проекта. Создаем новый проект - в разделе Projects есть подраздел New Project Descr, в котором обозначаем наш будущий проект как ommeter, что, в свою очередь, приводит к появлению двух файлов: схемы и платы.
Наглядная электроника 25 Рис. 1.27. Окно проекта в программе KiCAD Теперь, если щелкнуть по файлу схемы ommeter.sch, то открывается редактор схем, в котором, я надеюсь, я нарисую схему омметра с линейной шкалой. На инструментальной панели слева есть клавиша Add Components, которую я хочу нажать: Рис. 1.28. Окно редактора схем программы KiCAD Клавиша нажата, но я попадаю в новое окно диалога, где следует ввести имя компонента. Для начала я нажимаю клавишу List АН. В появившемся списке выбираю device, получаю новый список, в котором и нахожу NPN транзистор. После его расположения в рабочей области с помощью правой клавиши мышки я открываю выпадающее меню, в котором нахожу пункт Mirror (X) в разделе Orient Component. Теперь путь создания схемы намечен, осталось ее нарисовать. Располагаем нужные компоненты. Ищем справа на инструментальной панели клавишу Add wires, чтобы соединить компоненты. Курсор в виде карандаша проделывает это легко и просто. Попутно я выясняю, что двойной щелчок по надписям, первоначально имеющим знаки вопроса, например, R?, позволяет обозначить элементы согласно схеме в журнале, и ввести величину сопротивления, надеюсь, в нужном месте. И еще я выясняю, что колесико мышки позволяет мне
Наглядная электроника 26 при прокручивании уменьшать и увеличивать рисунок в окне. Достаточно поместить курсор в нужное место, покрутить колесико, и получить увеличение или уменьшение рисунка. Удобно. Схема получается следующего вида: ......................... Files Preferences Help Рис. 1.29. Схема омметра в программе KiCAD Осталось сообразить, как запустить симуляцию. На основной инструментальной панели под основным меню я нахожу клавишу Netlist generation. Занимаясь переводом нескольких руководств к программам, я уже понял, что симуляторы Spice работают с этой спецификацией схемы. Поэтому пробую создать netlist. Немного непонятно, почему проверка правил электрических соединений дает ошибки, но netlist для симуляции, похоже, создается, однако для запуска симуляции необходимо читать руководство spice, поскольку попытка запустить программу из KiCAD, даже с записанной командой запуска не дает видимого эффекта. Вернусь-ка я к этой программе позже. А сейчас попробую запустить другую программу, Qucs. Программа русифицирована. После запуска открывается окно привычное и в Linux, и в Windows, с основным меню и инструментальной панелью, с окном навигации и рабочей областью. Попробуем нарисовать схему:
Наглядная электроника 27 Рис. 1.30. Создание схемы омметра в программе Qucs В панели навигации в разделе компоненты я нахожу, открывая подменю дискретных компонент, резисторы. Расставляю их в рабочей области. Немного спотыкаюсь, когда пытаюсь развернуть их должным образом, это получилось из-за выбора двух резисторов вместе: щелкнув правой клавишей мышки по резистору, в открывающемся меню я выбираю поворот, но вращаются оба резистора. Некоторое время, сопровождаемое словами, не лучшим образом меня характеризующими, я не могу понять, что же следует сделать, но потом щелкаю по иконке с изображением курсора на инструментальной панели, затем щелкаю мышкой в свободном месте рабочей области, и проблема решена. Стоило ли так чертыхаться? Транзистор я нахожу в подменю нелинейных компонент раздела компонент, а батарейки в разделе источников. Теперь надо соединить элементы схемы. Для этой цели я на инструментальной панели нажимаю иконку с явным рисунком проводника, курсор принимает вид, показанный на рисунке 1.30, и все соединения проходят гладко, без проблем, без нехороших слов. Теперь я хочу запустить симуляцию. Для чего я добавляю измеритель напряжения, включая его параллельно резистору R1, измеритель я нахожу среди дискретных компонент. Там же нахожу измеритель тока, который включаю между батарейкой V2 и резистором R1. В подменю раздела компонент нахожу виды моделирования, выбираю моделирование на постоянном токе. Полезно, наверное, сохранять все, о чем мне напоминает иконка дискетки на вкладке с именем схемы. И теперь рабочая область приобретает следующий вид:
Наглядная электроника 28 Рис. 1.31. Подготовка схемы к моделированию в программе Qucs Далее я запускаю Моделировать в разделе основного меню Моделирование, выбираю табличную форму в подменю Диаграммы меню Компоненты, а в диалоговом окне для наблюдения выбираю Pr2.V и Prl.I дважды щелкнув по этим параметрам в окне диалога. В итоге образуется таблица: Рис. 1.32. Таблица показаний измерительных приборов в программе Qucs Напряжение равно 0.116 В, ток 0.116 мА. Теперь попробуем увеличить сопротивление резистора R1 вдвое. Напряжение, показываемое измерителем, становится 0.232 В, а ток остается 0.116 мА. Увеличиваю сопротивление в три раза (от начального 1 кОм). Получаю напряжение 0.348 В, и ток 0.116 мА. Если не верите, проверьте сами. Итак, омметр действительно получается с линейной шкалой. Происходит это благодаря тому, что на транзисторе организован генератор тока, то есть источник, ток которого не зависит (или почти не зависит)
Наглядная электроника 29 от нагрузки. В этом случае напряжение на измеряемом сопротивлении будет линейно зависеть от величины сопротивления. Хотя журнал и старый, но идеи не стареют. Генераторы тока, подобные описанному в статье журнала, и по сей день находят, я думаю, широкое применение, и не только в измерительной технике. И программа Qucs оказалась достаточно легко понимаемой на интуитивном уровне. А если учесть, что краткое руководство к этой программе имеет хорошо сделанный перевод на русский язык, то это хорошее начало для работы по созданию своих собственных схем. Это я так думаю. А вы? Журнал «Радио» для начинающих Завершая разговор о старых журналах, я хотел бы упомянуть о том приятном впечатлении, которое на меня произвела забота журнала о начинающих радиолюбителях. Целый ряд статей посвящен рассказу об электротехнике, радиотехнике, радиоприемных устройствах и т.д. На базе нескольких статей из этих журналов я продолжу рассказ о программах для работы с электроникой. Начну, однако, с того, что приведу выдержку из статьи из №12 за 1962 год. Статья называется «Радиолюбитель должен быть экспериментатором» и подписана 3. Лайшев. «Даже беглое знакомство с редакционной почтой и содержащимися в письмах вопросами свидетельствуют о том, что основная масса читателей, обращающихся за консультацией, - молодые, начинающие радиолюбители... К сожалению, далеко не все авторы писем в редакцию представляют себе тот объем знаний, который в настоящее время необходим квалифицированному радиолюбителю. Некоторые, например, считают, что достаточно правильно повторить конструкцию по готовой схеме из журнала или книги, и можно уже считать себя радиолюбителем. Обычно такие товарищи, собрав одну-две конструкции, но, не сумев их наладить, очень быстро убеждаются в том, что радиотехника требует более глубоких знаний, чем они предполагали... ... И самое главное - больше и смелее экспериментировать, ибо настоящий радиолюбитель обязательно должен быть экспериментатором». Я полностью согласен с автором статьи. Знания, которые всегда можно почерпнуть из книг, из объяснений более опытных друзей или знакомых (а сегодня, порою, и не знакомых, где-нибудь на форуме, посвященном электронике), желание и практика, эксперименты и выводы из своих побед, равно, как и неудач - путь в радиотехнику и электронику. И если сорок лет назад этот путь трудно было пройти без приборов и не всегда доступных деталей, то сегодня, имея компьютер, можно (хотя и не следует замыкаться только в этом виртуальном мире) проделать этот путь гораздо быстрее и комфортнее. Общая рубрика для начинающих называется «Путь в радиотехнику и электронику». Возможно, эта рубрика начинается раньше, но у меня есть только журнал №4 за 1962 год, где я этот раздел и обнаружил. Статья называется «Постоянный электрический ток», автор инженер С. Матвеев. Я не буду пересказывать статью, кому интересно прочитает, но возьму ее за основу в рассказе о постоянном токе. Оригинальная статья очень подробна, а, главное, точна в рассказе, тогда как мое изложение я нахожу беспорядочным и весьма небрежным, но переписывать статью я все-таки не намерен. Для начала я на некоторое время прерву свой рассказ, чтобы посмотреть в Интернете (из которого я вынул гвоздь, забитый при ремонте квартиры, и который в благодарность за это «ожил») не произошло ли заметных сдвигов в понимании того, что такое электрон. Поскольку мой рассказ я хочу начать словами: никто по сегодняшний день не знает, что такое электрон, но это не мешает нам более ста лет, а по свидетельству археологов и много более, не мешает пользоваться электрическим током. Прочитав с десяток статей, и изрядно этим чтением увлекшись, я могу объединить их под одним заголовком, которому обязан статье Г. П. Петина: «Сто лет назад классик сказал: «Электрон так же неисчерпаем, как и атом». За истекшее с тех пор время наука сумела неплохо объяснить взаимодействие электрона с внешним (для электрона) миром, но что представляет собой сам электрон, его внутреннее устройство, до сих пор совершенно неясно». Начну-ка я рассказ об очень полезных для радиолюбителя, многим, если не всем, знакомых законах Ома и Кирхгофа. И следующей программой будет одна из первых, с которой я познакомился в Linux, но так и не смог «оживить» для своих нужд, а именно, gEDA. Подобно многим современным системам gEDA при запуске открывает менеджер проекта. Сегодня программа русифицирована (во всяком случае, менеджер проекта). Для разнообразия я создаю проект horn. Запустив из менеджера проекта редактор схемы, я в разделе основного меню Добавить выбираю Компонент (или, нажав иконку с изображением логического вентиля на основной инструментальной панели), чем открываю окно диалога. В нем я хочу найти резистор, батарейку и что-то, что позволит мне
Наглядная электроника измерить ток и напряжение. Увы, почти нарисовав схему, я попытался обозначить вольтметр, но в итоге редактор закрылся, оставив меня «с носом». Придется и с этой программой разбираться позже. На очереди программа KTechlab. Совершив манипуляции обычным образом, я получаю в результате симуляции следующую картину: Рис. 1.33. Иллюстрация закона Ома в программе KTechlab Вольтметр показывает напряжение в 10 В, а амперметр ток 1 мА (с полярностью амперметра «не сошлось», но это сейчас не суть важно). Закон Ома гласит, что ток в цепи прямо пропорционален напряжению и обратно пропорционален сопротивлению. То есть, если мы разделим 10 В на 10 кОм, то получим 1 мА. Это же говорит и программа. Добавим еще один резистор, последовательно с уже существующим, и еще один вольтметр, параллельно новому резистору. Запустим симуляцию и получим: Рис. 1.34. Первый закон Кирхгофа в программе KTechlab
Наглядная электроника 31 Как и следовало ожидать, исходя из закона Ома, при увеличении сопротивления вдвое ток должен уменьшиться вдвое. А первый закон Кирхгофа гласит: сумма падений напряжения в цепи должно равняться эдс (напряжению батарейки в данном случае). Сложим показания двух вольтметров и получим 10 В. Второй закон Кирхгофа гласит, что сумма токов в ветвях цепи должна быть равна току, притекающему к узлу (ветвления). После переделок схемы, это положение выглядит так: Рис. 1.35. Второй закон Кирхгофа Как и следовало ожидать, амперметры в каждой из ветвей показывают по 1 мА, а амперметр справа показывает их сумму 2 мА. Этих простых, в общем-то, законов вполне достаточно для понимания всего происходящего в электрических схемах. Например, что у нас получится, если два резистора соединены последовательно? При неизменном напряжении источника питания ток в цепи уменьшится вдвое, если посмотреть на рис. 1.34, то именно это и происходит. Но то же самое произойдет, если мы в схеме на рис. 1.33. вдвое увеличим значение резистора. Попробуйте. Программа KTechlab позволяет в наш проект horn добавить все файлы схем с помощью подменю Add Existing File раздела основного меню Project. Слева на вкладке Project отображаются все файлы, добавляемые в проект. Теперь можно быстро переключаться между схемами и легко изменять значения элементов схемы. Легко можно посмотреть, что происходит при параллельном включении двух резисторов. Они будут эквивалентны одному, вдвое меньшего номинала. Обо всем этом, о действии электрического тока и рассказано в статье, о которой я упоминал в самом начале. Следующий журнал №8 за 1962 год со статьей инженера Е. Овчаренко «Переменный ток» из той же рубрики «Путь в радиотехнику и электронику». Из статьи я приведу только одну выдержку: «Строго говоря, ток, изменяющийся с течением времени по величине и по направлению, является переменным. Однако под термином переменный ток принято понимать такой ток, величина и направление которого изменяются периодически». Мне нравится, что автор, точно и сжато, очерчивает и рамки применения термина и раскрывает сам термин. Действительно, очень важно понимать, что переменный ток это не только изменяющийся по направлению ток, но и меняющийся по величине. Иначе, говоря о сигналах в схеме, трудно понять, как конденсатор, не пропускающий постоянный ток, пропускает сигнал, хотя в схеме нет источника переменного тока - схема питается от батарейки, которая может давать только постоянный ток. И здесь мне хотелось бы упомянуть, поскольку я заговорил о конденсаторе, переходные процессы. Конденсатор в самом простом виде это две пластины разделенные диэлектриком, материалом, который по определению не пропускает постоянный ток (во всяком случае, явно или достаточно большой ток, чтобы о нем говорить). Но если собрать цепь из батарейки, конденсатора, амперметра и выключателя, а затем замкнуть выключатель, то амперметр покажет бросок тока. Схема такого эксперимента выглядит следующим образом:
Наглядная электроника 32 Рис. 1.36. Схема эксперимента в программе KTechlab Если нажимать клавишу, расположенную под выключателем, и наблюдать ток в цепи, то это и будет сущностью эксперимента. Но я не уверен, что получу симуляцию этого процесса. Поэтому несколько модифицирую схему эксперимента. Что мне нужно? Мне нужно чтобы в начальный момент напряжение, подаваемое на конденсатор, было нулевым, а затем разом становилось равно некоторой величине, положим, 5 В или 10 В. И мне хотелось бы видеть ток, протекающий через конденсатор. Для последнего я могу включить резистор последовательно с конденсатором и наблюдать характер напряжения на нем. А для подачи напряжения я могу воспользоваться генератором импульсов. В этом случае схема эксперимента примет следующий вид: Рис. 1.37. Модификация схемы эксперимента Как видно на осциллограмме, ток через конденсатор резко возрастает, а затем постепенно спадает,
Наглядная электроника 33 становясь равным нулю до следующего импульса напряжения от источника импульсов. Таким образом, сопротивление конденсатора постоянному току очень велико (в идеальном случае бесконечно велико), но оно конечно для изменений напряжения, и определяется скоростью изменения. Для переменного тока, в смысле определения данного в статье, сопротивление конденсатора переменному току будет зависеть от частоты тока. Это сопротивление называют емкостным (или реактивным в общем случае), его величина обратно пропорциональна частоте переменного тока, умноженной на емкость конденсатора. Если частоту мы выражаем в привычных для нас герцах, то частота умножается на коэффициент равный удвоенному значению числа «пи» (или 3.14). Вы можете продолжить эксперименты, изменив схему, как показано ниже: Рис. 1.38. Конденсатор в цепи переменного тока На рисунке выше в окне наблюдения верхняя осциллограмма относится к напряжению на резисторе, а нижняя к источнику переменного тока. Как видно из рисунка, конденсатор и резистор для переменного тока образуют делитель напряжения, то есть с резистора снимается часть сигнала генератора. Но то, что хотел показать я это то, как легко проводить эксперименты в компьютерных программах, чтобы понять, что же происходит в реальных схемах! Или я не прав? Завершая тему старых журналов и рубрики «Путь в радиотехнику и электронику», я хотел бы упомянуть о еще одном свойстве резисторов, конденсаторов и индуктивностей. Для переменного тока они все представляют некоторое сопротивление. При этом резисторы - активное сопротивление, а конденсаторы и индуктивности реактивное. Косвенно это проявляется в виде сдвига фаз между током и напряжением в цепи, состоящей из этих элементов. Если цепь состоит из активных сопротивлений, то ток и напряжение совпадают по фазе. Если в цепи есть активное и реактивное сопротивление, то ток и напряжение при близкой величине сопротивлений элементов цепи не совпадают по фазе. Вот как выглядит цепь из конденсатора и резистора в программе KTechlab:
Наглядная электроника 34 Рис. 1.39. К вопросу о сдвиге фаз Напряжение на резисторе отображает состояние тока через резистор, поскольку по закону Ома оно равно произведению тока на сопротивление, а для переменного тока это справедливо для каждого момента времени. Сравнивая осциллограммы на рисунках в отмеченных местах, можно заметить, что напряжение на резисторе (нижний сигнал) и на генераторе не совпадают по фазе. Если заменить конденсатор резистором, то получится следующее: Рис. 1.40. Отсутствие сдвига фаз в цепи с активными элементами
Наглядная электроника 35 gEDA в Linux Вот, как определяются программы EDA в википедии (Интернет-энциклопедия Wiki): «EDA (Electronic Design Automation — Автоматизация Проектирования Электроники) — программное обеспечение для облегчения разработки электронных устройств, создания микросхем и печатных плат. EDA может иметь возможность симуляции разрабатываемого устройства и исследования его работы до того, как оно будет воплощено в «железе». Одной из первых программ разработки электрических схем для Linux, которую я некогда нашел, была программа gEDA. Программа, если я не ошибаюсь, даже входила в дистрибутив ASPLinux9.2. Заглянув на сайт производителя, я скачал последнюю версию, попробовал и несколько разочаровался. Если профессионалов это и устроит, то любителям, как мне кажется, не слишком придется по вкусу. Почему? Вот один из вопросов (и ответ на него) в FAQ, который внесет ясность: «Isn't there a nice graphical (schematic capture) front end so I can just place components and press a "simulate " button? No. The bestyou can do is use GSpiceUI. Есть ли удобное графическое (в редакторе схем) средство, чтобы я мог после размещения компонентов только нажать клавишу «симулировать»? Нет, лучшее, что вы можете сделать — использовать GspiceUI (графический интерфейс для команд симулятора)». Oregano Выше я говорил о неудачной попытке запуска программы. Проблема, которая сразу бросилась в глаза, квадратики вместо букв, связана, я думаю, с кодировкой. По умолчанию я использую кодировку UTF-8 (современная тенденция). Чтобы проверить это, я устанавливаю версию Oregano, не требующую замены библиотек, на компьютере с Mandrake Linux, где кодировка (локаль) СР 1251. Проблема с отсутствием надписей пропадает: Файл Правка Вид Инструменты Свойства Справка О- & 'К *т“|£ % @ й □ Р Р * Библиотека' Default гзреакег Switch! PIT Switch 1Р2Т Thermistor Thyristor Transformer Transformer-up Tnac Trimmer Tnmmer-2 UJT VCCS VCVS IVDC VPULSE VSIN Varistor Zener Просмотр Voltage source, direct current • dennis@denni.homenet.lan U nt tt led. oregano Поместить Рис. 1.41. Программа Oregano на платформе с локалью СР 1251
Наглядная электроника 36 Для работы симулятора требуется поставить программу ЗрасеЗ, и библиотеку libreadline. После их установки работает и симуляция: ^/hoine/dennis/exampleljoregar Ore лпо - Че, еж Рис. 1.42. Симуляция в программе Oregano Если не считать таинственной надписи над осциллограммой, то теперь все работает. Мне не хочется менять локаль на своем компьютере, так что я не буду обращать внимание на те особенности, которые возникают. Кстати, я пытался поставить более позднюю версию, но опять возникает проблема общих библиотек. Сейчас попробую поставить последнюю версию из исходных файлов (не думаю, что это получится), а затем продолжу рассказ об этой программе. Это и не получается из-за расхождения с общими библиотеками. Итак. После установки Spice с программой Oregano можно работать. Правое окно отображает содержимое библиотек компонентов, которые можно устанавливать в окно редактора схемы, нажимая клавишу Поместить, а затем размещая компонент с помощью курсора и левой клавиши мышки. Проблему с отсутствием отображения названий элементов (пока) я решил для себя, используя предварительный просмотр перед печатью (меню Файл, подменю Просмотр печати). Схема приобретает нормальный вид:
Наглядная электроника 37 Рис. 1.43. Окно предварительного просмотра в программе Oregano Я еще раз хочу подчеркнуть: без дополнительных настроек и перестроек библиотек я работаю с очень ранней версией программы, поэтому тот факт, что попытка использовать микросхемы из библиотеки приводит к неработоспособности симуляции из-за отсутствия модели, еще не означает, что не будут работать более поздние версии. Если исключить эти досадные «мелочи жизни», то можно достаточно комфортно работать с программой. Например, даже для меня со старой версией программы доступно многое из мира «резисторов-транзисторов». Qucs Завершить же эту экскурсию в прошлое я хочу одним банальным, но для меня интересным экспериментом Еще со студенческих времен, если я ничего не путаю, я запомнил, что в трехфазной сети при одинаковой нагрузке на фазы ток через нулевой провод не протекает. Я помню векторную диаграмму, которая это хорошо доказывает, но мне ни разу не приходилось измерять этого. Не довелось. Интересно, что мне покажет какая-нибудь из программ в этом эксперименте. Для начала запустим в Linux программу Qucs:
Наглядная электроника 38 Рис. 1.44. Измерение в трехфазной сети при равных нагрузках А теперь посмотрим, что покажет моделирование схемы: acfrequency Prl.i 1 еЭ 6.94e-18-j6.94e-18 1.5е9 6.94e-18-j6.94e-18 2е9 6.94e-18-j6.94e-18 З.ЗеЭ 6.94e-18-j6.94e-18 ЗеЭ 6.94e-18-j6.94e-18 З.ЗеЭ 6.94e-18-j6.94e-18 4е9 6.94e-18-j6.94e-18 4.5е9 6.94e-18-j6.94e-18 ЗеЭ 6.94e-18-j6.94e-18 З.ЗеЭ 6.94e-18-j6.94e-18 Рис. 1.45. Результаты измерения в трехфазной сети Как мне и запомнилось, ток в общем (нулевом) проводе, если отбросить комплексный характер отображения результатов измерения, если перевести на обычный язык, составляет столь малую величину, что реально включенный в нулевой провод амперметр переменного тока, скорее всего, не отклонился бы от нуля, поскольку модель показывает значение с показателем степени -18. Калькулятор при попытке вычислить это значение показывает откровенный нуль. Гвоздь в Интернете Год назад, когда строители делали ремонт в квартире, я уговаривал их не повредить кабель, которым компьютер подключен к Интернету. Они соглашались, делали вид, что внимательно относятся к этой проблеме, но закончилось все, как это выяснилось через год, гвоздем в кабеле. Внешне повреждение выглядело так, как будто кабель не подключен к коммутатору провайдера. Но специалист, которого я вызывал, не обнаружил этого. Появилось предположение, что кабель поврежден, но единственное, чем мог мне помочь провайдер - это заменить кабель полностью, что не устраивало меня, поскольку тянуть его предстояло по всей квартире. Пришлось мне самому разбираться с повреждением, что
Наглядная электроника 39 навело меня на мысль обсудить, конечно, с помощью программ EDA, вопрос об отыскании повреждения в компьютерном кабеле. У меня это кабель UTP САТ5. Что означает, несколько витых пар без экрана с достаточно толстыми жилами. Первое, что припоминается, это то, как я видел однажды «прозвонку» такого кабеля специалистами. На одном конце кабеля была подключена коробочка с разъемом и светодиодами и надписью «Master», на другом похожая коробочка с надписью «Slave». Когда устройство включалось, светодиоды по очереди загорались, что, надо полагать, свидетельствовало о правильной распайке кабеля. Рассмотрим, что можно сделать, для изготовления такого устройства. Пожалуй, можно использовать десятичный счетчик (выводы активизируются в порядке от 1 до 10), тактовый генератор с секундным периодом (например, на таймере 555) и светодиоды, установленные в двух коробочках, разделенных кабелем с витыми парами (в программе Ktechlab): File Edit View Project Tools Settings Help 3 -j m £j SA Component e Sources ii|i Battery С-Fixed Voltage = Ground (OV) € Current Source ~ Voltage Signal «.Current Signal SCCCS SCCVS gvccs Svcvs e Discrete Resistor I Capacitor Diode '«'Inductor К NPN К PNP =Resistor DIP 0* Potentiometer e Switches —Push-to-Make •^Push-to-Ereak : Keypad SPST ::DPST SPDT DPDT Rotary e Outputs QLED Signal Lamp Bidirectional LED Seven Segment о Matrix Display ©Voltmeter ©Ammeter home vlatfimlr cats cats circuit - KTechtab tb Messages Oscilloscope Рис. 1.46. «Прозвонка» компьютерного кабеля в KTechlab На рисунке это плохо видно, но при запуске режима моделирования светодиоды розовеют. Первоначально решив, что так «и положено», я, «подумав над непродуманным решением», меняю значение резисторов с 500 Ом на 100 Ом. В реальной схеме при напряжении питания 5 В ток через светодиоды будет порядка 1 мА. При таком токе реальные светодиоды будут светиться очень слабо. Что же теперь покажет программа KTechlab?
Наглядная электроника 40 Eile Edit View Project Tools Settings Help <6 8 Component © Sources в Discrete c5 Resistor ^Capacitor -t+Diode 'W'Inductor К NPN KPNP SResistorDIP (^Potentiometer з Switches —Push-to-Make ^-Push-to-Break Keypad --SPST ::dpst -SPOT ;DPDT •’’iRotaiy в Outputs OLED 0 Signal Lamp cPBidirectional LED 8 Seven Segment о Matrix Display ©Voltmeter ©Ammeter [Vj Logic Probe SVoltege Probe ^Current Probe в Logic О-Logic Input -CLogic Output Ln-Clock Input { Buffer 4> Inverter 4 AND gate □ cat5.circuit Si mulation Paused *• Messages [t] Oscilloscope Рис. 1.47. Изменения после замены резисторов в программе KTechlab Вот как полезно, оказывается, подумать. И как же «здорово» работает программа. У меня появляется тихое чувство влюбленности в эту программу. Но вернемся к ошибкам. Первое, схема при таком построении нуждается в дополнительном проводе, поскольку я соединил все общим проводом (земля). Конечно, можно использовать, если он есть под рукой, провод заземления. А если его нет? Попробую обойти эту проблему, несколько изменив схему. Не знаю, будет ли это работать, но попробовать стоит. Сущность идеи в том, чтобы использовать «заземленные» выводы микросхемы, которые не активны в момент активизации одного из выводов. Кстати, сейчас я провожу эксперимент, используя двоичный счетчик. На данном этапе это не имеет обсобого значения. Тем более, что пока я размышлял о необходимых изменениях, я подумал, что полезно было бы представить это устройство в другой модификации, используя знакомый мне микроконтроллер PIC16F628A. Но это чуть позже. А сейчас внесем изменения и проверим работу идеи:
Наглядная электроника 41 Рис. 1.48. Проблема лишнего провода Я не знаю, какая модель двоичного счетчика используется программой, поэтому добавил в схему транзистор. Такое решение достаточно хорошо оберегает микросхему от возможных повреждений. Похоже, что схема будет работать. Но проверим это еще раз, используя микросхему К561ИЕ8 (4017): cat5_2 - Multisim - [cat5_2] Не Edit View Race Simulate Transfer Tods Reports Opttons Wridow Hefc D J a El a. -inuiSLSt- - ? ” Рис. 1.49. Проверка простого кабельного тестера в Multisim Схема нарисована для одной пары, но пока это, действительно, похоже на правильную работу. Загорается только цепочка светодиодов, принадлежащая одному проводу кабеля. Таким образом, разместив в одну коробку, которую можно назвать «Master», источник питания (батарейку на 9 В), тактовый генератор, счетчик, светодиоды с соответствующими диодами и резисторами, а в другую коробку только светодиоды, диоды и резисторы (в данном случае D2, D4, D6, D8, R2 и R4) мы получим то, что хотели. Я думаю, что
Наглядная электроника 42 такое решение, даже с применением тактового генератора на микросхеме таймера 555, или отечественного его аналога КР1006ВИ1, получится самым дешевым Но не самым «изящным». Что я имею в виду? Возможность применения контроллера, например, PIC16F628 (думаю, и другие контроллеры могут работать не менее успешно, но я немного знаком с этим, и мне он очень симпатичен). Трудно ли модифицировать схему для использования микроконтроллера? Если с программой KTechlab, то нет. Посмотрите, как просто программируется контроллер в этой чудесной программе: Рис. 1.50. Программирование контроллера в программе KTechlab Необходимый код набирается из готовых блоков, которые выглядят достаточно просто: установить вывод! порта А в высокое состояние, подождать 1 секунду, установить вывод 1 порта А в низкое состояние, установить вывод 2 порта А в высокое состояние, подождать 1 секунду, установить вывод 2 порта А в низкое состояние, и т. д. Собрав с помощью готовых блсков свою программу, ее можно компилировать, получив ассемблерный код и код для загрузки в программатор. Всё. Всё-всё. Вам осталось запрограммировать микросхему и использовать ее. Конечно светодиоды, диоды и резисторы остаются, но сердце устройства — его схема укрыты в одной микросхеме. Вы можете создать печатную плату (хотя бы на бумаге, с нею легче будет спаять схему), а в программе KiCAD и посмотреть трехмерный вид платы, который будет выглядеть примерно так:
Наглядная электроника 43 Рис. 1.51. 3D вид платы в программе KiCAD Окрыленный возможностями этих прекрасных программ, я подумываю о создании более интересного тестера для проверки кабеля UTP. Дело в том, что после ухода специалиста мне пришлось саму выяснять, что произошло с кабелем, и как с этой бедой бороться. Мне очень повезло, что кабель не был перебит, но одна из двух пар кабеля (лучше бы это был кабель с 4 витыми парами) была закорочена гвоздем. Вспомнив все, что приходилось читать и слышать о кабельных повреждениях, я вначале постарался улучшить состояние короткого замыкания. Для этой цели я подключил к закороченной паре источник напряжения с защитой от короткого замыкания, срабатывающей через секунду, а затем стал с помощью мультиметра проводить новые измерения поврежденной пары. После того, как сопротивление в месте пробоя уменьшилось до долей ома, измерение сопротивления с одной и с другой стороны закороченной пары дает два значения, которые позволяют рассчитать расстояние до места повреждения. Я ошибся на 4 см, но этого было достаточно, чтобы исправить кабель, не слишком испортив недавно отремонтированную квартиру. При этом возникло два момента — что если бы характер повреждения был иной, я имею в виду обрыв кабеля? И второй — при восстановлении кабеля мне пришлось сделать «скрутки» на кабеле. И хотя Интернет заработал, но оказалось, что скорость его работы чуть выше модемной. Было обрадовавшись, что кабель восстановлен, я крайне огорчился тем, что скорость работы упала до 30 Кбит/сек. Поскольку я привык доверять специалистам, я стал консультироваться с ними по этому вопросу, стал искать советы «бывалых» в Интернете. В основном советы были ясными - кабель со скрутками можно сразу выбрасывать. Появление проблемы навело меня на мысль — не помогут ли чудесные программы EDA моделировать ситуацию со скрутками витой пары? И хорошо бы ответить на вопрос, действительно ли скорость кабеля будет столь плохой? Можно было бы в дальнейшем разработать несложный прибор для отыскания места повреждения кабеля (если это получится), и провести ряд экспериментов в программах EDA с целью выяснить, как влияет скрутка проводов на качество работы витой пары. Что-то мнение «знатоков» вызывает у меня сомнения. И причина этого проста — с моим скрученным кабелем, потратив еще некоторое время на выявление проблемы, я сейчас имею скорость работы до 6 Мбит/сек (против 30 Кбит/сек)! Возможно, когда-нибудь я этим займусь, а сейчас вернусь к прерванной работе по подготовке материала для будущей книги: к конспектированию (переводу) руководств к программам EDA.
Наглядная электроника 44 Глава 2. Что делать, если нет выбора? Xlab, Windows У меня есть только Xlab. Там. все на каком-то языке, и ничего не понятно.. Я. подключен к Интернету, где могу «скачать» демо-версии или бесплатные программы. Перед тем, как начать писать книгу, я сделал запас бесплатных программ для платформ Windows и Linux. С некоторыми из них мне так и не удалось справиться. Я уже упоминал программу Xlab, которая не захотела работать при напнсаннн обзорной главы. Чтобы выяснить, плоха ли программа, или я совсем плох, я вернулся к программе с того места, где закончил знакомство с ней в прошлый раз - с рекомендации загрузить новую версию. Сайта, на который ссылается программа, на месте не оказалось, и попытки отыскать новую версию программы успехом не увенчались. Естественно, я решил вычеркнуть программу из плана, сказав себе - на нет н суда нет! Но что делать тем, у кого нет доступа в Интернет, кто обзавелся этой свободно распространяемой программой, купив ее надиске? Покупая диски с программами, далеко не знаешь, что ты покупаешь, и, если программа не работает, ты вынужден искать другую. Конечно, когда покупаешь лицензированную коммерческую версию программы, ты обеспечен документацией, технической поддержкой. Но это стоит очень дорого. Что же делать? Попытаться разобраться, действительно ли все настолько плохо. Я возвращаюсь к программе Xlab на то же место, где прервался при написании обзорной главы. То, что симуляция работает со схемой, взятой из примеров, дает основания полагать, что не все так окончательно и бесповоротно плохо. Вначале я откажусь от сложной схемы, выбрав что-нибудь простое, которое и назову prosto: Рис.2.1. Окно диалога создания нового файла в программе Xlab Я совсем не знаю польского языка, но часть названий в меню на английском. Нажав клавишу Сохранить, я попадаю, как мне думается, в рабочее окно редактора схем. Что-то из основного меню понятно (англоязычная часть названий), о чем-то можно догадаться: например, пункт меню Wstaw, скорее всего означает вставку объектов. Есть еще и иконки на инструментальной панели меню. Для начала работы достаточно. Ориентируясь на значок источника переменного напряжения, который мне знаком по другим программам, я переношу его в окно редактора, щелкнув по иконке левой клавишей мышки, повторно щелкнув на рабочем поле, и еще раз щелкнув, но теперь правой клавишей мышки, чтобы показать, что мне достаточно одного источника переменного напряжения. Пока все получается. На инструментальной панели есть иконка резистора, переношу резистор, устанавливаю два резистора, азатем выбираю дважды землю. Я хочу к источнику переменного напряжения подключить делитель из двух резисторов, чтобы посмотреть сигналы на источнике напряжения и на делителе. Задача достаточно простая. Случайно щелкнув в окне редактора правой клавишей мышке на пустом месте, я обнаруживаю всплывающее меню, которое позволяет рисовать соединения (Draw wire), повернуть объект (Rotate), далее не понятная мне команда Odbij poziomo, удалить (Delete), создать новое окно редактирования (New edit window).
Наглядная электроника 45 XLab [C:\X Lab\work\prosto.ntl] jj? ,| File Edit Wstaw View Analysis Options Window Help сэ n I ► и и e © -l ? - ♦ - 4* < к e> ₽lvti \ О т П t> D i> » I> » О |jris:Wstaw element 1 Shift: Rysujprzeviod 1 Ctrl-Z: Cofnij I F9:SyrmJuj . m| | xvi | | a, [ (i 100 000% Рис.2.2. Рисуем простую схему в окне редактора Xlab Если к элементам, имеющим площадки на концах выводов, подвести курсор, то он превращается в стилизованный паяльник, что дает мне основание думать — это инструмент соединения элементов схемы. Щелкаю левой клавишей мышки после превращения курсора в паяльник и перемещаю его к следующему элементу, где еще раз щелкаю по площадке. Все соединения удается провести без приключений (или почти без приключений). По опыту работы с другими программами я знаю, что многие из них нуждаются в установке меток в выбранных для построения графика точках. Справедливо ли это для программы Xlab я не знаю, но метку, на всякий случай, установлю. Нижняя слева иконка на инструментальном меню дает подсказку: Nazwa wkzia. Подсказка мне мало что говорит, хотя я перевел бы ее как «указать название», но рисунок иконки похож на метку, щелкаю по этой клавише панели инструментов и перемещаюсь на рабочее поле чертежа; за курсором следует прямоугольник со знаком вопроса и линией выноса. Щелкаю на линии соединения источника Vic резистором R1. Прямоугольник со знаком вопроса остается на линии, но я не знаю, как задать метку. Удаляю метку «неудачи» и пробую щелкнуть по площадке элемента VI. Другое дело, знак вопроса сменяется именем метки. На радостях ставлю вторую метку на резистор R1, там, где он соединяется с R2, в итоге получая следующее:
Наглядная электроника 46 Рис.2.3. Расставляем метки на схеме в редакторе Xlab и запускаем симулятор Пока все идет достаточно гладко. Но в меню Analysis (Анализ) все по-польски. Пробую первую строку, Wykonaj, что для себя перевожу как Выполняй, но ничего не происходит. Следующий пункт меню выводит сообщение о том, что все хорошо и цепь готова к анализу. Вероятно, это пункт проверки правильности соединений. Следующий активный пункт относится к информации о схеме, затем, насколько я понял, следует добавление формул к схеме, а следом идет Parametric DC sweep, как это следует из надписи окна диалога. Сейчас мне не нужно получать результаты проверки в режиме «качания» параметра, поэтому я нажимаю следующий за ним пункт меню. Рис.2.4. Диалоговое окно режима работы симулятора Xlab К сожалению, название окна диалога ничего не проясняет. Можно предположить, что это анализ переходных процессов, на что косвенно указывает опция Use initial DC solution (Использовать метод начальных параметров на постоянном токе). Тогда следует попробовать подставить в окошко Stop: значение 10m, а в окошке Sampling увеличить значение до 500, и нажать клавишу ОК:
Наглядная электроника 47 XLab - (С \X_Lab\woik\prosto nil] File Edit Wstaw View Analysis Options Window Help su ч ► нii ee±7<=-»-*ut»i> Ins: Dodajformulae I Del: Usun formu’e 1 Ctrl-F9: Powtorz analize I F9: 5ymului FramedText2.* float Angle = 0; float Height si; float LX = -13; float LY-7; ffoatX = -12; float Y-8, irrtAngteLock=0; i irit Color - 7 © Name: FramedTexl2 Class: FramedText <£> Electric Graphic | 100.000% <9 Рис.2.5. Первая удачная попытка симуляции в программе Xlab Окрыленный первым успехом я решаю усложнить схему. В размышлениях о «чтобы такое нарисовать», я вспоминаю ту схему, моделирование которой не получилось при написании обзорной главы. Схема усилительного каскада на транзисторе достаточно проста в графике, достаточно ясна в работе, и при необходимости проверки программы, достаточно удобна. Я часто ее использую (если можно сказать часто о событиях, самих по себе, редких), когда знакомлюсь с программой EDA. Мало того, я почти убежден, что это хороший пример для начала работы с электроникой. Схема однокаскадного усилителя позволяет увидеть на практике и закон Ома, и оба закона Кирхгофа. Она знакомит с работой биполярного транзистора. И на начальном этапе освоения электроники позволяет понять, что достаточно запомнить несколько простых вещей — ток коллектора равен току базы, умноженному на коэффициент усиления транзистора по току, а ток эмиттера равен сумме токов коллектора и базы, чтобы начать освоение транзисторных схем. После создания схемы я повторяю все вышеописанные шаги, включая установку всех опций, как показано на рисунке 2.4, и задания тех же параметров, что и там. Запуск симулятора в том же пункте меню приводит к результату:
Наглядная электроника 48 |&) XLab - [C:\X_Lab\work\const.ntl] File Edit Wstaw View Analysis Options Window Help <a в вд ► и и e ® ± ~ ° t rt> Рис.2.6. Симуляция схемы, показанной в главе обзора Сама схема «немножко не работает», но это дело наживное, а хорошо, что программа работает. Добавление конденсатора между источником переменного напряжения VI и базой транзистора Q1 дает положительный результат. При этом я делаю для себя маленькое открытие — если поместить курсор, например, на резистор R2, курсор превращается из крестика «прицела» в стрелку «указателя». Щелчок левой клавишей мышки выделяет объект. Теперь его можно перетащить мышкой в новое место, мне этого очень не хватало в какой-то момент. А если указатель поместить на значение величины резистора, то после двойного щелчка открывается диалоговое окно изменения параметра: Рис.2.7. Диалоговое окно изменения величины сопротивления Теперь я чувствую себя гораздо уверенней в работе с программой. На графическом экране есть горизонтальная полоса на уровне 18 вольт - след метки, первоначально ошибочно поставленной мной на эмиттер транзистора Q2. Постараюсь избавиться от нее. Для начала попробую повторить то, что сделал с резистором — дважды щелкнуть по метке Q2.#E:V в окне графического вывода. В результате открывается новое окно диалога:
Наглядная электроника 49 Рис.2.8. Диалоговое окно редактора формул Рассматривая окно редактора, я делаю еще одно маленькое открытие. Надпись Etykieta я понимаю как Этикетка и вписываю туда «Напряжение питания». При работе со схемами, как правило, не обращаешь внимания на то, с какими метками выводятся результаты. Но если приходится позже возвращаться к этой работе, или появляется желание поделиться с кем-нибудь удачным результатом, эти мелочи могут стать определяющими. Многие программы могут показывать на схеме параметры анализа. С одной стороны это загромождает схему, с другой стороны повторение проверки с неверными параметрами приводит к большим затруднениям в понимании работы схемы, и к ошибкам в интерпретации полученных результатов. В этом смысле пренебрежение мелочами может привести к «выплескиванию ребенка вместе с водой». Очень важны хорошо обозначенные метки и при публикации схем и графиков. Все это оправдывает мое удовлетворение результатом задания метки: |О XLab - С IX _Lab\work\const.ntl] File Edit Wstaw View Analysis Qiions Window Help Й IS ► » II 6 4 i V = *< » t t Ins: Dodaj fotmPe | Del: Usun fcnaPe | Ctrl-F9: Powtotz anatze | F9:Symuluj 100.000% d' A -V jF |o |6 XV2: [о [о Д. [o [6 dy/dx. 0 Рис.2.9. Изменения в работе со схемой в программе Xlab Попутно отмечу, что добавление разделительного конденсатора привело к появлению сигнала на выходе схемы вполне похожего на «настоящий», если не обращать внимания на то, что снизу есть ограничение, но для его устранения следует либо уменьшить усиление каскада, либо уменьшить сигнал на входе. А как
Наглядная электроника 50 обстоит дело с удалением ненужной кривой? Следующий эксперимент с правой клавишей мышки после установки курсора на метку ненужного графика. Щелчок дает выпадающее меню, в которой есть пункт удаления формулы (Delete formula). После удаления формулы лишняя прямая с диаграммы исчезает. Последний эксперимент в этой серии — изменение сопротивлений R3 и R4. Это меняет усиление каскада и смещает постоянное напряжение на коллекторе транзистора Q2. В меню, появляющемся по щелчку правой клавишей мышки в графическом окне, есть пункт добавить формулу (Add formula...), где можно выбрать, например, метку коллектора транзистора Q1. Если выйти из диалогового окна редактора графики (рисунок 2.8) через клавишу Dopisz, то появляется новый график, показывающий сигнал на коллекторе транзистора Q1. Клавиши с иконками в нижней части графического окна управляют размерами диаграммы и ее положением в окне. Следует добавить, что пункт основного меню Edit имеет два режима — графический и текстовый, что еще больше расширяет возможности работы с программой: a Bl |О XLab - [C:\X_LabVwork\const.ntl] File Edit Wstaw View Analysis Options Window Help 100 000% Рис.2.10. Переход к текстовому режиму работы со схемой Попробуем развить достигнутый успех, хотя бы на уровне разборки основного меню программы. Как правило, этого бывает достаточно для начала работы с любой программой. Есть программы, инструментальная панель которых дополняет основное меню, но базовые операции, насколько я знаю, все разработчики интерфейса программы закладывают в основное меню. Имея набор базовых операций можно начинать работу с программой. Из личного опыта я знаю, что этими операциями подчас и ограничиваешься. Безусловно, если тебе приходится очень долго работать с одной единственной программой, то арсенал команд, операций пополняется по мере того, как ты попадаешь в ситуации, где тебе не хватает либо основных операций, либо времени на выполнение операций, используя только базовый набор. Тогда ты ищешь дополнительные возможности. Но если используешь программу часто, но не только ее, тебе вполне хватает базы и не хватает времени и желания на освоение всех тонкостей. Позже это может мешать тебе в работе с программой, но побороть привычки, это уже совсем непросто. Может быть это справедливо только для меня, но мне ни разу не удавалось дочитать инструкции по пользованию чем-либо до конца, если инструкция имела объем больше 10 страниц. Я начну с первого раздела File:
Наглядная электроника 51 New Ctrl+N Open... Ctrl+O Save Ctrl+S Save as... dose _a z jako now№ graf ikK... Zapisz jako nowy model... Class def. compression (include) Printer setup... Exit Рис. 2.11 Меню работы с файлами программы Xlab В меню работы с файлами почти все имеет обычный вид, характерный для пользовательского интерфейса программ Windows: новый файл, открыть существующий файл, сохранить файл, сохранить файл как, закрыть файл. Затем следует пункт, видимо, записать, как новую графику, следом - записать, как новую модель. Пока с этим рано разбираться, если вообще понадобится. А последний пункт, из разряда непонятных мне, ведет себя, как опция, и может означать добавление определений классов при сохранении файла. До этих глубин я точно не дойду. Затем команды вывода на печать и выхода С ними ясно, если они работают. Я работаю с программой в Linux (под эмулятором Wine), и печатать даже из текстового редактора я не пробовал очень давно - нужно поменять картридж, но я пока не решил, нужно ли мне это? Следующий раздел меню относится к редактированию и в нем только одна непонятная надпись - Odbrj poziomo. Вспоминаю, что при выделении объекта в редакторе схем, нажатием на правую клавишу мышки вызывается выпадающее меню, в котором можно выбрать этот пункт. Что и проделываю. Оказывается, команда отражает объект относительно оси Y. Хотя многие программы имеют отражение и относительно оси Y, и относительно оси X, этого достаточно, если после отражения сделать поворот. Остальные пункты этого раздела носят привычный характер: графический режим, текстовый режим, откат, возврат, вырезать, копировать, вставить, повернуть, отразить, найти, найти следующее, заменить. Я даже не привожу картинку, настолько это очевидно (или кажется очевидным). .Двигаемся дальше к меню вставок (Wstaw): Tekst LiniK Juk Ctrl+D Ctii+L NazwK elementu NazwK modelu коссулкк Urydio napkcia ► Urydio pr№du ► Element bierny ► DiodK ► Tranzystor ► Wzmacniacz operacyjny ► Przei№cznik ► Вгаткк logiczn№ ► £i zet rutnil ► Inny element... Ins Рис. 2.12 Меню вставок программы Xlab Что такое Tekst, я думаю, можно понять без моих объяснений. На моей платформе вставка текста с помощью этого раздела меню позволяет вставить русский текст, отображаемый совершенно правильно и
Наглядная электроника 52 после выхода и повторного входа в программу. Теперь, а лучше бы и раньше, следует вернуться в операционную систему, для работы с которой программа предназначена, в Windows. Иначе можно отнести проблемы работы в другой операционной системе к проблемам самой программы. Итак, Windows. Что же за надпись Linik в меню вставок? Создадим новый файл, в котором попробуем это определить. По виду результата это вставка линии. А следующая вставка Juk - не иначе, как вставка окружности. В открытом окне свойств элементов можно выделить радиус (float Radius), двойной щелчок по которому открывает окно редактора свойств, где можно изменить значение радиуса, задаваемого по умолчанию, как 1, на, предположим, 10. Радиус, действительно, меняется. Nazwk elementu - название элемента. Nazwk modelu - название модели. Koccywkk - вставка вывода. Пока это рано применять. Дойдет до этого, попробуем. Следующий раздел, я затрудняюсь воспроизвести его название, возможно, это Yrydio napikcia содержит, судя по стрелке правее надписи, подменю. К сожалению, я не знаю, как в Windows получить снимок экрана в виде только этого необходимого мне элемента. Вставлять весь экран мне не хочется. Придется перейти в Linux, чтобы сделать необходимые сннмкн экрана. Потом вернусь и продолжу. Staiego Sinusoidalnego Prostok№tnego Sterowane napirciowo Sterowane pr№dowo Рис. 2.13 Подменю меню вставок Xlab И вернулся я в Windows с набором рисунков... судя по всему, предыдущий раздел позволяет добавить источники в схему. Первый из них Staiego представляет источник постоянного тока Двойным щелчком по метке напряжения (по умолчанию это 10) можно открыть редактор свойств, в котором, соответственно, задать нужное значение. Следующий источник - источник синусоидального напряжения (Sinusoidalnego). Затем идет источник прямоугольных импульсов. Свойства этих источников сигналов меняются аналогично вышесказанному, только параметров, конечно, больше. Источник синусоидального напряжения позволяет задать амплитуду напряжения, частоту и фазу. Изменение напряжения и частоты доступно после двойного щелчка левой клавишей мышки по параметру на схеме, а изменение фазы (как и предыдущих параметров) можно сделать с помощью окна свойств, где двойной щелчок по параметру на вкладке электрических свойств открывает окно соответствующего редактора. Источник прямоугольных импульсов имеет тот же набор параметров. Следующие два источника напряжения - управляемые источники, первый управляемый напряжением, второй током. Посмотрим, как выглядит подменю этого раздела: Staiego Sinusoidalnego Sterowane napirciowo Sterowane pr№dowo Рис. 2.14 Подменю источников тока меню вставок Первый - источник постоянного тока (Staiego). Второй - источник синусоидального тока (Sinusoidalnego). Затем идут управляемые источники тока, напряжением и током. Здесь я хочу сделать замечание для тех, кто разбирается в этом меньше меня (если таковые есть). Управляемые источники имеют основной параметр G - коэффициент усиления. Они особенно удобны при создании моделей. Такое впечатление у меня сложилось после чтения руководства к другой программе. И есть разница в применении этих двух источников, касающаяся в первую очередь входной цепи. Если источник управляется напряжением, то входное сопротивление достаточно велико, чтобы на это не обращать внимание. Но если для управления используется источник тока, то присоединять к нему источник сигнала следует через резистор. Иначе программа выводит сообщение об ошибке, и моделирования схемы не будет. С этим я столкнулся сам. Когда внимательно разбираешь ситуацию, то она кажется очевидной, но
Наглядная электроника 53 если источник входит в состав подсхемы, если спрятан внутри проекта, то эта неприятность далеко не столь легко отыскивается. Далее в этой главе приводится простая схема, содержащая источник напряжения и два резистора. Очень советую вам, разорвав цепь между резисторами, вставить в схему сначала источник тока, управляемый напряжением, и проверить работу схемы с резистором между источником сигнала и входом управляемого каскада, и без него. А затем заменить этот каскад вторым управляемым источником и повторить обе проверки. Собственные эксперименты запоминаются лучше. Следующее подменю Elemaitbierny: Rezystor kondensatoi Сеикк Рис. 2.15 Подменю дискретных элементов Как следует из подменю, это вставка резистора, конденсатора и индуктивности. Их величину можно изменить, дважды щелкнув по значению сопротивления, емкости или индуктивности. Полагаю, для пикофарад следует использовать латинскую букву р, для нанофарад - п, для микрофарад - и. Для частоты в мегагерцах буква - М, для килогерц - к. Различает ли программа наличие пробела между цифрой и буквой, я не знаю. Некоторые программы чувствительны к этому, другим это не мешает. Проверяя это синтаксическое правило в другой программе, я несколько раз ошибался, относя неудачу моделирования к этой особенности. И только по прошествии времени убеждался, что та программа игнорирует пробелы. Но в каждой программе, если нет явных ссылок на эту особенность, следует внимательно проверить эту мелочь на самой простой схеме. В сложных схемах любая мелочь может озадачить сверх меры, поскольку в первую очередь обращаешь внимание на крупногабаритные компоненты своих построений. Идем дальше: PiostowniczN? Zenera PojemnotbctowNP Tunelni-.-Tj? Рис. 2.16. Подменю диодов Диоды представлены обычным диодом и стабилитроном (Zenera). Бросив беглый взгляд на них, я решил, что они представлены только идеальными моделями для чисто графического применения. Тем более, что запуск симуляции дал чистое окно без графика. Но я ошибался. Открыв вкладку Electric диалога свойств можно посмотреть параметры стабилитрона. Двойной щелчок по параметру Bv позволяет задать напряжение стабилизации. То, что при этом действительно меняется напряжение стабилизации, легко проверить, нарисовав простую схему из источника постоянного напряжения, резистора и стабилитрона. После запуска анализа, например, переходных процессов, график напряжения иастабилитроне явно отражает эти изменения. Следующее подменю Tranzistoi': Bipolarny NPN Bipolarny PNP JFET z kanaiem N JFET z kanaiem P MOS z I jnaiem N MOS z kanaiem P Рис. 2.17. Подменю транзисторов Оно представлено двумя типами биполярных транзисторов, и двумя типами полевых с неизолированным затвором и каналами типа«п» и «р». Оба основных типа транзисторов, если обратиться к диалоговому окну свойств, имеют параметры, позволяющие транзистор «по умолчанию» превратить в конкретный тип транзистора С одной стороны может показаться, что это не столь удобно, как в других программах, которые предоставляют список транзисторов, из которого легко выбрать нужную модель. Но, как правило, эти списки не содержат отечественных транзисторов. Волей-неволей приходится искать соответствие. С другой стороны любые списки, как бы обширны они ни были, не охватывают всех моделей. Для опытного
Наглядная электроника 54 пользователя предпочтительней иметь дело со списком параметров, чтобы при необходимости иметь свою модель транзистора. Следующее подменю позволяет выбрать идеальный, без привязки к питающему напряжению, операционный усилитель, или более реальный, напряжение питания которого можно изменить с помощью диалога свойств. Это заданное напряжение питание будет ограничивать выходное напряжение: Idealny Idealny z ograniczonym wyjtbciem Рис. 2.18. Подменю операционных усилителей Далее следуют контакторы, первый управляемый напряжением, второй током: _ tei owany napiKdowo Sterowany pr№dowo Рис. 2.19. Подменю контакторов в программе Xlab В диалоговом окне свойств в перечне свойств контактора можно задать гистерезис. Если вам доводилось иметь дело с реле, такая возможность не покажется вам лишней. Реле, не смотря на появление большого разнообразия коммутаторов другого типа, остается достаточно удобным и универсальным компонентом электрических схем. Следующее подменю не нуждается в пояснениях, поскольку относится к элементами цифровых цепей. Их набор достаточно привычен для любого, кто хотя бы раз сталкивался с ними. А последний раздел открывает меню элементов, не вошедших в предыдущий набор: Рис. 2.20. Окно диалога вставки произвольных компонент Клавиши Wstaw (Вставить) и Anuluj (Отменить) помогают при введении в схему нужных элементов. Присмотревшись внимательно, я обнаруживаю в перечне компонент полевые транзисторы с изолированным затвором, варикап и трансформатор. Очень полезные элементы. Следующий раздел основного меню относится к настройкам рабочего окна программы. Можно установить и снять соответствующие опции:
Наглядная электроника 55 * Edytor wiatbciwotbci Pash narzKdzi * Nazwy elementyw * Wiaibdwoibd elementyw v Nazwy model! * koc wki v NapiKcia state v Pr№dy staie Рис. 2.21. Меню опций вида экрана программы Xlab Этот раздел меню имеет только одно подменю, управляющее появлением инструментальных панелей, вверху и внизу: * Main * Qbiekty proste v Elementy analogowe * Elementy cyfrowe v Coordinates Рис. 2.22. Подменю панелей управления Следующий раздел основного меню - Analysis (Анализ). Один из самых интересных для пользователя разделов, поскольку именно симуляция схемы дает возможность перейти от графического вида схемы к ее физической сущности. Перейти от удобного, общепринятого, но описания схемы, к ее функциональному содержанию. Анализ определяет правильность общего замысла, верность выбора значений элементов схемы. Дает возможность задать вопросы вида: «Что произойдет, если менять величину этого элемента в некоторых пределах?». С помощью средств анализа, предоставляемых программой, можно обдумать и схему в целом, и все ее узлы, разобраться в деталях и сделать правильные выводы, принять правильные решения. О некоторых разделах выпадающего подменю я говорил выше. Попробуем разобраться с остальными пунктами: Wykonaj F9 Sprawdu projekt Alt+F9 Ponyw... Ctrl+F9 E4end tange Infoi mation... EfepOltU] .’;П|1 ... Staiopr№dowa Ctrl+D Staiopi №dowa parameti yczna,,, Stanyw nieustalonych... Ctii+T CzKStotli'Aoibciowa... Ctrl+F Zespolona parametiyczna... Ti ansfoi ma* 3 Four tet a .. Рис. 2.23. Подменю анализа программы Xlab Первые два пункта - это выполнение и проверка проекта. Далее есть несколько непонятных и неактивных пунктов, заканчивающихся командой получения информации, за которой следуют виды анализа. Первый из этих видов - анализ на постоянном токе. При выборе этого вида анализа открывается окно, в котором будут отображены результаты анализа. Для этого следует щелкнуть правой клавишей мышки в поле окна, выбрать пункт Add... и в открывающемся окне выбрать нужный узел схемы. Анализ схемы па
Наглядная электроника 56 постоянном токе важен как при определении режимов работы, так и при выборе источника питания. Для иллюстрации анализа на постоянном токе я нарисовал простую схему из источника постоянного напряжения и двух резисторов: Э XL*b - [С \X_Lab\work\pioba3 п«] - [рюЬаЗ ntl (1)] г? File Edit Wstaw View Analyse Options Window Help _ o' X ЙВ H II е$х?=*-*<{КГ>С> >=> Tv ti \ О T |> D D> J) I) У> 100.000% Ins: Wstaw element | Shift: Rysuj przewod | Ctrl-Z: Cofnij | F9: Symuluj Рис. 2.24. Схема для экспериментов с анализом на постоянном токе После запуска анализа на постоянном токе появляется окно вывода результатов наблюдения. После первого запуска оно пустое, но щелчок правой клавиши мышки вызывает появление меню, в котором есть пункт Add..., открывающий диалоговое окно с отображением всех доступных точек наблюдения схемы. Я выбрал первое значения для точки на выходе источника напряжения, второе в месте соединения резисторов. Сразу после выбора точек наблюдения в окне анализа отображаются значения напряжения.
Наглядная электроника 57 Рис. 2.25. Отображения результатов анализа на постоянном токе Следующий пункт раздела анализа основного меню программы позволяет вам провести наблюдение при «качании» параметра. Выше, рассказывая о моделях диодов, я упоминал, что программа позволяет работать с моделью стабилитрона. В программе недолго нарисовать схему включения стабилитрона. Напряжение стабилизации я задаю в окне свойств, на вкладке электрических свойств, 3.2 вольта. При изменении добавочного сопротивления меняется ток, протекающий через стабилитрон. Не помню, чтобы я видел, как при этом будет меняться напряжение стабилизации. Ниже приведен пример графика зависимости напряжения на стабилитроне от изменения сопротивления R1 от 100 Ом до 10 кОм. При выполнении этих несложных построений я обнаруживаю, когда пытаюсь задать напряжение стабилизации, что я «счастливо» удалил редактор свойств. В какой-то момент он мне мешал, я щелкнул по клавише Закрыть, а теперь не знаю, как до него добраться! Видимо, программа спрашивала — скрывать ли окно впредь, а я по привычке щелкать, не читая, согласился с этим предложением. Выйти из неприятного положения помогает раздел View основного меню, первая опция которого после того, как я ее снимаю и вновь устанавливаю, открывает нужный мне диалог. Но лучше бы я читал все сообщения программы! Что нужно для параметрического анализа? Выбираем этот пункт меню. В открывающемся диалоговом окне вносим значения в точки Start и Stop (100 и Юк, соответственно). Нажимаем клавишу ОК и получаем результат:
Наглядная электроника 58 р XLab - [С \X Lab\work\test ntl] - ? File Edit Wstaw View Analysis Options Window Help ев e © м °hh< i>p яti ti \о т о i> D [Ш>и> Рис. 2.26. Параметрический анализ на постоянном токе в программе Xlab И все-таки меня раздражает необходимость столь сложного общения с окном свойств. Я пытаюсь просмотреть файлы инициализации, которые создаются с каждым проектом, но это не помогает. Чтобы не затягивать работу, приходится поступать как всегда — распаковываю программу во временную папку, копирую все файлы программы, перезаписываю их в папку, куда поместил программу. Благо этого достаточно для работы программы, и ее не нужно долго устанавливать. Результат положительный - окно на месте. Уф! Для следующего вида анализа лучше заменить источник постоянного тока источником прямоугольных импульсов (используя меню вставки источника сигнала). Для удаления источника постоянного тока его можно выделить курсором (подвести курсор в виде стрелки к компоненту и щелкнуть левой клавишей мышки), он меняет цвет на красный, и нажать клавишу Delete на клавиатуре. После запуска анализа переходных процессов (Stanyw nieustalonich...) появляется меню, как на рисунке 2.4, в котором можно задать время остановки в 10m. После нажатия на клавишу ОК появляется окно графического результата анализа:
Наглядная электроника 59 Р Xlab - [C:\X_lab\worklproba3.nll] File Edit Wstaw View Analysts Options Window Help ай ► н и e @ j. т =• чь- # u i> e> -° Tv Ti \ О т G |> D О D D’ D |lns: Dodaj formu’e | Del; Lfsun formu’e | Ctrl-F9: Powtorz analize | F9; Symukjj 100.000% XYJ; I5 I5 XY2: [O jo A- [O [O dy/dx: 0 Рис. 2.27. Результаты анализа переходного процесса в схеме Далее в меню следует анализ на переменном токе. Для этого вида анализа я нарисую другую схему. После выбора вида анализа и задания диапазона изменения частоты от 1 Гц до 100 МГц клавиша ОК позволяет увидеть графический результат анализа. Этот вид анализа позволяет вывести в окно графики амплитудно-частотную характеристику схемы или каскада. Возможно, есть способ привести это к виду логарифмической шкалы по X. но я пока не знаю, как это сделать. Поэтому результат выглядит для меня несколько непривычно: ? XLab - [C:\X_Lab\wotk\xlab_problem1 .nil] File Edit UWaw View ftiJyss Options Window Help Рис. 2.28. Графический вывод анализа на переменном токе Если щелкнуть правой клавишей мышки, когда курсор в окне графического вывода, то в выпадающем
Наглядная электроника 60 меню можно изменить точку наблюдения или скопировать график в буфер обмена. Клавиши инструментального меню графического окна в нижней его части позволяют уменьшать и увеличивать изображение, перемещать его вверх-вниз и т. д. А мне. в рассказе о видах анализа, осталось привести пример еще двух видов полезных на практике. Предпоследний вид - «качание» параметра на переменном токе. Для этой цели я воспользуюсь изменениями резистора R1, резистора обратной связи, в диапазоне значений от 10 кОм до 100 кОм. Посмотрим, что покажет анализ: Рис. 2.29. Анализ девиации параметра на переменном токе И, наконец, последний вид анализа Transformata Fouriera... Думаю, это Фурье (или гармонический) анализ. Имея дело с усилителями, особенно усилителями мощности, проверить нелинейные искажения усилителя очень полезно. Не меньше пользы принесет проверка с помощью Фурье анализа выходного каскада радиопередающего устройства. При сильных искажениях излучение на частотах гармоник, хотя я не специалист в этих вопросах, не только бесполезная трата мощности выходного каскада, но и дополнительные помехи «в эфире». Этот пункт меню не активизировался при работе со многими из предыдущих схем. Но после черчения каскада на транзисторе он стал доступен. Параллельно я осуществляю анализ переходных процессов и анализ на переменном токе. Где нахожу, что для логарифмического вида графического вывода достаточно поставить эту опцию в диалоговом окне анализа на переменном токе. Выясняю также, что кроме обычного отображения сигнала можно вывести вид фазовой характеристики, что для усилителей весьма нелишне, и еще несколько видов графики. Можно выводить разные виды анализа (или разные графики) в разных окнах:
Наглядная электроника 61 Рис. 2.30. Фурье анализ одного каскада усилителя на транзисторе Мы разобрались со многими пунктами меню. Убедились, что с программой можно работать не менее успешно, чем с другими программами. Нужно только проявить немного терпения. Мне хотелось бы добавить к этим экспериментам один или несколько, как получится, примеров работы с цифровыми схемами. Вот простейший пример: *3 tv Ti \ О Т О l> D О D D51> Xlab [C:\X_Lab\work\proba4.nll] Qile Edit Wjtaw View Analysis Options window Help |3W Щ ► H II © © -L 7 100.000 % Рис. 2.31. Пример построения цифровой схемы в программе Xlab Ins: Dodaj formiPe | Del: Usui formu7e | Ctrl-F9: Powtorz anaSze | F9: SymJuj X¥t jl37 324u (3.85873 XY2: |b |o *- |l37324u (3.85873 dy/dx: 125M 1° Одним из часто применяемых на практике схемных цифровых решений является построение тактовых генераторов с использованием цифровых инвертирующих вентилей. Когда-то мои попытки моделировать
Наглядная электроника 62 такие построения далеко не всегда получались к большому моему огорчению. Связано это, как я полагаю, с тем фактом, что при генерации работа схемы основана на физических, а не логических свойствах цифровых вентилей. Цифровой вентиль, инвертор или схему НЕ-И, можно превратить в усилитель, что в некоторых случаях оказывается полезным, и открывает дополнительные возможности при создании собственных конструкции. Схема, приведенная ниже, взята мной из книги Р. Фелпса, но это «классическое» схемное решение. В оригинале один из конденсаторов заменяется кварцевым резонатором, однако даже в профессиональной практике достаточно часто обходятся без этого: Рис. 2.32. Моделирование синхрогенератора в программе Xlab Что сказать? Превосходная программа. Она не заработала у меня сразу, но немного терпения, немного времени, и все становится на свои места. Я не исследовал полностью все возможности программы, думаю, не более 10-20% известно мне в настоящий момент. Но дальнейшая работа с программой требует конкретных задач А у меня нет сейчас ни одной задачи, кроме рассказа о программах EDA. И Xlab занимает достойное место в ряду этих полезных средств работы с электроникой. Жаль, что сайт, указанный в сведениях о программе, не отыскивается: О piogiariiie XLab 2.4.0(08 11 2001) (С) 1998 by Plot г Kotaczkowski labsol I @el emen ty pl http: //w ww. xlab prv. pl DpsUybucja dgn - Pracownia Projektyw i Przetwarzania CAD ul. Wolska 113/31.01 -235 Warszawa Licencja Kopia nie jest zarejeshowana. I • Jl Рис. 2.33. Информация о программе Xlab
Наглядная электроника 63 Есть еще одна про грамма, которую я знаю давно, она работает на разных платформах, но я с ней познакомился, когда начал работать в Linux. Меня интересовало, есть ли для Linux что-то похожее на Windows программы. Нашел я только программу, или систему, которая называется gEDA. Я попробовал работать с ней. Работа получалась, но в основном в плане изобразительном. Позже появилась новая версия, но, к сожалению, я не достиг большего. Сегодня на моем компьютере почти последняя версия этой программы, но и сегодня у меня получается не больше, чем несколько лет назад. Попробуем разобраться в этом. Менеджер программы, существовавший в предыдущих версиях, уж не знаю, почему, в последней мною полученной версии, отсутствовал. Его я «приспособил» от предыдущих версий. После запуска командой де da появляется окно менеджера системы. gEDA Suite Q ЕЬ И Рис.2.34. Окно менеджера системы gEDA В данный момент выбор действий ограничен единственным пунктом меню Проект, подменю которого ограничено тремя возможностями - создать новый проект, открыть существующий проект или выйти из программы. Создадим новый проект, который назовем problem. Есть некоторое неудобство в диалоге создания проекта, приходится вручную прописывать путь к проекту, если он находится не прямо в вашей домашней папке. Но, с другой стороны, при работе нет нужды размещать проект где-то глубоко в недрах своих документов, да и работа над проектом требует времени, можно согласиться с авторами проекта, что их подход вполне благоразумен. Поскольку в работе с программой для меня много непонятного, я хочу вначале рассмотреть примеры и прочитать руководство, и то, и другое я получил при инсталляции программы. Поисковик отчего-то не находит нужных мне файлов, тогда я просматриваю установочный пакет, благо в Linux это можно сделать достаточно просто, используя архиватор файлов. При просмотре каталога /usr/share я нахожу папку gEDA с вложенной папкой examples. Теперь я распаковываю (и это в Linux возможно) установочный пакет в папку проекта, выбираю только примеры, а остальное удаляю. С рассмотрения этих примеров я хочу начать выяснения тех проблем, что, как я решил, у меня возникли. Менеджер не позволяет открыть файлы примеров, поэтому я открываю проект, который только что создал. В этой «среде обитания» все файлы должны открываться. Вначале, как и полагается любопытному схемотехнику, я открываю файл схемы, ориентируюсь на расширение файла .sch. Немного смутило отсутствие привычной команды Открыть в разделе Файл основного меню, но есть Импорт, попробуем так. После выбора файла он появляется в левом окошке дерева проекта
Наглядная электроника 64 Рис.2.35. Схема из примеров, полученных с программой gEDA После импорта файла и выбора команды Открыть (теперь команда появилась) в разделе Действия основного меню я получаю рамку и штамп, затем, выбрав Файл-Открыть уже в окне редактора, наконец, открываю схему. То, что схему я могу нарисовать, я уже понимаю, это мне удавалось сделать и в дни первого знакомства с программой. Но меня интересует, например, работа симулятора. В установочном комплекте есть симулятор. Но у меня ничего не получалось с запуском симуляции. В окне редактора схем нет пункта симуляции схемы. Хотя нечто полезное для себя я нахожу - возможность сохранить схему в формате .png. Закрыв схему, я возвращаюсь к менеджеру проекта и в разделе Действия нахожу Create SPICE netlist (Создать SPICE netlist). После этого в дереве проекта появляется файл с расширением .cir в ветке Simulatons. Очень хорошо. В разделе действий, если выбрать этот файл есть возможность запустить симулятор SPICE. Запускаем... Мелькает сообщение, в окне вывода появляется несколько записей, но это совсем не то, что мне нужно. Симулятор ngspice, я проверил, работает. А увидеть результаты своего плодотворного труда я, увы, не могу. Обращаемся к руководству по gEDA. Будем последовательно повторять все советы, которыми нас снабдили создатели программы. Само руководство я добавлю в Приложение, а пока выберу необходимое. Немного озадачивает меня начало: Текущая версия gEDA предназначена для помощи в работе над разводкой (РСВ layout). Она содержит механизм создания или загрузки схем gschem и коллекцию полезных средств для экспорта схем в другие весьма полезные инструменты. Если так, то лучше перейти сразу к разделу работы с РСВ, который начинается с установки, но установку я сделал из пакета rpm, и полагаю, все было установлено правильно, и далее: Все устройства, которые вы хотите получить в РСВ должны иметь Uref атрибуты. Цоколевки (footprint), которые вы хотите использовать в РСВ обозначаются атрибутами footprint. Будьте внимательны с атрибутами Uref пате, значение и устройство не должны содержать символа пробела. Я не уверен, что не ошибусь с проверкой атрибутов, по причине чего выбираю файл из раздела
Наглядная электроника 65 примеров. В разделе Действия выбираю (там единственный пункт) Open (Открыть), запускается программа РСВ, но в ее окне пусто, а в окне журнала РСВ единственное сообщение о неправильном формате файла. Помня о переходе к редактору схем, я открываю файл примера в самом редакторе разводки. Это помогает: РСВ Edit View Settings Select Butter Connects Into Window Unnamed 4900.00 4000.00 mil vlew=component grld=25.0:0 45_/ llne=10.0 vla=40.0(20.0) clearance-10 0 text-100% butter-#! Рис.2.36. Проект в окне редактора РСВ из состава gEDA Не так много мне удалось достичь в работе с системой gEDA, особенно это касается работы симулятора ngspice - части проекта, но сегодня получается значительно больше, чем несколько лет назад, когда я впервые пробовал работать в gEDA. Вопрос с симулятором, мне кажется, более сложен, чем я предполагаю, поэтому я, пожалуй, выделю отдельную главу, посвященную работе с симулятором. А сейчас продолжим движение по миру программ EDA.
Наглядная электроника 66 Глава 3. Для самых начинающих. Проект «Новый год» Каждый раз, когда я пытаюсь найти нужный мне файл, я вспоминаю крылатую фразу: «Ударим автопробегом по бездорожью и разгильдяйству!». Не то, чтобы все было совсем плохо. Нет. Я пытаюсь систематизировать все свои документы, раскладываю их по папкам, делаю копии особенно значимых документов, наученный горьким опытом крушения операционной системы. У меня есть даже папка с названием «Справочник», где я держу все справочные листки по элементной базе, с которой приходится сталкиваться. Но эта чудесная «папочка» имеет свойство перемещаться с места на место по разным причинам. Если запустить поиск, то отыскание этой папочки займет достаточно много времени, что, в свою очередь, приведет к очередному перемещению справочника. Бездорожье моего компьютера тщательно поддерживается мной на протяжении многих лет путем набивания домашней папки таким количеством разноплановых материалов, что она успевает распухнуть до размеров в сотни мегабайт за месяц работы. А наводить порядок я люблю, ударив автопробегом, то есть - снести все, и начать жизнь заново. Особенно сильно бьет автопробег по моему разгильдяйству: каждый раз, когда я начинаю новую жизнь, я не нахожу в ней ни одного письма, полученного в прошлой жизни - забываю сохранить почту перед обновлением. И если бы только это... Решив использовать компьютер в качестве виртуальной лаборатории для изучения электрических схем и разработки своих проектов, вам следует задуматься о том, как организовать это наилучшим образом. Компьютер, или скорее программы уже установленные на компьютере, или которые можно установить на компьютере - все зависит от вашей операционной системы и ваших финансовых возможностей - компьютер готов помочь в осуществлении различных вариантов обустройства. Можно утверждать, что есть наилучшие формы организации работы, и это справедливо. Можно утверждать, что эти формы вас не устраивают, и это тоже будет справедливо. Лично я склоняюсь к мысли, что тот вариант, который приносит вам больше пользы, вариант, который наиболее комфортен для вас, и есть наилучший вариант именно для вас. Об одном из возможных вариантов организации своей компьютерной лаборатории пойдет речь в этой главе. Обновляя версию Linux для работы с одной из программ, я забрел на форум в поисках ответа на вопрос, как сменить драйвер видеокарты, где увидел чудесную фразу: «Хочу изучить Линукс, с чего мне начать?». Вопрос правильный, хороший и уместный, но изучение Linux с такой постановкой задачи, как мне кажется, потребует многих лет работы даже для специалиста в области программирования и создания операционных систем. Поэтому организацию работы за компьютером в лаборатории радиолюбителя самое разумное начать с определения и постановки задачи, с планирования своих намерений. Любая операционная система, a Linux, особенно, приходит с некоторым встроенным набором средств для работы с текстом. Почему Linux особенно, потому что в любом дистрибутиве вы обнаружите полный пакет офисных программ, а во многих и не один, содержащий достаточно мощные средства обработки информации. И не забывайте, что ваш интерес к практическому радиолюбительству (или «электронолюбительству») не избавляет вас от необходимости вести некую офисную часть своей работы, даже если вы не называете ее так: нужно нарисовать схему, составить список деталей, подсчитать стоимость покупки. Мне приходилось выполнять разную работу. И первое впечатление от новой работы не всегда было правильным. Я не люблю скучную работу. Я не люблю работу, прямо не связанную с текущим интересом. Не люблю тратить время на чтение инструкций и руководств, на написание инструкций и руководств, мне становится скучно, когда я сталкиваюсь с такой частью работы. Но со временем я стал понимать, что скучной работы не бывает, чем бы вы ни занимались, и что, какой бы ни была интересной работа, ее всегда можно превратить в скучную жизнь возле этой работы. Очевидное с точки зрения «вообще» подобное утверждение забывается, едва «вообще» превращается в нечто конкретное. Например, вы разработали чудесную схему любопытного устройства, и вам не терпится воплотить это в реальную конструкцию. Любой нормальный человек в подобной ситуации быстро «сляпает» из деталей все, что нужно, «утопчет», что получилось, в подходящую коробочку, и будет наслаждаться результатом. А что советую я? Спланировать, организовать, начать с офисной части этой работы... Ну, скажу я вам, чудаков еще хватает! Что же, в качестве чудака, я советую вам из офисной части работы за компьютером радиолюбителя? Самый простой офис - это блокнот в Windows или текстовый редактор в Linux (в докомпьютерную эпоху это соответствовало листу бумаги и карандашу). Записываем, что мы хотим сделать, например, делаем запись: «Собрать макет устройства X». Для этого нам потребуются некоторые ресурсы в виде транзисторов- резисторов, микросхем, соединительного провода, макетной платы, флюса, припоя, паяльника и т. д. Часть этих ресурсов есть, но часть может отсутствовать. Следует составить спецификацию схемы, выделив наличные элементы (или отсутствующие) и добавить этот необходимый для работы ресурс. А финансы? И этот ресурс следует добавить. Кроме того, никто не располагает неограниченным временем - ресурс следует учесть. Рабочее место. Занимаясь электроникой, приходится выполнять разнородные виды работы: чертить, паять, налаживать, мастерить «обрамление» готовой платы и тому подобное. Разные виды работы, разные
Наглядная электроника 67 рабочие места. Организация рабочего места совсем не маловажный фактор: резистор размером 1мм на 0.5 мм легко затеряется среди кусков фольгированного стеклотекстолита и разбросанных там и тут сверл. Следует учесть и этот ресурс. Если я вас еще не убедил в необходимости обустройства нормального офиса за компьютером, то предупреждаю, вы станете похожи на меня, а мне бы этого не хотелось. И, давайте, а я постараюсь показать, что это тоже интересно, рассмотрим конкретный пример разработки, скажем, переключателя гирлянд для новогодней елки (благо дело идет к Новому Году, и на многих палатках возле метро я видел новогодние украшения) в среде Linux, моей домашней среде обитания. К новогоднему проекту вплотную примыкает еще одно пожелание, обнаруженное мною на форуме. Если не забуду, то вернусь к нему: Собираю светильник на 4 светодиодах. Хочу сделать чтобы они плавно переключались - один тухнет, другой загорается. Проблема в том. что схема должна быть компактной - места мало (глухой цилиндр d35xl0). В идеале сделать это на микросхеме. Начинаем проект «Новогодняя гирлянда». Я буду использовать офисный пакет из состава KOffice 1.6. Первым делом я открываю редактор KWord (книгу я пишу в OpenOffice.org Writer), в котором напишу: Проект «.Новогодняя гирлянда». Что я хочу? Хочу сделать елку красивой в Новогодний праздник. Единственная гирлянда, которая работает более двадцати лет. не помешает, но основой будет новая гирлянда — я назову ее «Вальс под водопадом!». Как я себе это представляю? Огоньки на елке «струятся» сверху вниз, затем замирают, и начинают кружиться, то в одну, то в другую сторону. Затем снова водопад из праздничных огней! KWord [изменён] L. IS (X Файл Правка Вид Вставка Формат Врезка Таблица Сервис Настройка Справка 0 D й Й Й DFj С Q 150% - Обычный * § В 'Д. М ^1 S В / U A kt Ml L 1 ,зс" 1 ,40, । 50 • 1 ,6С" 1 1 701 । 1 801 1 ,90, ’ ,100, 1 'И0, 1 ,120, 1 ,130, 1 1140, । ,150, 1 'I®®' 1 ,17°' । iso- 1 Структура д _ * К??Текс— ё •istl + <В^Рису— г ..... * ЙТабл... -=1 _ ♦^врез... г Проект «Новогодняя гирлянда». ‘Г?1 * НЁ^бъе... Т Что я хочу? - Хочу сделать елку красивой в Новогодний праздник. Единственная гирлянда, которая § работает более двадцати лет, не помешает, но основой будет новая гирлянда - я назову 2 ее «Вальс под водопадом!». 2 Как я себе это представляю? Огоньки на елке «струятся» сверху вниз, затем замирают, и ё начинают кружиться, то в одну, то в другую сторону. Затем снова водопад из 2 праздничных огней!| Страница 1из1 Э ВСТАВКА 150% Миллиметры (мм) Рис. 3.1. Текстовый процессор Kword из графической среды KDE Описав, что я хочу получить в результате работы, я хочу «как-то формализовать» все вышеизложенное. Вначале я хочу определиться, как я буду делать, поскольку для создания схемы можно использовать реле, можно построить схему на транзисторах, можно применить цифровые микросхемы, а самое лучшее, использовать микроконтроллер - задача, явно, для него. Реле понадобится, как мне кажется, достаточно много, а они не дешевы. Кроме того, хотя маломощные реле работают достаточно тихо, но шуметь схема будет. И использовать реле есть смысл тогда, когда используются лампочки на 220В, в чем я пока не уверен. Более того, я почти уверен, что буду использовать светодиоды. Проходя по переходу в метро, я неоднократно видел, как предлагают игрушки, сверкающие огоньками, вероятнее всего, на светодиодах. Хочу светодиоды. Для работы со светодиодами подойдут транзисторы, цифровые микросхемы, микроконтроллер. Схему на одних гранзисторах сделать можно. Во всяком случае, «на вскидку» это не кажется
Наглядная электроника 68 неразрешимой задачей, но, сколько понадобится транзисторов? Похоже, очень много... Прежде, чем двигаться дальше, я хотел бы «визуально» понять, что я хочу? Нарисую-ка я елку с гирляндами. Для этого подойдет графический редактор из состава того же офиса. Можно открыть его отдельно, а можно воспользоваться услугами единой «Рабочей среды Koffice» Рис. 3.2. Графический редактор в среде KOffice Я воспользовался редактором Krita, запускаемым нижней клавишей инструментального меню с надписью «Рисунок». Елка получилась не слишком красивая, но и я не художник. Елка будет небольшая. Думаю, хватит четырех гирлянд для водопада и трех для вальсирования. Всего семь гирлянд. Если расположить светодиоды на расстоянии 5 см друг от друга, то понадобится, не знаю, получится ли эффект «бегущих и кружащихся огней», но мне понадобится для водопадной гирлянды 150 : 5 = 30 светодиодов, или 120 для 4 гирлянд водопада (золотой, однако, водопад). И для вальса еще, приблизительно, столько же. Итого, более 200 светодиодов (уже кружится). Пришла пора посмотреть, что есть из светодиодов в продаже? Поскольку Интернет у меня подключен, осталось в Web-обозреватель ввести координаты www.chip- dip.ru. В разделе светодиодов мое внимание привлекает группа светодиодов с приставкой Super, информацию о которой я загружаю на рабочий стол. Интересная группа светодиодов, хотя меня не устраивает их конструкция. Конструкция меня не устраивает до тех пор, пока я не взглянул на их цену. После этого мне не понравился и их цвет. Заглянем в раздел сверхярких отечественных светодиодов. Скачаем и сохраним файл с их данными. Конструктивно они более удобны, чем предыдущие, но цена... Нет, пожалуй, меня не устроит и конструкция этих светодиодов. Пойдем от противного — от цены. Самые дешевые светодиоды стоят около двух-трех рублей. Даже при такой цене светодиода стоимость гирлянды достаточно высока. Но, нет худа без добра, это позволит мне свободней подойти к выбору блока управления. В начальный момент меня смущала разница в стоимости микроконтроллера и нескольких цифровых микросхем. Сейчас, когда основная стоимость проекта приходится на гирлянды, разница в несколько десятков рублей, смущавшая меня раньше, решающего значения не имеет. Пока я рассматривал каталог светодиодов, я обзавелся несколькими документами в формате pdf. Временно я положил их в папку с надписью «Светодиоды» (с этого у меня всегда начинается складирование полезных документов). Что же, на данном этапе я знаю, что я хочу, я знаю, как я хочу это сделать, и могу оценить стоимость проекта. Все в первом приближении. Запишем это в тот «листок», что лежит под рукой: 1. Семь гирлянд из светодиодов — четыре для водопада, три для вальса. 2. Общее количество светодиодов: 200 штук по цене 2.5 руб. 3. Управление: либо цифровые микросхемы, либо микроконтроллер. Для платформы Linux есть программа EDA, позволяющая работать как с обычной элементной базой, так и с микроконтроллерами — KTechlab. Разумно, пожалуй, использовать ее для разработки двух версий
Наглядная электроника 69 проекта. Затем можно сравнить обе версии, решив, какая из них интереснее. С некоторыми вопросами слегка прояснилось. В моей домашней папке появилось несколько папок, относящихся к проекту, и, если я не хочу создавать «бездорожья», я попробую организовать свою работу по- новому. Есть офисные программы, и в Windows, и в Linux, для создания баз данных. Я не только о них слышал, но даже однажды (или дважды) пробовал создать базу данных для своих нужд, но быстро отказывался от этого по причине спешки. Сейчас, начав новую жизнь, начну создавать базу данных проекта. Запускаем программу Kexi (Access в Windows), создаем файл проекта и таблицу для проекта: Г I Рис. 3.3. Создание таблицы для базы данных проекта Пока я еще смутно представляю, что именно я хочу сделать в организационном плане, поскольку с базами данных, как уже говорил, активно не работал. Можно углубиться в чтение литературы по этому интересному вопросу, но уйдет много времени, а мне не хотелось бы тратить на это «много» времени. Попробуем сделать «по месту». Кроме таблицы есть запросы и формы (о сценариях пока и думать не хочу). Я представляю свою базу данных в виде некоторой большой картотеки с несколькими ящичками, стоящими на нескольких полках. Вероятно, форма должна соответствовать таблице и организовывать разделы картотеки? Попробуем создать форму:
Наглядная электроника 70 new year - Kexi Файл Правка Вид Вставка Формат Данные Сервис Окно Настройка Справка Q м л 51 (ЯЦТаблицы Оcontent • Запросы й Т1 Формы Открыть ГЗ Изменить ^""1 ,£j Сценарии rnainform gT| content Название в базу Содержание в базу autoField (unbound) Внешь облас Рис. 3.4. Создание формы для базы данных проекта Создание формы базы данных лично мне напоминает аналогичное создание формы в средах программирования. Но там я немного представляю, что делать дальше с формой, здесь же не ведаю, не понимаю. Обычно в схожих ситуациях помогает рассмотрение примеров, если они приходят вместе с программой. Попытка загрузить пример мне ни чуть не помогает. Но пример очень красочный. Раскрасим и нашу форму. й ш к Рис. 3.5. Изменение цвета формы Занимаясь раскраской, я нажал правую клавишу мышки, когда курсор находился на клавише Название в базу. В выпадающем меню появился пункт Назначить действие. После раскраски я выбираю этот пункт меню и получаю предложения по назначению действий кнопке:
Наглядная электроника 71 Рис. 3.6. Перечень возможных действий при нажатии клавиши А не поможет ли нам это? По прошествии часа разборок я с удивлением для себя выясняю, что все гораздо проще. А именно: запускаем программу Kexi, открываем левую панель, если она закрыта, с помощью вкладки слева, при наведении курсора на которую появляется надпись «Проект»: Рис. 3.7. Создаем новую базу данных проекта Если теперь щелкнуть левой клавишей мышки по выделенной надписи «Таблицы», то в выпадающем меню появится пункт Создать объект: таблица. Нажав на этот пункт меню левой клавишей мышки, мы получим таблицу. В ячейках таблицы можно ввести нужные нам сведения о проекте, например: название, место расположения, аннотация, и, я позволю себе это, рисунок. Все выполняется обычным для работы с таблицами образом, то есть, выделяется ячейка (вначале Имя), куда вписывается назначение ячейки «Название проекта», вписывается просто введением текста с клавиатуры; в следующей ячейке указывается тип данных, в данном случае «текст», который появляется после щелчка по ячейке. После щелчка по следующей строке вводим новое назначение ячейки «Место расположения», и тип данных «текст», и т. д. С
Наглядная электроника 72 рисунком поступаем следующим образом. Ячейка «Тип данных» имеет справа кнопочку выбора, нажав на которую, можно выбрать тип данных - объект. И в завершение построения последняя ячейка «Дата» с типом данных - дата и время. Создание таблицы закончено. Теперь обычным образом, скажем, щелчком по иконке с дискетой на инструментальной панели, сохраняем таблицу, назвав ее new_year_tab в появившемся окне диалога сохранения, соглашаемся добавить первичный ключ, и аналогично создаем форму, выбрав в левой панели проекта раздел «Формы». Если присмотреться к появившейся справа панели свойств объектов, то можно заметить еще две вкладки. Следующая вкладка приводит нас к созданию связи формы с ее содержанием. Для этого выбираем в графе Источник данных формы вновь созданную таблицу, и следуем инструкции ниже, то есть, перетаскиваем пункты таблицы на форму. Новая база данных - кех) G ffi В Файл Правка Вид Вставка Формат Данные Сервис Окно Настройка Справка Q к 0К>Гйи gi OKI и □□□» Рис. 3.8. Новая форма базы данных проекта После перетаскивания разделов таблицы на форму их можно поправить: изменить размеры полей, переместить на другое место. При перемещении работает и перетаскивание мышкой, и смещение с помощью курсорных клавиш клавиатуры. Осталось сохранить форму, назвав ее new_year_form. Теперь можно закрыть обе боковые панели и перейти от режима конструирования, где мы проделали всю подготовительную работу, к режиму просмотра данных. Я делал это с помощью клавиш на инструментальной панели, а можно из основного меню через пункт Вид, где есть подпункты Данные (куда нам надо) и Конструктор (где мы есть). Выбираем Данные и оказываемся на месте. Можно изменить размеры обычным образом, чтобы удобнее расположить форму на экране, а затем вписать свои первые данные, как показано на рисунке ниже. Для вставки рисунка щелкните правой клавишей мышки в окне, отведенном для рисунка, и из выпадающего меню выберите пункт Вставить из файла, укажите этот файл в диалоговом окне выбора файла, и можете продолжать пользоваться созданной вами базой данных.
Наглядная электроника 73 о Новая база данных - Kexi Q ЕЙ И Файл Правка Вид Вставка Формат Данные Сервис Окно Настройка Справка □ <! Е) 6 ,П 0 х Л w И new_year_tab : Таблица ” new.year form : Форма X Название проекта. Самый первый проект Место расположения: Папка ' Новый год' Аннотация Этот проект является первой прикидкой „Z Запись: (ИЙ I Г 1 изО Й1ЙЛ Рис. 3.9. Вид готовой формы базы данных проекта Внизу появляется набор для управления базой данных. Выбирая клавишу со стрелкой вправо, вы создаете новую запись. И можете выбирать любую из двух записей, или создать новую запись. После создания новой записи она будет появляться при следующем входе в базу данных, если не забыть нажать на клавишу с изображением плюса в нижней части формы перед закрытием базы данных. Рисунки для добавления в базу данных можно собирать и сохранять с помощью сервиса сохранения изображения экрана в формате рисунков. Как и в Windows, это можно сделать с помощью клавиши Print Screen для получения изображения всего экрана, или клавиш Alt+Ptint Screen для получения изображения активного окна. В созданную мною форму базы данных сохраненное изображение полностью не поместится. Его нужно масштабировать. Делаю я это «по-простому». Изображение предлагается сохранить на рабочем столе, с чем я соглашаюсь. Затем, когда оно появляется на рабочем столе, я щелкаю по нему правой клавишей мышки и из появившегося меню выбираю Открыть в программе Gimp. Gimp - это программа работы с изображениями не менее удобная и мощная, а, по отзывам некоторых специалистов, более мощная, чем программа PhotoShop. Когда рисунок открыт, я в основном меню выбираю пункт Изображение и подпункт Масштабировать. Уменьшив в два раза количество пикселей «на душу населения», я получаю подходящий размер, который сохраняю, а затем помещаю в базу данных. Удобно. Практично.
Наглядная электроника 74 Рис. 3.10. Еще один пример работы с базой данных проекта Очень мне это нравится. Впредь буду для всех проектов создавать базу данных. Как сегодня часто слышишь в рекламе: «Но и это еще не все! Если вы позвоните нам сейчас, то получите в подарок...», то получите в подарок, а вернее обнаружите в своем дистрибутиве Linux еще один офисный пакет, который называется OpenOffice.org, и в нем вы найдете все необходимое, чтобы повторить вышесказанное. Пользуйтесь тем офисным пакетом программ, который вам больше нравится. А чтобы не огорчать, тех, кто еще пользуется платформой Windows, вы тоже можете пользоваться бесплатным пакетом офисных программ OpenOffice. Он есть для разных операционных систем. На рисунке 3.10 можно разобрать версию проекта - проект с использованием микроконтроллера. А мы еще не разобрались с другими вариантами. Вернемся к работе над елочной гирляндой. В одной гирлянде «водопада», как мы хотели, будет 30 светодиодов. Нужно ли нам делать для управления отводы от всех светодиодов? Если каждый из светодиодов будет выведен отдельным проводом (общий провод остается общим), возможностей в управлении больше, но количество проводов будет слишком большим. Но сколько нужно светодиодов в управлении, чтобы получить эффект «бегущего огня»? У меня есть предположение, что достаточно трех светодиодов. Создав группу из 3 светодиодов, мы получим 4 провода, из которых 3 для управления. Соединять будем так, что все первые светодиоды в гирлянде соединяются вместе, все вторые, и все третьи тоже. Итого для 4 гирлянд водопада, объединив их группы вместе, мы получим те же 3 провода управления. Наши гирлянды «вальса» должны управляться независимо. Но, в смысле управления, они ни чем не отличаются от гирлянд «водопада». Значит, и здесь нам будет достаточно 3 проводов для управления. Всего же мы будем управлять б группами по б проводам управления. Для чего нужны эти расчеты? Я предположил, что можно будет сделать управление на цифровых микросхемах и на микроконтроллере. Но выводов у микроконтроллера никак не 200. Можно, конечно, поставить соответствующее количество микроконтроллеров, но при этом стоимость проекта очень сильно возрастет. Предварительный подсчет в этом отношении успокаивает, так как нужное количество выводов у одного микроконтроллера, я думаю, мы найдем. Следовательно, оба варианта управления остаются. Теперь пора спланировать дальнейшую работу. Можно открыть листок бумаги, на котором мы начали работу над проектом, и добавить план работы (картинку с елкой я уже добавил).
Наглядная электроника 75 Рис. 3.11. Начало планирования работы над проектом В сущности, современные текстовые процессоры настолько мощный инструмент, что можно использовать их для всех своих нужд. Я вполне обхожусь текстовым процессором для написания отчетов и разного рода записок, включающих небольшие схемы, и рисунки, и фотографии. Но я хочу показать еще одно удобное офисное приложение. Планировщик проектов в составе KOffice под названием KPlato В нем мы начнем планирование проекта «Новый год»: /home/vladlmlr/4D-electronlc/NewYeai7new-year.kplato - KPlato Файл Правка Вид Вставка Проект Сервис Настройка Справка Рис. 3.12. Создание плана работы в программе KPlato При запуске программы можно создать новый проект, используя шаблон. К проекту можно сразу добавить этапы работы и задачи с помощью пункта меню Вставка-Задача. В открывающемся диалоге задачи ее можно назвать, назначить дату начала выполнения, и задать много других параметров задачи. Любой проект такого рода вполне можно рассматривать как совокупность задач, с последовательностью
Наглядная электроника 76 их выполнения, ресурсов и контрольных точек, необходимых для определения состояния дел и внесения корректив. Если в основном окне проекта с помощью мышки так же, как проводится линия в графическом редакторе, соединить все задачи, а затем нажать на инструментальной панели клавишу с иконкой будильника и линейки, то все задачи распределятся по дням. Графическое представление проекта помогает лучше осознать последовательность действий. В проект легче вносить изменения. Позже, когда проекты станут сложнее, программа управления проектами поможет сэкономить много времени и сил. Ш £ БЗ /home/vlad1mlr/4D-electron1c/NewYeai7new-year.kplato [изменён] - KPIato Файл Правка Вид Вставка Проект Сервис Настройка Справка Ожидаемая оцея ка Рис. 3.13. Вид плана работы после установки связей между задачами По плану вначале следует создать схему управления на цифровых микросхемах. Открываем программу, как и было решено, KTechlab. Полную задачу разобьем на подзадачи - вначале решим задачу «бегущего огня» (скорее «бегущего погасшего огонька»). Это даст нам движение. Затем рассмотрим задачу смены гирлянд, переход от «водопада» к «вальсу». Что касается схемы, решений для первой подзадачи существует не одно, но в самом простом случае можно использовать схему на цифровом десятичном счетчике. Счетчик последовательно активизирует свои выходы, и, если поставить на выходы инверторы, то получится «бегущий погасший огонек». Десятичный счетчик при использовании трех светодиодов в группе (такая у меня была идея) дает хорошее представление о решении задачи, но создает дополнительную проблему - без вспомогательных цепей на гирлянду будут работать только три из десяти выводов, за которыми следует пауза ожидания завершения цикла. Чем заполнить эту паузу, или как ее устранить, это еще одна подзадача. К сожалению я не нахожу в программе KTechlab десятичного счетчика. Приходится использовать двоичный. Разница в том, что на выводах двоичного счетчика сигналы активизируются в коде 1-2-4-8. То есть на его четырех выводах появляются сигналы не по одному, а в логике кода. Приходится придумывать, как модифицировать работу счетчика под мои нужды. Добавив еще несколько элементов, я начинаю понимать, что одновременно я решил подзадачу «простоя». С шестью светодиодами схема выглядит следующим образом:
Наглядная электроника 77 Рис. 3.14. Схема проекта на цифровых микросхемах Попутно отмечу, что вход u/d счетчика меняет направление счета. Можно использовать это в работе гирлянд «вальса», заставляя бегущий огонек останавливаться, а затем двигаться в обратную сторону. Нужно ли это, я решу позже, а сейчас, чтобы ускорить процесс разработки, я только повторю нарисованную схему для оставшейся группы гирлянд, не внося ничего нового. Для переключения двух основных групп, вертикального и горизонтального движения, я использую выводы г (сброс) счетчиков и еще один тактовый генератор, работающий на очень низкой частоте. Теперь схема выглядит так: Рис. 3.15. Схема с двумя группами гирлянд: «водопад» и «вальс» Группы работают попеременно, частоту генераторов, скорее всего, следует подобрать при наладке «по вкусу». Что ж, этот предварительный этап работы выполнен. Можно внести коррективы в план проекта и приступить к следующему этапу - построению схемы на микроконтроллере. Я выбираю PIC16F628A, с
Наглядная электроника 78 которым немного знаком. Вы можете выбрать другой. Мой прошлый опыт по строительству «Умного дома» на микроконтроллере предостерегает меня от поспешных решений И прежде чем приступать к реализации задачи, я проверю свою работу на маленькой подзадаче, которую, впрочем, можно считсть и подзадачей проекта - я воссоздам в рамках программы KTechlab тестовую программу, взятую из Интернета. Программа написана на языке «С» main() { unsigned int k; CMCON = 0x07; TRISA = 0Ы1111110; repeat: for (k=0; k<45000; k++); bitset(PORTA, 0); for (k=0; k<45000; k++) ; bitclr(PORTA, 0); goto repeat; } На основе этой программы я задам начальные настройки проекта - сделаю записи в регистры CMCON и TRISA. Как видно на рисунке 3.16, графическое изображение микросхемы контроллера имеет клавишу Advanced..., нажав на которую оказываешься в диалоговом окне задания значений переменных и установок портов. Там и пропишем переменные инициализации. Это достаточно просто — вписать двоичное значение рядом с TRISA, дважды щелкнуть в разделе Initial Variable Values (инициализация значений переменных) под надписью Variable, ввести переменную (то есть, CMCON) и в следующей ячейке, к которой можно переместиться с помощью клавиши «стрелка вправо» на клавиатуре, просто ввести 7 и нажать клавишу Enter. Затем последовательно нажимаем клавиши Apply и ОК. Переносим из меню компонент первый блок программы Start и дополняем его блоком Repeat, поскольку вся программа это цикл (в данном случае бесконечный). Чтобы сделать его бесконечным или конечным, мы можем задать условие проверки цикла никогда не выполняющимся или выполняющимся. Внутри цикла мы устанавливаем младший вывода порта А в единицу (в соответствии со строкой программы bitset (PORTA, 0)), делаем паузу (delay), соответствующую циклу for, а затем устанавливаем бит в ноль (соответственно со строкой bitclr (PORTA, 0)). /home/viadlmlr/4D-eiectronlc/NewYear/newYear_pic/newYear.nowcode - KTechlab File Edit View Project Tools Settings Help newYear.microbe newYear .flowcode newYea r.flowcode *** Assembly successful *** Building home/vladimir/4D-electronic/NewYear/newYear_pic/newYear.hex gpasm -output /homeA/ladimir/4D-electronic/NewYear/newYear_pjc/newYear.hex -hex-format inhx32 -radix DEC -warning 0 -ignt /home/vladimir/4D-electronic/NewYear/newYear_pic/newYear.asm:20:Message [302] Register in operand not in bank 0. Ensure bank *** Assembly successful [J Messages [vj Oscilloscope Рис. 3.16. Программирование микроконтроллера в программе КТechlab
Наглядная электроника 79 Значок с изображением ракеты позволяет нам транслировать программу, которую мы написали «с таким трудом», в коды пригодные для загрузки в программатор, в ассемблерные коды для отладки или сразу записать программу в микроконтроллер, если вы пользуетесь программатором, совместимым с программой KTechlab. Отладка программы. Для этого существует отладочная программа, называемая gpsim. Кроме нее понадобится и пакет утилит gputils. Сейчас я слегка запамятовал, сразу ли можно запустить симулятор из программы, или нет, но не буду обращаться к руководству, уж очень мне не терпится попробовать, работает ли программа? Запускаем... Раскрою маленький секрет, не работает. Первая ошибка, на рисунке я, конечно, все поправил — не обязательно всем знать, что я был неправ, первая ошибка в том, что блоки программы я совместил, но не соединил. Их, похоже, надо соединять, наподобие элементов обычной схемы, которые соединяются проводниками (нужно бы заглянуть в руководство!). Не сделав этого, я получаю программу, которая работает, но, естественно, ничего не делает (как в жизни). После исправления первой ошибки, я сталкиваюсь с тем, что, запуская программу на трансляцию, и выбрав сохранение в файл, я вижу сообщение об ошибке и не визу файла, который заказывал. Тогда я выбираю вариант вывода на дисплей, а появляющийся файл сохраняю с нужным расширением, как обычный файл через File-Save as... основного меню. Затем добавляю файл в проект. Для трансляции программы на инструментальном меню есть клавиша с нарисованной ракетой. Если нажать стрелочку справа внизу от клавиши, то открывается меню выбора типа трансляции. Я последовательно, сохраняя порядок, при котором не возникает ошибок, провозу все виды трансляции проекта, задавая соответствующие расширения файлам вначале в .microbe, затем в .asm (Assembly), и, наконец, в .hex файл. Заглянув в папку с проектом, я, к своему удовольствию, нахожу еще один файл, имеющий расширение .cod. Если бы этого файла не было, пришлось бы запускать отдельную трансляцию ассемблерного файла с помощью программы gpasm из состава gputils. Этот файл, если я ничего не путаю, мне нужен для отладки. Теперь я запускаю программу отладчика gpsim, она, к слову, запускается, во всяком случае на моем компьютере, либо из терминала, либо, если вы создали кнопку запуска, с обязательной опцией Запускать из терминала. Запускаю я отладчик обычным образом через File-Open, открывая файл с расширением .cod. Осталось нажать клавишу Run, но предварительно для удобства откроем окошко макетной платы (Windows- Breadboard), и получим очень красиво работающую отладку программы. Рис. 3.17. Отладка программы в отладчике gpsim
Наглядная электроника 80 Если присмотреться к рисунку 3.17, то можно увидеть в окне макетной платы напротив вывода апО стрелочку, направленную не так, как остальные, и другого цвета. При работе отладчика она меняет цвет в моменты активизации младшего вывода порта А, как мы заказывали в программе. Не буду смотреть руководство, потом посмотрю, когда буду включать его в Приложение. Программа KTechlab может работать с несколькими типами, и разными моделями, программаторов. Ничто не мешает использовать внешнюю программу, как например PonyProg2000, и программатор, о котором я говорил в книге «Система «Умный дом» на микроконтроллере PIC16F628A», но я хочу попробовать другой программатор. Есть программатор EXTRA-PIC, который можно, заказав, получить по почте через почтовое агентство «Десси» (бывший посылторг), и который стоит не столь дорого - 650 рублей. У меня есть возможность подъехать и купить его, сделав заказ через Интернет. Кроме готового программатора можно приобрести набор для его сборки, который стоит дешевле - 500 рублей. Я не уверен, что программатор будет работать с программой, но попробовать стоит. Для тех же, кому интереснее собрать программатор самостоятельно, я приведу схему программатора. По моим прикидкам такой программатор обойдется в 50-100 рублей. Но это чуть позже. А сейчас я сделаю перерыв, записав в план работ дополнительный пункт «Приобретение оборудования».
Глава 4. Цифровой регулятор угла опережения зажигания для автомобиля. Micro-Cap, Windows Какие схемы можно проверить с помощью программ EDA? Что интересует сегодня радиолюбителей? Я надеялся найти ответы на эти вопросы, посещая радиолюбительские порталы. Почти собрал октан корректор (автор Щербанюк). Нужна цоколёвка тиристора Т106-10-7... Звонются, то есть работают как симисторы. Со всех входов и выходов открываются и+и-. Не понять, как он работает в схеме, параллельно включенный на выходе высоковольтной обмотке трансформатора... Давным-давно, когда зимы были зимними, а лета летними; когда напряжение и ток были именно током и напряжением; и даже сопротивление было сопротивлением, а не каким-то импедансом с мнимой частью, вот в те давние времена очень узкий круг автолюбителей, а были это именно автолюбители, не то, что нынче, обратился ко мне с просьбой проверить работу схемы электронного регулятора угла опережения зажигания, опубликованной в одном из журналов. Схема, с моей точки зрения, работать не должна была, но в те времена отказать автолюбителю рука не поднималась. Так я оказался втянут в историю, которую вспомнил сегодня, и далекие отголоски которой хочу использовать для описания работы с программой Micro-Cap. По своей природе и образу жизни я - пешеход. Отличить карбюратор от дифференциала в автомобиле, следовательно, не могу. Конечно, первое, что мне захотелось у них узнать, после того как схема, которую я собрал по их просьбе, работать не захотела, а что такое зажигание? Как все специалисты они «забросали» меня терминами: трамблер, бобина, свечи и еще что-то, что сегодня я не вспомню. Закончилось тем, что мне пришлось открыть какой-то самоучитель, и попытаться разобраться самому, что такое зажигание в автомобиле? Не скажу, что все понял тогда, сознаюсь, что все позабыл сегодня, и то, как я сегодня понимаю работу двигателя внутреннего сгорания, изображено на рисунке. ГО Tl Т2 1_ _---------------------1---------------1--------- ТПЧКЛ О T|J4|4> ISOD ГмП.ИиЛГиЯкН" всркляя тсчы Взрыв смеси Рис. 4.1. Мое представление о работе двигателя Двигатель автомобиля работает за счет регулярных взрывов горючей смеси в цилиндре (точнее, цилиндрах, но мы упростим рассуждения до одного цилиндра). Инициирует эти взрывы запальная свеча, она же свеча зажигания, дающая искру, из которой и возгорается пламя. Взрывы происходят в цилиндре в момент
прохождения поршнем верхней точки (моменты времени ТО и Т2). Под действием силы взрыва поршень опускается вниз, где происходит выброс отработанных газов и впрыскивание новой порции горючей смеси, а затем поднимается вверх, сжимая смесь, пока искра свечи зажигания не взорвет новую порцию после прохождения поршнем верхней точки. Если кто-то захочет меня поправить, я не буду возражать. Но, тем не менее, что же такое опережение зажигания? Насколько я тогда понял весь «фокус» во времени горения смеси в цилиндре (на рисунке это интервал от Т1 до Т2). На низких оборотах двигателя воздушно- бензиновая смесь успевает сгореть, пока поршень находится в верхнем положении. Но с ростом оборотов двигателя, если поджигать смесь в момент прохождения поршнем верней мертвой точки (моменты ТО и Т2), то горение смеси будет продолжаться до момента, когда поршень очень сильно опустится вниз, а, значит, сила, толкающая поршень, существенно ослабеет. Чтобы этого не происходило, с ростом числа оборотов смесь следует поджигать до момента прохождения поршнем крайнего верхнего положения в цилиндре. И тем раньше, чем больше число оборотов двигателя. Именно этот механизм должен обеспечить регулятор угла опережения. Отказавшись от поиска решения на основе аналоговых элементов, я решил использовать цифровые. Сегодня, как мне кажется, схема подобного устройства не имеет практической ценности, но реализация этого решения с помощью компьютерной программы стала бы неплохим сюжетом для рассказа о работе программы. Особенно с учетом построения схемы на основе не просто электрических, а некоторых общих физических данных. Итак, что я помню, о схеме? Немного. Помню, что использовал счетчики с прямым и обратным отсчетом, и, если не ошибаюсь, использовал предустановку счетчика. Зачем-то использовал два задающих генератора. Счетчик с предустановкой и двумя направлениями счета, прямым и реверсивным, это, например, К155И7 (74193). Запускаем программу Micro-Cap: Е Micro Сар 7.0.0 -fC:\MC7M)ATA\CIRCUIT1.CIR] ,Д| Файл Редактирование Комтонент Окна Опции Анализ Создание Помощь JIM]IJkjH, TW.P.4S 1/ Select Mede Animation Find Component Ctrl+5hift4-F 1 74193 2 Inverter 37430 4 Pulse Source 574AC193 6 Resistor 7 Ground 8 Capacitor 9Nor2 0 Nand2 DG^H SR Analog Primitives > Ь чн * _|g ф ф S □ % П ____________ Analog Library » I ___ . >> ~ Т Т. \ (8 > b -------------К” □□ А й1 И « Digital Library ► 74хх00- 74хх42- 74ХХ120- 74ХХ169- 74хх253- » 174- » 74хх381- ► 175- ► 74хх640- ► 181- » 74ХХ1000- ► 190- ► С04000- » 192- ► 74192 ECL- »| 194- ► 74AL5192 PLD- ». 197- ► 74F192 । 240- ► 74НС192 1 241- ► 74НСТ192 242- ► 74LS192 244- ► 74193 74F193A 74HC193 74HCT193 । 74L5193 74193: Synchronous 4-Bit Up/Down Binary Counter with Dual Clock and Clear В P G м W 1 *4 •£] _ Й X Рис. 4.2. Программа Micro-Cap В основном меню программы выбираем раздел Компоненты и в библиотеке цифровых элементов (Digital Library), перемещаясь по подменю, отыскиваем нужную нам микросхему 74193. После выбора компонента его контур будет привязан к курсору мышки до тех пор, пока не будет нажата левая клавиша. Перемещаемся в нужное место, нажимаем левую клавишу и размещаем счетчик в рабочей области чертежа, после чего на клавиатуре нажимаем клавишу Esc, если нам больше не нужны счетчики.
Micro-Can 7.0.0 - [CAMC71DATA\CIRCU1T1 .CIR1 Файл Редагпфоеьт: Котснент Окна Опции Анализ Создаете Помощь | D й= Ь. а В < И! + - +. + -к Hg fr ф -«- Ф <> S ш «П ЧI р G If - Т "L \ <Е Р 1 •₽ .... • > "" — + в; ПП Л tff ы •• • f • й СЧЧ « £1 |<|>|h|\ts<i\p.11i.i/ II <i |Select Mode Drawing area J Grid ee.ee Рис. 4.3. Размещение цифрового счетчика на чертеже Что еще нужно в схеме? Обратимся к физической модели. Для фиксации двух положений поршня в цилиндре, где-нибудь на маховике (или еще где-то, что жестко связано с движением поршня), понадобится установить датчики верхнего и нижнего положения поршня в цилиндре. На рисунке 4.1 они расположены в зоне маховика. Когда поршень находится в верхнем положении, датчик верхнего положения запустит некое устройство, которое определит время перемещения поршня в нижнее положения, что, в свою очередь, позволит нам определить число оборотов двигателя, ведь конечная задача - это регулировать угол зажигания в зависимости от числа оборотов двигателя. Нижний датчик на рисунке 4.1 отметит прохождение поршнем этого положения. В дальнейшем я планирую после срабатывания этого датчика запускать счетчик в режиме обратного отсчета. На схеме в nporpai гме вместо датчиков я использую генератор прямоугольных импульсов, частота которого имитирует скорость вращения двигателя, а передний и задний фронт импульса имитируют датчики положения поршня. Кроме этого генератора я использую второй генератор прямоугольных импульсов для организации счета. Поищем в программе подходящие генераторы.
1LE1 Micro-Cao 7.0.0 - rC:\MC7\DATA\CIRCUIT1 .CIR1 Файл Редактцхзвагие Комтонемт Окна Опции Анализ Создание Помощь Analog Rrirruhves Analog Library Digital Primitives Distal Library Anmation Find Component Ctrl+Shift+F 74193 3 Inverter 4 Ground SCapaotor 6Nor2 7 Nand2 6 Battery 9 Pulse Source 0 Diode SMPS S-Parameter Two-Port Passive Compcnents Active Devices Waveform Sources Function Sources Laplace Sources Z Transform Sources Dependent Sources Macros Subckts ВШ'&П Ы Р G « эд 51 Ч +а fixed Analog NTC7 Battery Pulse Source ISource User Source Sine Source |1<|<|Н>1|\ТеЯХРлие ,/ П<_| Select Mode Pulse Source Рис. 4.4. Источники импульсного напряжения в программе Micro-Cap Не найдя именно генератора прямоугольных импульсов, я выбираю источник импульсного напряжения в основном меню Компоненты в разделе Analog Primitives — Waveform Sources - Pulse Source и перетаскиваю его (их, мне нужно трн генератора) на чертеж. Щелчок левой клавиши мышки открывает диалог выбора параметров источника. Рис. 4.5. Диалог задания параметров источника напряжения В диалоге я нахожу (и выбираю) в качестве нужной мне модели генератор прямоугольных импульсов (SQUARE), и (сделаю вид, что сразу, но это не так) сразу задаю параметры генератора. На всякий случай я
обозначаю его модель, как SQUARE_1, задав переменные Р5, Р4 и РЗ, где первый параметр, я надеюсь, определяет период - в данном случае 10 мс, а последующие длительность единичного (5 мс) и нулевого состояния (5 мс). Период в 10 миллисекунд в данном случае должен соответствовать времени одного оборота двигателя на скорости 500 оборотов в минуту. Аналогично я добавляю еще один генератор, определяя его параметры из следующих соображений. В данный момент я хочу проверить работу схемы в самом первом приближении, отложив на время вопрос о регулировке угла опережения зажигания, поэтому я оставлю один счетчик. Я хочу при движении поршня вниз включать прямой счет, а при движении поршня вверх включать обратный счет. Из-за равенства этих двух движений по времени я должен получать обнуление счетчиков к началу следующего цикла, и, главное, это не должно зависеть от скорости вращения двигателя. Но что же с параметрами двух генераторов? Соображения здесь такие - на самой низкой частоте вращения двигателя я должен заполнять счетчик, но не переполнять его. Если счетчик считает до 15, то за время полупериода генератора, заменяющего двигатель, генератор счета должен давать не более 15 импульсов. У меня получилось, что генератор счета должен иметь период примерно 400 мкС. Таким образом, параметр второго генератора Р5 = 400U, Р4 = 380U, РЗ = 20U. Как видите, я решил не использовать меандр, укоротив единичные импульсы (и опять я сделаю вид, что сделал это сразу). Мне остается соединить все входы счетчика должным образом, отыскав среди компонент резистор, конденсатор и батарею, для которой я определяю напряжение 5V в качестве значения (VALUE). Кроме того, я соединяю генераторы с помощью цифровых вентилей И-НЕ и ИЛИ- НЕ (7400 и 7402), с тем, чтобы прямой счет шел только в положительный полупериод основного генератора, а обратный счет во второй полупериод. ЕЗ Micro-Cap 7.0.0 - [t:\MC7\DATA\CIRCUIT1.CIR] И Файл PeaaKTvpoeaH ie ко понент £>кна Опции лцал в Создание Помощь _ 61 X D Н 1В о Е + £ i ►Г—Т П_\^8’Р i it? X l? & ft ip •£] QQ |i« |« |k |M|\Text\Pagej/^ П« J _____________H |Select Mode Drawing area ___________________________________________ Рис. 4.6. Первое приближение схемы Итак, генератор V0 имитирует работу двигателя и датчиков положения, генератор VI служит для прямого счета (вход счетчика UP) и для обратного (DOWN). Входы предустановки и вход очистки счетчика я пока не использую, соединив их с землей, а вход загрузки LOADBAR я соединяю через резистор R1 =2.2 кОм с плюсом питающей батареи V2 = 5V (вначале перепутав, где плюс, а где минус). U1 - схема И-НЕ, U2 - ИЛИ-НЕ. При установке компонент некоторые затруднения возникли у меня с режимом поворота элемента. Как оказалось для этого следует выбрать элемент, затем удерживая левую клавишу мышки нажатой, щелкнуть правой клавишей мышки столько раз, сколько необходимо для нужного поворота элемента. Для симуляции работы схемы я не без оснований выбираю из основного меню пункт Analisys - Переходные процессы. Это приводит меня к диалогу свойств Анализ переходных процессов, в котором я устанавливаю время процесса чуть больше 10 мс.
Рис. 4.7. Диалоговое окно «Анализа переходных процессов» Запуск процесса клавишей Запуск, правда, не дает ни одного графика, хотя окно вывода диаграмм открывается. Программа Micro-Cap весьма дорогостоящая, и, думаю, снабжена всеми необходимыми руководствами по пользованию, которых у меня нет. И я вынужден искать какие-то пути для достижения цели на ощупь, по причине чего из меню Analisys я выбираю другой пункт Исследование переходных процессов.,., но предварительно выхожу из режима симуляции через появившийся в основном меню пункт Transient - Выход из Анализа. Исследование переходных процессов открывает окно графики и рядом сохраняет окно схемы. Расположение окон, как во многих программах Windows, можно регулировать. Щелчок по клавише распахнуть окно на панели окна графики раскрывает его на весь экран, а выбор в основном меню Окна - Расположить по Вертикали вновь дает мне два окна. Щелчком по нужным мне точкам схемы я выбираю, какие сигналы меня интересуют. В данном случае я выбрал сигналы (сверху вниз) генератора V0, генератора VI (на выходе микросхем И-НЕ и ИЛИ-HE) и сигналы на выходах счетчика, начиная с выхода QA. Рис. 4.8. Первые ошибки при проверке схемы Первая ошибка. На рисунке верхний график - сигнал, имитирующий работу датчиков, ниже работа генератора прямого счета, а еще ниже, на выходах счетчика - нулевой результат прямого счета. При обратном счете на выходах цифрового счетчика что-то появляется, при прямом - нет. Мне не нравится, что в момент прямого счета на входе DOWN (вход импульсов обратного счета) удерживается логический «О», что, вероятно, не правильно. Проверяем это, включив между выходом микросхемы U2 и входом счетчика инвертор, который можно найти в разделе Компоненты - Digital Primitives. Кстати, при выборе всех стандартных микросхем я использую параметр TAIMING MODEL=DLY_TTL, который задается в диалоге, открывающемся после установки элемента.
После добавления инвертора счет идет и в прямом, и в обратном направлении. Чтобы получить диаграммы, которые изображены на рисунке 4.9, я немного меняю параметры генератора V0, именно Р2 = 0 и Р1 = 0. Разницу вы можете увидеть сами, если надумаете купить программу. Рис. 4.9. Диаграмма работы схемы при низшей частоте оборотов двигателя На диаграмме рисунка 4.9 верхний график - имитатор датчиков, далее импульсы прямого счета, обратного счета, выходы счетчика и самый нижний график тот, что меня сейчас интересует - график выхода обнуления счетчика. По временным меткам, которые я получил, щелкнув мышкой по выделенной на инструментальной панели клавише, а затем по графику, по этим меткам видно, что импульс проходит в конце движения поршня вверх. Теперь проверим работу схемы, увеличив число оборотов вдвое. Соответственно, уменьшив период генератора V0 вдвое, до Р5 = 5.2М. Чтобы получить изображение в том же масштабе, я уменьшаю время анализа в диалоговом окне Анализ переходных процессов до 5.4М. В результате я получаю: |С Micro-Cap 7.0.0 | - || о1 Ц Файл Редакпяхеакие £кна Опции Probe vertical Horecrtd Scope Помощь
Рис. 4.10. Диаграммы работы схемы при частоте оборотов двигателя вдвое выше Все, что я хотел показать с помощью осциллограмм относительно работы схемы, так это то, что импульс на нижнем графике проходит и при повышении оборотов в верхней точке движения поршня. То есть идея прямого и обратного счета, вроде бы, работает. Этим импульсом обнуления счетчика в реальной схеме (в реальной схеме обнулением всех счетчиков) должен был включаться тиристор электронного зажигания. Но пойдем дальше. Все, что у меня сохранилось в памяти, я уже использовал. Хотя припоминаю, что весь «фокус» был в факте постоянства времени горения смеси при всех оборотах двигателя, конечно, для первого приближения работы регулятора. Но как я использовал этот факт в построении схемы, я за день работы вспомнить не смог. Пришлось порыться в бумажных архивах, где мне удалось найти эскизы схемы и некое подобие описания. Еще день я потратил на то, чтобы понять, что я тогда, лет двадцать назад, написал. Скверная привычка экономить время при записи не раз заставляла меня пожалеть об этом, но, боюсь, и по сей день, скверная привычка берет верх. Что нехорошо. Расшифровка иероглифов показал, что из количества импульсов, полученных при прямом счете, и соответствующих числу оборотов двигателя, следует вычесть постоянное число, пропорциональное максимальному углу опережения зажигания. В моих записях это 15°, но не записано для какого автомобиля, не указано для одного ли цилиндра, и учитываю ли я обороты двигателя по распределительному валу или маховику. Получившуюся разницу следует вписывать в счетчики с каждым началом цикла движения поршня из верхней точки. Ниже показана переделанная схема, где я осуществляю загрузку счетчика подачей на входы логической «1». [С Micro-tap /.U.U ["ML || [Select Mode Рис. 4.11. Схема с регулировкой угла опережения зажигания На схеме я не стал добавлять формирователь импульса переписи для предустановки счетчика (из импульса обнуления), решив, что в данный момент достаточно просмотреть начальный цикл работы. Для предустановки я записываю двоичное число 1110, исходя из того, что угол опережения определится одним импульсом. Параметры генераторов следующие: для VO Р5 = 120М, Р4 = 60М, РЗ = 60М, Р2 = 110N, Pl = 100N; для VI Р5 = 3.4М, Р4 = 1.7М, РЗ = 1.7М, Р2 = 110N, Pl = 100N. В диалоговом окне Анализ переходных процессов я задаю параметр «Диапазон времени» равный 120М (120 миллисекунд). Посмотрим, что на это скажет программа Micro-Cap:
Micro-Can 7.0.0 Файл Редактцх&а+е Qkhs Опции Probe Vetted Horizontal Scope Помощь [Cursor Mode Рис. 4.12. Диаграмма работы схемы на «низких оборотах двигателя» Самый нижний график показывает импульс обнуления счетчика. А метки времени на этом графике показывают, что между этим импульсом и завершением цикла проходит около 11 миллисекунд. Теперь внесем изменения в работу схемы, увеличим число оборотов двигателя в минуту, увеличив частоту генератора V0 вдвое (уменьшим, соответственно, период). Не забудем изменить параметр «Диапазон времени» на 60М, и обратим внимание на нижний левый угол рабочего окна, где на рисунке 4.12 написано Cursor Mode в строке состояния. При изменениях настроек анализа, и некотором усложнении схемы, появляется предупреждение Wait. Следует подождать, пока программа произведет необходимые подсчеты. Но посмотрим, Рис. 4.13. Диаграмма работы схемы при увеличении «числа оборотов» вдвое И увеличим обороты еще раз вдвое, что должно соответствовать 2000 об/мин.
|Cu rsor Mode Double click in the window tor more options Рис. 4.14. Диаграмма работы схемы при «максимальных оборотах двигателя» Напомню, что импульс, изображенный на нижнем графике, запускает искрообразование. Сравнение диаграмм показывает, что время от момента поджигания смеси до момента прохождения верхней мертвой точки хода поршня на всех трех диаграммах одинаковое (исключая ошибки позиционирования маркера и грубую схему) и составляет около 10-12 мс. Что соответствует идее постоянного времени от момента поджигания смеси бензина и воздуха в цилиндре до момента взрыва смеси в верхней точке движения поршня. Ниже я помещу рисунок, составленных из графиков трех предыдущих. Поскольку масштаб этих рисунков я выбрал таким, чтобы сохранить график имитатора работы датчиков одинаковым, мы сможем отметить положения поршня и моменты зажигания: Рис. 4.15. Объединение трех предыдущих диаграмм Верхний график, относящийся к имитатору формирователя сигналов от датчиков положения маховика (как
изображено на рисунке 4.1), это временной сигнал, ио ему соответствует, что я попытался изобразить надписями о положении поршня, график положений поршня в согласии с оборотом маховика, что я отметил градусами. А три нижних графика - импульсы запуска зажигания, явно показывают, что с ростом скорости вращения двигателя происходит рост угла опережения зажигания. Пока, конечно, схему едва ли можно применить к реальному двигателю, ио программа Micro-Cap показала, что двигаемся мы в нужном направлении. Главное, как мне кажется, во всем выше изложенном, что мы вполне можем работать в программе, реализуя конкретные задачи. Задачи ие чисто схемные, электрические, а возникающие из других областей деятельности. Задачи решаемые с помощью электроники. Более того, задачи, которые можно решить, ие прибегая к физической реализации работы до того момента, пока ие появятся веские доводы в пользу работоспособности идеи. Скажу больше, если бы меня интересовала в данный момент полная реализация цифровой схемы регулятора опережения зажигания, я просто добавил бы счетчики, думаю одного для реальной схемы мало, и продолжил работу с программой, пока ие добился бы нужных параметров, нужной работы схемы. И только после этого перешел бы к работе с макетом или опытным образцом. Программа ие только помогает «рассуждать» иа уровне электрической схемы о создании модели процесса, ио помогает отыскать ошибки, как в модели, так и в схемном ее представлении. Итак, если бы я занимался реальной разработкой, то иа данном этапе, этапе проверки идеи, я остановился бы до момента окончательного выбора датчиков, окончательного выбора конкретной модели автомобиля или автомобильного ряда, и получения всех необходимых параметров двигателя, конечно, относящихся к системе зажигания. Затем продолжение работы с реальным макетом потребовало бы, как минимум, впаять еще несколько счетчиков, перепаять элементы генератора счета и т. д. Но работа за компьютером ие столь хлопотлива. Я просмотрел эту главу, и меня заинтересовал один аспект работы схемы. Импульсом обнуления счетчиков я предполагаю включать тиристор электронной системы зажигания. Но если я использую несколько счетчиков, то каким из импульсов обнуления я собираюсь включать тиристор? Счетчик младших разрядов счета будет обнуляться многократно, средний счетчик (или счетчики) тоже обнулятся ие единожды, а обнуление счетчика старшего разряда ие дает мне нужного момента времени для включения новообразования. К этому вопросу примыкает второй, вопрос загрузки счетчиков. С одним счетчиком я бы сформировал сигнал из импульса обнуления (предположительно), а если счетчиков два или больше? В своих эскизах я ие нашел ответов иа эти простые вопросы, и ие помню, как поступил несколько лет назад. Сформулируем еще раз идею получения импульсов зажигания и перезагрузки счетчиков - при обнулении счетчиков, когда все счетчики обнулятся, следует сформировать импульс зажигания, и до момента начала следующего цикла нужно прекратить прямой счет и произвести предварительную загрузку счетчиков импульсом, сформированным из импульса зажигания. Для начала я опять-таки воспользуюсь одним счетчиком (вероятно, сказывается привычка использовать макетную плату без перепайки), чтобы попытаться решить, как я буду это делать? И я воспользуюсь для поиска решения тем, что записал ранее - момента начала следующего цикла. Попробую найти решение с помощью триггера. Использую для начала триггер К155ТМ2 (7474).
|E3 Mitrofan 7.0.0 - [D:IHF_3WD-fi FCTRONICXAUTO NFW C0NT.CIR1 Д|] Файл Редэкпфовагие Qzrrpocfcrt Окна Опции Analysis Design Помощь ян 4 - чь # -к i О 4> -И В □ П ® | P G ^Ti\«’Pi h? -ip -и- —+ k ef и- ~ Л « « ti % ф si _ S X |l< l« |F |H|\Text\Pajje l/ П< I J • |Select Mode _ Scroll bar Рис. 4.16. Формирование сигнала искрообразования и перезаписи счетчика Импульсом обнуления счетчика я сброшу триггер по RESET (или установлю по SET), а передним фронтом формирователя сигналов датчиков верну в исходное положение. Такая схема, хотя бы в отношении счетчика старшего разряда, должна работать. Что мы и проверим: Рис. 4.17. Поверка схемы искрообразования В данном случае, как и ранее, верхний график относится к имитатору датчиков положения поршня, а нижний показывает сигнал на входе загрузки счетчика, LOADBAR. Диапазон времени наблюдения в диалоге Анализ переходных процессов я установил таким, чтобы отображалось два цикла. Передним фронтом этого импульса можно формировать искру зажигания, счетчик до начала следующего цикла перестает считать. На диаграммах видно, что загружается число 1110 (4-7 графики), сигналы загрузки от триггера и по включению питания
объединены двухвходовой схемой И. Будем считать, что это искомый вариант. Добавим еще один счетчик. Изменим параметры генератора счета, учитывая, что максимальное число теперь около 225, а загружаемое число возьмем равным 220 (двоичное 11011100). Каким должен быть период генератора счета? Если на низшей частоте, когда основной генератор (имитирующий работу двигателя) работает с периодом 120 мс, нужно записывать при прямом счете за 60 мс число 225, то период генератора счета получается равным 250 мкС. Немного повозившись, и запутавшись, с обнулением обоих счетчиков, я получаю схему, которая, по первому впечатлению, работает: Micro-Cap 7.0.0-E0:WE 3W0-EIECTH0NICUUT0 HEW COHT X2 0P.CIR] II Файл РедакчфсванЕв Компонент Окна Опции Анализ Создание Понощь _ S х I D Cg Н g a - ехм|4^чн^-м--к-1К^-1>-д-ффВП]^1а 1 р G t S- 8 lt °11 К-Т Т-\ ’Р i ЛЁЦК мЬ (S’ |M'H1klM|\TextXPaae 1/ [Select Mode _________ Scroll bar Рис. 4.18. Увеличение количества счетчиков в схеме регулятора Проверка при трех значениях частоты генератора, имитирующего работу датчиков положения поршня, показывает графики весьма похожие на те, что получены ранее. Вот как это выглядит на больших оборотах двигателя:
г Micro-Can 7.0.0 Г-ПГб’Т I Файл Редакгцэовз-ие Окна Опции Probe Vertical Horizontal Scope Помощь [Cursor Mode Рис. 4.19. Графики работы схемы с двумя счетчиками Время между моментом подачи искры в цилиндр двигателя и началом нового цикла сохраняется около 10 мс в трех режимах работы схемы, относящихся к трем режимам работы двигателя. Верхний график - это осциллограмма имитатора датчиков, ниже четыре графика работы счетчика ХЗ (младшие разряды), далее сигнал загрузки этого счетчика, он же сигнал включения искры передним фронтом, ниже четыре сигнала второго счетчика. Но мне не ясно, действительно ли второй датчик обнуляется, или я обманываюсь. Чтобы это прояснить, я несколько изменю состав графиков, убрав диаграммы сигналов с выходов второго счетчика, с ним пока ясно, и добавлю вид выходных сигналов обнуления счетчиков: !__Micro-Cap 7.0.0 Файл Редасгцхжагпе Окна Опции Probe Vertical Horferrtal Scope Помощь Рис. 4.20. Графики формирования сигнала загрузки первого счетчика На рисунке 4.20 второй график показывает обнуление счетчика старших разрядов (XI), третий - загрузку этого датчика, следующий - обнуление счетчика младших разрядов (ХЗ), затем идет вид сигнала его загрузки, а
последние четыре графика показывают последовательно сигналы выходов этого счетчика. Интересующий меня сигнал действительно появляется при обнулении этого счетчика, но меня смущает, что сигналы загрузки обоих счетчиков совпадают (третий и пятый графики). Правильно ли это? Не знаю, как бы я поступил с физическими счетчиками, но с программным макетом я попытаюсь, отключив цепь загрузки счетчика ХЗ, посмотреть, что с ним происходит при обнулении следующего счетчика: Micro-Cap 7.0.0 Файл Редгктцхеаяе Окна Опции Probe Vertical Horizontal Scope Помощь Рис. 4.21. Графики проверки правильности загрузки счетчиков Второй график на рисунке показывает сигнал обнуления счетчиков старших разрядов, ниже осциллограмма обнуления счетчика младших разрядов. Мои сомнения относятся к двум временным отметкам на рисунке 4.21. Сейчас я запускаю схему зажигания в момент 20,352 мс, а не следует ли это делать после следующего обнуления в момент 24,323 мс? И только теперь до меня доходит, где я ошибаюсь. Когда я записываю число, которое нужно отсчитать при реверсивном счете, первым отсчитывается число, записанное в младших разрядах. После этого обнуление счетчика младших разрядов меня не интересует. То-то я смутно припоминал, что в реальной схеме я включал зажигание гораздо проще. Становится ясно - все, что я «сгородил» для обнуления счетчика младших разрядов, можно из схемы удалить, это лишнее. Но, согласитесь, насколько удобнее работать за компьютером. Если бы я занимался перепайкой выводов, впаивал бы и выпаивал микросхемы... Итак, окончательно на данный момент схема выглядит следующим образом:
|E3 Micro-Cap 7.0.0 - FDrWF 3\4D ELFCTRONICUUTO NFW CONT X7 0P.CIR1 ^2 Файл Редакпфовагие yzrrpocfcrt Окна Опции Analysis Design Помощь _ nX с й t.с а и И|, нн 4-. ч- <i ф s ш s □ н I р о Т Т. \ - Р > •(? ---h ::: □ Q 5» Й? «4Ф ’*0 ®l Q ШШ Д1и1\тел>.-да 1/ П < I |Select Mode _______ Scroll bar Рис. 4.22. Окончательная схема проекта Попутно хочу заметить, что полярность батареи питания, если помните, в начале работы я и здесь запутался, полярность батареи питания можно получить видимой на чертеже, установив опцию Имя вывода в разделе Отображать диалога свойств этого элемента. Ненужные выводы и элементы можно выделить щелчком левой клавиши мышки и удалить, либо используя привычно для всех редакторов меню Редактирование, либо нажав на клавиатуре клавишу Delete. Еще одно полезное программное средство - клавиша на инструментальном меню, которая показывает напряжения всех узлов схемы. Эта клавиша находится в нижней части инструментального меню с надписью 1.3. Работает режим отображения напряжения после выхода из режима анализа. В какой мере компьютерная модель будет соответствовать реальной схеме, собранной на макетной плате, можно сказать только после сборки и проверки макета. Но очевидно, что программа позволила перейти от смутных воспоминаний и туманных идей к составлению спецификации. Не так уж мало! Я рассказал лишь о малой части возможностей программы Micro-Cap. Программа достаточно хороша, и заслуживает большего внимания, но она и достаточно дорога, и, если вы купите ее, то получите подробное руководство. В завершение этой главы я хочу нарисовать полученный график, показывающий зависимость угла опережения зажигания от числа оборотов двигателя, основываясь на данных, полученных с помощью программы EDA. Времена, полученные при симуляции последней схемы - это 9 миллисекунд для 500, 1000 и 2000 об/мин (времена 120, 60, 30 мс). Для расчета графика я произвожу подсчет: если за 120 миллисекунд совершается полный оборот в 360 градусов, то за 9 миллисекунд 54 и 108 градусов, соответственно.
Рис. 4.23. График, построенный иа основе данных эксперимента Подведем итоги этой главы. Как и ожидалось, вернее, как и задумывалось, график близок к прямой линии. Реально это ие так. Но получить реальный график можно было за счет его аппроксимации отрезками прямой. Для этого следовало бы менять загружаемое в счетчики число в зависимости от числа оборотов двигателя. Кроме того, я очень сомневаюсь, что угол опережения зажигания может быть равен 108 градусам. В моих заметках речь шла о 15. Но при этом я мог рассматривать углы иа распределительном валу, который обслуживает четыре цилиндра двигателя. Контакты в моих записях разомкнуты иа 75 градусах, замкнуты иа 15 градусах. То есть речь шла о 90 градусах. Но, думаю, практического применения схема в настоящий момент ие имеет, а, если кто-то задумает повторить ее в физическом виде, по описанию, сделанному выше, можно понять, как реализовать схему. Мие же хотелось продемонстрировать удобство работы с программой EDA, что, надеюсь, мие удалось.
Глава 5. Жучки для Джеймса Бонда. CircuitMaker, Windows Не знаю, как вам, мне не приходит в голову, зачем бы могли понадобиться радиолюбителю «жучки»? Но если забыть о прямом их назначении, то «жучки» это, всего-навсего, совокупность передатчика, рассчитанного на передачу речи, и приемника. Подобную пару, например, можно использовать в качестве простейшей «радио- няни», или в случае, избави Бог, когда, заболев, кто-то из близких нуждается в простейшем пейджере. Или, уменьшив радиус действия передатчика, можно применить устройство для экспериментов с радиоканалом. Побродив по любительским форумам Интернета, я нашел несколько обращений начинающих радиолюбителей с вопросами о работе «жучков». Свои находки я хочу положить в основу этой главы. Мне и самому очень интересно, дадут ли программы EDA результаты, которые можно было бы назвать правдоподобными соображениями о причине трудностей, возникающих при повторении схем. Радиотехника не моя специализация. Следовательно, эти соображения не представляют большого интереса, как не представляют для меня практического интереса в данный момент схемы. Едва ли я отличу удачное схемное решение от неудачного, надежную схему от той, что с трудом налаживается, и впоследствии скорее не работает, чем работает. Тем интереснее попробовать «пройтись» программой EDA по устройству. При близком знакомстве со схемотехникой в какой-либо области электроники складывается устойчивое индивидуальное отношение к разнообразным конкретным вариантам. Одни загодя плохи (на основе только твоего личного опыта и субъективного отношения), другие хороши, даже притом, что не раз тебя подводили, но хороши, и все тут! В радиотехнике у меня нет ни любимчиков, ни пасынков. И если со схемой что-то будет не так, как следовало бы, я смогу обнаружить это явление только, когда оно наиочевиднейшим образом заявит о себе. CircuitMaker, видимо, будет последней программой для платформы Windows, о которой я расскажу. Как и другие Windows программы, она достаточно дорогая, но операционной системой Windows пока еще пользуются многие. CircuitMaker и Жучки. Вот CircuitMaker: CircuitMaker - [UNTITl.ED.CKT 100%] File Edit View Opticns Macros Smciabon Wave Help g в en + a r i ь <i> ? li Рис. 5.1. Основное окно программы CircuitMaker Слева в обозревателе можно сразу обнаружить множество компонент, доступных для работы. Но, прежде чем начинать рисовать схему, обратимся к вопросу, который интересовал начинающего, я думаю, радиолюбителя: «Собрал я жука, только вот не работает почему-то: VT3 - КТ368АМ греется с подозрением на то, что задымит, и R6 — тоже греется! Почему? I = 150 мА, а когда отключаю VT 3, то I =5 мА! Ничего не пойму! Help! VTI - 3102Б, VT2 - 368АМ»
Я постараюсь воспроизвести схему, исключая микрофон, с почти теми же обозначениями, что и в оригинале. Для сборки схемы раскроем в левом окне (обозреватель - Browse) раздел меню General, щелкнув по значку «+», и выберем все необходимые компоненты из соответствующих подменю. В подменю BJTs я выбираю вариант NPN Trans: С. Такой вид транзистора сделает рисунок схемы привычным и близким к оригиналу. Программа предлагает несколько графических видов транзисторов, поскольку в разных странах приняты разные стандарты. Для добавления элемента в схему следует нажать клавишу Place и переместить курсор мышки с прикрепленным к нему контуром элемента в то место рабочего поля, где предполагается данный элемент поместить. Естественно, вначале я транзисторы, резисторы, и конденсаторы набросал на чертеж «как попало». После перемещения в нужное место при их расположении я могу выделить элемент, нажимая правую клавишу мышки, и из выпадающего меню выбирать Rotate 90, чтобы, если это требуется, развернуть резистор или конденсатор. Когда не удается с помощью мышки аккуратно «подтолкнуть» резистор на место, я использую курсорные клавиши клавиатуры. При выделении компонента они активизируются. В результате этих несложных (пока) действий получаем следующую схему: . Ci.cuilMaker - (D:\he 3\40-elec1ronic\bugsXbug.CKT" 100К] - о1 [ | File Edit View Sptrcns Macros sanitation Wave Help ' g D B В i * + A / Z> Q <l> К ? 0 7 ► _ ________________________________________________________ _______________________________________ Browse | Search] Hotkey... | Place || -i BJTs NPN TransB NPN TransC РГР TransB TransC - Capacitors Capacitor Polar Cap Semtapacirx Var Capacitor ♦ Diodes - Inductors Coil 3T Coil 5T Inductor Var Inductor ♦ Instnirrents - Resrtors Resistor ResistorA SemiResistor SemiResistorA Var Resistor Var ResistorA f Sources 1+ Active Component® v Model ] Description Рис. 5.2. Схема «жучка» в программе CircuitMaker Чертеж получился не таким красивым, как в оригинальной версии, но это только от недостатка старательности, никак не из-за программы. И вот еще что, резисторы и конденсаторы после установки имели одинаковые номиналы, но двойной щелчок левой клавишей мышки по ним открывает диалоговое окно Device Properties (Свойства элемента), в котором легко задать нужное значение. Если надпись попадает на рисунок другого элемента схемы, ее можно выделить (она становится красной), а затем перетащить мышкой в более подходящее место. Резистор R1, который нужен в реальной схеме для питания электретного микрофона, я оставил для сохранения «отчетности», и не изменил значения катушек L1 и L2, поскольку не знаю пока их индуктивность. Первое, что следует сделать, будь то программа EDA или макетная плата, проверить потребляемый схемой ток, тем более что я забыл изменить напряжение батарейки VI, оставив исходное значение в 10 В. Заметив на инструментальной панели пробник (чуть левее увеличительного стекла), я попытался запустить симулятор, но меня сразу «поправили»:
Рис. 5.3. Сообщение об ошибке при первом запуске симуляции После просмотра, согласившись с предложением, файла ошибок (error file), я предполагаю, что программе не понравилось в первую очередь то, что конденсаторы СЮ и СП соединены вместе, но не присоединяются к чему- либо еще. Добавляю резистор с большим сопротивлением, которого нет в оригинальной схеме. Вновь запускаю симуляцию. Теперь сообщений об ошибках нет, но и результата я не вижу. Следующее предположение — неправильный подход к измерению. Пытаюсь отыскать миллиамперметр (или другой подходящий инструмент) в меню обозревателя компонент в разделе Instruments, и нахожу Multimeter, который переношу на схему. В открывающемся окне диалога свойств мультиметра устанавливаю опции измерения тока Current и постоянного тока DC. Обрываю соединение у плюса батарейки, чтобы подключить мультиметр последовательно со схемой. В этом месте моя работа счастливо застревает. Я могу измерить мультиметром напряжение, а с током не получается. Вопрос измерений очень важен, но меня устроит любой способ измерения тока и напряжения. Я не предполагаю покупать программу, следовательно, нет намерения проверять правильность работы всех ее компонент. Надумаю покупать, тогда и буду разбираться. Сейчас я хочу измерить ток. Программа имеет весьма удобный инструмент - пробник, который я могу перемещать по схеме во время симуляции и подключать к любым точкам схемы. Напряжение он отображает исправно, а с током не получается. Чтобы понять, не работает что-то в программе, или плохо работает моя интуиция, я упрощаю схему (рисую новую): X CircuitMaker - |t):lhe_J\4U-electronic\bugs\UNTITLED.CKT* 100%] File Bit View Options Macros Smiation Wave Help Рис. 5.4. Измерение потребляемого схемой тока с помощью пробника При перемещении пробника по схеме на нем появляются значки: «V» на проводах, «I» и «Р», когда пробник попадает на элементы схемы. В данном случае, нажав левую клавишу мышки возле вывода резистора R1, когда на пробнике появился значок «I», я получаю ток в 10 мА на экране отображения графики. Если щелкнуть по этому экрану правой клавишей мышки, то можно поменять цвет фона. Мне в данный момент удобно использовать белый фон. Я видел появление значка тока на пробнике в предыдущий раз, но значение тока так и не получил. Нет, так нет. Воспользуюсь тем, что могу получить значение мощности (если смогу):
Circuit Make i [D:\he_3\4D-e1ectronic\bugs\bug.CKT" 100%] —1=M File fdit View Options Macros Sndaoor Wave Help gBBBla* + Az/>Qi§)b<i>&?-o e rugaиёе Рис. 5.5. Получение значения мощности при симуляции Попутно на рисунке 5.5 я отметил пункт в меню Preferences, который открывает диалоговое окно настройки вида графики. И обратите внимание на резистор R7 = 100 кОм, его нет в схеме, но выше я говорил, что этот резистор добавлен в предположении, что его отсутствие не позволяет симулировать работу схемы (не более, чем предположение). Перед запуском симуляции можно открыть окно настройки режимов симуляции с помощью пункта меню Simulation - Analyses Setup... В диалоге задаются опции измерения тока, напряжения и мощности источника и устройств, достаточно нажать на клавишу Analog Options...: Node Voltage, Supply Current, Device Current and Power. Значение мощности, как можно разглядеть на рисунке, 69 мВт. При напряжении 10 В это соответствует току 6,9 мА. Что меня смущает теперь? Не слишком ли мал ток. Я понимаю схему следующим образом - первый каскад служит для усиления сигнала от микрофона, второй каскад - это генератор высокой частоты, а последний каскад - усилитель мощности ВЧ сигнала. Ток, как мне кажется, слишком мал для работающего генератора. Пробую это проверить, устанавливая пробник на коллектор транзистора Q2. Ага! Похоже, не работает. Ничего я не вижу кроме прямой линии на уровне 10 В. Не работает. Ага! Для начала попробуем уменьшить напряжение батарейки VI до 5 В, дважды щелкнув по ней, и заменив значение в окне диалога Label-Value на 5V. В некоторых случаях изменение напряжения питания создает условия благоприятные для работы схемы, или так изменяет параметры элементов, что меняется характер работы всей схемы. Сейчас это не помогает, зато у меня появляется идея — я не задал конкретные типы транзисторов, используя идеальные модели, не пора ли их «офизичить»? Двойной щелчок по элементу открывает диалоговое окно, в котором отображены реальные типы транзисторов с их краткими характеристиками. Я выбираю (достаточно произвольно) типы транзисторов. В настройках режима анализа от прошлых экспериментов у меня остались выбранными только две опции: Transient/Fourier и Show run-time test points (показывать тестовые точки при запуске). Я вновь запускаю симуляцию:
Е» CircuitMaker - [D:Uie 3\4D-electronic\bugs\bug_1.CKT1OO%] File Edit View Options Macros SmJabcn Wave Help Г Рис. 5.6. Проверка работы задающего ВЧ генератора Первое впечатление — полное разочарование. Осциллограмма мне кажется такой же, что и в предыдущих экспериментах. Но появившаяся в правой части окна графического вывода некоторая шероховатость на графике наводит на мысль изменить общее время анализа, увеличив его в 10 раз. Если генератору нужно некоторое время «на раскачку», то при коротком наблюдении, я могу не увидеть полномасштабной работы. Я изменяю время наблюдения, нажав на клавишу Transient/Fourier, в окне настройки режима анализа: Рис. 5.7. Окно настройки режима анализа В новом окне, которое открывается после нажатия на клавишу, я меняю значение Stop Time с 5.00uS на 50.00uS. Запускаю симуляцию, получая следующий сигнал на коллекторе транзистора Q2, на котором, я полагаю, собран задающий ВЧ генератор:
[g Circuit Make) [0 Ahe 3\4D-Mectionic\biig<\bug_1.CKT’ 100° ] - jgjKf File bit View Options Macros Smiation Wave Help в e Q в H A/|/>Q Ена<|> И ? e ¥ О BESива Рис. 5.8. Работа генератора ВЧ Квадратик (зеленый в оригинале) с буквой А между конденсаторами С7 и С8 - это точка, куда я поместил пробник. Все чудесно! Похоже, что этот каскад действительно задающий генератор. Но что самое приятное, что программа великолепно справилась и с этим. Теперь мне хотелось бы попять, на какой частоте работает генератор? Удерживая левую клавишу мышки, я обвожу прямоугольную часть графика, а, отпустив клавишу, получаю увеличенное изображение выбранного участка. Проделав маневр несколько раз, я могу ответить на свой вопрос: |е» Спсипмакег [D:\he 3\4D elecironiciougswug 1.CKT 100%] — File bit View Cptwis Macros ^miation Wave Help Рис. 5.9. Увеличенное изображение сигнала в окне графического вывода Период сигнала приблизительно определится разницей между двумя значениями: 42,4 мкс и 42,6 мкс, — то есть, составит 0,2 мкс, и будет соответствовать частоте 5 МГц. Частота не соответствует допустимой частоте
для применения в любительских радиоустройствах. В самом начале главы, когда я рисовал схему, я оставил значение индуктивности, задаваемое «по умолчанию», поскольку не знал реальной величины. С другой стороны, изменение параметров схемы может сказаться на работе программы. Может быть, мне просто повезло, что я не менял значение индуктивности, а, если бы на схеме была указана индуктивность, и я поменял ее раньше, схема так и не заработала бы? Вопрос важный в плане работы прогрмьчл. Попробуем уменьшить значение индуктивности L1. Я уменьшаю ее в десять раз до 0.1 мкГн. Получив после запуска симуляции новую картинку сигнала и увеличив ее, я использую маркер, чтобы получить значение времени. Для этой цели есть инструмент Measurement Cursors, который можно видеть слева в окне с вкладкой Wave. Сейчас оба курсора в режиме off. Я включаю первый из них, чтобы убедиться, что частота возросла: |l» CiicuilMakei -[D:\he 3\4Defectronic\bugs\bug_1 СКТ* 10v- ]| б1 File Edit Vtevt Opticns Macros Stfndaticn Wave Help 8 D В H В >t T A 7 p Q Е1Г <l> И ? о ¥ О ЕНИЕВВ) Рис. 5.10. Изменение рабочей частоты задающего генератора Под включенным курсором отображается временная метка, на которую установлен курсор. Частота, как тому и должно быть, возросла. Оставим ее пока в покое, при необходимости можно подобрать частоту, или рассчитать значение индуктивности для требуемой частоты. Меня удовлетворяет тот факт, что программа работает с модифицированной схемой. А десятикратное изменение параметра элемента не приводит к отказу в работе, что и было предметом сомнений. Сейчас можно посмотреть, как работает первый каскад. Вместо микрофона включим генератор, который можно найти в меню компонент в подменю Instruments - Signal Gen. Включив его в схему, я оборву конденсаторную связь между первым и вторым каскадом, удалив соединения конденсатора, а затем, чтобы облегчить себе жизнь впоследствии, я разверну его на 90° и присоединю к проводам питания. Моделирование в программах EDA может не работать, если есть элементы схемы, не подключенные ни к одной из цепей, поэтому я включаю конденсатор, как элемент питающей сети. А отключил я конденсатор с целью изолировать первый каскад (разделяй и властвуй!). Соседние каскады всегда оказывают влияние на исследуемую часть схемы. Прием выделения участка схемы для изолированного исследования достаточно часто применяется на практике. При создании сложного устройства полезно собирать его на макете отдельными функциональными узлами. II, хотя это замедляет работу в данный момент, полезно узел разбить на каскады, исследовав работу каждого из них в отдельности. Позже это даст уверенность в работоспособности каждого из каскадов схемы, обеспечит необходимой информацией о том, как сказываются параметры и элементы на работе каскада. А это, в свою очередь, сэкономит много сил и времени при исследовании полной схемы устройства. Меняя значение сигнала генератора, я добиваюсь следующей картины:
|Ъ: CircuitMaker - [DAhe JWPolectionic\btig<Abug 1 CKT* 100° ] - £ He git View Options Macros Smiatjon Wave Help । । «два Рис. 5.11. Проверка усилителя НЧ Я выбрал частоту низкочастотного генератора 50 кГц. Это явно выходит за рамки реальной работы схемы, но так легче наблюдать сигналы, и думаю, выбор не приведет к серьезным ошибкам в понимании работы схемы. Он не должен сказаться и на результатах моделирования. Как правило, каскады предварительного усиления сохраняют свои параметры в достаточно широком диапазоне частот, далеко уходящем за рамки реальных нужд. Но если возникают сомнения, лучше использовать реальные значения всех параметров проверки. Например, в данном случае могло бы получиться так, что разделительный конденсатор между генератором и исследуемым каскадом, имел бы заниженную емкость. Это могло бы слишком завысить низшую рабочую частоту каскада. Проверив каскад на частоте 50 кГц, я, удовлетворенный его работой, мог бы долго пытаться понять, почему слишком слаб сигнал от микрофона, пока не увеличил бы емкость конденсатора в несколько раз. Проверка на частоте 300 Гц показала бы, что конденсатор работает как фильтр, срезая частоты ниже 5 кГц. Не думаю, что в конкретной схеме есть такие проблемы, но, в общем случае, конечно, чем ближе к реальности, тем лучше. Величина сигнала от имитатора микрофона, при которой каскад работает вполне сносно, составляет 10 мВ. Не знаю, какой сигнал дает реальный электретный микрофон, но порядок величины, вероятно, правильный. Теперь, восстановив соединение, можно посмотреть сигналы в любых точках схемы. Я приведу еще один рисунок:
CwcuitMaker - [D \he 3WD-electionic\bugs\bug 1 CKT* 1004 He bit View Options Macros Smiatjon Wave Help J \ T ransteril i6 ndysts Г Рис. 5.12. Наблюдение мощности на коллекторе транзистора усилителя ВЧ Прежде, чем перейти к еще одной схеме, которая называется «Жучок для начинающих», я хочу сказать, что для наладки схемы на макетной плате мне потребовалось бы много больше сил и времени. Думаю, вы согласитесь со мной. Кроме того, вспоминая один из практических случаев, могу сказать, что наладка на макетной плате связана с несколькими дополнительными трудностями. Но из этого не следует делать вывод, что наладка на макетной плате не нужна. Какие же трудности? Есть схемы чувствительные к размерам элементов. При попытке заменить на время наладки резистор, предназначенный для поверхностного монтажа, резистором ОМЛТ-0.25Вт, я обнаружил, что схема полностью престала работать. А для наладки еще удобнее было бы использовать переменный резистор! Что тут можно поделать? Перепаивать несколько раз резистор размером 0.5 мм на 0.5 мм удовольствие «ниже среднего». Встречаются схемы, по виду правильные (созданные, например, собственными силами), которые иначе не назовешь, как капризными. Отладив такую схему, а на нее может повлиять такая мелочь, как прогрев в процессе наладки или паики, ты не уверен, будет ли она работать завтра. Для обретения некоторой доли уверенности следует проверить работу схемы при разных вариациях параметров, включая температуру. Найдется ли смельчак, который станет утверждать, что проделать эту работу на макетной плате легче и быстрее? Но это только моя точка зрения. Вторая схема тоже найдена мною на радиолюбительском сайте в Интернете. Что было по поводу этой схемы на форуме? «Вот собрал "жучок для начинающих". Все подключил - вроде бы работает, но плохо. Чувствительность очень низкая. Вели что-то сказать в микрофон, в приемнике ничего не слышно (то есть слышно, но ОЧЕНЬ тихо). Если в микрофон подуть, то этот звук слышен хорошо. Может проблема в транзисторах (взял 368А1 и вместо 3130А9 его импортный аналог 2SC1623)? Микрофоны пробовал всякие. Вместо R1 на ЮкОм пробовал ставить подстроечный и (хмм..) подстроиться. Наибольшая чувствительность на 12кОм. В чем может быть проблема? Господа электронщики, помогите... С уважением...» Не совсем понятно с транзисторами, в той схеме, что я нашел, указаны КТ368, но, возможно, в разные времена были разные варианты схемы. Схема, скорее всего, подкупает начинающих малым количеством деталей, но этого нельзя сказать о простоте в наладке. Чем меньше деталей, тем меньше возможностей повлиять на работу схемы. Кроме того, изменение одного параметра может сказываться на работе нескольких элементов схемы. Улучшение работы одного компонента при попытках наладить устройство может отрицательно сказываться на работе другого компонента, полностью маскируя это улучшение и создавая впечатление, что замена никак не сказывается на
работе устройства. Конечно, именно для «жучков», чем меньше деталей, тем бесспорно лучше - выигрываешь в габаритах. Но тогда не следует исключать и такой фактор, как конструкция устройства. Все габаритные изменения могут сказываться на работе схемы через паразитные элементы весьма причудливо. Первая пробная схема с заменой микрофона генератором выглядит так: л CircuitMaker - |U:Hie_J\4U-eiectronicwugs4)ug_beg.LKl’ ltiu%] Fte Edit View Options Macros Smiabon Wave Help 8 вена, >t a f p Q 0<> и i e о аинв Рис. 5.13. Схема «жучка для начинающих» в программе CircuitMaker Некое подобие высокочастотного сигнала в начале графика, соответствующее моменту включения питания, заставляют меня думать, что лучше было бы при первых испытаниях использовать вместо синусоидального генератора генератор прямоугольных импульсов. К этой же мысли приводит и замечание, что если в микрофон подуть, то звук слышен хорошо. Соображения, еще раз напомню, что не специализируюсь в этой области, для изменения условий эксперимента следующие. В схеме я не вижу генератора. В контуре, состоящем из катушки L1 и конденсатора СЗ, могут возникать высокочастотные колебания при появлении сильных воздействующих факторов, как «взрывной» звук, когда дуешь в микрофон. С моей точки зрения (не обязательной к принятию) эти высокочастотные колебания в контуре должны носить затухающий характер. Чем чаще следуют «взрывные» звуки, тем устойчивее радиосигнал. Синусоидальный сигнал в качестве источника не оказывает резкого воздействия на контур, тогда как прямоугольные импульсы, то, что больше подходит по характеру, если следовать моим рассуждениям. В этом случае сигнал на коллекторе транзистора выглядел бы так:
CiicuitMakef -[D:\he 3V4r>-»lectionic\b4g,Abug_beg.CKT* 100%] File Edit Vjew Options Macros SemJattn Wave Help g свйВ k Seating Y Offset |-2QOO Fil* I ______ Measuement Cursors Wave | I View S Single Cell C All Cells | Cursor 2- Cutset 1 \Opetaiing Point ДТ ransient Analyse Г Рис. 5.14. Работа схемы «жучка для начинающих» с генератором меандра Кроме замены источника низкочастотного сигнала, генератора, можно попробовать подбор транзисторов, и изменение величины резистора R2: 2 [0fT Wave | pView S Single Cell Г All Cells I'-» CiicuitMaker -[P:\he_3\4D-electronic\bttgs\bog_beg.CKT* 100%] File Edit View Options Macros SamJation Wave Help g DBGB * Seating и Meabuetnent Cursors I Cursor 2-Cursor 1 Рис. 5.15. Замена транзистора в схеме «жучка для начинающих» Как видно из осциллограммы, высокочастотные колебания выражены заметно ярче. Если добавить, что при удачном стечении обстоятельств, я имею в виду конструктивные особенности устройства, паразитные элементы схемы могут превращать каскад на транзисторе в генератор, и что обычная речь в значительной мере состоит из резко меняющихся сигналов, и что схема, возможно, проявляет чувствительность к типу транзистора, то... Итак, цель, поставленная в этой главе, достигнута. Я рассказал о последней из программ для платформы Windows. Хорошая программа, но дорогая, во всяком случае, для меня. Думаю, если вы купите эту программу,
она будет снабжена подробным руководством, множеством примеров, н вам доставит удовольствие разобраться со схемами, хотя бы с темп, что описаны выше, с большей тщательностью, чем это сделал я. А я тем временем перемещусь домой за свой компьютер с операционной системой Linux, где чувствую себя уверенней н спокойней.
Глава 6. А почем у вас Hi-End? Qucs, Linux Захотел сделать двухканальный усилитель где-то по 20 Вт на канал. Опыт минимальный, но есть упёртосъ и желание разобраться. Но не могу выбрать из множества схем. Подскажите, что лучше делать на покупной микросхеме или на транзисторах? И если кто знает реально работающие схемы, желательно с объяснением по наладке, пожалуйста поделитесь. Если бы мне понадобился усилитель, я сегодня, скорее всего, использовал бы микросхему. Можно ли ее использовать для построения очень качественного усилителя класса Hi-End, не знаю, но думаю, что нет. И, сказать по правде, я не думал, что сегодня радиолюбители интересуются усилителями для звуковоспроизведения. Однако на форумах, как выяснилось, это одна из популярнейших тем. В последнее время мне привелось слышать звучание системы стоимостью, по меньшей мере, в несколько десятков тысяч долларов или дороже. Она звучит красиво. Спросить любого нормального человека, может ли радиолюбитель создать нечто подобное, думаю, он незамедлительно ответит: «Нет». Но это нормальный человек. А если задать этот вопрос специалисту? В чем я вижу разницу между нормальным человеком и специалистом? Поясню, нормальный человек, это человек, полностью вписывающийся в нормы сегодняшнего дня, то есть, полностью доверяющий всему, что рассказывает ему производитель о «чуде», которое он продает. Производитель не может иначе. Да и нормальный человек, как мне кажется, тоже. Специалист же не доверяет, а измеряет. Он высказывает мнение по результатам проверки. Я плохо знаю современное звуковоспроизведение, и склонен больше доверять мнению специалиста, статью которого прочитал в Интернете. Это статья Николая Сухова. По его мнению, затратив сумму порядка пятидесяти долларов, радиолюбитель может создать усилитель, который не уступит по качеству звучания очень дорогостоящему промышленному. Я совершенно с этим согласен. Почему? В первую очередь, насколько я знаю, автор давно и успешно работает в этой области. Кроме того, по личному опыту я знаю, что большинство людей не отличит хорошего качества звучания, от очень хорошего. Так устроен человек. И, наконец, вспоминая историю тридцатилетней давности, я могу сослаться на собственный опыт. Мне понадобилось сделать звуковой тракт, который отличался бы в лучшую сторону от всего, что человек мог услышать дома или у знакомых. Сделать это надо было «из подручных средств». К сожалению, я не найду ни схемы, ни даже рабочих записей, относящиеся к вопросу, но в памяти осталось, что, взяв за основу усилителя стандартную для тех времен схему, прочитав несколько статей, я использовал в усилителе «коррекцию по опережению», режим АВ и фильтр, срезающий частоты выше 20 кГц на входе усилителя. Как сейчас помню, при организации стерео каналов я использовал решение, предложенное, если не ошибаюсь, фирмой Philips, то есть, выделение низкочастотной области и суммирование сигнала обоих каналов на входе общего усилителя низких частот. Расчет низкочастотной акустической системы я провел по методике, изложенной в брошюре Э. Виноградовой «Конструирование громкоговорителей со сглаженными частотными характеристиками», издательство «Энергия», Москва, 1978г. К слову, мне понравился сам подход к конструированию низкочастотного громкоговорителя, как построение фильтра с заданными характеристиками. Аппарат разработки фильтров к тому времени был хорошо изучен, а его применение при разработке закрытых громкоговорителей или фазоинверторов, очень удобно. Итогом этих грамотных рекомендаций специалистов стала система, которую отличал достаточно мягкий звук. Дополнив это квази-квадрофонической приставкой: на тыловые громкоговорители подавался разностный сигнал правого и левого каналов через ревербератор, - я получил то, что сегодня называют «3D-sound». Прежде, чем все это было окончательно забршено, я, слушая одну из грампластинок, к своему удивлению обнаружил, что при записи использовался микрофон с направленностью восьмерка - две стороны микрофона работают одинаково, что часто используется при студийных записях дуэтов, располагая исполнителей лицом друг к другу. Эффект был настолько явным, и настолько ярким, что я стал прослушивать другие записи, обнаружив и другие не менее эффектные звуковые картинки. Например, одна из записей начиналась так, как если бы исполнители начинали свою композицию где-то в тесной маленькой комнатке, затем проходили по длинному узкому коридору, и, вдруг, вырывались на огромную площадь, устилая ее звуком от края и до края. Жаль, что я забросил эти эксперименты. Звуковые образы, порождаемые обычными стерео записями, порою были очень и очень интересны. Но это присказка. А о чем будет сказка? Есть такая программа, Qucs. Ее название - аббревиатура английской фразы «Почти идеальный симулятор схем». И мне интересно, как поведут себя схемы тех давних времен в этой программе. Вначале нарисуем «классический» УМЗЧ (тех давних времен):
Cues 0.0.10 - Проект: UMZ □ ЙЕ Файл Правка Вставка Проект Инструменты Моделирование Вид Справка , дискретные компоненты Резистор Резистор US НИ j_ Конденсатор Катушка Земг индуктивност и Порт подцепи Трансформат ор Устройство Измеритель связи тока , Г х] <• ъ РьЛйОъ С» Я »*) «1 $ S * / Si ® 4 о- & Э симметричны развязка от й постоянного трансформат тока ор - "У подвод Смещение Т ПОСТОЯННОГО тока {& •> S- Аттенюатор Усилитель Изолятор Циркулятор Гиратор Фазосдвига* нет предупреждений 0 : О] Рис. 6.1. Схема УМЗЧ в программе Qucs Чуть запоздало, но напомню, что после запуска программы в разделе Проект основного меню выбираем Новый проект, который я назвал UMZ. В окне слева выбираем вкладку Компоненты. Сейчас открыт раздел компонент Нелинейные элементы, в котором можно выбрать транзисторы и диоды. Выбрав первый компонент курсором мышки, перемещаем курсор, к которому привязан контур элемента, в нужное место рабочего поля. Щелкнув левой клавишей мышки в нужном месте, оставляем элемент, перемещаем курсор в новое место, где можем оставить второй элемент, если это нужно. Если второй элемент этого типа не нужен, можно нажать клавишу ESC на клавиатуре и перейти к элементам другого типа. Для выбора элементов другого типа в левом окне рядом с надписью «нелинейные элементы» есть стрелочка, открывающая окно выбора набора элементов. Qucs 0.0.10 - Проект: UMZ Файл Правка Вставка Проект Инструменты Моделирование Вид Справка дискретные компоненты дискретные компоненты I источники линии передачи данных нелинейные компоненты цифровые компоненты файловые компоненты виды мод елирования диаграммы рисунки Порт подцепи Трансформат Q Е В ЛайИЯОЙ * с- Сл.'ки.Оъ U SlOfi $ fi f/S@ 4 симметричны развязка от й постоянного трансформат тока ор *3 т подвод Смещение Т постоянного тока Ш- *£> S Аттенюатор Усилитель Изолятор JI И ® Циркулятор Гиратор Фазосдвига Устройство Измеритель связи тока нет предупреждений 0 :0, Рис. 6.2. Окно выбора компонент в программе Qucs После выбора и расстановки компонентов я проделываю еще одну операцию, удаляю лишние надписи. Компоненты появляются с отображением многих свойств, что полезно при реальной работе, но мешает разборчивости рисунка. После двойного щелчка по компоненту открывается диалоговое окно свойств:
Рис. б.З. Диалоговое окно свойств компонента Для удаления с экрана лишних надписей, отображающих свойства, следует снять флажок «показывать на схеме». В окне изменения свойств компонент можно изменить все параметры компонента, если их знать. Убрав все лишнее с экрана, можно соединить элементы схемы. Для этого есть раздел основного меню Вставка-Проводник, или клавиша на инструментальной панели с изображением проводника. После установки все элементы отображаются с выводами в виде красных кружочков. Подводя курсор мышки, на острие которого появляется перекрестие направляющих, к этому выводу (или к уже нарисованному проводнику), щелкаем левой клавишей мышки и проводим проводник к другому нужному выводу, где повторно щелкаем левой клавишей мышки. Красные кружочки превращаются в синие кружочки соединения. Первое, что следует сделать, закончив чертить схему и задав все нужные значения параметров, это установить постоянное напряжение на выходе усилителя равным половине питающего напряжения. Для этого оставляем режим «Моделирование на постоянном токе», задаем метку в нужной точке «middle» (основное меню Вставка-Метка проводника), удаляем режим «Моделирование переходного процесса», запускаем моделирование, и выбираем в окне компонент в разделе Диаграммы форму отображения Табличная. Переносим тип диаграммы в открывшееся, но пока пустое окно графического отображения, и, дважды щелкнув по таблице левой клавишей мышки, открываем диалоговое окно выбора функции для отображения (в данном случае я выбираю метку «middle»). В появившейся таблице отображается значение напряжения в точке «middle». Меняя величину сопротивлений R2 и R3 с помощью диалогового окна свойств компонент, я подбираю значение близкое к половине питающего напряжения. Есть еще, что я забыл упомянуть: в разделе Дискретные компоненты меню компонент я увидел измеритель тока, который перенес на схему в то место, где идет провод от плюса батарейки. Он встал там, как будто всегда там был. Но после первой попытки моделирования я понял, что подключил его наоборот - значения тока получились отрицательными. Чтобы исправить это я поступил просто - щелкнул по амперметру правой клавишей мышки, а в открывшемся меню выбрал пункт Отобразить относительно осн Y. В таблице появилась возможность отобразить и общий ток, потребляемый схемой. Для этого достаточно еще раз провести моделирование (кстати, режим не работает, если вы пытаетесь сделать это на вкладке графического вывода), дважды щелкнуть по таблице, а в открывшемся диалоге свойств графики дважды щелкнуть по появившемуся значению Рг.1. Таблица, которая получилась у меняв результате этих манипуляций, выглядит следующим образом:
<=> Qucs 0.0.10 - Проект: UNZ Файл Правка Вставка Проект Инструменты Моделирование Вид Справка Рис. 6.4. Таблица режимов работы схемы по постоянному току в Qucs Начальный ток великоват и следовало бы подобрать режим тщательнее, но мне, признаться, не терпится попробовать, как все пойдет дальше. Пусть недоделки останутся на моей совести. Я выбираю, как видно на рисунке 6.2, режим моделирования переходного процесса, добавляю к источнику сигнала метку «signal», в свойствах моделирования меняю время остановки на 10 ms, и запускаю моделирование. Завершив его, спешно выбираю Декартовская в разделе видов Диаграммы, а в свойствах диаграммы выбираю двойным щелчком мышки метки «signal» и «out» с типом dep. Притом не забываю удалить старые метки «middle» и «Рг.1» с помощью клавиши окна диалога Удалить кривую, предварительно выделяя их щелчком. Добавив вместо них новые с теми же параметрами, я получаю долгожданную картину: Qucs 0.0.10 - Проект: UMZ LJ оз |Х) Файл Правка Вставка Проект Инструменты Моделирование Вид Справка J у IJ Й $ 4 4 Z » нет Ппод\<ппеждений 0 • О' Рис. 6.5. Первые графические диаграммы усилителя мощности Да-а! Не хотел бы я услышать этот сигнал в своей комнате и с хорошей громкостью! Не думаю, что виновата программа. Скорее всего, я что-то не понял. Можно попытаться «замести все неприятности под ковер», получив красивые рисунки, и рассказывать дальше, какой я хороший специалист в области построения усилителей мощности, но можно подойти к этому и иначе, следуя крылатой фразе Остапа
Бендера: «Миллионер из меня не получился, придется переквалифицироваться в управдомы». На сайте создателей программы Qucs есть целая книга, которая называется Qucs Work Book. Пора заглянуть в нее. В разделе, посвященном моделированию, я обнаруживаю описание построения модели таймера 555. Сейчас таймер мне совсем не нужен, но, насколько мне помнится, я пытался использовать таймер в другой программе EDA, и не сразу получил положительный результат. Я, пожалуй, повторю, все что делает автор книги Work Book, с тем, чтобы по дороге набераться опыта. А затем с блеском продемонстрирую свое умение! Неплохая стратегия. Начинаем. Открываем седьмую главу «Моделирование таймера 555». Прокручиваем введение, находим функциональную схему. Ага! Скорее всего, в программе используется механизм иерархии проекта, то есть создаются подсхемы, из которых потом получается окончательная схема. Все понятно. Как говорится, шашки наголо, в атаку! Я дважды прохожу путь, описанный автором модели, и я не верю своим глазам. Все хорошо и красиво, но, если у автора модель работает, то у меня она не работает, и работать не желает. Ну, уж если так, то придется убрать шашки, и неспешно проделать всю работу по шагам. Автор начинает построение модели с переключающего компаратора. Соберем эту подсхему: Qucs 0.0.10 - Проект: subclr Файл Правка Вставка Проект Инструменты Моделирование Вид Справка jE ЙЯЧО Я * 'Z d Й Ъ 4 - / ± XI Содержание 'subcir' Примечание © Схемы rner_tng.scn 3-портовый t'mer_thresh.sch 3-портовый t'mer_discharg... 3-портовый t’mer_digital_c... 5-портовый timer_amp.sch 3-портовый tirner_555.sch 8-портовый mono_555sch cirs.sch cir4.sch cirS.sch cir2.sch cirl.sch VHDL ® Окна просмотра . ® Наборы данных Другие нет предупреждений 0 : 0, Готово. Рис. 6.6. Построение компаратора для таймера 555 Все компоненты, используемые при построении, стандартные. Обозначения я стараюсь сделать похожими на те, что использует автор. Операционный усилитель я выбираю в разделе меню компонент Нелинейные компоненты, источник тока (в кружочке со стрелкой), в разделе источников, а три порта P trig, Ntrig, Otrig в разделе дискретных компонент. Третий порт, чтобы соединить, как показано на схеме, я отражаю относительно оси Y, используя правую клавишу мышки. Заодно снимаю флажки у портов «показывать на схеме», а окне редактирования заменяю названия Pl, Р2, РЗ на «более благозвучные» Ptrig и т.д. Значок «Р» для меня означает прямой вход усилителя, a «N» инверсный. Изменив значение по умолчанию 1 та на 500 nA у источника тока, кстати, если я не ошибаюсь, то программа не очень критично относится к написанию, принимая, например, значение 500пА (без пробела), задав нужные значения резистора и конденсатора, соединив все, я почти готов двигаться дальше. Но прежде, чем переходить к следующей подсхеме, я проверяю, работает ли моя схема? Компаратор в данном случае построен на операционном усилителе (ОР1), значит можно подать сигнал на вход и посмотреть, что происходит на выходе. Для этого я добавляю к схеме источник переменного напряжения и делитель напряжения, питающийся от батарейки, для задания опорного напряжения, как и положено сравнивающему устройству. Пока не забыл, собрав схему, как показано на рисунке 6.6, я нахожу в разделе основного меню Файл пункт Изменить обозначения схемы. Нажав на этот пункт меню, я получаю иной вид схемы:
Cues 0.0.10 - Проект: subclr В 63 6? Файл Правка Вставка Проект Инструменты Моделирование Вид Справка Рис. 6.7. Создание подсхемы компаратора Надпись N trig, чтобы она мне не мешала, я отражаю относительно оси Y, а затем использую ввод текста из открывшегося слева, как это видно из рисунка, меню графического оформления Рисунки. Для этого достаточно щелкнуть по компоненту Текст, затем по рисунку в нужном месте и ввести рядом с выводом N trig букву «N». Отсутствие этих надписей в дальнейшем может оказать плохую услугу, когда, получая прямоугольник с выводами 1, 2, 3, вы будете гадать, где у вас какой из выводов? Проделав это графическое дополнение рисунка подсхемы — одна из моих ошибок в первом случае, мне кажется, была в том, что я не сделал этого - я в разделе Файл основного меню нахожу пункт Изменить схему, который сменил свое название, будучи раньше Изменить обозначения схемы. Щелкнув клавишей мышки по этому пункту меню, я возвращаюсь к прежнему виду схемы, вношу необходимые добавления для проверки, получаю в итоге следующую схему: Qucs 0.0.10 - Проект: subclr Файл Правка Вставка Проект Инструменты Моделирование Вид Справка <Е I IX! содержание ’subcir' |Г 1римечание ) в Схемы tirner_trig.sch З-портовый tirner_thresh.sch 3-портовый timer_discharg... 3-портовый timer_digital_c... 5-портовый timer_amp.sch 3 timer_555.sch f mono_555.sch cir5.sch cirAsch cir3.sch cir2.sch cirl .sch VHDL ® Окна просмотра.. 0 Наборы данных Другие 3-портовый 8-портовый моделирование переходного процесса □ Е) и TR1 Type=lin Start=O Stop=!0 ms Готово. нет предупреждений 0: О Рис. 6.8. Схема проверки компаратора После запуска моделирования схемы получается следующий результат:
о Cues 0.0.10 - Проект: subclr Файл Правка Вставка Проект Инструменты Моделирование Вид Справка Рис. 6.9. Диаграммы проверки компаратора Прямая линия на нижней диаграмме (opv.Vt) показывает опорное напряжение. Поскольку схема работает, и я не вижу ничего неправильного в ее работе, я проверяю аналогичным образом второй компаратор (THRESH). При проверке работы подсхемы усилителя, я обнаруживаю еще одну свою ошибку. Вместо компонента Источник напряжения, управляемый напряжением, я впопыхах использовал Источник напряжения, контролируемый током. Рисунки очень похожи, а различия в работе есть. И, наконец, я нахожу еще одну ошибку. Создавая подсхему макромодели цифровой логики, хотя в тексте черным по белому написано: «Сигнал сброса инвертирован, а затем соединен по OR с выходным сигналом порогового компаратора», — это не помешало мне включить вентиль ИЛИ-HE. Но в книге написано еще много интересного. После всех проверок, собранный мной таймер, я обозначил его LM555. в схеме осциллятора выглядит так: Cues 0.0.10 - Проект: multl osc ы II Файл Правка Вставка Проект Инструменты Моделирование Вид Справка Н£т Пполчл Рис. 6.10. Работа модели таймера 555 в программе Qucs Моделирование схем, подобных таймеру 555, в программах EDA, насколько я понимаю, достаточно сложно. Это связано, в первую очередь, со смешанной структурой оригинальной микросхемы наличием логических и аналоговых элементов. Однако программа Qucs (вероятно, с помощью автора модели) прекрасно с этим справляется. Осциллятор, чтобы легче было повторить результаты, я беру из описания. Схема осциллятора «классическая», и работает она «классно»:
Qucs 0.0.10 - Проект: multi OSC П E IX Файл Правка Вставка Проект Инструменты Моделирование Вид Справка Рис. 6.11. Диаграммы работы осциллятора на модели таймера 555 Проделав этот интереснейший экскурс в книгу Qucs Work Book, обогатившись знанием и опытом, вернемся к моей злополучной попытке «оживить» в программе простейшую схему усилителя мощности. А, ведь, я-то, ничтоже сумняшеся, хотел поговорить о динамических искажениях! Я думаю, если не получится, то будет это только моей виной, но никак не программы. Чтобы не повторять старых ошибок, лучше сделаю новые — изменю схему усилителя мощности. Новая схема тех же лет, что и предыдущая. В схеме я задал больше меток, чтобы можно было проконтролировать больше точек схемы, измерить напряжения, посмотреть сигналы: Cues 0.0.10 - Проект: UMZ и ш к Файл Правка Вставка Проект Инструменты Моделирование Вид Справка ^диаграммы Декартовская Полярная Табличная Диаграмма Смита Диаграмма Смешанная Смита полярная-Сми (проводимост та Таблица истинное™ Смешанная Трехмерная Смита-полярн декартовская ая Круговая ВременнАя диаграмма диаграмма нет предупреждений 0:0 Рис. 6.12. Новая схема усилителя мощности в программе Qucs Запуская моделирование переходного процесса, я использую время окончания 40 миллисекунд со 100 шагами на вкладке Развертка свойств моделирования, и выключаю параметр initialDC на вкладке Свойства, если процесс моделирования застревает. Временами появляется предупреждение (правый нижний угол, где сейчас написано «нет предупреждений»), тогда я пытаюсь что-то изменить в схеме, чтобы процесс моделирования продолжался. Насколько я понял из сообщений предупреждения, это происходит из-за того, что
якобиан, создаваемый при моделировании, имеет сингулярность. Такие предупреждения получались у меня, когда я пытался установить нужный мне режим по постоянному току, но, поскольку режим не был столь важен, я выбирал иной режим работы схемы, получал результат в виде диаграмм и таблицы, склоняясь к мысли, что с этим, если понадобится, я смогу разобраться позже. Результирующие диаграммы работы схемы рисунка 6.12 выглядят следующим образом: □ ЬЕ Qucs 0.0.10 - Проект: UMZ umz_2.sch 'диаграммы Декартовская Полярная Смешанная пслярная-Сми Диаграмма Смита (проводимост Табличная Диаграмма Смита Файл Правка Вставка Проект Инструменты Моделирование Вид Справка j у И я О з middle. Vt time 195 21 1 22.2 2Z8 22.8 225 0.000404 0.000808 0.00121 0.00162 0.00202 0.00242 0.00283 0.00323 18.8 19.9 20 4 20.5 20.1 13.6 196 165 188 20.6 219 2Z.6 22.6 221 Таблица истинности 1 35 1.5 1 56 1.51 137 0.0Z time □.0Z time Круговая ВременнАя диаграмма диаграмма 0.02. time O.OZ time TlK.vt 108 Pr1.lt 0 0201 0.408 0.781 T1K2.Vt 128 15.5 TKin.Vt 12.2 12.1 12.1 12 11.9 11.9 Смешанная Смита-полярн Трехмерная декартовская 11.9 С 'нет предупреждений 0:0 Рис. 6.13. Диаграммы работы моделирования схемы рис.6.12 Сигнал от источника signal выглядит вполне пристойно, сигнал на выходе out тоже вполне похож на настоящий, не то, что в первый раз. Теперь пора заинтересоваться вопросом об усилении. Если значение амплитуды входного сигнала 0.1 В ясно видно на диаграмме, то для получения значения амплитуды выходного сигнала я увеличиваю диаграмму out.Vt, и пользуюсь подстановкой маркеров. Это легко сделать, нажав на инструментальной панели клавишу с меткой Ml. Полученный треугольничек на конце курсора подводится к нужной точке диаграммы, щелчок левой клавишей мышки, и на экране появляется нужное значение: Qucs 0.0.10 - Проект: UMZ Файл Правка Вставка Проект Инструменты Моделирование Вид Справка Рис. 6.14. Увеличенная диаграмма выходного сигнала с маркерами
Теперь остается сложить два значения: 7.7 В и 8.6 В, - и разделить результат на два. Получаем амплитуду выходного сигнала 8.15 В, и коэффициент усиления усилителя (на частоте 0.1 кГц) около 80. Меня интересует и многое другое - коэффициент усиления без петли общей обратной связи, хорошо бы иметь и частотную характеристику усилителя с общей обратной связью и без нее, хотелось бы посмотреть, как ведет себя усилитель, если сигнал импульсный. Для получения усиления без петли обратной связи (или почти без нее) я увеличиваю значение резистора в цепи общей обратной связи (R15 на рисунке 6.12, внизу схемы) с 2.2 кОм до 220 кОм, и уменьшаю значение входного сигнала до 10 мВ. После запуска моделирования выясняется, что амплитуда выходного сигнала 6.3 В. Следовательно коэффициент усиления равен 630. Теперь попробуем получить частотную характеристику усилителя. Вначале без обратной связи. Для этого я убираю моделирование переходного процесса и добавляю моделирование на переменном токе. В свойствах моделирования задаю диапазон частот от 10 Гц до 1 МГц, а на вкладке Свойства диаграммы устанавливаю флажок «логарифмическая разметка оси X»: Рис. 6.15. Диалог параметров моделирования на переменном токе Рис. 6.16. Диалог свойств диаграммы при моделировании на переменном токе Результат, поначалу, меня несколько ошеломил. Частотная характеристика усилителя мощности без обратной связи для весьма хорошего усилителя была бы линейна до 20 кГц, после чего наверняка имела бы спад в 20-40 дБ на декаду. А здесь:
Qucs 0.0.10 - Проект: UMZ □ ЕВ El Файл Правка Вставка Проект Инструменты Моделирование Вид Справка Рис. 6.17. Первая частотная характеристика усилителя Транзисторы, которые были в ходу в те времена, это, скорее всего, что-то в роде П217. если я не все забыл. Получить на них такое чудо?!. Правильно, когда я читал Qucs Work Book, то осталось в памяти, что модели могут быть идеальные и реальные. Можно было бы и сразу сообразить. В основном меню есть пункт Инструменты, а в нем раздел Библиотека компонентов. Вернувшись к чертежу, щелкая по транзисторам схемы, я удаляю их один за другим, с тем, чтобы, выбрав из библиотеки реальные компоненты, заменить ими идеальные. Рис. 6.18. Библиотека компонент программы Qucs В правом окне для многих компонент, кстати, разделы организованы схожим образом с окном компонент в программе, тип элементов выбирается после нажатия на стрелку правее надписи Transistors на рисунке 6.18, имеются описания, по которым можно сориентироваться при выборе элемента. После замены транзисторов схема почти не меняется:
Qucs 0.0.10 - Проект; UMZ Файл Правка Вставка Проект Инструменты Моделирование Вид Справка Рис. 6.19. Схема усилителя с транзисторами, выбранными из библиотеки Схема почти не меняется, чего никак не скажешь о диаграмме. Рис. 6.20. Частотная характеристика усилителя с «реальными» транзисторами Наклон правой части (от маркера) можно изменить, увеличивая емкость конденсатора С1. Похоже, что входное сопротивление усилителя достаточно низкое, и емкость конденсатора на входе следует увеличить значительно. Но это пока не то, о чем мне хотелось бы рассказать, поэтому я возвращаю значение резистора обратной связи к первоначальному значению 2,2 кОм. Моделирование дает следующий результат:
-= Qucs 0.0.10- Проект: UMZ LJ t±J IX Файл Правка Вставка Проект Инструменты Моделирование Вид Справка j л ЙЯ «0<Л 4 _ £| х) к Л 1 ЙЙГЛ 4 »/ й@1 »-е2“ *? ^•umz Z bode.sch <^>jumz_2_bode dpi; । г нет предупреждений 0 . О Рис. 6.21. Частотная характеристика усилителя с ООС Более яркой иллюстрации разницы в частотных характеристиках усилителя с отрицательной обратной связью и без нее, я, признаться, не видел. Когда я убирал старые журналы «Радио», использованные для обзорной главы книги, я решил еще раз полистать их, но теперь уже в поисках чего-то, что касалось бы усилителей мощности. В №4 за 1976 год я нашел статью А. Майорова «Динамические искажения в транзисторных усилителях НЧ». Статья написана по материалам зарубежных журналов, как говорится в аннотации к статье, но я не буду приводить их названия. В журнале №5 за 1977 год обнаружилась еще одна статья того же автора «Еще раз о динамических искажениях в транзисторных усилителях». Беглый пересказ этих двух статей я приведу, пожалуй, прежде чем продолжить рассказ о программах EDA. В первой статье автор говорит о том, что применение глубокой отрицательной обратной связи в транзисторных усилителях, когда коэффициент обратной связи А, еще его называют глубиной обратной связи, достигает 60 дБ и более. Это соответствует отношению выходного сигнала ко входному в 1000 раз. При этом: «Присутствие напряжения обратной связи на инвертирующем входе приводит к тому, что дифференциальное напряжение Ud — напряжение между входами операционного усилителя — в А раз меньше входного напряжения... Теперь предположим, что на неинвертирующий вход приходит сигнал с крутым перепадом... Такой сигнал наиболее близок к реальному музыкальному сигналу... Из-за низкой частоты среза усилителя сигнал на выходе появится с некоторой задержкой, а, следовательно, и на инвертирующем входе в течение некоторого времени обратной связи не будет В это время все входное напряжение приложено между входами операционного усилителя: Ud = Uex. Входные каскады его сильно перегружены... Таким образом, входное дифференциальное напряжение возрастает в 1000 раз в момент крутого перепада входного сигнала... Субъективно же динамические искажения очень заметны и проявляются в потере высших частот в металлическом, раздражающем оттенке звучания». Ниже автор отмечает, что исследование усилителя прямоугольными импульсами также не дает представления о перегрузках в усилителе во время перепадов входного сигнала. Ниже приведены рекомендации, которым, похоже, и я некогда следовал: • Диапазон рабочих частот усилителя без обратной связи следует увеличить до 20 кГц и более. • Чтобы не нарушать устойчивость усилителя с увеличенным диапазоном рабочих частот, коэффициент обратной связи А необходимо уменьшить до 20-30 дБ. • Для сохранения низкого уровня нелинейных искажений... желательно режим транзисторов выходного каскада выбирать таким, чтобы большую часть времени они работали в классе А (примерно, с током выходного каскада равным половине максимального), и только на пиках сигнала в классе АВ... • Спектр сигнала, поступающего на вход усилителя мощности, следует ограничить... • В предварительном усилителе нужно ограничить пределы регулирования АЧХ на высших частотах величиной ± 12 дБ.
К этим рекомендациям, как сейчас я припоминаю, я добавил (много-много лет назад) еще одну: если полоса частот ограничивается с одной стороны, то ее следует пропорционально ограничить с другой стороны. Полоса воспроизведения звука в небольшом помещении без специальной акустической обработки снизу ограничивается естественным образом и используемым низкочастотным громкоговорителем. Поэтому, как мне кажется, она сверху была ограничена мною, скорее искусственно. И еще мне припоминается, что непривычное звучание заставило меня в какой-то момент усомниться в том, что высокие частоты системой воспроизводятся, и чтобы рассеять сомнения я проверял работу системы по звуковому давлению. Правда в отсутствии специального измерительного микрофона точность этих измерений была сомнительна, но в пределах норм тех времен система вполне честно воспроизводила свою полосу частот 40-15000 Гц. Но это к слову, да и помню я не наверняка. Вторая статья открывается аннотацией, где приводятся выдержки из писем в редакцию журнала, в которых, в частности, высказывается мнение, что хорошее звучание могут обеспечить только ламповые усилители. Думаю, что это мнение бытует и поныне. Во второй статье автор рассказывает о коррекции усилителя с отрицательной обратной связью. Я не буду пересказывать статью или воспроизводить ее полностью ли, частично, а вместо этого попытаюсь проиллюстрировать основные положения, с моей точки зрения, с помощью программы Qucs. Схема, приведенная в журнале в качестве примера, очень мне напоминает ту, что я использовал Соберем ее в редакторе схем Qucs: нет предупреждений 0:0 Рис. 6.22. Схема усилителя мощности для дальнейших экспериментов В схеме я убрал отрицательную обратную связь, чтобы сразу приступить к исследованию усилителя. После запуска моделирования получается амплитудно-частотная характеристика усилителя без обратной связи. Поскольку Qucs имеет встроенные возможности графического редактирования, этими возможностями я охотно воспользовался:
•—' Qucs 0.0.10 - Проект; UMZ Файл Правка Вставка Проект Инструменты Моделирование Вид Справка j 4 .1“ х) %, ъ л <л & л к 'й £ fi 5 а * / й @ а °- & 3 “ «? Источник напряжения управляемый напряжением ф Источник импульсного напряжения Источник напряжения^ контролируем ый током ф Источник импульсного тока acfrequency Н— 1е4 нет предупреждений 0.0 Рис. 6.23. Амплитудно-частотная характеристика усилителя без ООС О чем говорит автор статьи, и что пытался я изобразить на рисунке? Автор статьи говорит о том, что усилители, построенные по стандартным в те времена схемам, имеют две или три характерные частоты на частотной характеристике без отрицательной обратной связи. А как мне припоминается со студенческих лет любой однокаскадный усилитель можно представить идеальным усилителем, амплитудно-частотная характеристика которого линейна во всем диапазоне частот, с добавлением RC цепи, которая определит частоту среза на верхних частотах. Выше этой частоты характеристика спадает с крутизной 20 дБ/дек (или в 10 раз, при изменении частоты в 10 раз). Или, другими словами, амплитудно- частотная характеристика будет иметь частоту, определяющую верхнюю граничную частоту усилителя. Усилитель, имеющий два каскада, будет иметь две характерные частоты, три каскада — три. Его результирующая амплитудно-частотная характеристика будет иметь тоже одну, если верхние граничные частоты всех каскадов совпадают, две, если совпадают только две частоты, или три, если все три частоты разные, характерные частоты. В первом случае за единственной характерной частотой крутизна спада характеристики будет 60 дБ. А введение отрицательной обратной связи в этом случае приведет к самовозбуждению усилителя, поскольку на частоте среза фазо-частотная характеристика имеет спад в 45 градусов, что при многокаскадном усилителе, охваченном общей петлей обратной связи, может привести к тому, что отрицательная обратная связь превратится в положительную. И т.д. Итак. Глубину обратной связи лучше выбирать такой, чтобы АЧХ усилителя с ООС пересекала его АЧХ без обратной связи на спаде 20 дБ/дек. При этом усилитель работает устойчиво. Вот это я попытался изобразить на рисунке 6.23, где усилитель без ООС имеет хорошо выраженную частоту fl около 7 кГц, за которой начинается спад в 20 дБ/дек. Величина между исходной характеристикой и прямой, обозначенной как АЧХ в зоне устойчивости, это глубина обратной связи. Для увеличения глубины обратной связи, как пишет А. Майоров, эту частоту fl уменьшают до 200-5000 Гц с помощью коррекции по запаздыванию:
Рис.6. 24. Коррекция по запаздыванию в усилителе мощности с помощью 04 Частотная характеристика усилителя с добавленным конденсатором 04: Рис. 6.25. АЧХ усилителя с сильной коррекцией по запаздыванию Как видно из рисунка частота среза fl уменьшилась примерно до 1 кГц, а область спада характеристики в 20 дБ/дек существенно «продлилась». Но понижение этой частоты, хотя и позволяет ввести более глубокую ООО, приводит к тому, что: «При резком изменении входного сигнала в коллекторной цепи этого транзистора возникает (из-за задержки сигнала ООС) выброс тока... Такая перегрузка транзистора и является причиной динамических искажений». Одним из методов борьбы с этими искажениями является сдвиг частоты fl к верхней границе частот. Например, замена выходных транзисторов на более высокочастотные (думаю, КТ801 в те времена) должно привести к желаемому результату:
Qucs 0.0.10 - Проект: UMZ файл Правка Вставка Проект Инструменты Моделирование Вид Справка Рис. 6.26. Замена выходных транзисторов в 5 МЗЧ Перед моделированием схемы приведу выдержку из книги П. Шкритека «Справочное руководство по звуковой схемотехнике: «Для реальных усилителей характеристика усиления холостого хода v0 по существу сходна с характеристикой фильтра НЧ. При этом частотно-зависимые амплитудные и фазовые искажения создаются между входным сигналом и сигналом ОС, выделяемым из входного сигнала. Поэтому перегружаться могут, например, входные каскады, находящиеся перед частотно-определяющими элементами цепи... Так называемые «динамические нелинейные искажения» возникают на фронтах сигналов, где скорость нарастания сигнала превышает максимально допустимую на выходе усилителя. Основной причиной этих искажений является перегрузка входных каскадов». Вернемся к схеме, и чтобы проверить результат, запустим тот же режим моделирования, что и прежде: *— Qucs 0.0.10 - Проект: UMZ L Б К Файл Правка Вставка Проект Инструменты Моделирование Вид Справка Рис. 6.27. АЧХ усилителя после замены транзисторов
Теперь о коррекции. Изменения цепи коррекции первого транзистора определяется тем, что частотно-зависимый делитель напряжения при резком изменении входного сигнала ослабляет сигнал на базе транзистора до прихода сигнала ООО. Qucs 0.0.10 - Проект: UMZ □ ИЗ Li! Файл Правка Вставка Проект Инструменты Моделирование Вид Справка Рис. 6.28. Дополнительная коррекция усилителя: С4, R19 и R20 Благодаря коррекции, выбросы коллекторного тока не достигают уровней ограничения, уменьшая динамические искажения. АЧХ усилителя после введения цепей коррекции: Qucs0.0.10-Проект: UMZ Файл Правка Вставка Проект Инструменты Моделирование Вид Справка QfflK Рис. 6.29. АЧХ усилителя с коррекцией по опережению После введения ООС схема приобретает вид:
Qucs 0.0.10- проект: UMZ LI l±! IX Файл Правка Вставка Проект Инструменты Моделирование Вид Справка Рис. 6.30. Схема усилителя с введенной ООС после переделок А его АЧХ, соответственно: Qucs 0.0.10 - Проект: UMZ Файл Правка Вставка Проект Инструменты Моделирование Вид Справка Рис. 6.31. АЧХ усилителя с ООС и коррекцией по опережению Верхняя граничная частота усилителя смещается за 100 кГц при не очень большой глубине ООС. В первой статье А. Майорова приводится рисунок, показывающий испытание усилителя сигналом, скомбинированным из прямоугольного импульса и синусоидального сигнала верхней рабочей частоты УМЗЧ. Мне кажется, что я пробовал из подручных средств получить генератор такого сигнала, но не помню, чем все закончилось. Возможно, я больше доверился результатам «визуального» прослушивания. Сейчас я попытаюсь воспроизвести подобное испытание усилителей с коррекцией по опережению и по запаздыванию в программе Qucs. Это чисто спекулятивный эксперимент. Свои соображения по результатам эксперимента я выскажу, но не следует особенно полагаться на них. Если вы возьмете программу Qucs на вооружение в свою лабораторию, советую провести серию подобных экспериментов, включающих «физические» проверки. Это позволит вам выработать свою точку зрения, свое отношение к достоверности моделирования.
Итак, усилитель с коррекцией по опережению: Qucs 0.0.10 - Проект: UMZ U |±| И Файл Правка Вставка Проект Инструменты Моделирование Вид Справка Рис. 6.32. Испытание усилителя с коррекцией по опережению И его выходной сигнал: Рис. 6.33. Диаграмма испытания усилителя с коррекцией по опережению Аналогичное испытание для усилителя с коррекцией по запаздыванию:
Qucs 0.0.10 - Проект: UMZ Файл Правка Вставка Проект Инструменты Моделирование Вид Справка J у 4 £. х] ' т»; Й $ & * / 1 0--©^“ ₽ umz_2_6_zapjinal_puls.sch нет предупреждений 0:0 Рис. 6.34. Испытание усилителя с коррекцией по запаздыванию И результаты этого испытания: Рис. 6.35. Испытание усилителя с коррекцией по запаздыванию Уж не знаю, сильно ли я вас обманываю, но речь шла о том, что в моменты затягивания фронтов импульсов (время перегрузки), что отмечено маркерами на рисунке, возникают сильные интермодуляционные искажения, и высокие частоты в сигнале отсутствуют. Если сравнить рисунки 6.35 и 6.33, то, думаю, станет ясно, что я хотел показать, остается только выяснить, насколько я при этом прав? Вместе с тем ясно, возможности работы с программой совершенно не ограничены рамками банальных ситуаций. Скорее всего, мне не удалось раскрыть и десятой доли возможностей программы Qucs, но и начинающие пользователи, и опытные радиолюбители, и студенты, да и преподаватели всех уровней — от радио кружка в школе до вуза - все согласятся, что программа очень интересна и полезна. Больше узнать о ее потенциале, можно прочитав Qucs Work Book Достаточно объемный фолиант, где авторы проекта рассказывают о возможностях и работе с программой.
Словом, очень интересная и полезная в хозяйстве электронщиков и радистов, студентов и преподавателей программа. А если добавить к этому, что авторы дарят ее нам, то остается только снять шляпу, и поклониться им в благодарность за подарок!
Глава 7. Регенеративный приемник. Oregano, Linux и другие Собран я регенеративный приемник (вот ссылка) http://picbasic.>ret.ru'shems/rep-kvp.htm звук слышен даже очень хорошо, только через 6 секунды он плавно начинает уменьшаться (уменьшается он секунд 8). Не слышно его секунды 3, а потом он (звук) начинает также плавно, как и опускался, подниматься, и так на протяжении всего прослушивания. Подскажите, пожалуйста, в чем неисправность. В деталях? В контактах? И вот еще, где можно найти подробное описание работы этого приемника (статью Полякова). Где можно найти усилитель, чтобы можно было слушать не через головные телефоны, а через динамик (обычный усилитель, как я понимаю, не подойдет). Настоятельно прошу помочь в первой проблеме, так как с таким звуком мне не будет нужен и усилитель и описание такого приемника. Помню, в юные годы я пытался собрать приемник прямого усиления из конструктора. Достаточно безуспешно. Не хотел он работать так, как мне хотелось бы. Позже с просьбой помочь в «оживлении» приемника обращались ко мне «измученные» родители, и не слишком я им помог. Можно сразу сослаться на то, что я не специализируюсь в области именно радиотехники, но мне сегодня интересно, чем могут помочь в этом вопросе программы EDA. Отправившись по ссылке, я «срисовываю» схему приемника, и «навскидку» мне приходит в голову, что управление усилением по постоянному току, проходящее по цепи R6C2R1, может зависеть от характера исходного сигнала и колебаться при неблагоприятной ситуации ровно так, как описывает автор. Но очень хотелось бы проверить свои соображения. Для начала приведу схему приемника, нарисованную с помощью программы Xcircuit: Рис. 7.1. Схема регенеративного приемника Первое, что я хочу попробовать, это поработать со схемой в программе Oregano. Программа, как мне кажется, весьма удобна для начинающих любителей электроники, и работа с ней в Linux мало, надеюсь, отличается от работы с такими программами в Windows, как Electronics Workbench. Как запустить программу и начать в ней рисовать схему, я уже писал в обзоре, но повторю отдельные моменты. Запускаем программу и получаем возможность сразу расставить в окне редактора компоненты, которые берем из правого окошка менеджера компонентов. Для начала, я думаю, достаточно тех, что есть в библиотеке Default:
Рис. 7.2. Окно редактора схем в программе Oregano При размещении компонент можно выделить нужный и, щелкнув по нему правой клавишей мышки, в выпадающем меню выбрать пункт Повернуть. А, нажав на иконку с изображением карандаша на инструментальной панели, провести нужные соединения, чтобы получить схему. Пока я не рисую цепь обратной связи по постоянному току, чтобы проверить, а работает ли моя схема без нее. Двойным щелчком по компонентам я открываю диалоговое окно свойств компонента, в котором меняю значения резисторов и конденсаторов, и задаю напряжение и частоту источника сигнала, который находится в самом низу библиотеки под именем VSIN. Попутно я сталкиваюсь с тем, что диоды детектора, которые я добавил в схему, 1N4148 не имеют модели, что не позволяет запустить моделирование. Посмотрев, согласно с появившимся сообщением об ошибке, нужную папку я обнаруживаю, что есть модель диода 1N750, которую и прописываю в свойствах компонента. Позже можно будет, если файл модели имеет формат простого текстового файла, можно будет добавить модель и этого диода. Дополнительно, выбрав на инструментальной панели иконку с изображением пробника, я устанавливаю два пробника: первый на генератор, второй на выход усилителя. reg_rec. oregano i—i ч) ЕЗ Файл Правка Вид Инструменты Справка • з л L|| '1/ Я Е 1X1 □_ Библиотека Default Поиск. | 12АХ7 (Ь) 6BQ5 AC Power 110V AC Fewer 220V Antenna BJT NPN BJT NPN-DAR BJT NPN-PHOTO BJT PNP BJTPNP-DAR BJT PNP-PHOTO BNC Capacitor cap Pol cccs ccvs П -едва, мтг . н>. i > осмот 1/2 12AX7 Vacuum tube <iD Поместить
Рис. 7.3. Схема радиоприемника в программе Oregano Теперь, когда схема нарисована, значения резисторов и конденсаторов (кроме С1, который я преднамеренно увеличил до 0.1мкФ) соответствуют оригинальной схеме. Я хочу посмотреть, как выглядели бы мои сигналы на экране осциллографа, если бы я собрал схему на макетной плате. Для этого я выбираю в основном меню Инсгрументы-Моделировать, и... В открывающемся окне графики слева есть раздел Nodes (Узлы). Если раскрыл, этот пункт меню графического окна, то в нем обнаруживаются два моих пробника под именами V(8) и V(3), что свидетельствует о том, что эго не первая моя попытка получить необходимое изображение. И действительно, я уже побывал в разделах основного меню Настройки моделирования и Параметры, которые позволяют выбрать режимы работы моделирования (и для симуляции в программе выбрать подходящий симулятор) в окнах диалога, открывающихся при выборе этих пунктов меню. Причина моего интереса в том, что не вижу я сигналов в схеме. о Oreaano - Plot Q tti И Рис. 7.4. Окно графического результата моделирования в программе Oregano Пустое окно графического отображения либо свидетельство моих неправильных действий, либо неправильной работы программы. Программа может использовать внешние программы, которые я не установил. Программа может требовать установки дополнительных библиотек, которые отсутствуют в моей системе. Самый прямой путь выяснения этого - зайти на сайт проекта, и почитать раздел установки программы, требований к системе и т.д Сайты многих проектов содержат перечень замеченных и исправленных ошибок, рекомендации по устранению проблем. Когда после первого запуска программы Oregano я не смог справиться с отображением текста, я пошел именно этим прямым путем. Не очень это помогло, но сами попытки найти информацию помогли определиться с возможным источником проблем. Но у меня есть возможность использовать Интернет. Не у всех пока есть такая же возможность, поэтому попытаемся поступить иначе. Прежде чем отказаться от дальнейших попыток, а у меня есть намерение перейти в случае неудачи к работе с другой программой, я, пожалуй, поменяю задачу. Упрощу ее до предела. Возьму два резистора, генератор и попробую посмотреть, что же у меня получается (или не получается). Все значения и настройки я пока оставлю без изменения.
'<5 Приложения Переход Система £Ли_ Oregano - Plot Файл Диаграмма ltled.< Ground 003 До а 003 0.03 0 02 0 02 1о0 02 0.01 0.01 0.01 0.00 В обычном размере Shift Region Переменные Transient Analysis равко Вид Инструменты Справка .а Л £1 * 1/ДЛ О1 15 53 X Закрыть Header 2 । С Untitled.or... □ Oregano - ООО Корзина Рис. 7.5. Простейшая схема в программе Oregano Предварительный - досмотр Получившиеся две прямые явно не то, что я хотел бы увидеть. С другой стороны, это лучше, чем ничего, и, скорее, указывает на мои неправильные действия, чем на неправильную работу программы. Я проверяю настройки генератора. В диалоге свойств в окошке с надписью «Частота» я вижу значение 1.0. Возможно, частота генератора 1 Гц, в то время, как на графике, последнее значение, относящееся ко времени наблюдения, 5 мс. Можно увеличить время наблюдения, но я попробую увеличить значение частоты генератора до 100.0. В результате получается следующий график: Рис. 7.6. График при увеличении частоты генератора в 100 раз Это больше напоминает мне ожидаемый вид графика. Мне кажется, если увеличить вдвое время наблюдения, то можно получить обычную осциллограмму синусоидального сигнала. Но я решаю заменить резистор R1 конденсатором и увеличить частоту до 10000.0.
о Oregano - Plot Q dj Й Файл В обычном размере Shift Region Переменные Диаграмма Закрыть Рис. 7.7. График при замене резистора конденсатором и увеличении частоты Если уменьшить частоту в десять раз, или в Настройках моделирования изменить значение 5 мс на 0.5 мс (ms, соответственно), то получающаяся «картинка» меня вполне удовлетворяет Попробуем добавить транзистор к схеме. Конечно, кроме транзистора нужно добавить еще резисторы, источник питания транзистора, изменить номиналы резисторов и источника питания (VDC, где я устанавливаю значение 4.5). Untitled, oregano Файл Правка Вид Инструменты Справка Рис. 7.8. Усложнение схемы в программе Oregano Осциллограмма показывает, что значения резисторов я выбрал «наугад», но не слишком удачло. Нижний график, сигнал генератора не имеет искажений, тогда как верхний, усиленный сигнал, сильно искажен.
gj Oregano - Plot □ tfcj iXi ^Файл И u В обычном размере Shift Region Переменные Диаграмма Закрыть Рис. 7.9. Сигналы генератора и усилителя в предыдущей схеме Схема явно ограничивает сигнала снизу. Но, с другой стороны, если обратиться к предыдущему графику, то можно отметить, что на диаграмме отображается и начальная стадия процесса. Таким образом, возможно, что в данном случае нормальный режим работы еще не установился. Добавим еще один транзистор с соответствующими компонентами, немного поправим настройки, чтобы получить нечто похожее на задуманное. •—> Untitled.oregano Рис. 7.10. Схема в программе Oregano, приближенная к оригинальной В этой схеме отсутствует детектор, но сигналы на выходе усилителя уже почти похожи на «настоящие»:
Рис. 7.11. Сигналы на выходе генератора и усилителя в предыдущей схеме Здесь меньший сигнал V(2) относится к генератору. Мне кажется, что добавление детектора не должно сказаться на работе программы. Но самый верный способ проверить это — добавить детектор. И убедиться, что все работает при соответствующих настройках. А теперь я хочу показать, как свое предположение о работе схемы, я хотел проиллюстрировать с помощью программы Oregano. Для этого я добавлю второй генератор, частоту которого я выберу меньше частоты первого генератора. Схема эксперимента получается следующей: Untitled.oregano Q IB (X> Рис. 7.12. Схема эксперимента с двумя генераторами В эксперименте второй генератор, верхний по схеме, играет роль управляющего сигнала, заменяющего обратную связь через цепь R6C2R1 в оригинальной схеме. И я хочу проверить предположение, что при неблагоприятных условиях эта обратная связь может управлять сигналом, приходящим с антенны на вход приемника. Моделирование схемы эксперимента дает следующую картинку:
Рис. 7.13. Вид сигналов от второго генератора и на выходе усилителя Верхний график отображает сигнал второго генератора, который явно изменяет вид выходного сигнала. Последний соответствует сигналу несущей частоты радиостанции, на которую настроен приемник. Если схема приемника работает подобным же образом, то уменьшение сигнала несущей частоты может, в конечном счете, «прослушиваться», как затухание звука. Что может быть этим «фактором неблагоприятного воздействия»? Не знаю. Я могу предположить, что причина в неудачно выбранной постоянной времени цепи R6C2R1, или замене рекомендованного транзистора транзистором другого типа. Разные типы транзисторов могу по-разному реагировать на изменение тока базы транзистора. Можно предположить и наличие некоторой «мощной» помехи в месте проверки приемника. Помехи высокой частоты, которая может «нагревать» транзистор, смещая его режим работы в сторону уменьшения усиления (минуя цепь обратной связи), но затем цепь обратной связи восстанавливает режим работы. В реальной схеме в месте проверки я бы посмотрел, поскольку сигнал меняется очень медленно, не меняется ли напряжение (по постоянному току) в точке соединения резисторов R6 и R1. Словом, продолжил бы поиск причин этого явления. Но меня сейчас больше интересует программа Oregano, к ней я и вернусь. Я хочу посмотреть, действительно ли файл модели диода 1N750, который у меня есть, текстовый файл. Я нахожу его в директории /usr/local/share/oregano/models. Он открывается простым текстовым редактором и выглядит, похоже, как текстовый файл. .model 1N750 D(Is=880.5Е-18 Rs=.25 Ikf=0 N=1 Xti=3 Eg=l.ll Cjo=175p M=.5516 + Vj=.75 Fc=.5 Isr=1.859n Nr=2 Bv=4.7 Ibv=20.245m Nbv=1.6989 + Ibvl=l.9556m Nbvl=14.976 Tbvl=-21.277u) Если это так, то можно будет добавлять свои модели в программ); что значительно расширяет возможности ее использования. Если программу в том виде, как она есть, можно рекомендовать начинающим радиолюбителям, то опытные радиолюбители могут получить от нее гораздо больше. Гораздо больше получат и начинающие радиолюбители, если будут достаточно настойчивы и любознательны (а не любопытны, как я). Вот еще один вид графического окна той же схемы.
о Oregano - Plot Q (±J И ^Файл л 1 ®. П В обычном размере Shift Region Диаграмма 4,95 •V.58 * -1.37 - -2.16 2 95 1 .00 0.50 ‘1.00 *3.50 *2.00 ‘..50 S.00 .50 4 00 4 50 '.00 m S Рис. 7.14. Графическое окно при использовании симулятора NgSpice Закрыть Это изменение произошло после того, как в разделе Параметры я выбрал Механизм-NgSpice на основной вкладке Пользовательский интерфейс. Конечно, программу ngspice я своевременно установил на компьютер. Обширная библиотека «по умолчанию» программы Oregano и наличие еще нескольких библиотек навело меня на мысль о проведения разного рода интересных экспериментов. Но, увы, радость моя была преждевременной. Кроме базовых элементов программа, возможно, работает с еще несколькими дополнительными моделями, и я даже не исключаю, что при достаточной настойчивости в освоении ngspice, поискав существующие модели, можно существенно расширить возможности программы. Но лучше подождать, когда новая версия программы уже будет пополнена в части используемых моделей. Полезность же дополнительных моделей я могу проиллюстрировать в настоящий момент только одним примером. Untitled.oregano « сЁ Рис. 7.15. Схема с идеальным транзистором в программе Oregano Используемый источник питания, естественно, я перестраиваю на 10.0 (вольт), а источник сигнала на 1000.0
(1000 Гц). Если теперь запустить моделирование, то в графическом окне можно увидеть результат: U li X Oregano - Plot 9.91 eel 7.72 1.15 6.62 0.06 Рис. 7.16. Осциллограмма при моделировании с «идеальным транзистором» В обычном размере Shift Region Переменные 11.00 2.25 Диаграмма Теперь, изменив в свойствах транзистора идеальную модель NPN на реальную модель 2N2222, и повторив моделирование, мы получим несколько иную картину. Переменные о Oregano - Plot Q ЬЙ 1X1 Файл В обычном размере Shift Region Закоыть Рис. 7.17. Осциллограмма при моделировании с «реальным транзистором» Оба графика очень похожи, если не обращать внимания на вершину импульсов, полученных из синусоидального сигнала. Думаю, при моделировании реального транзистора могут отображаться шумы транзистора В попытках рассказать много интересного о программе я, сознаюсь, потерпел фиаско. И что же может меня оправдать? Во-первых, даже в пределах выше сказанного можно провести очень много экспериментов, особенно начинающим радиолюбителям, для которых простота работы с программой гораздо важнее, чем тонкости моделирования.
Во-вторых, я честно потратил весь выходной день на поиски документации по моделированию, поиск подходящих моделей, которые можно было бы использовать в программе Oregano, например, с симулятором ngspice. Заглянул даже в лекции профессора университета Беркли, где нашел рассказ о моделях в Spice. Я славно, хотя и без пользы, потрудился, что несколько оправдывает, надеюсь, меня. А что до неудач, я к ним привык. Главное, чтобы они не останавливали. Можно отложить решение проблемы, это даже полезно, если множество попыток не дает положительного результата, но не бросать все раз и навсегда. В-третьих, я попробую, используя другую программу - gEDA, с которой у меня тоже, признаться, не все гладко, продолжить рассказ. Основанием для перехода от одной программы к другой я предлагаю тот факт, что обе программы могут использовать для моделирования симулятор ngspice. Собственно, ngspice, если я ничего не перепутал, изначально (или давно) является составной частью gEDA. В поисках подходящих моделей для Oregano я нашел описание (или, что называется howto), относящееся к системе проектирования gEDA. Пользуясь этим документом, и еще одним, найденным в потаенных уголках Интернета, которое называется так: «Startingwith gEDA at the Cambridge University Engineering Department July 29, 2005— Начало работы c gEDA в инженерном департаменте университета в Кембридже» я сделаю еще одну попытку продолжить повествование. Схема, изображенная на рисунке ниже, привлекла мое внимание своей необычностью при первом чтении книги П. Шкритека «Справочное руководство по звуковой схемотехнике». ' qschem U Е (Z Рис. 7.18. Схема усилителя в gschem - редакторе схем gEDA Необычное включение выходных транзисторов давно вызывало желание проверить, как работает эта схема. Нарисовав схему в редакторе, предварительно я создаю проект в менеджере проектов gEDA и включаю (импортирую) файл схемы в проект, я мужественно выбираю из меню Действия менеджера проекта пункт Create Spice netlist, что, в конечном счете, приводит к созданию файла с расширением .cir. А затем пытаюсь запустить симулятор и получить, как мне хотелось бы, вид сигналов на выходе усилителя Тут-то и поджидает меня очередное разочарование. Менеджер проектов открывает файл спецификации для моделирования, но попытка запуска симулятора приводит только к тому, что менеджер проектов исчезает с экрана, так и не успев мне сообщить, чем я так его обидел. Повторный запуск только ускоряет этот же результат, менеджер проектов gEDA исчезает с экрана при попытке создать netlist. Не знаю как вам, но мне это начинает надоедать. И вы правильно поступите, не став читать дальше. Я и сам не буду дальше читать, буду только писать, поскольку должен же закончить эту не самую удачную главу, и закончить чем-то похожим на «Happy End». Как всегда я поступаю, если ничего не получается, я упрощаю задачу до предела. И в этом случае я рисую самую простую, какую только могу придумать, схему.
gschem □ В И I | Файл Правке Буфер Вид Странице Добавить Иерархия Атрибуты Настройки [ > > 4L- S Г Т| К Помощь | Пое Ор/пус о | М ю|Отмена л.эп-е laairnir/v.hhrtestl sch орк. Рис. 7.19. Простейшая схема в gEDA В редакторе схем, используя двойной щелчок по элементам схемы, я задаю, или меняю, как с генератором синусоидального напряжения, значения резисторов, задавая value в 1000 (надеюсь, Ом), попутно и обозначения, где вместо знака вопроса вписываю номер элемента (Rl, R2 и т.д.). Теперь при создании Spice netlist менеджер проектов не покидает меня на произвол судьбы. Я даже могу прочитать свое творение, если выберу файл спецификации, и в основном меню Действие-Open. В окошке справа появляется то, насколько я понимаю, что называется netlist. Рис. 7.20. Созданный в программе gEDA netlist для симуляции схемы Но попытка запустить эту самую симуляцию с помощью команды Действие-Simulate приносит не больше, чем предыдущие мои действия. Спасибо, что хоть никто не убегает от меня. В окне сообщений отображается предупреждение, что не задано постоянное напряжение, и время анализа будет установлено равным нулю. Я пробую изменить строку VI 2 0 sin 0 1 1k в спецификации, добавив de 0 (вычитал где-то в руководстве по ngspice). Эффект имеет место, но после того, как я сохраняю файл обычным образом через пункт меню Файл. Предупреждение не появляется, но столь желанного окна отображения графики не появляется тоже. Вновь приходится погрузиться в чтение руководств, но главное, я всегда так поступаю, обратиться к советам «бывалых». Я прекрасно понимаю, что проект gEDA существует много лет, а, судя по документу университета в Кембридже, тысячи людей давно и плодотворно работают с это системой проектирования. Надо полагать, у них тоже возникали «отдельно встречающиеся» трудности, и было бы интересно знать, как они их преодолели. В одном из советов я нахожу ссылку на еще одну программу, которая называется gspiceui. Судя по названию -
это может быть искомый графический интерфейс для симулятора ngspice. Мне даже не пришлось устанавливать эту программу, поскольку я нахожу ее средн уже установленных мной программ. Ее нет только в меню, но она прекрасно запускается из терминала (аналог командной строки Windows). Ее можно добавить и в меню, есть такая возможность, пренебрегать которон не стоит. Что же даст мне эта программа. GNU Spice GUI, Version 0.8.55 _lpha (15/05/2006) - /home/vladlmlr/whh/testl.clr Q File Simulate Options Help $ о н Console Circuit Simulation GNU-Cap NG-Spice =L_______________________________________L=-------------------------- !* Spice nett is ter for gnetlist VI 2 0 sin 0 1 Ik de 0 R2 2 1 1000 R1 О 1 1000 .END Simulation Engine : GNU-Cap Рис. 7.21. Окно программы gspiceui Открывая файл netlist, я убеждаюсь, что программа поддерживает еще несколько форматов подобных файлов. Это хорошо. Но что плохо, так это то, что хотя работает создание симуляции (основное меню Simulate- Create, либо на инструментальной панели первая иконка после раздела работы с файлами), работает даже запуск симуляции (следующий раздел меню), но не работает вывод графики (команда Plot). Нет худа без добра, появляется сообщение о причине этого явления. Plot Results Error Can't find the binary gwave Your PATH is - /usr/lib/qt-3.3/bin:/usr/kert>eros/bin:/usr/local/bin:/usr/bin/bin:/ usr/XllR6/oin T>ome/vladimir/bin <9qk Рис. 7.22. Сообщение о выводе графики в программе gspiceui Возможно, по этой причине не работала симуляция и в gEDA? Программа не находит еще одной программы (или утилиты) gwave, которая ей необходима для вывода изображения на экран. Как я сразу не догадался! Предвкушая близость «Happy End», я лечу на поиски этого решения моих проблем. Но полет сказался недолпгм, может нелетная погода тому виной. Не нашел я gwave доя Fedora Core 6, дистрибутив, который в данный момент я использую. Linux очень гибкая операционная система, где все в ваших руках. Я убедился в этом много лет назад, когда впервые установил Linux на свой компьютер. Десятки раз после исправления файлов конфигурации я успешно портил систему, устанавливал заново или исправлял свои ошибки. Истинные почитатели Linux предпочитают использовать терминальные команды доя всех процессов, я же предпочитаю графические возможности. Мне легче пощелкать мышкой, чем запоминать большое количество команд и опций. Я часто использую программы от других дистрибутивов, если не нахожу их для своего, менее охотно компилирую программы из исходных текстов, что в Linux совсем несложно, достаточно выполнить несколько комацд. Но в этот раз у меня ничего не получилось. Что самое обидное для предыдущей версии Fedora Core я нахожу программу готовую для установки простым щелчком клавиши мышки. Но в моем дистрибутиве программа не устанавливается из-за неустранимых зависимостей в части библиотек Это тоже не окончательно меня пугает, поскольку зачастую достаточно добавить ссылки на уже имеющиеся версии библиотеки, или, в
крайнем случае, добавить эти библиотеки. Если они не устанавливаются из пакетов установки rpm, то пакеты можно просто распаковать, чтобы перенести все необходимое в нужные места системы. Так мне часто удавалось установить интересные для меня программы. Но не в этот раз. Проблема оказывается глубже, чем мне хотелось бы. Итак. В программе gEDA, с которой успешно работаю тысячи обучающихся и профессионалов, я не могу симулировать работу схемы, состоящей из задающего генератора и двух резисторов. Как вам это нравится? Мне это совсем не нравится. Остается проверить, все ли сделал, что мог? Я целый день потратил на поиск и установку библиотек, на работу с дополнительными файлами и прочим скарбом операционной системы. Я почти добился желаемого результата Но почти - не считается. В одном из сообщений одного из многочисленных форумов Интернета, которые я посетил в поисках истины, я нашел рекомендацию использовать LTSpice вместо встроенного в gEDA симулятора ngspice. Отыскиваю LTSpice, что оказывается не симулятором, а свободно распростряняемой программой для операционной системы Windows. Но в сообщении рассказано и о способе работы с этой программой в Linux: программа успешно устанавливается и работает с помощью Wine. Wine - это эмулятор программ Windows. Некогда я пробовал с его помощью запускать некоторые программы, но серьезной необходимости в работе с программами Windows давно уже не было, и я давно не повторял подобных попыток. С другой стороны, именно сейчас у меня появилась такая необходимость, отчего же не попробовать? Я устанавливаю программу Wine, оказывается я ее и не установил, в программе Wine запускаю установку LTSpice, тоже не с первого раза, поскольку забыл, что отключил драйвер видеокарты, без которого вполне обхожусь, и запускаю программу LTSpice. При установке программа создает кнопку запуска на рабочем столе (ярлык в терминах Windows), для запуска достаточно щелкнуть по этой кнопке запуска В программе открываю файл спецификации. Рис. 7.23. Запуск программы LTSpice - программы для Windows в Linux В первый раз окно программы выглядело несколько иначе, но это результат уже нескольких попыток. Я добавил строку .tran, и по просьбе программы добавил время окончания симуляции 5ms. Теперь, запуская симуляцию (иконка с бегуном на инструментальной панели, например), я получаю результат:
Рис. 7.24. Симуляция простейшей схемы, из gEDA, в программе LTSpice Здесь бы мне радостно всплеснуть руками и закричать: «Вот он и пришел наш долгожданный Happy End!!», — так бы я и поступил, если бы не был слишком любопытен. Программа LTSpice, которую я установил в Linux для симуляции схемы, нарисованной в системе gEDA, на деле оказывается не графической надстройкой над программой симуляции, а полноправным представителем семейства EDA. И пройти мимо этого удивительного факта я, извините, никак не могу. Я обязательно должен попробовать работу с программой. Хотя бы опробовать схему из книги Шкритека — давно собираюсь это сделать. Если при симуляции схемы я не заметил никаких особенностей, то при выборе компонент на моем компьютере с моими настройками Linux диалоговое окно прорисовывается не самым удачным образом, но это меня не останавливает, и мне не терпится нарисовать схему. Рис. 7.25. Создание схемы в программе LTSpice Механизм соединения элементов, как у многих программ EDA, удобен и практичен, изображение можно
масштабировать, а при перемещениях курсора экран сдвигается, если курсор выходит за рамки окна. Щелчком правой клавиши мышки по элементам схемы открывается окно диалога свойств элемента. Как, например, для транзистора. Select Bipolar Transistor iXi OK I Cancel Part No. | Marw-tedufef | Polerrtu I VeeoM I SPICE Model 2N2907 Philips pnp 40.0 600 .model 2N2907 F 2143906 Philips pnp 40.0 200 .model 2N390o F 2N4126 Fairchild pnp 25 0 200 model 2N4126F 2N5087 Fairchild pnp 50.0 100 .model 2N5087 F 2N2905A Philips pnp 60.0 600 .model 2N2905A 2N4403 Fairchild pnp 40.0 600 .model 2N4403 F 2N5401 Fairchild pnp 150.0 600 .model 2N5401 F 2N5771 Fairchild pnp 15.0 200 .model 2N5771 F BCW68F ROHM pnp 45.0 800 .model BCw^SF BCW68I3 ROHM pnp 45.0 800 .model BCW68B 4 2J Рис. 7.26. Диалоговое окно свойств транзистора в программе LTSpice В спешке мне не удалось найти средства вращения и отражения элементов схемы, по причине чего рисунок получился немного не таким, каким бы я хотел его видеть, но это не самое важное, даже если развернуть элемент вообще нельзя. Зато можно колесиком мышки регулировать общий размер изображения. Linear Technology LTspIce/SwItcherCAD III - [prohal.asc] Ы cb IXl X file Edit Hierarchy view Simulate Tools Window Help —.1Д1 >4 Рис. 7.27. Вид схемы, подготовленной к моделированию в LTSpice При первом запуске моделирования появляется диалоговое окно настройки вида моделирования и задания параметров моделирования. Выбрав с моей точки зрения подходящий к ситуации анализ переходных процессов, и установив время окончания равным 5 мс (5ms), я могу увидеть осциллограмму на выходе усилителя. Предварительно я создал метки на выходе генератора (signal) и выходе усилителя (out), последнюю метку я выбираю при входе в режим моделирования. Какая кривая у меня получилась, я сейчас покажу. Предварительно только добавлю, что в режиме симуляции общее окно программы автоматически делится на две половины так, что, например, в нижней части экрана остается схема, а в верхней графическое окно. Если при симуляции переместить курсор мышки на схему, то при его расположении на проводе соединения или элементе курсор превращается в пробник. Пробник показывает напряжение в узлах схемы (в графическом окне) и ток, если его поместить, например, на резистор. При этом пробник превращается в токоизмерительные клещи, а график отображает значение тока (переменного).
Click to manually enter Horizontal Axis Limits Рис. 7.28. Симуляция усилителя в программе LTSpice Кривая у меня получилась «очень кривой» по сравнению с графиком сигнала генератора. Ток через резисторы, как это я выяснил с помощью пробника, очень мал. Транзисторы Q1 и Q2 из-за этого не открываются, а работе микросхемы мои недоделки явно мешают. Согласен. Операционный усилитель я выбрал случайным образом, первый подвернувшийся под руку, значения резисторов R3 и R4 выбраны не менее случайно. Можно убедиться, что сама программа работает хорошо, и операционный усилитель работает хорошо, удалив транзисторы и резисторы R3, R4 из схемы. Будет время, разберемся и с этим. Есть еще одна схема, которая не получилась у меня в программе Oregano - формирователь коротких импульсов на цифровых микросхемах. Я попытался сделать это с помощью схемы NAND (И-НЕ), ничего не получилось. Видимо, модель цифрового элемента не «физическая», а «логическая», то есть представление сделано на основе таблицы истинности. Попытка же создать физическую модель простейшего логического элемента оказалась безуспешной из-за отсутствия подходящих моделей транзисторов. В программе же LTSpice подходящие транзисторы в наличии, и вот что получается с формированием импульса:
Linear Technology LTspIce/SwItcherCAD III - proba5.raw □ ffi IS Рис. 7.29. Работа физической модели элемента И-НЕ В схеме сигнал от генератора V2, вырабатывающего прямоугольные импульсы, подается непосредственно на один из входов элемента И-НЕ (ini), а на второй вход через CR цепочку. По моим представлениям, в момент перехода сигнала генератора из нуля в единицу (5В), оба входа получают сигнал логической единицы, а на выходе (out) появляется сигнал логического нуля. После заряда конденсатора С1 вход m2 оказывается присоединен к земле (через резистор R1), а на выходе устанавливается логическая единица до прихода следующего фронта импульса генератора VI. Завершая эту главу, я хочу пояснить, зачем так долго и скучно рассказывал о разных неладах с программами. Более всего мне хотелось показать, как неудача, если не останавливаться при ее появлении, заставляет вас искать решение проблемы. Это справедливо и для работы с программами, и для работы с макетной платой. И, я думаю, для любой работы. Если ты не отступаешь под натиском неудач, то движешься вперед, и даже не достигнув цели, будем честны, не всегда и не все цели достигаются, то при движении вы всегда обнаружите много полезного, много интересного, узнаете много нового. Важно не отступать от поставленной цели до тех пор, пока не станет ясно, что дальнейшие поиски решения в обозримом будущем успеха не принесут, но лишь отнимут время и силы. Пока вы не почувствовали этой тупиковой ситуации, поборитесь за свою цель, и либо вы ее достигнете, либо обогатитесь новыми знаниями.
Глава 8. Для среднего радиолюбительского возраста. Конструируем командоаппарат управляемой модели Среди начинающих радиолюбителей много моделистов-конструкторов. Они успешно справляются со сборкой самой модели, но испытывают затруднения при оснащении модели системой управления. В Москве можно найти магазины, предлагающие готовые устройства, но это достаточно дорого, и это в Москве. Можно кооперироваться с более опытными радиолюбителями, но это при условии, что они есть в кругу знакомых. Вот такую просьбу я встретил на одном из радиолюбительских сайтов: Есть модель корабля, есть желание сделать ее радиоуправляемой. Основная проблема заключается в том, что я ничего не понимаю в радиоэлектронике (раньше этим не интересовался, а в институте сей предмет еще не скоро). Пробовал искать в Интернете, но как приспособить предлагаемые схемы, я не знаю. Если не трудно, помогите со схемами. Итак понимаю, схема нужна четырех-командная, двухканальная. В модели уже имеется двигатель на 2.4В (две пальчиковые батарейки), использовать желательно его. Габариты корабля -50*5 см. Желаемая дальность -100 метров. Хотя подобными устройствами могут быть оснащены довольно дешевые детские игрушки, сами устройства, даже простейшие, требуют знаний по нескольким направлениям - электронике, радиотехнике и т.д. В советах бывалых, я полагаю, будут ссылки и на хорошие книги по данному предмету, и на периодические издания, посвященные моделизму и радиолюбительству. Мое же внимание эта тема привлекла в первую очередь обширностью вопроса и множественностью решений, но, главное, как великолепный образец для опытов с программами EDA. Я не хочу, возможно, я ошибаюсь, брать в качестве основы этой главы готовое решение и общепринятые понятия из этой области деятельности. Не потому, что они мне чем-то не угодили, и не потому, что есть желание «изобретать велосипед», отнюдь. Причина кроется в моем представлении, я уверен, что имею право на ошибку, о восприятии всего этого новичком, то есть, человеком, впервые столкнувшимся с подобной темой. Обилие терминов: «пропорциональное управление», или «боковая несущая», и даже «генератор по схеме с емкостной трехточкой», - у любого здорового человека может вызвать естественное неприятие, хотя он и понимает, что с этим достаточно «разобраться», чтобы чувствовать себя комфортно. Ощущение дискомфорта может оттолкнуть его надолго, если не навсегда. По этой причине я хочу сделать попытку объяснить все, избегая общепринятых терминов, насколько это возможно. Итак. Я ничего не понимаю в моделировании, и почти ничего в создании устройств управления. Таинственную фразу о «четырех-командной, двухканальной» схеме я не понимаю совсем. Вот отправная точка, с которой начнется эта глава. Чтобы немного сориентироваться в обстановке, я для себя запишу: • Пусть модели будут из трех «сред обитания» - вода, воздух, земля. • Для всех моделей самыми простыми командами будет: двигаться, стоять, вправо, влево, прямо. Если добавить еще одну команду - двигаться не быстро, то всего нужно 6 команд. • Я пока не буду думать о том, как сделать радиопередатчик и радиоприемник, я соединю все проводами. На настоящих аппаратах, не моделях, тоже проводов хватает. • Исполнять все команды я буду самым простым способом - с помощью реле. И отдавать команды буду с помощью только кнопок. Таким образом, я сразу определил, что мне нужен пульт управления (четыре-шесть кнопок в «коробочке»), плата с реле, которая будет размещаться где-то в модели, и некоторое количество проводов от пульта к модели. Посмотрим, насколько реально (я не говорю, плохо оно или хорошо) такое устройство управления. Движение осуществляется в большинстве случаев за счет электродвигателя. Скорее всего, это будет коллекторный двигатель постоянного тока. Его вполне можно включить и выключить с помощью реле. Поворот осуществляется за счет изменения положения рулевого устройства - колеса у автомобиля, руль у воздушного или водного корабля. Что будет приводить их в движение? Думаю, есть много решений, остановлюсь на том же электродвигателе. Вращается он в одну сторону, один вид поворота, в другую сторону - другой, а вернулся в среднее положение - нет поворота. Как это сделать, я изобрету потом, а сейчас мне ясно, сколько и каких команды следует реализовать с помощью реле. Все, я готов начать работу по оснащению модели устройством управления. Кнопку для включения движения я выберу с фиксацией: нажал кнопку, она включилась и осталась включенной; нажал ее еще раз, она выключилась и осталась выключенной. Просто и ясно. С остальными кнопками разберемся потом. Рисуем схему.
Файл Правка Ви Инструменты Справка □ ffi IS Ctrl О.oregano Библиотека Default Поиск Module Port-B Module Port-L Module Port-R Motor Stepper Neon N-MDS N-MOS DUAL GATE Opto isolator Photodiode P-MOS P-MOS DUAL GATE PMT 10 Stage PMT 12 Stage Potentiometer Potentiometer-2 Pushbutton Relay 1P1T Предварительный просмотр <SD Поместить Рис. 8.1. Наипростейшая схема командоаппарата Я, сознаюсь, вначале нарисовал шесть кнопок, шесть реле и стал думать, а что с ними делать. Ничего не придумав, я убрал одно реле и кнопку, затем еще одну пару. Немного присмотревшись, я убрал все реле, оставив только три кнопки. Действительно, кнопка «Ход» включает и выключает двигатель движения. Больше ничего не надо. Кнопка поворота «Вправо» включает двигатель поворота. Больше ничего не надо. Кнопка поворота «Влево» включает двигатель поворота в реверсивном режиме, и все. Коллекторных двигателей в программе Oregano я не нашел, нарисовал, какие были. Кнопки поворота получились сдвоенные, без фиксации. Теперь подумаем, как двигатель поворота будет приводить в движение, скажем, руль океанского лайнера? QCad - [/home/vladlmlr/4D-electronlc/part8_command_devlce/rotator.dxf] Q Ш 1X1 Файл Правка Вид Выбор Черчение Размер Изменение Привязка Инфо Слой Блок Окно Помощь - S’ х 13______ eg J fi3’ ::: A А А *** □ По слою -----По слою »• По слою » Рис. 8.2. Механизм поворота для модели корабля Электродвигатель (motor) с зубчатым колесом на оси при вращении приводит в движение планку с зубцами и направляющими рычаг, они же ограничивающие движение, штифтами. Перемещаясь, планка поворачивает рычаг, на котором закреплен руль (rudder). Все это я быстро (не верьте, слишком давно я не пользовался программой) рисую в QCAD. А пока рисую, начинаю понимать, что, если подходящую «зубчатую планку» я не найду в готовом виде, едва ли сделаю сам. Мне это не нравится. Мне не нравится и то, что среднее положение
руля никак не фиксировано. Возможно, это не имеет значения, но хорошо бы сделать фиксацию нейтрального положения. И не нравится, что, включив двигатель поворота, я не знаю, когда он достигнет точки упора, чтобы его выключить. Можно, конечно, поставить концевые выключатели в точки крайнего смещения «зубчатой планки», можно не обращать внимания на этот досадный просчет, поскольку коллекторный двигатель, если подавать на него пониженное напряжение не выйдет из строя при механическом торможении. Все это так, но мне так не нравится. Попробуем что-то изменить. QCad - [/home/vladimir/4D-electronic/part8_command_devlce/rotator_3.dxf] Файл Правка Вид Выбор Черчение Размер Изменение Привязка Инфо Сдой Блок Окно Помощь _ V cj j fij -2? й, V-. *** □ По слою ’ ----------По слою По слою 100 / юоо Штриховка создана успешно. Укажите первую границу 1-274.5194,552.834 289.4163, 352 ML? 617.24094 116.4075” 455.73694 129.4239” VMwionfpBsw границу Рис. 8.3. Вторая версия механизма поворота для корабля Вторую версию механизма поворота я так же быстро и легко рисую в программе QCAD. Движение осуществляется за счет тросика, зафиксированного на рычаге поворота и на катушке подмотки, размещенной на валу двигателя. Возвратное движение реализуется пружиной. Тросики имеют запас для хода рычага в противоположном направлении. В нейтральном положении рычаг удерживается действием двух пружинам, весь механизм собирается в нейтральном положении. Ограничители (stopor) устанавливаются так, чтобы поворот был достаточно эффективен. Из того, что меня раньше не устраивало, осталось только торможение электродвигателей в крайнем положении поворота. Но с этим я ничего пока придумать не могу, поскольку для использования червячной передачи ее нужно иметь, а сделать ее, я уж точно, не смогу. Пока. Наберусь опыта, так и не такое сделаю. Электрическую схему придется изменить. Двигателей поворота стало вдвое больше, и мне хочется избежать ситуации, когда работают обе кнопки поворота одновременно при случайном нажатии.
О _____________________________________ ________________ ___ gschem____ ______________________________________________________С W 1X1 | Файл Правка Буфер Вид Страница Добавить Иерархия Атрибуты Настройки Помощь У 1 & ъ г т| ц Pick | Повтор/пусто | Меню/Огмена ..rt8_command_device7ctri_l/ctr1_l sch Сохранено - Режим выборки Рис. 8.4. Модифицированная электрическая схема командоаппарата Электрическая схема и конструкция узла поворота готовы. Кнопки, которые я использовал, все на 2 положения с фиксацией, кнопки хода на 4 направления, кнопки поворота на 2 направления. Дополнительные । руины контактов используются для блокирования режима одновременного включения кнопок противоположных режимов. Можно приступать к экспериментам. Испытательным полигоном мне послужит ванна, благо на улице зима, и все водоемы в городе замерзли. К модели от пульта управления пойдут 5 проводов. Токи небольшие, провода могут быть тонкие. Двигатель для механизма поворота я могу купить один — нужно проверить, работает ли само устройство, удовлетворит ли меня работа модели в целом. Если все это по результатам «полевых» испытаний окажется вполне удовлетворительным, можно будет докупить второй двигатель. Но, конечно, провода — это не «круто». Хорошо. Я не буду связываться с радиоканалом из-за трудностей с измерением и наблюдением радиочастот. Я не собираюсь гонять модель на просторах Атлантики, а ближайший пруд не больше 10 метров. Что я могу кроме проводов и радиоканала использовать для управления моделью на расстоянии в 5 метров? Мой телевизор прекрасно включается на этом расстоянии от пульта со «свежими» батарейками. Не использовать ли мне что- нибудь в этом роде? Попробуем. Пульт, конечно, придется полностью переделать, да и схему тоже. С пультом разберемся попозже, а со схемой нужно разбираться сразу. Движение модели будет мало отличаться от предыдущего варианта — двигатель включен, движемся, выключен — стоим. Реверсивное движение можно оставить, и можно добавить, поскольку все равно все переделывать, быстрый ход и медленный. Схема поворота модели тоже, пожалуй, мало будет отличаться от предыдущего варианта, если мне не захочется изменить конструкцию. А захочется? Легко сказать, управление сделать, как у телевизора, а как это сделать? Я в этом ничего не понимаю, но, посмотрев в умных книгах и безалаберном Интернете, как устроено управление телевизором, я понял одно — в пульте управления телевизором стоит светодиод НК (инфракрасного) диапазона. В самом телевизоре стоит фотоприемник, который сигналы с пульта и принимает. А сами сигналы — это некоторые импульсы, модулирующие несущую частоту, например, 40 кГц. Отбросим эту несущую частоту, останутся импульсы управления. Положим, я буду посылать от 1 до 10 импульсов с пульта. Каждому импульсу будет соответствовать некоторая команда. Чтобы «расшифровать» эти команды нужен дешифратор (расшифровыватель). Шифр простой - 1 импульс, команда номер 1; 2 импульса - команда номер два. То есть, мне нужно просто считать импульсы, а для этого есть счетчики в цифровых сериях микросхем.
File Edit View Project Tools Settings Help /home/vladimlr/4D-electronic/part8 command devlce/control cool/control4.circuit - KTechlab □ control4.circuit Simulation Running [J Messages [y] Oscilloscope Рис. 8.5. Модификация электрической схемы управления в программе KTechlab При нажатии клавиши с надписью «импульсы» выключатель замыкается, следующее нажатие размыкает его. Каждое нажатие и размыкание — это импульс. Счетчик в программе KTechlab только двоичный, но пока мне этого достаточно. Один импульс зажигает верхний светодиод, второй нижний. Четыре импульса гасят все светодиоды. Значит, один импульс — ход вперед, четыре импульса — стоп, два импульса — задний ход. Это кажется не слишком удобным, но с этим можно работать, а, в конечном счете, нет никакой разницы, как это будет сделано, когда (и если) сделано будет. Теперь я хотел бы получить схему коммутации аналогичную той, что я придумал для проводного варианта. Пока рассмотрим схему только для узла, управляющего движением, схему для реализации поворотов отложим. Кнопки, которые я использовал в проводной схеме, я могу заменить на реле (которые выбросил из схемы в самом начале). Можно подобрать реле, работающие от счетчика, но лучше поставить транзисторный ключ, что даст возможность расширить возможности при выборе реле. Кроме того, поскольку теперь не будет проблемы одновременного нажатия кнопок, коммутация упростится за счет удаления блокирующих контактов. Для всех реле будет достаточно иметь две груины контактов. Но об этом позже. Сейчас, чтобы показать, что в Windows работа получится не хуже, я приведу схему, которая нарисована в программе Multisim. control^ - Multisim - [controlfi] [- JtT’ । File Edit Щей Bate 5»ndate Transfer Tools Reports Options ijfindow Help _|д|х|
Рис. 8.6. Модификация схемы с установленными реле в исполняющем узле Реле на схеме имеют только одну пару контактов, но это не принципиально. Как можно видеть из схемы, когда кнопкой Л мы воспроизведем один импульс, счетчик активизирует первый выход (00), и сработает реле, подключенное к транзистору Q1, его контакты К1 замкнутся. Мы почти достигли цели исполнения команд при их получении. Но есть одна «загвоздка» — если мы приняли команду «1», то следующая отправленная команда «2» превратится в «3». Есть несколько решений этой проблемы. Например, можно сбрасывать счетчик с поступлением каждой команды фронтом первого импульса, но счетчик и переключается этим фронтом, значит, нужно самый первый импульс отвести на сброс счетчика. Так можно сделать, и это решение не столь уж плохо. Можно поступить иначе. Есть такие устройства, как триггеры-защелки. Они имеют информационный вход и вход записи в триггер. После получения команды можно полученную команду переписать в триггер-защелку, после чего сбросить счетчик, приготовив его для получения следующей команды. Выглядеть такое решение будет следующим образом: /hemе/vladlrnlr/4D-electronlc/part8_command_devlce/control_coо|/control4.circuit - KTechlab File Edit View Project Tools Settings Help sphs « e zz . м component £ । c Sources Ф |i|> Battery и О-Fixed Voltage c w1 Ground (OV) о ©Current Source Q. E f) Voltage Signal u fe) Current Signal Г* <Jcccs £ ^ccvs 2 <?vccs | Svcvs h*- i- Discrete & Resistor {Г Capacitor Pl Diode 'vr- Inductor К NPN К PNP “ Resistor DIP {*• Potentiometer ei Switches —Push-to-Make -4>Push-to-Break Keypad -SPST 'DPST SPDT rDPDT Rotary - Outputs О LED Signal Lamp Bidirectional LED Q Seven Segment □ control4.circuit [J Messages [v] Oscilloscope Рис. 8.7. Запоминание команды в триггере-защелке Как вы понимаете, я вернулся в Linux (это моя основная «среда обитания») в программу KTechlab. Кнопка «имп» имитирует импульсы команд, кнопка «фикс» служит для записи в триггеры-защелки. А реле, поскольку это сейчас не имеет значения, я заменил индикаторами (светодиодами). На схеме после прихода команды «2» кнопкой «фикс» я переписал эту команду в триггеры-защелки, где она будет храниться до прихода следующей команды запоминания. Теперь можно сбросить счетчик и ждать прихода следующей команды, что я и сделал кнопкой «сброс». На выходах счетчика сейчас все нули, единицы отмечаются точками над выводом, и их можно видеть на выходах защелок. Формировать импульсы сброса и фиксации можно разными способами. Но пока не готова часть приема импульсов, пока я использую кнопки для подачи импульсов, я применю простой прием, организующий нужные мне импульсы. Я использую старшие выводы счетчика и две цифровые схемы «И» для получения вначале импульса переписи данных в защелки, а следом сброса счетчика. Это не будет работать должным образом, но будет возможность проверить запись и сброс.
/hom e/vladlmlr/4D-electronlc/part8_com mand_devlce./control_co о l/control4. circuit - KTechlab File Edit View Project Tools Settings Help GJWK zz и Component ~ Q LED Signal Lamp У Bidirectional LED Я Seven Segment о Matrix Display ©Voltmeter ©Ammeter Щ Logic Probe Щ Voltage Probe [v] Current Probe | to Logic ** О Logic Input C Logic Output ui Clock Input О Buffer Inverter control4.circuit control4.circuit Simulation Running [J Messages 0 Oscilloscope Э AND gate 'HAND gate OR gate NOR gata XDR gate XNOR gate - Connections ф Bus ©External Connection # Seri al Port # Para 11 el Port integrated Circuits gpic OJK Flip-Flop О SR Rip-Flop OD Flip-Flop #555 Oram Рис. 8.8. Организация записи и сброса на этапе проверок На данном этапе проверки становится ясно, что импульс сброса счетчика-дешифратора команд должен приходить позже импульса записи в триггеры-защелки, и что выбранный механизм сохранения команд должен работать: присмотревшись к модели схемы можно увидеть, что счетчик обнулен, а в регистре записи на двух D- триггерах сохранилась полученная команда «1». Реле, как элементы коммутации, очень удобны и универсальны. Они очень ясны в работе. Но реле достаточно дорогие и габаритные компоненты. Прибегать к их использованию следует весьма продуманно. В настоящий момент устройство хода модели требует реле только по гой причине, что я использую ход вперед и обратный ход, что требует реверсивного включения электродвигателя. Если отказаться от обратного хода, то схема включения двигателя существенно упрощается — электродвигатель можно включать транзистором вместо реле. Но мне очень хочется использовать оба режима движения. Я рассуждаю так: любой усилитель мощности реализует в на, ручке напряжение переменного тока, меняющегося не только по величине, но по направлению. Есть мостовые схемы усилителей мощности. Не попробовать ли мне повторить подобную схему? /Ио me/vladlmlr/4D-electr о nlc/partB_command_device/rotation_trnslstor/transistor_rot. circuit - KTechlab д_ыа File Edit View Project Tools и Component ё Settings Help e etet zz transistorjot.circuit Sources |i|i Battery o-Fixed Voltage co Current Source "-''Voltage Signal фCurrent Signal ©cccs ©CCVS <^vccs <^VCVS c Discrete & Resistor Capacitor t- Diode -winductor К NPN К PNP S Resistor DIP (*• Potentiometer - Switches Л. Push-to-Make -•'-Push-to-Break :: Keypad --SPST DPST - SPDT • DPDT Rotary - Outputs QLED Signal Lamp > Bidirectional LED 6 Seven Segment tra ns । sto rrot.c i rcuit [J Messages 0 Oscilloscope Simulation Running О
Рис. 8.9. Включение электродвигателя с помощью транзисторов В схеме кнопки for back 1 и 2 имитируют два триггера-защелки, каждый из которых может иметь на выходе два независимых состояния «1» и «О». Светодиоды с дополнительным резистором включены для имитации двигателя, и включены встречно, чтобы легко было различить направление тока, прямое и обратное, соответствующее двум направлениям движения модели. Пощелкав по кнопкам, можно убедиться, что мы можем получить прямое включение двигателя, обратное включение и отключение. Таким образом, подключив схему к выходам D-триггеров, мы заменим дорогостоящие реле достаточно дешевыми транзисторами и резисторами. Выбор конкретных транзисторов зависит от выбора электродвигателя. При рабочем напряжении двигателя 5-10 вольт и потребляемом токе 100 мА вполне подойдут транзисторы типа КТ502 и КТ503, при больших токах можно использовать транзисторы КТ814, КТ815. Мы немного разобрались с тем, как расшифровать команды, и как их выполнить. Посмотрим, что можно сказать о том, как получить команды. При использовании ПК управления в реальном устройстве удобно применить фотоприемники серии TSOP, как достаточно дешевые и очень удобные. Но, чтобы понять, как они устроены, построим их схему, исходя из того, что ПК сигналы — это импульсы несущей частоты 40 кГц, модулированные информационными (командными) импульсами. Для удобства демонстрации я использую оптопару — светодиод-фототранзистор из набора компонент, которые предлагает программа CircuitMaker (Windows). Светодиод будет подключен к генератору модулированного AM сигнала с несущей в 40 кГц и модулирующим сигналом 1 кГц. ^^CircuitMaker -[D:\he3\4D-electionfc\.. Aphoto-reciever.CKT* 100®-:] Fite Edt Vigw Оротгв Macros SrmjJabori wave Help -L+ VI — 1OV Рис. 8.10. Сигнал с генератора AM и несущей частотой 40 кГц В схеме модулирующий сигнал - обычный синусоидальный, что можно было бы наблюдать, если настроить все как должно. Но нас интересуют импульсные сигналы, и полученная форма вполне подходит для наших целей. Попутно хочу отметить, что несущая частота в данном случае синусоидальная в нашем случае, скорее всего, это будут короткие импульсы с достаточно большой скважностью (отношение времени наличия импульса, ко времени его отсутствия за один период). Но пока это тоже не столь важно. Фототранзистор через добавочный резистор подключается к источнику питания. При освещении фототранзистора его сопротивление уменьшается, что мы и сможем увидеть на следующей схеме:
WE 2 [Off X Division | 500.Hu Y Division 1250.0m Y Offset |-500.0m Wave | View n Single Cell |d CircuitMaker -[D~\he_3V4D electronicK .Aphoto-reciever.CKT* 100%J File Edit Mew Options Ilacrce Snulabcn Wave Help deeding Point TiansienlAnd'Sts Measutsnenl Cursors 1 [off |Cursor2 Cutsori Рис. 8.11. Использование фототранзистора в качестве приемника сигналов На этой схеме я уже добавил детектор (выпрямитель) для выделения информационного сигнала. Детектор делает все то же, что и детектор у радиоприемника. Сигнал, полученный после детектирования, может выглядеть так: дни [s CircuitMaker -[D:\he_3\4D-eiectronic\.. Aphoto-reciever.CKT* 100%) File Edit View Options Macros Simulation Wave Help Рис. 8.12. Информационный сигнал, выделенный детектором А поскольку предполагалось, что это будут импульсы (один, два, три и т.д. импульсов подряд), следует поставить компаратор. Самый простейший из них на следующем рисунке.
'жа [bi CircuitMaker [D:\he 3\4D electronic! Aphoto-recieverl CKT* 100 ] File Edit View Options Macros Sjmutetai Wave Help Рис. 8.13. Формирование импульсов после детектирования Это не самые лучшие импульсы, какие мне доводилось видеть, но видывал я и похуже. Будем считать их импульсами, которые нам нужны. Итак, на практике, повторюсь, я рекомендовал бы использование фотоприемников серии TSOP. У них уже есть все, о чем я говорил выше. На вход приходят модулированные импульсы команды, на выходе вы получите красивые восстановленные импульсы. По этой причине будем считать, что мы знаем, как принять команды. Что у нас есть на данном этапе разработки? Есть приемник команд, есть дешифратор команд, есть схема подключения исполняющего устройства. Почти все, что нам надо. Почти пора бежать в магазин и покупать все необходимое. Есть, правда, еще одна маленькая неприятность. Собрав все прототипы вместе, исправив все так, как оно должно быть в реальном устройстве, мы поймем, что получать мы можем два набора команд - команды движения и команды поворота, но только по очереди, никак не вместе. То есть, совершая поворот, мы вынуждены будем выключать двигатель хода. Так можно сделать, но так нехорошо. Чтобы придумать для устранения этого просчета? И здесь есть множество интересных решений, из которых я выберу одно, самое, с моей точки зрения, очевидное (но не самое лучшее). Я сделаю два устройства управления: первое будет управлять движением «вперед-назад-стоп». Второе устройство управления будет управлять только поворотами. Они будут совершенно одинаковы, исключая только наличие фильтра в каждом из них на свою частоту несущей. Если для первой группы команд оставить несущую частоту 40 кГц, то для второй группы команд можно выбрать частоту 10 кГц. Как может выглядеть подобный фильтр? Фильтр, пропускающий частоту 40 кГц, например, так:
Файл Правка Вставка Проект Инструменты Моделирование Вид Справка Qucs 0.0.10 - Проект: fitter нет предупреждений О О Рис. 8.14. Осциллограмма сигнала 40 кГц после фильтра в программе Qucs Амплитуда сигнала около 3 В. Этот сигнал будет подан после формирования на дешифратор одной группы команд. Сигналы другой группы команд с частотой несущей 10 кГц на выходе этой схемы выглядят так: Qucs 0.0.10 - Проект: fitter С 1±! 1X1 Файл Правка Вставка Проект Инструменты Моделирование Вид Справка Я «3 h <4 'Э х] Ц, SA U А К? Диаграмма Смита (лроводимост и) Смешанная полярная-Сми та А Трехмерная декартовская Смешанная Смита-полярн ая Круговая ВременнАя диаграмма диаграмма I Таблица истинности Sltersch] filter del моделирование ------ « < ► нет предупреждений □ О Рис. 8.15. Осциллограмма сигнала 10 кГц после фильтра Амплитуда уменьшается до 0.5 В. Думаю, эти сигналы вполне можно различить. Даже такой простой (я его не настраивал, выбрав элементы в значительной мере «наугад») фильтр вполне решит нашу задачу. Второй фильтр может быть построен аналогично:
о Qucs 0.0.10 - Проект: filter Q Е И Файл Правка Вставка Проект Инструменты Моделирование Вид Справка J а й 3 Я 4 • F d •v 'V R ft ft U В Й) fi •) 4 * / £ HI 4 °- © 3 V » x filterZ.sch filterZ.dpI нет предупреждений 0: О Рис. 8.16. Фильтр второй группы команд Этот фильтр существенно уменьшит (до 0.5 В) сигнал с частотой 40 кГц. Можно применить и более сложные, но дающие лучшие результаты, фильтры. Теперь мне яснее становится фраза о четырех-командной и двухканальной схеме. У меня, действительно, получилось два канала. А команд, правда, больше четырех. Подведем итог. Напомню, что я не ставил задачи создать командо-аппарат для управляемой модели. Хотя, если привести это все в порядок, при желании заменить фотоприемник радиоприемником, то даже это может заработать. Я же хотел показать, что можно до окончательного выбора схемы и покупки деталей разобраться со всеми функциональными узлами схемы с помощью программ EDA. Можно промоделировать различные варианты построения, можно модифицировать готовые схемы, прилаживая их к своим интересам. Можно многое сделать и до начала пайки схемы, и в процессе налаживания схемы. Конкретные схемы управления лучше поискать в литературе им посвященной, но разобрать работу, я думаю, вы согласитесь со мной, удобнее за компьютером.
Глава 9. Электрические модули, примеры и наработки Работа с программами EDA, как с любым инструментом, требует определенных навыков, в первую очередь, для полного использования всех возможностей, заложенных в программе. Начиная работу с программой, очень полезно рассмотреть примеры, если они есть, поставляемые вместе с программой. Это позволит быстрее адаптироваться к особенностям программы, понять, как и что должно быть сделано, чтобы успешно использовать программу при решении своих задач. Опытным пользователям рассмотрение примеров позволит оценить возможности и применимость программы в рамках их интересов. Готовая схема, как шпаргалка - компактное размещение очень многих полезных сведений о программе. Как обозначить величину сопротивления или частоту генератора, чтобы это не вызывало отказа при моделировании? Нужно ли оставлять пробел между числом и единицей измерения? Простые вопросы, ответы на которые в руководстве, порой, приходится отыскивать очень долго. Мое знакомство с программами EDA произошло много лет назад, но не на профессиональной почве, уж не знаю, радоваться этому или сожалеть. В один из моментов мне понадобилось нарисовать некоторое количество схем, и, главное, проиллюстрировать их работу. Если с рисованием схем было несколько проще, можно было использовать графический редактор общего применения, то с иллюстрациями дело обстояло значительно хуже. После первой попытки нарисовать синусоиду, я отказался от последующих экспериментов по причине полного отсутствия таланта художника. В поисках решения проблемы я перебрал все свои CD-диски, и на одном из них со справочными данными по электронным изделиям случайно обнаружил демонстрационные версии старых программ, среди которых были разновидность AutoCAD и Electronics Workbench. Первая позволила быстрее рисовать схемы, а вторая дала возможность проиллюстрировать их работу. Оба обстоятельства весьма меня обрадовали и запомнились. Хотя к моему разочарованию та версия программы EDA, что я использовал, не позволяла сделать многого, что подчас было нужно, но и то, что она делала, сэкономило мне много сил и времени. Но вернемся к сегодняшнему дню. Готовые схемы, включенные в дистрибутив разработчиками программы, полезны во всех отношениях, и, если они есть, ими не следует пренебрегать. Попробую это показать на конкретном примере. Схему осциллятора для программы Qucs (Linux) я взял с сайта разработчиков. I Файл Правка Вставка Проект Инструменты Моделирование Вид Справка J а И Я Я О th 4 С- *1 ft ft, к к Й £ $ 4 * / Й @ А О' @ “ •₽ нет предупреждений 0:0 л Рис. 9.1. Пример осциллятора (classic osci.sch) в программе Qucs Одним из недостатков старой версии Electronics Workbench, который меня очень огорчал, была неработоспособность программы при создании схем генераторов. Примеры, взятые мною с сайта, не работали, а на одном из них я увидел комментарий, где рекомендовалось подключить в этом случае генератор (один из компонентов программы). Но время идет. Сегодня, взяв пример схемы осциллятора для программы Qucs, я могу, включив режим моделирования, не только сразу увидеть, как работает схема, но менять значение элементов схемы и наблюдать, как сказываются эти изменения на работе осциллятора. Подобные эксперименты полезны, как мне кажется, не только начинающим. Я не отнес бы себя к их числу, но сказать сразу, что произойдет, если изменить значение какого-то элемента схемы, пожалуй, не смогу. Проще проверить это, внеся изменения в работающую модель осциллятора. Например, что произойдет, если я изменю
значения конденсатора С] и индуктивности L1? Конечно, я сразу могу сказать, что изменится частота осцилляции, которая обратно пропорциональна корню квадратному из произведения этих величин с некоторым коэффициентом. Посмотрим, так ли это? Qucs О.О.1О - Проект: models Ь [± Й Файл Правка Вставка Проект Инструменты Моделирование Вид Справка Рис. 9.2. Результаты изменения значений элементов LC контура Действительно, изменилась частота, но не только. Изменился характер колебаний. Едва ли это было очевидно до испытаний схемы. На практике, если частота генератора достаточно высока, его работоспособность проверяют, измеряя потребляемый ток. Но ток не даст исчерпывающей информации о работе задающего генератора. Неустойчивая же его работа может причинить много беспокойства. А что будет, если я изменю коэффициент трансформации сейчас равный единице у трансформатора обратной связи? Для начала я изменю значение этого коэффициента на 2. Qucs 0.0.10 - Проект: models QS8 Файл Правка Вставка Проект Инструменты Мсделиравание Вид Справка J «и Ч'Яе h « '° к) ъ 'Ь & U к В !:5 £ 5 й ♦ / *; g А о © '7 ™ ₽ х 4^classi'c_osci.scF classic osci.dpl нет предупреждений 0:0 Рис. 9.3. Результаты изменений в работе схемы И, если вы мне скажете, что вы легко получите те же результаты на макетной плате без осциллографа, я вам,
простите, не поверю. Другое дело, что, получив желаемые результаты в программе, следует проверить их на практике. С этим я абсолютно согласен. А если увеличить сопротивление резистора R2? Или поменять транзистор? Но не все сразу! Qucs О.О.1О - Проект: models ь Е Файл Правка Вставка Проект Инструменты Моделирование Вид Справка Рис. 9.4. Работы схемы при другом значении резистора в цепи базы транзистора Среди моделей транзисторов для программы Spice есть модель транзистора 2N2222. Она выглядит следующим образом: .model 2N2222 NPN(IS=1E-14 VAF=100 + BF=200 IKF=O.3 XTB=1.5 BR=3 + CJC=8E-12 CJE=25E-12 TR=100E-9 TF=400E-12 + ITF=1 VTF=2 XTF=3 RB=10 RC=3 RE=1 Vceo=30 Icrating=800m mfg=Philips) Из модели можно взять параметры транзистора. Я двойным щелчком по транзистору в программе Qucs открываю окно диалога свойств транзистора и меняю значения данные в примере на те, что обозначены в модели конкретного транзистора. Лучше бы найти справочный листок на этот транзистор, но мне не терпится сравнить результаты. И вот они результаты:
Qucs 0.0.10 - Проект: models Q SE Файл Правка Вставка Проект Инструменты Моделирование Дид Справка J а В Я 0 й 4 • l£ -a v Ч к Ч Са диаграммы |»№<;Ш№ма;в1 Полярная Табличная Диаграмма Смита Диаграмма Смешанная Смита полярная-Сми (проводимост та Смешанная Смита-полярн ая Трехмерная декартовская classic_osci_znzzzz.sch ^>classic_Dsci_ZnZZZ2.dpl -46-1: Ze-1 Ze-6 4е-Б 6е-6 time R2 R= 1Z0 kOhip- 8е-Б 1е-5’ моделирование переходного процесса TR1 Type=lin Stait=O Stop-10 us Points-10ОО Круговая ВременнАя диаграмма диаграмма Таблица истинности Meissner oscillator R1 R=500k0hm R3 R=BOO Ohm U=10V х I нет предупреждений 0:0 Рис. 9.5. Результаты подстановки параметров транзистора 2N2222 Мне эти результаты напоминают скорее шумы, чем нормальную работу генератора. Похоже, что транзистор 2N2222 «немного низкочастотный». Или программа что-то делает не так? Можно сразу проверить - вернем значения конденсатора С1 и индуктивности L1 к исходным значениям. Немного поэкспериментируем со значением коэффициента трансформации и величиной резистора R2. Qucs 0.0.10 - Проект: models Файл I равка Вставка Проем Инорумен-ы Мсделирование Вид Справка _ Н Ч ’.1 О Ъ * 1 Г_ X) ъ 'ь Ч &, к ч нет предупреждений 0:0^, Рис. 9.6. Результаты экспериментов со значениями элементов схемы Я бы сказал, что основной результат эксперимента - программа реагирует на замену параметров. Я уже провел много времени, повторяя создание модели таймера 555 по книге Qucs Work Book, и если бы сегодня утром мне сказали, что весь вечер я проведу, экспериментируя с программой, я бы не поверил. Честное слово. Но провел вечер экспериментов, и с большим, доложу вам, удовольствием! Программа Qucs не содержит в разделе цифровых компонент счетчика. Но, как и с таймером 555, ничто не мешает использовать счетчик, который есть в перечне примеров. Я взял его тоже с сайта разработчиков программы. Схема, собственно, проект, содержит несколько файлов, которые я включил во вновь созданный мною проект, после чего просто запустил моделирование. Для отображения результатов в разделе Диаграммы я выбрал Временная диаграмма.
Qucs 0.0.10 - Проект: bcd proj Файл Правка Вставка Проект Инструменты Моделирование Ёид Справка Содержание ‘bcd_pro Примечание [Схемы jkff.sch 7-портовый dtf_sr.sch Б-портовый Sync_BCD_co... Logic_one.sch 1-портовый VHDL Окна просмотра... Наборы данных Другие Предупреждения в последнем моделировании! Нажмите F5 0:0 Рис. 9.7. Схема и работа двоичного счетчика в программе Qucs Q ES И * ф Sync_BCD_counter.sch ^Sync_BCD_counter.dpl Немного поразмыслив, я решил, что могу обойтись собственным решением. Я хочу собрать вначале двоичный счетчик-делитель, а затем из него сделать десятичный счетчик. Собирать двоичный счетчик можно из цифровых элементов, имеющихся в штате программы - D-триггера и инверторов. Дело в том, что для нужного мне включения потребуется инверсный выход D-триггера, которого нет у штатного компонента программы Qucs, но это решается добавлением инвертора. После сборки двоичного счетчика-делителя я собираюсь добавить конвертер кода 1-2-4-8 в десятичный. Подобный счетчик я использовал при рассказе об управлении моделями. В тот раз, чтобы не затягивать рассказ, я испытывал схему в программе Multisim. Сейчас время есть, можно сделать это в программе, которая явным образом не содержит нужного мне элемента. Если у D-триггера соединить инверсный выход с информационным входом, то частота импульсов, приходящих на вход синхронизации, будет делиться на 2. Несколько счетчиков, включенных последовательно, по моим предположениям должны образовать искомый двоичный счетчик-делитель. Рис. 9.8. Схема двоичного счетчика на D-триггерах
Теперь можно создать новый файл, в котором полученный счетчик будет фигурировать, как подсхема. Заодно можно проверить работу счетчика, добавив к нему источники сигналов. Qucs О.О.1О - Проект: dec count Файл Правка Вставка Проект Инструменты Моделирование Вид Справка нет предупреждений 0:0 Рис. 9.9. Проверка счетчика на D-триггерах Временная диаграмма в верхней части рисунка достаточно похожа на ту, что получена со счетчиком из раздела примеров программы Qucs. Теперь можно приступить к сборке дешифратора выходов. При сборке дешифратора, за основу которого я из старого-престарого справочника взял схему микросхемы К2ПК301, я столкнулся с некоторыми интересными с моей точки зрения особенностями, чему обязан, как мне кажется, не очень хорошей работе мышки (надо бы ее «полечить»). Вид схемы может напугать неподготовленного любителя, но такого рода схемы очень полезны для начинающих в плане привыкания к виду чертежей. Тот, что далее, очень прост. На приведенной ниже схеме часть исправлений уже сделана. Qucs O.O.LO - Проект: dec count Файл Правка Вставка Проект Инструменты Модедмрованме Вид Справка Рис. 9.10. Схема двоичного счетчика с десятичным дешифратором
Первый запуск схемы на моделирование открыл окно сообщений о ходе вьшолнения. Подождав достаточно долго, я нажал клавишу Прервать моделирование, и запустил моделирование еще раз. После нескольких попыток курсор почти перестал меня слушаться, а компьютер трудился над непонятными мне задачами. Судя по выводимым на экран сообщениям, застревал я в одном и том же месте при симуляции схемы. Рис. 9.11. Окно сообщений о ходе моделирования программы Qucs Заподозрив неладное, я решил заглянуть в системный монитор. Q Системный монитор СШ Й Монитор Правка Вид Справка Рис. 9.12. Системный монитор на вкладке нагрузки системы Процессор загружался на 70-99%. Среди процессов было несколько работающих процессов «digi». Это не могло быть следствием работы программы, скорее следствием ошибок и моих действий. После удаления всех процессов «digi», что восстановило работоспособность компьютера, я стал искать причину неполадок. Она оказалась проста. При проведении соединений я не заметил, как замкнул в нескольких местах выход и вход вентилей. На экране это не бросается в глаза, а программа в попытках рептить эту сложную задачу полностью завладевает процессором. Чтобы увидеть места несанкционированного замыкания достаточно выделить соединения и сразу становится ясно, проходит ли провод дальше в месте перекрещивания, или соединяется в этом месте.
□ as Qucs 0.0.10 - Проект: test_decoder Файл Правка Вставка Проект Инструменты Моделирование Вид Справка Рис. 9.13. Ошибка при черчении схемы Можно, вероятно, увеличить рисунок схемы, чтобы это обнаружить, но мне больше помогло выделение соединений, поскольку при большом увеличении начинаешь теряться в местоположении. Историю с неисправной кнопкой мышки можно было бы и не рассказывать, а кнопку давно было пора исправить (что я и сделал), но схожая ситуация может возникать и в других случаях. Например, если попытаться собрать RS-триггер по классической схеме на элементах И-НЕ с перекрестными связями, то запуск моделирования приведет к точно такому же результату. И я не уверен, что заглянул бы в системный монитор в этом случае, чтобы удалить ненужный процесс «digi». Нет худа без добра, плохая кнопка мышки напомнила мне, что следует проверять запущенные на компьютере процессы, если что-то идет «не так». В случае с RS- триггером достаточно у одного из вентилей изменить время задержки (в диалоге свойств), по умолчанию это ноль, задав некоторое значение. Программа Qucs достаточно хорошо приспособлена к созданию новых устройств с использованием базовых элементов. После проверки работы подсхемы выводы можно обозначить. Теперь, создавая новую схему, можно использовать подсхему, как обычный компонент. Например, тот же дешифратор я выделяю в отдельную подсхему. Добавляю порты подсхемы. После изменения обозначений (Файл-Изменить обозначения схемы) в разделе Рисунки вкладки Компоненты подсхема готова к дальнейшему использованию в проекте.
Qucs 0.0.10 - Проект: dec_count Q (±1 IXl Файл Правка Вставка Проект Инструменты Моделирование Вид ^правка ь) g 1 С|О 25 4 4-V-*- & ft, U й, U Й ftfi Ъ 4 »/ «1;g 4 о- о'Э х decoder.sch Рис. 9.14. Выделение дешифратора в подсхему нет ппедугоеждений 0~ 0] / После предыдущей проверки я заменил элементы «И-НЕ» на элементы «И». Если теперь, создав новый файл, я перетащу схему дешифратора, то она будет выглядеть как микросхема с соответствующими входами и выходами, обозначенными мной. Ее подключение к уже готовому двоичному счетчику осуществляется обычным образом. Готово. нет предупреждений 0: 0| Рис. 9.15. Сборка десятичного счетчика из готовых подсхем Запуск моделирования для проверки схемы дает результат близкий к искомому, если не учитывать, что счетчик считает не до девяти (с нуля), а до пятнадцати, поскольку нет обнуления после достижения «девятки». Можно попытаться решить и эту задачу, если это нужно. Можно, добавив порты к схеме, получить весь счетчик в виде готового модуля, имеющего входы счета и сброса, и десять выходов. Механизм иерархического построения схемы с выделением функциональных узлов в отдельные подсхемы, я думаю, возник для работы с большими схемами. Вместе с тем его удобно применять для создания своих моделей устройств. Аналоговые модели могут собираться аналогично цифровым. Со временем, когда
наработок станет достаточно много, можно сказать, что модельный ряд, доступный в программе, существенно расширился. Чтобы это случилось, нужно время и постоянная работа с одной программой, у всех программ есть свои возможности, и есть свои особенности. Постоянное использование одной программы, по меньшей мере, избавляет от ошибок неправильного использования редактора. Так в одной программе правая клавиша мышки завершает процесс размещения элементов схемы, а в другой программе меняет ориентацию компонента. В любом случае, отказываться от использования программы и переходить к другой есть смысл в двух ситуациях - если программа не может помочь в решении стоящей перед вами задачи, и если вы не знаете, как решить задачу в программе, но не собираетесь использовать ее постоянно. Вы «забежали» на секундочку, чтобы решить небольшую проблемку, и продолжить свою работу. В этом случае, конечно, не хочется терять много времени на освоение программы. Qucs 0.0.10 - Проект: dec_count 1 Правка Вставка Проект Инструменты Моделирование Вид Справка 4 й 1 g О А 4 Г XJ -V А а Л к >е? decoder.sch dec_count.sch dec_countdpl I II Предупреждения в последнем моделировании! Нажмите F5 0 : О Рис. 9.16. Результаты проверки собранного десятичного счетчика Иерархическое построение проекта поддерживают многие программы EDA. Некоторые из них позволяют создавать собственные библиотеки компонент, если вам недостаточно уже имеющихся, или они по каким-то причинам вас не устраивают, но это, все-таки ближе к профессиональной работе. Вместе с тем, любителям не следует забывать об использовании проверенных и отлаженных наработок. Не только с целью экономии времени и сил, но и во избежание ошибок, подстерегающих на каждом шагу. При правильной организации работы, каждая последующая схема будет выполняться легче предыдущей и приносить больше знаний, больше пользы.
Глава 10. Готовые схемы. Бежать ли сразу в магазин, хвататься ли за паяльник? LTSpice, Windows Многие схемы, приведенные мною в качестве примеров работы с программами, я взял с сайтов www.cxem.net и www.radio-portal.ru^ где схем готовых устройств великое множество - не ленись, выбирай. Обычно радиолюбитель, начиная новый проект, имеет некоторое представление о схеме: он знает, схему какого устройства собирается сделать, он представляет предпочтительную элементную базу будущей схемы. Последние соображения могут быть продиктованы разными обстоятельствами - ценой, доступностью, весом и габаритами устройства. Хуже, когда эти обстоятельства обусловлены плохим представлением о новых элементах, или привычкой работать с определенным кругом электронных компонентов. Любой специалист, любитель или профессионал, при знакомстве со схемой разбивает ее на функциональные узлы, даже, если он считает, что не делает этого. Не верьте ему, обязательно делает. Особенно это важно для начинающих, поскольку позволяет упростить схему, дает возможность разобраться с каждым узлом отдельно. В предыдущей главе я показывал, как удобно использовать подсхемы для использования в дальнейших разработках. Но использование подсхем удобно и при знакомстве со схемой. При этом каждая подсхема может соответствовать функциональному узлу полной схемы. В этом отношении каждый функциональный узле можно предварительно проверить, понять назначение всех элементов узла, и рассмотреть влияние изменения значения каждого элемента на общие параметры функционального узла. Переходя от одного узла к другому, собирая их вместе, можно хорошо познакомиться со схемой. Мне приходилось работать со схемами в разных ипостасях: с бумажными схемами и листом бумаги, с физическими устройствами без принципиальной и монтажной схем, с «виртуальными» схемами программ EDA. Я отнюдь не сторонник заочной формы радиолюбительства, когда любая разработка начинается и заканчивается за компьютером. Это для профессионалов. Любитель должен обязательно уметь хорошо паять - никто за него этого не сделает, должен уметь читать схемы - не каждую минуту можно рассчитывать на постороннюю помощь, должен уметь работать с реальными «твердыми» копиями приборов. И это умение приходит не в один день. Независимо от предпочтений в выборе инструментов при знакомстве со схемой, компьютер или карандаш, есть смысл разобрать функциональные узлы. Я предпочитаю сделать это с помощью компьютера, и, помня о пользователях Windows, использую программы EDA для этой платформы. Какую из схем выбрать? Для начала что-нибудь попроще.
100k Рис. 10.1. Схема микшера (с сайта cxem.net) Прежде, чем приступать к обсуждению схемы, несколько замечаний. Где может найти применение схема микшера в любительских условиях? Для школьного актового зала, при выступлении самодеятельных музыкальных коллективов, при создании любительских фильмов, при подключении нескольких устройств к одному усилителю мощности. В последнем случае микшер может заменить коммутатор. Почему нельзя просто включить несколько источников звука параллельно, например, несколько микрофонов? Отчего же нельзя, можно. Чаще других используются динамические микрофоны, имеющие внутреннее сопротивление порядка 250 Ом и развивающие сигнал порядка 1 мВ. Сигнал очень небольшой, и значение 1 мВ ближе к максимальному значению. Реальный сигнал может оказаться значительно меньше. При параллельном включении двух микрофонов один из них «ведет активный образ жизни», тогда как второй становится балластом, нагрузкой для активного микрофона. Что произойдет с сигналом в 1 мВ?
Linear Technology LTspIce/SwitcherCAD III - DraFtl.asc L tt й File Edit Hierarchy View Simulate Jeds Window Help 0 c# й Q g A:-r Draftl.as: | Draftl.raw | Рис. 10.2. Параллельное включение двух динамических микрофонов Выходной сигнал, обозначенный на схеме как out, уменьшился вдвое. Само по себе уменьшение сигнала еще ничего не означает усилим его позже, но микрофоны соединяются достаточно длинной линией, пусть и экранированным проводом, с усилителем, а на линию обязательно будут наводиться паразитные шумы, величина которых соизмерима с величиной полезного сигнала. Чем больше микрофонов включено параллельно, тем меньше уровень полезного сигнала. При параллельном включении микрофонов не следует забывать и о полярности подключения близко расположенных микрофонов, как на трибуне, где зачастую устанавливают два-четыре микрофона. Если рядом стоящие микрофоны включены противофазно, то они будут «подавлять» друг друга. При параллельном включении других источников звука, имеющих усилители, каждый из них будет нагружать остальные низким выходным сопротивлением усилителя, что, кроме ослабления сигнала, может приводить к появлению дополнительных искажений за счет перегрузки. Еще одно функциональное назначение микшера - возможность регулировать уровень каждого сигнала отдельно. Для реализации всех этих функций и условий служат схемы микшеров, подобные приведенной выше. Можно разбить приведенную схему на следующие функциональные узлы: входной узел (для микрофонов усилитель, для линейных входов регулятор уровня), узел регулятора уровня, узел суммирования сигнала (резисторы по 47 кОм, соединяющие все сигналы) и выходной узел устройства (выходной усилитель микшера). Такой микшер, установленный в актовом зале школы на трибуне или на столе, позволит настроить звук от каждого из микрофонов (один на трибуне, один на столе ведущего, еще один на сцене) и избежать за счет достаточно коротких соединительных проводов, если микшер установить на сцене, ухудшения отношения полезного сигнала к шумам. По длинному проводу, который соединит микшер с усилителем мощности, расположенным в дальнем помещении, сигнал проходит с напряжением в несколько вольт, тогда как величина наводок остается прежней, соизмеримой с сигналом микрофона в один милливольт, но мало сказывающейся на сигнале в несколько вольт. Прежде чем бежать в магазин за деталями, прежде чем начинать паять есть смысл рассмотреть каждый функциональный узел с точки зрения применимости в конкретных условиях. Поскольку речь идет о конкретных условиях, я сохраню конкретное назначение проектируемого микшера - для школьного актового зала. Если говорить только об актовом зале, то можно оставить схему микшера без изменений. Использовать ли линейные или вращающиеся регуляторы уровня - дело вкуса и возможностей. Оставить ли микрофонные усилители такими, какие они есть? Это можно обсудить. Если вы предполагаете использовать динамические микрофоны, если вы предполагаете устанавливать микшер на сцене актового зала, то можно ничего не менять. Если же вы предполагаете использовать микрофоны электретные, имеющие более высокий уровень полезного сигнала за счет встроенного в корпус микрофона усилителя, то следует уменьшить коэффициент усиления усилителей. Если по каким-то причинам вам не желательно устанавливать микшер в актовом зале, а помещение, где будет размещаться микшер, достаточно удалено, то есть смысл подумать об использовании дифференциальных входов операционного усилителя во входном микрофонном узле. Если вы предполагаете использовать микшер не только в актовом зале школы, не так часто проходят торжественные собрания, а его можно использовать и при создании школьных радиопередач, и при создании
любительских фильмов, то в этом случае хорошо бы подумать об устройстве регуляторов уровня и включении в состав микшера некоторого индикатора или измерителя уровня. Профессиональные микшеры на каждом из входов могут иметь достаточно сложные фильтры, позволяющие менять тембр каждого из каналов. Поставить регуляторы тембра в каждый из каналов будет полезно при любом из вариантов использования микшера. Даже если вы предполагаете использовать его только в актовом зале школы для подключения нескольких микрофонов, регуляторы тембра (еще лучше эквалайзеры) помогут вам настроить всю систему звукоусиления наилучшим образом, то есть получить максимально громкий разборчивый звук при полной устойчивости системы. Как видите, прежде чем начинать паять, можно подумать о приведении схемы микшера к вашим нуждам. Возможно, после этих размышлений схема микшера существенно изменится. Разберем последовательно все возможные изменения схемы при расширении сферы его применения и изменении условий работы. Изменение усиления входных микрофонных узлов достигается простой заменой резисторов в схеме усилителя. Проведем простой эксперимент с операционным усилителем. Рис. 10.3. Схема эксперимента с операционным усилителем в LTSpice Если теперь изменить величину сопротивления R3 на 10 кОм, то усиление уменьшится в 10 раз. Как конструктивно поддержать это расширение функциональных возможностей микшера, можно решить по- разному: установить на плату два резистора и простой переключатель-перемычку для включения либо одного, либо другого резистора; можно сделать входной микрофонный узел в виде отдельной платы с разъемом, которая устанавливается на базовую плату микшера; можно вывести переключатель на панель управления микшера. Не следует только забывать при выборе решения, что вход микрофонного усилителя очень чувствительный, то есть, чувствителен и к наводкам! Я говорил об использовании дифференциального входа операционного усилителя при разнесении микрофонов и микшера на большое расстояние. Как выглядит такое решение? Заодно я заменю сопротивление R3.
Technology LTspIc e/S witch erC AD View Tools Help rmcramp.i micr_amp.i III - Рис. 10.4. Изменение подключения микрофона к операционному усилителю Видно, что уменьшение сопротивления резистора R3 в десять раз приводит к десятикратному уменьшению усиления. Но зачем изменять схему подключения микрофона? Дело в том, что наводки на провода от микрофона до микшера при таком подключении будут иметь характер, показанный ниже, где я добавлю еще два источника сигнала, играющих роль наводимых помех. Хотя с симуляцией схемы возникают проблемы, но из рисунка ясно, что сигналы помехи (II и 12), наводимые одинаково на два провода, взаимно компенсируются и не складываются с полезным сигналом. При первоначальном варианте подключения один из проводов находится под потенциалом земли, и помеха наводится только в один из проводов, а, следовательно, складывается с полезным сигналом. Рис. 10.5. Добавленные сигналы помехи в измененной схеме подключения Кроме изменения схемы подключения можно подумать о модификации следующего функционального узла — регулятора уровня. Если вы собираетесь использовать микшер для создания школьных радиопередач или в кружке кинолюбителей, создающих собственные фильмы, то при таком роде работ сильно возрастает нагрузка
на регуляторы уровня. Если ранее достаточно было применения любого подходящего переменного резистора, то теперь подобный резистор начнет очень быстро «трещать» при регулировке громкости. Износ наступит очень быстро. Чтобы избежать подобной проблемы, можно изменить узел регулятора. Есть несколько решений, например, с использованием переключателя на герконах, или использование в качестве регулирующего элемента полевого транзистора, или, что мне однажды приходилось делать, использовать фоторезистор в качестве регулирующего сопротивления, а для управления фоторезистором использовать лампочку накаливания, работающую при пониженном напряжении. Пониженное напряжение существенно продлит срок службы лампочки накаливания, а регулировать яркость лампочки можно с помощью обычного переменного резистора, износ которого с характерным «треском» никак не скажется на колебаниях яркости лампочки из-за ее большой инерционности. Схема такого функционального узла могла бы выглядеть следующим образом: S Сисппмакег - [D\he_3\4D-elecrronic\part10_scnemsweg CKT‘ 10G i] File Edit View Options Macros Srndeticn Wave Help □ODBtnV - 300 OmV 100.00m V .100 OmV -300 OmV .500 OmV \OcetatrigPcint^TransientAnaK>sis/~ Е Рис. 10.6. Применение оптопары «фоторезистор-лампочка накаливания» Я не нашел подходящей программы для «полновесной» иллюстрации, так что в программе CircuitMaker заменил лампочку накаливания светодиодом (кстати, было бы интересно попробовать и такой вариант). Фоторезистор R1 образует с резистором R2 делитель напряжения сигнала. В зависимости от освещенности фоторезистор меняет свое сопротивление, изменяя уровень сигнала. При должном выборе элементов схемы можно получить весьма хорошо работающий регулятор с большим сроком службы. Для проверки работы регулятора в режиме симуляции фоторезистор можно заменить обычным потенциометром с сопротивлением, которое можно получить после физических экспериментов с освещением фоторезистора, измерив его сопротивление при разных уровнях освещения. В качестве регуляторов тембра можно использовать схемы, применяемые для этих целей, или использовать схемы эквалайзеров. Добавлять узлы регуляторов тембра лучше после входного усилителя и предусмотреть отключение этих регуляторов. Вопрос о схеме индикатора или измерителя уровня сигнала в значительной мере может решаться, что называется «по вкусу». В самом простом случае это будет вольтметр переменного тока с подходящим пределом измерения. Если снабдить его собственным усилителем на операционном усилителе, то можно не рассматривать его влияние на остальную часть схемы микшера. Если использовать микроамперметр в качестве измерителя уровня, то его тоже лучше снабдить отдельным усилителем на операционном усилителе, но вариантов включения может значительно больше, можно учесть и такой фактор, обязательно учитываемый при построении профессиональных устройств такого рода, как наличие пиков громкости и среднего уровня громкости. Измеритель уровня должен показывать средний уровень, но показывать и пики громкости. Самым интересным, с моей точки зрения, и одним из самых дешевых решений, является построение измерителя уровня на линейке светодиодов. В основе этого решения лежит применение нескольких компараторов, нагруженных каждый на свой светодиод. Сами компараторы могут быть собственно компараторами, микросхемы вполне доступны, могут быть построены из операционных усилителей, и могут быть построены на цифровых микросхемах (тоже различным образом). Я приведу пример наиболее ясный, как мне кажется, с применением операционных усилителей.
Рис. 10.7. Простейший измеритель уровня на светодиодах Я не нарисовал входной усилитель (еще один операционный усилитель), чтобы не загромождать схему без необходимости. Количество светодиодов, соответствующих отображаемым уровням сигнала, может выбираться из соображений удобства. В данном случае нижний светодиод отображает минимальный уровень, следующий номинальный, дальше максимальный уровень, а последний светодиод может отображать уровень перегрузки. Соответствующим выбором резисторов R1-R5 эти уровни приводятся к реальным величинам сигнала. И не следует думать, что добавление нового устройства сильно «загромоздит» микшер — четыре операционных усилителя сегодня могут размещаться в одном корпусе микросхемы, а добавление одной микросхемы, нескольких резисторов и светодиодов никак нельзя назвать загромождением схемы, если учесть появление такой функциональной возможности, как контроль уровня сигнала. Как и любую другую схему, схему измерителя уровня сигнала можно разбить на функциональные узлы, с тем, чтобы разобрать их работу по отдельности. Эти узлы можно оформить в иерархическую структуру проекта в виде подсхем. Словом, здесь очень много возможностей. Рассмотрим работу операционного усилителя в качестве компаратора. Рис. 10.8. Операционный усилитель в качестве компаратора
Я б программе LTSpice использую генератор линейно нарастающего напряжения. Его напряжение, начиная с момента времени 0,1 с, будет увеличиваться до значения 4 В. Резистивный делитель R2R3 делит напряжение источника питания VI пополам (то есть, до 2,5 В). Когда значение напряжения генератора достигает этой величины, сигнал на выходе операционного усилителя меняется с -4 В до +4 В. Пока напряжение на прямом входе операционного усилителя ниже напряжения на его инверсном входе, на его выходе будет полное выходное напряжение одной полярности, поскольку операционный усилитель без цепи отрицательной обратной связи имеет очень большой коэффициент усиления по напряжению. Когда напряжение на прямом входе немного превысит напряжение на инверсном входе, выходное напряжение станет полным выходным напряжением другой полярности. Таким образом, операционный усилитель сравнивает два напряжения — на инверсном, определяемым некоторым опорным напряжением на резисторе R3, входе и прямом входе, подключенном к нашему источнику сигнала. Пока напряжение сигнала ниже опорного, состояние выхода одно, когда напряжение сигнала превысит значение опорного напряжения, операционный усилитель переключится в другое состояние. Моделирование функционального узла напоминает мне о существовании небольшой проблемы, о которой я, признаться, забыл. При двух-полярном питании операционного усилителя до момента его перехода в другое состояние светодиод, подключенный к выходу операционного усилителя, окажется под воздействием обратного напряжения, которое ограничено вполне определенным значением для данного типа светодиода. В отличие от обычных диодов оно не так велико. Чтобы наверняка защитить светодиод от воздействия напряжения обратной полярности, можно включить встречно-параллельно светодиоду обычный диод. В схеме индикатора уровня сигнала можно выделить еще один функциональный узел - выпрямитель. При желании этот узел может формировать два варианта отображения уровня сигнала - среднее значение за большой период времени, и пиковое значение за короткий промежуток времени. Такая особенность больше важна в профессиональном применении, но может быть полезна и в непрофессиональном устройстве. Рассмотрим этот узел поближе. Рис. 10.9. Узел выпрямителя схемы индикатора уровня Манипулируя сопротивлениями R1 и R2 и емкостью конденсатора С1, можно управлять реакцией схемы на изменение уровня сигнала. Реальные звуки имеют зачастую взрывной характер, что в музыке, например, удар в литавры, что в речи, как взрывные звуки «П», «Б» и т.д. Например, изменив сопротивление R1, можно получить другую реакцию схемы на изменение уровня сигнала.
Linear Technology LTspice/SwitcherCAD III - rectifler.asc Li Ш Fite Edit Hierarchy View Simulate Toais Window Help | e й й ¥ Q о. ч в вa <=p rertifier.asc | rectifier raw | Рис. 10.10. Изменение реакции схемы на уровень сигнала Обе схемы подключены к генератору прямоугольных импульсов, имеющих резкое нарастание уровня сигнала. И, если первая схема хорошо повторяет это резкое изменение, то вторая слабо реагирует на него. Здесь можно с помощью программы LTSpice проверить и выбрать все необходимые времена и значения элементов схемы. Если вы собираетесь использовать микшер только для подключения нескольких микрофонов в актовом зале школы, то, тем не менее, было бы полезно дополнить схему микшера автоматическим регулятором уровня сигнала, который можно настроить на ограничение уровня громкости. С этой задачей хорошо справится полевой транзистор. А схема может выглядеть, примерно, так: Рис. 10.11. Принцип работы автоматического ограничителя уровня сигнала В схеме VI — это генератор синусоидального сигнала, a V2 — источник постоянного напряжения. Сейчас на выход схемы, обозначенный output, проходит практически весь сигнал от генератора. Если изменить напряжение с 2 В на 1 В у источника постоянного напряжения V2, то значение сигнала на выходе схемы гоже изменится.
Linear Technology LTspice/SwitcherCAD III - auto_reg.asc U I±1 IS File Edit Hierarchy View Simulate Tools Windew Help ] 0 й H TO Q. et 4. S S ft %," * ft Й Q S i» 4 t? ф ! $ c> й О о л, .P auto_reg.ax | auio_reg raw | V(output) 350r 280 210r 140r 70гг. 1 On 1 j I I I I I I I I I I I । I J I J l| -70r -140r -210r -280 -350r . . lOmJ Рис. 10.12. Изменение уровня сигнала при изменении напряжения V2 Теперь, взяв сигнал, поступающий на вход общего усилителя микшера (его выходной каскад), выпрямив этот сигнал и усилив при необходимости, мы подадим его в качестве управляющего сигнала вместо источника V2, а сигнал на вход общего усилителя микшера подадим с точки соединения полевого транзистора с резистором R1 (output). Конечно все элементы схемы, включая (и особенно) транзистор, следует тщательно подобрать, подобрать уровни сигналов, но с помощью программы LTSpice это не выглядит уж столь неразрешимой задачей. Не так ли? Кстати, аналогичным образом полевой транзистор можно использовать и в регуляторе уровня сигнала вместо пары фоторезистор-лампочка накаливания. Даже такая простая «готовая» схема, если не бежать сразу в магазин, не хвататься сразу за паяльник, после некоторого времени, потраченного на размышления, предоставляет много дополнительных возможностей для превращения в устройство более полезное для вас, чем исходное.
Глава 11. Ремонт. Windows, Linux Для многих радиолюбительство начинается с ремонта домашней техники. Сломался электрический чайник, или что-то сломалось в телевизоре, или в компьютере — не всегда есть возможность воспользоваться услугами специализированных фирм, и как итог, человек начинает ремонтировать. Более опытным радиолюбителям знакома ситуация, когда сосед просит посмотреть неработающую технику, или теща уверена, что он лучше справится с ремонтом, чем это сделают в мастерской. Наверняка, есть радиолюбители, для которых ремонт бытовой техники остается основным увлечением. Им интересно «оживить» неисправное устройство, интересно посмотреть, как устроен тот или иной аппарат. Сегодняшняя электроника в плане ремонта ориентирована на замену модулей или плат, а диагностика, зачастую, устраивается производителем оборудования в виде встроенных средств тестирования. Достаточно подключить компьютер, запустить программу диагностики, разработанную на стадии проектирования изделия, и получить исчерпывающие рекомендации по замене неисправного модуля. Но эти программы, как и схемы, как правило, во владениях специализированных технических центров. Для радиолюбителя, опять-таки, как правило, они недоступны. При ремонте техники, будь то система зажигания автомобиля, старый транзисторный радиоприемник, или измерительный прибор, оказавшийся у радиолюбителя, хорошую службу могут сослужить программы EDA. Я постараюсь привести несколько примеров из собственного опыта по общению с приборами. Есть хороший прибор для измерения сопротивления изоляции, такие приборы называют мегаомметрами (или в просторечии «мегерами»). Причину многих неисправностей можно найти в устройствах питания схемы. Вот как выглядит узел питания (не включающий высоковольтную часть) этого мегаомметра: Linear Technology LTsplce/SwltcherCAD 111 - eso2O2.asc File Edit Hierarchy View Simulate Tools Window Help | В s в ¥ jf s % w * % л,-F eso202.asc | eso202.raw | Рис. ILL Узел питания мегаомметра ЭСО202 Узел питания, как впрочем, и вся схема мегаомметра, сделан достаточно просто, лаконично. Мне нравится схема прибора. Напряжение VI получается после выпрямления напряжения от генератора (динамо-машины) прибора, приводимого в движение вручную. Напряжение в точке соединения полевого транзистора Ли двух стабилитронов служит опорным напряжением при формировании высоковольтного напряжения для измерений. В схеме, которая есть у меня, параллельно светодиоду D7 включен резистор сопротивлением 820 Ом. В реальных приборах этот резистор отсутствует. Действительно, светодиод вполне справляется с задачей, светодиод очень надежный элемент, который может прослужить дольше, чем весь прибор. Но в случае выхода светодиода из строя работа узла питания нарушается, и прибор ведет себя весьма странно. Особенно неприятно это выглядит в том случае, когда один из выводов светодиода окислен, и, хотя пайка выглядит великолепно, контакта в месте подпайки проводов к светодиоду нет. Прозвонка мультиметром светодиода показывает его исправность, а прибор не работает должным образом. Некоторое неудобство, связанное с необходимостью вращать ручку при любых измерениях, приводит к тому, что ты на некоторое время оказываешься в тупике — все, вроде бы, исправно, а прибор не работает. Оборвать один из проводов светодиода в программе LTSpice у меня не получилось, но если его удалить полностью, что весьма близко к реальному положению дел, картина питающего напряжения приобретает
следующий вид: Рис. 11.2. Вид питающего напряжения при обрыве светодиода Это, конечно, очень простой пример неисправности, требующей ремонта. Но пример, весьма очевидный при работе с программой LTSpice, становится не столь очевиден, если работаешь с реальным прибором даже при наличии необходимых измерительных приборов, хотя в данном случае достаточно тестера. В более сложных ситуациях, особенно если вспомнить, что в приборах этого поколения широко использовалось соединение функциональных узлов с помощью «жгута», а платы хорошо покрывались лаком, использование измерительных приборов далеко не сразу дают ответ на вопрос, что же вышло из строя? Достаточно популярный прием замены всех полупроводников на заведомо исправные тоже не «панацея» от всех бед, не говоря уж о том, что пайка печатных плат может приводить к порче дорожек, которые после замены полупроводников еще предстоит восстанавливать. До появления программ EDA приходилось рисовать отдельные узлы на листе бумаге и придумывать, как выявить ту или иную неисправность. С появлением программ этот процесс значительно упрощается. Один раз нарисовав схему в программе, можно провести все эксперименты, которые приходят в голову, получить ответ на вопрос о применимости тех или иных вариантов проверок, получить, пусть предварительные, данные о поведении схемы в тех или иных условиях экспериментов, и, как мне кажется, гораздо полнее и проще выявить причину отказа, а, возможно, и условия появления этой причины. Достаточно, например, в схему, нарисованную выше, добавлять генераторы разных помех - импульсов в цепи источника VI, или встречного напряжения на эмиттерах транзисторов Q1 и Q2, которое может появиться при неблагоприятном стечении обстоятельств. С помощью вспомогательных генераторов, можно хотя бы сделать попытку отыскать причину выхода из строя того или иного элемента, и, следовательно, избежать повторных выходов из строя прибора. В более сложных случаях полезно рассмотреть схему, чтобы яснее представить себе работу узла. Так, например, ряд неисправностей, связанных с микросхемой К547КП1А, всегда вызывали у меня затруднения. Узел, изображенный ниже, всегда был мне непонятен (нарисованы не все элементы узла):
Рис. 11.3. Узел схемы измерителя сопротивления заземления Насколько я понимаю, назначение этого узла в выпрямлении некоторого переменного напряжения с последующим отображения результата стрелочным прибором (нА), подключенным к выходу операционного усилителя. Мне всегда хотелось собрать этот узел отдельно, чтобы яснее понять его работу. Сама микросхема К547КП1А выглядит так: xclrcuit □ {±1 Ш Рис. 11.4. Микросхема К547КП1А, нарисованная в программе Xcircuit Таким образом, микросхема представляет собой набор полевых транзисторов с изолированным затвором, используемых в качестве ключей. Чтобы понять работу схемы, заменим два элемента микросхемы транзисторами, и проведем эксперименты со схемой. В программе KTechlab я не нашел полевых транзисторов с изолированным затвором, использовав обычные транзисторы, кроме того пришлось изменить цепь обратной связи операционного усилителя, но в этой программе симуляция выглядит самым наглядным образом, и, если бы мне пришлось «на скорую руку» разбираться со схемой, я бы выбрал этот вариант. Потенциометр сопротивлением 3,3 кОм служит для установки микроамперметра в нуль. Для проверки этого я уменьшаю сигнал с помощью делителя на выходе D-триггера, который мне заменяет входные узлы прибора, и затем потенциометром устанавливаю значение тока через микроамперметр, как можно ближе к нулю (в схеме получилось 68 наноампер).
/home/vladimir/4D-electronlc/partll_repalr/lzm_zazem/lzm_zazem.circuit - KTechlab □ Ш IX' File Edit View Project Tools Settings Help Component ’-Rotary - Outputs О LED C.Signal Lamp Bidirectional LED 8 Seven Segment , Matrix Display ©Voltmeter ©Ammeter И Logic Probe |д Voltage Probe Current Probe G. Logic O-Logic Input -OLogic Output ut. Clock Input -[ Buffer Ф Inverter AND gate NAND gate OR gate NOR gate XOR gate XNOR gate - Connections ф Bus ©External Connection ^Serial Port ф Parallel Port - Integrated Circuits OPIC OJK Hip-Flop О SR Flip-Hop -n-n Clin-CInn ®nzz Рис. 11.5. Модель выходного узла прибора в программе KTechlab На экране осциллографа, подключенного к выходу операционного усилителя, практически ноль. Теперь, после установки нуля, я изменю значение сопротивление в делителе входного сигнала с 8 Ом на 100 Ом, тем самым, увеличивая входной сигнал. /home/vladimir/4D-electronlc/partll repalr/Izm zazem/lzm zazem.circuit - KTechlab File Edit view Project Tools Settings Help u component Sources ]) Battery j-Fixed Voltage recurrent Source Voltage Signal •C>Current Signal ©cccs ©ccvs ©VCCS ©VC vs Discrete c= Resistor (| Capacitor W Diode -sr Inductor К NPN К PNP “Resistor DIP (И Potentiometer - Switches Л. Push-to-Make ^Push-to-Break Keypad -SPST *DPST .SPOT DPDT Rotary - Outputs О LED Signal Lamp >Bidirectional LED ____ Seven Segment Рис. 11.6. Результат увеличения входного сигнала на модели Для наглядности я подключил «второй канал» осциллографа к выходу генератора сигналов. Ток через измерительную головку увеличился до 24,9 мкА. Верхний сигнал на экране осциллографа слегка приподнялся над нулевой отметкой. Теперь еще больше увеличим входной сигнал с помощью резистора в делителе напряжения. И два канала осциллографа я подключу к входам транзисторов.
Рис. 11.7. Сигналы на входах ключевых транзисторов и выходе узла На модели видно, как изменяются показания прибора, что осциллограф показывает увеличение постоянного напряжения на выходе измерительного узла, а еще два канала осциллографа показывают противофазные сигналы управления на входах ключевых транзисторов. В целом, модель демонстрирует возможность выпрямления сигнала, поступающего от предварительных узлов обработки, и, в отличие от простого выпрямителя с диодом, способность выпрямлять и большие сигналы, как и диод, и маленькие сигналы, которые диод не может выпрямить из-за недостаточности падения напряжения для открывания перехода диода. Давно мне хотелось не только понять, для чего в приборе применяется микросхема К547КП1А, но и увидеть, как она работает. Все руки не доходили. Теперь увидел. Очень просто, и с моей точки зрения интересно, построена схема другого прибора - измерителя сопротивления цепи фаза-нуль. Смысл использования прибора в проверке сопротивления фазового и нулевого проводов, подведенных, например, к розетке. Знание этого сопротивления помогает решить вопрос о выборе автомата защиты, а регулярный контроль этого сопротивления позволяет вовремя заметить неполадки в электропроводке, которые при неудачном стечении обстоятельств могут грозить большими неприятностями. Мы настолько привыкли пользоваться электрическим током, что забываем об опасностях, связанных с ним. Если вы никогда не выключали из розетки бытовой прибор путем «вытягивания вилки за шнур», то вам не нужны напоминания, но мне случается время от времени делать подобные глупости, и приходится время от времени напоминать себе, что эта глупость не самая безопасная. Что представляет собой схема прибора. Ее основную часть я постараюсь нарисовать.
Linear Technology LTs pic e/5 witch er CAD III - r_zero.asc U l± Fite Edit Hjeraithy View Simulate Tools Window Help | 0 с' й ¥ <k. e. Kt ВЙ W » » И О a t i Ф ? Ф ! $l>8 о о л, »r f_™oasc | f zeraraw ] Рис. 11.8. Калибровка схемы измерения сопротивления фаза-нуль Схема, конечно, не полная. На ней изображено ровно столько, сколько нужно для понимания принципа работы прибора. Сопротивление резистора R1 должно «изображать» сопротивление цепи фаза-нуль. Резистор R5 - это стрелочный прибор с шунтирующим резистором. Резистор R2 в делителе напряжения R2R3 в реальном приборе - это потенциометр, которым прибор калибруется так, чтобы стрелка прибора отклонилась до конца шкалы (в нашем случае ток 1 мА через резистор R5). Измерительная часть схемы, включенная параллельно резистору R1, представляет собой вольтметр переменного тока, сделанный из миллиамперметра постоянного тока, а стабилитрон D1 служит для «растяжки» шкалы. Известно, что при небольших изменениях обратного напряжения на стабилитроне, ток через стабилитрон меняется очень существенно. Именно это свойство часто используется для отображения небольших изменений напряжения на всю шкалу прибора (или для «растяжки» шкалы). После калибровки прибора включается измерительный резистор, как это показано на следующем рисунке. Linear Technology LTspice,’SwttcherCAD III - f_zero.raw File View Plotsettings Simulation Tools Windew Help |0г ы ¥ т ^.Q.ek4i.eiaAla%"ii4si мае г. rzeroasc f_zeroraw | Click to manuallyerrter Honzontal Axis Limits Рис. 11.9. Проведение измерения при контроле сопротивления фаза-нуль Ток через измерительный резистор протекает весьма значительный, что вызывает падения напряжения на всем участке «фаза-нуль» измеряемой цепи, уменьшая напряжение на входе прибора. Измерительное устройство покажет уменьшение тока, а его шкала калибруется в соответствующих значениях сопротивления.
Очень простой и изобретательный метод измерения. И заметьте, что вы измеряете не только сопротивление проводов, которые проходят от места замера до, скажем, силового шкафа. Их вклад в измеряемое сопротивление будет определяющим только в том случае, если все хорошо, все исправно. Но в это сопротивление входит и переходное сопротивление всех промежуточных соединений, и сопротивление контактов автоматов защиты. Мне приходилось видеть оплавленные розетки и выгоревшие устройства. Хорошо, если это происходит на ваших глазах, и вы можете вовремя обесточить сеть. В месте плохого контакта при нагрузке, включенном утюге или электроплите, будет рассеиваться значительная мощность, вызывая нагрев до весьма значительной температуры. Зная типовое сопротивление по предыдущим измерениям, которое должен показать прибор, вы можете заметить увеличение этого сопротивления, и найти место плохого контакта до того, как случится неприятность. Однако я привел пример не только потому, что меня восхищают подобные простые, но эффективные схемные решения. Весь прибор находится под напряжением сети. Любые измерения, которые вам приходится делать для выявления неисправности, несут опасность. Можно, конечно, что-то измерять при отсутствии напряжения, но при этом не получаешь исчерпывающей информации. И в этом случае моделирование схемы в программе EDA может очень выручить. В качестве схожей ситуации, когда измерения приходится проводить под сетевым напряжением, можно рассматривать ремонт почти всех импульсных блоков питания. Когда-то я услышал шутку, что любое напряжение выше пяти вольт «от лукавого». Что ж, в каждой шутке есть доля истины. Программы EDA позволяют проверить влияние еще одного весьма важного параметра - температуры. В приведенном выше примере через резистор R2 протекает большой ток, вызывая рассеяние большой мощности на этом элементе схемы. В приборе резистор, реостат, очень сильно нагревается. Неисправность или дефект любого элемента схемы, возникший при его изготовлении, может проявиться в виде повышенной чувствительности к температуре. Мне приходилось сталкиваться со сложным устройством, отказ которого вызывало незначительное увеличение температуры. Исследования, проводимые на плате после ее извлечения из устройства, не выявляли каких-либо отклонений от нормы. Устройство исправно работало. Но спустя некоторое время после сборки оно переставало работать. Трудно было даже выявить узел, ответственный за эту неисправность. А причина отказа - незначительное повышение температуры в корпусе устройства после сборки. Одна из микросхем вышла из строя таким причудливым образом. При комнатной температуре она ничем не отличалась от своих исправных «товарок». Полупроводниковые приборы очень чувствительны к температуре. Это их свойство активно используется в полупроводниковых терморезисторах, в датчиках температуры разного рода. Но когда оно приводит к отказу схемы, особенно сложной, выявить неисправный элемент бывает трудно. Часто для этого используют бытовой фен, направляя струю горячего воздуха на плату. В некоторых случаях это выявляет неисправность, в других может привести к еще большей путанице. Радиолюбителю приходится часто экспериментировать. Он работает с заведомо неисправным устройством при ремонте, он проводит различные измерения при налаживании своей конструкции. Вопрос, можно ли так подключить измерительный прибор, не приведет ли это к поломке прибора или проверяемой схемы, далеко не праздный вопрос. Случаются ситуации, когда исчерпывающий ответ на него не может быть получен даже по зрелому размышлению. И в этом случае моделирование в программе EDA может сослужить добрую службу. Я вполне серьезно готов рассматривать применение программ EDA в любительской практике, как современное мощное инструментальное средство, сродни цифровому мультиметру или осциллографу. Вот еще один казус из области ремонта, которому я так и не смог найти объяснение, но который несколько раз встречал, и каждый раз это ставило меня в тупик. Чаще всего резисторы выходят из строя при рассеивании слишком большой мощности. Резисторы темнеют, краска на них выгорает. Иногда потемневший и обгоревший резистор продолжает исправно работать, но, если он стрел, он заметен сразу, и выявление неисправности не представляет большого труда (если неисправность устраняется заменой этого сгоревшего резистора). Но иногда резистор выглядит превосходно, не отличается по виду от соседних резисторов. И только сняв его с платы можно при внимательном осмотре заметить небольшое потемнение, точку пробоя. Возможно, подобный выход из строя резистора происходит при кратковременном появлении напряжения на нем выше предельно допустимого. Здесь я не готов к категорическим утверждениям. Но поиск неисправности методом осмотра в этих случаях не приводит к успеху, особенно если видимый дефект находится под резистором и укрыт между ним и платой. К моему большому удивлению подобный дефект я встречал у резисторов на входе операционного усилителя.
Qucs 0.0-10 - Проект: resistor Q Qj Qfl Файл Правка Вставка Проект Инструменты Моделирование Вид Справка Рис. 11.10. Типовая схема включения операционного усилителя в Qucs Операционный усилитель сегодня применяется также часто, как раньше применялись транзисторы, что справедливо. Они могут использоваться для усиления сигнала переменного напряжения, для формирования сигнала, для усиления сигнала постоянного напряжения. Часто операционные усилители составляют основу активных фильтров. Очень полезный и нужный прибор. Что произойдет при выходе из строя одного из резисторов R1 или R2? Как минимум это может привести к изменению параметров схемы. Qucs 0.0.10 - Проект: resistor t Ш 1Л Файл Правка Вставка Проект Инструменты Моделирование Вид Справка Рис. 11.11. Поведение схемы при выходе из строя резистора R2 Осциллограмма показывает, что сигнал на выходе ОУ уменьшился в 10 раз. Но измерение напряжений может ввести в заблуждение. Сопротивление вольтметра при измерении входного напряжения может сыграть роль дефектного сопротивления, если соизмеримо с сопротивлением, необходимым для нормальной работы схемы.
о Qucs 0.0.10 - Проект: resistor Файл Правка Вставка Проект Инструменты Моделирование Вид Справка Ц Sb I2fi J SJ Е» Я' ? G S 4 -О х] Ч <4 U Ч к й Й) fi 5 £• 1 @ А °- & 2 и? Таблица истинности Декартовская Полярная Табличная Диаграмма Смита Диаграмма Смешанная Смита полярная-Сми (проводимост та Смешанная Трехмерная Смита-полярн декартовская ая Круговая ВременнАя диаграмма диаграмма х ;resi’stof.sch: resistor.dpi TRJ Type=lin Start=O моделирование переходного процесса нет поедут оеждений 0:0 Рис. 11.12. Измерения при выходе из строя резистора Сам прибор, включенный вместо вышедшего из строя резистора, восстанавливает работу схемы, затрудняя отыскание неисправности. Сигнал на выходе ОУ в этом примере полностью восстановился. Если при поиске неисправности приходится решать вопрос о работоспособности ОУ работающего в режиме усиления сигнала постоянного тока, то замеры напряжения могут показывать, что все исправно, все правильно, а прибор не работает. Замена микросхемы не восстанавливает работоспособности схемы. На практике в этих случаях, вызывающих затруднение, можно подать небольшой сигнал от генератора через конденсатор и посмотреть результат на выходе с помощью осциллографа. Явно неисправный операционный усилитель удается выявить, или, если повезет, заметить влияние вольтметра. Но причина выхода из строя резисторов без выхода из строя ОУ, с чем я сталкивался, по сегодняшний день остается для меня тайной за семью печатями. Сегодня многие устройства бытовой техники используют импульсные блоки питания. При соответствующем построении схемы они позволяют без переделок и переключений подключаться к силовым сетям с разным напряжением. За счет применения преобразования частоты трансформаторы питания очень сильно уменьшаются в габаритах и весе. В Интернете я нашел очень полезные рекомендации по ремонту бытовой техники, написанные, как мне кажется, людьми, которые о ремонте бытовой техники знают не понаслышке. И, по их мнению, одним из важнейших этапов ремонта является проверка блока питания устройств. Там же на сайте я взял схему импульсного блока питания, скорее всего не промышленного, но достаточно удобного для того, чтобы понять, как работает импульсный блок питания и как подступиться к его ремонту. И, конечно, я хочу еще раз продемонстрировать удобство подобного предварительного рассмотрения в программе EDA. Как правило, импульсный блок питания начинается с обычного выпрямителя.
Qucs 0.0.10 - Проект: Ibp Файл Правка Вставка Проект Инструменты Моделирование Вид Справка J Ы ® £3© Э a i °-и? диаграммы Готово. Предупреждения в последнем моделировании! Нажмите F5 О :0 Круговая ВременнАя диаграмма диаграмма | Таблица истинности Рис. 11.13. Модель импульсного блока питания в программе Qucs >- Декартовская Полярная «, Табличная Диаграмма * Смита Диаграмма Смешанная Смита полярная-Сми (проводимое! Смешанная Смита-полярн Трехмерная декартовская □ Ш Qfl Реальный импульсный блок питания может иметь на входе фильтр, назначение которого не допустить «засорения» сети. После выпрямления на конденсаторе С1, как видно из диаграммы, получается постоянное напряжение близкое к амплитудному значению сетевого напряжения, а это, напомню, более 300 вольт! Резистор R1 на рисунке 11.13 - элемент модели, а не реального устройства. Без него моделирование сталкивается с трудностями, без которых можно обойтись. К выпрямленному напряжению подключается первичная обмотка трансформатора через ключевой транзистор Т1. В схеме, на основе которой построена модель, транзистор используется в качестве активного элемента автогенератора, а трансформатор имеет обмотку обратной связи. В реальных устройствах очень часто используют внешний задающий генератор, а транзистор используется только как ключевое устройство. Моделирование с помощью трансформатора и автогенератора вызвало такую сильную «задумчивость» у моего компьютера, что для вывода его из этого состояния пришлось воспользоваться кнопкой Reset компьютера. По этой причине я использую внешний генератор и обычный резистор вместо трансформатора. Верхняя кривая на рисунке соответствует напряжению на конденсаторе С1, вторая - результат работы ключевого транзистора (сигнал на его коллекторе). Таким образом, выпрямленное и сглаженное сетевое напряжение преобразуется в импульсы с частотой, определяемой задающим генератором. Есть выгода в применении внешнего генератора, легче определять и регулировать его частоту. Смысл же преобразования в том, что трансформатор узла питания быстро теряет габариты (и вес) с ростом частоты при фиксированной мощности. Блоки питания получаются легкими и маленькими. Полученные с выходной обмотки (маленького и легкого) трансформатора импульсы выпрямляются и превращаются в постоянное напряжение необходимой величины. На рисунке 11.13 модель блока питания очень слабо нагружена, а конденсатор фильтра С1 имеет заданную величину. В рамках ремонта блоков питания очень частой причиной отказа может служить либо перегрузка (повышенное потребление тока схемой устройства), либо высыхание конденсатора фильтра. При этом напряжение, поступающее на трансформатор, а, следовательно, и с выхода трансформатора, будет выглядеть следующим образом:
Qucs 0.0.10 - Проект: Ibp Файл Правка Вставка Проект Инструменты Моделирование Вид Справка з а л з g о <4 j е >з Аь <л и *? Предупреждения в последнем моделировании! Нажмите F5 0 О Рис. 11.14. Вид напряжения на выходе преобразователя при перегрузке У модели я в десять раз уменьшил значения емкости и сопротивления нагрузки (вполне реальная ситуация). В итоге выпрямленное (не показанным на схеме выпрямителем на вторичной обмотке трансформатора) напряжение может приобрести такой вид, что с ним не справится схема сглаживания и стабилизатор, а устройство перейдет в нерабочее состояние. На этой же модели можно оценить, что произойдет при выходе из строя задающего генератора. Для автогенераторов, зачастую, проблема устойчивой работы может быть весьма актуальна, поскольку кроме срыва колебаний может меняться частота, а это сильно изменит и выходные параметры преобразователя, и температурный режим работы ключевого транзистора. На модели можно оценить влияние вспомогательных элементов схемы, и, во всяком случае, быть гораздо осторожнее при прямых измерениях и наблюдениях с использованием приборов, сократив количество этих наблюдений до минимума. Еще одним из очень удобных и в настоящее время часто применяемых электронных приборов является триак. С его помощью можно регулировать яркость свечения ламп накаливания, регулировать нагрев калориферов, и многое другое регулировать или включать. Но триак включается в сеть с напряжением 220 В! И опять, ремонт устройства с этим элементом под высоким напряжением никак не отнесешь к веселому времяпровождению. Между тем многие вопросы, связанные с работой триака, можно разобрать на модели в программе EDA. Ниже показана схема включения триака, где сопротивление R1 должно изображать лампочку накаливания, а генератор импульсов — управляющее устройство.
j'S CircuitMaker - [D:\he 3V4D-electionk\pait11 repair\tiiac.CKT* 100 ] File Edit View Options Maaes SrnLiatfcn Wave Help aieJB] Рис. 11.15. Модель схемы управления яркостью лампочки накаливания Модель нарисована в программе CircuitMaker, имеющей подходящие элементы. На осциллограмме видно, что с приходом отрицательных импульсов управления триак включается, подавая сетевое напряжение на нагрузку. Но при переходе сетевого напряжения через нуль триак выключается до момента прихода следующего управляющего импульса. На нагрузке образуются импульсы, часть полной синусоиды питающего напряжения, что для многих видов нагрузки равносильно уменьшению напряжения, итогом становится то, что лампочка накаливания, например, светится слабее, чем при полном напряжении. И вновь, на модели можно разобрать многие причины неисправности до подключения измерительных приборов к реальному устройству. Высокое напряжение, особенно при ремонте и налаживании устройств, когда возникающие проблемы «притупляют бдительность», а многократные повторения измерений приводят к усталости, становится очень опасно, а обычный в подобных случаях подход: «А что у нас делается вон там, промеряем-ка!», — может привести к несчастному случаю. Лучше этого избежать. Конечно, не все программы, и не во всех случаях позволяют легко и просто получить ответы на возникающие вопросы. Но часть проблем можно обойти разумным изменением моделируемой схемы, разбивкой всей схемы на удобные для работы узлы. Кроме того, речь не идет о полной замене при ремонте бытовой техники всех измерительных приборов некоторой универсальной программой. Нет. Речь идет только о том, что есть полезный инструмент под названием программа EDA, который можно с пользой для дела применить в своей практике. А уж пользоваться ли этим инструментом, вопрос совершенно личный.
Глава 12. Самообразование Специалист, углубившийся в чтение документации, с одной стороны выполняет свою работу, часть которой заключается в работе с документацией, с другой стороны он занят самообразованием. И неважно, техник он или ведущий конструктор - и для того, и для другого процесс пополнения знаний, процесс постоянного самообразования жизненно необходим. Относится ли это, и в какой мере, к радиолюбителям? Если вас интересуют радиоэлектронные устройства, как предмет занятий в свободное время; если вам нравится вечерами «поковыряться в медных кишочках» бытовой электроники, а слова «меандр, импеданс, фазовращающая цепь, сдвигающий регистр» звучат красиво, но загадочно, то вам не избежать самообразования. Если вы давно в ладах с этим увлекательным занятием, но не хотите до конца дней своих чинить только соседские утюги, вам не избежать этого. Для начала самообразования вы обзаведетесь книгами. Это правильно. Если у вас есть компьютер, и он подключен к Интернету, вы найдете радиолюбительские сайты и зарегистрируетесь на форумах. Это правильно. Вы найдете в своем городе магазин, торгующий радиодеталями и приборами, и станете чаще в него заглядывать. И это правильно. Но, если вы все делаете правильно, и у вас есть компьютер, отчего бы вам не обзавестись одной из бесплатных (а если деньги у вас есть, то платной) программой EDA? Наша страна - страна образованных людей. Меня не удивит, если человек, решивший стать радиолюбителем, купит учебник по ТОЭ (Теоретические основы электротехники) и станет внимательно его изучать. И не удивит, если мой знакомый, которому лет 12, достанет какую-нибудь схему управления роботом и начнет ее паять, приставая с вопросами: «А зачем роботу вот эта микросхема?». Сам я устроен не лучшим образом. В юности я с удовольствием, например, знакомился с преобразованиями Фурье, но каким боком их пристроить к электронике, не догадался бы никогда. Однако, слушая хрипящий усилитель, собранный со всем старанием, на которое я был способен, в размышлениях и расспросах, как бы его «урезонить», я узнал от знакомого, что есть такой великолепный прибор, как измеритель нелинейных искажений. А, уменьшая эти искажения путем изменения всего, что в схеме можно было регулировать, чтобы, в конце концов, услышать чистый звук из громкоговорителя, я понял из умной книги, что прибор работает на принципе, обоснованном этими самыми преобразованиями Фурье, и с благодарностью вспомнил преподавателя математики меня с ними познакомившего. Мне, не всегда удается соединить знания из области математики с практической деятельностью. Не всегда удается применить то, что осталось в памяти от теоретических основ электротехники, к простому утюгу. До тех пор, пока я не увижу утюг в работе, я не вспомню теорию, полезную в применении к неработающему утюгу. Возможно, вы устроены иначе, и то, о чем я хочу рассказать, вам без надобности, но самим программам EDA, вы обязательно найдете полезное применение в своей деятельности. Альтернативой использования программ может послужить любой детский конструктор схожего назначения. Сам бы с удовольствием повозился с таким конструктором! Однако хороший конструктор не дешев. При этом не в каждом есть приборы, тогда как измерения в электронике очень важны и нужны. И учиться измерять что- либо тоже нужно. Для многих измерений достаточно иметь самый дешевый мультиметр или старенький тестер. Но они не дают представления о сигналах, не только существующих в любой, практически, схеме, но сегодня приобретающих значение первичных элементов, кирпичиков построения устройства из-за широкого применения разнообразных процессоров. Для работы с любой микросхемой следует знать ее функциональное назначение и характер сигналов, исчезающих в ней и появляющихся из нее. Микросхема, все в большей мере, становится «атомом» электроники. В этом смысле даже самая простая программа для работы со схемой становится и универсальным конструктором, и набором приборов, и хорошим самоучителем. В любой из программ, упомянутых в книге, можно проделать сотни полезных и познавательных экспериментов, пользуясь только компьютером. Затем эти эксперименты можно проверить «в натуральную величину», пользуясь паяльником, радиоэлементами и доступными приборами. Даже разница в результатах может положить начало новой серии экспериментов, породить ряд интереснейших проектов. Нет, что ни говорите, а программы EDA очень полезны в любом «радиолюбительском возрасте», и для начинающего, и для зрелого любителя. У меня на полке есть книга «750 практических электронных схем» Роланда Фелпса. Попробую, взяв схемы из этой книги, показать, как можно с интересом провести время с альбомом схем. Книга начинается с главы об источниках питания. Думаю, вопросам питания всякий, имеющий дело с электроникой, склонен уделять первостепенное внимание. Среди множества типовых схем включения микросхем можно встретить очень интересные варианты. Вот один из них. Есть типовая схема включения микросхем стабилизаторов постоянного напряжения, которая выглядит так:
Linear Technology LTspice/SwItcherCAD III - [power sup.asc] U tfi й' "X file Edit Hierarchy View Simulate Jeds Window Help -1 l5l *1 Рис. 12.1. Типовая схема включения микросхемы стабилизатора напряжения В программе LTSpice я выбрал микросхему прецизионного стабилизатора напряжения с вы напряжением 7 вольт. Источник напряжения V1 в реальной схеме может быть выпрямителем. Действг симуляция работы микросхемы дает ожидаемый результат: Linear Technology LTspIce/SwItcherCAD III - power_sup.asc File Edit Hierarchy View Simulate Tools Window Help | @ s и ? if e. s s ft ft * ft HaeTiisi^iitooo po»:r_sup.asc | pi»:r_sup.raw ] Рис. 12.2. Результат работы схемы в программе LTSpice Микросхема имеет на выходе ровно 7 вольт. Что предлагается в схеме, приведенной в книге?
Linear Technology LTspIce/S Witcher CAD III - [powersupl.asc] U Ш И Рис. 12.3. Модификация схемы стабилизатора напряжения Подобное включение микросхемы стабилизатора дает возможность изменить стабилизированное напряжение на выходе. В каких случаях это полезно? Если вы предполагали, что напряжения питания в 5 В будет достаточно, купили микросхему стабилизатора, а после регулировки и наладки схемы оказалось, что требуемое напряжение питания 9 В. Если вам по каким-то причинам нужно ровно 5 В, а из-за разброса выходных напряжений вы не попадаете в нужное значение, можно подкорректировать его, поставив вместо делителя R1R2 (вместо одного из резисторов) потенциометр. Или, например, в лабораторном блоке питания с выходным напряжением от 5 до 15 вольт: Рис. 12.4. Симуляция модифицированной схемы в программе LTSpice При тех значениях резисторов, что показаны на схеме, выходное напряжение возрастает до 9 В. Используя программу, можно найти ответ на вопросы: а что будет при увеличении сопротивления R1, что произойдет, если уменьшить сопротивление R2? В книге приводится расчетная формула: Ивых = Uri (1 + R2ZR1) + IgndR2. Здесь Ignd - это ток, протекающий по выводу GND микросхемы.
Очень интересный ответ можно получить на вопрос, что произойдет со схемой, если резистор R2 из нее удалить, а выход поместить в точку соединения резистора R1 и вывода GND микросхемы стабилизатора? Одна из следующих схем в книге показывает, что стабилизатор напряжения превратится в стабилизатор тока - устройство, на выходе которого поддерживается заданный ток при изменении в широких пределах сопротивления нагрузки. Такое устройство полезно, например, при построении омметра. Откалибровав ток, для определенности пусть это будет 1 мА, можно с помощью вольтметра измерять сопротивление. Показания вольтметра будут численно совпадать со значением измеряемой величины. Стабилизированным током можно заряжать аккумулятор. В книге приводится и расчетная формула, аналогичная предыдущей: 1вых = (Пстаб/Rl) + Ignd(phc. 12.5), Linear Technology LTspIce/SwItcherCAD III - [power sup l.asc] —< 6з Й File Edit Hierarchy View Simulate Tools Window Help -11?1 *1 Рис. 12.5. Схема стабилизатора тока на основе стабилизатора напряжения Попробую проиллюстрировать сказанное. Пусть на схеме резистор R2 - измеряемый резистор. Запускаем симуляцию, и... ответ отрицательный. При изменении резистора R2 ток меняется достаточно сильно, чтобы сказать «Это не стабилизатор гока, такие стабилизаторы нам не нужны!» В чем проблема? Возможно, модель микросхемы стабилизатора напряжения недостаточно точно повторяет физическую структуру прототипа. Я не исключаю того, что не совсем правильно понимаю схему, которую увидел в книге. А если подумать, то готов признаться, что не очень ясно понимаю, каким образом работает модификация напряжения стабилизации в схеме приведенной раньше. Давайте разберемся в этом, предположив, что микросхема стабилизатора при полном упрощении не более, чем схема стабилизатора, подобная следующей:
Linear Technology LTspIce/S Witcher CAD III - [powersuplasc] "X File Edit Hierarchy View Simulate Tools Window Help UtbK Bgs Mix- steife и ее Рис. 12.6. Схема стабилизатора напряжения на транзисторах Напряжение на выходе этого стабилизатора (Vout) при указанных элементах и с сопротивлением R5 в качестве нагрузки, как показывает симуляция схемы, 11,68 В. Стабилизатор напряжения поддерживает выходное напряжение в заданных (узких) пределах при значительном изменении входного напряжения и изменении нагрузки. Если уменьшить сопротивление R5 в десять раз, то напряжение на выходе станет 11,36 В. В качестве стабилизатора напряжения, по отношению к нагрузке, эта схема работает, поскольку ток в нагрузке изменился в 10 раз, в то время как напряжение почти не изменилось. Теперь проделаем те же изменения в схеме, что и с микросхемой. Будем надеяться, что и результаты получатся схожими. Рис. 12.7. Модификация схемы для изменения напряжения стабилизации Напряжение на выходе стабилизатора при запуске симуляции становится равным 19,44 В. Пока схема ведет себя аналогично микросхеме. Но в отличие от микросхемы на схеме можно проверить все напряжения, все токи. При значении резистора R6 в 1 кОм ток через него:
File Edit Hierarchy View Simulate Tools Window Help Linear Technology LTspIce/SwltcherCAD III - power_sup_3.asc Рис. 12.8. Измерение тока в стабилизаторе напряжения И при изменении сопротивления R6 в десять раз: Linear Technology LTsplce/Switch er С AD III - power_sup_3.asc S3 E File Edit hierarchy view Simulate Tools Windcw Help Рис. 12.9. Измерение тока в модифицированном стабилизаторе напряжения Модифицированная схема повторяет изображенную на рисунке 12.5. То есть работает в режиме стабилизатора тока, а резистор R6 служит нагрузкой. Результат если идеальный, то приемлемый. Саму схему стабилизатора напряжения я рисовал «на глаз», и не пытался настроить, получив качественную работу. То есть, схема, приведенная в книге, действительно работает, а проблема была, возможно, в не очень точно повторяющей реальную микросхему модели, или в том, что микросхема прецизионного стабилизатора напряжения устроена иначе, чем обычная. Я не сомневаюсь, что спаять на макетной плате схему из нескольких деталей не составит особого труда. Но сознайтесь, стали бы вы паять эту схему, если бы в реальной практике столкнулись с подобной ситуацией? Я бы точно не стал, решив, что схема не работает. Следующая глава книги Фелпса посвящена измерительным схемам. И опять подчеркну, что измерения при исследованиях электрических устройств, действительно, важный элемент работы. Проводя измерения, вы
получает ту информацию, с которой только и возможно работать. Конечно, если вы собрали готовую схему, которая сразу заработала, вам нет нужды что-то проверять, что-то измерять. А если не заработала? Мое внимание привлекла схема вольтметра переменного напряжения с растянутой шкалой. И в первую очередь тем, что в схеме используется микросхема такого же стабилизатора напряжения, о котором речь шла выше. Вольтметр переменного напряжения с растянутой шкалой и стрелочным измерительным прибором может пригодиться при определении сетевого напряжения. В данном случае это ПО или 115 вольт. Обычный тестер при таких измерениях очень не показателен, отличить 115 вольт от 120 трудно. Вольтметр постоянного напряжения на рабочий диапазон напряжений 8-13 вольт может оказаться полезен при работе с автомобильным аккумулятором. Напряжение полностью заряженного аккумулятора может быть 12,5 вольт, а разряженного 9 вольт. Оценить степень разряда аккумулятора с помощью обычного тестера трудно, для этих целей применяют вольтметры с растянутой шкалой. Хотя сегодня это не столь актуально с появлением цифровых мультиметров, сама схема может вызывать интерес при создании собственных конструкций и быть укрыта в глубине других узлов схемы. Рис. 12.10. Схема вольтметра с растянутой шкалой при начальной калибровке На рисунке резистор R1 - это суммарное сопротивление рамки стрелочного измерительного прибора с полным отклонением при токе 1 мА и калибровочного резистора, с помощью которого схема калибруется в конце шкалы (при напряжении источника переменного тока VI 130 В). Калибровка в начале шкалы производится делителем R4R5 (в оригинальной схеме есть калибровочный переменный резистор). Как видно из рисунка при сетевом напряжении 100 В (амплитуда около 140 В) ток, протекающий через измерительный прибор, близок к нулю. При подаче напряжения 130 В резистором R1 (на этой схеме он же представляет и сопротивление измерительной головки) устанавливается ток полного отклонения, то есть 1 мА.
Linear Technology LTspIce/SwttcherCAD III - Izmnapr.asc L Ш IX‘ File Edit Hierarchy View Simulate Tools Window Help izmnapr.as: | izmnapr raw | Рис. 12.11. Калибровка вольтметра на верхнем пределе измеряемого напряжения При необходимости можно подобрать элементы схемы для другого диапазона напряжений. Но сама по себе схема весьма необычна и интересна. Ее идея в том, что при равенстве напряжений на резисторе R5 и выходе стабилизатора, через измерительный прибор не протекает ток, а при разбалансе, за счет изменения сетевого напряжения, ток будет равен отношению разницы напряжений к сопротивлению R1. Таким образом, подобрав сопротивление R5 при напряжении сети 100 В таким, чтобы на нем получалось падение напряжения равное выходному напряжению стабилизатора U1, мы осуществляем первый этап калибровки, а подбирая калибровочную часть резистора R1 при верхнем пределе напряжения, завершаем калибровку прибора. Здорово! Я бы никогда не придумал такую простую схему. Во многих приборах применяют операционные усилители. Они служат и основой измерительной схемы, и упрощают построение отдельных узлов. Сегодня в продаже есть микросхемы и сдвоенных, и счетверенных операционных усилителей, а их значение в качестве базового элемента схем такое же, как у транзисторов лет двадцать назад. Хотя операционные усилители и не заменяют транзисторы полностью, они остаются очень важным элементом сегодняшней схемотехники, если судить по тому, что следующая глава книги Фелпса посвящена применению операционных усилителей. При управлении тиристорами (триаками) необходимо синхронизировать устройство управления с сетевым напряжением, чтобы выбрать момент подачи управляющего сигнала. При использовании протокола ХЮ в устройствах автоматики для отправки (или получения) информационного сигнала важно знать момент перехода сетевого напряжения через нуль. Думаю, для этих целей можно применить схему детектора пересечения нуля:
Linear Technology LTspIce/SwitcherCAD III - zero detect.asc U Ш И File EJi» Hierarchy View Simulate Tools Window Help | в й й ? e e r. i<i и a a t ф < + ! $ c. s о л. жгодзетЯ.азс I zero_oetect.raw 1 Рис. 12.12. Схема детектора пересечения нуля Расчетные формулы этой схемы: R6 = 0,01R3, R5 = 10R3; Cl = (100/R3) нФ. В оригинале резисторы R3 и R4 обозначены как R. Как величина этого сопротивления влияет на работу схемы, я не знаю, но этот аспект можно исследовать. На диаграмме сигнал от источника синусоидального напряжения 400 Гц имеет величину 1 В. Как частота и напряжение сигнала влияют на работу схемы? Надо бы и это попробовать. Рис. 12.13. Работа схемы детектора при изменении входного сигнала Частоту я задал 50 Гц и увеличил входной сигнал до 10 В (14 В амплитуда). А теперь займемся резисторами.
Рис. 12.14. Работа схемы детектора при изменении величины резисторов Уменьшение сопротивления R привело к уменьшению выходного сигнала, но не изменило характера работы схемы. Восстановим значения резисторов и посмотрим, что у нас происходит в точках соединения диодов с резисторами R3 и R4 на фоне выходного сигнала. Если будете пользоваться программой LTSpice, то можете посмотреть токи в цепях. Это удобно смотреть после запуска симуляции, просто поместив курсор на элемент, ток через который вас интересует. Рис. 12.15. Сигналы в других точках схемы детектора пересечения нуля Одна из следующих глав представляет фильтры. Их многообразие, представленное в книге Фелпса, лишний раз подчеркивает, сколь часто это устройство используется на практике. Быстрое внедрение операционных усилителей в эту область электроники тоже находит свое отражение — практически все представленные схемы построены на основе операционных усилителей. Одно и то же схемное решение можно применять и в звуковой области частот, и в области частот, традиционно относимой к радиочастотам. Достаточно выбрать подходящий операционный усилитель. Последние же совершенствуются год от года, все больше расширяя область их применения.
Представленная ниже схема имеет частоту среза 500 Гц. Меняя значения сопротивлений и конденсаторов фильтра эту частоту можно варьировать в широких пределах. Коэффициент усиления схемы в рабочей области частот равен двум, а добротность фильтра равна единице. /homе/vladImlr/4D-electrоnlc/partL2_educatlon/fllter/fliter.circuit - KTechlab File Edit View Project Tools Settings Help @.£2 Q Q ig>E) C ZZ Component e i ^vccs jL Svcvs । e Discrete a с «э Resistor о I Capacitor E -Си Diode о <J 'W'Inductor К NPN £ К PNP £ SResistor DIP * (^Potentiometer £ Switches —Push-to-Make -^Push-to-Break :: Keypad -SPST DPST -SPDT DPDT Rotary - Outputs QLED Signal Lamp ’Bidirectional LED 8 Seven Segment °g Matrix Display ©Voltmeter ©Ammeter Logic Probe |Д Voltage Probe [v] Current Probe - Logic O-Logic Input ) Logic Output О Messages (3 Oscilloscope Рис. 12.16. Работа активного RC фильтра нижних частот на частоте 100 Гц Следующая схема фильтра интересна тем, что добротность фильтра можно регулировать. Сам фильтр, заградительный фильтр с рабочей частотой 60 Гц, может применяться и для подавления помех, и может использоваться при построении несложного измерителя нелинейных искажений. Совсем не обязательно измерять нелинейные искажения, что чаще всего актуально для усилителей мощности НЧ, во всем диапазоне звуковых частот с плавным переходом между частотами. Достаточно выбрать несколько опорных частот и построить фильтр с переключением на этих частотах, или поступить даже проще сделать отдельные фильтры на каждую из этих опорных частот в виде заменяемых модулей. Для практической настройки усилителя этого может оказаться более чем достаточно, а настроить узел на одну частоту значительно проще, чем настроить универсальное устройство. Регулируемая добротность фильтра может оказаться интересным параметром для исследования. Дело в том, что добротность фильтра определяет эффективность его работы в качестве фильтра. Но с ростом добротности фильтр может «звенеть». При резком изменении входного сигнала рабочая частота дает о себе знать и после того, как входной сигнал пропал. Если устройство, функциональным узлом которого служит фильтр, «болезненно» относится к подобному явлению, полезной может оказаться возможность менять добротность фильтра.
/home/vladlmlr/4D-electronlc/partl2_educatlon/fllter/filter2.circuit - KTechlab File Edit View Project Tools Settings Help WZZ<9 Component igvcvs Э Discrete & Resistor fl} Capacitor Diode 'яе Inductor К NPN К PNP “Resistor DIP (I* Potentiometer e Switches —Push-to-Make Push-to-Break ; Keypad -SPST DPST -SPDT DPDT Rotary -. Outputs qled Signal Lamp Bidirectional LED Q Seven Segment °g Matrix Display ©Voltmeter ©Ammeter Щ Logic Probe [д Voltage Probe @ Current Probe - Logic О-Logic Input 'Logic Output Clock Inout Рис. 12.17. Заградительный фильтр c fp=60 Гц и регулируемой добротностью Верхний сигнал на осциллограмме относится к источнику переменного напряжения, а нижний - сигнал на выходе при почти крайнем положении регулятора добротности. Сигнал частотой 60 Гц подавляется, но вполне ощутимо наблюдаем на выходе. /home/vladlmlr/4D-electronlc/partl2_educatlon/firter/fllter2.circuit - KTechlab File Edit View Project Tools Settings Help г zz-er v Component G; fi|ter2,circuit ф! <- Discrete Resistor fl[} Capacitor P+ Diode -ir Inductor К NPN К PNP S Resistor DIP Potentiometer i- Switches - Push-to-Make Push-to-Brea k SiKeypad -SPST ;DPST -SPDT ;DPDT Rotary - Outputs QLED Signal Lamp CPBidirectional LED Q Seven Segment Matrix Display ©Voltmeter ©Ammeter Logic Probe □----------------- | Voltage Probe [v] Current Probe - Logic О-Logic Input О Logic Output Clock Inout D Рис. 12.18. Фильтр при другом положении регулятора добротности Если честно, мне приходилось только однажды столкнуться со «звоном» фильтра, и было это очень давно. Было устройство, которое должно было работать по всем схемным признакам (так оно выглядело на бумаге), но не работало без видимых для того причин. В качестве возможной причины и всплыл вопрос о добротности фильтров. Я не помню, чем закончилась та история, и мне самому сейчас интересно, а так ли это, как я пытаюсь вам поведать? Поэкспериментируем?
Рис. 12.19. Эксперимент с добротностью фильтра в программе Qucs Частота генератора 60 Гц. Напряжение 1 В. Схема повторяет схему фильтра с регулируемой добротностью. Сейчас регулятор находится в почти крайнем верхнем по схеме положении, что, как мне кажется, должно соответствовать высокой добротности фильтра. На осциллограмме в начальный момент времени видно, как происходит первое колебание напряжения с достаточно большой амплитудой. Затем процесс подавления рабочей частоты фильтра вступает в силу и амплитуда сигнала уменьшается. Если первое колебание имеет положительную амплитуду больше 0.5 В и отрицательную близкую к этому значению, то со временем она уменьшается до значения меньше 0.1 В. Теперь изменим положение регулятора добротности, поменяем значения резисторов R5 и R6 местами. о Qucs О.О.1О - Проект: flltr □ В й Файл Правка Вставка Проект Инструменты Моделирование Вид Справка Рис. 12.20. Результаты при другом крайнем положении регулятора добротности Первое колебание явно носит апериодический характер, сигнал даже не переходит через нуль в область отрицательного напряжения. Похоже, добротность явно меняется. Только мне пока не понятно, какое из положений регулятора добротности относится к высокой добротности, а какое к низкой. В последнем
эксперименте, который я отнес бы к наблюдению при низкой добротности фильтра, выходной сигнал явно не превышает 10 мВ, что показывает более эффективную работу фильтра в качестве заграждающего. Где-то у меня явная ошибка в понимании работы фильтра. Попробуем изменить схему эксперимента. Заменим генератор синусоидального переменного напряжения генератором импульсов прямоугольной формы. Увеличим интервал моделирования до 200 мс, а параметры генератора выберем такими: выходное напряжение 1 В, длительность высокого состояния 100 мс, и такая же длительность низкого состояния выходного сигнала. Qucs О.О.1О - Проект: flltr ш isi Рис. 12.21. Результаты эксперимента с генератором прямоугольных импульсов Теперь явно видно, что «звон» - сигнал с частотой настройки фильтра имеет место. А при втором положении регулятора осциллограмма выглядит так: Qucs 0.0.10 - Проект: flltr Q с±з Й Файл Правка Вставка Проект Инструменты Моделирование Вид Справка Рис. 12.22. Вид осциллограммы при втором крайнем положении регулятора Хотя я так и не понял, что к чему, я убедился в наличии «звона», я не был в этом уверен до проведения
эксперимента, мне яснее стало влияние положение регулятора на характер этого процесса. А в остальном, если речь идет о заграждающем фильтре, я могу выбрать тот вариант настройки схемы, который обеспечит более эффективное заграждение. И я знаю, что свои знания о работе фильтров, я могу с помощью программы Qucs и книг по предмету существенно пополнить. В следующем разделе о мультивибраторах, схемах выборки и хранения часто применяют компараторы. Но для экспериментов со схемами это не обязательно. Можно использовать операционный усилитель. Посмотрим, как работает схема триггера Шмитта, построенная с применением операционного усилителя. Рис. 12.23. Схема триггера на операционном усилителе В оригинале используется усилитель Нортона LM3900. Я не был уверен, что результат будет положительным, поскольку никогда не использовал эти микросхемы, и не знаю, насколько удачной получится замена. Но, похоже, осциллограмма в программе LTSpice показывает переключение устройства и наличие гистерезиса. Переключение к отрицательному выходному уровню происходит при уровне входного сигнала 5,85 В (достаточно установить курсор в точку пересечения графиков и нажать левую клавишу мышки, чтобы в строке состояния отобразились параметры графика), а переключение к положительному выходному уровню происходит при напряжении 2,67 В. Было удобно применить в качестве опорного напряжения источник постоянного напряжения V2, а в качестве входного сигнал генератора треугольных импульсов VI, который есть в программе LTSpice. Замена всех значений резисторов не отобразилась на работе модели, а вот вариации значений резисторов R2 и R3 существенно меняют свойства триггера.
Linear Technology LTspIce/SwitcherCAD III - trigger.raw L [±j И File View PlotSettings Simulation Tools Window Help | 0 s и ? waee. t> triggers sc tnggerraw ] Рис. 12.24. Изменение параметров триггера при изменении величины резисторов Полезными в практическом применении могут быть схемы одновибраторов. Попробуем собрать схему одновибратора с помощью операционного усилителя. Linear Technology LTspIce/SwitcherCAD III - mono_pulse_2.asc File Edit Hierarchy View Simulate Tools Windew Help Рис. 12.25. Работа схемы одновибратора с операционным усилителем Длительность формируемого импульса определяется в построенной схеме конденсатором С1. Это не кажется мне правильным, хотя схема работает. Проблема может быть в том, что операционный усилитель, это. все-таки, не компаратор. Проблема может быть и в соответствии программной модели реальному операционному усилителю. Программная модель операционного усилителя предназначена к операциям, характерных именно для основной сферы применения операционных усилителей. Чтобы это проверить, попробуем повторить ту же схему с компаратором.
Linear Technology LTspice/SwItcherCAD III - mono_pulse_3.asc U Ш 1X1 File Edit Hierarchy View Simulate Teds Windew Help | El в О ? Л «I °. В ЭД V I Ъ л, »f mono_pulse_3.asc | monopiilse_3 raw ] PULSE(10 0 0 005 100ns 100ns 10ms 10ms 1) .Iran 10ms Рис. 12.26. Работа схемы одновибратора с компаратором При моделировании в этом варианте длительность положительного импульса определяется величиной конденсатора С2, что, с моей точки зрения, больше похоже на правду. Возможно, я выбрал не самый удачный операционный усилитель для первого варианта схемы - резисторы по 1 МОм скорее говорят о высокоомном входе. Следующий раздел книги посвящен генераторам колебаний и функциональным генераторам. Генераторы — непременный атрибут настройки многих схем. Требования к параметрам генераторов, в зависимости от характера работы, могут варьироваться в очень широких пределах, и обычно не удовлетворяются одной моделью генератора. Радиолюбителю в своей лаборатории хорошо бы иметь несколько генераторов. Используя современную элементную базу можно достаточно легко создать весьма успешные приборы. Первая схема в этой главе - генератор прямоугольных колебаний. Qucs 0.0.10 - Проект: geners Q ffi (XI Файл Правка Вставка Проект Инструменты Моделирование Вид Справка J 5 а Ч10 Л 4 S d > СШ к? х gener! .sch generl-dpl Предупреждения В последнем моделировании» Нажмите F5 С • 0J Рис. 12.27. Генератор прямоугольных колебаний Для запуска моделирования пришлось несколько изменить параметры элементов. А вот со следующей схемой мне не повезло, моделирование не привело к успеху, пришлось менять схему включения. Мне хотелось
показать, что прямоугольные импульсы можно с помощью интегрирующей цепочки превратить в треугольные. Генератор треугольных импульсов в некоторых случаях весьма полезен. Схема получилась «чудноватая», но моделирование на отрезке 0.3 мс прошло. В итоге получилась следующая картина: Файл Правка Вставка Проект Инструменты Моделирование Вид Справка j й й Я 0 & 4 1 х] ъ ъ Q, & U Ч + диаграммы Декартовская Полярная Табличная Диаграмма Смита Диаграмма Смита (проводимост и) Смешанная полярная-Сми та Смешанная Смита-полярн ая Трехмерная декартовская Круговая ВременнАя диаграмма диаграмма Таблица истинности моделирование переходного процесса| jgenerZscN generz.dpl Предупреждения в последнем моделировании! Нажмите FS 0:0 Рис. 12.28. Генератор треугольных импульсов Теперь попробую получить из треугольных импульсов синусоидальные. Qucs 0.0.10 - проект: geners it, 3 Файл Правка Вставка Проект Инструменты Моделирование Вид Справка Рис. 12.29. Генератор синусоидальных сигналов Я еще раз попробовал реализовать схему на усилителях Нортона в программе Multisim, но неудачно. Возможно, требуется именно указанная в книге микросхема, чтобы схема работала с указанными элементами. Либо следует тщательнее настроить схему, но это не столь принципиально, поскольку в реальности, если нужно собрать схему функционального генератора, можно применить специализированную микросхему функционального генератора, или использовать микросхему 566, генерирующую прямоугольные и треугольные импульсы, или множество разновидностей схем, которые можно найти в литературе или Интернете. Заканчивая тему генераторов, я хочу попробовать моделирование еще одной схемы прямоугольных
импульсов на операционном усилителе. Причин несколько — следующий раздел книги Фелпса посвящен схемам синхронизации, в основном синхрогенераторам, то есть, тоже генераторам, в силу чего я собираюсь этот раздел пропустить. Особенностью последнего рассматриваемого генератора является возможность регулировать скважность импульсов. Иногда подобного рода генераторы нужны для проведения экспериментов или в период отладочных работ. В данном случае скважность импульсов зависит от величины двух резисторов (R3 и R4 по схеме). Рис. 12.30. Генератор прямоугольных импульсов с регулируемой скважностью Следующий раздел книги посвящен схемам преобразователей аналог-код и код-аналог. С помощью микросхем АЦП можно оцифровать сигнал, в цифровой форме сигнал сохранить в виде данных или отправить по сети к приемнику цифровых сигналов. В приемнике цифровых сигналов ЦАП (цифро-аналоговый преобразователь) может превратить полученные цифровые данные в аналоговый сигнал. При правильном построении преобразований полученный сигнал не будет практически отличаться от исходного. Сегодня подобный принцип преобразования широко применяется при записи аудио- и видео-сигналов, сохранении их на CD-диске, или передаче по компьютерной сети. Цифровая телефония, цифровое телевидение — становятся привычными атрибутами нашей жизни. Очень удобны для наблюдения за редкими и медленно меняющимися сигналами цифровые компьютерные осциллографы. Они позволяют оцифровать входной сигнал, запомнить его, а затем, записав на компьютер в виде данных, анализировать сигналы. Если вам приходилось наблюдать на обычном осциллографе редкие короткие импульсы или редкие непериодические последовательности импульсов, вы знаете, насколько это сложно. Например, вы отправляете по COM-порту символ и хотите посмотреть его на осциллографе, чтобы понять, правильно ли работает порт. Быстрая последовательность импульсов, промелькнувшая на осциллографе после ввода в COM-порт символа, едва ли даст вам возможность понять, все ли правильно в линии? Записав эту последовательность с помощью компьютерного осциллографа, вы можете спокойно разобраться со статической картинкой на мониторе. В основе схемы компьютерного цифрового осциллографа будет лежать АЦП. Посмотреть, как работает простейший АЦП можно в программе KTechlab:
/home/vladlmir/4D-electronlc/partl2_education/adc/adc.circuit - KTechlab File Edit View Project Tools Settings Help BE> Q a ZZ ' ©I E Component — • •г'иьп-го-маке Push-to-Break ;, Keypad •SPST ;DPST -SPOT ;dpdt Rotary о Outputs О LED ‘ Signal Lamp ’Bidirectional LED 8 Seven Segment Matrix Display ©Voltmeter ©Ammeter [njj Logic Probe adc.circuit | И Voltage Probe ^Current Probe i- Logic C- Logic Input > Logic Output in.Clock Input [> Buffer Inverter AND gate NAND gate OR gate NOR gate XOR gate XNOR gate i- Connections ф Bus © External Connection adc.circuit Simulation Running £7 Messages [vj Oscilloscope Рис. 12.31. Работа АЦП в программе KTechlab На этой схеме при положительных полуволнах синусоидального напряжения генератора АЦП оцифровывает значения по мере их изменении, а семисегментный индикатор, подключенный через преобразователь кода 1-2-4-8 в семисегментный, показывает цифровое значение изменяющегося сигнала. Реальные схемы сложнее, но понять принцип работы АЦП легче с помощью этой модели, чем без нее. Если вместо индикатора подключить обратный преобразователь ЦАП, то можно видеть на осциллограмме все, что удалось получить с помощью АЦП. /home/vladimir/4D-eiectronlc/partl2_educatiorVadc/dac.clrcult - KTechlab File Edit View Project Tools Settings Help gcaa ъ г q^z/л Component - sources |i|i Battery •Fixed Voltage ..’/Current Source $ Voltage Signal «-•Current Signal <Jcccs Ageevs Svecs gvcvs - Discrete t» Resistor Capacitor W Diode w Inductor К NPN к PNP “ Resistor DIP Q* Potentiometer - Switches -Л. Push-to-Make Pushto-Break Keypad •SPST 1 ; DPST --SPOT ;dpdt Rotary - Outputs О LED Signal Lamp CP Bidirectional LED 8 Seven Segment Рис. 12.32. Работа АЦП-ЦАП в программе KTechlab Следующая глава полностью посвящена схемам для аудио- и видеотехники. И если в части видеотехники схемы, как правило, типовые схемы включения микросхем для телевизоров, то аудиотехника представлена как типовыми схемами усилителей разного рода: усилителей мощности, предусилителей, усилителей-корректоров, эквалайзеров, так и схемами для решений отдельных проблем звукоусиления. О возможностях работы с усилителями в среде программ EDA достаточно много рассказано выше. Но об одном моменте в построении устройств звукоусиления хотелось бы сказать дополнительно.
Речь пойдет о тон-компенсации регулятора громкости. Для начинающих я поясню, в чем существо проблемы - при разных уровнях громкости человек не одинаково хорошо слышит разные частоты звукового диапазона. Эксперименты, давно проведенные в этой области, показывают, что существуют некоторые усредненные «кривые равной громкости». При снижении общей громкости есть необходимость в подъеме низких и высоких частот. Эта проблема может быть решена дополнительной регулировкой тембра при уменьшении громкости, но часто применяют специальную коррекцию самих регуляторов громкости, правда при этом используются не обычные потенциометры, а специальные, с дополнительными отводами. Сегодня в высококачественной аппаратуре звукоусиления сами регуляторы громкости, как мне кажется, изобилуют новыми схемными решениями, использующими специализированные микросхемы. Таким образом, возможности построения тон-компенсации существенно расширяются. Применять ли тон-компенсированный регулятор громкости, не применять - этот вопрос решается при проектировании системы звукоусиления. В схеме, показанной ниже, резисторы R2, R3 и R4 - представляют переменное сопротивление с отводом в точке соединения R3 и R4. А два выходных сигнала outl и out2 представляют два положения регулятора громкости - близкого к максимальной громкости, и близкого к минимальной громкости. Как можно видеть на графике, при максимальной громкости амплитудно-частотная характеристика регулятора линейна, тогда как при минимальной громкости низкие и высокие частоты имеют подъем. Рис. 12.33. АЧХ тон-компенсированного регулятора громкости в Qucs Книга Фелпса содержит еще много глав, в ней большое количество схем, она интересна и полезна сама по себе. И с ее помощью я свою основную задачу - показать в этой главе, что программы EDA позволяют разобраться в работе очень широкого круга схем, мне кажется, решил. Возможно, не все и не любые схемы легко поддаются рассмотрению. Не все программы одинаково легко справляются с моделированием конкретных устройств без дополнительных усилий по коррекции моделей этих устройств или коррекции схемы. Но, даже не прилагая особых усилий, можно научиться многому, можно разобраться в вопросах типового применения микросхем, с которыми на практике не всегда приходится иметь дело, а, когда приходится, то вопросов оказывается значительно больше, чем ответов. Я уверен, что программы, работающие на компьютере, станут хорошими проводниками в стране электроники.
Глава 13. Нарисуем быстро и... Xcircuit, Dia, Xfig, QCAD, VariCAD. Linux Любой радиолюбитель помимо непосредственной работы со схемой на плате прототипа сталкивается с необходимостью в других видах работы. До того, как будет составлен список элементов и можно будет отправиться в магазин за покупками, необходимо нарисовать схему. Можно использовать, и никому и никогда это не вредило, традиционные лист бумаги и карандаш. Но, как правило, схему приходится несколько раз исправлять, неоднократно перерисовывать, что приводит к ошибкам, грязи на бумаге и путанице. Многие программы EDA позволяют сохранять рисунок схемы в графическом виде или распечатать схему на принтере. И любую схему в любой программе EDA можно сохранить как снимок экрана. Это удобно при работе над проектом, но не всегда удобно при обмене схемами или публикации схемы, положим, на радиолюбительском сайте. Кроме того, схему в виде картинки трудно редактировать. Даже небольшие исправления требуют сноровки и терпения. Особенно эти проблемы, именно как проблемы, могут проявиться со временем. Прошел год или два с того момента, как вы разработали свою схему, сохранили ее в формате программы, в которой разрабатывали схему, сохранили, как и положено, в графическом виде, распечатали на принтере. Но за год вы познакомились с другими программами, или охладели к ним полностью, а схема с небольшими изменениями вам нужна. Ситуация достаточно типичная. Linux предлагает несколько решений. Начну я с решения, примыкающего к программам EDA - Xcircuit. Программа, насколько я понял из беглого знакомства с сайтом проекта, задумывалась как средство красивого рисования схем. Если вы пытались нарисовать индуктивность в обычном графическом редакторе, вам не нужно объяснять, насколько это затруднительно - нарисовать дугу, скопировать ее несколько раз, соединяя несколько дуг вместе, и т.д. Xcircuit избавляет от необходимости это делать, предоставляя готовые элементы электрической схемы, и давая возможность быстро нарисовать блок-схемы. Рис. 13.1. Рабочее окно программы Xcircuit Мне непривычно работать с этой программой из-за ее интерфейса, отличного от обыденного. Тем не менее, программа действительно позволяет быстро и качественно нарисовать схему, что я сейчас и сделаю, но схему выберу такую, которая мне нужна для дальнейшего рассказа (читай, очень простую). Схема должна содержать источник питания, конденсатор и резистор. Источник питания, сразу оговорюсь, я выбираю из тех, что обозначены, как spice компоненты. Возможно, у вас интерфейс программы будет выглядеть иначе, а мне приходится нажимать нужный раздел основного меню (сверху), удерживать левую клавишу мышки и перемещаться по пунктам меню, пока не достигну нужного места, где клавишу и отпустить. Я слишком привык открывать меню щелчком, что в итоге приводит к ряду ошибок после первого запуска программы, и успевает озадачить меня еще до того, как мне удается разместить в окне редактора первый элемент схемы.
Куда я отправляюсь дальше, запустив программу, и неся свой багаж опыта работы с программой, надеюсь, будет ясно из картинки. Рис. 13.2. Работа с основным меню в программе Xcircuit Из библиотеки analoglib2, куда я попадаю, побродив по разделам меню, я выберу Vsource 5V для размещения в рабочем окне. Хотя, если бы это была только схема, я предпочел бы элемент с именем batteiy. Там же я выбираю конденсатор и резистор. Опять-таки, я уже привык, что после выбора элемента из меню компонент, он остается привязан к курсору, чтобы его можно было сразу разместить в нужном месте. Опять- таки, сознаюсь, что ни разу мне не удалось выполнить эту операцию ни в одной из программ из-за отсутствия ясного видения будущей схемы. Чаще я набрасываю все элементы где-нибудь в углу рабочего поля, а затем перетаскиваю к нужным местам. Но привычка дает себя знать. Щелкнув мышкой по нужному элементу, я разом оказываюсь в редакторе Xcircuit, и выбранный мною элемент оказывается закреплен на чертеже. Если вдуматься, это может оказаться и полезней. Но непривычно. При перемещении курсора на правую инструментальную панель можно не менее успешно попасть в библиотеки компонент, только нет привычных подсказок, появляющихся под иконкой, и поясняющих, что бы эта иконка значила. Зато эти пояснения, вообще- то, как и положено, появляются в разделе сообщений панели состояния. Иконки с изображением открытой книги достаточно красноречиво говорят о том, что ты окажешься в библиотеке. Нажав «среднюю книжку» из трех иконок с их изображением, можно посмотреть всю библиотеку, выбрать нужную, выбрать нужные компоненты (знать бы еще, какие тебе понадобятся).
xcircuit □ [+i IXI Рис. 13.3. Библиотеки компонентов программы Xcircuit Пока не забыл, очень любопытное поведение основного меню программы Xcircuit я встретил в дистрибутиве Ubuntu. Версия программы оказалась более поздней, чем та, с которой работал при написании вышеизложенного. Мне стало любопытно, что нового можно найти в программе или работе с ней. Естественно, первое, что мне пришло в голову после запуска программы - просмотреть основное меню. Ага. Посмотрел. Все разделы меню реагировали на курсор, когда он располагался над ними, но меню не раскрывалось. Пощелкав мышкой в разные стороны, понажимав вместе с кнопками мышки разные клавиши клавиатуры, я сдался и попытался на сайте разработчиков найти разгадку этой тайны. Ага. Нашел. Как бы ни так. Не буду томить пересказом всех злоключений, сожалений по поводу своего любопытства и упрямства, но разгадка, найденная на одном из форумов, стоила потраченного времени. Настолько она была не очевидна. Для того чтобы меню работало, достаточно было выключить цифровую панельку клавиатуры клавишей Num Lock Как и многие, я оставил в настройках BIOS включение этой панельки при загрузке компьютера, привык к этому, и не обращаю внимания на горящий индикатор. Отчего-то это мешало появлению меню. Стоило выключить Num Lock, проблема исчезла вместе со светом индикатора. Я специально проверил этот феномен в предыдущей версии программы с моим основным дистрибутивом, никакого эффекта. Но это к слову. Выбор компонентов библиотеки достаточно богатый, чтобы без труда нарисовать любую схему. А я хочу нарисовать вот такую:
Рис. 13.4. Схема в окне редактора программы Xcircuit Чтобы справиться со схемой, после того как компоненты выбраны и оказались в окне редактирования, мне в первую очередь нужно их переместить, перетащить, передвинуть. Эту операцию можно выбрать на инструментальной панели (иконка с одной звездочкой). Курсор после выбора превращается в стрелку, а элемент, поместив на него курсор, можно мышкой перенести в нужное место. Если компонент приходится поворачивать, то это доступно либо в основном меню, раздел Edit, либо на инструментальной панели, клавиши со стрелками поворота. Вращение в программе допустимо менее чем на 90 градусов. Для соединения элементов можно нажать вторую сверху (под открытой рукой) клавишу инструментальной панели. Здесь опять я сталкиваюсь со своеобразием интерфейса (или своеобразием сочетания своего дистрибутива и программы), щелкнув мышкой в нужном месте, я начинаю вести соединение, но когда достигаю второй нужной точки, то ни щелчок правой клавиши мышки, ни клавиша Esc не позволяют мне прекратить соединение. Спасает нажатие на колесико, как на среднюю клавишу мышки. Позже я нахожу в описании рекомендацию использовать щелчок клавиши мышки в сочетании с нажатой клавишей клавиатуры. Едва нарисовав схему я спешу ее сохранить, и, не находя привычных для меня разделов «Файл-Сохранить как...», использую Write Xcircuit PS (записать в формате Post Script). Диалоговое окно записи файла тоже непривычно: Q prompt Is I PostScript output properties (Page 1): Filename: X_c i гл Okay Page label: Xcir; Okay Scale: 1^.00000 Okay X Size (in): 23957 Okay Y Size (in): 1^.64583 Okay Orientation: Portrait | Mode: Embedded (EPS)| Done Write File Рис. 13.5. Диалоговое окно сохранения файла в программе Xcircuil Вдобавок первая попытка записать имя файла закончилась неудачей. Но, пощелкав по окошку напротив надписи Filename:, подвигав курсорными клавишами клавиатуры значок, напоминающий указатель, в окошке ввода данных, после того, как он стал слушаться клавиатуры, я все-таки впечатываю имя файла. Затем
нажимаю клавишу Apply, которая тут же превращается в клавишу Okay (на всякий случай жму на все клавиши), и последней нажимаю клавишу Write File, соседняя с ней, слева, клавиша Close превращается в клавишу Done, а в строке состояния появляется сообщение о записи файла После нажатия на клавишу Done, диалоговое окно сохранения файла исчезает. И я остаюсь один на один со своей схемой. Как вы могли заметить, в основном меню программы есть пункт Netlist, что может означать только одно - программа создает файл необходимый для симуляции электрической схемы или создания разводки печатной платы в одной из программ pcb. Если развернуть этот раздел основного меню, то можно убедиться в этом. Но я не очень понимаю, как следует поступить, чтобы передать значения всех элементов в netlist. Сознаюсь, даже пример, нарисованный мной выше, я «срисовал» на одном из сайтов, чтобы показать вам, как легко и просто можно симулировать нарисованную схему. На сайге была ссылка, что можно взять готовый файл, но ссылка почему-то не сработала, а что делать с элементами схемы, я не очень понял. Попробуем разобраться методом «проб и ошибок». Именно по этой причине я использую пункт Auto- number Components раздела Netlist основного меню. После чего в этом же разделе выбираю Write Spice. Здесь можно отметить, что выбрал я буквально - нажав левую клавишу мышки на разделе Netlist, переместил, удерживая клавишу, к нужному мне пункту, где и отпустил клавишу. Судя по сообщению в строке состояния, файл для программы spice был удачно при этом записан. По умолчанию, - возможно, при вводе имени файла можно указать и путь, но я не пробовал, - в домашней директории, где я его действительно нахожу. Это текстовый файл следующего содержания: *SPICE circuit <X_cir> from XCircuit v3. 4 rev 3 VI inti GND 5 Cl int2 GND 1.0P R1 inti int2 1. Ok . end В оригинальной схеме резистор имел сопротивление 3.3 кОм, а конденсатор 47 мкФ, источник питания 10 В. Эти коррективы я могу внести в netlist с помощью блокнота (редактор gedit). Со временем, глядишь, разберусь, как это сделать без блокнота Соответственно, я правлю: VI inti GND 10 Cl int2 GND 47.Ou R1 inti int2 3.3k Программа, как и программа Oregano, и программа gEDA, с которой симуляция у меня получилась только после использования другой программы LTSpice (она же SwCAD 1П), программа Xcircuit работает с симулятором ngspice. Конечно, я забыл, или поленился, когда не получалась работа с этой программой симуляции, что она вполне хорошо работает в режиме выполнения строковых команд. Но теперь прочь лень, будем запускать ngspice в терминале, и используем команды для получения результата Первая команда, которую использую В терминале - ngspice X cir. spc. Когда ngspice выводит сообщение и показывает (стрелкой), что я нахожусь в режиме команд, я отправляю вторую команду: tran о. 05 1 uic. После команды: plot (int2,GND), появляется графическое окно с графиком заряда конденсатора Все эти команды я взял с сайта, где взял и схему. Ввожу их в окно терминала, на всякий случай, копируя, а не переписывая, чтобы избежать ошибок. Получаю: nqspice L Щ ‘У Рис. 13.6. График изменения напряжения в графическом окне ngspice
Возможно, значения компонент можно задавать в самой программе (и это так), хотя большая часть возможностей редактирования относится к графике, что вытекает из основного назначения программы. Позже, пытаясь использовать эту графическую возможность, я столкнулся с небольшой проблемой. Нарисовав схему, имевшую как соединения пересекавшихся проводов, так и перекрещивание, я озадачился рисованием точки соединения. Без этих точек схема выглядела очень уж неопрятно. Точки получались еще неопрятнее. Нет худа без добра. Когда я разбирался с неработающим основным меню новой версии программы Xcircuit, я решил попробовать, а работает ли редактор схем? Несколько экспериментов показало, что работает, но я заметил появление нескольких лишних точек в рабочем поле чертежа. Оказалось, что достаточно в режиме рисования соединений нажать точку (в латинской раскладке), чтобы получить точку в нужном месте. Нарисовать схему можно с помощью другой программы, тоже хорошо к этому приспособленной, программы Dia, входящей в состав многих популярных дистрибутивов Linux. После запуска программа открывает окно редактирования и панель инструментов с библиотеками компонент. Все необходимое переносится в окно редактирования, легко масштабируется растягиванием объекта в любую сторону, и соединяется. Рис. 13.7. Программа рисования диаграмм Dia Файл со схемой может быть сохранен, включая собственный формат программы, во множестве других форматов. Если вы откроете раздел Файл-Экспорт, то убедитесь, что программа поддерживает и форматы удобные для издательских систем, и форматы графические, и форматы, поддерживаемые такими традиционными программами для создания чертежей, как AutoCAD. Рис. 13.8. Картинка в формате PNG полученная из программы Dia
Кстати о программах традиционного компьютерного черчения. Весьма простая и удобная для создания чертежей программа QCAD тоже входит в большинство дистрибутивов Linux. Вот как выглядит предыдущая схема, экспортированная в формат dxf и открытая в программе QCAD QCad - [/home/ vladlmlr/4D-electronlc/partl3_xclr_dla/ Диаграмм a. dxf] О Щ К Файл Правка Вид Выбор Черчение Размер Изменение Привязка Инфо Слой Блок Окно Помощь - S х j у а — 1 й Э а .г ❖ □ По слою ▼ -------------По слою ▼ По слою ▼ Рис. 13.9. Схема, экспортированная из программы Dia, в программе QCAD Работа в QCAD мало отличается от работы в AutoCAD, хотя интерфейс пользователя, я думаю, отличен от AutoCAD. Программа экспортирует файлы, созданные в ней, во множество графических форматов. И позволяет создавать чертежи профессионального качества. В ней же можно разработать конструкцию устройства: плату, корпус, элементы крепления. Для этого она и предназначена э QCad - [безымянный документ 3] Е И Файл Правка Вид Выбор Черчение Размер Изменение Привязка Инфо Слой Блок Окно Помощь - S х jij-------. V'» cj, ‘ ;;; ❖ □ По слою ▼ ---По слою ▼ По СЛОЮ ▼ Укажите первую точку 94.5,19.75 " '-91,-56.75 “ Укажите перевозку Ли Стм«® — ВЫбРйНО cfetKIOB: 96.5418< 11Л046» 64.665< 241.3542* Г) О
Рис. 13.10. Разработка корпуса прибора в программе QCAD Часто есть необходимость в создании шкалы прибора, например, при создании самодельного измерительного прибора. При всем моем уважении к электронике, в полном понимании, и что лично мне проще сделать этот аксессуар с использованием цифрового дисплея, пользоваться прибором мне приятнее, покрутив ручку прибора дая совмещения стрелки указатель со значением на шкале, а не нажимать клавиши до получения нужного значения на дисплее прибора. Сегодняшние принтеры позволяют создать красивую и аккуратную шкалу или лицевую панель прибора. А нарисовать ее можно в программе QCAD. Можно использовать еще одну программу, постоянную спутницу Linux - Xfig. sn* Xfig 3 2 patchlevel 4 (Protocol 3 2) - No file США ПРИ h Рис. 13.11. Программа Xfig Эта программа тоже экспортирует файлы во множество форматов, очень удобна при работе с издательской системой LaTeX. Программы QCAD вполне достаточно, практически для всех случаев радиолюбительской практики, но, если вам нужно нечто более близкое к AutoCAD, в Linux есть программа VariCAD. Один из ее недостатков в том, что это коммерческая программа, хотя, мало чем уступая AutoCAD, а, возможно, сегодня ничем не уступая, она стоит на порядок дешевле. У старой версии программы были проблемы с используемой собственной раскладкой русскоязычной клавиатуры при наличии русскоязычного шрифта. Программа VariCAD работает с трехмерными объектами. Такая возможность позволит вам гораздо тщательнее выполнить разработку корпуса прибора, чем изготовление «на глаз». А при разработке платы с помощью программы KiCAD, тоже прекрасно работающей с трехмерными объектами, вы получите наилучшие результаты в компоновке всего устройства. И это отнюдь не маловажный фактор. При создании качественных устройств правильная компоновка может стать одним из параметров качества. Даже самые простые устройства страдают от поспешных и непродуманных решений. Завершив работу, можно обнаружить, что самый важный и нужный винт оказывается необходимо закрутить внутри наглухо закрытого корпуса. Вам не приходилось это делать? Мне, увы, приходилось. Поздние сожаления о том, что лучше бы потратить лишние пару часов на предварительную работу, в этих случаях плохо помогают. Специалистам редко приходится осуществлять полный цикл работ по созданию какого-либо аппарата, устройства, системы. Конечно, работая над проектом, ты имеешь некоторое общее представление обо всех процессах. Но оно весьма общее. Я, например, хотя и знаю, зачем, и. приблизительно, как изготавливаются печатные платы, но не знаю, как сегодня называется в производстве печатных плат, то что можно встретить в программах pcb под именем footprint. Я понимаю, что означает этот термин, но не знаю его русского эквивалента, хотя уверен, что он есть. Радиолюбитель, за редким исключением, является и генеральным конструктором, и главным бухгалтером, и схемотехником, и технологом. Его знания должны быть гораздо шире, чем знания рядового специалиста узкого профиля.
<= VariCAD 9.O-2.2 - |4D-electro nlc/partl3_xcir_dla/partl3*] Q l-H DC в File Objects Display Snap Select Parts Tools Window Help - б X d & н a si e 9 о о uip ff ff »о as a rf & fi е-в'Ч'ъе1 & 0 в в в в e s°ci a » ЗЙ S’ V •0 % Ввив® ЛИ ЛЯЯ СЛ 5& SJ 5S ®l®l <5 S’ SS ?S SS S? S SS 5S SS <4 Command: JUE • « Ь fij О to & W о И И В В В ® •«*» 40 • Pti « No ob ects located - Click mouse button Рис. 13.12. Трехмерный вид корпуса прибора в программе VariCAD Это очень старая картинка, которую я нашел в залежах своего компьютера. Некогда я получил программу VariCAD (пробную версию) в комплекте ASPLinux. В тот момент меня интересовало, что собой представляют все программы, которые я встречал на дисках дистрибутива. Я только начинал знакомство с Linux, и все было интересно. Сегодня, как мне кажется, программа могла сильно измениться. Сейчас я попробую найти современную версию программы, если есть возможность получить пробную версию. Сегодняшняя версия программы называется VariCAD 2007. У меня есть 15 дней, чтобы сделать что-то большее, чем я смог сделать на предыдущем рисунке, но среди примеров, которые я скачал вместе с программой, есть гораздо более симпатичные варианты. Например, такой: >—1 VariCAD 2007 1.02 - [/opt/VarlCAD/lib/sample/sample4.dwb] [j l+i L2Sj В File Edit View Objects Snap Select Parts Tools Window Help _)g| x j| D g Й S г г; в 9 3 4 S M g3 a'tf sj й> & U t/l ® ® в & S в 9- | fS Sa гa vej.00|iF%/> в s k.e< os a> *> Рис. 13.13. Трехмерная сборка в программе VariCAD 2007 Не уверен, что мне хватило бы 15 дней для создания такой сборки, хотя для профессионального конструктора, возможно, хватило бы и нескольких часов - программа достаточно хорошо оснащена в части библиотеки стандартных изделий. Но поскольку программа в пробной версии не позволяет мне выполнить все операции, иллюстрирующие мои соображения по вопросам применения CAD программ в любительской
практике, я вернусь к старым запасам. Итак. Компоновка для радиолюбителя, как правило, не самая увлекательная часть работы, а зря. Любая работа очень увлекательна при правильном подходе к ней. У меня в настоящее время почти нет знакомых радиолюбителей, но думаю, что ни один не удовлетворится в качестве конечной цели рисунком схемы на листе бумаге очень похожей на настоящую. Едва ли. Скорее он выберет готовую схему, сбегает в магазин или на радиорынок, купит все детали по списку и поспешит начать пайку. В этом смысле я не понимаю опасений, что программы помешают работе с паяльником. Единственной целью радиолюбителя было, есть и будет создание некоего устройства, в данный момент ему крайне необходимого. Я почти уверен, что большинство радиолюбителей, начав процесс с пайки, все остальные вопросы, такие как компоновка, откладывают на «потом», а реализуют «по месту». Цена такого подхода - неудачная компоновка, как причина отсутствия работоспособности хорошего, в общем-то, и хорошо спаянного устройства. Приведу пример. Вот корпус, который построил... положим, я. Он на рисунке 13.12. А вот, что из этого вышло после изготовления платы «принтерно-утюжным» способом, на что у меня ушло много сил и времени, и после покупки трансформатора, и размещения всего в купленном корпусе. VariCAD 9.O-2.2 - |4D-electronlc/partl3_xdr_dia/partL3] L Е В File Objects Display Snap Select Parts Tools Window Help -fix в й й £> a & 9 г a us- 0 о an a o л t, w s ® ® ® ® ® ® g° a » iA r v 0 0 x 0 j i и o » » s ;® s® a® sa а? г» <5 js ss к к к ss ss ?? ss x _ e—I«id:|gi col I- I» t 8? ЛХНВЕЯ ® ® И # S>;U A | Ready | | mm Рис. 13.14. Размещение компонентов в корпусе прибора В нижней части корпуса расположился трансформатор, над которым плата, дальнюю часть которой займут «высокие» элементы: конденсаторы, разъемы. Все на первый взгляд у меня скомпоновалось удачно, но я забыл, что над трансформатором на плате расположен усилитель для формирования очень слабого сигнала. Обнаружил я эту оплошность только после первого включения устройства. Шумы так мешали ему работать, что и работой это назвать никак нельзя. Теперь у меня осталось только три варианта: переделать плату (здрасте, вам!), удалить трансформатор или переделать корпус (этот, конечно, не пропадет, но денег жалко). Трансформатор можно вынести в отдельный корпус, чтобы удалить от чувствительных к его работе элементов: термочувствительных, а это большинство полупроводников, терморезисторов; цепей со слабыми сигналами, шум для которых подобен морю, утонут в нем, не заметят. Есть, правда, еще одно решение - полная переделка трансформатора, сводящаяся, в конечном счете, к существенному увеличению числа витков первичной обмотки и, если есть такая возможность, замене сердечника на тороидальный. Я не сомневаюсь, что показанный выше рисунок можно воспроизвести при помощи карандаша и бумаги, если позволят ваши художественные способности. И здесь, как и с рисунком электрической схемы, необходимость многократных правок, перерисовки могут превратить элегантный при рождении чертеж в подобие развалин Иерихона после трубного гласа. Есть еще один резон, почему бы стоило потратить некоторое время на освоение работы с программами, казалось бы, непосредственно не касающимися электроники. Для кого-то хобби может перерасти в профессию. Если вы попадете, как профи, на крупное предприятие, скорее всего узкой специализации вам будет более, чем достаточно. Но на маленьком предприятии, особенно, если все предприятие - это вы, то, как и в любительскую пору, придется делать самому почти все. Лишними никакие навыки не будут. И не забывайте про последний, самый главный винт, который гораздо удобнее закручивать снаружи, а не изнутри наглухо закрытого корпуса.
Глава 14. Симуляторы электрических схем, ngspice, SpiceOpus Программы EDA имеют либо встроенный симулятор, либо используют внешний симулятор электрических схем. Многие программы позволяют вам создать netlist для работы со spice-симуляцией. Если по какой-либо причине, как получилось у меня с программой gEDA, вы не можете воспользоваться симуляцией из интегрированной среды разработки, вы можете использовать внешнюю программу симулятора, управляемую, скажем, из командной строки. На примере XCircuit было видно, что знакомство с такими программами весьма полезно. Конечно, я согласен, начинающему радиолюбителю лучше использовать те программы, которые имеют встроенные возможности отображения графической информации. Можно сослаться на программу Multisim, в которой, особенно в последней версии - я скачивал пробную версию, чтобы посмотреть, как изменилась программа - способы графического отображения значительно усовершенствовались. Но для этого нужно купить программу. Если денег на покупку нет, то можно обойтись программой Oregano для Linux или LTSpice для Winows, но работающей и в Linux под эмулятором Wine. Что касается последних версий Electronics Workbench, Multisim. Не только осциллограф, но четырех канальный, мало того, картинка на мониторе компьютера, полностью отображает «живой» осциллограф: и ручки можно покрутить, и кнопочками пощелкать! Уверен, что начинающему радиолюбителю это понравится, но разобраться с кнопочками будет не проще, чем с программой ngspice или SpiceOpus. Но красиво, ничего не скажешь! Если начинающий радиолюбитель, последовав моим советам, включит в свой арсенал подходящую ему программу EDA и, чередуя пайку и наладку на макете с «разбором полетов» в программе, то ему недолго оставаться начинающим. Мне кажется, его интерес к созданию собственных устройств, выполненных по собственным схемам, и тяга к освоению новых областей электроники быстро возобладают над «детскими страхами» начального периода. В том, что касается программ, ему захочется больше узнать о тех возможностях, которые они предоставляют. Поскольку симуляция схем один из наиболее значимых элементов разработки с использованием компьютера, в этой главе я хочу больше рассказать о симуляторах. Вначале об ngspice, программа с которой работают Oregano, gEDA и Xcircuit. Полагаю, что лучше, чем разработчики программы, я этого не сделаю. Поэтому я скопирую некоторые разделы описания в этот текст, вот так: 6.1 Types of Analysis 6.1.1 DC Analysis The de analysis portion of NGSPICE determines the de operating point of the circuit with inductors shorted and capacitors opened. The de analysis options are specified on the .DC, . TF, and. OP control lines. И просто переведу, как смогу, базовые с моей точки зрения разделы. Итак. ТИПЫ АНАЛИЗА. DC анализ (анализ на постоянном токе). Часть NGSPICE, DC анализ, определяет рабочую точку схемы с «закороченными» индуктивностями и «открытыми» конденсаторами. Опции DC анализа специфицируются на .DC, .TF и .ОРуправляющих строках (netlist - текстовый файл). DC анализ автоматически выполняется перед анализом переходных процессов для определения его начальных условий и перед малосигналъным анализом для определения линеаризованных, малосигналъных моделей для нелинейный устройств. По запросу DC вычисляется значение малого сигнала передаточной функции (отношение выходной переменной к входному уровню), входное и выходное сопротивление, как часть DC анализа. DC анализ может использоваться и для генерации DC передаточного графика: заданное независимое напряжение, источник тока, резистор или температура проходят через заданный пользователем интервал значений, а выходные переменные DC сохраняются для каждого последовательного исходного значения. В NGSPICE было встроено качание температуры (TEMP) и сопротивления, в оригинальном коде Spice3f5 они недоступны. АС малосигнальный анализ АС малосигналъная часть NGSPICE вычисляет выходные АС (переменный ток) переменные, как функции частоты. Программа вначале рассчитывает DC рабочую точку схемы и определяет линеаризованные, малосигналъные модели для нелинейных устройств в цепи. Результирующая линейная схема затем анализируется в заданном пользователем частотном диапазоне. Выбранный выход малосигналъного анализа - это обычно передаточная функция (усиление по напряжению, обратная величина крутизны и т.д.). Если цепь имеет только один АС вход, лучше задать его входом устройства с нулевой фазой, так что выходные переменные имеют то же значение, что передаточная функция выходной переменной относительно входа. Переходной анализ Часть переходного анализа NGSPICE рассчитывает выходные переменные переходного процесса, как функцию времени на заданном пользователем интервале. Начальные условия автоматически определяются DC анализом. Все источники, которые не зависят от времени (например, источник питания),
устанавливаются в их DC значение. Интервал времени переходного процесса задается на . TRAN управляющей строке. Анализ нулей и полюсов Эта часть NGSPICE вычисляет полюса и/или нули малосигналъной АС передаточной функции. Программа вначале рассчитывает рабочую DC точку, а затем определяет линеаризованные малосигналъные модели для всех нелинейных устройств в цепи. Эта цепь затем используется для нахождения полюсов и нулей передаточной функции. Два типа передаточных функций допустимы: формы отношения выходного напряжения к входному и другой формы, отношения выходного напряжения к входному току. Эти два типа передаточной функции покрывают все случаи, и можно найти полюса/нули функции подобной отношению входного к выходному импедансу и усиления по напряжению. Входной и выходной порты специфицируются, как две пары узлов. Анализ нулей и полюсов работает с резисторами, конденсаторами, индуктивностями, линейными управляемыми источниками, независимыми источниками, BJT (биполярные транзисторы), MOSFET (полевые транзисторы с изолированным затвором), JFET (полевые транзисторы) и диодами. Линии передачи не поддерживаются. Метод, используемый при анализе, это суб-оптимальный поиск. Для больших цепей он может занять значительное время или прекратить поиск всех полюсов и нулей. Для некоторых схем метод «теряется», и обнаруживает слишком много полюсов или нулей. Анализ искажений малого сигнала Часть NGSPICE, анализ искажений, вычисляет установившиеся гармоники и продукты интермодуляции для модуля малого входного сигнала. Если на входе схемы заданы сигналы единственной частоты, комплексные значения второй и третьей гармоник определяются в каждой точке цепи. Если есть сигналы двух частот на входе цепи, анализ находит комплексные значения переменных цепи в сумме и разности входных частот, и в разности нижней частоты и второй гармоники большей частоты. Анализ искажений поддерживает следующие нелинейные устройства: диоды (DIO), BJT, JFET, MOSFET (уровня 1, 2, 3, 4/BSIM1, 5/BSIM2 и 6) и MESFETS. Все линейные устройства автоматически поддерживаются анализом искажений. Если в схеме есть переключатели, анализ продолжается, чтобы аккуратно поддержать переключатели в неизменном состоянии под небольшим возмущением, используемым для вычисления искажений. Анализ чувствительности NGSPICE будет вычислять либо чувствительность DC рабочей точки, или чувствительность АС малого сигнала выходной переменной по отношению ко всем переменным цепи, включая параметры модели. NGSPICE рассчитывает разность входной переменной (либо узлового напряжения, либо ток ветви) по возмущению каждого параметра каждого устройства независимо. Поскольку метод - это числовая аппроксимация, результаты могут демонстрировать влияние второго порядка в высоко чувствительных параметрах, или могут прекратить показ очень маленькой, но не нулевой чувствительности. В дальнейшем, когда каждая переменная возмущается маленькой долей ее значения, параметры нулевого значения не анализируются (это приносит пользу, вырезая то, что обычно создает большое количество данных). Анализ шумов Часть NGSPICE осуществляет анализ шумов, генерируемых устройством, для заданной цепи. При обеспечении входным источником и выходным портом анализ вычисляет шумовой вклад каждого устройства (и каждого генератора шума внутри устройства) в напряжение выходного порта. Также вычисляется входной шум для схемы, эквивалентный выходному шуму, отнесенному к заданному входному источнику. Это выполняется для каждой точки частоты в заданном диапазоне; вычисленное значение шума соответствует спектральной плотности переменной цепи, рассматриваемой как стационарный стохастический гауссов процесс. После вычисления спектральной плотности анализ шумов интегрирует эти значения в заданном частотном диапазоне для перехода к общему шумовому напряжению/току (в этом частотном диапазоне). Это вычисленное значение соотносится с изменением переменной цепи, рассматриваемой как стационарный гауссов процесс. Анализ при разных температурах (фрагмент) Температура в NGSPICE скорее относится ко всей схеме, чем к опциям анализа. Температура цепи имеет предопределенное (нормальное) значение 27 градусов по Цельсию (300.15 градусов Кельвина), что может быть изменено применением опции «TNOM» на управляющей строке .OPTION. Все анализы, таким образом, выполняются при температуре схемы, и, если вы хотите симулировать поведение схемы при разных температурах, вы должны приготовить netlist для каждой температуры. Здесь я прервусь, с вашего разрешения, поскольку дальше следует много формул, которыми вы едва ли воспользуетесь. Не знаю, как вам, а мне чтение руководства не кажется бесполезным. Начинающим пользователям это принесет пользу в том отношении, что если они где-то в хорошей книге встретят обширные пространства усеянные формулами, они могут спокойно к ним отнестись, зная, что хорошие люди уже позаботились о переносе этих формул в готовую программу. Опытным же радиолюбителям эти фрагменты помогут обратиться к оригиналу, чтобы понять, как много интересного можно получить при исследовании даже знакомых схем. Следующий раздел выглядит следующим образом в оригинале:
7 Circuit Description 7.1 General Structure and Conventions Он относится к описанию схемы. Итак: Описание схемы Основная структура и соглашения Схема, предназначенная к анализу, описывается для ngspice набором строк элементов, определяющих топологию схемы и значения элементов, и набором управляющих строк, определяющих параметры модели и управление исполнением. Первая строка во входном файле должна быть заголовком, а последняя должна быть «.END». Порядок оставшихся строк произволен (исключая, конечно, что продолжение строки должно немедленно следовать за продолжаемой строкой). Каждый элемент схемы специфицируется строкой элемента, которая содержит имя элемента, узлы цепи, к которым элемент подключен, и значения параметров, определяющих электрические характеристики элемента. Первая буква имени элемента обозначает тип элемента. Формат типов элементов для NGSPICE дан ниже. Строки ХХХХХХХ, YYYYFYY и ZZZZZZZZ означают произвольные буквенно-цифровые строки. Например, имя резистора должно начинаться с буквы R и может содержать один или больше символов. Таким образом, R, Rl, RSE, ROUT и R3AC2ZY - это правильные имена для резистора. Детали для каждого типа устройств вы найдете в последующих разделах. Поля на строке отделены одним или большим количеством пробелов, запятой, знаком равенства ('='), левой или правой круглой скобкой. Дополнительные пробелы игнорируются. Строка может быть продолжена вводом '+' (плюс) в первой колонке следующей строки. NGSPICE продолжает чтение со второго столбца. Поле имени должно начинаться с буквы (от А до Z) и не может содержать никаких разделителей. Поле числа может быть полем целого (12, -44), полем числа с плавающей точкой (3.14159), либо целое или с плавающей точкой число должно сопровождаться одним из следующих масштабных коэффициентов: Т=1012 G = 109 Meg = Iff3 К= 103 mil = 25.4~6 т = I О3 и = КГ6 п = 10 9 р = ю-12 f= ю-‘5 Буквы, сразу следующие за числом, не являющиеся масштабным коэффициентом, игнорируются. Буквы, сразу следующие за масштабным коэффициентом, игнорируются. Таким образом, 10, 10V, lOVoltsu 10Hz-все представляют то же самое число, а М, МА, MSec и MMhos - все представляют одинаковый масштабный коэффициент. Заметьте, что 1000, 1000.0, 1000Hz, 1еЗ, 1.0еЗ, 1kHz и 1k - все представляют одно и то же число. Имена узлов могут быть произвольными символьными строками. Исходный узел (земля) должна быть названа 'О' (ноль). Обратите внимание на отличие NGSPICE, где узлы трактуются как символьные строки, а не определяются как числа, таким образом, 'О' и '00' особые узлы в NGSPICE, но не в SPICE2. NGSPICE нуждается, чтобы следующие топологические ограничения были удовлетворены: • Цепь не должна содержать петель источников напряжений и/или индуктивностей, и не должна содержать сечений источников тока и/или конденсаторов. • Каждый узел в цепи должен иметь DC путь на землю. • Каждый узел должен иметь хотя бы два соединения, исключая узлы линии передачи (чтобы разрешить не прерываемые линии передачи) и MOSFETузлы основания (которые, как бы то ни было, имеют два внутренних соединения). Основы: Заголовок, Комментарии и строка .END Строка заголовка Примеры: POWER AMPLIFIER CIRCUIT TEST OF CAM CELL Строка заголовка должна быть первой во входном файле. Ее содержание дословно печатается как заголовок во все секции вывода. Строка .END Примеры: . END
Строка «END» должна всегда быть последней во входном файле. Заметьте, что период — составная часть имени. Комментарии Основная форма: * <любой комментарий> Примеры: * RF=lk Усиление должно быть 100 * Проверка усиления с разомкнутой петлей и запас по фазе Звездочка в первой колонке указывает, что эта строка — комментарий. Строки комментария могут размещаться в любом месте описания схемы. Отметьте, что NGSPICE также рассматривает любые строки с лидирующим пробелом, как комментарии. Модели устройств Основная форма: MODEL MNAME TYPE(PNAME1=PVAL1 PNAME2=PVAL2 ... ) Примеры: .MODEL MODI NPN (BF=50 IS=1E-13 VBF=50) Большинство простых элементов цепей обычно требует только нескольких значений параметров. Однако некоторые устройства (полупроводниковые устройства в особенности), включенные в NGSPICE, требуют множество значений параметров. Часто, многие устройства в схеме определены одним и тем же набором параметров модели устройства. По этим соображениям набор параметров модели устройства определяется на отдельной .MODEL строке и назначается уникальному имени модели. Строки элементов устройств в NGSPICE затем ссылаются на имя модели. Для этих более сложных типов устройств каждая строка элемента устройства содержит имя устройства, узлы к которым устройство присоединено и имя модели устройства. Для некоторых устройств могут задаваться дополнительно другие необязательные параметры: геометрические коэффициенты и начальные условия. MNAME выше — это имя модели, и записывается одним из следующих пятнадцати типов: R C L sw csw URC LTRA D NPN PNP NJF PJF NMOS PMOS Полупроводниковая модель резистора Полупроводниковая модель конденсатора Модель индуктивности Управляемый напряжением переключатель Управляемый током переключатель Модель однородного распределения RC Модель линии передачи с потерями Модель диода NPN ВJT (биполярный транзистор) модель PNP BJT модель N-канальный JFET (полевой транзистор) модель Р-каналъный JFET модель N-каналъный MOSFET (с изолированным затвором) модель Р-каналъный MOSFETмодель Я привел это описание с тем, чтобы показать несколько примеров работы ngspice для тех, кто оценил возможности, заложенные в этой программе. Если в начальный период освоения электрических схем очень удобно пользоваться встроенными симуляторами, то в дальнейшем они не всегда удовлетворяют пользователя в полной мере. Причина этого может быть и весьма прозаична - лицензионные соглашения, права использования и т.д. Когда хочется большего, можно обратиться к не столь удобным, но более полным средствам. Конечно, лучше иметь под рукой полное руководство к программе. Пример из руководства пользователя ngspice: Дифференциальная пара Следующая дека определяет de рабочую точку простой дифференциальной пары. Дополнительно вычисляется ас малосигнальный отклик в частотном диапазоне от 1Гцдо 100МГц. SIMPLE DIFFERENTIAL PAIR VCC 7 0 12 VEE 8 0 -12 VIN 1 0 AC 1 RSI 1 2 IK RS2 6 0 IK QI 3 2 4 MODI Q2 5 6 4 MODI RC1 7 3 10K RC2 7 5 10K RE 4 8 10K MODEL MODI NPN BF=50 VAF=50 IS=1.E-12 RB=100 CJC=.5PF TF=.6NS TF V(5) VIN .AC DEC 10 1 100MEG END
Этот пример я переношу в блокнот, я использую редактор gedit с настройками по умолчанию, и даю файлу расширение .spc при сохранении файла. Затем я использую команды в терминале: ngspice / home/vladimir/ полный_путь_к_файлу/di f_pair. spc а после входа в ngspice: ас dec 10 1 lOOmeg plot v(5) Итогом становится следующий графический выход: Рис. 14.1. Частотная характеристика простой дифференциальной пары Пример, который я взял из руководства к ngspice, позволяет мне проверить работу симулятора с Рис. 14.2. Схема простой дифференциальной пары в Xcircuit Для сравнения я создам netlist и проверю еще раз. Файл netlist сгенерированный программой Xcircuit
приходится немного подправить: *SPICE circuit <dif_pair> from XCircuit v3.4 rev 3 VIN intlO GND AC 1 V2 int6 int9 -12 V3 inti int6 12 R1 inti int4 10.0k R2 inti int2 10.0k R3 into int9 10.0k R4 intlO int3 1. 0k R5 int5 GND 1.0k QI int2 int3 into MODI Q2 int4 int5 into MODI MODEL MODI NPN BF=50 VAF=50 IS=1.E-12 RB=100 CJC=.5PF TF=.6NS . TF V(int4) VIN AC DEC 10 1 100MEG . end Команды, записанные в netlist, очень похожи на приведенные в руководстве ngspice, а соответствующая команда выв ода графики будет: plot v(int4) Соответственно, результат, как и ожидалось, не мене похож: Рис. 14.3. Графический вывод, полученный с помощью программы Xcircuit Чтобы не писать netlist для каждого примера, и не рисовать отдельные схемы для них, я воспользуюсь возможностями программ, генерирующими netlist для ngspice. И не стоит недооценивать простые схемы. Когда я однажды посетовал на диоды, сгоревшие в выпрямителе с конденсатором большой емкости, достаточно опытный специалист не поверил мне. Как происходит процесс заряда, можно понять из следующего эксперимента:
gschem Рис. 14.4. Заряд конденсатора через диод в gEDA Для удобства наблюдения за током я добавил резистор R1 сопротивлением в 10 Ом. После создания небольшой правки он имеет вид: * Spice netlister for gnetlist VI 3 0 12 R1 0 1 10 Cl 1 2 lOOOu DI 3 2 DMOD 3.0 IC=0.2 .END Правка касалась параметров диода. Считывание файла (с расширением .cir) производится командой: ngspice /home/vl adimir/полный_путь_к_файлу/testl.cir А команды анализа и отображения результата tran 0.05 0.2 uic plot V ( 1 ) мало отличаются от предыдущих. Результат: 0.0 200.0 100.0 time ms
Рис. 14.5. Ток заряда конденсатора через диод и резистор Импульс заряда через сопротивление 10 Ом приблизительно эквивалентен подаче прямоугольного импульса с амплитудой 5 В в течение 20 мс. При этом ток через резистор будет 500 мА. Диод может иметь меньшее сопротивление, ток будет больше, что даже при меньшей длительности импульса допустимо не для всякого диода. Привычка использовать готовые решения, а это хорошая привычка, иногда может сыграть злую шутку, когда приходится покидать уютные пределы готовых решений. Некогда, встретив совершенно непривычное для себя начертание узла в схеме, я без долгих размышлений решил, что это ошибка. И только после разъяснения, после того, как с помощью осциллографа я убедился, что все работает, я понял, что привычка не всегда помогает, иной раз и подводит. Речь идет о таком вот включении транзистора: Рис. 14.6. Преобразование напряжения в программе KiCAD Чтобы убедиться в работе схемы, я создам netlist средствами системы KiCAD, немного подправлю его, в основном это касается источника сигнала, обозначенного VPULSE, источника питания VI и параметров транзистора. * EESchema Netlist Version 1.0 (Spice format) VPULSE 6 0 pulse(0 12 0.002 0.002 0.002 0.05 VI 1 0 DC 12 QI 451 MODI Cl 4 0 O.lu R1 5 6 1000 .MODEL MODI NPN BF=50 VAF=50 IS=1.E-12 RB=100 . end creation date: 14/12/2006-14:31:18 0.1) CJC=.5PF TF=.6NS Входной сигнал узла 1 выглядит обычным образом.
Рис. 14.7. Входной сигнал предыдущей схемы При этом на эмиттере транзистора (на конденсаторе С1) сигнал получается следующим: Рис. 14.8. Сигнал на конденсаторе в цепи эмиттера транзистора А вот, что я хотел показать в этой истории о собственных «пробах и ошибках». Следуклцю при подключении сопротивления 1 МОм параллельно конденсатору.
Рис. 14.9. Подключение резистора параллельно конденсатору Теперь, мне кажется, ясно, что это работа фрагмента формирователя напряжения - с конденсатора С1 снимается нужное напряжение. Я часто на протяжении всей книги говорю о командах с терминала. Для тех, кто не знаком с Linux, они выглядят так: vladlmlr^vladl:~ s Щ IX Рис. 14.10. Работа программы ngspice в окне терминала Далеко не всегда следует рассматривать схему всего устройства, как целое. Полезнее может оказаться выделение фрагмента схемы или функционального узла для прояснения, все ли правильно с ним. В этом случае симуляторы серии spice, прекрасно работающие из командной строки, сослужат хорошую службу. Чтобы не получать упреков в фанатической приверженности Linux, я хочу привести пример работы еще одного симулятора SpiceOpus, который предназначен для работы и с Linux, и с Windows. Я запущу программу с последним netlist. Команда, в сущности, та же, исключая имя программы spice3, и последующие команды ничем не отличаются: spice3 /home/vladimir/полный_путь_к_файлу/Ъе5^к±са<3. cir Далее, после входа в программу: tran 0.05 0.2 uic plot v(l) Программа рисует мне график с сигнала генератора импульсов:
plotOzNoncime - SpiceOpus Plot Q 1+ iXI Рис. 14.11. Графическое окно программы SpiceOpus С помощью маркера можно получить дополнительную информацию. Она отображается в окне сообщений ниже графика. Изменив команду plot v(6) на plot v(4), можно получить окончательный график предыдущего примера. Дополнительно, если нажать на правую клавишу мышки, можно получить выпадающее меню, которое существенно расширяет возможности работы с графиком: Приложения Переход Система 20:24 ^) Рис. 14 12. Дополнительное выпадающее меню программы SpiceOpus Но не буду вам портить удовольствие от знакомства с этой полезной и удобной программой. Замечу только, что все, что было сказано относительно работы в ngspice с программами, на нее ориентированными, можно отнести к SpiceOpus — я не переделывал netlist для работы с этой программой.
Глава 15. Разводка печатной платы. KiCAD, pcb (gEDA), Eagle - Linux. Ultiboard, TraxMaker-Windows Разводка печатных плат в радиолюбительской практике до недавнего времени носила вспомогательный характер. Программы разводки помогали сделать предварительную работу перед обычным монтажом схемы или перед изготовлением печатной платы. Сегодня многие опытные радиолюбители используют лазерный принтер для нанесения рисунка на фольгированную плату перед травлением. Так что сегодня это не только вспомогательный этап работы, но для многих один из основных. Какие программы разводки печатных плат работают в системах EDA или совместно с ними, исключая общеизвестные с полной ориентацией на производство? Выше уже упоминалась система KiCAD. Присмотримся к ней повнимательней. Во-первых, что такое KiCAD? Пакет Kicad - это группа программ для создания электрических схем и разводки, который работает на следующих операционных системах: LINUX Windows ХР/2000 Утилита kicad - это менеджер проекта, который упрощает использование других программ, необходимых для рисования электрических схем, компоновки плат (РСВ), генерации и проверки файлов для производства. Программы, которые включены - это: Eeschema: редактор схем. Pcbnew: РСВредактор. Cvpcb: позволяет ассоциировать компоненты схемы с физическими модулями (наборами) для размещения на РСВ. Gerbview: используется для визуализации файлов Gerber. С этого описания начинается краткое руководство к KiCAD. Пропустим разделы, описывающие установку пакета, и обратимся к разделу, названному «Принципы использования». В порядке упрощения управления проектом, то есть, всеми составляющими файлами (представленными схемами, распечатками платы, дополнительными библиотеками, полученными файлами для фототрассировки, сверления и автоматического размещения компонент), рекомендуется создать project: Создайте рабочую директорию для проекта (используя kicad, или другим способом). В этой директории используйте kicad для создания файла проекта. Строго рекомендуется использовать одно имя для проекта и его директории. Kicad создает файл с расширением .pro, который содержит ряд параметров, относящихся к управлению проектом (таким, как имя файла принципиальной схемы, списка библиотек, используемых в схеме и РСВ). Предопределенные имена, как принципиальной схемы, так и схемы расположения, базируются на имени проекта. Таким образом, если проект, названный example, был создан в директории, названной example, созданные по умолчанию файлы будут: example.pro — Файл управления проектом. example.sch - Файл принципиальной схемы. example.brd - Файл расположения элементов. example.net — Файл netlist (список элементов и соединений). example.xxx — Различные файлы, созданные другими утилитами. example.cache.lib - Кэш - файл библиотек, использованных при создании схемы. (backup -резервный файл использованных компонент). А теперь обратимся к пошаговому руководству пользователя, показывающему, как работать с этим пакетом. Сделаем все рекомендуемые шаги, отвлекаясь, возможно, только в тех случаях, когда нужно тщательней разобраться в происходящем. Начинается руководство с запуска менеджера проекта. С появлением окна менеджера проектов рекомендуется создать новый проект (Projects — New Project Descr) с именем tutel. Руководство описывает порядок работ в Windows, но, поскольку я пользуюсь операционной системой Linux, приходится несколько менять порядок шагов. Так руководство после создания нового проекта предлагает создать новую папку в обозревателе Windows, а мне приходится создавать новую папку, выходя из программы. Но это, конечно, не имеет никакого значения. Тем более что в разных дистрибутивах Linux порядок действий может как совпадать с описанием, так и несколько отличаться. Итак, создаем новый проект, создаем новую папку с именем проекта, сохраняем проект в этой папке:
о 6-08-28] /hiome/vladlmlr/4D-electrorilc/partL5 pcb/kicad_proJecVtute Ш Ж IXj . Projects Browse Параметры Помощь Й tutel.sch El tutel .bed । Ready Working dir: /home/vladimir/4D-electronic/partl5_pcb/ kicad _project Working dir; /home/vladimir/4D-electronic/partl5_pcb/ kicad_projectytute 1 Project: /home/vladimirMD-electronicTpartl 5_pcb/ kicad_projectytute 1/tute 1 pro Рис. 15.1. Менеджер проектов KiCAD Следующим шагом предлагается щелкнуть по файлу tutel.sch в окне дерева проекта (слева). Вместе с сообщением о создании нового проекта открывается окно редактора схем (EESchema). Нужно сохранить создаваемую схему (Files — Save Schematic Project). Затем рекомендуется задать параметры страницы и заголовок схемы. Здесь есть некоторая особенность — выполнить эту задачу можно с помощью клавиши инструментальной панели (верхняя инструментальная панель, четвертая клавиша слева) page settings. После задания формата чертежа и заголовка можно приступить к выбору компонент. Для этого есть клавиша add components с рисунком логической схемы «И» на правой инструментальной панели. После щелчка по этой клавише следует переместиться в рабочее окно редактора в место, где следует поместить компонент. Курсор при этой операции меняет вид. Переместившись, щелкнуть еще раз. Это приведет к появлению диалогового окна выбора компонент (component selection), в котором можно выбрать клавишу List АП для вывода списка всех компонент: Рис. 15.2. Список библиотек программы KiCAD Как видно из неполного списка количество библиотек пакета достаточно обширно. Для начала предлагается выбрать устройство из библиотеки device. Не будем нарушать порядок и дважды щелкнем по этой библиотеке, чтобы перейти в диалоговое окно выбора конкретного устройства:
Select component (73 Items) ЗД MOS_N MOS_P MGSFETN MOSFET_P NPN PHDARL PHOTORESISTOR PHTRANS PICO7 PNP POT quartzCMS4 R RPACK4 RPACK8 RELAYJ2RT Reser: Resistance KeyW: R DEV Рис. 15.3. Список устройств в библиотеке device программы KiCAD По выделенному мной элементу, резистору, предлагается щелкнуть дважды, чтобы перенести его на чертеж, а по дороге с помощью клавиши R на клавиатуре опробовать режим поворота элемента. Это действительно работает. Компонент размещен в рабочем поле чертежа. Далее предлагается дважды щелкнуть по изображению увеличительного стекла (со значком плюс) для увеличения вида компонента, но у меня лучше это получается, если я помещаю курсор на компонент и вращаю колесико мышки, иначе я теряю его из вида. Следующий шаг после увеличения вида - щелчок правой клавишей мышки в середине компонента, который выводит на экран выпадающее меню редактирования, из которого предлагается выбрать редактирование свойств компонента: □ Рис. 15.4. Выпадающее меню редактирования с разделом Edit Component Хотя окно диалога свойств компонента в моей версии KiCAD выглядит иначе, чем в руководстве, найти предлагаемое окно Value на вкладке Fields, где вместо литеры «R» предлагается задать значение в 1 кОм (1k), особого труда не составляет:
Рис. 15.5. Диалоговое окно свойств, в котором можно задать значение Единственное, что при этом следует сделать - отметить справа опцию Value вместо Ref, отмеченной галочкой на картинке выше. Значение внутри резистора изменится соответствующим образом. Затем руководство предлагает установить второй и третий резистор, чтобы в выпадающем меню для второго резистора выбрать Delete Component и удалить его, а третий резистор подвигать в окне редактора с помощью раздела меню Move Component, и, наконец, изменить значение литеры R на величину сопротивления 100 (Ом). В этих экспериментах можно опробовать и вращение элементов схемы с помощью соответствующего раздела меню. Следующий шаг - выбор микросхемы PIC12C508A с помощью тех же действий, что и при выборе резисторов, но не из раздела device, а раздела microcontrollers. После выбора, при перемещении компонента в окно редактирования схемы, можно испробовать режим отражения компонента относительно осей х и у, нажимая эти клавиши на клавиатуре. Однако мне кажется, что эти эксперименты в моей версии программы более наглядны с помощью выпадающего меню после установки компонента на место, поскольку при перемещении компонента к курсору привязан контур микросхемы, но без обозначения выводов. После добавления еще одного компонента, светодиода LED, все компоненты следует разместить следующим образом: ’<5 Приложения Переход Система 17:33 Ф) >— [/ho me/vlad Im lr/4D-electro nlc/partl 5_pc b/klcad_pr о ject/tutel/tutel. sell] Files Параметры Помощь США Рис. 15.6. Размещение компонентов на схеме в поле редактора схем KiCad {2006-08-28) /home/vladimir/4... | § (/home/vladimir/4D-electronic/partl5. [vladimir@v1adi ~] Следующий шаг руководства предполагает добавить компонент в библиотеку. Для этого следует воспользоваться клавишей инструментального меню (пятая слева, под которой на рисунке выше видна подсказка). После нажатия на клавишу открывается окно редактора библиотеки:
[Part: None Unit/|z4 X 1,9500 Y 0,4500 x 1,9500 у 0,4500 Inch Рис. 15.7. Окно редактора библиотек программы KiCAD В редакторе в первую очередь нужно выбрать рабочую библиотеку (вторая клавиша слева с подсказке! Select working library), из списка библиотек выбрать conn, щелкнуть по клавише New part (четвертая слева), 1 назвать новый элемент MYCONN3 (как в руководстве), в окне Reference следует вставить префикс «J», а 1 количестве частей задать значение «1». Далее следует ввести число выводов с помощью клавиши Add pins и: правой инструментальной панели (вторая сверху). В открывшемся диалоговом окне сначала дадим имя выводу (VCC), затем его номер (1), электрический тип выделим как Power Out: Рис. 15.8. Диалоговое окно свойств нового компонента После нажатия на клавишу ОК вывод можно поместить в нужном месте, а операцию повторить еще два раз: - первый раз с параметрами: INPUT, 2, Input, а второй раз с параметрами: GND, 3, Power Out. В заключенш следует разместить компоненты, как это показано на рисунке ниже, и добавить прямоугольник с помощьк клавиши правой инструментальной панели Add rectangles (выделена на рисунке):
Llbedlt: /usr/share/klcad/llbrary/conn.llb о о* te й ft мУЕ-амнз- vcc INPUT БиЬ "В & Z 4 X 0,4500 Y 0,3001 x 0,4500 у 0,3000 Inch Add R< ctanglt Рис. 15.9. Вид нового компонента в редакторе библиотеки Осталось только сохранить компонент с помощью клавиши Save current part into current loaded library (in memory) (шестая слева клавиша на верхней инструментальной панели) в памяти, а с помощью клавиши Save current loaded library on disk (file update) (первая слева клавиша) сохранить измененную библиотеку на диске. При этой операции я столкнулся с тем, что папка kicad, расположенная в директории /usr/share, не дает мне прав доступа, что вызывает ошибку. Пришлось изменить права доступа, прежде чем операция прошла успешно. Закрываем редактор библиотек и двигаемся дальше, то есть, выбираем вновь созданный компонент, как мы это делали с резисторами, микросхемой и светодиодом, располагаем его рядом со вторым резистором и отражаем относительно оси у: r/home/vladlmlr/4D-electronlcZDartl5 pcb/klcad Droiect/tutel/tuteL.sctil Li £t-J IX Ries Параметры Помощь Z6 X5,7500 Y2,150t|x-0,1000 y-l,983|Inch Рис. 15.10. Добавление собственного компонента к схеме Под надписью MYCONN3 у меня скрылся префикс «Т?». Чтобы освободить его и переместить под выводы, следует с помощью правой клавиши мышки вызвать падающее меню при установке курсора на надпись, выбрать пункт Move Field, и переместить поле в нужное место. Дальнейшие шаги связаны с клавишей Add powers (четвертая сверху на правой панели). Из появившегося после нажатия клавиши списка следует выбрать компонент VCC, который расположить чуть выше верхнего конца первого резистора, над выводом 1 MYCONN3 и выводом 1 микросхемы. Затем повторить то же самое для элемента GND, который размещается под выводом 3 MYCONN3, чуть правее и ниже вывода 8 микросхемы. Осталось провести соединения, чтобы закончить чертеж схемы. Для этой цели послужит клавиша Add wires (пятая сверху на правой панели). Проведение соединений мало отличается от аналогичной операции в других программах — курсор помещается на кружочек вывода, нажимается левая клавиша мышки, соединение
проводится до нужного вывода, где левая клавиша мышки нажимается повторно. Соединение сделано. Если соединение не заканчивается на элементе, то с помощью правой клавиши мышки вызывается выпадающее меню, где выбирается пункт End Wire. В результате должно получиться следующее: [/home/vladlmlr/4D-electronlc/Dartl5 Dtb/kicad orolect/tutel/tutel.schf ,_i Ж 1X1 Files Параметры Помощь Рис. 15.11. Соединение элементов схемы в программе KiCAD Когда вы соединяете символы VCC и GND, проводник должен касаться нижней части символа VCC и середины верха символа GND. Сети следует промаркировать с помощью клавиши Add wire or bus label (десятая сверху на правой панели). На рисунке ниже обратите внимание на маркировку соединения вывода 6 микросхемы и соединения, которое идет от резистора 100 (Ом) вправо. Они оба названы INPUT. Так можно избежать лишних линий соединения, загромождающих чертеж. Чтобы не появлялось предупреждений о выводах, которые не присоединены к чему- либо. следует воспользоваться клавишей Add no connect (девятая сверху на правой панели). Нажав на клавишу, следует отметить выводы 2, 3, 4 и 5 микросхемы контроллера. Теперь всем компонентам следует дать уникальные идентификаторы. Это выполняется с помощью клавиши Schematic Annotation на верхней инструментальной панели, отмеченной на рисунке ниже. В появившемся окне диалога флажки устанавливаются рядом с Current Sheet и all components. Согласитесь с предупреждением, что предыдущие идентификаторы будут удалены, и в результате получите следующую картинку, на которой все элементы получили идентификаторы, как R1 и R2:
Приложения Переход Система J , [ (J 20 27 K}<)) ]~Files Параметры Помощь [/ho m е/ via d Im lr/4D-electro nlc/partl 5_pc b/klcad_project/tute 1/tutel. sch [ G ffi El D & d₽ В Ф Ф % lb ® e К □ <!1«и & ii □ $ Lb-] is к 4 * Z 4 X 4.9500 Y 2,6000 |x -0,9000 у -1.533 Inch KiCad (2006-08-28)/home... r/home/vladimir/4D-electro... [vladimirtavladi ~ -j GIMP | США иР|| | | |Д fc Рис. 15.12. Окончательный вид схемы в программе KiCAD Вид схемы окончательный, но это еще не конец работы. После этого этапа черчения следует выполнить проверку электрических соединений (предпоследняя клавиша на верхнем инструментальном меню). Если ошибок нет, то в сообщении количество ошибок и предупреждений будут равны нулю. Если ошибки есть, то в местах ошибок появляются маленькие зеленые стрелочки (маркеры), указывающие на ошибки. В том виде, какой схема имеет на рисунке выше, она даст две ошибки и два предупреждения. Обе ошибки будут связаны с тем, что при маркировании сетей я расположил этикетки над соединениями (чтобы их легче было читать), а располагать их следовало, похоже, на выводах, к которым провод присоединяется или на самом проводе соединения. Проверив схему на наличие ошибок в электрическом соединении, можно генерировать netlist - спецификацию всех компонентов и соединений схемы (четвертая справа-налево клавиша верхней панели) - сохранить его и продолжить работу. Здесь я хочу отметить, что генерация netlist может быть выполнена для симулятора Spice, но к этому я вернусь позже, после пересказа «своими словами» пошагового руководства. Для продолжения работы по разводке печатной платы следует перейти к соответствующему редактору из пакета KiCAD с помощью клавиши Run Cvpcb — это клавиша на верхней инструментальной панели правее клавиши с изображением принтера. Cvpcb позволяет соединить компоненты с шаблонами цоколевки (footprint). После нажатия клавиши появляется окно редактирования: Рис. 15.13. Окно редактора netlist для pcb программы KiCAD Руководство предлагает: В светло голубом экране выберите «D1», и прокрутите список вниз в светло зеленом окне к «LEDV», и
дважды щелкните по нему. Для «Л» выберите «3PIN_6mm»цоколевку (footprint). Для «R1» и «R2» выберите «R1» из светло зеленого окна. Выберите 8dip300 для «1Л». Щелкните по files — Save netlist. Предопределенное tutel.net вполне подходит, поэтому щелкните по save. Сохраните проект щелчком по files — Save Schematic Project. He стану упрямиться, сделаю, как велено: Рис. 15.14. Вид редактора после внесенных в netlist изменений После сохранения файла следует переключиться в окно менеджера проектов, выбрать в основном меню раздел Browse и пункт Browse Files. Если при попытке посмотреть файл tutel .net возникает ошибка, то следует выбрать редактор с помощью пункта основного меню Browse — Select Editor. Для Windows — это «c:\windows\notepad.exe», для Linux — «/usr/bin/gedit». Теперь можно вернуться в окно редактора схем. Если следует создать BOM (Bill of materials — перечень материалов), то для этого есть клавиша верхнего инструментального меню (последняя). Операции здесь не сложные: Щелкните по Create List (создать список), а затем по Save. Чтобы увидеть файл, повторите шаги при просмотре netlistu выберите «tutel.1st». Теперь с чистой совестью можно перейти в редактор разводки печати с помощью клавиши Run Pcbnew (клавиша верхнего инструментального меню, левее увеличительного стекла со значком плюс). Рекомендации: • Щелкните по ОК, когда появляется сообщение, что файл не существует. • Щелкните по Files—Save board. Далее следует повторить начальные операции, аналогичные ранее сделанным для схемы: выбор размера листа и заголовка проекта. Для этого на инструментальной панели выбирается клавиша установок размера страницы (четвертая клавиша слева). Теперь следует установить размеры с помощью меню, показанного на рисунке ниже, следуя рекомендациям руководства: Установите значения так, чтобы они подходили к возможностям вашего производства РСВ. Проконсультируйтесь с вашим производителем РСВ на этот счет. Для нашего примера увеличим зазор (clearance) до 0.0150”.
(g Приложения Переход Система J 20.22 4Й /home/vladlmlr/4D-electronlcJpartl5_pcb/klcad_pro)ect/tutel/tutel.tird Q ЕВ И Files Параметры । Dimensions 1 Miscellaneous Postprocess 3D Display Помощь Pl (О L.il FB L?hiJl Tracks and Vias ' Q. £1 Q, Fl <2 ICoppei v Ц it I Adjust size and width for tracks. vias Z465 1X5.3500 Y 0.3500 x 5.3500 у 0.3500 [nch O] * KiCad (2006-08-28)/home... § r/home/vladimir/4D-electro... /home/vladimir/4D-electro... [vladimir@vladi:~] США | Г Q| Рис. 15.15. Меню установки размеров в редакторе pcb Если вы не забыли внести изменения в размеры в соответствии с рекомендациями, то можно прочитать netlist: Щелкните по клавише Read Netlist на верхней панели (правее клавиши с изображением бинокля — клавиши поиска). Щелкните по клавише Select для выбора «tutel.net», и щелкните по open, а затем щелкните по клавише Read Наконец, щелкните по клавише dose В моей версии программы нет клавиши open, а клавише Close соответствует клавиша Закрыть, и диалоговое окно выглядит так: о ,74D-electronlc/partl5_pcb/klcad_f 1X1 Module Selection: Reference _ Timestamp Bad Tracks Deletion: •s Keep I Delete Exchange Module: * Keep Change [ Module Test Compile Закрыть1 ✓ Display Warnings I lead Netlist/home/vladimir/4D-electronicJ 'partl5_pcb/kicad_project/tute 1/tute 1 .net Рис. 15.16. Диалоговое окно чтения netlist Далее продолжаем в точности по инструкции: • Компоненты будут расположены в верхнем левом углу, как раз над страницей, прокрутите страницу,
чтобы увидеть их. После щелчка правой клавишей на компоненте выберите move component (переместить компонент), и позиционируйте его на середину страницы. Повторите предыдущий шаг, пока все компоненты не окажутся на середине страницы. Удостоверьтесь, что клавиша General ratsnest not show включена (седьмая сверху клавиша на левой инструментальной панели). В моей версии программы операции move component нет, но есть move module, которой я и пользуюсь. Таинственный для меня термин ratsnest. вероятно, имеет отечественный аналог, но, не будучи специалистом, я его не знаю, однако, смысл его, скорее всего, в том безобразии из линий соединений в смеси с изображением деталей, располагаемых на плате, которое появляется после чтения netlist. Вслед за перемещением всех элементов в рабочее поле чертежа рекомендуется переместить детали так, чтобы количество пересечений соединений было минимальным. Я попробую воспроизвести в программе рисунок, приведенный в руководстве: Рис. 15.17. Расположение деталей на плате в редакторе pcb Вновь обратимся к инструкции: • Если ratsnest исчезнет, или экран станет не читаем, ще якните правой клавишей мышки и щелкните по redraw. • Теперь мы соединим все, исключая общий провод, на «component side (сторонаустановки компонент)» (верхний слой). • Щелкните по клавише Add Tracks an vias на правой панели (пятая клавиша сверху). • Выберите Component (окно на верхней инструментальной панели, в которой при переходе в редактор у меня было Copper) из выпадающего меню на верхней панели. • Щелкните на середине вывода 1 компонента Л и проведите дорожку к площадке R2. • Повторите этот процесс, пока все проводники, исключая вывод 3 Л, ни будут соединены. При выполнении этих инструкций я несколько раз ошибся. Неправильную дорожку можно удалить, используя выпадающее меню (по щелчку правой клавиши мышки), когда курсор находится на «неправильной дорожке». В меню можно выбрать пункт удаления сегмента, всей дорожки или всей сети - последовательности соединения связанных дорожек. В итоге получилась картинка очень похожая на ту, что есть в руководстве:
Рис. 15.18. Проведение дорожек на плате в редакторе pcb программы KiCAD Что ни говорите, но без руководства мне не скоро удалось бы добраться до подобного результата. Но что же делать с оставшимся соединением? • В выпадающем меню верхней панели выберите Copper (нижний слой). • Щелкните по клавише Add tracks and vias (добавить дорожки и отверстия). • Нарисуйте дорожку между выводами 3 компонента Л и 8 U1. • Щелкните клавишу Net highlight (подсветить сеть) на правой панели. • Щелкните по выводу 3 Л. Он станет желтым. Да. Щелкнуть можно, но что это изменит, если плохо разбираешься в предмете. Мне справиться с соединением удалось только с нескольких попыток. Как я ни старался провести дорожку между выводами, она упорно не хотела оставаться после щелчка по второму выводу соединения. И только после нескольких неудачных попыток мне удалась та, что показана на рисунке ниже. Проблемы, я думаю, возникли у меня из-за четвертой ножки микросхемы, которая мешала провести дорожку. Первая удачная попытка была в обход всех элементов по верхней части платы. Вторая попытка была сделана с учетом этого опыта и промежуточными щелчками мышки в точках поворота дорожки.
/h о m е/viad Im ir/4D-electro nic7partl5_pcb/kicaci pr о ject/tutel/tutel.Dr d l±i ЙЙ |_ Files Параметры Dimensions Miscellaneous Postprocess 3D Display Помощь П e Q | В l в SB Q. A & H [□ <3 copper - SS it 2 2 0 Z 18 X 0.2000 Y4.6000|x 6.2000 y4.6000 Inch Рис. 15.19. Проведение дорожки на второй стороне платы Неумелому и инструкция не помощник. Но с ней, все-таки, лучше. Вернемся к ней: • Щелкните клавишу Add Zones на правой панели (шестая сверху). • Обведите контуром плату. • Щелкните правой клавишей мышки внутри пространства, которое только что обрисовали. • Щелкните по Fill Zones (заполнить зоны). • Выберите «Grid» «0.010», «Pad options:» «Thermal», «Zone edges orient:» «НЩ» и затем щелкните no Fill. С каждым шагом плата приобретает все большую завершенность, но и растет мое нетерпение, заставляющее делать ошибки. Приходится возвращаться назад, используя возможность удалять следы неудачных попыток. Все чаще приходится использовать пункт выпадающего меню Redraw. о /home/vladlmlr/4D-electronlc/partl5_pcb/klcad_projecVtutel/tutel.brd | Files Параметры Dimensions Miscellaneous Postprocess 3D Display Помощь в 1^ M S1 ©id €1 £U Й icopper tt Z36 X 6,0500 Y 3,7500 |x 6,0500 у 3,7500 Inch |<Add Zones Рис. 15.20. Почти законченная разводка платы в программе KiCAD Что еще осталось сделать?
• Теперь выберите Edges Pcb из выпадающего меню верхней панели (окошко, где до этого было Copper). • Щелкните по клавише Add graphic line or polygon (добавить графическую линию или прямоугольник) на правой панели (седьмая сверху). • Обведите край платы, но помните, что нужно оставить небольшой промежуток между краем зеленого поля и краем РСВ. • Запустите проверку правильности разводки щелчком по Pcb Design Rules Check. • Щелкните по Test DRC. Ошибок быть не должно. • Щелкните по List Unconn. Не должно быть обрывов соединений. Рис. 15.21. Проверка правильности разводки Сохраните файл щелчком по Files -Save board Чтобы увидеть плату в трех измерениях, щелкните по 3D Display — 3D Display. Вы можете мышкой крутить и поворачивать РСВ. Действительно. Это так. Можно поставить и программу Wings 3D. У меня эта программа установлена в домашней папке. Так уж получилось, но это работает. Мне так понравилось крутить и поворачивать трехмерную модель платы, что тут же захотелось создать что-нибудь очень большое и длинное, что-нибудь с огромным количеством деталей. Попробуйте - удивительно здорово! Рис. 15.22. Трехмерный вид платы
На этом для меня, честного дилетанта, приключения с руководством по работе с программой KiCAD закончились. Мне захотелось, что я и собираюсь сделать, повторить это в других программах разводки печатных плат. Никогда бы не подумал, что это такое увлекательное занятие. Может быть, сменить профессию? Мои приключения закончились. Но не думайте, что они закончились для профессионалов (рис. 15.23). Ваша плата готова. Чтобы отправить ее производителю, вам нужно сгенерировать GERBER файл. Щелкните по files — plot. Выберите GERBER в качестве plot format (формат чертежа) и щелкните по plot Для просмотра файлов GERBER перейдите в основное окно KiCad. • Щелкните по клавише Gerb View. Рис. 15.23. Формирование файла Gerber После появления окна просмотра сгенерированного файла (в менеджере проекта последняя клавиша инструментальной панели) следует: • Щелкните по files — Load GERBER file. • Выберите файл с именем tutel^Copper.pho, и затем open • В выпадающем меню выберите Layer2. • Повторите шаги, но на этот раз загрузите tutel component.pho. • Повторите шаг выбор слоя, но с выбором ЬауегЗ, затем шаги чтения файла, но с загрузкой tutel SlkSCmp.pho • Таким путем вы можете проверить слои, которые будут отправлены для производства.
<= GERBVIEW (2OD6-OB-2B) Files Параметры Miscellaneous Помощь L. № IXJ Z 32 X 6.1000 Y 5,100C|x 6,1000 у 5.1000 Inch | Рис. 15.24. Окно просмотра файлов, отправляемых в производство Но и это еще не все для профессионалов. Они должны уметь: Есть обширная библиотека шаблонов цоколевки (footprint library) в KiCad, однако вы можете обнаруж отсутствие нужного вам компонента в библиотеке KiCad. Следующие шаги описывают создание шаблона поверхностного монтажа в KiCad. • Чтобы создать новый РСВ шаблон (footprint) вернитесь в Pcbnew. • Щелкните по Open Module Editor {пятая слева клавиша) на верхней инструментальной панели. • Этим открывается Module Editor (редактор модулей). • Щелкните по select working library (первая слева клавиша — выбрать рабочую библиотеку) на верз панели. • Для этого упражнения выберите библиотеку connect. Grid 50.0 Dimensions 3D Display Помощь ^0,9 СО ©С? И е юс Х2.4ОЮ Y-5,101 х 2,41100 у-5,100С Inch Рис. 15.25. Окно редактора модулей программы KiCAD
• Щелкните по клавише New Module (новый модуль, пятая слева) на верхней инструментальной панели. • Введите MYCONN3 в качестве module reference (ссылка модуля). • В середине экрана появится этикетка MYCONN3. • Под этикеткой (не ниже, а именно ПОД) будет VAL**. • Щелкните правой клавишей мышки по MYCONN3u переместите выше VAL**. • После щелчка правой клавиши мышки по VAL** выберите Edit Text Mod (режим редактирования текста) и переименуйте в SMD. • Установите по display (по show в моей версии). • Выберите Add Pads (добавить площадки) на правой инструментальной панели. • Щелкните по экрану для размещения площадки. • Щелкните правой клавишей на новой площадке и щелкните по edit. • Установите «PadNum» в «1», «Pad Size X» в «0.4», «PadSize Y» в «0.8», «Pad Shape» в «Red», a «Pad Туре» в «SMD». Щелкните no OK. Pad properties Pad Num 1 Pad Net Name Pad PositionX ("1: 0,2000 Pad PositionY ("): 0,1500 Pad SizeX ” 0,0400 Pad SizeY ("): 0.0800 DeltaX('): DeltaY ("): Drill Shape: Cirde Oval Pad DriDX ("): 0,0320 Pad DrfflY ("): Pad Orient: ? 0 90 -90 180 User Pad Shape: Cirde Oval * Rect Trapezoidal Pad Type: Standard у SMD “ Conn Hole Mechanical OffsetX (") 0.0000 OffsetY ("): 0,0000 <9qk X Отмена Layers: Copper layer ✓ Comp layer Adhesive Crop Adhesive Copper ✓ Solder paste Crop Solder paste Copper Silkscreen Crop Silkscreen Copper ✓ Solder mask Crop Solder mask Copper E.C.O.l layer E.C.O.2 layer Draft layer Рис. 15.26. Диалог настройки свойств площадок Последовательность операций получается несколько иной при вводе в диалоге значений. До изменения Pad Shape - Rect изменить размер по Y не получается, поскольку по умолчанию - это окружность (Circle). Но это не мешает закончить эту часть создания своего шаблона. • Щелкните по Add Pads вновь и разместите еще две площадки • Переместите этикетки MYCONN3 uSMD так, чтобы это было похоже на то, что ниже. • Щелкните по клавише Add graphic line or polygon (третья сверху) на правой инструментальной панели. • Нарисуйте контур разъема вокруг компонента. • Щелкните по Saxe Module in working library (сохранить модуль в рабочей библиотеке, вторая клавиша слева) на верхней инструментальной панели. • Вы можете вернуться в Pcbnew и щелкнуть по клавише Add modules (добавить модули, четвертая клавиша сверху) на правой инструментальной панели. • Щелкните по экрану, и окно имен модулей появится во всплывающем меню. • Выберите модуль MYCONN3 и поместите на вашу разработку РСВ.
•—> Zhome7vIadlmlr/4D-electronlc/partl5 pcb/klcad prolect/tiitel/tutel.brd Files Параметры Dimensions Miscellaneous Postprocess 3D Display Помощь □ H < & t вИ «1 si й П<3 Edges Pcb " g ft 0 3 ©0 MYCUNN3 ill. SMD- Library- /usr/share/kicad/modules/display. mod Z36 X 6.9000 Y 4.0000 |x 6,9000 у 4.0000 Inch ,Add Modules- Рис. 15.27. Добавление собственного модуля в редакторе pcb программы KiCAD На этом руководство заканчивается с советом пользоваться файлом помощи. Несколько описаний я, следуя совету, переведу и добавлю в Приложение. Менять профессию я. пожалуй, подожду. А теперь мне не терпится посмотреть другие программы разводки плат. Начнем по порядку. О системе gEDA я уже рассказывал. Теперь попробую нарисовать что-нибудь в ее pcb программе, а краткое руководство по работе с ней тоже переведу, как смогу, и добавлю в Приложение. gEDA. Начать работу я предпочитаю в менеджере проектов с создания нового проекта. о gEDA Suite - pcb_proj.prj Q Ш Ю проект Файл Дей стви е Ин струм ент Окно Модули Файлы । - Documentations -Schematic diagrams - РСВ and VLSI layouts -Simulations w Рис. 15.28. Создание нового проекта в менеджере проектов gEDA Собственно, можно было сейчас не приводить рисунка менеджера проектов gEDA, но мне хотелось подчеркнуть схожесть системы с предыдущей, чтобы убедить себя в том, что предыдущий опыт будет полезен. Вас в этом я убеждать не хочу, рано. Затем, следуя процедуре, нарисуем схему в редакторе Gschetn:
<= gschem Г J Ж IXJ Рис. 15.29. Схема в редакторе Gschem И обратимся к руководству: Все устройства, которые вы хотите получить в РСВ должны иметь Uref атрибуты. Цоколевки (footprint), которые вы хотите использовать в РСВ, обозначаются атрибутами footprint. Будьте внимательны с атрибутами Uref пате, значение и устройство не должны содержать символа пробела. Сохраните вашу работу (name.sch, например) и введите в командной строке (терминала): gsch2pcb name.sch В моей версии есть возможность в менеджере проекта использовать пункт Create РСВ layout меню Действие, но в случае неудачи, становится не очень понятно, в чем проблема. Можно повторить команду, которая появляется в окне сообщений, в терминале. Но яснее всего, мне кажется, сообщение, которое появляется после использования вышеприведенной команды в терминале. В основном, я нашел сообщения о неправильных атрибутах footprint. Появится сообщение об ошибке, если будут найдены некоторые пробелы в упомянутых атрибутах, а РСВ файлы будут созданы. Если name.pcb не существует, файл будет создан вместе с name.net. Если файл уже существует, будет создан файл с именем name. new.pcb. Он будет содержать только новые устройства, которые были добавлены в схему с момента последнего сохранения файла name.pcb. Загрузите данные компоновки в буфер, чтобы включить новые footprint в файл РСВ. Файл netlist также обновляется, так что перечитайте его. После исправлений атрибутов footprint (приведения их в соответствие с перечнем, указанным в руководстве) появляются файлы с расширением .net и расширением .pcb, которые я попробую использовать в программе РСВ. Для этой цели в менеджере проекта я выбираю файл с расширением .pcb, выделяю его, а затем использую пункт Open меню Действие (в данном случае единственный пункт в разделе). Этим я получаю открытое окно редактора РСВ с тем, что называется, вероятно, ratsnest.
РСВ Ale Edit View Settings Select Buffer Connects Info Window Unnamed 3460 00 3490 00 mH sute Style Signal Power Fat Skinny vlew=component grid =10 0.0 45 AR llne=10.0 vla=40.0(20.0) dearance=10.0 text= 100% buffer #1 Рис. 15.30. Окно редактора программы РСВ Если бы ни «заморочки» с шаблонами элементов я даже постарался выбрать элементы, имеющие атрибут — то я посчитал бы. что все идет великолепно. Но идет, как идет, хотя не совсем ясно, что делать дальше. На всякий случай выбираю в основном меню File загрузку файла netlist (Load netlist file). Указываю в открывшемся окне файл с расширением .net. Загружается, поскольку появляется окно РСВ netlist. Затем, на всякий случай, я в основном меню Select последовательно выбираю пункты Select all objects и Disperse all elements. После перемещения всех элементов ближе к середине рабочей области редактора можно рассмотреть, что было выбрано для создания платы. А если выбрать в основном меню Connects пункт Optimize rats nest, то увидеть соединения между элементами. Но попытка выбрать все элементы и использовать авторазмещение элементов (Select - Auto place selected elements) приводит к тому, что часть элементов скрывается из поля зрения. Приходится возвращаться назад с помощью отката (Edit — Undo last operation), но в несколько шагов. □ Щ IX Skinny • vlew=component grid=10 0:0 45_/R llne=10.0 vla=40 0(20 0) dearance=10 0 text=100% buffer=#l Рис. 15.31. Вид элементов, размещаемых на плате в окне редактора На левой инструментальной панели есть клавиша с надписью ROT, что, я подозреваю, означает Rotate (поворачивать), и есть клавиша с надписью SEL (возможно, select — выбор). Попробуем покрутить элементы, подвигать, перетаскивая с помощью мышки обычным образом. Так покручивая, да потаскивая, я добиваюсь некоего приемлемого варианта расположения элементов в
рабочей области редактора РСВ. А, нажав Auto route all rats в пункте основного меню Connects, я получаю нечто похожее на вариант разводки платы. Если бы я использовал программу для реальных целей, а я не изготавливаю печатные платы, я остановился бы на предыдущем этапе без автоматической разводки платы, поскольку все соединения выглядят достаточно удобно для их использования в целях облегчения монтажа. Я распечатал бы полученный вид с экрана в качестве рабочего эскиза платы. Но, если кто-то занимается наведением полного порядка в своей разработке, включая получение печатной платы красивого вида, то ему придется продолжить разводку. Если до применения авторазводки в нижней части правой инструментальной панели установить опцию Fat для Route Style (стиль разводки), то проводники печатной платы получаются действительно толстыми, становится легче различать дорожки на обеих сторонах платы. РСВ I-' 05 Е Рис. 15.32. Вид разведенной платы в программе РСВ Мне хотелось бы как-то разделить две стороны печати, но нет большого желания перебирать все опции и настройки программы. Думаю, что при реальном использовании программы в качестве вспомогательного средства при своей работе, можно найти большее. Но так всегда получается только при реальном интересе к программе, с появлением опыта. Если вам по каким-либо причинам не достаточно полученного вида платы, то программа имеет еще множество опций, есть меню настроек с множеством опций и параметров: РСВ Preferences U ffi Й Increments Library Layers Colors Use separate window for command entry Alternate window layout to allow smaller horizontal size Alternate window layout to allow smaller vertical size Put layout name on the window title bar Backups If layout is modified at exit, save into Лтр/РСВ %i save 60 Seconds between auto backups to Лтр/РСВ.%i.save * (set to zero to disable auto backups) 5 Number of commands to remember in the history list 3 v Auto pan speed c9qk Рис. 15.33. Диалоговое окно настроек программы РСВ
А я спешу посмотреть другие программы. Я ни разу не видел, как работает программа Eagle. Я никогда о ней и не слышал. О ее существовании узнал от тех, кто ею пользуется. Посмотрим, что она из себя представляет. Программу я устанавливаю из rpm-пакета, и она устанавливается быстро и легко. Но первый запуск приводит меня в отчаяние. Я уверен, что после того, как скачал программу, я делал пробный запуск, поскольку даже после удачной установки программа может требовать для своей работы дополнительных библиотек. А проблема в том, что требуется регистрация копии или лицензия на ее использование. Есть выбор — свободное использование, или лицензированное. Я, естественно, выбираю свободное использование, но программа не находит файла ключа регистрации eagle.key. Обычно, если требуется регистрация, я это делаю, но недавно переустанавливал систему, и мог забыть сохранить этот файл. Я начинаю кипятиться, ругать себя нехорошими словами, но, поостыв, пытаюсь искать этот злополучный файл. Он не отыскивается, как я ни ругаю себя растяпой, склеротиком и т.д. Тогда я пытаюсь перебрать всю электронную почту в своих почтовых ящиках и в почтовых клиентах — как правило, я сохраняю полученные после регистрации письма. Но такого письма нет. Немного успокоившись, я пытаюсь разобраться в том, что установлено на компьютере, и к своему удивлению нахожу файл с расширением .key, но под другим именем в том месте, где ему и положено быть. На всякий случай я его переименовываю, запускаю программу еще раз, теперь появляется окно, где можно ввести регистрационные данные или прочитать их с дискеты, но дискета не может быть прочитана иначе, чем с административными правами root. Проделываю эту операцию под root, и выясняю, что достаточно вместо дискеты указать место, где лежит файла ключа. После этого все становится на свои места, в домашней папке создается соответствующая папка для программы и программа запускается. control Panel - EAGLE 4.16rl Light Q ffl К File View Options Window Help Name______________________[ t Libraries ♦ Design Rules t User Language Programs + Scripts * CAM Jobs - Projects - eagle [ Description___________[ Libraries Design Rules User Language Programs Script Files CAM Processor Jobs : pcb_pro) ♦ __। examples Empty Project Examples Folder EAGLE Easily Applicable Graphical Layout Editor version 4.16И for Linux Light Edition Copyright (c) 1988-2008 CadSoft Д1 rights reserved worldwide Single User License #6Z191 E641E-LSI FOR EDUCATIONAL USE ONLY! Registered to: Freeware license for "non-profit" and evaluation purposes. See the file ’freeware.key" or the URL Рис. 15.34. Первый запуск программы Eagle А я спешу посмотреть другие программы. Я ни разу не видел, как работает программа Eagle. Я никогда о ней и не слышал. О ее существовании узнал от тех, кто ею пользуется. Посмотрим, что она из себя представляет. Программу я устанавливаю из rpm-пакета, и она устанавливается быстро и легко. Но первый запуск приводит меня в отчаяние. Я уверен, что после того, как скачал программу, я делал пробный запуск, поскольку даже после удачной установки программа может требовать для своей работы дополнительных библиотек. А проблема в том, что требуется регистрация копии или лицензия на ее использование. Есть выбор - свободное использование, или лицензированное. Я, естественно, выбираю свободное использование, но программа не находит файла ключа регистрации eagle.key. Обычно, если требуется регистрация, я это делаю, но недавно переустанавливал систему, и мог забыть сохранить этот файл. Я начинаю кипятиться, ругать себя нехорошими словами, но, поостыв, пытаюсь искать этот злополучный файл. Он не отыскивается, как я ни ругаю себя растяпой, склеротиком и т.д. Тогда я пытаюсь перебрать всю электронную почту в своих почтовых ящиках и в почтовых клиентах — как правило, я сохраняю полученные после регистрации письма. Но такого письма нет. Немного успокоившись, я пытаюсь разобраться в том, что установлено на компьютере, и к своему удивлению нахожу файл с расширением .key, но под другим именем в том месте, где ему и положено быть. На всякий случай я его переименовываю, запускаю программу еще раз, теперь появляется окно, где можно ввести регистрационные данные или прочитать их с дискеты, но дискета не может быть прочитана иначе, чем с административными правами root. Проделываю эту операцию под root, и выясняю, что достаточно вместо дискеты указать место, где лежит файла ключа. После этого все становится на свои места, в домашней папке создается соответствующая папка для программы и программа запускается:
1 Schematic - /home/vladimir/eagle/pcb_proj/pcb_proj.sch - EAGLE 4.16rl Light Lj tfl ud Рис. 15.35. Рисунок схемы в программе Eagle Программа имеет встроенное средство проверки правил электрических соединений, которая предупреждает об отсутствии соединений в точках программы, где я не определил, провода соединяются или только перекрещиваются. На инструментальной панели есть точка соединения, с помощью которой я исправляю оплошность. После сохранения файла с помощью клавиши верхнего инструментального меню Board (пятая слева) я перехожу в редактор РСВ с созданием соответствующего файла. Olii 2 Board - /homejvladimir/eagle/pcb proj/pcb proj.brd - EAGLE 4.16rl Light File Edit Draw View Tools Ubrary Options Window Help Рис. 15.36. Подготовка к разводке в редакторе РСВ программы Eagle И этот этап работы очень похож на аналогичные действия в предыдущих программах. В свободной версии на данном этапе авторазмещение, похоже, не работает, но левая инструментальная панель очень похожа на панель редактора схем, так что можно использовать клавишу Move (перемещение) для расположения элементов. Для этой же цели, размещения, служит клавиша Rotate (вращение). Расположив все детали на плате, можно включить режим авторазводки (Tools —Auto...).
2 Board - /home/vladimir/eagle/pcbproj/pcbproj.brd - EAGLE 4.1€rl Light =. Id3 Ud File Edit Draw View Tools Library Options Window Help | Autorouter: 100.0% finished Рис. 15.37. Разведенная плата в программе Eagle Если по какой-то причине вы не хотите использовать Linux, вам привычнее работать в Windows, если установка программ разводки печатных плат, работающих в обеих операционных системах, вам кажется затруднительной, или если вы уже используете в своем творчестве программу Multisim или CircuitMaker, то согласен, лучше использовать программы разводки, работающие с этими EDA. Вместе с программой Multisim работает программа Ultiboard. Нарисуем в Multisim ту же схему, что и раньше, что позволит сравнить результаты. О том, как рисуется, как проверяется работа схемы, я рассказывал в предыдущих главах, так что не стану повторяться. Насколько быстро входят в жизнь привычки. В Linux я привык располагаться на нескольких рабочих столах. Перейдя сейчас в Windows, я машинально пытаюсь щелкать по панели, чтобы расположиться с полным комфортом. Говорят Vista (или говорили) будет иметь такую возможность. Надеюсь, почитатели Windows, если это будет так, оценят это. После вальяжного перемещения в обширных рабочих пространствах Linux, попадая в Windows, я вспоминаю коммунальные квартиры с их уютной теснотой. Правда, испробовав в Linux новые графические возможности - посматривая как выключаемое окно «горит ярким пламенем», или, поворачивая куб рабочих столов - я решил не приобретать новых привычек. Вернемся, однако, в Multisim, о которой у меня сохранились очень теплые воспоминания по работе со стародавней версией, использованной мной для иллюстрации первой книги.
j'®’ Circuit! Multisim [Circuit!] __________________________________________________________________________________________________________________UtslMl |^| File Edit View Place 5mdate Transfer Tools Reports Options Window Help _| g| X| S О - И Ф Q Ф Is & & 4 JJ’ €Г <« f* -In Use List-- " ? ™ Рис. 15.38. Схема, предназначенная к разводке, в программе Multisim В разделе Transfer основного меню есть пункт Transfer to Ultiboard, открывающий путь к программе разводки печатной платы. По дороге выяснилось, что не все корпуса есть в библиотеке. Попробуем с этим разобраться по мере продвижения вперед. Как и другие программы, Ultiboard после входа предлагает рабочее пространство и соединенные между собой детали. Рис. 15.39. Переход в программу Ultiboard из Multisim Попытка автоматически разместить элементы не увенчалась успехом, пришлось расставлять все по своим местам вручную. При этом выяснилось, что конденсатор, единственный в схеме, оказался «не того калибра». Однако после замены конденсатора автоматическая разводка быстро справилась с работой. Получилась такая плата.
J? pcb proj 1 - Uttiboard - [pcb_proj] О File Edit View Place Design Tools Options A> toroute/place Window Help Jcoppei Top -|в|>1 А Л И ~7] | Automat c (lOJOOOO mil) D j B' lf5 F 3 Pcb_Pro)J О pcbjxoj О pcbjrcj P Projects I Layers | For Help, press Fl Рис. 15.40. Разведенная плата в программе Ultiboard Можно создать новый проект и сохранить в нем все эти файлы. Можно посмотреть трехмерное изображег платы. I'*"f -Tlltiboard - [3D View - 3D View 1] Ble Edit View Tools Options Wrdcw Help зе Projects | Layers | tJ pcbjro) I 3D View - 3D View 11 - _✓! pcb_projj О pcbjjroj 3D View 1 Рис. 15.41. Трехмерный вид платы в программе Ultiboard Из того, о чем я собирался рассказать в этой главе, осталось рассказать о программе TraxMaker, парной ] программе к CircuitMaker. Схему не меняем. Хотя в предыдущий раз я забыл добавить резистор обратной связи, сейчас добавлю.
|Л CircuitMaker [UNTITLED OCT* 250%] File Edit View Cpbcrs Macros Srmiahcr Wave Help g D & Q * + А Л О Q Hl III «1> К ? €>V ► Browse | Search | Hotkey || Place | % Inductors + In-huneris ♦ Linear IDs ♦ MOSFETs ♦ Math Functions ♦ ModUators ♦ Motors t MiAffers ♦ OPAMPs ♦ Optical devices ♦ Original Symbols • Passive Corrpcnerte * Phase-Locked Loops ♦ Power Supplies * References * Regulators ♦ Relays - I Resistors ♦ Resistor Packs - Reirstns ReaMcr ResistorA SemiRe istor SemiResistoiA Vat Resistor VaiResrtoA у Model | Description R3 lk Рис. 15.42. Схема в программе CircuitMaker Первая неприятность, с которой я сталкиваюсь при генерации pcb netlist — отсутствие, вероятно, у операционного усилителя данных о корпусе. Полагаю, это идеальный усилитель, у которого корпуса, естественно, нет. Действительно, файл, прочитанный в TraxMaker, содержит все детали, кроме операционного усилителя. Я могу добавить корпус, но соединения тогда придется проводить вручную. Посмотрим, что можно сделать. На вкладке менеджера (левая панель) написано Search (поиск). Если ее открыть, то есть окошко, куда можно вписать название компонента, и куда я вписываю LM. Клавиша Find открывает список элементов, среди которых есть LM318. Удаляем идеальный усилитель, добавляем реальный. У реального есть выводы питания, которые соединяем с разъемом J1. Генерируем netlist... генерируем netlist... Не генерируем netlist! То есть, генерируем, но в нем пропущены все детали. Возвращаемся к редактору схемы, удаляем все соединения, делаем новые. Генерируем netlist... Предыдущий результат. С идеальным усилителем получалось лучше. Попробуем создать новый проект и начать все с самого начала. Зациклило мою демо-версию. Не помогает ни идеальный усилитель, ни добавление корпуса. Хорошо, что первую, случайным образом получившуюся версию разводки, я сохранил. Авторазводка не работает (еще бы она работала), но руки есть, есть и результат. _ 3 X |&= TraxMaker - (D:\tie 3\4D-electronic\partl5 pcbtcircuit projtpcb proj.PCBl бс File Edit View Options Place NetH: Route Help bottom Layer А<Гз450 у 3150 mil’ Рис. 15.43. Разведенная плата в программе TraxMaker
Я, пожалуй, даже рад последней неудаче - даже такой вариант намного удобнее, чем рисовать все на бумаге. На этой оптимистичной ноте завершим главу, чтобы начать новую.
Глава 16. «Вальс под водопадом» или продолжение главы 3 Пока я работал над пунктом программы «Закупка оборудования», я наткнулся на просьбу, показавшуюся мне интересной в плане дальнейшей работы. Приведу ее: Доброго времени суток. Вот, решил освоить новую область электроники. Собрал программатор, программу вот эту: PORTB EQU 6 TRISB EQU 86H OPTREG EQU 81H STATUS EQU 3 CARRY EQU О RPO EQU 5 MSB EQU 3 /номер бита для крайнего слева светодиода CLRF PORTB /погасить все светодиоды BSE STATUS,RP0 ,-выбратв регистровый банк 1 CLRF TRISB 80H ,-установитв все разряды PORTB на вывод информации MOVLW 0AH MOVWF OPTREG 80H ,-настроитв предварителвный делителв в WDT на (1:4) ВСЕ STATUS,RP0 ,-выбратв регистровый банк О INCE PORTB, F ,-включитв крайний справа светодиод ВСЕ STATUS,CARRY ,-очиститв флаг CARRY LEFT SLEEP ,-подождатв таймаута WDT ("watchdog" таймера) RLE PORTB, F / сдвинут в содержимое индикатора влево BTFSS PORTB,MSB /достигли крайней левой позиции? GOTO LEFT ,-если нет - цикл RIGHT SLEEP ,-подождатв таймаута WDT RRF PORTB, F ,-сдвинут в содержимое индикатора вправо BTFSS PORTB,0 /достигли крайней левой позиции? GOTO RIGHT /если нет - цикл GOTO LEFT /начатв новый цикл END Шил pony-prog, после прошивки все ОК. Вставляю в панельку, не работает. Биты конфигурации RC- генератор, WDT - включен. Собрал схему в PROTEUSE- все работает. Программатор все единички-нолики выдает честно, помогите, очень хочется подружиться с сим устройством. Программатор куплен. Программатор, естественно, не рассчитан на работу с программой KTechlab. Поэтому опробую я его с той программой для Windows, которая прилагается к нему. Следуя указаниям, настраиваю программу и, прочитав hex-файл, полученный ранее, записываю его в микросхему PIC16F628A. Запись и проверка проходят хорошо. Программатор работает, программа его хорошо поддерживает. Перемещаюсь в Linux и пробую записать микроконтроллер из программы KTechlab. Перебор всех совместимых программаторов не дает желаемого результата, что заставляет меня поискать что-нибудь по программаторам, работающим с программой. Есть программатор (или программа), которая называется prog84. Я скачиваю ее, устанавливаю на компьютер. Теперь KTechlab обнаруживает программатор prog84. Я делаю попытку записать, и программа, хотя по недосмотру я оставил тип контроллера неправильным, поправляет меня, сообщив, что обнаружен контроллер PIC16F628A! Даже это обнаружено. А вот запись не идет. Это очень огорчает меня. Можно сослаться на возможность раздельной работы, после компиляции программы использовать программатор с собственной программой. В прошлый раз при работе с MPLAB так и получилось. Программа писалась, отлаживалась и компилировалась в MPLAB, а программировался контроллер в программе PonyProg2000, хотя есть программаторы для непосредственной работы в MPLAB. Но довольно дорогие. Сейчас очень хочется, наконец, получить возможность использовать все в одной упаковке. Эта идея так раззадорила меня, что отыскиваю схемы, которые должны работать с программой KTechlab (по определению), выбираю самую простую (скорее самую дешевую), отправляюсь в магазин «Чип и Дип» за внеплановыми закупками. Можно заказать все необходимое в почтовом агентстве «Десен», бывший посылторг, и мне удобнее было бы сделать заказ по Интернету, но разве я могу ждать целую неделю, а то и две, пока получу бандероль по почте!? Если вы не живете в Москве, и не заходите в магазин, подобный «Чипу и Дипу» за всякой мелочью, вроде куска макетной платы, панельки под микросхему, резисторов-транзисторов, я вам завидую. Стоишь посреди этого великолепия, чего только нет, глаза разбегаются, «в зобу дыханье сперло», и ты невольно начинаешь выскребать из карманов все, что в них есть денежного. Наваждение.
Но все проходит, когда кончаются деньги, и ты счастливый и нетерпеливый, несешься домой (мысленно, а физически едва плетешься в метро), чтобы скорее включить паяльник, и паять, паять, паять... Вспоминая, что я рассказывал об организации своей работы для начинающих, хочу им сказать: «Все, что написано выше, нужно вычеркнуть. Не читайте этого. Я вам расскажу отдельно, как это все было»: А было так. Тщательно спланировав порядок действий, я выбрал из всех схем, которые нашел, несколько, по моему мнению, должных работать с программой KTechlab. Составил спецификацию для каждой из схем, внес схемы и спецификации в проект, добавил в план работ пункты по закупкам и монтажу. Кроме этих пунктов, я добавил еще один — «Разводка платы для программатора». Я не буду делать печатную плату, но рисунок поможет мне легче и быстрее спаять программатор на макетной плате. Когда по плану подошло время закупок, я купил все необходимое, сделал разводку платы, напечатал ее на принтере, и приступил к монтажу. Вот как все было. Схему программатора я выбрал под названием JDM picprogrammer, для которой понадобилась утилита pieprog (или программа для работы с физической частью программатора). После установки на компьютер этой утилиты, мне становится понятно, что программа KTechlab «видит» именно утилиту, а не физический программатор. Но и с моей самоделкой ни pieprog, ни KTechlab не работают. Вероятно, всем понятна мера моего огорчения: В данный момент я вижу несколько вариантов продолжения: продолжить работу с раздельными программами; или собрать новую схему из серии JDM; или попытаться понять, в чем проблема, но поиск может оказаться долгим путем к успеху. Размышляя об этом, я вспоминаю свою неудачу при работе с программой MPLAB, когда я так и не смог осуществить стыковку программы с программатором. Кроме программы для работы с контроллером на платформе Windows я пробовал осуществить это с версией Piklab для Linux, и тоже без успеха. Вспомнив об этом, я устанавливаю программу Piklab, подключаю к компьютеру самодельный программатор, и к своему удивлению, и следом радости, вижу, что программа прекрасно работает с программатором. Я меняю его на тот, что купил, и он тоже прекрасно работает. Оба работают при выборе программатора JDM Classic. Кстати, для программы Piklab можно использовать бесплатную версию компилятора языка «С» фирмы Hi-Tech для платформы Linux. Бесплатная версия имеет ограничения по памяти, но работает с контроллером PIC16F628A (как с моделью PIC16F627A). Великолепно! Утилита pieprog позволяет программировать контроллер из командной строки. В Linux это означает, что команду можно подать из терминала. Я пробую несколько раз команду записи, и обнаруживаю, что если добавить опцию стирания перед программированием, то запись проходит. Я возвращаюсь в программу KTechlab, в разделе настойки (Settings) есть пункт Configure KTechlab, где, в свою очередь, есть возможность выбрать программатор, или добавить свой. Именно это я и делаю.
Рис. 16.1. Настройка подключения программатора в программе KTechlab Собственно, я только добавляю опцию erase, переписав все остальное из настроек по умолчанию. Теперь, хотя и с заявлением, что запись прервана, запись на мой самодельный программатор, похоже, идет. Для проверки этого я стираю контроллер в программе Piklab, вставляю его в панельку оставшейся от прежних экспериментов макетной платы с тремя светодиодами на выводах портов, и. включив питание, вижу их непрерывно горящими. Возвращаюсь к тестовой программе в KTechlab, записываю ее в контроллер — простейшая программа, под управлением которой светодиод должен мигать раз в секунду. Переношу контроллер на макетную плату, и с удовольствием наблюдаю, как он весело мне помигивает. Еще больше меня радует, что и купленный мной программатор, теперь прекрасно работает с программой при тех же настройках. Сейчас, поскольку я заговорил о программе Piklab, я добавлю о ней несколько слов. о Piklab Q ffi Е) File Edit View Project Build Programmer Debugger Tools Settings Help м *№ &® Рис. 16.2. Запуск программы Piklab Direct Programmer (Parallel Port) ' GPUtils * II Как во многих программах и системах, лучше всего создать новый проект (Project - New project), дав ему имя и место, где он будет располагаться. Затем, нажав клавишу на верхнем инструментальном меню (New Source File) создать новый файл программы. Для использования компилятора языка «С» следует внести изменения в конфигурацию программы Piklab. Рис. 16.3. Изменение конфигурации для работы с языком «С»
После предварительной подготовки можно писать программу на «С», что вам не понадобится, если вы предпочитаете ассемблер. newlife -/home/vladimir/4D-electronic/NewYear/newYear pic/piklab work/newlife.c -Piklab □ S IS File Edit View Project Build Programmer Debugger Tools Settings Help @D0 й t й 3 0 ® о f 1® О « i Э ’ Project Watch ® newlife.c ^include "picl6f62xa.h" Adefine bitset(var,bitno) ((var) #define bitclrlvar,bitno) ((var) 3 maint) { unsigned mt k; CHCON = 0x07; TRISA = OblllllllO; TRISB - Oblimill;. bitclr(PORTA,G);. bltclrlPORTA,1); bitdr(P0RTA,2); repeat: for (k=6; k<45000; k**); bitset(PORTA, 0); for (k=0; k<45000; k+4-); bitclГ(PORTA, 0); goto repeat: | jp newlife - Device 16F627A # Registers - Sources £newlife.c 1 « (bitno)) //компараторы выключены //Мб выход //все RB на вход //Мб-М2 В НОЛЬ //"пустой" цикл для временной задержки //выставить на Мб высокий уровень //выставить на Мб низкий уровень //повторить ещё раз - Q Compile Log Program Log ©Breakpoints Line: 1 Col: 1 Direct Programmer (Parallel Port) Р1СС Lite Compiler Рис. 16.4. Программа на языке «С» в Piklab В этом месте возникают «правовые» проблемы. Проект не желает работать с компилятором «С». Мой компьютер считает, что у него есть права на все, а я свои права на работу с файлами егце должен доказать. Чтобы не затягивать работу, я меняю сеанс, захожу как root (администратор компьютера) — теперь я готов поговорить о правах - если что-то будет не по мне, сотру (в порошок). Вновь запускаю программу и открываю файл с программой на «С». new_one - /home/vladimir/4D-electronic/final_newYear/new_one.c - Piklab File Edit View Project Build Programmer Debugger Tools Settings Help «a s о « . Projed | Watch | new one - Device 16F627A # Registers & Sources Q new one.c ( ^include "picl6f62xa.h" #define bitset(var,bitno) ((var) |- ^define bitclr(var,bitno) ((var) &= E)main() ( unsigned int k; CHCON = 0x07; TRISA = 0b11111110; TRISB 0Ы1111111;. bitclr(PORTA,0) bitClГ(PORTA,1); bitdr(P0RTA,2); repeat: for (k=0; k<45000; k++); bitset(PORTA, 6); for (k=0; kc45000; k++); bitclr(PORTA, 0); goto repeat; 1 « (bitno)) ~(1 « (bitno))) //компараторы выключены //МО выход //все РВ на вход //Мб-М2 в ноль //"пустой" цикл для временной задержки //выставить на Мб высокий уровень //выставить на Мб низкий уровень //повторить ещё раз Compile Log Program Log ©Breakpoints Line: 1 Col: 1 Direct Programmer (Serial Port) PICC Lite Compiler ▼ Рис. 16.5. Новый запуск программы с правами root Вновь приходится указать компилятор в свойствах проекта и настройках программы.
Рис. 16.6. Настройка программы для работы с компилятором «С» После этого можно включить проект на компиляцию (Build — Build Project). Compile File 3 Build Project ® Qean Proiect | Watch newone - Device 16F627A # Registers Sources ’picl6f62xa.h" «define bitset(var,bitno) ((var) «define bitclr(var,bitno) ((var) ElmainO { |= 1 « (bitno)) &=-(!« (bitno))) unsigned int k; CMCON = 0x07; TRISA obiniino; TRISB = №11111111;. bltdr (PORTA, 0) bitclr(PORTA,1); bitclr(PORTA,2); //компараторы выключены //RAG выход //все RB на вход //RA6-RA2 в ноль repeat: for (k=6; k<450ee; k++); bitset(PORTA, 0); for (k=G; k<45O00; k++); bitclr(PORTA, 6); goto repeat; //"пустой" цикл для временной задержки //выставить на RAG высокий уровень //выставить на RA6 низкий уровень //повторить ещё раз ™ ijo * о Compile Log Program Log Q Breakpoints I ; Line: 1 Col: 1 Direct Programmer (Serial Port) ▼ PICC Lite Compiler ▼ Рис. 16.7. Запуск проекта на компиляцию После удачной компиляции проекта создаются все необходимые файлы, в частности, hex-файл.
new one - home/vIadimir/4D-electronic/final_newYear/new_one c - Pikla File Edit View Project Budd Programmer Debugger Tools settings Help -3) ® О i «1 Project| watch new_one = Device 16F627A ^Registers = Sources т Generated <finew_one.as Oust [J Memory Map ©Hex File @Disassembly Listing 1 new_one.c | ^include "picl6f62xa.h" «define bitset(var,bitno) ((var) |= «define bitclr(var,bitno) ((var) & El main() { unsigned int k; CMCON 0X07; TRISA = 0Ы111111О; TRISB = Obllllllll;. bitclr(PORTA,6);. bitdrfPORTA,1); bitclr(PORTA,2); repeat: for (k=0; k<45006; k++); bitset(PORTA, 0); for (k=0; k<45GG6; k++); bitclr!PORTA, 0); goto repeat; } II 1 « (bitno)) ~(1 « (bitno))) //компараторы выключены //RAG выход //все rb на вход //RAG-RA2 в ноль //"пустой" цикл для временной задержки //выставить на RA6 высокий уровень //выставить на RA6 низкий уровень //повторить ещё раз 3 Compile Log Program Log । Q Breakpoints Parsing coff file: /home/vladimir/4D-electronic/final newYear/new one.cof used used used ! used i used Program space Data space i EEPROM space ID Location space Configuration bits 2Ah ( 42) ot 400h words ( 4.1%) 2h( oh( Oh ( Oh ( 2) of BOh bytes ( 1.1%) 0) of BOh bytes ( 0.0%) 0) of 4h bytes ( 0.0%) 0) of Ih word ( 0.0%) Line: 1 Col: 1 Direct Programmer (Serial Port) » PICC Lite Compiler ▼ Рис. 16.8. Создание hex-файла компилятором hex-файл можно сразу загрузить в программатор, который тоже следует задать в свойствах программы. Для этого следует открыть hex-файл. SE3Q0 <*» ti Cl Project | watch | а ® о i 4. » » а # newone о Device 16F627A Registers о Sources ^newone.c - Generated (finewone.as О List О Memory Map @ Disassembly Listing Code Protected Q new_one.c f new one. Code memory ▼ 14-bit words - mask: OxBFFF 0000:01X0 О1Л1 2ВП9 0008: 0010: 0018: 0020: 0028: 0030: 0038: 0040: 0048: 0050: 0058: 0060: 0068: 0070: 0078: Configuration Bits ▼ 14-bit words - mask: Ox3FFF 2007:21FF Details... Watchdog timer: WDT | Enauied (uxuuu'ti Program Log | Breakpoints used used used • used » used 2Ah ( 42) of 400h words l 4.1%) 2h( Oh ( Oh ( Oh ( Program space Data space i EEPROM space ID Location space Configuration bits *** Success *** Parsing coff file: /home/vIadimir/4D-electronic/final_newYear/new_one.cof 2) of BOh bytes ( 1.1%) Oof 80h bytes ( 0.0%) 0) of 4h bytes ( 0.0%) 0) of Ih word ( 0.0%) I. Checksum: oxOCAD Direct Programmer (Serial Port) PICC Lite Compiler Рис. 16.9. hex-файл, открытый в программе Piklab Поскольку компилятор не позволяет работать с полной памятью контроллера, я компилирую программу, как программу для микроконтроллера PIC16F627A, отчего попытка записи приводит к появлению предупреждения. Waning Plklaf Read rd does not match the specified device name ”16F627A’.
Рис. 16.10. Предупреждение при записи о несоответствии контроллера Я нажимаю клавишу Continue, чтобы продолжить запись, и она продолжается. Остается только записать слово конфигурации, для чего я прочитываю содержимое памяти контроллера, а затем меняю слово конфигурации на 2П8 (что отображается как 2118), и записываю все в контроллер. new_one - - Piklab _ о х File Edit View Project Build Programmer Debugger Tools Settings Help > M 13 © SSiQU tUkv «Э -’ l «» & V & # ’ > f Project Iwatch 1 newone - Device 16F627A Registers (• Sources ®new_one.c (? Generated (Pnewone.as О List [J Memory Map ©Hex File @ Disassembly Listing gnew_one.c f new one hex Q <Read> I Code memory ’ 14-bit words - mask: 0X3FFF 0000;QIAO 01A1 2ВП9 3FFF 3FFF 3FFF 0008:3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 0010:3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 0018;3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 0020;3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 0028:3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 0030:3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 0038:3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 0040:3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 0048:3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 0050:3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 0058:3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 0060:3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 0068:3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 0070:3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 0078:3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF Code Protected 3FFF 3FFF П 3FFF 3FFF L 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF - 3FFF 3FFF » Configuration Bits ▼ 14-bit words - mask: Ox3FFF 2007:2118 Details... Watchdog timer: WDT Disabled (0x0000) ^Compile Log V Program Log ] (^Breakpoints Verify memory. Configuration Bits Programming successful Reading device memory... Read memory: Configuration Bits Read memory: User IDs Read memory: Code memory Read memory: Data EEPROM Reading done |Checksum: ОхОСбА Direct Programmer (Senal Port) Рис. 16.11. Запись слова конфигурации в микроконтроллер При работе с ассемблером программа использует набор программ gputil (описание можно найти в Приложении). Следовательно, можно создать все необходимое для работы с отладчиком gpsim. Хотя я не опробовал работу в ассемблере, но подозреваю, что компиляция в этом случае даст все необходимые файлы для отладки. Многие программы для работы с микроконтроллерами имеют длинные списки программаторов, с которыми работают, имеют дополнительные возможности для настройки программатора. Но не всегда удается «безболезненно» подобрать схему простого программатора. Проверив работу программатора «на физическом уровне» с программами, о которых я упоминал, я хочу привести схему этого программатора. Но предварительно добавлю, что, покупая детали к нему, я забыл купить стабилитрон на 13 вольт, указанный в схеме. Ехать еще раз в магазин из-за одной детали не хотелось. Найти что-то подходящее в моем «хламовнике» не удалось. В обход этой неприятности я использовал последовательное включение двух светодиодов (в прямом включении) и стабилитрона на меньшее напряжение. Оказалось, что так много лучше - при записи и чтении микросхемы светодиоды показывают, что обращение к микросхеме идет. Схему я приведу в оригинальном виде:
RS232 outputs are current limited - protects PIC if inserted wrong --CSERIAL-3 RBS CSERIAL-7 ^£-CSERIAL-5 VDD OSCi SERIAL-1 CSC 2 MCLR\ <SERIAL-4 <SERIAL-8 RB7 RB6 RB5 RB4 RB3 RB2 RB1 RBO 6 vss D5 Й 5.1V D5T -----И- DNI T0CKI/RA4 RA3 RA2 RA1 VSS RAO PIC1 6C84P Рис. 16.12. Схема простейшего программатора для программ Piklab и KTechlab Теперь можно вернуться к прерванному проекту, благо новогодние праздники неумолимо приближаются. Итак. Если вдуматься, то тестовая программа, немного доработанная, решает и основную задачу - достаточно заставить гореть два светодиода из трех, а третий погасить, меняя порядок погасших светодиодов. Если затем включить все три светодиода, и повторить эту часть программы для другой группы (для трех других выводов микроконтроллера), то задача будет решена полностью. Я не хотел бы вам портить удовольствие решить эту задачу самостоятельно, тот, кто этого хочет, может просто отложить книгу в сторону и продолжить самостоятельную работу, но я хотел бы завершить проект, иначе останется неприятный осадок на душе. Лучше пусть будет «Вальс под водопадом!» /home/vladlmlr/4D-electronlc7NewYear/newYear_plc/newYear3.nowcode - KTechlab File Edit view Project Tools Settings Help Pin RA2 ▼ State low Flow Part i- Common o Start OEn<^ [> Subroutine Sub Call -T Embed t Functions Delay : Keypad S Seven Segment 2 3 Й>1 В = I/O Read from Port Wnte to Port 3»Test Pin State -SSet Pin State - Variables ^Comparison Assignment 1 Unary I- Loops S Рог fAwhile ( 'Repeat QinewYeari.flowcode Q newYear3.microbe f J newYear3.asm newYear3 hex з □ newYear3.flowcode Q Messages [v] Oscilloscope Рис. 16.13. Продолжение работы над программой в KTechlab Не забудьте, добавив блоки установок выводов, соединить блоки между собой. И обратите внимание на панель меню, где появились окошки Pin и State. Именно в них задается номер вывода и его состояние. Кроме того, есть два момента, которые могут носить частный характер, получаться только у меня, а у вас выглядеть
иначе - при попытке работать с программатором программа просит, чтобы ее запустили под root'oM, главным администратором компьютера. Это несложно сделать из терминала командой su -с KTechlab. Можно, я думаю, изменить это, задав необходимые права пользователю, но сейчас мне не хочется отвлекаться на это, я запускаю программу из терминала. И вторая частность, при запуске компиляции у меня лучше получается, если выбрать опцию по умолчанию для отображения только на экране, и только после этого сохранить файл с соответствующим расширением (не забывая включить опцию добавления файла в проект). Проделав все трансляции файлов, программу можно вновь запустить для отладки в gpsim. £3 Я Терминал П 0220 □ Source Browser □ Breadboard [Cur... США | [] □ И Рис. 16.14. Отладка программы с управлением тремя светодиодами в gpsim После проверки работоспособности программы можно вернуться в программу KTechlab для программирования контроллера. Что я и делаю. Программирую контроллер. Вставляю его в панельку на макетной плате. И... на несколько дней застреваю. Все светодиоды загораются, но ничего другого не происходит. Я тщательно, как полагаю, перепроверяю все этапы работы. Но программа не желает работать. Тогда я решаю вернуться к началу. Я записываю простейшую программу — включить светодиод, выключить. Все светодиоды включаются, но ни один не выключается. Экспериментируя с разными вариантами, я замечаю, что программа KTechlab записывает конфигурацию микроконтроллера по умолчанию, и эта конфигурация не совпадает с моей. Позже я нахожу вариант изменения конфигурации в ассемблерной части программы, где есть строка конфигурации микроконтроллера, но мне удобнее сделать это иначе, используя программу Piklab, в ней же я стираю микроконтроллер перед записью из KTechlab. Возможно, есть более удобные варианты, но мне сейчас не до поиска «изящных» решений, кстати, касающихся и запуска симулятора непосредственно из программы KTechlab. Сознаюсь, я не проявляю должного упорства, довольствуюсь тем, что запускаю gpsim отдельно. И при запуске gpsim я получаю отображение правильной работы программы. Осталось только выяснить, почему физически микроконтроллер не работает. Микроконтроллер, с которым я работаю, я использовал ранее для окончательной проверки программных решений. Ему очень досталось при этом - перепрограммировал его я, думаю, более 500 раз, не единожды вставлял в панельку «с точностью до наоборот», несколько раз умудрялся вставить со смещением выводов. И сейчас у меня остается только одно решение - купить новый микроконтроллер, хотя бы только для того, чтобы дописать эту главу. На этом решении я останавливаюсь. Покупаю новый микроконтроллер PIC16F628A. Программирую. Переставляю на макетную плату. Включаю питание и ... И новый контроллер ведет себя так же, как старый. Нахожу старый самодельный программатор, работающий с программой PonyProg. Нахожу старый hex-файл простейшей программы «включить светодиод, выключить». Программирую контроллер. Вставляю в панельку макетной платы... На это уходит еще день работы, а точнее отчаянного непонимания происходящего. И пока это происходит, я расскажу, с чем я столкнулся. Но пусть это останется между нами, не рассказывайте об этом никому. Я измерял напряжение питания и напряжения на выводах, подключенных к светодиодам. Ничего, что явно
привлекло бы мое внимание, не обнаружил, и, мне кажется, только от отчаянного положения, в котором я оказался, я начинаю «теребить» контроллер в панельке. И, то ли мне это показалось, то ли это было в действительности, но светодиод в какой-то из моментов мигает. Это и наводит меня на мысль проверить, а есть ли соединение между ножками контроллера и светодиодами? Его нет. Причина в дефекте макетной платы. Она двухсторонняя с металлизацией отверстий. Хотя пайки с обеих сторон хорошие, припой, видимо, не заполняет отверстия с нарушенной металлизацией. Мало этого, когда я паял панельку на макетную плату, мне пришлось, из-за неудобного расположения контактных площадок, отогнуть ножки у панельки, после чего они не проходили отверстия насквозь, а только ложились на контактные площадки сверху с одной стороны платы. Повторная пайка дефектных соединений разгоняет туман мистики и возвращает меня к нормальному состоянию души. Но никому об этом не рассказывайте. Вставляю в панельку макетной платы, и наблюдаю, как мигает светодиод. Но теперь я сталкиваюсь с другой проблемой. Я реализую «движение» огоньков с помощью трех светодиодов, описывая движение в части программы с помощью цикла for, который есть в программе KTechlab. Один цикл работает. Но, когда я хочу добавить второй цикл, в котором движение происходит в обратную сторону, первый цикл работает, затем светодиоды гаснут, и зажигается тот светодиод, который я добавляю в программу для отладки и обозначения конца работы программы. Программная отладка, с помощью отладчика gpsim, показывает правильную работу программы. Но затем я пытаюсь переустановить все программы, обновить их, и заканчивается все тем, что и gpsim перестает показывать правильную работу программы. Во всей этой сумятице есть и некоторая доля пользы, я выясняю, что правильнее было бы использовать не установку бита порта, а запись в порт некоторого числа (в данном случае десятичного), которое отображало бы желательное состояние портов. Например, чтобы зажечь светодиод на выводе R0, а остальные погасить, я использую запись 1. Для аналогичного варианта, но с выводом R1, я записываю 2. Таким образом, теперь можно реализовать и первоначальную задумку, то есть, заставить двигаться не зажигание единственного из тройки светодиода, а заставить перемещаться гашение светодиода. Но пока я не могу заставить программу выполнить два цикла с изменением направления. Я пытаюсь это сделать, переходя к работе под root'ом. Я вновь удаляю все программы, с которыми сейчас работаю, и устанавливаю их заново. Ничто не помогает, и мне остается только написать письмо разработчикам с призывом о помощи. Однако писать письмо — «Помогите мне, у меня ничего не получается», бессмысленно. Нужно четко описать проблему, для чего я вновь начинаю создавать программу, проверять ее с помощью gpsim, программировать контроллер, и проверять его работу «физически». И к своему удивлению я обнаруживаю, что светодиоды движутся сначала в одну сторону, а затем меняют направление движения, завершая это включением всех трех светодиодов. Что произошло, и почему не работало, не знаю. Программа, которая заработала, выглядит так: /home7vladlmlr/4D-electronlc/NewYear/newYear_plc/newtest/newTest.flowcode - KTechlab File Edit View Project Tools Settings Help И.О Q Q 6х l^i» kJ & v Flow Part I newTest.flowcode I Г) new £ e © £) Messages P Oscilloscope newTest.flowcode тпосэпопе:-------------- burning fuses, 1 locations. done. Programming failed newTest.flowcode Q newTest. microbe [J newTest.asm newTest.hex 'v| PIC Settings Advanced.. RBI RB2 RBZ RAI RAO RA7 RA6 RB7 RB6 ( Start £ Write 1 to PORTA у [ Delay for 100m sec~ /write 2 to PORTA / [ Delay for 100m sec~ / Write 4 to PORTA j I I Delay for 100m sec ВЕК Рис. 16.15. Последняя версия программы с «двусторонним» движением Второй цикл точная копия первого, но начинается с записи 4, затем 2 и, наконец, 1. Проверка в gpsim тоже наводит меня на мысль изменить количество циклов при отображении в сторону уменьшения, после чего и в gpsim отладка тоже работает. Чтобы окончательно удостовериться в правильной работе всего, я попробую добавить еще один цикл в программу. И убеждаюсь, что программа работает. Мне остается добавить, что для программирования микроконтроллера в программе KTechlab, я выбираю (на иконке с ракетой) пункт PIC
(upload), что вызывает появление диалогового окна: PIC Programmer - KTechlab 'X Program: ipicprog2 J1 T1 Port 'dev/ttySO Microprocessor- Family 'PIC14 pj Micro [P16F628 ]j 1Burn | [ Ж Cancel | Рис. 16.16. Диалоговое окно подключения к программатору в KTechlab После щелчка по клавише Burn предварительно стертая микросхема программируется, хотя заканчивается сообщением о проблемах с программированием. Здесь, возможно, следует что-то добавить или изменить в настройках программы pieprog, но мне удобнее пока не обращать внимания на это. внеся минимальные изменения в настройки: Configure - KTechlab PIC Programmer Programmer Configuration Program: cicorogZ Add... ] Remove picprogZ cannot be found. -commands Initialization: Read: picprog —cucput=%file —pic=%port —device=pic!6f628 Write: ,e —burn —input=%file —pic=%port — device=pic!6f628 Verify: Blank Check: I Erase: [picprog —burn —erase — pic%device | The following strings will be replaced when the command is run: ♦ % port - Port that the programmer is connected to ♦ %device - PIC device ♦ %file - File to read from or write to Default port: /dev/ttySO 1 ’ © Help —J । Defaults”^ tip LjK~] | V* Apply X Cancel Рис. 16.17. Настройки программатора в программе КТесЫаЬ Для стирания микросхемы и записи слова конфигурации я использую программу Piklab, которая радует меня работой с самодельным и покупным программатором, и играет в данном случае роль удобной графической оболочки для программы программирования. Перед записью программы я стираю микросхему. Затем записываю нужные коды в программе КТесЫаЬ, затем прочитываю эти коды уже в программе Piklab, меняю слово конфигурации, ниже надписи Configuration bits. Мне нужно записать 3F18 для работы встроенного тактового генератора. После введения этого слова конфигурации в окно, в нем высвечивается 2118, но, если щелкнуть по клавише Details, то появится расшифровка всего этого:
& dear - - Piklab | СИ VSJ File Edit view Project Build Programmer Debugger Foois Settings Help M- ® ® B>Qr й Оя 3 Project watch ф clear - Device 16F628A Registers - Linker Script «default» Sources Q <Read> j Code memory ▼ 14-bit words - mask- Ox3FFF 0000:3078 1683 0085 1283 0185 0008:0820 3C0A 1C03 2829 3001 0010:3082 00A3 30DD 00A4 2082 0018:0AA2 3082 00A3 30DD 00A4 0020:0AA1 0AA2 3082 00A3 30DD 0028:2808 3007 0085 0AA1 3006 0030:2082 3001 00A0 0820 3C0A 0038:0085 0AA1 0AA2 3082 00A3 0040:3002 0085 0AA1 0AA2 3082 0048:2082 3001 0085 0AA1 0AA2 OO5O:00A4 2082 OAAO 2833 3007 0058:00A2 3018 00A3 2082 3001 0060:1003 287F 3001 0085 0AA1 0068:30DD 00A4 2082 3002 0085 007O:00A3 30DD 00A4 2082 3004 0078:3082 00A3 30DD 00A4 2082 0186 3001 ooao Code Protected 0085 0АА1 0AA2 3002 0085 0AA1 2082 3004 0085 00A4 2082 OAAO 00A2 3018 00A3 1C03 2854 3004 30DD 00A4 2082 00A3 30DD 00A4 3082 00A3 3ODD 0085 0AA1 3006 OOAO 0820 3C0A 0AA2 3082 00A3 0AA1 0AA2 3082 0085 0AA1 0AA2 ж OAAO 285E 3007 ▼ Configuration Bits »• 14-bit words - mask: Ox3FFF 2007:211 b| Details... Watchdog timer WDT Disabled (0x0000) ▼ » .0 Compile Log Program Log Q Breakpoints । и Verify memory: Data EEPROM ’ж | Blank checking done Reading device memory.. Read memory: Configuration Bits Read memory: User IDs Read memory: Code memory Read memory: Data EEPROM ж Reading done ▼ Checksum: 0x51951 Direct Programmer (Serial Port) GPUtils ▼ Рис. 16.18. Задание нужного слова конфигурации в программе Piklab Теперь микросхему можно перенести на макетную плату, убедиться в работоспособности программы, которую вы создали, и использовать микроконтроллер в своей разработке. Окончательно тестовый проект в программе КТесЫаЬ выглядит так: /home/vladlmlr/4D-electronlc/NewYear/newYear_plc/newtest/newTest.flowcode - KTechlab Q ffi (Zi File Edit View Project Tools Settings Help №00 ъ WZZ£ У plow Part Ё I и Common „ CJEnd c [> Subroutine о 7> Sub Call E -ф- Embed 8 i- Functions V PIC Settings (| Delay t 2- Keypad iS S Seven Segment j s MO $ Read from Port -K Write to Port 3»Test Pin State -I Set Pin State - Vanables ^Comparison Assignment Unary S For While ’Repeat RA2 RA3 RA4 RBO RBI RAI RAO RA7 RA6 RB7 RB6 RB5 Advanced... ( Start ) ('v'forx = 1 tolO / Write 7 to PORTA / I (yforx = Ito 10 ~ [ write 7 to PORTA / v|for x = 1 to 10 Write 7 to PORTA / 1“ C™D Q newTest flowcode ____ type 'picprog —copying' for details. Erased and removed code protection. Burning program memory, 137 locations, burning data memory. 0 locations, burning id words. 0 locations. burning fuses. 1 locations, done. *** Programming failed ***_______ «1 _ [J Messages [y] Oscilloscope Рис. 16.19. Окончательный вид тестового проекта в программе КТесЫаЬ Теперь можно вернуться к началу проекта. Можно применить два цикла for, один из которых осуществит движение в одну сторону групп светодиодов «водопада» на трех выводах микроконтроллера, например, RA0, RAI, RA2. А второй цикл осуществит движение огоньков в другую сторону для групп светодиодов «вальса» на других выводах контроллера, например. RA3, RA4 и RA5. Если снабдить выводы микроконтроллера ключевыми транзисторами необходимой мощности, мы получим окончательный вариант реализации проекта на микроконтроллере. Думаю, вам будет интереснее самим довести разработку до конца, используя программу КТесЫаЬ в качестве великолепного средства разработки. Для плавного затухания светодиодов, возвращаясь и к самому началу книги, и к началу этой главы, можно предложить решение - заменить цикл горения последовательностью состояний включено-выключено (импульсную последовательность), то есть, режим широтно-импульсного управления. И есть множество
вариантов, как осуществлять движение, оставлять ли все гирлянды, и какие из них, гореть при движении других гирлянд. Все эти варианты лучше опробовать после создания гирлянд и первой проверки работы схемы уже не на макетной плате, а в полной сборке. Я только советую не впаивать микросхему контроллера, а установить его на панельку. При макетировании микросхему не следует слишком плотно вставлять в панельку. Я устанавливаю микроконтроллер едва-едва, чтобы только ножки входили в гнезда, а вынимаю небольшой отверткой, используя ее как рычаг для того, чтобы подцепить микросхему с одной стороны, затем с другой, и так, пока микросхема полностью не будет извлечена из панельки. В готовое устройство микросхему можно будет установить основательно. Но это после окончательного выбора режима работы гирлянд. Зато, когда вы разберете елку, можно будет извлечь микроконтроллер, использовать его для других экспериментов, или других схем, а к следующему празднику придумать новый вариант горения гирлянд. Хотелось бы еще разобраться с работой отладчика в программе KTechlab. И попробовать работу с языком «С» в этой программе, но мой план работы и так сильно изменился. Не стоит его перегружать. Пора остановиться. Когда год назад я экспериментировал с микроконтроллером PIC16F628A, меня очень огорчало, что мой самодельный программатор не работает с программой MPLAB, а в Linux с программой Piklab. Теперь у меня есть два программатора, работающих с этой чудесной программой, для которой есть и компилятор языка «С», но это уже совсем другая история. Завершается год. И мне остается добавить: С НОВЫМ ГОДОМ! И счастливого Рождества!
Приложения. Руководства, включенные в приложения - мне не хочется называть их переводами, чтобы не порочить славную гильдию переводчиков, поэтому назовем их конспектами - представлены, в основном, фрагментарно. Причина этого в большом объеме, практически, каждого руководства. Например, Qucs Work Book - это действительно целая книга. Пытаясь сделать некие «разумные» выборки, я осознал, что это будет основной трудностью: в каждом руководстве мне все кажется важным, нужным и, главное, интересным. В итоге «разумность» выборки свелась к случайному выдергиванию разделов. Для тех, у кого есть доступ в Интернет, есть возможность взять полные конспекты руководств на моем сайте (http://vgololobov.narod.ru) или, что значительно лучше, обратиться к оригинальным руководствам, которые были получены с программами, или поискать их на сайтах производителей. Дополнительную трудность создавали форматы оригиналов, html и pdf, что заставило меня частично переделывать графику - то есть, включать программу, собрать схему, запускать симуляцию схемы и получать графический вывод, который я старался приблизить к оригиналу, насколько это получалось. А получалось то, что получалось, и я надеюсь, что это лучше, чем ничего.
Д, gEDA - GPL Electronic Design Automation Руководство пользователя Документация базируется на разработке версии gEDA датированной 2001.07.22 Авторы Этот документ был написан членами группы gEDA. Он базируется на оригинальной документации, опубликованной на web-странице gEDA: • Ales Hvezda - «gschem Руководство пользователя». • Ales Hvezda - «net= attribute мини-howto». • Stefan Petersen - «Как установить keymapping в gschem». • «Руководство по созданию символов компонент». • «Список мастер-атрибутов для gEDA» • «РСВ графический интерфейс». Данная версия документации была сформатирована Piotr Miarecki. Обзор gEDA - это коллекция свободных инструментов, используемых для разработки электрических схем, создания прототипов и производства. Инструменты разработаны, в основном, для Linux машин, но было сделано многое к тому, чтобы gEDA работала на других UNIX платформах, и на Windows. Текущая версия gEDA предназначена для помощи в работе над разводкой плат (РСВ layout). Она содержит механизм создания или загрузки схем gschem, и коллекцию полезных средств для экспорта схем в другие весьма полезные инструменты. Есть также приложения, ассоциированные с проектом gEDA, которые могут быть использованы с ним: РСВ- компоновка pcb, аналого-цифровой симулятор gnucap, обозреватель сигналов gwave, gerber-обозреватель gerbv, Verilog ядро Icarus Verilog, VHDL ядро FreeHDL. gEDA включает также фильтры импорта/экспорта для обмена файлами со свободными и коммерческими приложениями, такими как Spice, PADS, OrCad, Protel и другими. Системные требования Нет специальных требований к оборудованию, но для эффективного использования необходимо иметь мышку и цветной монитор с разрешением 800*600 и 256 цветами. gEDA может быть использована на Linux (ядро 2.0 или выше) или Windows (только 32-бит: 95, 98, Me, NT, 2000). Программные требования различны в обоих случаях. Linux Требуемые внешние пакеты: • X-Windows (XFree 3.3.6 или выше). См. http://www.xfree86.org • GIMP Toolkit (Gtk / Glib 1.2.3 или выше). См. http://www.gtk.org • Guile Scheme Interpreter (Guile 1.3.4 или выше). См. http://www.gnu.org/software/guile Дополнительные внешние пакеты: • Stroke Translation Library (LibStroke 0.3). См. http://www.etla.net/libstroke • Graphics Manipulation Library - gEDA версия (libgdgeda 1.8). Требуются две дополнительные библиотеки: libpng и zlib 1.1.3. Можно взять с ftp://www.seul.org/pub/geda/dist Windows Требуемые библиотеки: • wininet.dll • shlwapi.dll gEDA может быть установлена также на многих других UNIX-подобных платформах, таких как: FreeBSD, NetBSD, HP-UX, IRIX, SunOS, Solaris. Это, однако, полностью не тестировалось. Установка
Процедуры установки различны для Linux и Windows. Так что они описаны раздельно. Linux Перед установкой gEDA вы должны иметь следующие файлы: Makefile geda-docs-20010722.tar.gz geda-gnetlist-20010722.tar.gz geda-gschem-20010722.tar.gz geda-gsymcheck-20010722.tar.gz geda-symbols-20010722.tar.gz geda-utils-20010722.tar.gz libgeda-20010722.tar.gz Эти файлы могут быть загружены с: ftp: //ftp. seul. org/pub/geda/devel/20010722 Перенесите все архивы (tarballs), перечисленные выше, и распакуйте их в одну директорию, используя команду: for file in *.tar.gz; do tar -xzf file; done Теперь запустите инсталляцию: make install gEDA будет установлена в вашу домашнюю директорию в новую папку geda. Опытные пользователи могут изменить установки инсталляции PREFIX в Makefile и переменные PATH и LD_LIBRARY_PATH, как удобнее. Windows Перед установкой gEDA вы должны иметь следующий файл: geda-cygwin-20010722c4.exe Этот файл может быть загружен с: ftp: //ftp. seul. org/pub/ge da/ de v el/win3 2 Теперь запустите установку просто двойным щелчком мышки по ней в менеджере файлов. Редактор схем Этот раздел описывает редактор схем, используемый в комплекте средств gEDA. Его основное назначение - графический ввод схемы или блок диаграммы. Редактор схем также является редактором символов для системы gEDA. Это возможно, поскольку формат схем и формат символов совершенно один и тот же. Запуск Запуск редактора схем непосредственный, как только вы установили его на вашу Linux или Windows систему. Первый шаг - установка средств gEDA. Этот шаг описан в предыдущей части. Для запуска редактора schematic в вашем Linux только введите в любой строке управления: gschem Альтернативно в вашей Windows системе вы можете нажать Start - Programs - gEDA - gschem. При запуске приложения вы можете использовать несколько опций: • -h - перечисляет разные флаги командной строки. • -q - включение режима выхода; этот режим выключает все предупреждения, примечания и сообщения. • -v - включение множественного режима (verbose); этот режим дает столько откликов для пользователя, сколько возможно. • -г filename - задает файл ресурса; обычно редактор схем ищет системный файл ресурсов, затем
пользовательский, и, наконец, файл в текущей директории (все файлы прочитываются один за другим); эта опция позволяет пользователю задать дополнительный файл ресурсов, который прочитается после всех других файлов. • -s filename - задает Guile скрипт, который будет выполняться при старте. • -о filename - задает имя файла для вывода postscript; этот аргумент командной строки полезен, когда запускается gschem из скрипта shell или Guile; имя файла может быть изменено через диалоговое окно print. • schematicl [... schematicN] - задает файл схемы (schematic), который нужно загрузить; если задано множество файлов, они читаются последовательно и располагаются на отдельных страницах; важно, чтобы схема(ы) завершала все опции (то есть, была последней). Например, взгляните на запуск схемы, которая пришла с gEDA: gschem schematic name.sch Используемые файлы Есть несколько файлов, которые использует редактор схем. Вот список и краткое описание каждого из них: • *.sch (файл схемы) Эти файлы содержат компоненты, сети, текст и иногда объекты примитивов (подобные линиям, окружностям, рамкам и т.д.). Схема не содержит выводов. Имена файлов схем должны следовать следующему соглашению: name_#.sch где: name - это текстовая строка, которая описывает, что содержит эта схема, _ # - это подчеркивание и число (как _1, _2, _7, _13, и т.д. ); это число используется для последовательности страниц в многостраничной схеме, .sch - это расширение схемы; важно, чтобы страницы схем имели это расширение. Файлы схем - чисто ASCII. gEDA не поддерживает каких-либо двоичных форматов. Формат файла схемы описан в документе gEDA File Formats. • *.sym (файл символов) Форматы файла схемы и символов идентичны. Редактор схем используется для создания файлов символов с тем же успехом, что и схем. Файлы символов содержат линии, окружности, рамки, дуги, выводы, текст и атрибуты. Соглашение для имен файлов символов: name-#, sym где: name - это текстовая строка, которая описывает, что представляет символ, - # - это дефис и число (подобно -1, -2, и т. д. ); число используется, чтобы символ имел одно и то же имя при разном содержании; это может быть множественное представление для резисторов, так что эти символы должны вызываться: resistor-1.sym, resistor-2.sym и resistor-3.sym, .sym - это расширение символов; важно, чтобы символы имели это расширение. • system-gschemrc, gschemrc (файлы ресурсов) См. Customizing / Resource files далее в этой части. • gschem.log (файл журналирования) Этот файл содержит информацию, сообщения об ошибках, предупреждения и сообщения производимые
редактором схем. Этот файл создается в рабочей директории. Такой подход позволяет пользователю распределить файлы журналирования между независимыми проектами. Интерфейс пользователя Есть несколько способов взаимодействовать с gschem. Gschem требует клавиатуры и мышки, и существует три пути инициализировать операцию или команду: • Использовать мышь для выбора меню выключения операции или • Ввести горячую клавишу(и) с клавиатуры или • «Вычеркнуть» подходящее (если поддержка вычеркивания доступна) Чтобы усложнить использование предмета, выбор операций меню ведет себя несколько иначе, чем ввод горячей клавиши. Большинство операций работают на текущем выделенном объекте(ах), следовательно вам нужно вначале выбрать объект, прежде, чем манипулировать им. Меню выбора операций обычно требует несколько больше (обычно щелчка мышки), чтобы реализовался выбор из меню. Операции с горячими клавишами подразумевают, что требуется ввод текущей позиции мышки. Это избавляет от дополнительного щелчка, если вы можете позиционировать мышь в нужном месте - нажмите нужную клавишу(и), и команда выполнится. Заметьте, что вы можете сделать так, чтобы и меню, и горячая клавиша вели себя одинаково. Посмотрите раздел о файле ресурсов, где найдете, как это сделать. В основном, взаимодействие с gschem явно формально (режимы, как ко манд а/ред актирование, похожи на применяемые в большом текстовом редакторе vi). Если вы выбираете операцию из меню, тогда вы переходите в соответствующий режим (как режим копировать/перемещать). Затем вы должны выделить точку привязки (или некую подходящую точку) для продолжения операции. Большинство команд меню ожидают, что объект уже выделен. Горячие клавиши также формальны по природе. Большинство горячих клавиш по умолчанию для разных команд требуют больше, чем нажатия на одну клавишу. Есть несколько, требующих единственной клавиши (подобно zoom in: «z» или pan: «х»), но, в основном, требуется нажатие двух клавиш. Например, для выполнения Файл - Сохранить вы должны ввести «f» и «s» (без кавычек) или Добавить - Строку: «а» и «1». Вы можете получить список горячих клавиш, выбрав Help - Hotkeys. Горячие клавиши определены в файлах ресурсов (system-gschemrc, -/.gEDA/gschemrc или ‘pwdVgschemrc). Посмотрите раздел о файлах ресурсов. Действия клавиш мышки в gschem, большей частью, конфигурируемы. Первая клавиша мышки всегда используется для выделения объектов или выбора точек. Эта клавиша не конфигурируется. Вторая клавиша мышки служит либо для копирования/перемещения (когда удерживается на объекте), либо для повтора последней команды, либо «вычеркивания» для выполнения команды. Третья клавиша мышки либо для панорамирования (когда удерживается при движении мышки), либо для вызова всплывающего окна диалога. Поведение второй и третьей клавиш мышки управляются через файл ресурса (см. раздел ниже). Термины страница и схема оба относятся к одному предмету (коллекция объектов, которые загружены и отображаются). Окно - это то большое окно, в котором схема отображена и обрабатывается. Операции с файлами New Window Открывает новое окно. Каждое окно полностью отделено от остальных окон. New Page Открывает новую страницу. Обычно эта страница будет называться untitled_N.sch, где N увеличиваемое число. Open Page... Открывает страницу с диска. Вызывается всплывающее окно диалога. Пожалуйста, посмотрите раздел ниже, где сказано, как использовать возможности диалогового окна. Close Page Закрывает текущую отображаемую страницу. Необходимо будет сохранить страницу, если она была модифицирована. Revert Page Закрыть и вновь открыть текущую отображаемую страницу. Приглашения сохранить текущую страницу не
будет, но будут отменены все сделанные изменения и открыта сохраненная на диске схема. Пользуйтесь с осторожностью. Save Page Сохраняет текущую страницу. Если страница называется untitled_N.sch (где N целое), тогда появится диалоговое окно Save As... Save Page as... Открывает диалоговое окно Save As... Щелчок no Save As сохранит текущую отображаемую схему. Отображаемая схема будет названа введенным именем. Save АП Безусловно сохраняются все схемы, загруженные в память. Print... Вызывает диалоговое окно Print. Пожалуйста, почитайте далее в соответствующем разделе об этом диалоговом окне. Write PNG... Вызывается диалоговое окно Write PNG. Вы можете посмотреть раздел, касающийся этого диалогового окна, где есть больше информации о нем. Заметьте, что вы должны установить libgdgeda (и все, что требуется по зависимостям), если вы хотите выводить изображения. Close Window Закрывает текущее окно. Если есть модифицированные схемы, появится диалоговое окно Are you sure. Щелчок по ОК приведет к тому, что все не сохраненные схемы будут потеряны. Quit gschem Похоже на команду Close window, но закрывает все открытые окна. Диалоговое окно Are you sure появится для каждого окна, которое содержит не сохраненные схемы. Page Manager Открывает диалоговое окно, которое позволяет вам выбрать страницы и увидеть различную информацию о страницах, загруженных в память. Посмотрите раздел об этом диалоговом окне. Page Next / Page Prev Эти две опции позволяют вам перемещаться по открытым страницам. Page Discard Форсирует закрытие текущей схемы. Если текущая схема НЕ сохранена, тогда данные навсегда теряются. Вам ничего НЕ предлагается, и вы НЕ предупреждаетесь, если вы модифицировали текущую отображаемую схему. Пользуйтесь с осторожностью. Полезно, если вы хотите быстро выгрузить схему. Добавление объектов Объект один из следующих: линия, окружность, вывод, рамка, шина, текст/атрибут и компонент. Компонент - это набор линий, окружностей, выводов, рамок, текста и атрибутов. Add Component Открывает окно диалога, которое позволяет вам поместить на схему компоненты из библиотек компонентов. Для установки компонента сделайте следующее: • Выберите библиотеку компонентов ( btw которой задан в файлах ресурсов, см. раздел ниже) из списка слева. • Выберите компонент из списка справа. • Переместите мышку в основное окно чертежа (вы должны увидеть контур). • Нажмите первую клавишу мышки для установки компонента. • Продолжайте удерживать первую клавишу мышки для размещения дополнительных образцов компонента. Если имя компонента уже выбрано, выделение и перемещение мышки в основное окно позволит вам поместить этот компонент вновь. Вы можете повернуть компонент перед его установкой щелчком средней клавиши. Каждый щелчок повернет компонент на 90 градусов.
Для завершения установки компонента нажмите последнюю клавишу мышки или клавишу ESC на клавиатуре. Пожалуйста, посмотрите раздел об окне диалога, где поясняются детали. Add Net Рисует сегмент сети. Если вы выбрали этот раздел на панели меню, тогда: • Нажмите первую клавишу мышки для начала рисования сети. • Нажмите первую клавишу мышки для окончания рисования сети. • Другая сеть начнет рисоваться от конечной точки предыдущей. • Нажмите первую клавишу мышки для окончания рисования этой сети и т.д. Нажмите последнюю клавишу мышки или клавишу ESC на клавиатуре, чтобы прекратить рисование сети. Если вы начинаете этот процесс нажатием горячей клавиши, тогда сеть рисуется сразу от последнего положения курсора, а затем ведет себя так же, как описано выше (исключая строку №1). После прорисовки сегмента сети (или сегментов) и прекращения процесса на последнем сегменте, вы автоматически переходите в режим выбора. Вы должны нажать add net вновь или нажать горячую клавишу для добавления других сетей. Вы можете удерживать клавишу control для рисования не ортогональных сетей. Только не забывайте, что вы не можете присоединять что-либо к середине не ортогональной сети. Прямоугольники в конце сетей - это соединительные элементы. Залитые прямоугольники означают оборванную сеть (не присоединенную к чему-либо). Залитые окружности - это центры соединений/пересечений. Эти элементы рисуются автоматически и служат индикаторами электрической связности. Смотрите раздел об электрической связности ниже, где информации больше. Add Bus В основе то же самое, что сеть, исключая то, что изображает шину. Шины - достаточно новое и много аспектное понятие, которое совершенно не определено, так что не забывайте об этом, когда используете шины. *3десь, в конечном счете, должно быть добавлено больше* Add Attribute... Вызывает диалоговое окно добавления атрибута. Это диалоговое окно используется ТОЛЬКО для добавления атрибутов. Оно не отображает и не работает с уже помещенными атрибутами. Атрибут - это ни что иное, как текстовый элемент, который имеет форму имя=значение (не должно быть пробелов слева и справа от пары имя-атрибут). Атрибут может быть либо откреплен, либо прикреплен. Чтобы добавить не прикрепленный атрибут сделайте следующее: • Выберите имя атрибута из выпадающего списка или • введите имя атрибута в окно ввода имени. • Введите значение для атрибута. • Установите любую из опций атрибута. • Щелкните Apply, и атрибут будет помещен на место. Если вы хотите прикрепить атрибут к объекту, тогда вначале выделите желаемый объект, а затем нажмите клавишу apply в add attribute. Текст станет желтым, что свидетельствует о прикреплении атрибута. Если вы щелкните по объекту, к которому прикрепили атрибут, прикрепленный атрибут должен выделяться вместе с объектом. Если вы выбрали Add - Attribute... из выпадающего меню, тогда вы не получите большего контроля, чем выбор места расположения атрибута (он располагается либо в нижнем левом углу объекта, либо в выбранном месте объекта). Однако если вы выполняете Add - Attribute, используя горячую клавишу, тогда текущее положение курсора станет точкой закрепления для атрибута. Вы не можете размещать неполные атрибуты (атрибуты без имени и значения).
Пожалуйста, обратитесь к разделу об атрибутах ниже за более детальной информацией, как использовать атрибуты. Add Text Открывает диалог добавления текста. Для этого: • Введите текст в поле ввода. • Нажмите клавишу Enter или щелкните Apply. • Переместите мышку в основное окно (появится контур текста, который будет следовать за мышкой). • Нажмите первую клавишу мышки для установки текста. Если вы оставите окно диалога добавления текста открытым, вы можете размещать тот же фрагмент текста вновь и вновь одним щелчком (или нажатием клавиши Enter) и перемещением мышки в основное окно. Текст, который установлен, будет автоматически переведен в верхний регистр. Обратитесь к разделу о файле ресурса ниже, чтобы узнать, как управлять этим поведением. Для завершения размещения текста нажмите последнюю клавишу мышки или на клавиатуре клавишу ESC. Если вы создали текст в форме name=value, тогда вы создали атрибут. gEDA позволяет основным атрибутам быть свободно размещенными (или не прикрепленными). Неплохо бы изменить цвет этих свободно размещаемых атрибутов на текущий цвет атрибутов (который также называется цветом прикрепленных атрибутов), чтобы обозначить, что этот элемент текста является атрибутом. Add Line Рисует линию таким же образом, как сети, со следующими исключениями: • Линия не имеет электрического значения. • Рисуется только единичная линия. • Вы можете рисовать линию до тех пор, пока находитесь в режиме рисования линии. Для прекращения растягивания линии нажмите последнюю клавишу мышки или клавишу ESC на клавиатуре. Add Circle Чтобы нарисовать окружность (выбирая Add Circle из меню): • Задайте центр окружности с помощью первой клавиши мышки. • Переместите мышку, чтобы увидеть контур окружности. • Нажмите первую клавишу мышки, чтобы завершить чертеж. Для рисунка окружности (с помощью горячей клавиши) выполните все то же самое, что выше, исключая задание центра окружности, он установится последним положением курсора при нажатии горячей клавиши. Для прекращения вытягивания окружности нажмите последнюю клавишу мышки или ESC. Add Arc Для рисования дуги (выбирая Add Arc из меню): • Задайте центр дуги с помощью первой клавиши мышки. • Переместите мышку и задайте следующую точку. Вытягивающаяся линия представляет радиус. • Появится диалоговое окно: задайте начальный угол (в градусах) и количество градусов дуги. • Нажмите ОК для завершения задания значений. Начальный угол может быть положительным и отрицательным. Градусы задаются с использованием стандартной «Картезианской» системы координат. Градусы дуги могут быть положительными и отрицательными. Для прекращения процесса (при растягивании радиуса) нажмите первую клавишу мышки или клавишу ESC, или нажмите клавишу Cancel в диалоговом окне аге. Add Pin Черчение выводов похоже на черчение сетей со следующими исключениями:
Вы можете рисовать выводы, пока находитесь в режиме рисования выводов. Для прекращения процесса прорисовки вывода нажмите последнюю клавишу мышки или клавишу ESC. Работа с объектами Большая часть этих операций - это режимы, оперирующие с текущими выделенными объектами. Прежде, чем вы сможете выполнить желаемые функции, вы должны выделить объекты, с которыми хотите работать. Undo / Redo Undo делает именно это - команда отменяет последние действия, которые изменяли схему. Вот как gschem реализует undo: в основном после каждого действия (включая zoom и pan) схема сохраняется на диске (в /tmp). Gschem очищает его за собой, когда вы выходите из системы. При аварийном выходе сохраненные файлы остаются в /tmp. Redo работает только после выполнения Undo. Вы можете отменить что-либо, а затем сразу выполнить redo. Однако если вы ничего не делали в промежутке, вы потеряете информацию для undo. Вы можете выполнять undo и redo сколько вашей душе угодно раз, вверх и вниз, пока не достигнете максимального уровня undo. Вы можете изменить поведение undo и redo изменением предопределений в одном из *gschemrc файлов. Загляните в system-gschemrс, где найдете больше информации. Select Mode Select mode - это начальные установки режима запуска gschem. В режиме select mode вы можете выбрать объекты. Вы может выделить объекты щелчком по ним. Если объект уже выбран, тогда щелчок по этому объекту будет сохранять их выделение. Если множество объектов перекрываются, тогда щелчок по одному пятнышку будет циклически проходить через объекты. Если вы удержите клавишу SHIFT и щелкните, вы можете выбирать и отменять выбор множества объектов. Выполнение этого с множеством перекрывающихся объектов приведет к циклическому выделению всех доступных для выбора объектов. Если вы удержите клавишу CONTROL и щелкните, вы можете включить и исключить объекты из списка текущего выделения. Для выбора множества объектов нажмите и, удерживая первую клавишу мышки, проведите ею до появления рамки выделения. Протащите мышку (рамку выделения), пока она не охватит объекты, а затем отпустите первую клавишу мышки. Объекты должны быть полностью охвачены рамкой. Использование рамки выделения требует некоторого опыта. Если какие-то объекты ранее были выделены, выделение снимается. Если вы удерживаете клавишу SHIFT, проводя рамку выделения, тогда вы добавляете объекты к уже выделенным. Объекты не могут быть удалены с помощью рамки выделения и удержания клавиши SHIFT. Если вы удерживаете клавишу CONTROL, проводя рамку выделения, тогда вы «переключаете» охваченные рамкой объекты. Если объект был выделен, тогда выделение с него будет снято, и наоборот. Если вы укажете на объект, который имел атрибуты, прикрепленные к нему, тогда эти атрибуты будут также выделены. Если вы хотите выделить только объект, вы должны снять выделение с атрибутов. Невидимые прикрепленные атрибуты также выделяются, когда вы указываете объект. Такое поведение удобно, если вы хотите манипулировать/изменять объект и все его атрибуты (перемещать/копировать объект полностью). Механизмы выделения не очевидны и требуют некоторой практики. Есть несколько трюков, так что обратите на них внимание, когда встретите. Edit... Позволяет вам редактировать: • Text - открывает окно диалога, который позволяет вам редактировать строку текста и размер. • Attributes - значительно более сложная версия того, что выше говорилось об атрибутах. • All attributes attached to a component - открывает окно диалога много-атрибутного редактирования. Для редактирования чего-нибудь:
Выберите элемент (текст/компонент) для редактирования. Выберите или нажмите горячую клавишу для Edit - Edit.. Сделайте требуемые изменения и нажмите ОК Заметьте, только один элемент будет редактироваться; редактирование большого количества текст/компонент не поддерживается (пока). Edit Text... Позволяет вам редактировать только текст, не обращая внимания, является ли текст атрибутом или просто строкой текста. • Выделите элемент текста для редактирования. • Выберите или нажмите горячую клавишу для Edit - Edit Text.. • Сделайте необходимые изменения и нажмите ОК Заметьте, только текстовый элемент будет редактироваться; редактирование большого количества текста не поддерживается (пока). Copy Mode Этот режим позволяет вам копировать текущие выделенные объекты. Для копирования объектов (выберите Edit - Copy Mode из меню): • Выделите желательный объект(ы). • Выберите Edit - Copy Mode из меню. • Выделите первоначальную точку для копирования (первая клавиша). • Переместите контур в выбранное место. • Укажите точку перемещения (первая клавиша). Копирование объектов с использованием горячей клавиши в режиме копирования практически такое же, как описано выше, за исключением начальной точки, которая выбирается автоматически, когда вы нажимаете горячую клавишу режима копирования. После окончания копирования вы автоматически возвращаетесь в режим выбора. Удерживание клавиши CONTROL, когда вы перемещаете контур, приведет к тому, что движение будет либо горизонтальным, либо вертикальным. Move Mode Move режим очень похож на режим сору (выше), исключая то, что вместо копирования вы перемещаете объекты. Delete Delete позволяет вам удалить объекты со страницы. Для удаления объектов: • Укажите желаемый объект(ы). • Выберите или нажмите горячую клавишу для Edit-Delete. • Объекты будут удалены немедленно. Пользуйтесь этим с осторожностью, поскольку undo здесь НЕТ! Rotate 90 Mode Режим вращения позволяет вам повернуть объекты на 90 градусов вокруг pivot/center точки. Чтобы повернуть объекты (выбрав режим Edit - Rotate 90 в меню): • Укажите желаемый объект(ы). • Выберите режим Edit - Rotate 90 в меню. • Укажите точку вращения (pivot) или точку центра (center) для поворота. Использование горячей клавиши для поворота похоже на написанное выше, исключая то, что точка центра будет последней позицией курсора при нажатии горячей клавиши.
Объекты будут поворачиваться на 90 градусов против часовой стрелки. Вы можете продолжать поворот объектов на 90 градусов, пока не получите требуемое их положение. Текст всегда остается справа вверху. Mirror Mode Mirror режим позволяет вам отразить объекты относительно горизонтальной оси. Для поворота объектов (укажите Edit- Rotate 90 Mode в меню): • Укажите желаемый объект(ы). • Выберите Edit - Mirror Mode в меню. • Укажите точку вращения для отражения. Отражение объектов с помощью горячей клавиши похоже на написанное выше, исключая то, что точка вращения будет последней позицией курсора при нажатии клавиши. Объекты отражаются относительно горизонтальной оси. Если вы хотите получить отражение относительно вертикали, вначале поверните объект(ы), затем отразите его, чтобы получить желаемое положение. Отражение встроенных компонент не поддерживается. Slot.. Slot... позволяет вам изменить slot (элемент связи) компонента с множеством слотов. Компонент должен поддерживать связь через слот (slotting), см. раздел Components/Symbols, где это описано подробнее. Для изменения слота: • Выберите желаемый компонент. • Укажите или нажмите клавишу для Edit - Slot... • Введите новый slot номер. • Нажмите ОК Slotting еще разрабатывается, чтобы исключить некоторые причуды. Color... Эта опция позволяет вам изменить цвет любого выделенного объекта (исключая компоненты). Для изменения цвета текущего выделенного объекта: • Выделите желаемый объект(ы). • Укажите или нажмите горячую клавишу для Edit - Color... • Появится диалоговое окно с выпадающим меню. • Укажите новый цвет. • Нажмите Apply. Изменение цвета скажется только после нажатия Apply. Окно диалога не изменит цвет по текущему объекту(ам) (то есть, оно только позволяет вам изменить цвет и не возьмет текущий цвет выделенного объекта(ов)). Вы можете покинуть окно диалога и выделить новые объекты, чтобы изменить их цвет нажатием Apply. Lock / Unlock Lock и unlock позволяют вам lock/unlock (блокировать/разблокировать) компоненты в схеме. Блокирование означает, что компонент не может быть выделен единственным щелчком. Это полезно для штампов и других компонент, которые не должны выделяться, поскольку могут быть другие объекты внутри их границ, а щелчок внутри компонента (штампа) будет дезориентировать. Для блокирования/разблокирования компонент: • Выделите желаемый объект(ы). • Укажите или нажмите горячую клавишу для lock/unlock Компоненты перестанут выделяться единственным щелчком. Для выделения блокированных компонент используйте рамку выделения. Это единственный путь для выделения блокированного компонента.
Вы можете блокировать и разблокировать регулярные объекты (линии/выводы/рамки...), которые удобны при черчении чего-нибудь, и объект продолжает оставаться таким. Только блокируйте его, и вам нет нужды думать о нем, когда вы щелкаете клавишей для выделения других объектов. Однако блокирование объекта не сохраняется в формате файла, так что если вы покидаете программу, блокированные объекты (линии/выводы/рамки...) разблокируются. А вот состояние locked/unlocked компонент сохраняется в формате файла. Line Width & Type... Это диалоговое окно позволяет вам управлять шириной и типом линий, рамок, окружностей и дуг. Это окно диалога пока еще в разработке. Выделите объект, а затем выберите эту опцию, чем откроете окно диалога, которое позволит вам установить ширину линии, тип, длину штрихов пунктирной линии и длину пробелов. Нажмите ОК для принятия изменений. Symbol Translate... Перенос символов (symbol translate) используется для захвата чего-то нарисованного и переноса с использованием введенного значения (в тысячных). Эта операция обычно используется для переноса символов (в основном к началу). Для переноса символа только выделите объект и нажмите горячую клавишу для Edit - Symbol Translate..., и появится окно диалога. Введите значение желаемого перемещения (положительное или отрицательное) в X и Y направлениях (одинаковое значение будет применено к обоим направлениям). Если вы введете 0, тогда все объекты будут перемещены в начало. Если вы чертите символ, несколько увеличьте (zoom in), а затем выполните это (со значением 0), поскольку все еще есть некоторые ошибки в этой операции. Требуется, чтобы захват был включен, и чтобы интервал привязки к сетке был установлен в 100 тысячных (100 mils), когда вы создаете символы. Embed Component / Unembed Component gschem поддерживает концепцию встроенных компонент, которые являются компонентами режима schematics и не требуют внешних файлов символов любого рода. Вся информация, необходимая для отображения компонента, размещается в файле схемы. Это приводит к некоторому увеличению размера файла схемы, но позволяет легче обмениваться схемами с другими или создавать архив схем, поскольку вы не зависите от файлов символов. Вам нужно только встроить (embed) компоненты, когда это абсолютно необходимо. Команды Embed Component и Unembed Component работают в точности так: • Выделите любой компонент, который вы хотите встроить (или удалить из встроенных). • Укажите или нажмите горячую клавишу для Edit - (Un)Embed Component Если вы хотите удалить компонент из встроенных, вы должны иметь символ с тем же именем в пути поиска библиотеки компонент (иначе unembed не будет работать). Вы можете только embed и unembed компоненты. Так, вы не можете встроить, а затем отразить компонент (это ограничение gschem и будет, в конце концов, исправлено). Вы можете также поместить встраиваемые компоненты прямо в диалоговом окне Add Component... Show Hidden Text Эта операция сделает весь hidden/invisible (скрытый/невидимый) текст видимым. Для использования этого, просто укажите опцию (или нажмите горячую клавишу), и весь невидимый текст появится. Видимый текст не чувствителен к этой опции. Операция полезна, когда чертятся/отлаживаются символы. Операции просмотра Redraw Эта опция перерисовывает текущее отображение. Полезна, когда у вас остаются мышка/компонент/линия/текст и т.д. следы предыдущих действий. Также полезно, когда вы хотите обновить все видимые следы связности. Pan Pan позволяет вам перемещаться по отображению.
Для панорамирования отображения (указав View - Pan в меню): • Выберите View - Pan в меню. • Щелкните первой клавишей мышки в новом центре отображения. Панорамирование отображения с помощью горячей клавиши много проще, просто нажмите горячую клавишу, и отображение будет панорамировано к текущему положению курсора. Вы может сделать возможным также панорамирование с помощью мышки, если добавите (third-button "mousepan") к одному из файлов gschemrc. См. Раздел о файле ресурсов, где сказано больше. Панорамирование мышкой очень удобно для маленьких схем, но имеет тенденцию к росту для больших. Zoom box Zoom box позволяет вам обозначить окно увеличения для zoom in. Для использования окна увеличения (указав View - Zoom box в меню): • Выберите View - Zoom box в меню. • Щелкните и удержите правую клавишу мышки. • Переместите мышку, чтобы контур увеличения захватил пространство, которое вы хотите увеличить. • Отпустите клавишу мышки, и отображение увеличится. Использование горячей клавиши для zoom box проще. Как только вы нажали горячую клавишу, рамка зуммирования немедленно включается, используя положение мышки, как первый угол рамки. Zoom box будет пытаться увеличить требуемое пространство, но некоторые рамки не правильны, и gschem будет улучшать увеличение требуемого пространства. Zoom limits Zoom limits (ограничения) будет увеличивать отображение, пытаясь разместить все помещенные объекты на экране. Просто укажите View- Zoom limits в меню или нажмите горячую клавишу, и дисплей перерисуется. Есть специальные случаи (подобно единственной горизонтальной линии), которые иногда не отображаются корректно (или как ожидается). Будем надеяться, что эти исключения когда-нибудь будут исправлены. Zoom In / Zoom out Zoom In/Out масштабирует отображение, используя указанное курсором положение, как центр отображения (или текущее положение мышки, если используется горячая клавиша). Эти команды всегда масштабируют (zoom in/out) с множителем. Для использования Zoom In/Out (выбрав View - Zoom box в меню): • Укажите Zoom In/Out в меню. • Щелкните первой клавишей мышки, определив центр масштабирования. Использование горячей клавиши похоже, исключая то, что текущая позиция мышки становится центром нового отображения. Zoom full Zoom full будет зуммировать отображение к максимально возможному для отображения виду. Просто выберите это из меню или нажмите горячую клавишу, и отображение будет масштабировано. Update Cues Эта опция меню устарела и будет удалена. Операции с иерархией
Down Schematic Спуск вниз в символ с открытием любых лежащих под ним схем. В основном будут открыты лежащие внизу схемы выбранных компонент, если они содержатся в пути поиска исходной библиотеки. См. раздел Resource File, где описано, как определить этот путь. В настоящий момент есть два пути обозначить, что символ имеет лежащую под ним схему или схемы: • Схема нижнего уровня должна иметь то же самое имя, что и символ, но с расширением .sch, и должна сопровождаться _# suffix (суффиксом) по соглашению об именах. См. раздел Files (файлы) ниже об этих соглашениях. • Прикрепить атрибут к символу, названный source=filename.sch. filename, sch это не путь к символу, а скорее имя базы (последний файл в спецификаторе пути) путей символов. Схема нижнего уровня будет искаться в пути исходной библиотеки. Вы можете задать множество source =attributes. Схемы ниже будут открываться в порядке нахождения source=attribute. Если есть множество схем, лежащих ниже, они будут загружены. Перемещение между страницами схем ограничено (до того же уровня, того же набора лежащих ниже схем), пока ключевое слово rc enforce-hierarehy (форсировать иерархию) не будет модифицировано, чтобы позволить режим свободного перемещения по иерархии. См. раздел Resource File об этом. Также рекомендуется, чтобы вы поддерживали уникальные имена для различных уровней (при использовании source =attribute) во избежание возможной путаницы. Механизмы иерархии сравнительно новы, так что не исключено несколько странное поведение (пожалуйста, сообщайте о нем). Down Symbol Эта опция откроет символ выделенного компонента. Когда символ открыт, пользователь может редактировать и сохранить его. В настоящий момент схема верхнего уровня не увидит изменение символа, пока не будет перезагружена схема верхнего уровня или выполнено File - Revert. Это в дальнейшем будет исправлено. Up Эта опция поднимет вверх по иерархии (если есть страницы над текущей отображаемой страницей). Операции с атрибутами Атрибут не более чем текстовый элемент, который имеет форму name=value. Он может быть либо не прикреплен (unattached), либо прикреплен (attached). Операции в этой группе манипулируют только атрибутами. Большая часть этих операций не сказывается на простых текстовых объектах. Attach Команда Attach (прикрепить) позволяет вам получить фрагмент текста (в правильной форме: name=value) и прикрепить его к другому объекту. Для использования Attributes - Attach: • Выделите объект, который получает атрибуты. • Выделите текстовый объект(ы), который будет прикрепляться к объекту, упомянутому выше. • Укажите или нажмите горячую клавишу для Attributes - Attach. Порядок следования выбираемых объектов и затем фрагментов текста важен, gschem не позволяет выделить сначала фрагменты текста, а затем объект. Если следовать приведенному выше порядку, фрагмент текста будет менять цвет на желтый (или цвет текущего прикрепляемого атрибута), показывая, что фрагмент текста - это прикрепленный атрибут. Вы не можете прикрепить единственный атрибут к нескольким разным объектам. Вы не можете прикрепить не текстовые элементы, как атрибуты. Detach Detach (отцепить) позволяет вам отделить атрибуты от объектов. Для отделения объекта от всех атрибутов:
Выделите объект интереса. Укажите или нажмите горячую клавишу для Attributes - Detach. Все прикрепленные атрибуты (даже если они не выделены) будут отцеплены от объекта. Это поведение, возможно, испорчено и будет в дальнейшем исправлено (так, чтобы только выделенные атрибуты откреплялись). Когда вы отцепляете атрибуты, они становятся красными (или цвета текущих отцепленных атрибутов). Изменения цвета позволяют вам пометить текст, который был атрибутом, а теперь повис (отцеплен). Show Value / Show Name / Show Both Эти операции позволяют вам управлять тем, какая часть строки атрибута будет видима. Обычно вас интересует только наличие значения атрибута, но здесь выбирается появление имени и значения (или, возможно, только имени), что может быть полезно. Для использования опции: • Выделите интересующий атрибут(ы). • Укажите или нажмите горячую клавишу для Attributes - Show. Элемент(ы) текста немедленно изменится. Эти операции работают только с фрагментами текста, имеющими форму name=value. Toggle Vis Эта операция позволяет вам переключать видимость (visibility) атрибутов. Для использования этой опции: • Выделите интересующий элемент(ы) текста. • Укажите или нажмите горячую клавишу для Attributes - Toggle Vis. Элемент(ы) текста изменит свою видимость немедленно. Если вы сделали прикрепленный атрибут невидимым, тогда вы можете просто выделить родительский объект, и выбрать Toggle Vis, и атрибут становится видимым (и наоборот, любые видимые атрибуты, прикрепленные к этому объекту, станут невидимыми). Если вы сделали свободно размещенный (не прикрепленный) атрибут невидимым, есть только один способ сделать его видимым (а все другие атрибуты невидимыми) - использовать Edit - Show Hidden Text опцию. Операции с буфером обмена Gschem поддерживает 5 copy/cut/paste (копировать/вырезать/вставить) буферов, которые видны через все открытые страницы и окна. Сору Для копирования чего-либо в буфер: • Выделите объекты, которые вы хотите скопировать. • Выберите Buffer/Copy/Copy в буфер №. Cut Cut подобно сору, но при этом удаляет объекты из схемы. Paste Для вставки буфера в текущую схему: • Заполните буфер, используя вышеуказанные Сору или Cut • Перейдите на новую страницу/окно схемы. • Выберите Buffer - Paste - Paste из буфера №. • Щелкните первой клавишей мышки для указания точки привязки. • Переместите мышку к конечной точке.
Щелкните первой клавишей мышки еще раз. Опции Text Size... Эта команда открывает окно диалога, которое позволяет вам задать размер текста для всего текста (включая атрибуты, помещенные с помощью Add - Attribute... диалогового окна). Размер текста в точках (1/72"). Размер текста - это 10 точек текста. Наименьший размер текста 2 точки. Toggle Grid Переключает видимость сетки. Toggle Snap Переключает привязку. Будьте очень внимательны, пользуясь этим. Соединения между выводами и сетью (и сети с сетью) зависят от правильности соединения. Переключение сетки всегда гарантирует, что nets/pins не соединены. Перед перемещением символа, используя Edit - Symbol Translate, удостоверьтесь, что привязка (snap) включена. Snap Grid Spacing... Эта опция вызывает диалоговое окно, которое позволяет вам изменить расстояние привязки к сетке (не шаг сетки). Единицы для этого расстояния - это mils. Перед перемещением символа с использованием Edit - Symbol Translate удостоверьтесь, что этот промежуток установлен в 100. Toggle Outline Переключает между рисованием контура текущего выбора и только рисованием рамки при выполенении moves/copies/component и размещением текста. Режим контура лучше, но имеет тенденцию быть значительно медленнее, чем использование режима рамки (ограничивающая рамка). Show Log Window Эта опция отображает окно журнала (log window), если оно было закрыто или отображение его запрещено, когда вы запускаете gschem. Show Coord Window Эта опция отображает диалоговое окно, которое показывает текущие х, у указателя мышки на экране (pixels) и мировые координаты (mils - тысячные). Grips Grips (захваты) - это механизм, используемый в редакторе схем, для предоставления легкого способа модифицировать объекты внутри схем. Когда вы выделяете объект, маленькие скобки помещаются в стратегическом месте (точках окончания линии, или точках радиуса окружности, или углах рамки), которые позволяют быстро изменить объект. Поддержка захватов в настоящий момент существует для линий, сетей, выводов, шин, окружностей и рамок. Дуги пока не имеют захватов, но будут иметь. Использование захватов легкое: • Выделите объект, который вы хотите изменить. Появятся захваты (маленькие прямоугольники). • Щелкните и удержите первую клавишу мышки внутри прямоугольника. • Переместите мышку туда, где хотите, чтобы был объект. • Отпустите клавишу мышки. Создание схем Электрическая связность Когда вы рисуете схему, вам нужно быть уверенным, что она правильно будет соединена электрически программами gEDA. Сети, которые визуально соединяются с другими сетями, соединены электрически. Это соединение может быть концевым, конечная точка с конечной точкой, и не концевым, конченая точка с серединой. Когда рисуется единичное концевое соединение (сетевое или вывода с концом), тогда видимое подвисание линии сети
исчезает. Когда конечная точка заканчивается на середине другой сети (или множество конечных точек собираются вместе в одной точке), тогда рисуется заполненная окружность связности линий. Вы не можете соединять сеть с серединой вывода. Сети могут соединяться только с концами выводов. Вы не можете соединяться с сетью, если эта сеть не ортогональна (горизонтальна или вертикальна). Визуализация линий - это первый способ показать, соединены ли сети/выводы (nets/pins). Шина похожа на сеть с тем исключением, что вы не можете соединить сеть с концевой точкой шины (только с серединой). Если вы пытаетесь соединить сеть с концом шины, вы увидите большое красное «X» на неправильно соединенном конце. Сети, которые имеют тот же самый атрибут label=, прикрепленный к ним, также считаются электрически соединенными. Вы не увидите индикации этого соединения от редактора схем, но построитель спецификации (netlister - gnetlist) рассматривает сети с одинаковыми label=attribute электрически соединенными. Создание символов Компонент или символ что-нибудь представляют. Обычно они представляют вентиль, черный ящик или блок, или целое устройство. Символ - это набор примитивов, сгруппированных вместе. Вы можете использовать линии, рамки, окружности, дуги, текст, атрибуты и выводы, как примитивы для построения символов. Вы не можете иметь сети, шины или другие символы внутри компонента. Компоненты отыскиваются по спецификации (component-library "...") внутри одного из файлов ресурсов.
Г операция компоновки РСВ Установка В настоящий момент РСВ Layout Editor инструмента в наборе gEDA нет. Вы можете использовать РСВ для разводки, но только на платформе Linux (и других Unix-подобных платформах). РСВ нуждается в специальной процедуре установки, прежде чем вы сможете использовать ее со Schematic Editor. Для начала следуйте процедуре инсталляции, описанной в руководстве. Затем сделайте несколько дополнительных шагов: 1. Распакуйте gschem2pcb.tar. Вы должны получить 3 файла: gschem2pcb.sh, GNET-PCBboard.scm и README. 2. Перенесите gschem2pcb.sh в bin директорию вашего дистрибутива gEDA (если это не так). Убедитесь, что gschem2pcb.sh (gsch2pcb.sh в более поздних версиях) исполняется (chmod 755 gschem2pcb.sh). 3. Перенесите GNET-PCBboard.scm в share/scheme директорию вашего дистрибутива gEDA (если это не так). 4. Модифицируйте файл common.m4 программы РСВ (должен находиться в /usr/Xl 1R6/Iib/Xl l/pcb/m4) похожим образом: ключевое слово include в конце файла должно быть заменено (в более поздних версиях может быть иначе): include(/usr/Xl 1R6/Iib/Xl l/pcb/m4/connector.inc) include(/usr/Xl 1R6/Jib/Xl l/pcb/m4/dil.inc) include(/usr/Xl 1R6/Jib/Xl l/pcb/m4/misc.inc) include(/usr/Xl 1R6/Jib/Xl l/pcb/m4/plcc.inc) include(/usr/Xl 1R6/Jib/Xl l/pcb/m4/to.inc) inc lude(/usr/X 11 R6/lib/X 11 /pcb/m 4/qfp. inc) 5. Отредактируйте пользовательский или системный файл ресурсов и убедитесь, что следующая строка есть: (attribute-nam е " footprint") 6. Убедитесь, что grep, sed и gawk установлены. Подготовка компоновки из схемы (schematic) Все устройства, которые вы хотите получить в РСВ должны иметь Uref атрибуты. Цоколевки (footprint), которые вы хотите использовать в РСВ, обозначаются атрибутами footprint. Будьте внимательны с атрибутами Uref name, значение и устройство не должны содержать символа пробела. Сохраните вашу работу (name.sch, например) и введите в командной строке (терминала): gsch2pcb name.sch Появится сообщение об ошибке, если некоторые пробелы будут найдены в упомянутых атрибутах, а РСВ файлы будут созданы. Если name.pcb не существует, файл будет создан вместе с name.net. Если файл уже существует, будет создан файл с именем name.new.pcb. Он будет содержать только новые устройства, которые были добавлены в схему с момента последнего сохранения файла name.pcb. Загрузите данные компоновки в буфер, чтобы включить новые footprint в файл РСВ. Файл nestlist также обновляется, так что перечитайте его. Footprints (шаблоны корпусов) в РСВ РСВ использует макросы для определения цоколевок. Для DIL упаковок, например, используется 2 аргумента, чтобы показать число выводов и ширину шаблона в mil. В редакторе схем footprint атрибут в 300 mil шириной и с 8 выводами DIL: DIL 8 300 Для этого атрибута вы должны включить пробелы! Далее описывается атрибут footprint, который будет использован в редакторе схем для щаблона, доступного в РСВ. N устанавливает число выводов (pins), W - ширину в mil, L - длину в mil, a D - диаметр в mil:
CONNECTOR ROWS COLS DIN41_651LAY N DIN41_651STAND N SUBD_LAY_BASE N SUBD_MALE_LAY_BASE N SUBD_FEMALE_LAY_BASE N DIL N W D N DW N SD N MULTIWATT15 R025 SIL N CSIL QFP132 LED D DIODE_LAY L AXIAL_LAY L CRYSTAL W OSC ISA8 OVEN_OSC RADIAL_CAN W PLCC N PLCC N add QFP N add # single connector # DIN 41.651 laying # DIN 41.651 standing # SUB-D connector laying # SUB-D connector male laying # SUB-D connector female laying # dual-inline standard # dual inline with W=244 # dual inline with W=419 # SD (ZIP) # 15 pins multiwatt footprint # standard 1/4W resistor !now attributes # SIL # SIL package with a common pin # QFP132 flat pack # standing LED # laying diode # standard axial footprint # crystal package # a can oscillator # 8 bit ISA Slot card # ovenized-oscillator package # a radial capcitor package # pile # pile with additionnal border add # qfp with additionnal border add Нет дополнительных параметров для шаблонов ТОЗ_90 ТОЗ_45 Т05 ТО92 Т012 6 Т012 6LAY-WIDE Т012 6STAND-WIDE ТО220 Т022 OLAY-WIDE TO220STAND ТО22OSTAND-WIDE Атрибуты Атрибут - это не более, чем фрагмент текста, который имеет форму name=value (здесь не должно быть каких- либо пробелов слева или справа в паре имя-значение). Он может быть либо отцеплен, либо прикреплен. Атрибуты широко используются в проекте gEDA для транспортировки информации. Элементы, как имя устройства, количество выводов, скрытые сети и количество ссылаемых единиц (unit reference) специфицируются с использованием атрибутов. Есть два рода атрибутов: 1. Регулярные прикрепленные атрибуты. Это атрибуты, которые принимают стандартную форму и прикреплены к некоторым объектам (выводам, сетям, компонентам или рамкам и т.д.). Эти атрибуты обычно желтого цвета. 2. Не прикрепленные атрибуты. Это атрибуты, которые принимают стандартную форму, но не прикреплены к какому-нибудь объекту. Эти атрибуты также известны, как плавающие или верхнего уровня атрибуты. Регулярные прикрепленные атрибуты прикреплены к объекту для привязки информации к отдельному объекту. Например, число выводов связано с выводом. Не прикрепленные атрибуты обычно передают некоторую информацию, глобальную по природе. Например, device=attribute (который существует внутри символов) и специфицирует, какое устройство весь символ представляет. Есть третий тип атрибутов, который является специальным случаем второго типа, но превращается в первый. Этот специальный тип атрибутов известен, как атрибут подсказки. Если вы размещаете не прикрепленный видимый атрибут внутри символа, а затем создаете образец этого символа, тогда не прикрепленный атрибут становится «подсказкой» («promoted») для прикрепленного атрибута. Этот новый атрибут подсказки становится прикреплен к символу. Такой механизм переприкрепления атрибута (внутри символа) известен, как поддержка (promotion) атрибута. Есть несколько нюансов с поддержкой атрибута:
• Поддержка имеет место только, когда символ размещается; что означает, что если вы размещаете символ (syml), а затем меняете его на диске (добавляя или удаляя плавающие атрибуты), существующий syml не будет отражать эти новые плавающие (floating) атрибуты (то есть, они не будут поддерживаться) ни в каких схемах. • Атрибуты device= не поддерживаются. • Невидимые атрибуты не поддерживаются по умолчанию. Если вы прикрепляете плавающий атрибут (подобно numslots=#) и делаете его видимым, он не будет поддерживаться. Теперь, чтобы осчастливить всех, это поведение конфигурируется. Если вы добавите: (promote-invisible "enabled") в пользовательский или системный файл ресурсов (см. Customizing / Resource files), невидимые плавающие атрибуты будут тоже поддерживаться (и удаляться из памяти). Однако если вы разрешите это, тогда позиционирование компонента будет нарушено, поскольку приложение исключает некоторые плавающие атрибуты из состава символа (в памяти, даже если они невидимы). Так что вы можете добавить: (keep-invisible "enabled") в файлы ресурсов. Это разрешено по умолчанию, но не сказывается до тех пор, пока не разрешается promote-invisible (поддержка-невидимых). Теперь суммируем, поддержка атрибута устанавливает плавающие атрибуты внутри символов и прикрепляет их вне размещенного символа. Три ключевых слова конфигурации управляют этим поведением: attribute-promotion, promote-invisible и keep-invisible. Ссылка Вот текущий список атрибутов, которые используются в системе gEDA: • device (только внутри символа). device=device_name должно размещаться где-нибудь в символе и быть сделано невидимым. Это имя устройство, и оно требуется. Если объект - это графика, тогда он должен быть установлен в none (device =попе). Не смущайтесь этим, это только этикетка с именем устройства. Не используйте пробелы в значении для этого атрибута, есть несколько программ, которые не любят пробелы в спецификации устройства. • graphical (только внутри символа). graphical=l должно существовать где-нибудь внутри символа, который является чисто графическим (как штамп или символ decon). Символы, которые имеют этот атрибут, не имеют электрического или схемного значения. Не забывайте установить device=none. • pin# (только внутри символа). Все выводы должны иметь атрибут pin#=#, прикрепленный к выводу объекта. Первый № - это заглушка и увеличивается последовательно, начиная с 1. Второй № - это реальный номер вывода. Оба значка # требуются! Порядок pin# имеет значение с момента создания netlis, генератор которого будет выводить их в последовательности, начинающейся с pinl вплоть до pinN. Эти атрибуты могут быть либо скрытыми, либо невидимыми. • type (только внутри символа прикрепленные к вывода). Каждый вывод должен иметь атрибут type=value прикрепленный к нему. Вот список правильных значений: IN вход OUT выход I/O вход/выход ОС открытый коллектор ОЕ открытый эмиттер PAS пассивный ТР выходной двух транзисторный каскад TRI трех-стабильное окончание (высокий импеданс) CLK тактовый вывод (clock) PWR питание/земля Внимание! Тип атрибута не используется в библиотеке символа и может меняться радикально. numslots (только внутри символа). Если компонент имеет множество элементов (slots) в корпусе (как 7400, имеющий 4 NAND на корпус), тогда вам нужен атрибут num slots=#. # - это номер элемента (slot),
который имеет устройство. nurnslots= должно существовать где-нибудь в символе и быть сделано невидимым. Дополнительный элемент, относящийся к требуемым атрибутам, ниже. • slot# (только внутри символа). Если компонент имеет множество элементов в корпусе, тогда вам нужно прикрепить slot#=#, #,#... к каждому элементу, который имеет компонент. Первый # относится к номеру элемента. Если устройство имеет 4 элемента, тогда будут slotl=, slot2=, slot3= и slot4= атрибуты, существующие где-то в символе и сделанные невидимыми. Последовательность # имеет один-в-один отношение к pin# атрибутам и специфицирует, какой pin# должен быть записан, когда устанавливается элемент. Посмотрите 7400-1.sym в качестве примера того, как это все работает. Рекомендуется, чтобы все символы, которые имеют составные элементы, имели атрибут slot=l, прикрепленный таким же образом, как атрибут device=. По умолчанию pm#=# будут отражать первый элемент. Вы не можете игнорировать pin#=# с non-slot=l при размещении компонент. • footprint (только внутри символа). footprint=package_name должно содержаться где-нибудь в символе, который может быть использован генератором спецификации (netlister). Прикрепите этот атрибут, как- то похоже на атриьбут device=. package_name - это РСВ шаблон или тип корпуса, подобно DIP14 или DIP40. • label (в схемах). Если вы хотите пометить сеть, тогда прикрепите атрибут, названный label=value к сети. Все сети, которые имеют одинаковые имена, подразумеваются электрически соединенными. Вы должны также использовать этот атрибут, когда хотите пометить выводы. Ввнутри символов, прикрепленных к выводам, все выводы должны также иметь атрибут label=label, прикрепленный к ним. Это видимая этикетка, ассоциированная с каждым выводом. Пожалуйста, сделайте этот атрибут зеленым (вместо желтого по умолчанию). В данный момент библиотеки символов не следуют этому соглашению, но будут следовать. • uref (и в символах и в схемах ). Этот атрибут используется для спецификации имени ссылки для отдельных образцов компонента. Он должен быть на всех компонентах, которые имеют какого-то рода электрическое значение. Этот атрибут может также быть внутри символа (он будет поддерживаться, то есть, прикреплен к контуру символа, если он видим). • net (и в схемах и внутри символов). Атрибут net= используется для создания питания и земли, и для других произвольных сетей. Все сети с одинаковыми именами сигналов будут соединены электрически. net=attribute - это текстовый фрагмент, который берется в следующей форме: net=signalname:pinname,pinname,pinname, . . . где: net= - это имя атрибута (всегда одно и то же, в нижнем регистре), signalname - это определяемые сигнал или сеть (подобно +5V, GND и т.д.), pinname - это имя вывода (Al, Р2, D1 и т. д.) или номер (1, 2, 5, 13 и т.д.), который присвоен этому signal/net (или выводу names/numbers). Вы можете иметь только одно signalname на net=attribute, но вы можете иметь столько pinnames/numbers, сколько захотите. Вы должны разместить атрибут net= attribute в нескольких местах. Несколько примеров: net=GND:7 net=+5V:14 net=attribute в настоящем не используется библиотекой символов, но поддерживается генератором спецификации (netlister). • source (схемы только). Атрибут source =attribute используется для обозначения того, что символ имеет схему нижнего уровня. Механизм source=attribute для обозначения подсхем дополнительный к механизму символьных и схемных листов, упомянутых где-нибудь еще. Этот атрибут должен быть прикреплен к образцовым компонентам. Прикрепите атрибут к компоненту и задайте имя файла filename (не путь) лежащей ниже схемы (подобно block_l.sch) в качестве значения. Обозначенная схема должна быть в каталоге source-library. Этот атрибут может быть прикреплен множество раз с разными значениями, которые в основном означают, что есть множество подсхем. value (только в схемах). Используется в основном в генераторе интерфейса SPICE (backend netlister) для задания значения различным элементам. Никаких преобразований с ним не делается, и он помещается, как есть, в netlist.
Настройка Файлы ресурсов (Resource files) Ввод схем в значительной мере конфигурируется. Вся конфигурация поддерживается через файлы ресурсов (базирующихся на схеме): • system-gschemгс. Этот файл содержит конфигурацию системы (по умолчанию один для всех пользователей). Обычно устанавливается в директорию, где устанавливается gEDA, и требуется при запуске приложения. • .gEDA/gschemrc (расположен в домашней директории пользователя). У каждого пользователя свой файл. Пользователи должны размещать свои определения, которые они хотят видеть при каждой сессии, в этом файле. • gschemrc (располагается в директории проекта). Этот файл поддерживает определения для каждого проекта. Такие вещи, как ключевые слова component-library или source-library, помещаются в этот файл. Последовательность просмотра этих трех файлов, как указано выше (первым системный файл, затем пользовательский, и, наконец, файл проекта). Несколько правил по изменениям в файлах: • Не нарушайте никаких синтаксических правил. Это может привести к тому, что интерпретатор схемы (Guile) остановит интерпретацию. • keywords/defaults всегда игнорируют пришедшие ранее, за исключением накапливающих ключевых слов (подобно component-library). За более обширной информацией о том, что может конфигурироваться, обратитесь к system-gschemrc. Key mapping Когда вы нажимаете клавишу, вызывается соответствующее действие. Например, нажатие Alt-Q: выход. Для присоединения клавиш к функциям приложение использует карту клавиш (key mapping). Таблица карты клавиш запоминается в файле конфигурации ввода схем (см. раздел Configuration Files). Чтобы определить, какая клавиша будет вызывать какое-то действие, используется следующее: (define СТАВLE_NАМЕ> ' ((CKEY_1> . CACTION_1>) (CKEY_2> . CACTION_2>) (CKEY_N> . CACTION_N>))) где: • <TABLE_NAME> - это имя таблицы; для основной таблицы используется название global-keymap. • <KEY_x> - это описание клавиши, как это: a fora Shift A for Shift-а Control a for Control-а Alt a for Alt-a • <ACTION_N> означает действие, которое вызывается; есть множество таких, что определены внутри приложения, их имена будут даны позже. Например, для выхода из приложения (имя действия: file-quit) после нажатия Alt-q, необходимо ввести в файл конфигурации: (define global-keymap ' (("Alt q" . file-quit)))' Есть возможность вместо действия вызвать другую таблицу. Это полезно для создания «two-keys» (двухклавишных) горячих клавиш. Чтобы сделать это, вы должны указать имя второй таблицы, как действие. Например, чтобы добавить компонент (имя действия: add-component) после нажатия клавиш «а» «с» и добавить
атрибут (имя действия: add-attribute) после нажатия «а» «а», необходимо ввести: (define add-keymap ' (("с" . add-component) ("а" . add-attribute))) (define global-keymap ' (("a" . add-keymap))) Есть несколько простых правил, которым нужно следовать при определении клавиш для новой карты клавиш: • Все чувствительно к регистру. • Вы можете получить только один модификатор (none OR Shift OR Control OR Alt). • Клавиши и действия должны быть уникальны в каждой таблице карты клавиш, особенно в глобальной. • Имена таблиц должны быть уникальны. Ниже список встроенных действий, реализованных во вводе схем в gEDA: file-new-window file-new file-open file-script file-save file-save-as file-save-all file-print file-image file-close-window file-quit edit-select edit-copy e dit-c opy-hotkey edit-move edit-move-hotkey edit-delete edit-rotate-90 e dit-r otate-90-hotkey edit-mirror e dit-m irror-hotkey edit-slot edit-color edit-edit edit-lock edit-unlock edit-translate edit-embed edit-unembed edit-hidden view-redraw view-zoom-full v iew- zoom - lim its view-zoom-in view-zoom-out view-zoom-box view-zoom-box-hotkey view-pan v iew-pan-hotkey view-update-nets page-manager page-next page-prev page-new page-close page-discard
page-print add-component add-attribute add-net add-net-hotkey add-text add-line add-line-hotkey add-box add-box-hotkey add-circle add-circle-hotkey add-arc add-arc-hotkey add-pin add-pin-hotkey hierarchy-open- sym bol attributes-attach attributes-detach attributes-show-name attributes- show-v alue attributes-show-both attributes-visibility-toggle options-text-size options-snap-size options-action-feedback options-grid options-snap options-show- log-window options-show- c oord-window misc-misc cancel Экспортирование GNETLIST руководство пользователя Этот документ описывает, как использовать gnetlist. Этот документ и gnetlist, в основном - это прелестная ALPHA, так что не забывайте об этом, когда используете генерацию netlist. Как известно всем инженерам, очень важно не доверять слепо инструментам, надеясь, что они будут создавать корректный вывод, и gnetlist, конечно, не исключение из этого правила. Очень важно, чтобы вы проверяли КАЖДЫЙ netlist, который вы создаете. Как с большинством программ (включая все программы в gEDA), gnetlist приходит с NO WARRANTY. Чепуха, я ненавижу необходимость говорить об этом, но я надеюсь, что это предупреждение охранит пользователей от мыслей, что gnetlist генерирует великолепные спецификации (netlist). Так что, если вы обнаружите ошибку, пожалуйста, дайте знать в ahvezda@geda.seul.org. Этот документ эскизный, так что, пожалуйста, e-mail’ом все поправки в ahvezda@geda.seul.org. Спасибо! gnetlist - это генератор netlist в gEDA (netlister). Он берет в качестве входного файл схемы и производит netlist. netlist - это текстовое представление схемы. Это текстовое представление имеет все соединения между компонентами, полностью урегулированные. Что означает, все соединения связаны с сетями, сгруппированными вместе, netlister также поддерживает иерархию в схемах. gnetlist имеет очень гибкую архитектуру. Основная программа, написанная на «С», читает схему (используя правила из libgeda) и создает внутреннее представление данных схемы. Это внутреннее представление затем обрабатывается интерфейсом, который ответственен за написание разных форматов netlist. Интерфейс для каждого формата netlist записан в схеме (собственно Guile). Эта архитектура не подходит для бесконечного числа форматов netlist, но позволяет netlister'y генерировать другие отчеты (подобные списку BOM - bill of material). Как 20001006, gnetlist имеет схему интерфейса для поддержки следующих форматов netlist: • РСВ & PCBboard - UNIX РСВ netlist format. • Allegro netlist format • BAE netlist format • BOM & BOM2 - Bill of Material generators
• DRC - Start of a design rule checker • gEDA - the native format of gEDA, mainly used for testing • Gossip netlist format • PADS netlist format • Prote UI netlist form at • Spice compatible netlist format • Tango netlist format • Verilog code • VHDL code • VIPEC netlist format • VAMS - VHDL-AMS netlist format Этот список постоянно пополняется. Несколько негативных особенностей (как в 20001006): нет поддержки для шин, ошибочное обнаружение, и отчеты близки к ограничению, и ... (многое другое). Установка Надеюсь, что сейчас вы уже установили gnetlist на вашей машине. Этот документ не описывает всей установки. Вы можете проверить установку, запустив (в более поздних версиях это может не работать): libgeda-config --version gesym-config --version which gnetlist idd 'which gnetlist' Первые две команды должны вернуть версию установленных средств (libgeda и библиотеки символов), а следующая команда должна вернуть путь к бинарному gnetlist. Последняя команда (только на GNU/Linux системах) вернет, какие библиотеки связаны с gnetlist. Все требуемые библиотеки должны быть найдены, чтобы gnetlist запустился. Если эти команды не возвращают удовлетворительных результатов, тогда, вероятнее всего, инструменты gEDA не установлены должным образом. Пожалуйста, загляните в соответствующие документы INSTALL (которые приходят с дистрибутивом), где уточняется, как устанавливать инструменты gEDA. Запуск gnetlist Это очень легко запустить gnetlist. gnetlist - интерфейс чисто командной строки, так что не вызывает раздражение своим GUI :-) Чтобы получить список аргументов командной линии, запустите, пожалуйста: gnetlist -h Вам понадобится задать следующие два параметра для запуска gnetlist: -д proc (задает, какой интерфейс запускать вопреки схеме) filename.sch (задает файлы схемы). Вы можете задать множество схем в одной командной строке. Имя файла по умолчанию для генерации netlist приходит из output.net. Вы можете изменить это местоположение по умолчанию, используя -о опцию имени файла (filename option). Пример запуска gnetlist: gnetlist -g geda -о stack.net stack l.sch (вывод netlist, в stack.net, для stack_l .sch, используя естественный формат gEDA). Есть также несколько флагов ошибок. Первый флаг -v, который разрешает детальный режим (verbose mode). Детальный режим выводит полную группу информации о том, что делал gnetlist, вместе с дампом внутреннего представления. Флаг -i flag переводит gnetlist в интерактивный режим, который полезен при отладке схем интерфейсов, и обычно не используется конечными пользователями. Детальный список аргументов командной строки можно найти в gnetlist man page. Schematic / symbol требования Этот раздел описывает, что нужно от schematics/symbols для получения работоспособности с gnetlist. В порядке корректной работы gnetlist и схема, и поддерживаемые символы должны быть корректны. В основном эти
требования состоят из спецификации атрибутов. Атрибуты используются через вывод системы gEDA для представления информации. Атрибуты - единственный способ добавить информацию к компонентам, сетям, выводам и т.д. За более детальной информацией об атрибутах, упоминаемых в этом документе, обратитесь, пожалуйста, к документу attributes.txt (список Master attribute). Требования к символам: • Все символы должны иметь device= attribute. • Все выводы должны иметь атрибут pin#=#. Этот атрибут будет, в конечном счете, изменять форму, но сейчас он необходим, как pin#=#. • Все выводы должны иметь pinlabel= attribute. • Для символов, которые являются содинителями (slotted), вам нужно указать slot=attribute, а для каждого слота slot#=# атрибут, и numslots=# атрибут. Соединение (slotting) будет также изменено в ближайшем будущем, но пока оно должно быть специфицировано, как указано выше. • Для любого power/gnd/arbitrary вам нужно задать net=attributes внутри символа. См. документ netattrib.txt, где больше информации. • Вы можете запастись значениями по умолчанию для различных параметров (это зависит от используемого вами интерфейса (backend)) через преимущества механизма поддержки (promotion) атрибутов. См. ниже об этом или документ gschem.txt. • Для символов, которые вы хотите, чтобы генератор netlist полностью игнорировал, используйте атрибут graphical=l. • Для лучшего знакомства с символами, пожалуйста, посмотрите документацию по созданию символов. Схемные требования: • Наиболее важно, чтобы каждый компонент, который вы хотите показать в netlist, имел uref=attribute. Это ОЧЕНЬ важно, gnetlist предупредит вас, если вы имеете компонент, который не имеет uref=, но были ошибки, которые не вызывали предупреждения. • Вы можете маркировать все сети, используя label=attribute. Вам только нужно прикрепить эту метку к одному из сегментов сети (электрически соединенной сети), чтобы все сегменты сети получили метку. • Вы можете иметь много схем в разработке (термин, обычно приводящий в замешательство, поскольку означает множество разных вещей для разных людей). Для использования множества схем в создании единственного netlist только задайте их в командной строке gnetlist. • Если вы назвали сети одинаково, тогда эти сети будут электрически соединены. Одинаковые имена сетей проходят через все заданные схемы. • Есть еще несколько вопросов, относящихся к иерархии, пожалуйста, посмотрите раздел иерархии ниже. Разные замечания Атрибуты, которые не прикреплены ни к чему и находятся внутри символа, поддерживаются (promoted) в рамках символа, когда символ помещается внутри схемы (в gschem). Эти поддержанные атрибуты всегда блокируются первыми, до входа в символ. Так что, другими словами, если есть атрибут с тем же именем внутри символа, и он прикреплен к контуру образца компонента, тогда имеет место контурный атрибут. VHDL интерфейс (backend) Несколько вещей, о которых вы должны позаботиться: • Для генерации правильных деклараций компонент вы должны добавить дополнительные атрибуты к каждому выводу. "type=IN" или "type=OUT" или "typeHNOUT". • Атрибут "device" должен быть уникален для символа! Символы verilog того же типа, например, имеют все одинаковые атрибуты устройства, и не будут, вследствие этого, работать. • Убедитесь, что ваша component-library озаглавлена vhdl символами, а не verilog символами. Пути к библиотекам, которые показываются последними, ищутся первыми! Verilog netlister (генератор) README Это четвертый выпуск Verilog netlister для gEDA. Вот как продолжать делать схему, netlist которой может быть сгенерирован для verilog: Создайте ваши модули стандартным методом, не забывая, что вы должны припасти атрибут ‘pin#’ для каждого порта, который вы хотите создать в сгенерированном verilog. gmk_sym, это полезно.
• Разместите каждый ваш вновь созданный модуль на схеме. Вы можете также поместить примитивы из ‘verilog’ библиотеки символов. Убедитесь, что дали УНИКАЛЬНЫЕ ‘uref’ каждому символу, который вы поместили в схему, за исключением, когда два символа в действительности разные части одного модуля, и выводы, перечисленные на каждом символе, не имеют общих имен. Иначе они не войдут в netlist. • Соедините сети между модулями, которые вам нужны. Помните, если вы хотите сделать разборчивым Verilog позже, не забывайте именовать все ваши сети прикрепленными атрибутами ‘label’. Для Multiple bit wires (многобитовых соединений) используйте только стандартную нотацию Verilog. Генератор netlist вычислит порядок следования, который вам нужен. Убедитесь, что хотя бы одна сеть маркирована с полным набором выражений, иначе netlister будет гадать, нужна ли вам net[l5:0] или net[0:15] в вашем объявлении. Любой не полный набор будет вызывать предупреждение. Строки, появляющиеся в качестве неправильных идентификаторов Verilog, будут выводиться с предупреждениями, в противном случае, игнорироваться. Если вы получили предупреждение для правильного идентификатора Verilog, пожалуйста, отправьте сообщение об ошибке! • Вставьте IPAD, OP AD и ЮР AD для всех сетей, которые вы хотите, чтобы были видимы в заявлении модуля (declaration statement). Это особенно важно для того, чтобы быть уверенным в том, что сети, которые вы подключаете к площадкам, были именованы. Поскольку имена сетей могут меняться от запуска к запуску, что, конечно, не «здорово». I/O площадки будут хорошо размещены заданием полного набора выражений. Набор выражений на I/O площадках игнорируется, когда выводятся объявления модуля, но они используются при вычислении окончательного диапазона бит. Каждая площадка должна иметь уникальный uref, иначе netlister растеряется. • Добавьте не прикрепленный атрибут ‘module_name=Your_Module’ где-нибудь в схеме, хорошо бы возле штампа. Это будет имя, генерируемое Verilog модулем ‘Your_Module’. • Сохраните вашу разработку. • Запустите вашу схему с netlister: gnetlist -g verilog -о output.v schematic.sch Проверьте вывод на корректность, ОСОБЕННО, если вы получали какие-либо предупреждения. (Предупреждений не должно быть). Загрузите netlist в ваш любимый simulator/synthesis (симулятор/синтезатор).
В. KiCAD Eeschema Eeschema это мощная программа создания схем, работающая со следующими операционными системами: • LINUX • WINDOWS 98/XP/NT Независимо от используемой системы, создаваемые файлы полностью совместимы во всех системах. Eeschema это « интегрированная » программа, поскольку все функции рисования, управления, компоновки, обслуживания библиотек и доступа к разработке монтажной схемы (РСВ design) вызываются из Eeschema. Она также допускает иерархическое рисование, используя многостраничные диаграммы. Она предназначена для работы с программой распечатки цепей, Pcbnew, для которой она предоставляет файл Netlist, который описывает электрические соединения РСВ для разработки. Eeschema также интегрирует редактор компонент, который позволяет создавать, редактировать и отображать компоненты, и столь же хорошо поддерживать библиотеки символов (импорт, экспорт, добавление и удаление компонент библиотеки). Eeschema вдобавок интегрирует следующие дополнительные, но основополагающие функции, необходимые для современного программного обеспечения разработки схем: • Выполнять проверку правильности электрических соединений (D.R.C.') для автоматического контроля за неправильными соединениями, ввода компонент, оставшихся без соединения... • Генерации файлов компоновки в формате POSTSCRIPT или HPGL. • Генерации файлов компоновки для печати на локальном принтере. • Генерацию перечня материалов. • Netlist генерацию для РСВ компоновки или программ симуляции. Технический обзор Эта 32 битовая программа ограничена только ресурсами памяти. По этой причине нет ограничений на число компонент, на число выводов компонент, соединений, листов... Eeschema допускает простые или многостраничные диаграммы. В случае многостраничных диаграмм, представление иерархическое, а доступ к каждому листу немедленный. Максимальный размер отрисовки всегда возможен от А4 формата до АО, и от А до Е формата. Основные команды Вы можете получить доступ к различным командам: • Щелкнув по меню (верхняя часть экрана). • Щелкнув по иконке в верхней части экрана (основные команды). • Щелкнув по иконке правой части экрана (специальные команды или инструменты (tools)}. • Щелкнув по иконке левой части экрана (опции дисплея). • Щелкнув по клавишам мышки (важные дополнительные команды); как правило правой клавишей открывается контекстное меню, зависящее от элемента под курсором (видимый размер, сетка и редактирование элементов). • Функциональными ключами клавиатуры (Fl, F2, F3, F4, Insert и space). В частности: • Клавиша Esc позволяет остановить выполнение команды. • Клавиша Insert позволяет дублировать последний созданный элемент. Вот различные возможности для доступа к командам.
Рис. В. 1. Меню команд Команды с помощью МЫШКИ Левая клавиша: • Одинарный щелчок, отображает характеристики компонента или текст под курсором. • Двойной щелчок, редактировать (если позволяет элемент) этот компонент или текст. Правая клавиша: • Открывает выпадающее меню. Операции с блоками Вы можете перемещать, перетаскивать, копировать и удалять выбранные позиции во всех меню EESchema. Выбираются они левой клавишей мышки. Команда выполняется при отпускании клавиши. Удерживая одну из клавиш Shift, Ctrl, или две клавиши Shift и Ctrl при выборе, в результате вы копируете, перетаскиваете или удаляете выбранный раздел. Команды суммарно: Левая клавиша мышки - Переместить выбранное. Shift + левая клавиша мышки Копировать выбранное. Ctrl + левая клавиша мышки Перетащить выбранное. Ctrl + Shift + левая клавиша мышки - Удалить выбранное. Команда выполняется при отпускании клавиши. Во время перемещения выбранного: • Щелкните вновь для возврата элементов на место. • Щелкните правой клавишей для отмены перемещения. Если запущена команда - переместить блок, другая команда Ыос может быть выбрана из выпадающего меню (мышка, правая клавиша) (рис. В.2):
Приложения Переход Система i _ jfrtf ff . 19 21 к} Рис. В.2. Выпадающее меню при работе с блоком «Г орячие» клавиши «Горячие» клавиши не являются зависимыми от ситуации. • DEL: Удалить (любой элемент). • R: Поворот (компонента или названия). • X: Отразить по X (компонент). • Y: Отразить по Y (компонент). • N: Нулевая ориентация, без отражения (компонент). • М: Начать перемещение компонента. Выбор размера сетки Курсор перемещается по сетке, которая может быть отображена или нет (эта сетка всегда отображается в меню управления библиотекой). Вы можете изменить размер сетки через выпадающее меню или меню Preferences — Options. По умолчанию размер сетки 50 mil (0.050 ") или 1,27 миллиметра. Кому-то может понравиться работать со средней (20 mil) или мелкой сеткой(10 mil). Не рекомендуется для обычной работы. Эти средняя или мелкая сетка специально предназначены для разработки или поддержки компонент с большим числом выводов (несколько сотен). Выбор видового масштаба Для изменения видового масштаба (ZOOM): • Щелкните правой клавишей мышки, чтобы открылось выпадающее меню, и выберите приглянувшийся масштаб. • Или используйте функциональные клавиши: Fl: Zoom in (Увеличить). F2: Zoom out (Уменыпить). F3: Redraw (Перерисовать). F4: Center around the cursor (Центрировать возле курсора). Или просто щелкните средней клавишей мышки (без перемещения мышки). Window Zoom Перетаскивание мышкой со средней клавишей. Mouse weel: Zoom in/Zoom out (колесико). Отображение координат курсора Отображение пространства производится в дюймах (inch или “) или миллиметрах. Однако Eeschema всегда внутренне работает с 1/1000 дюйма. Следующая информация отображается внизу в правой части окна:
• Zoom-фактор. • Абсолютная позиция курсора . • Относительная позиция курсора. • Относительные координаты (х, у) могут быть сброшены пробелом. • Появляющиеся координаты будут относиться к этой точке. Основное меню Это меню позволяет открыть и сохранить схему, конфигурацию программы, и также содержит файл подска: Верхнее инструментальное меню Это меню дает доступ к основным функциям EESchema. □ & 42 Е О? <£г Ча S В 0 & t i □ Л £* □ tin == Рис. В.З. Иконки верхней инструментальной панели Назначение клавиш (слева-направо, некоторые иконки парные): • Создать новую схему. • Открыть схему. • Сохранить полную схему (со всей иерархией). • Выбор размера листа и редактирование штампа. • Вызов редактора компонент Libedit (Проверка и редактирование библиотеки компонент). • Отобразить библиотеки (Viewlib). • Вызов «навигатора», чтобы отобразить древовидную структуру иерархии диаграмм (если содержит добавочные листы) и немедленный выбор любого листа иерархии. Удалить выбранный элемент во время перемещения блока (move block). • Копировать выбранный элемент в буфер обмена во время перемещения блока (move block). • Копировать последний выбранный элемент или блок с текущего листа. • Отменить последнее удаление (до 10 уровней). • Открыть меню печати. • Вызвать CVPCB. • Вызвать Pcbnew. • Zoom in и out (увеличение и уменьшение) вокруг центра экрана (две клавиши). • Перерисовать экран с оптимальным Zoom (масштабом обзора, две клавиши). • Вызвать меню локализации компонент и текстов. • Создать netlist (список соединений Pcbnew или Spice формата). • Примечания к компонентам. • ERC (Electrical Rules Check): автоматическая проверка электрических соединений. • Генерация BOM (Bill of materials - перечень материалов) и/или иерархических названий (меток) Иконки правого инструментального меню Это инструментальное меню дает доступ к инструментам (tools): • Размещение компонент, соединения и шины, пересечения, названия, тексты... • Навигация по иерархии листов. • Создание иерархической структуры листов и символов соединения. • Удаление компонент.
с $ т_ ъ ; * X А АО 4- Б 'Е Q Т Рис. В.4. Иконки правого инструментального меню Детальное использование этих инструментов описано в разделе «Создание диаграмм/Редактирование - Diagram Creation/Editing». Перечень использования дан ниже (сверху-вниз): • Остановить порядок или действующий инструмент. • Навигация по иерархии: этот инструмент делает возможным открывать подсхемы отображаемой схемы (щелчком по символу этой подсхемы), или вернуться вверх по иерархии (щелчком по свободному полю подсхемы). • Вызвать меню размещения компонент. • Меню размещения Powers (компоненты питания) • Размещение соединений. • Размещение шин. • Подсоединение к шине. Эти элементы играют только декоративную роль, не осуществляя соединения; таким образом, они не могут использоваться для соединения проводников. • Соединение шины с шиной. Они могут соединить только две шины между собой. • Символ No connection - нет соединения. Это для размещения на выводах компонент, которые не должны быть присоединены. Что полезно в функции ERC при проверке, умышленно ли выводы оставлены свободными или были пропущены. • Размещение локальной метки. Два проводника могут иметь идентичные метки на том же самом листе. Для соединения между разными листами вы должны использовать глобальные символы. • Размещение глобальных меток. Это дает возможность осуществить связь между листами и основным листом, который имеет символ структуры. • Размещение пересечения. Для соединения двух пересекающихся проводников или проводника и вывода, когда это может быть не однозначно (то есть, если конец проводника или вывод не соединен с одним из концов другого проводника). • Расположение символа иерархии листов (масштабируемый прямоугольник). Вы должны обозначить имя файла для сохранения данных этого «суб-листа» (subsheet). • Импорт глобальной метки с «суб-листа», с целью создать соединение с символом «суб-листа». Глобальные метки предполагаются уже размещенными на этом «суб-листе». Для этого иерархического символа созданные точки соединения эквивалентны традиционным выводам компонент, и должны быть соединены. • Создание глобальной метки на «суб-листе» для создания точек соединения. Эта функция проще
предыдущей, поскольку не требует уже определенных глобальных символов. Линии обрамления. Только декоративные и не выполняют соединений. Размещение текста примечаний. Только декоративных. Удалить выбранный элемент. Если несколько наложенных элементов выбраны, приоритет отдается наименьшему (в убывающей последовательности: пересечение, нет соединения (NoConnect), соединение, шина, текст, компонент). Это также касается иерархии листов. Заметьте, функция Undelete (отменить) основной инструментальной панели позволяет вам отменить последние удаления. Иконки левой инструментальной панели Эта панель управляет опциями отображения: в Sho (ТИП к £ Рис. В. 5. Иконки левой инструментальной панели Назначение клавиш (сверху-вниз): • Сетка • Размеры. • Курсор. • «Невидимые» (“Invisible”) выводы. • Изменить направление соединений и шин. Выпадающие меню и быстрое редактирование элементов Щелчок правой клавишей мышки открывает выпадающее меню, чье содержание зависит от выбранного элемента (если есть хотя бы один). Вы имеете немедленный доступ к: • Zoom-фактору. • Регулированию сетки. • И, согласно ситуации, редактированию обычно модифицируемых параметров. Q Center Zoom + , Zoom - С; Zoom Select » (Д Auto Л Redraw Grid Select > X Закрыть Рис. B.6. Выпадающее меню без выбранного элемента
Тр Move Label ф Rotate Label (R) I Edit Label Delete Label V Change Type > Center €4 Zoom 4 <t'L Zoom - Q Zoom Select > (i Auto Redraw Grid Select > X Закрыть Рис. В. 7. Редактирование метки 4» Move Component (М) 0 Orient Component > 5^ Edit Component > ’Q Copy Component Q Delete Component Center Zoom 4 Zoom - Zoom Select > Auto & Redraw iei Gnd Select > X Закрыть Рис. В. 8. Редактирование компонента Основное меню Меню File (рис. В.9) Рис. В.9. Меню Files Назначение пунктов раздела Files основного меню (сверху-вниз): • Загружает рисунок и его иерархию. • Сохраняет текущий лист и все его «суб-лисгы». • Сохраняет текущий лист. • Сохраняет текущий лист под новым именем. • Доступ к меню печати (См. также «Print and Plot»). • Черчение в Postscript HPGL или SVF формате (См. также «Print and Plot»). • Выход без сохранения.
Меню настроек: Libs and Dir 4/ Colors 2 Options ab Font selection > ЧЙ Language > “£ Save Eeschema Setup Read Setup Рис. В. 10. Меню Параметры Назначение разделов (сверху-вниз): • Выбор библиотек и путей к библиотекам. • Выбор цветов. • Опции отображения (размеры, размер сетки). • Сохранить файл конфигурации. Меню настроек (Параметры)/Библиотеки и директории (Libs and Dir): Рис. В. 11. Диалоговое окно настроек параметров Конфигурация Eeschema по существу: • Пути к библиотекам. • Список библиотек. • Netlist формат. Параметры конфигурации сохраняются в файле .pro. Различные файлы конфигурации в разных директориях допустимы. EESchema отыскивает и использует по убывающим приоритетам: • Файл конфигурации (project>.pro) в текущей директории. • Файл конфигурации kicad.pro в директории kicad. Этот файл может быть та конфигурацией (default configuration). • Предопределенные значения, если файл не найден. Как минимум затем г список библиотек для загрузки и сохранить конфигурацию. Меню настроек (Параметры)/Цвета:
EESchema Preferences General Device Sheets Ere Mark ^9 Wire ^9 Body ^9 Sheet ^9 Ere Warning ^9 Bus Body Bg ^9 Sheetfile □□ Ere Error ^9 Junction ^9 Pin SheetName ^9 Label □□ PinNum ^9 SheetLabel Background Colour • ** White Background ^9 Glob Label ^9 PinNam Black Background 1^9 Netname ^9 Reference □□ Notes ИЦ Value ^9 NoConn ^9 Fields Рис. В.12. Диалоговое окно настроек цветов Разные элементы рисования, выбор претов и цвет фона (только черный или белый). Настройки (Параметры)/Опции: Рис. В. 13. Диалоговое окно настроек опций • Отображение сетки (Display Grid). Если выбрано, сетка отображается. • Размер сетки (Grid Size). Работайте с нормальной сеткой (0,050 дюймов или 1,27 мм). Меньшие сетки используются для построения компонент. • Показать выводы (Show Pins). Отображает невидимые выводы, если выбрано (позволяет видеть выводы питания). • Размеры (Units). Выбор отображения размеров и координат курсора (дюймы или миллиметры). • Соединений и шин ориентация (Wire/Bus orientation). • Выбор горизонтальное/вертикальное. Только горизонтальные или вертикальные соединения или шины допустимы. • Активировать любые (Active Any). Любая ориентация допустима. • Авто панорамирование (Auto Pan). Если установлено, автоматически увеличивает окно, если курсор выходит за его пределы во время выполнения соединения или перемещения компонента. • Повтор элемента (Element repeat). • X шаг (X Step). Увеличивает значение по оси X во время дублирования элемента (обычное значение 0) • Y шаг (Y Step). Увеличивает значение по оси Y во время дублирования элемента (обычно значение 0,100 дюйма или 2,54 мм) • Шаг метки (Label Step). Увеличивает во время дублировния или редактирования текста в числах, таких как компоненты шины (обычное значение 1 или -1). Настройки (Параметры)/Язык: • Используется предустановленный режим. • Возможны другие языки. • Для получения изменений Eeschema нужно перезапустить. • Полезно, главным образом, в целях поддержки.
Меню помощи (Help): Доступ к помощи online (этот документ) и также для проверки текущей версии Eeschema (Eeschema about). Основное инструментальное меню Управление листами Рис. В. 14. Диалоговое окно управления параметрами листа Размер страницы и редактирование штампа Данные автоматически обновляются. Общее количество листов и нумерация листов автоматически обновляются. Средство поиска: EESchema Locate LXj Item to find: I Item in Sheet Item in Hierarchy Find Hext Item (F5) Find Markers Next Marker (F5) Find Cmp in Lib Рис. В. 15. Диалоговое окно средства поиска • Вы можете искать компонент, значение или текстовую строку на текущем листе или во всей иерархии. • Курсор будет позиционирован на найденном элементе, в связанном «суб-листе». Средство созданияNetlist: Этот файл netlist может обращаться ко всей иерархии листов (обычная опция), или только к текущему листу (в этом случае netlist частичный, но эта опция может быть полезна для некоторых программ). В многостраничной иерархии любые локальные метки узнаются только внутри листа, которому они принадлежат.
Так метка TOTO листа 3 иная, чем метка ТОТО листа 5 (если не было преднамеренно сделано связи для их соединения). Это происходит благодаря тому факту, что номер листа (обновленный командой annotate - аннотировать) ассоциировался с локальной меткой. В предыдущем примере первая метка ТОТО в действительности ТОТО_3, а вторая метка ТОТО оказывается ТОТО_5. Эта ассоциация может быть подавлена, если нужно, но необходимо осознавать возможность нежелательных соединений. Примечание 1: Длина метки не имеет ограничения по длине в EESchema, но программа, использующая сгенерированный netlists, может иметь ограничения на этот счет. Примечание 2: Избегайте пробелов в /летках, поскольку они впоследствии появляются, как отдельные слова. В Eeschema нет ограничений, но многие форматы nethst'a зачастую предполагают отсутствие пробелов в метках. Рис. В. 16. Диалоговое окно генерации netlist Опции: Формат по умолчанию (Default Format). Установите для выбора Pcbnew в качестве формата по умолчанию. Могут генерироваться другие форматы: • Oread РСВ2 • CadStar • Spice для симулятора Spice Инструмент аннотации Это средство выполняет автоматическое наращивание в обозначениях компонент. Для многоэлементных компонент (как 7400 TTL, который состоит из 4 элементов) также добавляется многочастичный суффикс (так 7400 TTL, обозначенный какИЗ, будет поделен наИЗА, U3B, U3C и U3D). Вы, безусловно, можете аннотировать все компоненты или только новые компоненты, то есть, те, что прежде не были аннотированы: 1—> EESchema Annotation 15й annotate: Hierarchy Annotate Current sheet Del Annotate select items: all components [ Закрыть new components only Рис. B. 17. Диалоговое окно создания аннотаций Аннотировать (annotate): • Проект. Все листы переаннотируются (обычная опция).
Теущий лист (Current sheet). Только текущий лист переаннотируется (эта опция используется только в специальных случаях, например для оценки количества резисторов на текущем листе). Выбор раздела (select items): • Все компоненты (All components). Безусловная аннотация, все компоненты будут переаннотнрованы (эта опция используется после копирования блоков, например, когда есть продублированные ссылки). • Только новые компоненты (new components only). Условная аннотация, только новые компоненты будут переаннотированы (обычная опция). Клавиши: • Annotate (аннотировать). Выполняет аннотацию. • Del Annotate (удалить аннотацию). Удаляет аннотацию компонента E.R.C инструмент (проверка правильности электрических соединений) Этот инструмент выполняет проверку разработки (известен, как Electrical Rules Check - Электрических Правил Проверка). Эта функция чрезвычайно полезна как для выявления соединений, которые забыли сделать, так и для выявления несовместимостей. Eeschema размещает маркеры на выводах или метках, что позволяет обозначить проблему. Диагностика может быть дана щелчком левой клавиши мышки по маркеру. Может генерироваться файл ошибок (errors file). Основная закладка/дналог Рис. В. 18. Диалоговое окно ERC Ошибки, отображаемые на экране диалога Ere Diags: • Количество ошибок и предупреждений. • Количество ошибок (Errors). • Количество предупреждений (Warnings). Опции: Записать отчет (Write ERC report). Установить, если нужен фaйлERC отчета Клавиша проверки (ERC Test). Производит тест (Electrical Rules Check). Удалить маркеры (Del Markers). Удаляет все ERC маркеры.
Выход (Exit). Выйти из окна диалога Закладка опцнн/дналог ЕЕ Schema Ere егс \ Параметры^ Input Pin Reset Input Pin.... Output Pin... П □ Output Pin BiDi ’in B1D1 Pin 3 State Pin.. □ □□H 1ИПП State 1 Pas si 3in ye Pass№ □ □□□ Unspec Pin Unspec Pin... Q W W j w w w Power IN Power IN П |i 1 PowerOUT PowerOIJT Ы w i Open Coll Open Coll.... w w □ UJ l Open Emit Open Emit.... 1 W VJ □ W No Conn No Conn w wlw w Q UJ U I' wlw]w, - Рис. В. 19. Диалоговое окно опций ERC Это окно диалога предустановок ERC позволяет вам создавать правила соедиг можете выбрать между 3 опциями для каждого случая: • Не обращать внимания на ошибки (No error). • Предупреждать (Warning). • Сообщать об ошибках (Error). Каждый квадратик матрицы может быть модифицирован щелчком по нему. BOM (Bill of Material) инструмент спецнфнкацнн Компоненты могут быть рассортированы по: • Ссылкам (Reference). • Значению (V alue). Много элементные компоненты могут детализироваться. Глобальные метки могут быть рассортированы по: • Алфавиту. • Суб-листам. Различные способы сортировки могут быть использованы одновременно.
Рис. В.20. Диалоговое окно настроек ВОМ Назначение опций (сверху-вниз): • Bill of Material сортируется по ссылкам (Reference). • Bill of Material сортируется по значению (Value). • ВОМ показывает каждый элемент многоэлементных компонент (из U2A, U2B...). • Иерархические соединения сортируются по алфавиту. • Иерархические соединения сортируются по номерам листов. Создание схемы/Редактирование Схема может быть представлена на единственном листе, но, главным оф аз ом, она потребует нескольких листов. Схемы, представленные на нескольких листах, по этой причине названы иерархическими, и все эти листы (каждый из них представлен своим собственным файлом) составляют EESchema проект. Проект (project) состоит из основной схемы, названной корневой (root schematic), и «суб-листов», образующих иерархию. С тем, чтобы можно было отыскать каждый из файлов проекта, вы должны выполнять определенные правила рисования, которые описаны далее. Ниже, когда мы говорим о проекте, мы будем иметь в виду как проект на одном листе, так и иерархический многостраничный проект. Специальные дополнительные символы поддерживают использование иерархии и ее характеристик. Основные соображения Схемы, разработанные с помощью EESchema - это большее, чем простое графическое представление электронного устройства. Это, как правило, отправная точка или начальное звено в цепи конструирования, которое позволяет: • Проверить правила электрического соединения (проверка E.R.C.), что в свою очередь позволяет обнаружить ошибки или пропуски в схеме. • Автоматическую генерацию спецификации (bill of material). • Генерацию netlist (список соединений) для симуляции в такой, например, программе, как Pspice. • Генерацию netlist для печати разводки принципиальной схемы (Pcbnew). Последовательная сверка схемы и разводки (printed circuit board) автоматизирована и выполняется сразу. Чтобы извлечь пользу из этих возможностей, вы должны придерживаться некоторых правил и соглашений. Это позволит избежать неприятных сюрпризов и ошибок. Схема, главным образом, состоит из компонент, соединений (проводников), меток Qabels), точек соединений (или пересечений), шин и точек подключения питания (power ports). Для ясности схемы вы можете размещать чисто графические элементы, такие как вводы шины, комментарии и штриховые линии для прорисовки структуры. Последовательность разработки
Рис. В.21. Диаграмма последовательности разработки Программа разработки схемы использует библиотеки компонент (component libraries). В дополнение к файлу разработки схемы чрезвычайно важен файл спецификации (netlist), поскольку он используется в других программах разработки. Файл netlist воспроизводит список компонент и соединений непосредственно из схемы. Существует (к несчастию для пользователя) великое множество форматов спецификаций (netlist formats). Некоторые из них известны больше, как в случае формата Spice, например. Размещение компонент/редактирование Найти и поместить компонент. Для нового компонента щелкните по месту его предполагаемой установки. Диалоговое окно позволит вам задать имя модуля для загрузки: Рис. В.22. Диалоговое окно добавления компонента В окне диалога отображаются два последних загруженных элемента. Если вы введете *, или если выберете клавишу list all (весь список), EESchema отобразит список библиотек, а затем доступные компоненты. Если впечатать символ «=», сопровождаемый ключевыми словами, EESchema отобразит список компонент, соответствующих всем, ключевым словам. Вы можете также добавить список выбора: например, если вы введете LM2 * все имена компонент, начинающиеся с LM2, будут представлены в списке. Выбранный компонент появится на экране в режиме размещения. Перед установкой в выбранном месте (щелчком левой клавиши мышки) вы можете повернуть компонент (на 90 градусов за раз), осуществить отражение, соответственно, по оси X или Y, или выбрать его представление через выпадающее меню быстрого редактирования. Все это можно легко сделать и после размещения. Если нужный компонент отсутствует, помните, что вы можете зачастую загрузить схожий компонент, а затем модифицировать его: если нужен 54LS00, вы можете, естественно, загрузить 74LS00 и изменить его имя с 74LS00 на 54LS00. Вот компонент в процессе установки:
Files Параметры Помощь EESchema (2006-08-28) |noname.sch] Рис. В.23. Установка компонента Подключение питания (Power ports) Символ питания это компонент (символы сгруппированы в библиотеке «power»). Так что вы можете использовать предыдущую команду. Но если это размещение частое, есть удобное средство на инструментальной панели. Этот инструмент подобен предшественнику, исключая то, что поиск осуществляется непосредственно в библиотеке «power library», экономя ваше время. Редактирование компонент/Модификация (уже размещенных компонент) Редактирование/модификация есть двух видов: • Модификация собственно компонента (позиция, ориентация, выбор элемента многоэлементного компонента). • Модификация одного из полей (ссылка, значение или другие) компонента. Как только компонент размещен, вы можете изменить его значение (актуально для резисторов, конденсаторов...), но бесполезно пытаться сделать это немедленно для присвоенного номера ссылки или для выбранного элемента многоэлементного компонента (наподобие 7400). Это может быть сделано автоматически через функцию аннотации (annotation function). Модификация компонента Для выполнения этого позиционируйте курсор мышки на компоненте (но не на поле компонента). Затем можно: • Дважды щелкнуть по компоненту, чтобы открыть диалоговое окно полного редактирования. • Щелкнуть правой клавишей мышки, чтобы открыть выпадающее меню, и воспользоваться одной из отображаемых команд (Move-переместить, Orientation-ориентация, Edit-редактировать, Delete- удалить). Модификация текстовых полей Вы можете модифицировать ссылку, значение, позицию, ориентацию, размер и видимость полей. Для простого редактирования: • Дважды щелкните по текстовому полю, чтобы модифицировать его. • Щелкните правой клавишей и выполните одну из команд (Move-переместить, Rotate-повернуть, Edit-редактировать, Delete-удалить) в выпадающем меню. Для более полного редактирования или с целью создания полей дважды щелкните по компоненту, что открывает диалоговое окно component properties — свойства компонента-.
Q Component properties ! Параметры Fields ।—---------__________ Unit: g Unit 1 Unit? Orient: Mirror: Нормальный +90 Mirror - 1B0 Mirror I -90 Chip Name: LM2903 Закрыть Defaults <?QK Рис. В. 24. Диалоговое окно свойств компонента Рис. В.25. Диалоговое окно редактирования полей Каждое поле может быть видимым, отображаться горизонтально или вертикально. Отображаемая (и изменяемая) позиция всегда индицируется для нормального отображения компонента (без поворота или отражения) и относится к точке закрепления компонента Проводники, Шины, Метки, Питание (Power ports) Все эти элементы прорисовки могут быть также размещены с помощью инструментов правой вертикальной инструментальной панели. И эти элементы: • Wires - проводники для обычного соединения. • Buses - шины, которые используются только для соединения меток шин (для эстетического восприятия чертежа). • Dotted lines - штриховые линии для графического представления. • Junctions - пересечения для обязательного соединения межцу перекрещивающимися проводами или шинами. • Bus entries - входы в шину для присоединения проводников к шине или шины к шине, для
эстетического восприятия чертежа. • Labels — метки для обычного соединения. • Global labels — глобальные метки для соединения между листами. • Texts — текст комментария. • NoConnection — нет соединения, символы. • Hierarchy sheets — иерархия листов и их выводов соединения. Соединения (Wires — провода и Labels —метки) Есть два пути установить соединение: • Проводником от вывода к выводу (Pin to pin wires). • Метками (Labels). Следующий рисунок показывает оба метода: ЕЕ Schema (2006-08-28) [rionamesch] Ц 1±1 В Ries Параметры Помощь Рис. В.26. Пример соединения в программе KiCAD Примечание 7: Точка контакта (contact) или закрепления метки - это левый нижний угол первой буквы метки. Эта точка должна, следовательно, контактировать с проводником, или быть наложена на точку контакта вывода так, чтобы эта метка принималась в расчет. Примечание 2: Для создания соединения часть проводника должна соединяться своим концом с другим участком или выводом. Если есть перекрытие (если проводник проходит поверх вывода, но без соединения с концом этого вывода), соединения не будет. Однако метка будет соединяться с проводником, какая бы часть точки закрепления метки не оказалась на этом проводнике. Примечание 3: Если проводник должен соединяться с другим проводником, иначе, чем их концами, необходимо поместить символ пересечения (junction symbol) на точке пересечения. Предыдущий рисунок (проводники, соединенные с DB25FEMALE выводы 22, 21, 20, 19) показывает подобный случай соединения с использованием символа пересечения. Примечание 4: Если две разные метки помещены на то же самый проводник, они соединены между собой и становятся эквивалентны. Все другие элементы, контактирующие с одной или другой меткой, становятся соединены между собой. Соединения (Шины —Buses) Давайте рассмотрим следующую схему:
[/hom е/vladlm lr/4D - electro nic/partl5 pcb/klcad project/tutel/tutela. sch] Cj ш tX) j pies Параметры Помощь |У T. 0000 Y 3,6500 x 1 1500 у -0 Л83С (ntf* Рис. B.27. Соединение с помощью шины в KiCAD Множество выводов (особенно компоненты U1 и BUS1) соединены с шинами. Элементы шины (Bus members) С точки зрения схемы шина - это подборка сигналов, начинающихся с общего префикса, а заканчивающаяся числом. Эта концепция такая же, как и используемая для микропроцессорных шин. Каждый сигнал member (член, элемент) шнны. PC АО, РСА1, РСА2 - это элементы шины PC А. Полная шина названа РСА [N. .т]. где N и т - это первый и последний номер проводника этой шины. Так что, если РСА имеет 20 элементов от 0 до 19, полная шина обозначается, как РСА [0.. 19]. Но подборка сигналов подобно РСАО, РСА1, РСА2, WRITE, READ не может содержаться в шине. Соединения между членами шины Выводы, соединяемые одними и теми же членами шнны, должны быть соединены с помощью меток (labels). Действительно, прямое соединение вывода и шины не ощутимо, поскольку шина - это подборка сигналов, и подобное соединение будет проигнорировано EESchema. В примере выше соединение выполнено метками, размещенными на проводниках, присоединенных к выводам. Соединения через ввод в шину (сегменты проводников под 45 градусов) к проводникам шины имеет только эстетическое значение, и не является необходимым на чисто схемном уровне. Фактически, благодаря команде повтора - repetition command (клавиша Insert), соединение может быть очень быстро сделано следующим образом. Если выводы компонента выстроены по возрастанию (общий случай в практике для таких компонент, как память, микропроцессоры...) • Поместите первую метку (например, РСАО) • Используйте команду повтора столько раз, сколько необходимо для размещения всех элементов. EESchema будет автоматически создавать следующие метки (РСА1, РСА2...), вертикально выстроенные, теоретически в позиции других выводов. • Нарисуйте проводник под первой меткой. Затем воспользуйтесь командой повтора для размещения других проводников под метками. • Если нужно, разместите входы шины тем же путем (поместите первый вход, затем используйте команду повтора). Примечание: В меню Preferences/Options (Сеойстеа/Опции) вы можете задать параметры повтора: • Вертикальный шаг (Vertical step). • Горизонтальный шаг. • Инкремент (шаг увеличения) метки (который может, соответственно, быть 2, 3 или уменьшен).
Глобальные соединения между шинами Вам может понадобиться соединение между шинами с целью связать две шины, имеющие разные имена, или, в случае иерархии, для создания соединения между разными листами. Вы можете выполнить эти соединения следующим путем: « (/hom е/vladlm lr/4D - electro nic/partl5 pcb/klcad project/tutel/tutela. sch] ± В Bles Параметры Помощь Рис. В.28. Соединение двух шин в KiCAD Шины РСА [0..15], ADR [0..7] и BUS [5.. 10] соединены вместе (отметьте здесь пересечение, поскольку проводник вертикальной шины присоединяется в середине сегмента горизонтальной шины). Точнее, соответствующие члены соединены вместе: РСАО, ADR0 соединены (так же, как РСА1 и ADR1... РСА7 и ADR7). Более того, РСА5, BUS5 и ADR5 соединены (точно, как РСА6, BUS6 и ADR6 подобно РСА7, BUS7 и ADR7). РСА8 и BUS8 также соединены (точно так, как РСА9 hBUS9, РСА10 и BUS 10). С другой стороны, вы не можете соединить элементы разных «весовых категорий» подобным же образом. Если вы хотите соединить члены разных «весовых категорий» разных шин, вы должны сделать это элемент за элементом, подобно двум обычным меткам, располагая их на тех же соединениях. Соединение питания Когда выводы питания компонент видимы, они должны быть соединены, как и любые другие сигналы. Трудности приходят со стороны компонент (таких, как логические элементы и триггеры-защелки) для которых выводы питания обычно невидимы (невидимые выводы питания - invisible power pins). Трудность двойная, поскольку: Вы не можете присоединить проводники, из-за их невидимости. Вы не знаете их имен. И более того, будет плохой идеей сделать их видимыми и соединить подобно другим выводам, поскольку схема станет совсем «не читабельна», и не будет соответствовать обычным соглашениям. Примечание: Если вы хотите принудительно отобразить эти невидимые выводы питания, вы должны установить опцию Show invisible power pins в диалоговом окне Option основного меню, или через иконку левой инструментальной панели (панель опций). EESchema соединяет автоматически невидимые выводы питания. Все невидимые выводы питания с одинаковыми именами автоматически соединяются между собой без дополнительных оповещений. Однако эти автоматические соединения должны быть дополнены: • Соединением с другими видимыми выводами, соединенными с этим портом питания.
Возможно, соединением между группами невидимых выводов с другими именами (например, общие схемные (земляные) выводы, обычно назваются «GND» у TTL компонент и «VSS» у MOS, и они должны быть соединены между собой). Для таких соединений вы должны использовать символы портов питания (компоненты, специально разработанные для этой цели, которые вы можете создавать и модифицировать с помощью редактора библиотеки). Эти символы состоят из невидимых выводов питания, связанных с желаемым чертежом. Не используйте метки, которые имеют только возможности локального (local) соединения, и которые не будут соединять невидимые выводы питания. (Смотрите раздел об иерархической концепции, где это рассматривается более детально). Рисунок ниже показывает пример соединения портов питания: [/home/vladlmlr/4D-el«sctronlc/partl5_pcb/kicad_project/tutel/tutela sch] | Files Параметры Помощь Рис. В.29. Пример соединения питания В этом примере земля (GND) соединена с портом питания VSS, а порт питания VCC соединен с VDD. Два символа PWRFLAG видимы. Они индицируют, что два порта питания VCC и GND в действительности присоединены к источнику питания. Без этих двух флагов инструмент ERC диагностирует: «Warning: power port not powered (Предупреждение: порт питания не запитан)». Все эти символы - компоненты схемной библиотеки power. «NoConnection» символы Эти символы очень полезны для E.R.C. (проверки электрических соединений), чтобы избежать нежелательных предупреждений. (Электрические правила проверяются с целью гарантировать, что соединения были преднамеренно оставлены неприсоединенными). Если выводы реально остаются оборваны, необходимо разместить символ NoConnection (инструмент левой панели, иконкой с крестиком) на этих выводах. Эти символы, однако, не имеют никакого влияния на генерируемые netlists (списки соединений, спецификацию). Дополнения Может оказаться полезным (для хорошего понимания схемы) разместить индикаторы, такие как текстовые поля, структурные рамки (frames). Текстовые поля (клавиша левой панели, иконка с буквой «Т») и штриховые линии (клавиша со штриховой линией) предназначены для этой цели, в противоположность меткам и проводникам, являющимся элементами соединения. Пример рамки (frame):
|/hom е/vladlm lr/4D - electro nlc/partlS pcb/klcad project/tutel/tutelh. sch] Ries Параметры Помощь Рис. В.30. Применение графических средств в программе KiCAD D Й П -6 5 I» Штамп (Title block) Штамп редактируется в диалоге настройки размеров листа схемы: Рис. В.31. Диалоговое окно при создании штампа чертежа Полный штамп в итоге:
flies Параметры Помощь |/hom е/vladlm lr/4D - electro nlc/p ar tlS pcb/klcad project/tutel/tutelb sch] ы m Рис. В.32. Штамп чертежа Дата и номер листа (Sheet Х/Y) автоматически обновляются: • Дата, когда вы изменяете схему. • Номер листа (полезно в иерархии листов), функцией аннотации (annotation function). Иерархические схемы Иерархическое изображение, главным образом, хорошее решение для проектов больших, чем на нескольких листах. Если вы хотите управлять такого рода проектом, будет необходимо: • Использовать большие листы, которые создадут проблемы при печати и поддержке. • Использовать несколько листов, которые выльются для вас в иерархическую структуру. Полная схема в этом случае состоит из основного листа схемы, называемого корневым листом, и «суб- листов» составляющих иерархию. Более того, искусное разбиение разработки на отдельные листы зачастую улучшает ее восприятие. Из корневого листа вы должны иметь возможность найти все «суб-листы». Управление иерархическими схемами очень просто с EESchema, благодаря интегрированному hierarchy navigator - навигатору по иерархии (клавиша верхней и правой инструментальных панелей, позже детализируем это). Фактически есть два типа иерархии (которые могут существовать одновременно): • Первый только что был вызван, и общего использования. • Второй состоит в создании компонент в библиотеке, которая появляется подобно традиционным компонентам в схеме, но которая фактически соответствует схеме, описывающей их внутреннюю структуру. Второй тип скорее используется для конструирования интегральных цепей, поскольку в этом случае вам приходится использовать функциональные библиотеки в схеме, которую вы рисуете. EESchema в настоящий момент не обрабатывает этот второй случай. Создание иерархической схемы просто вся иерархия поддерживается, начиная с корневой схемы, как если бы это была только единственная схема. Два момента, о которых следует знать: • Как создать «суб-лист». • Как строить электрические соединения между «суб-листами». Навигация по иерархии Это очень легко, благодаря навигатору (инструмент верхней инструментальной панели), показанному здесь:
Navigator К Рис. В.ЗЗ. Навигатор по всем уровням схемы Каждый лист доступен щелчком по его имени. Быстрая навигация: щелкните правой клавишей по имени листан выберите enter sheet - ввести лист Вы также можете быстро добраться до корневого листа или «суб-листа», используя правую инструментальную панель. После выбора инструмента: • Щелкните по имени листа для выбора этого листа • Щелкните где-нибудь еще для выбора основного листа Создание иерархии, заголовок Вы должны: • Разместить на корневом листе символ иерархии, названный sheet symbol - символ листа • Войти в новую схему («суб-листа») с помощью навигатора и нарисовать ее, подобно другим схемам. • Нарисовать электрические соединения между двумя схемами, располагая глобальные метки - Global Labels (Glabels) на новой схеме («суб-листе»), и метки, имеющие те же имена на корневом листе, названные SheetLabels (метки листов). Эти метки листов будут соединены с символами листов корневого листа, с другими элементами схемы, подобно стандартным выводам компонент. Символ листа (Sheet symbol) Нарисуйте прямоугольник, обозначенный двумя диагональными точками, символизирующими «суб-лист». Размер этого прямоугольника должен позволить вам позже разместить специальные метки, иерархические выводы, соответствующие глобальным меткам (Glabels) на «суб-листе». Эти метки похожи на обычные выводы компонента Выберите инструмент правой инструментальной панели (Add hierarchical symbol). Щелкните для размещения верхний левый угол прямоугольника Щелкните еще раз для размещения нижиий правый угол, чтобы достаточно увеличить прямоугольник. Затем вам будет предложено ввести имя файла и имя листа для этого «суб-листа» (с целью достижения соответствующей схемы, используйте навигатор по иерархии) Пример: X Отмена <9 QK Рис. В.34. Создание подсхемы в KiCAD Вы должны задать хотя бы имя файла Если нет имени листа, имя файла будет использовано, как имя листа (обычный способ выполнения). Соединения, иерархические выводы (Hierarchy pins) Вы создадите здесь выводы соединений (иерархические выводы) для символа, который был только что создан. Эти точки соединения похожи на обычные выводы компонента, однако, с возможностью соединения полной шины через единственную точку соединения. Есть два способа сделать эго: • Разместите разные выводы перед прорисовкой «суб-листа» (ручное размещение). • Разместите разные выводы после прорисовки «суб-листа», и глобальные метки (полуавтоматическое размещение). Второе решение предпочтительнее, насколько оно возможно.
Ручное размещение: • Выберите инструмент Add hierarchical pin to sheet. • Щелкните по символу иерархии, где хотели бы поместить этот вывод. Посмотрите ниже пример создания иерархического вывода, названного «CONNEXION». Рис. В.35. Задание выводов соединений в подсхеме Вы можете затем определить его графические атрибуты, размер (щелкните правой клавишей и выберите Edit в выпадающем меню): PlnSheet Properties: tX Text: I CONNECTION Размер ('): 10,060 PinSheet Shape: •s Input Output Bidi TriState Passive Ok Отмена Рис. B.36. Диалоговое окно свойств выводов подсхемы Доступны разные символы выводов: • Input (ввод). • Output (вывод). • BiDir (двунаправленный). • TriState (с тремя состояниями). • NotSpecifled (не определен). Эти символы выводов только графические элементы, и не играют другой роли. Автоматическое размещение: • Выберите инструмент import glabel from sheet. • Щелкните по символу иерархии там, откуда вы хотите импортировать вывод, соответствующий размещению глобальной метки на соответствующей схеме. Появится иерархический вывод, если новая глобальная метка существует, то есть, не соответствует уже размещенному выводу. • Щелкните там, где вы хотите поместить этот вывод. Все необходимые выводы могут таки образом размещаться быстро и без ошибок Их вид находится в согласии с соответствующими глобальными метками. Соединения, глобальные метки Каждый вывод символа листа, только что созданный, должен соответствовать метке, называемой глобальной меткой (или GLabel) на«суб-листе». Glabels похожи на метки, но они обеспечивают соединение между «суб-листами» и корневым листом. Графическое представление двух дополнительных меток (вывод и GLabel) схоже. Создание GLabel выполняется инструментом Add glob al label на «суб-листе». Посмотрите ниже пример корневого листа. Заметьте, выводы TRANSF1 и TRANSF2 соединены с коннектором К1:
Рис. В.37. Графическое представление меток Вы вновь найдете две соответствующие Glabels, обеспечивающие соединение между двумя иерархическими листами. Примечание: Вы можете использовать GLabels и иерархические выводы для соединения двух шин, соответственно с синтаксисом (Bus [N. .m]), описанным ранее. Метки, GLabels и невидимые Power Pins (выводы питания) Вот несколько пояснений по разным способам обеспечения соединений иных, чем соединение проводниками. Простые метки Простые метки имеют локальную емкость соединения, то есть, ограничены листом схемы, на котором расположены. Это происходит, благодаря тому факту, что: • Каждый лист имеет номер листа. • Этот номер листа связан с меткой. Итак, если вы размещаете метку “ТОГО” на листе № 3, фактически, настоящая метка это “ТОГО 3“ Если вы также размещаете метку “ТОТО” на листе № 1 (корневой лист), вы фактически размещаете метку, названную “ТОГО 1“, отличную от “ТОТО_3“. Это всегда верно, даже если есть всего одни лист. Глобальные метки Что сказано относительно простых меток, то же истинно для глобальных меток. Таким образом, на том же листе GLabel “TOTO” считается соединенной с локальной меткой “ТОТО”, но не соединенной с GLabel или меткой, названной “ТОТО” на другом листе. Однако GLabel считается, как бы соединенной с соответствующим символом SheetLabel в иерархических символах, помещенных на корневой лист. Невидимые выводы питания Было показано, что они соединены вместе, если они имели одинаковые имена. Таким образом, все выводы питания, объявленные Invisible Power Pins и названные VCC, соединены и формируют эквипотенциал VCC. где бы на листе они ни располагались. Этим объясняется, что если вы располагаете метку VCC на «суб-листе», она не будет соединена с выводом VCC, поскольку эта метка фактически VCC п. где п — номер листа. Если вы хотите, чтобы эта метка VCC была реально соединена с эквипотенциалом VCC, она должна быть явно присоединена к невидимому выводу питания, благодаря VCC порту питания. Автоматическая классификация примечаний
Это (инструмент Schematic Annotation) позволяет вам автоматически назначить указатель для компонента, а для многоэлементного компонента, назначить общий суффикс, чтобы минимизировать количество корпусов. Меню: EESchema Annotation IX, annotate: Hie ran hy Current sheet select items: ---- all components new components only Annotate Del Annotate Закрыть Рис. В.38. Диалоговое окно аннотаций Доступны разные варианты: • Аннотировать все компоненты (выбирается опция all components). • Аннотировать только новые компоненты (то есть, те, чьи ссылки заканчиваются символом «?», подобно «1С?»), выбирается опция new components only. • Аннотировать всю иерархию (установить опцию Project). • Аннотировать только текущий лист (установить Current Sheet). Исключение в особых случаях - автоматическое аннотирование обращается ко всему проекту (все листы) и к новым компонентам, если вы не хотите модифицировать предыдущие аннотации. Пример. Рис. В.39. Размещение элементов с помощью менеджера библиотеки Этот пример показывает размещение 5 элементов, но без аннотации. После аннотирования :
[/home/vlaaimlr/4D-electronlc/partl5_pcb/klcad_projecVtutel/tutelc.sch] i i i-n us! Ries Параметры Помощь Рис. В.40. Автоматическое аннотирование размещенных компонентов Вы можете видеть, что четыре вентиля 74LS00 были обозначены по корпусу U2, и что пятый 74LS00 был обозначен по следующему, U3. Проверка разработки (E.R.C.) Функция Electrical Rules Check выполняет автоматическую проверку. Она выявляет любые ошибки на листе, такие как не присоединенные выводы, не присоединенные иерархические символы, закороченные выходы и т.д. Естественно, автоматическая проверка не безгрешна, а программа, которая дает ей возможность обнаружить все ошибки разработки, еще и не написана. Но подобный контроль очень полезен, поскольку позволяет вам обнаружить множество промахов и небольших ошибок. Фактически, все обнаруженные ошибки должны быть проверены и исправлены до нормального продолжения. Качество проверки прямо зависит от аккуратности, с которой были объявлены электрические выводы при создании библиотеки. ERC ошибки декларируются, как «errors» или «warnings». Использование Управление E.R.C. запускается иконкой верхнего инструментального меню. На элементах, вызывающих ошибки ERC (выводах или метках), располагаются маркеры. Щелкните по маркеру, чтобы увидеть соответствующую диагностику. Вы можете также удалить маркирование ошибок в этом меню. Пример ERC:
EESchema (2006-08-28) [noname.sch] t-l Lb lil Рис. B.4L Пример применения проверки ERC Можно увидеть 4 ошибки: • Два выхода соединены вместе. • Два входа остались не присоединенными. • Ошибка с невидимым портом питания (пропущен флаг питания). Замечание 1: Щелкните по маркеру для отображения диагностики. Замечание 2: Нет ничего необычного, получать ошибки (предупреждения) на выводах питания, тогда как все выглядит нормально (посмотрите на пример выше). Причина этого, для большинства разработок, в том, что питание подается на разъемы, которые не являются power sources - источниками питания (подобно выходу регулятора, который декларируется как Power out - выход питания). Таким образом, ERC не обнаружит никаких выводов выхода питания для проверки этих соединений, и объявит их не подключенными. Вы должны разместить PWR_FLAG на таких портах питания (который символизирует фактический выход питания).
Рис. В.42. Проверка ERC после подключения питания Маркер ошибки в этом случае исчезает. Конфигурация Закладка Параметры диалога ERC позволяет вам конфигурировать правила присоединения, чтобы определ те условия, при которых выводятся сообщения об ошибках и предупреждения. Правила могут быть изменены щелчком по выбранному квадрату матрицы, заставляя его цикличе проходить через выбор: нормально, предупреждение, ошибка (normal, warning, error). Файл отчета ERC Файл отчета ERC может быть сохранен установкой опции Write ERC report. Расширение для файла отчета ERC - .егс. Вот пример: Рис. В.43. Пример файла отчета проверки правил соединения Создание Netlist Команда позволяет вам создать файл спецификации (netlist) для вашей разработки. Netlist - это файл, который описывает компоненты и электрические соединения между компонентами Здесь, таким образом, можно найти:
• Список компонент • Список соединений между компонентами, называемых эквипотенцалами сетей. Есть разные форматы netlist. Иногда список компонентов и список эквипотенциалов - это два отдельных файла. Netlist - основа при использовании программ ввода описания схемы, поскольку netlist мост к другим CAD программам электроники, подобно: • РСВ программам. • Симуляторам. • PAL (и других программируемых IC) компиляторам. Eeschema поддерживает несколько форматов netlist: • Pcbnew формат (печатные платы). • ORCAD РСВ2 формат (печатные платы). • CADSTAR формат (печатные платы). • Spice формат для симуляторов (формат Spice также используется другими симуляторами). Формат Netlist Нажмите клавишу на верхней инструментальной панели для открытия диалогового окна создания netlist: Рис. В.44. Диалоговое окно создания netlist на вкладке Spice Используя разные закладки, вы можете выбрать желаемый формат, как формат по умолчанию. В Spice формате вы можете генерировать netlists либо с эквипотенциальными именами (предпочтительно), либо с номерами сетей (старые версии Spice принимают только номера) После щелчка по клавише Netlist, вы получите вопрос об имени файла netlist. Примечание'. При больших проектах генерация netlist может занять несколько минут. Примеры Вы можете увидеть ниже разработку, использующую библиотеку PSPICE (по умолчанию могут быть загружены не все библиотеки, отсутствующие следует загрузить, используя пункт Libs and Dir раздела Параметры основного меню):
[/home/vladlmlr/4D-electronlc;partl5_pcb7klcad_proJect7tutel/tutorlsplce.sch] Ы i~h M Files Параметры Помощь Z 4 X 3 0000 Y 0 6500 x -2 8500 у -3,483 |Inch H \ П Й О < S I» Рис. В.45. Генерация netlist для симулятора Spice Структура Pcbnew netlist: # EESchema Netlist Version 1.0 generee le 21/1/1997-16:51:15 ( (32E35B76 $noname C2 INF {Lib=C} (1 0) (2 VOUT_1) ) (32CFC454 $noname V2 AC_0.1 {Lib=VSOURCE} (1 N-000003) (2 0) ) (32CFC413 $noname Cl 1UF {Lib=C} (1 INPUT_1) (2 N-000003) ) (32CFC337 Snoname VI DC_12V {Lib=VSOURCE} (1 +12V) (2 0) ) (32CFC293 $noname R2 10K {Lib=R} (1 INPUT_1) (2 0) ) (32CFC288 $noname R6 22K {Lib=R} (1 +12V) (2 INPUT_1) ) (32CFC27F $noname R5 22K {Lib=R} (1 +12V) (2 N-000008) ) (32CFC277 $noname R1 10K {Lib=R} (1 N-000008) (2 0) ) (32CFC25A $noname R7 470 {Lib=R} (1 EMET_1) (2 0) ) (32CFC254 $noname R4 IK {Lib=R} (1 +12V) (2 VOUT_1) ) (32CFC24C $noname R3 IK {Lib=R} (1 +12V) (2 N-000006)
(32CFC230 Snoname Q2 Q2N2222 {Lib=NPN} (1 VOUT_1) (2 N-000008) (3 EMET_1) (32CFC227 Snoname QI Q2N2222 {Lib=NPN} (1 N-000006) (2 INPUT_1) (3 EMET_1) # End В формате PSPICE netlist выглядит следующим образом: * EESchema Netlist Version 1.0 (Spice format) generee 24/10/2001-11:51:42 .model Q2N2222 npn (bf=200) .AC LIN 300.100 1MEG .PROBE R8 DIRV_1 0.2 . 2K R9 +12V INVS_1 470 Q3 INVS_1 VOUT_1 DIRV_1 Q2N2222 V2 N-000001 0 AC 0.1 Cl INPUT_1 N-000001 1UF VI +12V 0 cd. 12V R2 INPUT_1 0 10K R6 +12V INPUT_1 22K R5 +12V N-000010 22K R1 N-000010 0 10K R7 EMET_1 0 470 R4 +12V VOUT_1 IK R3 +12V N-000008 IK Q2 VOUT_1 N-000010 EMET_1 Q2N2222 QI N-000008 INPUT_1 EMET_1 Q2N2222 . end Примечание: Многие версии программного обеспечения, которые используют netlists, не принимают пробелы в именах компонент, выводов, эквипотенциалов или других. Избегайте пробелов в метках или именах и значениях полей компонент или их выводов. Таким же образом, некоторые символы, отличные от букв и цифр, могут вызвать проблемы. Заметьте, что это ограничение не относится к EESchema, но к форматам netlist, которые могут стать непереводимы, или к программам, которые используют эти netlists. PSPICE netlists Для симулятора Pspice вы должны включить некоторые командные линии в сам netlist (.PROBE, .AC...). Любые строки текста, включенные в чертеж схемы с ключевым словом .PSPICE, будут вставлены (без ключевого слова) в верхнюю часть netlist. Например, если вы включите следующий текст (а не метку!): .PSPICE .PROBE строка .PROBE будет вставлена в netlist. В предыдущем примере были вставлены три линии с помощью этой техники. Кроме того, отметьте, что эквипотенциал GND должен называться 0 (zero) для Pspice. Черчение н печать Вы получаете доступ к обеим командам через меню Files:
g Приложения Переход Система J M.l_________________________________________________________________ [/home/vladimir/4D-electronic7pertl5_pcb;klcad_proJect/tutel/tutorlsplce1sch]^ 16 42 $>)) Ries । Параметры Помощь & Load Schematic Project Jl Save Schematic Project Q Save Current sheet Save Current sheet as. x ii hi rot €1 Exit /home/vladimr/4D-electronic7partl5_pcbAicad_projecVtutel/tutorlg sch noname.sch /home/vladimr/4D-electronic7partl5_pct)Aicad_projecVtutel/tutelc sch /Fiorne/vladirnr/4D-electronic7partl5_pcb/kicad_pro)ect/tutelAutelb sch /home/vladirrir/4D-electronic/partl5_pcbAicad_projecVtutel/tutel.sch £?,!»» й •» г1 г1 * “ <1 9 *> (ПРО ЧН 0 Plot Postscript 0 Plot HPGL И Plot SVG Plot Hplg, Postsenpt, SVG |Z 4 X 1,3500 Y 0.700C x -4.5000 у -3.433i |lnch | KiCad (2006-08-28)/home/vladimir/4-- | [/home/vladimir/4D electronic/partlS ... [vladimir@vladi —] США И1 [ | EZU Рис. В.46. Вид открытого раздела Files Форматы вывода - это POSTSCRIPT или HPGL Вы можете также печатать непосредственно н принтере. Черчение (HPGL формат файла) Команды общего назначения. Эти команды позволяют вам создать файл HPGL. В этом формате вы можете определить: • Число ручек (Pen number) • Толщину линий (Pen thickness) (в 0,001 дюйма). • Скорость прорисовки (Drawing speed в cm/S). • Размер листа. • Офсет печати (Print offsets). Окно диалога установок плоттера:
EESchema Plot HPGL •s Sheet Size j Page Size A4 Page Size A3 Page Size A2 Page Size Al Page Size AO Page Size A Page Size В Page Size C Page Size D Page Size E Pen control: Pen Width Page offset: Plot Offset X Plot current' 1“____________i Plot ALL Гх Отмена I Accept Offset Plot Offset Y Рис. B.47. Использование установок плоттера в программе KiCAD Plot All позволяет вам чертить всю иерархию (файлы генерируются для каждого листа). Plot CURRENT генерирует файл только для текущего листа. Имя файла - это имя листа с расширением .plo. Выбор размера листа Sheet Size обычно выбрано. В этом случае будет использован размер листа, определенный в меню штампа, с масштабом 1. Если выбран другой размер (от А4 до АО, или от А до Е), автоматически выбирается масштаб, заполняющий страницу. Регулирование офсета (Offset adjustments) Для всех стандартных размеров можно установить offsets, центрирующие чертеж так тщательно, как только возможно. Поскольку плоттеры имеют собственные точки в центре или в нижнем левом углу листа, необходимо иметь возможность ввести offset с целью правильного вычерчивания. Обычно: • Для плоттеров, имеющих свою собственную точку в центре листа, offsets должны быть отрицательны и установлены в половину размеров листа • Для плоттеров, имеющих свою собственную точку в левом нижнем углу, offset должен быть установлен близко к 0. Установка offset: • Выберите размер листа • Установите OffsetX и OffsetY. • Щелкните по Accept Offset Чертить (формат файла Postscript) Эта команда позволяет вам создать файлы PostScript.
Рис. В.48. Диалоговое окно создания чертежа в формате PostScript Plot CURRENT генерирует файл только для текущего листа Plot All для всей иерархии (файл с расширением .ps генерируется для каждого листа). Имя файла - это имя листа с расширением .ps. Вы можете снять опцию Print title block (печатать штамп). Это полезно, если вы хотите создать файл postscript для инкапсуляции (формат .eps) при вставке схемы в тестовый процессор. Окно сообщений отобразит имя созданного файла Иконка печати По действию эта команда похожа на предыдущую. Она позволяет вам визуализировать и генерировать файл разработки для стандартного принтера под LINUX (с форматом Postscript) и под Windows. Рис. В.49. Диалоговое окно печати Опция Page Print позволяет вам печатать: • Print CURRENT создает файл только для текущего листа • Print All позволяет вам вывести всю иерархию (файл с расширением .ps генерируется для каждого листа). Опция Color Print позволяет вам выбрать цветную или черно-белую печать. В черно-белом режиме любой цвет, отличный от белого, печатается черным. Эта опция обычно необходима, если вы используете черно-белый лазерный принтер, поскольку цвета печатаются не очень отчетливыми
полутонами. LibEdit, управление компонентами Библиотеки. Все компоненты, используемые в схеме, описаны в библиотеках компонент. Чтобы иметь возможность разумно простого управления этими компонентами, некоторые библиотеки группируют компоненты по теме (по функциям или производителям). Меню управления компонентами Library management позволяет вам создавать библиотеки, добавлять в них, или удалять из них, или трансформировать компоненты. Также, естественно, меню позволяет вам быстро отобразить компоненты библиотеки. Меню управления Есть два меню управления: • ViewLib, которое позволяет вам только увидеть компоненты, и дает быстрый доступ к компонентам. Щелкните по клавише go to library browse верхнего инструментального меню. • LibEdit, которое действительно позволяет вам управлять компонентами и библиотеками. Щелкните по клавише go to library editor. Обзор компонент Компонент в библиотеке - это композиция из: • Его графической проработки (линии, окружности, текстовые поля). • Выводов, которые (они должны соответствовать обычным графическим стандартам - регулярные выводы, или выводы синхронизации, или инверсные, или с низкоуровневой активностью...) описывают электрические свойства, используемые функцией E.R.C. • ЕСоля (текст), такие как ссылки, значения, соответствующее имя модуля для РСВ разработки... Компонент может также иметь псевдонимы, то есть, несколько имен (таким образом, 7400 может иметь несколько псевдонимов, подобных 74LS00, 74НС00, 7437, поскольку все эти компоненты идентичны с точки зрения графической разработки схемы). Использование псевдонимов - очень интересный метод создания полных, но компактно и (относительно) быстро строящихся библиотек. Разработка компонента это: • Определение его основных свойств: имеет ли он много элементов, и как много; имеет ли он второе представление (известное, как Morgan, а в EESchema двойное - нормальное и конвертированное представление). • Прорисовка (исключая выводы) с использованием линий, прямоугольников, окружностей, многоугольников и текста. • Добавляя выводы, внимательно определяйте его графическую проработку, имена и число выводов, и их электрические свойства (вход, выход, 3 состояние, порт питания...). • Добавьте псевдонимы, если другие компоненты имеют такой же вид и цоколевку (или удалите один, если компонент был создан копированием другого компонента). • Добавьте поля, если нужно (и, опционно, имя модуля используемого в программе разработки РСВ) и/или определите их видимость. • Задокументируйте компонент. • Сохраните его в выбранной библиотеке. Загрузка компонента для редактирования Щелкните клавишу go to library editor верхнего инструментального меню для открытия Libedit - окна редактирования компонент и управления библиотекой. Libedit выглядит, как показано ниже:
Part: 74LS00 Unit A Normal Z 3 X 0.9000 Y 0.7000 x 0.9000 у 0,7000 Inch Рис. В.50. Окно редактора библиотек Основная инструментальная панель "З? < ЭЫ ( ® te 4 & П » IFl Port А v 74LSOO Рис. В.51. Вид верхней инструментальной панели Назначение клавиш (слева-направо): • Сохранить текущую библиотеку на жестком диске. • Выбрать текущую библиотеку. • Удалить компонент в текущей библиотеке. • Создать новый компонент. • Загрузить компонент из текущей библиотеки для редактирования. • Сохранить текущий компонент в текущей библиотеке (только в RAM), файл библиотеки на диске н меняется. • Импортировать один компонент. • Экспортировать текущий компонент. • Создать новый файл библиотеки с текущим компонентом. • Редактировать свойства компонента. • Показать представление: нормальное или конвертированное (De Morgan). • Показать ассоциированную документацию (если есть). • Выбор элемента (для многоэлементных компонентов). • Выбор псевдонима (если текущие компоненты имеют псевдонимы). • Редактирование выводов. Независимое редактирование вида вывода и его позиции (дл многоэлементного и De Morgan представлений). Выбор библиотеки и ее содержание Выбор текущей библиотеки возможен иконкой, которая выводит список доступных библиотек для выбора. Когда компонент загружен или сохранен, он останется в этой библиотеке. Примечание: Вы должны загрузить библиотеку в Eeschema, чтобы воспользоваться ею. Текущая библиотека может быть сохранена после модификации щелчком по клавише сохранения. Компонент может быть удален из библиотеки щелчком по клавише удаления. Выбор и сохранение компонента Когда компонент редактируется, реально вы работаете не с компонентом в библиотеке, а с его копией в RAM. Значит, вы можете легко прервать любое редактирование. Компонент может приходить из библиотеки, или из старого компонента. После загрузки он будет отображаться. Выбор
Иконка с изображением микросхемы отображает список всех доступных для выбора и загрузки компонент. Примечание 1: • Если выбран псевдоним (alias) компонента, будет загружен основной компонент (EESchema всегда отображает имя реально загруженного компонента). • Список псевдонимов всегда загружается с каждым компонентом, и может, следовательно, ред актироваться. • Когда вы хотите редактировать только псевдоним, этот псевдоним должен быть выбиран в окне инструментальной панели. Первым в списке стоит корневой компонет. Примечание 2: Альтернативно, команда Import позволяет вам загрузить компонент, который был прежде сохранен командой Export. Сохранение После модификации компонент может быть сохранен в текущей библиотеке, или в новой библиотеке, или экспортирован в файл резервирования. Для сохранения текущей библиотеки используйте команду Update. Однако обновление осуществляется только в RAM (Таким путем вы можете освежить в своей памяти схему). Если кому-то хочется полностью сохранить компонент, он может использовать инструмент сохранения, который модифицирует файл библиотеки на жестком диске. Если вы хотите создать новую библиотеку для этого компонента, используйте команду New Lib. Вам будет задан вопрос об имени новой библиотеки. Примечание: Если вы хотите иметь возможность найти ее, не забудьте добавить ее в список библиотек для поиска EESchema (смотрите конфигурацию EESchema). И еще, можно использовать команду Export для создания файла, содержащего только компонент (этот файл - стандартный файл библиотеки, которая содержит только один компонент). Фактически, команды NewLib и Export идентичны, первый процесс по умолчанию создает библиотеку в директории предопределенной для библиотек, а второй в директории пользователя. Перенос в другую библиотеку Можно легко копировать компонент из исходной библиотеки в другую библиотеку, используя следующую последовательность команд: • Выбрать исходную библиотеку в качестве текущей библиотеки. • Загрузить компонент, который будет перемещен. • Выбрать библиотеку, в которую будет перенесен компонент, как текущую библиотеку. • Сохранить компонент в RAM. • Сохранить модифицированную библиотеку. Отмена редактирования компонента Редактируемый компонент - только рабочая копия реального компонента в библиотеке. Если он не был сохранен в RAM, вы должны только перезагрузить его (или перезагрузить другую библиотеку), чтобы отменить изменения, внесенные в этот компонент. Если вы уже сохранили его в RAM, и вы не сохранили файл библиотеки на жестком диске, можно выйти и запустить EESchema вновь, а затем вновь загрузить его из библиотеки. Создание компонент Новый компонент может быть создан командой New Part. Вам будет задан вопрос об имени компонента для размещения его в библиотеке (это имя одновременно значение поля для редактора схем), ссылке (U, IC, R...), числе элементов в корпусе (например, стандартный компонент 7400 имеет 4 элемента в корпусе), и существует ли конвертированное представление (de Morgan, как стандарт). Если поле ссылки остается пустым, ссылка будет определена, как «U». Все эти данные могут быть заданы позже, но предпочтительней задать их в начале разработки компонента. Начальная работа с компонентом выглядит похожей на это:
KeyW: Z4 X-0.1500 Y 0.750 x-0.1500 > 0.750C [nch Рис. B.52. Создание нового компонента в редакторе библиотеки компонент Создание, базированное на другом компоненте Когда создаваемый компонент в точности похож на другой, подчас выгоднее загрузить этот другой компонент и модифицировать его. Вы должны: • Загрузить компонент, который будет использован в качестве модели. • Модифицировать его имя (редактировать командой Edit Part Properties, или щелкнуть правой клавишей мышки по имени и отредактировать текст). • Модифицировать список псевдонимов и удалить все нежелательные псевдонимы. Вы, возможно, будете должны удалить их все (инструмент редактирования свойств части, вкладка Alias, команда Delete или Delete All), поскольку любые псевдонимы, используемые компонентом, будут связаны впоследствии с новым компонентом. Рис. В.53. Редактирование свойств компонента Редактирование основных характеристик Основные характеристики: • Число элементов в корпусе. • Наличие конвертированного представления. • Ассоциированная документация. • Обновление разных полей. Эти характеристики должны быть правильны, поскольку они запрашиваются при создании компонента, или они приходят из модели компонента.
Итак, как только они модифицированы, необходимо вызвать редактор командой редактирования свойств. Появится окно редактирования, как показано выше, но используется вкладка Параметры. Важные опции, определяющие основные свойства: • Number off Units определяет число элементов в корпусе. • As Convert устанавливается, если компонент имеет двойное представление. Важно, чтобы эти два параметра были заданы корректно, поскольку при редактировании или создании выводов соответствующие выводы всех элементов будут печататься или создаваться вместе Если вы увеличиваете число элементов после создания/редактирования выводов, это увеличение вызовет дополнительную работу. Тем не менее, возможно модифицировать эти параметры в любой момент. Графические опции: • Show Pin Num • Show Pin Name определяют видимость номера вывода и текста имени вывода (этот текст будет видимым, если соответствующие опции активированы). Опция: Pin Inside определяет позицию имени вывода. Этот текст будет отображен внутри контура компонента, если опция активна. В этом случае параметр Pin Name Skew определяет сдвиг текста внутрь. Значение от 30 до 40 (в 1/1000 дюйма) разумно. Пример ниже показывает тот же компонент со сброшенной опцией Pin Inside (обратите внимание на позиции имен и номеров выводов): Part: CS5361 Unit A Normal Z 6 X 0 8000 Y 1 100С x 0,8000 у 1,1000 rnch Рис. В.54. Использование опций вкладки «Параметры» Многоэлементные компоненты Во время редактирования элементов компонент, и если компоненты имеют множество элементов или представлений, вы должны будете выбрать разные элементы или представления этого компонента. Для выбора представления щелкните по клавишам выбора представления (нормальное или конвертированное). Для выбора элемента:
Part: 74LS00 Unit A Normal Z2 X 0.6000 Y-0 1001 x 0.6000 , -0.4000 [nch | Рис. В.55. Выбор части многоэлементного компонента Разработка компонента Правая инструментальная панель позволит вам разместить все элементы компонента: а _р и т а о & и е> Рис. В.56. Правая инструментальная панель редактора Для прорисовки компонента вы можете использовать следующие графические элементы: • Линии (и многоугольники, простые или с заливкой). • Прямоугольники. • Окружности. • Дуги окружности. • Тексты (иные, чем поля и тексты выводов). Выводы и поля (значение, ссылка) стоят особняком, поскольку они не чисто графические элементы. Опции членства в графических элементах Каждый графический элемент может быть определен как обычный или специальный, либо п представления (нормальное или конвертированное), или по различным элементам компонента Меню опций доступно по щелчку правой клавишей мышки по связанному элементу (здесь линия):
Move Line "j^. Line Options Cj Line Delete <S( Center €4 Zoom + Zoom - Zoom Select C4 Auto £> Redraw ie Grid Select X Закрыть Рис. В.57. Выпадющее меню (по щелчку правой клавишей по элементу) или двойным щелчком по этому элементу: Рис. В.58. Диалоговое окно свойств графического элемента Нормальные опции графического элемента: • Common to Units установлено, поскольку обычно разные элементы компонента имеют одинаковое графическое представление, и, таким образом, достаточно нарисовать только один элемент. • Common to convert не установлено, поскольку двойное представление вводится для того, чтобы иметь различные графические изображения с каждым из представлений. Так что впоследствии необходимо нарисовать каждое графическое представление. Для элементов типа polygon - многоугольник (линии проводятся последовательно) опция Filled позволит вам генерировать залитый многоугольник Однако вы можете, таким образом, обратиться к случаю (удача редка) многоэлементных компонент, разработанных с разными графическими типами через установку опции Parts Specific. Каждый элемент тогда должен быть нарисован, и если опция Specific to the representations установлена, для каждого элемента будет необходимо нарисовать два представления. Наконец, может быть интересным установить опцию Common to representations для отрисовки компонент в современном стандарте IEEE, так как основа графики идентична в нормальном и конвертном представлениях. Геометрические графические элементы Их разработка возможна, благодаря инструментам: • Линии и многоугольники, простые или залитые, если опция установлена. • Прямоугольники, определенные по диагонали. • Окружности, определенные по центру и точке на окружности. • Дуги, определенные по начальной и конечной точкам дуги и ее центру. Дуга проходит от 0 до 180 градусов. Графические элементы текстового типа Такая возможность позволяет создать графический текст (свободный текст). Текст всегда читаем, даже если компонент трансформируется (отражается). Создание и редактирование выводов Щелкните по клавише Add pins для создания вывода. Редактирование выполняется после двойного щелчка по выводу. Вы можете щелкнуть правой клавишей, чтобы открыть меню быстрого редактирования:
Рис. В. 59. Выпадающее меню редактирования выводов Выводы должны создаваться тщательно, поскольку любые ошибки будут иметь последствия для разработки в РСВ, или сделают неработоспособной функцию E.R.C. Любой вывод, уже размещенный, может редактироваться, удаляться или перемещаться. Обзор выводов Вывод определяется по его форме (длине, графическому виду), его имени и его номеру, который всегда представлен числом (выводы гнезда PGA определяются буквами и числом, подобно А12 или АВ45) В EEschema pin number определяется множеством из 4 букв или цифр. ДляЕ-R.C. электрический тип (вход, выход, 3 состояния...) должен также быть определен. Если этот тип не будет определен, E.R.C. будет неработоспособно. Примечание: • Избегайте пробелов в именах и номерах выводов. • Имя вывода с инверсным сигналом начинается с символа «~». • Если имя сокращено до этого единственного символа, вывод рассматривается как неименованный. • Имена выводов, начинающиеся с «#», зарезервированы для символов порта питания. • Номер вывода состоит из букв или цифр от 1 до 4. 1,2,..9999 правильные номера, но также Al, ВЗ... (стандартная PGA нотация) или Anod, Gnd, Wine и т.д. Многоэлементные компоненты, двойное представление Давайте вспомним, что, особенно для логических вентилей, символ может иметь два представления (представление, известное как «De Morgan»), a IC могут включать несколько элементов, то есть несколько вентилей NOR. Дня некоторых IC вы можете предпочесть несколько разных элементов графики и выводов. Например, реле может быть представлено с различными элементами: • Катушка. • Переключающий контакт 1. • Переключающий контакт 2. Управление многоэлементными IC и компонентами с двойным представлением гибко. Действительно, вывод может быть: • Общим или специфическим для разных элементов. • Подходящим для обоих представлений или специфическим для каждого. По умолчанию, выводы специфичны для каждого представления каждого элемента, поскольку их номера различны для каждого элемента, а их вид различен для каждого преставления. Когда вывод общий, вам остается нарисовать его только раз (то есть, в случае выводов питания).
Это также случай вида, который почти всегда идентичен для каждого элемента (но есть различия между нормальным и конвертированным представлением). Выводы, базовые опции Компоненты с множеством элементов и/или представлений озадачивают специфической проблемой при создании выводов и редактировании. Так как множество выводов специфично дтя каждого элемента (поскольку нумерация их выводов особенна для каждого элемента) и для каждого представления (поскольку их форма своеобразна для каждою представления), создание и редактирование выводов, похоже, по этой причине становится затяжным и утомительным. Фактически EESchema позволяет одновременную поддержку выводов: • По умолчанию для каждого многоэлементного компонента и/или двойного представления эти модификации осуществляются для всех выводов, относящихся к элементам и представлениям, когда вы создаете, редактируете (исключая форму и номер), удаляете или перемещаете вывод (то есть, для всех выводов, размещенных в тех же координатах). • При разработке модификации, выполняемые для текущего представления, осуществляются для всех элементов. • Номера выводов, модифицируемые для текущего элемента, модифицируются для 2 представлений. • Имена модифицируются независимо. Это поведение зависимости было установлено, чтобы позволить быструю модификацию в большинстве с. [учаев. Эта зависимость при модификации может быть отменена в меню опций (Options Menu), позволяя вам создавать компоненты с элементами и представлениями с полностью независимыми характеристиками Эта опция зависимости управляется: • Если клавиша не активна (не подсвечена), редактирование будет обращаться ко всем элементам и ко всем представлениям. Это нормальная опция. • Если клавиша активна (подсвечена), редактирование будет обращаться только к текущему элементу и в текущем представлении (то есть, к тому, что вы видите на экране). Эта опция редко используема. Выводы, определение характеристик Окно свойств вывода позволяет вам редактировать характеристики вывода. Рис. В.60. Окно диалога свойств выводов Это меню автоматически выпадает, когда вы создаете вывод, или когда дважды щелкните по существующему выводу. Это позволяет вам определить или модифицировать: • Имя и размер имени вывода. • Номер и размер номера вывода. • Длину вывода. • Электрический тип и вид. • Членство (обший для нормального и '’Morgan" представлений или нет). • Невидимый вывод (используется для выводов питания). Напомним: • Имя вывода начинается с «~» для инвертированных сигналов. • Если имя сокращено только до этого символа, вывод считается не именованным • Номер вывода состоит из от 1 до 4 символов (букв или цифр).
1,2..9999 это правильные номера, но так же Al, ВЗ... (стандартная нотация PGA) или Anod, Gnd, Wine ит.д. Очертания выводов Вы можете видеть на рисунке ниже различные очертания выводов: Рис. В.61. Вид выводов в редакторе библиотеки Выбор формы имеет чисто графическое значение и не имеет влияния на E.R.C. или netlist функции. Выводы, электрические разновидности Выбор типа важен для функции E.R.C.: • Выбор банален для input и output выводов IC. • BiDi тип указывает двунаправленные выводы, коммутируемые между входом и выходом (микропроцессорная шина данных, например). • Тип 3 States - это обычный выход с тремя состояниями. • Passive тип используется для выводов пассивных компонент - резисторы, разъемы и т.д. • Unspec тип (неспецифицированный) может использоваться, когда проверка E.R.C. безразлична. • Power In тип должен использоваться для выводов питания компонент. • Power Out для выходов регуляторов. В особенности, если вывод это порт питания (Power In или Out, и объявленные как невидимые Invisible, выводы не отображаются на чертеже схемы, и они автоматически соединяются с другими того же типа и тем же именем Invisible Power Pin). • Вы также можете использовать Open Emitter и Open Collector типы. Выводы, глобальные модификации Можно модифицировать длину всех выводов, или размер текста (имя, номер элемента), используя команду Global из выпадающего меню, чтобы установить один из этих трех параметров. Щелкните по параметру, который хотите модифицировать, и впечатайте новое значение, которое будет относиться ко всем выводам компонента в текущем представлении. Выводы, многоэлементные компоненты и двойное представление Разные элементы представления (такие, как встречаются у 7400, 7402...) могут нуждаться в дополнительном редактировании. Эта дополнительная работа будет минимальна, если следующие меры предосторожности приняты: • Генеральная опция Edit pin part per part должна оставаться сброшенной. • Выводы питания будут создаваться с атрибутом CommonUnit и CommonConvert активизированными (Они могут быть также невидимы No Draw). Корректные установки похожи на эти:
Pin properties Pin Name Размер ( ): <9 ок Pin Shape ** line invert dock dock inv low in low dock low out К Отмена GND Pin Num : 0.050 Размер ("): Electrical Type Input Output Bidi 3 States Passive Unspecified 0Power In Power Out Open coll Open emit 7 0.050 Pin Options Pin lenght: Г300 _ ✓ Common to Units ✓ Common to convert ш No Draw Pin Orient: Right Left ** Вверх Вниз Рис. В.62. Задание свойств выводов GND Когда другие выводы были созданы, они были созданы для каждого элемента и каждого представления. Например, вывод выхода элемента А компонента 7400 был бы создан EESchema в 8 образцах: 2 на кажды элемент (есть 4 элемента А, В, С, D и для каждого элемента нормальное представление и конвертированное представление, известное как Morgan - представление Моргана). Однако сначала получим, возможно, корректно созданный элемент «А» в его нормальном представлении. Будет, таким образом, необходимо для каждого элемента: • Выбрать конвертированное представление и отредактировать форму и длину каждого вывода. • Для других элементов отредактировать номера выводов. Редактирование полей Для уже существующих полей вы можете использовать команды быстрого редактирования щелчком право! клавиши: Move Field ?=, Rotate Field I Edit Reid Center Zoom + Zoom - 5^ Zoom Select > Ql Auto j£> Redraw Grid Select > X Закрыть Рис. В.63. Выпадающее меню редактирования полей в KiCAD Для более полного редактирования или пустых полей необходимо вызвать окно редактирования свойст компонент:
Рис. В.64. Основное меню свойств компонента, открытое на вкладке ссылок Здесь открытазакладкаКеГегепсе. Поля - это тексты, ассоциированные с компонентом, не следует их путать с текстами, принадлежащими графическому представлению этого компонента. На этих полях: • Значение. • Ссылка. • Поле от 1 до 8 (для комментариев). • Имя ассоциированного модуля (шаблон для РСВ). • Имя ассоциированной диаграммы (для компонент, отображающих себя диаграммой в некоторой иерархии). Поля значения и ссылки определяются в процессе создания компонента, и могут здесь модифицироваться. Возможно, это может быть полезно для редактирования поля Name ассоциированного модуля для прямой генерации netlists (для программы РСВ), включая имя (шаблон) модуля Поле Name ассоциированной диаграммы для специального использования в некоторых других программах электронных CAD. Поля от 1 до 8 не имеют оснований для использования в библиотеке, поскольку они скорее могут использоваться при разработке схемы. Для библиотеки редактирование полей Value и Reference позволяет определить их размер и позицию. Важные замечания: • Модификация текста поля value эквивалентно созданию нового компонента, начинающегося со старого, используемого в качестве модели, поскольку этот новый компонент имеет имя, содержащееся в поле значения, когда вы сохраняете его в библиотеке. • Для редактирования невидимого поля (то есть, пустого, поскольку даже если поле имеет невидимый атрибут, оно отображается в LibEdit) вы должны будете использовать окно основного редактирования. Символы порта питания, создание Символы порта питания создаются точно также, как обычные компоненты. Полезно собрать их в подходящую библиотегу, такую KaKPower.lib. Они содержат графический символ (желаемой формы) и входной вывод типа Power Invisible. Они будут поддерживаться, как и обычные компоненты, программами ввода схем. Однако необходимы некоторые предосторожности. Вот символ (power +5V):
Рис. В.65. Вид символа Символ выводится следующим образом: • Вывод Invisible Power, названный +5V (важно, поскольку это имя будет присвоено сети + 5V), номер вывода 1 (номер не важен) и длина нулевая. • Форма типа Line, явный тип - это Power и атрибут Invisible (невидимый). • Графика - небольшой кружок и сегмент от вывода к кружку. • Якорь (anchor) символа на выводе. • Значение +5V похоже на имя вывода для отображения значения этого символа (вывод невидимый по умолчанию, его имя не появляется). • Ссылка #+5V (так и отображается #+5V) подобна имени вывода. Текст ссылки не имеет значения, исключая первую литеру, которая должна быть «#». По соглашению каждый компонент, чья ссылка начинается с этого символа, не будет появляться ни в списке компонент, ни в спецификациях (netlists). Более того, в опциях символа ссылка объявлена как невидимая. Создание нового символа порта питания достаточно просто и быстро, если вы используете другой символ в качестве модели. Вы только должны: • Загрузить модель. • Отредактировать имя вывода (который затем примет имя нового порта питания). • Отредактировать поле Value (то же имя, что и у вывода, если вы хотите, чтобы значение порта питания отображалось). • Сохранить новый компонент. LibEdit, дополнения Компонент состоит из нескольких элементов: • Его графического представления (геометрическое очертание, тексты). • Выводов. • Полей или ассоциированных текстов, используемых пост-процессорами: netlist, список компонентов и т.д. Два поля подлежат инициализации: ссылка и значение. Имя разработки ассоциировано с компонентом и именем ассоциированного отпечатка (footprint). Другие поля - свободные поля, зачастую остающиеся пустыми, они могут заполняться в процессе ввода схемы. Однако управление документацией, ассоциированной с любым компонентом, облегчает изучение, использование и поддержку библиотек. Ассоциированная документация состоит из: • Строки комментария. • Строки ключевых слов, таких как TTL CMOS NAND2..., разделенных пробелами. • Прикрепленного имени файла (например, примечание к приложению, файл pdf). Директория по умолчанию для прикрепленных файлов - это kicad/library/Doc. Ключевые слова позволяют вам выборочно искать компонент по различным критериям отбора. Комментарий и ключевые слова отображаются в различных меню, и особенно, когда вы выбираете компонент в библиотеке.
Компонент также имеет точку закрепления (anchoring point). Поворот или отражение происходят относительно этой точки закрепления, а при размещении, эта точка используется, как позиция ссылки. Так что полезно позиционировать этот якорь аккуратно. Компонент может также иметь псевдонимы, то есть, эквивалентные имена. Это позволяет вам значительно сократить количество компонент, которые нужно создавать (например, 74LS00 может иметь псевдонимы 74000, 74НС00, 74НСТ00). И, наконец, компоненты распространяются в библиотеках (классифицированных по теме или производителю) с целью облегчения управления ими. Позиционирование якоря (anchor) Якорь с координатами 0,0, обозначенный синими осями, отображается на экране: Libedit: /usr/share/klcad/llbrarv/74xx.llb G l± Рис. В. 66. Элемент в окне редактора библиотеки Якорь может быть перемещен следующим образом. Нажмите на правой панели клавишу с изображением якоря, а затем щелкните по новой выбранной для якоря позиции. Чертеж будет автоматически перецентрирован в этой новой точке закрепления. Псевдоним Псевдоним - это другое имя, относящееся к тому же компоненту в библиотеке. Компоненты со сходной цоколевкой и представлением, вследствие этого, могут быть представлены только одним компонентом, имеющим несколько псевдонимов (7400 с псевдонимами 74LS00, 74НС00, 74LS37). Использование псевдонимов позволяет построить полную библиотеку гораздо быстрее. Вдобавок, эти библиотеки, будучи много компактнее, загружаются значительно быстрее. Для модификации списка псевдонимов вы должны выбрать основное окно редактирования (клавиша редактирования свойств компонента на основной инструментальной панели) и выбрать закладку Alias: Properties for 74LS00 lx Параметры Doc Alias; Fields Добавить Delete Delete All X Отмена <?QK
Рис. В.67. Диалоговое окно свойств компонента на вкладке Alias Теперь вы можете добавить или удалить псевдоним. Текущий псевдоним не может быть явно удален, пока он редактируется. Для удаления всех псевдонимов вы должны вначале выбрать корневой компонент (первый компонент в списке псевдонимов в окне выбора основной инструментальной панели). Документация компонента Для редактирования документированной информации необходимо вызвать основное окно редактирования компонент и выбрать закладку Doc: Рис. В.68. Диалоговое окно свойств элемента 74LS00 Предостережение: Удостоверьтесь, что выбран правильный псевдоним или корневой компонент, поскольку эта документация специфична, различна для псевдонимов. Клавиша Copy Doc позволит вам скопировать документированную информацию корневого компонента прямо в текущий редактируемый псевдоним. Ключевые слова Ключевые слова позволяют отыскивать избирательным путем компоненты по определенным критериям отбора (функция, технология). Средство поиска EESchema не чувствительно к регистру. Наиболее ходовые ключевые слова, используемые в библиотеках, это: • CMOS TTL для логических семейств. • AND2 NOR3 XOR2 INV... для вентилей (AND2 - 2х-входовый вентиль И, NOR3 - Зх-входовый вентиль НЕ-ИЛИ). • JKFF DFF... для JK или D-триггера. • ADC, DAC, MUX... • OpenCol для вентиля с выходом, имеющим открытый коллектор. В результате, если в программе ввода схемы (schematic capture software), вы ищете компонент (обратите внимание на«=» в начале команды): =NAND2 OpenCol EESchema отобразит список компонент, имеющих эти два ключевых слова. Документация компонент (Doc) Строка комментария (и ключевые слова) отображаются в различных меню, особенно, когда вы выбираете компонент в списке компонент библиотеки и в меню ViewLib. Если этот файл Doc существует, он также доступен в программе ввода схемы через выпадающее меню после двойного щелчка по компоненту. Файл ассоциированной документации (DocFileName) Показывает прикрепленный файл (документация, схема приложения), доступны pdf файл, чертеж и т.д.
Библиотека символов Вы легко можете компилировать файл библиотеки графических символов, содержащий часто используемые символы. Это может быть использовано при создании компонент (треугольник, изображающий вентили И, ИЛИ, исключающее ИЛИ) для сохранения и последующего использования. Эти файлы запоминаются по умолчанию в директории библиотек, и имеют расширение .sym. Символы не собираются в библиотеки, подобно компонентам, поскольку они, как правило, не столь многочисленны. Экспорт/создание символа Компонент может экспортироваться, как символ, инструментом Export current drawing правой инструментальной панели. Вы обычно создаете только одно изображение, так что неплохо бы удалить все выводы, если они есть. Импорт символа Позволяет вам добавить изображение к компоненту, который вы редактируете. Символ импортируется средством Import existing drawings правой инструментальной панели. Импортированное изображение добавляется так же, как оно было создано в существующих изображениях. Viewlib Viewlib позволяет вам быстро проверить содержание библиотек. Viewlib вызывается средством go to library browse. Основной экран: Browse library: None Q ЬЙ LXi Рис. В.69. Окно проводника библиотеки Для проверки библиотеки вы должны выбрать ее в списке, отображаемом слева. Ее содержание появится во втором списке, который позволит вам выбрать компонент.
Browse library: 74xx Part A power 4 7400 device 7402 conn 74469 linear 74HC00 regul = 74HC02 74HC04 cmos4000 adr dac 74HC14 J74HC245 74HC595 memory XillflZ special microconti microchip analog swi I71HC74 74HC86 74HCTOO 74HCT02 “ 74HCT04 v 74HCT541_PWR I ^4HC74 "Doc: "Dual D FliuFlnp. Set & Rt set KeyW TTL DFF Current Part: <74H Z 16 X 5.4000 Y 5,2500 x 5,4000 5,2500 [ncli Рис. B.70. Выбор компонентав окне проводника библиотеки Инструментальная панель Viewlib: 5 о | И 13 д и I 11 Рис. B.71. Инструментальная панель проводника библиотеки Назначение клавиш панели (слева-направо): • Выбор желательной библиотеки (также выбирается в отображенном списке). • Выбор компонента (также выбирается в отображенном списке). • Отобразить предыдущий компонент. • Отобразить следующий компонент. • Управление масштабом отображения (четыре клавиши). • Выбор представления (нормальное или конвертированное), если есть (две клавиши). • Выбор элемента, если компонент многоэлементный (окно). • Отображение ассоциированных документов (если есть).
Pcbnew Pcbnew это мощная программа для создания печатных плат (printed circuit board), работающая с разными операционными системами: как с Linux, так и с Windows. Она используется совместно с программой разработки схем (schematic capture) Eeschema, которая обеспечивает Netlist файл - описывающий электрические соединения РСВ для разработки. Вторая программа - CVPCB используется для назначения каждого компонента в Netlist, полученном в Eeschema, модулю, который используется в Pcbnew. Это может быть сделано либо интерактивно, либо автоматически, используя эквивалентность файлов. Pcbnew управляет библиотеками модулей. Каждый модуль это чертеж физического компонента, включающий его footprint - план контактной площадки, обеспечивающий соединение с компонентом. Требуемые модули автоматически загружаются во время чтения Netlist, производимого CVPCB. Pcbnew интегрирует, автоматически и немедленно, любые модификации цепи, удаляя ошибочные дорожки, добавляя новые компоненты или модифицируя любые значения (и при определенных условиях любые ссылки) старых или новых модулей, согласно с электрическими соединениями, появляющимися в схеме. Pcbnew обеспечивает отображение не выполненных соединений (rats nest display), тонкая линия соединяет контактные площадки модулей, которые соединены по схеме. Эти соединения динамически перемещаются вместе с перемещениями дорожек и модуля. Pcbnew имеет активную проверку Design Rules Check (DRC), которая автоматически обнаруживает любые ошибки разводки в реальном времени. Pcbnew может автоматически генерировать рисунок дорожек с (или без) термальных зазоров (thermal breaks) на площадках. Pcbnew имеет простую, но эффективную авторазводку (autorouter) для помощи в изготовлении плат (circuit). Pcbnew поддерживает специфические опции для изготовления схем СВЧ (ultra high frequency) (трапециевидные и сложной формы площадки, автоматическую прорисовку катушек и т.д.). Pcbnew отображает элементы (дорожки, площадки, тексты, рисунки) в реальном масштабе и соответственно с персональными настройками: • Полное или контурное отображение. • Отображение дорожек/площадок допуска. Главные особенности разработки Pcbnew имеет внутреннее разрешение в 1/10000 дюйма. Pcbnew работает с 16 слоями меди, плюс 12 технических слоев (сетчатый трафарет, маска припоя, адгезионный компонент, флюс, рисунки и комментарии и т.д.) и управляет в реальном времени индикацией тонкими линиями (rats nest) пропущенных дорожек. Отображение РСВ элементов (дорожек, площадок, текста, рисунков) может быть определено пользователем: • Полное или контурное. • С или без допуска дорожек. • Скрытое для некоторых элементов (медные слои, технические слои, зоны меди, модули), что полезно для высокоплотных многослойных плат. Для сложных цепей отображение слоев, зон, компонент может быть удалено выборочным путем для улучшения восприятия на экране. Модули могут поворачиваться на любой угол с шагом в 0,1 градуса. Площадки могут быть круглыми, прямоугольными, овальными или трапецеидальными (последние необходимы при производстве СВЧ цепей). Вдобавок некоторые базовые площадки могут быть сгруппированы. И размер каждой площадки, и слои, где они появляются, могут регулироваться. Сверление отверстий может быть скорректировано (offset). Pcbnew может автоматически генерировать разводку дорожек с автоматической генерацией термальных зазоров (thermal breaks) вокруг близко расположенных площадок. Редактор модулей (Module Editor) доступен с инструментальной панели Pcbnew. Редактор позволяет создать или модифицировать модуль из РСВ или библиотеки, а затем сохранить тот или другой. Модуль, сохраненный в РСВ, одновременно может быть сохранен в библиотеке. Дополнительно все модули на РСВ могут быть сохранены в библиотеке созданием footprint archive (архив планов площадок). Pcbnew генерирует чрезвычайно простым образом все необходимые документы: • Файлы для фотоплоттера в формате GERBER. • Файлы для сверления в формате EX CELL ON и планы сверления. • Файлы для трассировки и сверления в HPGL формате. • Файлы трассировки и сверления в POSTSCRIPT формате. • Локальную распечатку. Замечание: Pcbnew требует 3 клавишную мышку (Зя клавиша не строго необходима, но крайне полезна для многих команд). И, наконец, следует учесть, что программа создания схемы EESchema и CVPCB требуются для создания необходимых netlists.
Модификация предопределенной конфигурации Файл конфигурации по умолчанию, kicad.pro, находится в kicad/template. Он используется в качестве начальной конфигурации для всех новых проектов. Этот файл конфигурации может быть модифицирован, в основном для изменения списка библиотек. Чтобы это сделать: • Запустите Pcbnew, используя kicad или непосредственно (c:\kicad\winexe\Pcbnew.exe). (Linux: запустите /usr/local/kicad/linux/kicad или iusr/local/kicad/linux/Pcbnew). • Выберите Preferences - Libs and Dir (Настройки - библиотеки и директории). • Отредактируйте, как требуется. • Сохраните модифицированную конфигурацию с помощью Save Cfg в kicad/template/kicad.pro. Основные операции Можно получить доступ к разным операциям, используя: • Панель меню (наверху экрана). • Иконки в верхней части экрана (общая практика). • Иконки в правой части экрана (специфическое применение или инструменты). • Иконки левой части экрана (опции отображения). • Клавиши мышки (предоставляют меню опций). В особенности: • Правая клавиша мышки открывает всплывающее меню, содержание которого зависит от элемента под курсором (масштабирование отображения, сетка и редактирование элемента). • Клавиатура (функциональные клавиши Fl, F2, F3, F4, Shift, Delete, +, - Page Up, Page Down и space). Клавиша Esc обычно прерывает выполняющуюся операцию. Снимок экрана ниже иллюстрирует некоторые возможности доступа к операциям: Приложения Переход Система ____________________________________________________________________________________________19:15 Ф) /home/vladlmlr/4D-electronlc/partl5_pcb/klcad_project/tutel/tutel.brd LJ ffi И [ Files Параметры Dimensions Miscellaneous Postprocess 3D Display Помошь DO J В Й X® SB n □« Copper v g Й | Гтrack 17,0 V Via 45.0 V Gnd 50.0 xz V Sb.KJCad (2006-OB-2B) ;home/vladimrr/4.. | Aiome/vladimir/4D-electronic7partl5 p.. [vladimir@vladi I Рис. В.72. Окно редактора РСВ Команды с использованием мышки Левая клавиша: • Одиночный щелчок: отображает характеристики модуля или текста под курсором на нижней панели состояния. • Двойной щелчок: отображает редактор (если элемент редактируемый) для элемента под курсором. Центральная клавиша/колесико: • Быстрое масштабирование вида. Операция быстрого масштабирования вида доступна только для Зх-клавишной мышки. Следовательно, она
имеет преимущества перед 2х-клавишной. Удержите центральную клавишу и нарисуйте прямоугольник для масштабирования очерченного пространства. Вращение колесика мышки осуществляет увеличение и уменьшение (zoom in и out). Правая клавиша: • Отображает всплывающее меню. Операции с блоками Операции перемещения, инвертирования (отражения), копирования, поворота и удаления блока все доступны из всплывающего меню. Вдобавок вид может масштабироваться для пространства, очерченного блоком. Каркас блока трассируется при перемещении мышкой, пока удерживается нажатой левая клавиша мышки. Операция прекращается при отпускании клавиши. Удержание одной из клавиш Shift или Ctrl, или обеих клавиш Shflt и Ctrl вместе, пока блок вытянут операцией инвертирования, поворота или удаления, автоматически выбирает операцию, как показано ниже: • Левая клавиша мышки удержана нажатой - трассируется каркас перемещающегося блока. • Shift + левая клавиша удерживаются - трассируется каркас для инвертируемого блока. • Ctrl + левая клавиша удерживаются - трассируется каркас для поворачивающегося блока на 90°. • Shft+Ctrl + левая клавиша удерживаются - трассируется каркас для удаляемого блока. • Центральная клавиша мышки удерживается - трассируется каркас для масштабирования блока. При перемещении блока: • Переместите блок на новое место и используйте левую клавишу мышки для установки элемента. • Для прекращения операции используйте правую клавишу мышки и выберите из меню Cancel Block - прекратить операцию (или нажмите клавишу Esc). Альтернативно, если не нажаты клавиши при прорисовке блока, используйте правую клавишу мышки для вызова всплывающего меню и выберите требуемую операцию. Для каждой операции с блоком окно выбора показывает действия, которые могут быть ограничены только для некоторых элементов. Выбор размера сетки Курсор при компоновке элементов перемещается по сетке. Отображение сетки может быть включено или выключено с помощью иконки на инструментальной панели слева. Любой из предустановленных размеров сетки или определенных пользователем размеров может быть изменен с помощью окна всплывающего меню или выпадающего селектора инструментальной панели в верхней части экрана. Размер определенной пользователем сетки устанавливается в меню опцией Dimensions - User Grid Size (размеры - пользовательский размер сетки). Регулирование размеров отображения (ZOOM) Для изменения ZOOM: • Откройте всплывающее окно POP-Up (используя правую клавишу мышки) и выберите требуемый размер. • Или используйте функциональные ключи: F1 - Увеличение (zoom in). F2 - Уменьшение (zoom out). F3 - Перерисовать изображение. F4 - Центрировать вид по текущей позиции курсора . • Или поверните колесико мышки. • Или удержите нажатой центральную клавишу мышки и измените прямоугольник для масштабирования отображенного пространства. Отображение координат курсора Координаты курсора отображаются в дюймах (дюймы или “) или в миллиметрах (mm), как выбрано с помощью иконок Т или «тт» на левой инструментальной панели. Какие бы единицы ни были выбраны, Pcbnew всегда работает с точностью в 1/10,000 дюйма. Панель состояния внизу экрана дает: • Т е кущие установки zoom. • Абсолютную позицию курсора. • Относительную позицию курсора. Заметьте, относительные координаты (х,у) могут быть установлены в 0,0 в любом месте нажатием пробела. Позиция курсора затем отображается относительно этой новой точки. • Дополнительно, относительная позиция курсора может отображаться в полярных координатах (ray + angle - радиус + угол). Режим можно включить или выключить, используя иконку левого инструментального меню.
X 2В X 5,7000 7 4,0500 1x5,7000 у 4,0500 Inch Рис. В.73. Панель отображения координате программе Pcbnew Быстрые команды с клавиатуры (Hot Keys) Некоторые команды доступны непосредственно с клавиатуры (как в верхнем, так и в нажнем регистре). Опции: • Delete (или Del). Удаляет модуль или дорожку (только, если инструмент Module или track активирован). • V, если иструмент track активен, переключает рабочий слой (Component - Copper) или помещает переходное отверстие, если дорожка трассируется. • R, поворачивает модуль. • S, переключает модуль на противоположный слой (Component - Copper). • М, перемещает модуль (размещение с помощью щелчка левой клавиши мышки). • G, перетаскивает модуль (размещение с помощью щелчка левой клавиши мышки). • + и -. Активный слой = следующий или предыдущий слой. • Page Up. Активный слой = component (компонентный). • Page Down. Активный слой = copper (медный). Опер ации с блоками Операции по перемещению, инвертированию (отражению), копированию, вращению и удалению блока доступны через всплывающее меню. Дополнительно вид может масштабироваться так, как это описано выше. Каркас блока прочерчивается при перемещении мышки с удержанием левой клавиши. Операция завершается при отпускании клавиши. Удерживая нажатой одну из клавиш Shift или Ctrl, или обе Shflt и Ctrl вместе, или Alt, в то время, как блок выполняет операцию инвертирования, вращения удаления или копирования, вы автоматически получаете одну из возможностей, показанных в ниже: • Удерживается левая клавиша мышки - перемещение блока • Shift + левая клавиша удерживаются - инвертирование (отражение) блока • Ctrl + левая клавиша удерживаются - вращение блока на 90°. • Shft+Ctrl + левая клавиша удерживаются - удаление блока • Alt + левая клавиша удерживаются - копирование блока При начальном выборе перемещения блока (ни одна из клавиш не удержана) может быть выбрана одна из альтернативных опций в меню, всплывающем по нажатию правой клавиши мышки. Любая из команд выше может быть прекращена через то же всплывающее меню или нажатием клавиши Esc: Гх Cancel Block Zoom Block (Midd butt drag) fc? Place Block Copy Block (shift + drag mouse) Ф Flip Block (alt + drag mouse) ф Rotate Block (Ctrl + drag mouse) @ Delete Block (shift+ctrl + drag mouse) Center €4 Zoom + Zoom - Ci Zoom Select > & Auto Redraw зй: Grid Select > X Закрыть Рис. В.74. Выпадающее меню работы с блоками Меню, опции Панель меню предоставляет доступ к файлам (загрузка и сохранение), опциям конфигурации, печати, черчения и к файлам помощи. £11«‘Ь Д_дрчмг-|ры 'нт»»». М19><.»«11.1пеииъ Рц'.1»мисевь JD DUpi.iy Qonouv Файлы Рис. В. 75. Основное меню программы Pcbnew
Настройки (Preferences) Рис. 76. Меню работы с файлами Позволяет загрузить и сохранить файлы РСВ (printed circuits), а также распечатать и начертить плату (circuit board). Также возможно экспортировать (в формате GenCAD 1.4) схему для использования с автоматическим те стиров анием. Libs and Dir it Colors J General Options Display Options 3b Font selection > VJ Language > Save Setup Read Setup Рис. В.77. Меню настроекPcbnew Позволяют: • Выбор библиотек модулей. • Выбор цветов для отображения слоев и других элементов. Также возможно включить и выключить отображение элементов. • Управлять основными опциями (единицы измерения, число слоев и т.д). • Управление другими опциями отображения. Размеры (Dimensions): Tracks and Vias User Grid Size Texts and Drawings О Pad Settings U Save Setup Рис. В.78. Меню размеров Pcbnew Позволяет регулировать: • Ширину дорожек и тип и размер отверстий (vias). • Размер пользовательской сетки. • Размер текста и ширины линии для прорисовки. • Размеры и характеристики площадок. Разное (Miscellaneous): иЙ Global Deletions : : List nets & Clean tracks Swap layers'
Рис. В.79. Меню разное Pcbnew Предоставляет доступ к: • Полному удалению элементов. • Списку сетей. • Удалению ненужных сегментов дорожки. • Переключению элементов между слоями. Заключительная обработка (Postprocess): F 1 Create Modules Pos p7| Create Drill file [C Create Cmp file Рис. В.80. Меню заключительной обработки Pcbnew Позволяет создавать следующие файлы: • Размещение компонент (для автоматического размещения). • Сверления. • Ассоциации компонент/модулей (обычно генерируется CVPCB). Трехмерное отображение (3D Display): Рис. В.81. Трехмерное изображение в Pcbnew Помощь в Pcbnew Предоставляет доступ к файлам помощи и информации о версии (Pcbnew About). Команды иконок верхней инструментальной панели Эта инструментальная панель дает доступ к важным функциям Pcbnew. □ & □ 1 В .К ® 1 в а I Ч й & И П Ч I Copper j^'1 & it I [Track 17,0 ~[v 11 [ Via 45,0 [v I Grid 50,0 ~[ vj I ] | v| Рис. В. 82. Верхняя инструментальная панель Pcbnew Назначение клавиш (слева-направо): • Создать новую печатную плату. • Открыть старую печатную плату. • Сохранить печатную плату.
• Выбор размера страницы и модификация свойств файла. • Открыть редактор модуля (Modedit) для отображения/редакции библиотеки или pcb модулей. • Удалить элементы, выбранные при операции перемещения блока. • Отменить последнее удаление. • Отобразить меню печати. • Отобразить меню черчения (plot menu). • Zoom in (увеличение) и Zoom out (уменьшение относительно центра экрана), две клавиши. • Перерисовать экран и автоматическое масштабирование (Zoom), две клавиши. • Найти модуль или текст. • Netlist опции (выбор, чтение, тестирование и компиляция). • DRC (Design Rule Check), автоматическая проверка дорожек. • Режим модуля, когда активно, доступны опции модуля во всплывающем окне. • Режим разводки, когда активно, доступны опции разводки (routing options) во всплывающем ок • Выбор рабочего слоя (окно). • Выбор толщины дорожки уже используемой. • Выбор размера отверстия уже используемого. • Выбор размера сетки. • Выбор масштаба отображения (zoom). Команды иконок правой инструментальной панели Эта панель дает доступ к инструментам для: • Размещения модулей, дорожек, зон меди, текстов. • Подсветки сети. • Создания примечаний, графических элементов. • Удаления элементов. к 4 О ?- т ГП ❖ * Рис. В.83. Вид правой инструментальной панели Pcbnew Назначение клавиш (сверху-вниз): • Прекращение работы инструмента. • Подсвечивание сети, выбранной щелчком по дорожке или площадке. • Отображает локальные не выполненные соединения (ratsnest) (площадка или модуль). • Добавить модуль из библиотеки. • Размещение дорожек и отверстий. • Размещение зон (плоскость меди). • Нарисовать линию на технических слоях (то есть, не на слое меди). • Нарисовать окружность на технических слоях (то есть, не на слое меди).
• Нарисовать дуги на технических слоях (то есть, не на слое меди). • Размещение текста. • Нарисовать размер на технических слоях (то есть, не на слое меди). • Нарисовать выравнивающие метки (появляются на всех слоях). • Удалить элемент, на который указывает курсор (смотрите примечание ниже). Примечание: При удалении, если под курсором несколько перекрывающихся, приоритет отдается наименьшему (по убыванию приоритета - дорожка, текст, модуль). • Функция Undelete верхней инструментальной панели позволяет отменить последнее удаление. • Настройка коррекции (Offset adjust) для файлов сверления и размещения. Команды иконок левой инструментальной панели Эта инструментальная панель дает опции отображения и управления: lAj V © У ш Рис. В. 84. Вид левой инструментальной панели Pcbnew Назначение клавиш (сверху-вниз): • Включает/выключает DRC (Design Rule Checking). Предостережение: когда DRC выключено, могут быть сделаны неправильные соединения. • Отображение сетки включить/выключить (Заметьте: мелкая сетка может не отображаться). • Отображение относительных полярных координат на панели состояния включить/выключить. • Отображение/ввод координат в дюймах или миллиметрах (две клавиши). • Изменить отображение курсора. • Отобразить основные ratsnest. • Отобразить ratsnest модуля динамически, как они перемещаются. • Возможно/невозможно автоматическое удаление дорожек при их перерисовке. • Отображение медных зон включить/выключить. • Отображение площадок в эскизном режиме включить/выключить. • Отображение дорожек и отверстий в эскизном режиме включить/выключить. • Высококонтрастный режим отображения включить/выключить. В этом режиме активный слой отображается нормально, все другие слои отображаются серыми. Полезно для работы с многослойными цепями. • Разрабатывается Всплывающие окна и быстрое редактирование элементов Щелчок правой клавиши мышки открывает всплывающее окно, содержание которого зависит от элемента, на который указывает курсор. Это дает немедленный доступ к: • Изменениям отображения (центр отображения на курсоре, zoom in или out или выбор масштаба отображения - zoom).
Установка размера сетки. Дополнительно, щелчок правой клавиши по элементу дает возмо часто модифицируемые параметры элементов. Ниже показаны всплывающие окна: 1. Без выбранного элемента. 2. С выбранной дорожкой. 3. С выбранным модулем. Select Working Layer г- <5), Center 3^ Zoom + <±1, Zoom - 'Д Zoom Select Qk Auto Redraw :iS; Grid Select X Закрыть Рис. В.85. Всплывающее меню 1 Рис. В.86. Всплывающее меню 2 Move Module (М) 3& Drag Module (G) Rotate Module + (R) Rotate Module - J} Invert Module (S) if Edit Module Delete Module § Select Working Layer «4 Center Zoom + Zoom - Zoom Select > l-Jk Auto Л Redraw iw Grid Select > I---------------------- X Закрыть Рис. В.87. Всплывающее меню 3
Реализация схемы Соединение схемы с платой (Printed Circuit): Flow Chart Рис. В.88. Структура работы с программой Pcbnew Схема соединяется с Pcbnew посредством файла Netlist, который обычно генерируется используемой программой построения схемы. Заметьте: Pcbnew принимает файлы Netlist с форматом EESchema или ORCAD РСВ 2. Файл Netlist, первоначально сгенерированный, как правило, некомплектен, поскольку отсутствует привязка к модулям, которые соответствуют различным компонентам, используемым при создании схемы. Следовательно, необходима промежуточная операция по генерации файла для связывания компонент/модулей. CVPCB используется для создания такого файла, который называется * .СМР. CVPCB также обновляет файл Netlist, используя эту информацию. Pcbnew читает модифицированный файл Netlist * .NET и, если есть, файл * .СМР. В случае если модуль изменялся непосредственно в Pcbnew, файл * .СМР автоматически обновляется, так что необходимость в перезапуске CVPCB отпадает. Процедура создания платы (Printed Circuit) После создания требуемой схемы: Сгенерируйте netlist, используя Eeschema. Сопоставьте каждому компоненту в Netlist, произведенном Eeschema, соответствующий модуль, используемый на плате, с помощью CVPCB. Запустите Pcbnew и прочитайте модифицированный Netlist (при этом также прочитывается файл с выбором модулей). Pcbnew автоматически загрузит все модули. Модули теперь могут быть размещены на плате вручную или автоматически, а дорожки разведены. Процедура обновления платы (Printed Circuit) Если схема модифицировалась, следующие шаги должны быть повторены: Сгенерируйте новый файл netlist, используя Eeschema. • Если изменения в схеме предполагают появление новых компонент, соответствующие модули
должны быть назначены с помощью CVPCB. Запустите Pcbnew и перечитайте модифицированный Netlist (при этом также перечитывается файл с выбором модулей). Pcbnew автоматически загрузит любые новые модули, добавит новые соединения и удалит липшие. Рабочие слои Pcbnew работает на 28 различных слоях: 16 слоев медных (или разводки дорожек). 12 дополнительных технических слоев. Медные слои Есть обычные рабочие слои, используемые при автоматической разводке, на которых могут размещаться дорожки. Слой 1 - это медный (под пайку) слой. Слой 16 - это компонентный слой Другие слои - внутренние слои (от L2 до L15). Выбор числа слоев Для помощи в навигации между слоями необходимо выбрать число рабочих слоев. Это можно сделать на панели меню выбором Preferences — General Options (Свойства - Основные опции). Рис. В.89. Диалоговое окно задания основных свойств проекта в Pcbnew Затем ввести требуемое количеств слоев (от 1 до 16). Дополнительные технические слои Некоторые слои ассоциированы в пары, другие нет. Когда они появляются парами, это сказывается на поведении модулей. Элементы, создающие модуль (площадки, чертеж и текст), появляющиеся на слое (пайки или компонентном), появляются на другом комплементарном слое, когда модуль инвертируется (отражается). Технические слои это: Адгезивные слои (медный и компонентный). Они используются в адгезивных накладках для установки SMD компонент на плате, в основном перед пайкой волной. Слои паяльной пасты крепящей SMD (медный и компонентный). Используются для выполнения масок, чтобы позволить паяльной пасте разместиться на площадках компонент поверхностного монтажа, обычно, перед запивкой припоем. Теоретически только площадки поверхностного монтажа занимают эти слои. Слои трафарета - Silk Screen (медный и компонентный). Это слои, где появляются чертежи компонент. Слои маски припоя (медный и компонентный). Это предопределенные маски припоя. Обычно все площадки появляются на одном или другом из этих слоев (или на обоих для сквозных площадок) для предотвращения покрывания площадок лаком. Слои для общего использования: Комментарии Е.С.О. 1 Е.С.О. 2 Рисунки Это слои для любого применения. Они могут быть использованы для текста такого, как инструкции по сборке или монтажу, или конструкторские чертежи, чтобы использоваться при создании файла сборки или обработки. Слой кромки Edges РСВ. Этот слой зарезервирован для прорисовки контура платы (circuit board outline). Любые элементы (графика, тексты), размещенные на этом слое, появляются на всех других
слоях. Выбор активного слоя Выбор активного рабочего слоя может быть сделан несколькими путями: Используя верхнюю инструментальную панель. Во всплывающем окне (активизированном правой клавишей мышки). Используя клавиши + и — (работают только на медных слоях). Выбор с помощью верхней инструментальной панели: 'С Приложения Переход Система Д ( 13:41 /home/vladimli74D-electronic/partl5_pcb/kicad_proJecVtutel/tutel.brd С f£ LXJ Files Параметры dimensions Miscellaneous Postprocess 3D Display Помощь D&g В ей nfi ©И ft [copper | Ij^ck 17,0 v", Via 45,0 “----- О « Gnd 50,0 'omponent id ties Cop tdhes Cmp oldP Cop ioldP Cmp SlkS Cop , lilkS Cmp fdask Copp Mask Cmp | Ecol Eco2 I Edges Pcb □©©© CONN - О Z 28 |x 5,2500 У 2.950C Ik 5.2500 у 2.S500 |Inch I fe KiCad (2006-08-28) /home/vladimir/4.- ~| I J /home/vladimir/4D-electronic/partl5 p...~|~ ГVladimir@vladi —] Рис. В.90. Выбор активного слоя с помощью верхней инструментальной панели Этим напрямую выбирается рабочий слой. Выбор через всплывающее окно: Рис. В.91. Выбор активного слоя с помощью всплывающего меню Всплывающее окно открывает окно меню, которое предоставляет выбор рабочего слоя.
Select Layer: IXi Lajer Ofk ' •/ Copper 1 Mask Copp Component Mask Cmp Adhes Cop Drawings Adhes Cmp Comments SoldP Cop Ecol SoldP Cmp Eco2 SilkS Cop Edges Pcb SilkS Cmp Отмена । Рис. В.92. Диалоговое окно выбора рабочего слоя Выбор слоев для отверстий Если выбрана иконка Add Tracks and Vias (Добавить дорожки и отверстия) на правой инструментальной панели, всплывающее окно предоставляет возможность изменить опции для пар слоев, используемых для отверстий: End Tool Select Track Width > § Select Working Layer 9 Select layer pair Гог vias Center G4 Zoom + Zoom - Zoom Select > (X Auto ib Redraw iisi Gnd Select > X Закрыть Рис. B.93. Выпадающее меню после выбора Add Tracks and Vias Этот выбор открывает окно меню, которое предоставляет выбор слоев, используемых для отверстий. Рис. В.94. Диалоговое окно выбора пары слоев в Pcbnew Когда отверстия размещены, рабочий (активный) слой автоматически переключается на альтернативный слой пары слоев, используемых для отверстий. Созданне/нспр явление платы, прорисовка контур а платы Вначале, обычно, неплохо бы определить контур платы. Контур рисуется, как последовательность отрезков линий. Выберите Edges pcb (Кромка pcb) в качестве активного слоя и используйте средство Add graphic line or polygon (Добавить графическую линию или многоугольник) для прорисовки кромки: однократный щелчок в месте расположения каждого угла и двойной для завершения контура Платы, как правило, имеют очень точные размеры, так что может потребоваться использование отображения координат курсора при прорисовке контура Вспомните, что относительные координаты могут быть обнулены в любой момент - используйте пробел - и что единицы отображения также переключаются с помощью клавиши Alt-U. Относительные координаты позволяют рисовать с очень большой точностью. Можно рисовать круглые (или дугообразные) контуры: • Выберите инструмент Add graphic circle или Add graphic arc («Добавить графическую окружность» или «Добавить графическую дугу»). • Щелкните, чтобы зафиксировать центр окружности.
Отрегулируйте радиус перемещением мышки. Завершите рисунок повторным щелчком. Заметьте, что ширина линии контура может быть установлена в меню Parameters (Параметры: рекомендованная ширина width = 150 в 1/10 mils, тысячной дюйма) или через Options, но этого не будет видно, пока рисунок не отобразится в ином, чем прорисовка контура, режиме. Результирующий контур может быть похож на этот: Рис. В.95. Контур платы в Pcbnew Чтение netlist, сгенерированного из схемы Активизируйте иконку Read Netlist для отображения окна диалога netlist: r/4D-electrcnlc/part!5_pcb/klcad_| LX, Module Selection: s Reference | Timestamp Bad Tracks Deletion: ✓ Keep Delete Exchange Module: Keep Change Select Read 1 Module Test I Compile , Закрыть' ✓ Display Warnings Рис. В.96. Окно диалога чтения netlist Если имя (путь) netlist в верхней части окна отображено неправильно, используйте клавишу Select для поиска нужного netlist. Затем Read netlist. Любые модули, пока не загруженные, появятся, накладываясь один на другой (мы увидим ниже, как переместить их автоматически)
/home/vladlmlr/4D-electronlc/partl5_pcb/klcad proJect/tUtel/pcb proJ.brd I ttj 1й1 Files Параметры Dimensions Miscellaneous Postprocess 3D Display Помощь □ & □ J X ® I S 3 ч fi Q & ° Edges Pcb __ v H ft 1| Track Г 0 !*• Via 45,0 jy J j Grid 50.0 'v . lvJ ______________________________________________________________________________________'7 ’W 'X 17 1500 У 9/5C x 17 4500 у 9 450i Inch Рис. В.97. Загрузка netlist и рисунок платы в Pcbnew Если модули не были размещены, все модули появятся на плате в одном месте, что затрудняет их распознавание. Есть возможность упорядочить их автоматически (используя команду Global Place/Move module - Общее размещение/перемещение модуля, доступную через правую клавишу мышки). Необходимо включить клавишу Mode Module на верхней инструментальной панели, щелкнуть правой клавишей мышки по собранным деталям, выбрать пункт Move All Modules в меню Glob Move and Place. Вот результат такого автоматического упорядочения: ' /home/vladimir/4D-electronic/partL5_pcb/l<|cad_project/tutel/pcb_proj.brd Ь l+i IX Files Параметры Dimensions Miscellaneous Postprocess 3D Display Помощь □ □ В С? X IS1 ©0 й О» И Copper___________________________________ И tt IZ 79 X 2.5000 У 4,10i ' к 2,5000 у4,1'Ю0, Inch Рис. В.98. Упорядочение элементов перед размещением на плате Важное примечание: Если плата модифицируется замещением существующего модуля новым (например, заменой 1/8W резистора на 1/2W) в CVPCB, необходимо удалить существующий компонент до того, как Pcbnew загрузит замещающий модуль. Однако если модуль должен заместиться существующим модулем, легче это выполнить, используя диалог, доступный щелчком правой клавиши мышки по запрашиваемому модулю. Исправление платы
Очень часто появляется необходимость исправить плату вслед за соответствующими изменениями, внесенными в схему. Выполните шаги: • Создайте новый netlist для модифицированной схемы. • Если добавлены новые компоненты, свяжите их с соответствующими модулями в cvpcb. • Прочитайте новый netlist в Pcbnew. Удаление неправильных дорожек Pcbnew способна автоматически удалить дорожки, которые стали неправильными после модификации. Для этого установите опцию Delete в Bad tracks deletion (Удаление плохих дорожек) разделе диалога netlist. Однако зачастую быстрее модифицировать эти дорожки вручную (функция DRC позволяет их идентифицировать). Удаленные компоненты Pcbnew не удаляет автоматически модули, соответствующие компонентам, которые были удалены из схемы - это должно быть сделано вручную. Необходимость в этом соглашении возникает по причине существования модулей (как, например, отверстий для крепления), которые добавляются в РСВ, но никогда не появляются в схеме. Модифицированные модули Если модуль модифицирован в netlist (используя Cvpcb), но модуль уже был размещен, он не будет модифицирован Pcbnew, пока соответствующая опция раздела Exchange module (замена модуля) диалога netlist не будет установлена. Изменение модуля (замещение резистора таким же, но другого размера, например) может быть выполнено прямым редактированием модуля. Расширенные опции, использование временных штампов (time stamps) Иногда нотация схемы меняется, но без изменения элементов цепи (это касается ссылок - подобных R5, U4...). РСВ, в сущности, остается неизменной (исключая, возможно, маркировку трафарета (silkscreen)). Тем не менее, внутренне компоненты и модули представлены их ссылками. В подобной ситуации может быть установлена опция Timestamp диалога netlist перед перечитыванием netlist. С этой опцией Pcbnew больше не идентифицирует модули по их ссылкам, а вместо этого по их временным штампам. Последние автоматически генерируются Eeschema (это время и дата, когда компонент был размещен в схеме). Проявляйте большую осторожность при использовании этой опции (сохраните вначале файл!) Причина в том, что метод сильно осложняется в случаях многоэлементных компонент (так, 7400 имеет 4 элемента и одной упаковке). В подобной ситуации временной штамп теряет уникальность определений (для 7400 необходимо их увеличить до четырех - по одному для каждого элемента). Несмотря на это, опция временного штампа обычно разрешает проблемы переобозначений. Размещение модулей Пока модули перемещаются, ratsnest модуля (сетевые соединения) могут отображаться для содействия размещению. Чтобы это было возможно, активируйте иконку Show Module ratsnest на левой инструментальной панели. Ручное размещение Выберите модуль правой клавишей мышки, затем выберите команду Move из меню. Переместите модуль в нужное положение и поместите его щелчком левой клавиши мышки. Если требуется, выбранный модуль может также быть повернут, отражен или отредактирован. Выберите Cancel из меню (или нажмите клавишу Esc), чтобы прервать операцию.
/home/vladlmlr74D-electronlc/partl5_pcb/klcad proJect/tUtel/pcb proJ.brd ' -1 ttj |д| Fites Параметры Dimensions Miscellaneous Postprocess 3D Display Помощь □ & □ Ц X IS Л 3 й Q 44 П [Copper Ц ft Track Г 0 -v Via 45 t) v Gnd 5).O v v Рис. B.99. Ручное размещение деталей на плате Здесь можно видеть отображение ratsnest модуля в процессе перемещения. Вся схема с размещенными модулями может выглядеть, как показано ниже: /home7vladimir/4D-electronic/partL5_pcb/kicad_project/tutel/pcb_proJ.brd Q S3 £i [ Ries Параметры Dimensions Miscellaneous Postprocess 3D Display Помощь □ □ ю 1^ .Kd? i E 44 d Copper V § |'Trade I'7'1 v Vra<5.Q [vJIGndWO |v v [Z 156 |X 14,8000 Y 10,80 [x 14.8000 у 10,80i |lnch Рис. В. 100. Вид платы с размещенными вручную деталями Общая переориентация модулей Изначально все модули наследуют ту же ориентацию, которую имеют в библиотеке (обычно 0). Если требуется альтернативная ориентация для индивидуального модуля, или для всех модулей (допустим, все располагаются вертикально), используйте опцию меню AutoPlace/Orient All Modules (Авторазмещение/ориентация всех модулей) Эта ориентация может быть выборочной (например, относится только к модулям, чьи ссылки начинаются с «1С»). (Примечание переводчиков на английский: Похоже, это не работает.) Автоматическое распределение модулей Примечание: В основном, модули могут только перемещаться, если не были Fixed - фиксированы. Этот атрибут
может включаться и выключаться во всплывающем окне (щелчком правой клавиши мышки по модулю) в режиме Module, или через меню редактирования модуля (Edit Module). Как установлено в последней части, новые модули, загруженные в процессе чтения netlist, появляются, загромождая единственное место на плате. Pcbnew позволяет автоматически распределить модули, чтобы облегчить ручной выбор и размещение. Выберите опцию Module Mode (Иконка на верхней инструментальной панели). Всплывающее окно, активированное правой клавишей мышки, становится: Рис. В. 101. Диалоговое окно при активизации «Module Mode» Если под курсором модуль: Рис. В. 102. Выпадающее меню модуля Если под курсором ничего нет, вид меню несколько меняется, но в обоих случаях возможны следующие команды: • Move all Modules, позволяет автоматически распределить все модули, кроме Fixed. Это обычно используется после первого прочтения netlist. • Move new Modules, позволяет автоматически распределить модули, которые ранее не были размещены внутри контура РСВ. Эта команда требует, чтобы контур платы был прорисован для определения, какие модули могут быть автоматически распределены. Автоматическое размещение модулей Автоматическое размещение модуля допускает размещение модулей на двух поверхностях платы (однако, переключение модуля на медный слой не автоматическое). Оно также отыскивает лучшую ориентацию (0, 90, - 90, 180 градусов) для модуля. Размещение выполняется согласно алгоритму оптимизации, который отыскивает минимальную длину
ratsnest, и который отыскивает вариант создания промежутков между большими модулями с множеством площадок. Порядок размещения оптимизирован первоначальным размещением наибольших модулей с множеством площадок. Приготовление Pcbnew может, таким образом, размещать модули автоматически, однако необходимо направить это размещение, поскольку ни одна программа не может предугадать, чего, в конечном счете, добивается пользователь. Прежде, чем автоматическое размещение будет выполнено, нужно: • Создать контур платы (он может быть сложным, но он должен быть закрытым, если форма не прямоугольна). • Вручную поместите компоненты, чья позиция предопределена (разъемы, отверстия зажимов). • Подобным же образом, некоторые модули SMD и критические компоненты (большие модули, например) должны быть на специфической стороне или в позиции на плате, и это должно быть сделано вручную. • После завершения всего ручного размещения эти модули должны быть зафиксированы (Fixed), чтобы избежать их перемещения. С активизированной иконкой режима модуля Module Mode, щелкните правой клавишей мышки по модулю и выделите Fix Module во всплывающем меню. Это может быть также сделано через всплывающее меню Edit/Module (редактировать/модуль). • Затем может быть выполнено автоматическое размещение. С выбранной иконкой режима модуля Module Mode, щелкните правой клавишей мышки и выберите Glob(al) Move and Place, затем Autoplace All Modules. В процессе автоматического размещения, если требуется, Pcbnew может оптимизировать ориентацию модулей. Однако поворот будет применен только, если была сделана авторизация для модуля (смотрите Edit Module Options - опции редактирования модуля). Обычно резисторы и неполярные конденсаторы авторизованы для поворотов на 180 градусов. Некоторые модули (маленькие транзисторы, например) могут авторизоваться для поворотов на +/- 90 и 180 градусов. Для каждого модуля одного ползунка допустима авторизация 90 градусов Rot(ation), а для второго ползунка авторизация 180 градусов Rotation). Установка в 0 предотвратит вращение, установка в 10 авторизирует его, а промежуточное значение потребует уточнения о предпочтительности (for/against) вращения. Авторизация вращения может быть сделана редактированием модуля тогда, когда он размещается на плате. Однако предпочтительней установить все опции для модуля в библиотеке, поскольку эти установки будут наследоваться при каждом использовании модуля. Интерактивное авторазмещеиие Может появиться необходимость остановить автоматическое размещение (нажмите клавишу Esc) и вручную перепозиционировать модуль. Использование команды Autoplace Next Module (авторазмещеиие следующего модуля) возобновит авторамещение с места, где оно было остановлено. Команда Autoplace new modules (авторазмещеиие новых модулей) позволяет автоматически разместить модули, которые не были уже размещены внутри контура РСВ. Они не будут перемещены внутрь контура РСВ, даже если они не Fixed. Команда Autoplace Module (авторазмещеиие модуля) делает возможным переразместить модуль, отмеченный мышкой, даже если его атрибут Fixed активизирован. Примечание: Pcbnew автоматически определяет возможную зону размещения модулей, соблюдая очертания контура платы, который не обязательно прямоугольный (он может быть круглым, или иметь вырезы). Если плата не прямоугольная, контур должен быть замкнут, чтобы Pcbnew могла определить, что находится внутри, а что снаружи контура. Так же, если есть внутренние вырезы, их контур должен тоже быть замкнут. Pcbnew вычисляет возможную зону размещения модулей, используя контур платы, затем отправляет каждый модуль, заполняя это пространство, в порядке определения оптимального места размещения. Разводка РСВ Выбор осуществляется в меню Dimensions - Tracks and Vias (Размеры - Дорожки и отверстия). Размеры даны в дюймах или мм, в зависимости от активных единиц. Напоминание: 2.54 cm = 1 inch (или " ) = 1000 mils (тй=одна тысячная дюйма) = 10000 десятых mil. Типичные размеры для различных классов РСВ Ширина дорожки (Track width): Используйте целевое значение и согласуйте с данными минимальными размерами: CLASS 1 - 0.80 mm (310 1/lOmils) CLASS 2-0.50 mm (200 1/lOmils)
CLASS 3 - 0.40 mm (160 1/lOmils) CLASS 4 - 0.25 mm (100 1/lOmils) CLASS 5 - 0.15 mm (60 1/lOmils) Изоляция (клиренс, зазор): CLASS 1 - 0.70 mm (270 1/lOmils) CLASS 2-0.50 mm (200 1/lOmils) CLASS 3 - 0.35 mm (140 1/lOmils) CLASS 4 - 0.23 mm (90 1/lOmils) CLASS 5 - 0.20 mm (80 1/lOmils) Некоторые типичные комбинации «Rustic»: • Клиренс: 0.35mm (0.0138 inches). • Ширина дорожки: 0.8mm (0.0315 inches). • Диаметр площадки для IC и отверстий: 1,91mm (0.0750 inches ). • Диаметр площадки для дискретных компонент: 2.54mm (0.1 inches). • Ширина общей (Ground) дорожки: 2.54mm (0.1 inches). «Standard»: • Клиренс: 0.35mm (0.0138 inches). • Ширина дорожки: 0.5mm (0.0127 inches). • Диаметр площадки для IC: сделайте их вытянутыми, чтобы позволить дорожкам пройти между площадками IC и все еще оставить площадки с достаточной адгезивной поверхностью (1.27 х 2.54 mm-0.05x0.1 inches). • Отверстия : 1.27mm (0.0500 inches). Ручная разводка Рекомендуется ручная разводка, поскольку она остается единственным методом, сохраняющим контроль над приоритетами разводки. Например, предпочтительно начинать с разводки дорожек питания, сделав их широкими и короткими, и поддерживая аналоговые и цифровые вводы хорошо разделенными. Затем разводятся дорожки чувствительных сигналов. Среди других проблем, автоматическая разводка подчас требует больше отверстий. Однако автоматическая разводка может предложить полезное предвидение в позиционировании модулей. По мере накопления опыта, вы, возможно, найдете, что автоматический разводчик полезен для быстрой разводки « очевидных » дорожек, но оставшиеся лучше развести вручную. Создание медных зои Медные зоны должны быть созданы, когда вся разводка закончена. После модификации разводки зоны должны быть удалены и созданы заново. Площадки схемы должны быть уже соединены стандартными дорожками. Не рассчитываете на соединенные площадки через зону. Так происходит, поскольку: • Все характеристики платы (площадки, край платы) должны быть известны. • D.R.C. не проверяет зоны (по причине проблем со временем вычисления). Медные зоны (обычно планы земли и питания) обычно привязаны к сети. В порядке создания медной зоны нужно: • Выбрать сеть (подсветить эту сеть), привязать зону к этой сети. • Создать ограничитель зоны (если нет, будет заполнена вся плата). • Заполнить зону от стартовой точки. Зона всегда создается на всех частях, чтобы застраховаться от несоединенных медных блоков. Выбор сети Используйте инструмент Net highlight, и щелкните по площадке, соединенной с сетью, которая должна быть подсвечена. Создание зоны, создание ограничителей зоны Используйте инструмент Add Zones правой инструментальной панели: • Выберите слой для зоны. • Нарисуйте ограничитель зоны на этом слое. • Ограничитель этой зоны - многоугольник, созданный щелчком (левой клавиши) для каждого угла. • Дважды щелкните по концам многоугольника.
• Многоугольник будет автоматически замкнут. Если начальная точка и конечная точка н< одних и тех же координат, Pcbnew добавит сегмент от конечной точки к начальной. Вот созданный ограничитель зоны (многоугольник в тонких линиях): Рис. В. 103. Ограничитель зоны на разведенной плате Заливка зоны Заполнение зоны инициализируется от начальной точки (курсора мышки). Чтобы сделать это, когда достигнут край зоны, поместите курсор мышки на начальную то заполнения. Эта точка может быть внутри или снаружи многоугольника, и на свободном участке. Щелкните правой клавишей мышки. Будет показано такое меню: Fili Zones Options Grid : С ): 0.0050 0,0100 0,0250 I < 0,0500? Zone clearance value: ("): 0.0150 Pad options: Include Pads < Thermal Exclude Pads Zone edges orient: v Any H , V and 45 deg & Fill Отмена Update Options Рис. В. 104. Диалоговое окно заполнения зоны Активируйте клавишу Fill. Вот результат заливки для стартовой точки внутри многоугольника:
Рис. В. 105. Заполнение зоны Многоугольник ограничивает заливку. Примечание: Вы можете использовать много многоугольников для создания сложного ограничения. Опции заливки Нужно выбрать: • Рабочую сетку для заливки. • Клиренс (зазор). • Как площадки прорисовываются внутри зоны (или соединяются с этой зоной). Рабочая сетка для заливки Чем меньше сетка заливки, тем лучше заливка. Однако заливка осуществляется горизонтальными и вертикальными сегментами дорожки, есл мелкая, файлы платы могут стать очень большими (несколько МБайт). 0.01 дюйма сетка — это хороший компромисс. Клиренс Хороший выбор — это сетка чуть больше, чем сетка разводки. Опции площадки Площадки сети могут быть либо включены, либо исключены из зоны, или соединяться термальным рель • Если включены, пайка и выпаивание могут быть затруднены. • Если исключены, соединение с зоной не слишком хорошее. • Термальный рельеф — это хороший компромисс.
C. Qucs Work Book (главы) Авторы: Thierry Scordilis, Mike Brinson, Gunther Kraut, Stefan Jahn, Chris Pitcher. Введение Важные замечания н предупреждения Вы должны принять во внимание тот факт, что книга написана «на ходу», так что возможны некоторые ошибки, и авторы не несут ответственности за любые последствия использования книги. Данный документ предназначен стать рабочей книгой для разработчиков в области радио и микроволновой техники. В наши намерения не входит создать курс по радиотехнике, но лишь прикоснуться к ее основам. Задача, поставленная перед нами, наметить некоторые правила разработки и последовательность работы для тех, кто использует RF CAD программы. Эта последовательность работы будет поддерживаться в разных главах на достаточно разных предметах. Содержание рабочей книги В этой рабочей книге мы пройдемся по некоторым обычным задачам. Но с некоторым прогрессом в объяснениях, и, благодаря тому факту, что мы охватим обширное поле информации, некоторые ключевые моменты будут показаны только единожды, так что рекомендуем вернуться к чтению этих глав. Эта рабочая книга включает: • Последовательность работы: показан типовой процесс разработки проекта. • Осмысление RF спецификации: обычная задача, которая может стать проклятой, может превратить проект в ночной кошмар. • BJT моделирование: после выбора устройства, мы всегда нуждаемся в использовании его в CAD, и обычно как раз этого устройства нет в CAD, как создать его и проверить. • DC статика: поскольку все активные устройства должны смещаться. • РА разработка: активный компонент найден, и маленький усилитель разработан без многочисленных ограничений. • LNA разработка: разработка более ограниченная большим количеством правил, стабильностью, шумами и т. д. • Разработка осциллятора: процедура обычно из CAD вытекающая, поддержанная не обычной процедурой. • VCO разработка: нормальная эволюция из осциллятора. • Detector: разработка трудная в поддержке. • Последует и больше . . .
Основная последовательность разработки Подразумевая, что вы знакомы с обычной последовательностью разработки RF, HF, микроволновых схем или систем, остается только пояснить, как можно использовать QUCS для разработки такого типа цепей. Как инженер-исследователь RF я еще и работаю со студентами. И всегда есть проблемы с новыми методами преподавания. Обычно студенты приходят с некоторыми познаниями в области CAD программ, но они не знают в действительности, как соразмерять свою разработку. Они используют только оптимизатор для размещения своих идей. Что обидно! Конечно, не все из них таковы, но это общая тенденция. На протяжении книги я хочу показать, что есть некоторые правила разработки, и разработка может просчитываться, и что она не будет работать по волшебству!!! Для экспертов в этом нет ничего нового, но только некоторые постоянно используют QUCS. Хотя, собственно, правила разработки те же, что и при использовании на рабочем месте бумаги и ручки. Автор. Правильная организация документа Постараемся сохранить единую организацию внутри разных глав, что будет, к слову: • Заглавная часть, которая осветит активное поле разработки, предполагаемое к использованию. • Блок спецификации, в порядке понимания, что мы должны сделать. Эта задача, на первый взгляд, не будет объяснена, поскольку не является целью данного документа. Мы не знакомим со спецификацией системы. Это может появиться в том случае, если компоненты, присутствующие в QUCS, будут расширены... но почему бы и нет в дальнейшем. • DC объяснение. Если разработка включает DC часть, тогда мы должны предоставить DC демонстрацию, включая тепловой аспект, если нужно. • Функциональная разработка, в порядке пояснения, как это функционально разработано, либо в общем, либо в отношении QUCS. Второй аспект всегда должно держать в памяти. Все может не относится к другим CAD программам, и, следовательно, остаться без внимания. Надеюсь, что вышеизложенное поясняет цель создания этого документа. Поннманне RF спецнфнкацнн . . . подготовлено Norman Е. Dye из Motorola RF подразделения: AN 11071. Так как это AN существенно для наших тем, не плохо бы дать небольшую ссылку на нее. Все AN от motorola ссылаются на это. Данная глава только выдержка, но главная цель выделена в дальнейшем . .. Автор. Введение Справочные таблицы часто оказываются единственным источником информации о возможностях и характеристиках продукта. Это практически верно для уникальных RF полупроводниковых устройств, которые используются разработчиками оборудования во всем мире. Поскольку разработчик схемы подчас не может поговорить непосредственно с производителем, он полагается на информацию из справочных данных его устройства. А для RF устройств многие спецификации уникальны сами по себе. Таким образом, важно, чтобы пользователь и производитель RF продукции говорили на одном языке, с тем, чтобы то, что изготовитель полупроводников говорит о своем RF устройстве, было полностью понятно разработчику схемы. В этой части рассматриваются параметры RF транзисторов и усилительных модулей из соображений максимальной оценки функциональных характеристик. Они разделены на пять базовых секций: 1. DC спецификации. 2. Мощные транзисторы. 3. Транзисторы малой мощности. 4. Мощные модули. 5. Линейные модули.. Комментарии сделаны для критических спецификаций - как определяются значения и в чем их смысл. DC спецификация В основном RF транзисторы характеризуются двумя типами параметров: DC и функциональными. DC спецификация состоит из предельного напряжения, тока утечки, hFE ( DC |3 ) и емкостей, тогда как функциональная спецификация покрывает усиление, наработку, шумовые параметры, искажения и т.д. Тепловые характеристики, не попадающие в категорию теплового сопротивления и мощности рассеяния, могут быть либо DC, либо АС. Таким образом, мы будем обходиться со спецификацией теплового сопротивления, как с особой спецификацией, и дадим ей собственный заголовок, названный «тепловые характеристики». DC анализ, развертка параметра н модели устройств, DC статнческне цепи Любимый вопрос на курсах по электронике это: 1 Это примечание может быть найдено в старых примечаниях справочных проспектов от motorola, если вы сохранили один из них, это истинное сокровище.
«У вас двенадцать резисторов по одному Ому. Вы соединяете их вместе так, что каждый резистор образует кромку куба. Каково сопротивление между противоположными углами куба?» Намерение может быть в обучении паянию, чтобы более чем один студент спаял именно такой куб! Сегодня мы можем сделать это, не прибегая к обучению пайке, мы симулируем цепь. Вот моя попытка сделать куб в Qucs, любой желающий может попытаться улучшить его. Qucs 0.0.10 - Проект: cub Q Щ И <£айл Правка Вставка Проект Инструменты Моделирование Вид Справка ] £ .1'3 0^ * £ х) й, 9b & и Й A V нет предупреждений 0:0] Рис. С. 1. Схема куба из резисторов в Qucs Все, что мне пришлось сделать, это выбрать сопротивления слева в окне компонент и вставить их, повернув при необходимости, пока я ни получил двенадцать в схеме. Затем я соединил две сети по четыре в квадрат, а затем соединил оставшиеся четыре по углам квадратов. Что, я уверен, топологически и есть куб. Все это может показаться тривиальным, но хорошо бы напомнить для начала, что мы создали виртуальное представление физической цепи. Временами мы должны крутить и сжимать все, чтобы уложить в формат, который примет симулятор, и что вызывает сомнения, работаем ли мы с достаточно аккуратным представлением? Есть правило: если мы можем привести в соответствие соединение наших компонент с компонентами реальной схемы, мы аккуратно представляем физическую цепь. И, я преувеличиваю, ВСЕГДА лучше проверить, что мы все сделали правильно — симулируйте неправильную цепь, и она расскажет вам, где вы солгали. С моим кубом из резисторов, аккуратно нарисованным, я должен только нажать клавишу симуляции, и, сведенные в таблицу результаты, покажут мне напряжение в угловых узлах. Поскольку я пропускаю постоянный ток через куб, от одного угла к другому, закон Ома говорит мне, что напряжение между этими углами даст мне сопротивление. Если я использую ток в один ампер, выходной вольтаж будет эквивалентен резистору в Омах2. Те, что внимательны к деталям, могут возразить сейчас, что я вовсе не решил действительной проблемы, поскольку в задаче были резисторы по одному Ому, тогда как я использовал резисторы по пятьдесят Ом. Хорошо, да так, я сжульничал. Что я часто делаю в симуляциях. Для приведения всех резисторов к правильному значению, я должен был открыть окно редактора свойств двенадцать раз. Вот как оно выглядит: Я могу сказать вам результат полученный мной при симуляции, но почему я должен портить вам удовольствие... вернитесь к началу и запустите схему сами. Если вы действительно хотите основательно всем заняться, вы должны также строить схемы и получать результаты...
Изменение свойств компонента х показывать на схеме резистор Имя: R2 Рис. С.2. Диалоговое окно редактора свойств компонента Подсвеченное значение приглашает меня ввести альтернативу. Я должен это сделать, но естественная лень берет верх. Я рассудил, что пятьдесят Ом в пятьдесят раз больше, но если я уменьшу ток в один ампер до двадцати миллиампер, выходное напряжение получится тем, что нужно. Вы найдете, что такая лень (или обостренное восприятие, зависящее от рассказчика!) может сохранить много времени и сил. Когда вещи меняются Все, что интересно, но не рядом с интересным, как тогда, когда мы начали менять питающее напряжение и наблюдали эффект, будет иметь место, когда мы введем нелинейные элементы. Простейший нелинейный элемент — это диод, а вопрос, который мы задаем о диоде чаще всего: как диод меняет напряжение с изменением тока? Так что вернемся в Qucs и нарисуем такую цепь: QUCS О.О.1О - Проект: cub файл Правка Вставка Проект Инструменты Моделирование Вид Справка виды моделирования с моделировани Моделирован е на ие постоянном токе переходного процесса Я моделировани Моделирован е на ие переменном S-параметров токе Гармонически йбаланс I Развертка I | параметра| [DigiP m цифровое optimization моделировани .2* xj Ъ И»£ & * » ± о- х I <>» без названия Sim=DC1 Type=log Param=.ld1. Start=1e-6. Stop=l Points=20 нет предупреждений 0:0 Рис. СЗ. Исследование свойств диода в программе Qucs Эта цепь выглядит обманчиво просто, но вводит несколько больше возможностей Qucs, так что давайте пройдем по ним по порядку. Компоненты вновь выбираются в окне слева и соединяются вместе. Затем выбираются два элемента из окна симуляции. DC моделирование может прекрасным образом оставаться теперь, как есть, но обратите внимание на имя симуляции: DC1. Диалоговое окно свойств развертки параметров выглядит похожим на это, когда открыто:
Изменение свойств компонента Развертка Свойства Развертка параметра Моделирование: Параметр для развертки: Тип: DC1 Idl логарифмический - х показывать на схеме х показывать на схеме ▼ х показывать на схеме Начало: 1е-6 х показывать на схеме Конец: Число точек на декаду: 1 166.667 х показывать на схеме Количество: ’ООО | х показывать на схеме ОК Применить Отменить Рис. С.4. Вид окна свойств моделирования «Развертка параметра» Первые два элемента, обратите внимание, ввод симуляции (здесь DC1, соответствующее имени выбранного элемента симуляции) и ввод параметра развертки, здесь обозначенный как Idl. Если вы взгляните на источник тока, питающий наш диод, вы увидите, что он, так уж получилось, маркирован как Idrv. В результате значение Idl свойства компонента источника тока I будет «качаться» в диапазоне значений, обозначенных нашей функцией развертки параметра, названной SW13. Остальные вводы устанавливают тип развертки (здесь логарифмический) и диапазон значений, через которые проходит развертка. Вы можете попробовать разные значения в любом из них, чтобы увидеть эффект. Одно из преимуществ симулятора перед физическим прототипом в том, что вы не можете разрушить ваш диод, пропустив слишком большой ток через него! Так что я жму клавишу симуляции, и это переносит меня на страницу результатов, и я создаю пару выходных графиков. Вот как выглядит мой экран: <—> QUCS О.О.1О - Проект: cub Файл Правка Вставка Проект Инструменты Моделирование Вид Справка х <^dod.sch diod.dpl Полярная Табличная Диаграмма Смита Диаграмма Смешанная Смита полярная-Сми (проводимост та и) Трехмерная Смешанная Смита-полярн декартовская ая Круговая ВременнАя диаграмма диаграмма Таблица истинности нет п едупреж вний 0:0*^ Рис. С.5. Результат моделирования схемы исследования диода В каждом случае я получаю график зависимости прямого напряжения на диоде (ось Y) от прямого тока (ось X). Левый график имеет логарифмическую шкалу для прямого тока, тогда как правый использует линейную шкалу тока. Как я сделал это? Хорошо, теперь-то вы уже знаете, что все это легко с Qucs! Когда вы выбираете тип графика в окне слева и перетаскиваете его в окно наблюдения, он создает график и открывает диалоговое окно, которое выглядит похожим на это: 3 Вы можете изменить это имя, если хотите, в меню свойства окна редактора свойств.
Изменить свойства диаграммы Данные Свойства Границы Данные кривой — ОК Применить Отменить Рис. С.6. Вид окна свойств графика в Qucs Левое окно показывает доступные переменные, и будут ли они зависимыми или независимыми. В данном случае ток Idl - независимая переменная, а прямое напряжение Vdf.V - зависимая. Двойной щелчок по вводу для Vdf.V, и он переносится в правую часть. Нажмите ОК и график будет нарисован. Это даст вам нечто похожее на правый график моего снимка экрана выше. Проделайте это все вновь, но на этот раз, прежде, чем нажимать ОК откройте окно свойств, которое выглядит похожим на это: Рис. С.7. Изменение свойств графика в Qucs Здесь я выбрал логарифмическую ось X, что дает мне график слева. Я также передвинул их, изменив размер, чтобы они выглядели лучше. Вы можете осуществить разного рода задумки, если хотите. Я тайком устроил небольшую проверку, чтобы убедиться, что вы действительно все это проделали. Те, кто делал все, запустив симуляцию, вероятно, удивились, почему ваш график выглядит несколько иначе, чем мой. Есть одна деталь, при больших токах на логарифмической шкале ваша кривая - прямая линия, тогда как моя тревожно поднимается вверх. Что случилось? Все, что я сделал, открыл диалог свойств диода и установил некоторые параметры. Вот как выглядит окно диалога:
Рис. С.8. Окно диалога свойств диода Каждый из этих вводов устанавливает один параметр виртуального компонента, который мы используем для модели диода Так что же эго за параметры? Пришло время исследования одного из восхитительных аспектов компьютерной симуляции цепей, моделирование устройств... Модели и параметры Когда компьютер создает этот маленький кусочек виртуальной реальности, который представляет вашу физическую цепь, он использует заданные уравнения, описывающие операцию с каждым устройством, включаемым в схему. Уравнение, которое относится к прямому DC напряжению на диоде, как функции тока, эго: ( А. А где Vt - эго прямое падение напряжения при 25°С, при идеальном соединении, также задаваемом: v-^L yt > Q где: Kb - постоянная Больцмана Т - температура в градусах по Кельвину, q - заряд электрона Большинство из них - эго константы, которые уже знакомы программе. Те, что нам нужно задать, это те, что в списке в окне редактора свойств. Для DC характеристик, чаще всего, есть только несколько, о которых стоит беспокоиться - это Is, ток насыщения, и Т, температура Если мы собираемся пропустить относительно большой ток через диод, мы можем также включить последовательный резистор Rs. Если мы беспокоимся о поведении при малых токах, тогда нам нужно добавить параметр обратного TOKalsr. Как нам узнать, какое значение вставить? Большая часть должна быть описана в разделе о моделировании устройств. В действительности, мы, как всегда, имеем две возможности для выбора: использовать значение, взятое откуда-нибудь еще, или найти наше собственное значение, обычно методом проб и ошибок. Есть великое множество моделей, подходящих к разным программам симуляции. Возможно, больше всего из доступного и бесплатного подходит для spice, и эго многое можно загрузить с сайтов компаний, производящих полупроводниковые изделия. Вот, например, типичная spice модель для диода4 1N4148: .model 1N4148 D(Is=0.1p Rs=16 CJO=2p Tt = 12n Bv=100 Ibv=0. Ip) 85-??-?? Original library Любые не предоставленные значения подразумеваются значениями по умолчанию. Другой путь - создать ваши собственные параметры устройства, которые схожи с червяками, которыми надо запастись пред рыбалкой. Вставляйте значения, рисуйте результирующие характеристики, смотрите, как они согласуются со значениями опубликованных данных, возвращайтесь назад и подстраивайте значения; продолжайте этот процесс, пока результаты вас не удовлетворят или не измучают. Вот, например, цепь для быстрого сравнения прямых характеристик диодов с различными значениями параметров: 4 Я не знаю, откуда это появилось, так что не знаю автора. Большинство библиотек с авторскими правами, даже если они в свободном распространении.
Qucs О.О.1О - Проект: cub файл Правка Вставка Проект Инструменты Моделирование Вид Справка г ft. ft ft. ft. ь н»/й§Ао-еи!? ₽ jfourjdiodschj four_diod.dpl с Декартовская Полярная Табличная Диаграмма Смита диаграммы | Уравнение Eqnl Vd2=Vi2.V-Vd1.V Vd3=Vi3.V-Vi2.V ’ Vd4=Vi4.V-Vi3.V' DI ls=1e-ISA SZ N=1 Смешанная СМита-полярн ая Диаграмма Смита (проводимост и) Смешанная полярная-Сми та I (drive ®i-in Cj0=10lF M=0.S Vj=07 V Трехмерная декартовская Круговая ВременнАя диаграмма диаграмма Г"151 1эд Таблица истинности Развертка параметра SW1 SimOCI • Туре» log Param=.ldl Start» 1e-6 Stop=1 Points= 1000 моделирование на постоянном токе OCT DZ ls=1e-14A SZ N=1 Cj0=10lF M-0.S - Vj=0,7 V ^JVi2 D3 ls=3e-18 A SZ N=1 Cj0=10fl- M=0.S - Vj=0,7 V JVd1 D4 ls=1e-9 A SZ N= 1.025 ’ " qo=zp M=-0.S - Vj=.0.35 V Предупреждения в последнем моделировании! Нажмите F5 0 : 0 Рис. С.9. Модель с четырьмя диодами в программе Qucs А вот графический вывод: Рис. С. 10. Графики результатов моделирования прямого напряжения на диоде (Вид полученных графиков соответствует изменениям параметра диода Rs от 0,2 Ом для D1 и D3 до 1 Ом yD2 и D4; их вид не вполне тот же, что и в оригинале). Зеленая и пурпурная кривые типичны для устройств 1N4148 и 1N4448; другие — это средние и низкобарьерные устройства Шотки. Я сделал первый проход сравнения со справочным листком, но не могу гарантировать, что эти кривые нечто большее, чем мои наилучшие приближения5. Если вы хотите получить больше информации о том, что делает каждый параметр, было нечто, написанное ранее, особенно для spice, по предмету. Google search быстро обнаружит большую часть из этого. Qucs 5 Я полагаю, вы сейчас озадачены снимками с экрана, ноя только распечатал схему и отобразил файлы из Qucs; вы можете найти раздел печати в меню файл, и, если вы хорошо попросите, он распечатает вам postscript файл.
приходит с документом, который содержит детали по его моделям, и, будучи Open source, всегда с, собственно, кодом. Большинство из нас занимают позицию принятия на веру больших обсуждений, и совпадение кривых со справочными данными - это наилучшее, что мы можем. Это еще один образец фундамента в инженерии, принцип утки (Duck Principle6): если вы не можете обнаружить разницу между поведением вашей модели и физического устройства, тогда они, для инженерных целей, одинаковы. Подойдите к этому с другой стороны, когда разница между моделью и реальным устройством падает ниже уровня неопределенности измерений, это уже не имеет значения. В любом случае, разброс компонент в реальном мире имеет тенденцию делать погрешности тонких деталей модели чем-то академическим, как мы увидим при моделировании более сложных устройств. Начало работы с цифровыми цепями Симуляция 21 Января 2006 Qucs 0.0.8 был выпущен группой разработчиков Qucs. Это первая версия пакета, включающего симуляцию цифровых цепей, базируемую на VHDL. FreeHDL7 было выбрано в качестве «движка» VHDL. В период, последовавший за выходом 0.0.8, имела место значительная активность, сконцентрированная вокруг поиска и исправления ошибок в цифровом коде симуляции Qucs. Многие из обнаруженных, сегодня включены в последний CVS код и будут, в конечном счете, устранены в следующих выпусках Qucs (сегодня есть версия 0.0.10). Примечания в этом руководстве относятся к моим контактам с другими пользователями Qucs, к некоторым подспудным идеям, касающимся возможностей и ограничений текущего состояния Qucs VHDL симуляции. Значительная часть информации, приведенная здесь, была ассемблирована автором, при участии Michael Margraf в деле тестирования и отладки VHDL кода, генерируемого Qucs. В дальнейшем, если есть большой интерес в этих замечаниях, или действительный к Qucs VHDL симуляции в целом, я буду обновлять все по мере улучшения возможностей Qucs по цифровой симуляции. Цифровая симуляция Qucs следует за сложным набором шагов, которые более всего ясны для пользователей программ. На первом шаге схема, представляющая цифровую цепь для тестирования, рисуется. Эта схема содержит не соединенную группу цифровых компонент Qucs, кто-то (или многие пользователи) определяет цифровые подсхемы (если требуется), и копий иконок цифровой симуляции с временным, или таблиц истинности, набором параметров. На втором шаге информация, записанная на схеме цепи, конвертируется в текстовый файл, содержащий VHDL установки. Этим описываются компоненты схемы, их соединение и тестовые метки для представления симуляции схемы. Далее FreeHDL запускается из Qucs для конвертирования файла кода VHDL в «C++» исходную программу. Это компиляция для формирования выполняемого машинного кода симуляции оригинальной цепи. И, наконец, Qucs запускает эту программу, собирает данные сигналов, как события цифровых сигналов, которые имеют место, и отображает графики сигналов, как функцию времени или цифровых данных, в формате таблицы истинности. Код VHDL, генерируемый Qucs 0.0.8, ограниченв его рамках следующими факторами: • Цифровые вентили описаны потоком данных совпадающих установок. • Триггеры (Flip-flop) и генераторы цифровых сигналов описаны установками процесса. • Провода, соединяющие компоненты (сигналы), могут быть только типа бит, как определено в стандарте VHDL библиотеки8 * 10. • Структуры цифровых шин не допустимы в данном выпуске пакета Qucs. • Цифровые подсхемы могут быть нарисованы, как схемы, и ассоциированы с символами на манер того, как это делается с аналоговыми подсхемами. 6 Обычно звучит так: если это выглядит как утка, ходит как утка, крякает как утка и имеет вкус утки, тогда, для любой практической цели - это утка. 7 FreeHDL Project, http://www.freehdl.seul.org/. 8 Сигналы типа «только бит» определяют логические сигналы «0» и «1». Следует позаботиться, чтобы соединения сигналов не обнаруживалось в процессе симуляции, поскольку результирующее логическое состояние не может быть моделировано с типом «бит». Соединение сигналов могут случиться, когда два или более цифровых устройства пытаются перевести один и тот же провод в сигнал логического «0» и логической «1» в одно и то же время. Более того, не возможно симулировать представление устройств с третьим состоянием, используя VHDL сигнал типа «бит». А В С F 0 0 0 0 0 0 11 0 10 1 0 110 10 0 0 10 11 110 1 1110 Таблица 4.1. Таблица истинности для логической цепи со входами А, В, С и выходом F.
• Выводы цифровых подсхем могут иметь тип in, out, inout или analog. Qucs обходится с выводами типа analog так же, как с VHDL выводами типа inout. • Будучи определены, цифровые подсхемы могут размещаться и соединяться с другими компонентами схем. • Множественные копии тех же цифровых подсхем допустимы на единственной схеме. • Цифровые подсхемы могут быть также вложенными; вложения протестированы до глубины четыре. Симуляция простых цифровых схем Самая основная форма цифровой цепи, которая может быть симулирована, такая, которая всецело состоит из предопределенных цифровых компонент Qucs, нарисованных в схеме, имеющей только один уровень иерархии разработки. Таблица истинности для простой комбинационной цепи этого типа показана в таблице 4.1. Выход F может быть выражен суммой произведений булевых форм, как: F = А-ВС+А-В С+ А В С+А-В С После минимизации, используя булеву алгебру или карты Карно, выход F становится: F = A-C+B-C Схема примера показана на рисунке ниже. Эта диаграмма была построена с использованием той же техники, что применялась при рисовании аналоговых схем. Примечания по рисованию цифровых схем: • Только предопределенные компоненты Qucs могут применяться при рисовании цифровых схем, это (1) цифровые компоненты, перечисленные в иконках окна цифровых компонент, (2) символ земли и (3) иконка цифровой симуляции. • Полезный прием при рисовании цифровых схем - принимать матричное приближение, показанное на рисунке. Входные сигналы следуют сверху вниз по схеме, а выходные сигналы позиционируются на правой стороне по горизонтальной линии. Это делает проверку цепей схемы более легкой, чем в случае, когда диаграммы имеют соединяющие компоненты провода в неструктурированном виде. • Входным и выходным проводам (сигналам) должны быть присвоены имена, по именам цепей для симуляции А, В, С и F на рисунке. Если сигнальные провода не именованы пользователем, Qucs будет размещать на них разные произвольные имена. Это может сделать идентификацию и выбор сигналов, для отображения на графике выводного окна, и проверку и поиск ошибок в большой схеме, значительно более трудными, чем это действительно требуется. Qucs О.О.1О - Проект: cub ffi (XJ Файл Правка Вставка Проект Инструменты Моделирование Вид Справка Рис. С. 11. Qucs схема для минимизации логической функции F
VHDL код, генерируемый Qucs Щелчок по клавише меню Qucs Моделировать (или нажатие на клавишу F2) начинает процесс симуляции. В начальной стадии этого процесса Qucs записывает текстовый файл на диск, файл, содержащий код VHDL для симулируемой схемы. Этот файл может быть отображен щелчком по показанному в конце выпадающего меню netlist или нажатием клавиши F6. Код VHDL, произведенный Qucs для цепи, показанной на рисунке, отображен ниже. Сигналы, идентифицируемые как nnnetO и nnnetl в таблице, были присвоены Qucs. nnnetO и nnnetl - внутренние сигнальные сети, которые не именованы на схеме, показанной на рисунке. Код ниже иллюстрирует начальную секцию типичного Qucs цифрового функционального графика. Этот стиль графика иллюстрирует событийные сигналы без задержек распространения у компонент. Если требуется, задержки сигналов могут быть специфицированы для индивидуальных вентилей и других компонент (из меню редактора свойств компонент). VHDL код, генерированный для компонент с задержками, будет затем отображать подобные изменения, например, добавление 10 ns задержки сигналу СВ генерирует VHDL код: СВ <= not С after 10 ns; Читатели, возможно, окажутся достаточно наблюдательны, чтобы отметить - номер версии Qucs в листинге VHDL это 0.0.9. Это текущий номер версии CVS разработки. Qucs 0.0.9 включает некоторое количество важных зафиксированных ошибок. Оставшиеся примечания подразумевают, что читатели загрузили и откомпилировали последний CVS код с Sourceforge.net9. Qucs 0.0.9 tutl exl.sch entity TestBench is end entity; use work.all; architecture Arch TestBench of TestBench is signal CB, A, B, F, C, nnnet 0 , nnnetl : bit; begin nnnetO <=C and A; nnnetl <= CB and B; CB <= not C; A: process begin A <= ’ 0 ’ ; wait for 40 ns; A <= ' 1 ' ; wait for 40 ns; end process ; B: process begin B <= ’ O'; wait for 20 ns; B <= ' 1 ' ; wait for 20 ns; end process ; F <= nnnetl or nnnetO; C: process begin C <= ' O'; wait for 10 ns; C <= ' 1 ' ; wait for 10 ns; end process; end architecture; 9 Заметьте, что Qucs Linux выпуска 0.0.8 нормально симулирует цифровую схему с единственной иерархией без ошибок. Однако Qucs 0.0.8 аварийно завершает работу в фазе конверсии VHDL в C++, если схема имеет больше одного символа земли.
Предупреиоденпя в последнем моделировании! Нажмите F5 0:0 Рис. С. 12. Цифровая функциональная диаграмма для схемы минимизации F (Не забудьте использовать «Временную диаграмму» для отображения графики). Таблицы истинности Таблицы истинности - это один из самых фундаментальных и удобных способов отображения данных цифровых цепей. Qucs имеет встроенные средства, которые позволяют генерировать таблицы истинности из чертежа схемы. Это средство особенно полезно при поиске ошибок минимизации логической разработки. Давайте рассмотрим простой, но поучительный пример: логическая схема имеет четыре двоичных входа А, В, С и D, и один выход Р. Выход Р в логической «1», когда входы ABCD нумеруются в десятичной последовательности 3. 5, 7, 11 и 13. В булевой форме сумма произведений: Р = A-B-C-D+A-B-C-D + A-B-C-D + A-B-C-D + A-B-C-D Это упрощается до: P = D-[A-B+B®C) Схема для суммы произведений уравнения Р показана на рис. С. 13. Похожая на рис. С. 14 представляет схему для минимизированного уравнения Р. Установка типа цифровой симуляции в виде таблицы истинности, а не в виде временного списка, заставляет Qucs по нажатию клавиши F2 генерировать таблицу истинности по информации, предоставляемой схемой. Число входов таблицы истинности и фактических выходов соответствует числу входов генераторов и числу именованных выходов. Таблица истинности для обеих схем дана на рис. С. 15 и рис. С. 16. Сравнение этих таблиц ясно показывает, что они не одинаковы и, более того, подтверждает, что минимизированное решение не корректно. Переделка процедуры минимизации указывает на ошибку - пропущенную инверсию сигнала. Корректное булево уравнение для Р: p=d-(a-b+b®c).
qucs 0.0.10 - Проект: cub Файл Правка Вставка Проект Инструменты Моделирование Вид Справка X digit_minZ.sch Содержание 'cub' Примечание ( - Схемы digit_min7.sch digit_min6.sch digit_min5.sch digit_min4.sch fourdiod.sch diodsch digitminS.sch * digit_min.sch cub.sch VHDL - Окна просмотра... digit_min7.dpl digitminE.dpi digitminS.dpI digit_min4.dpl fourdiod.dp! dioddpl digit_min3.dpl digit_min2j)pl digitmin.dp! * Наборы данных Другие Предупреждения в последнем моделировании! Нажмите F5 0: О Рис. С.13. Схема для суммы произведений уравнения Р c X) •V'»- li Й 4 V/± ¥? x digit_min3.sch qucs 0.0.10 - Проект: cub QBE Файл Правка Вставка Проект Инструменты Моделирование Вид Справка J Ий? Я 3 О 5 «В _ Содержание 'cub' Примечание t - Схемы о digit_min7.sch щ I digitminE.sch digit_min5.sch <и digit_min4.sch g fourdiod.sch X diodsch I § ЕОТ1Я1, ? ° digit_minZ.sch digitmin.sch _ cub.sch £ VHDL - Окна просмотра... c digit_min7.dpl § digitminE.dpi digitminS.dpi digit_rriin4.dpl fourdiod.dp! dioddpl digitminS.dpi digit_minZ.c^)l digitmin.dpl t Наборы данных Другие Готово. Рис. С. 14. Схема для упрощенного выражения Предупреждения в последнем моделировании! Нажмите F5 0: О
Qucs 0.0.10 - Проект: cub □ ш в Файл Правка Вставка Проект Инструменты Моделирование Вид Справка X & диаграммы с Декартовская Полярная “ Izlslsl « Табличная Диаграмма £й Смита I Диаграмма Смита (проводимост и) Смешанная полярная-Сми та dgit_min2.sch digit_min2.upl а.Х ь.х с.Х d.X р.Х 0000 0 0 0 0 0 0001 1 0 0 0 0 0010 0 1 0 0 0 0011 1 1 0 0 0 0100 0 0 1 0 0 0101 1 0 1 0 0 0110 0 1 1 0 0 0111 1 1 1 0 0 1000 0 0 0 1 0 1001 1 0 0 1 0 1010 0 1 0 1 1 1011 1 1 0 1 1 1100 0 0 1 1 1 1101 1 0 1 1 1 1110 0 1 1 1 1 1111 1 1 1 1 0 Трехмерная декартовская I Таблица j истинности 1 Круговая ВременнАя диаграмма диаграмма Смешанная Смита-полярн ая Предупреяоденпя в последнем моделировании! Нажмите F5 0: 0 Рис. С. 15. Таблица истинности для суммы произведений уравнения Р Qucs 0.0.10 - Проект: cub □ ffi В Файл Правка Вставка Проект Инструменты Моделирование Вид Справка у & Я □ О & “ х) v A R ft И Й Й fi & 4 * / S А °- • © Л “ * Диаграмма Смешанная Смита полярная-Сми (проводимост та Смешанная Трехмерная Смита-полярн декартовская ая -ф» Круговая ВременнАя диаграмма диаграмма Таблица истинности х digit_min3.sch <^digit_min&dpb а.Х ь.х с.Х d.X р.х 0000 0 0 0 0 0 0001 1 0 0 0 0 0010 0 1 0 0 0 0011 1 1 0 0 0 0100 0 0 1 0 0 0101 1 0 1 0 0 0110 0 1 1 0 0 0111 1 1 1 0 0 1000 0 0 0 1 0 1001 1 0 0 1 0 1010 0 1 0 1 1 1011 1 1 0 1 1 1100 0 0 1 1 1 1101 1 0 1 1 1 1110 0 1 1 1 0 1111 1 1 1 1 1 а Предупреждения в последнем моделировании! Нажмите F5 0: 0 z Рис. С.16. Таблица истинности для упрощенного выражения Цифровые подсхемы Хотя можно рисовать сложные схемы, используя только предопределенные цифровые компоненты, полученные с Qucs, эта техника может быть крайне скучна, и, конечно, склонна к ошибкам. При черчении больших схем мы требуем процедуры разработки, которая естественно подразделяет группы цифровых компонент на самостоятельные единицы. Последние могут позже обрабатываться так же, как и базовые цифровые компоненты, когда размещаются и соединяются в чертеже схемы. В мире разработки аналоговых и цифровых цепей такие единицы часто называются подсхемами10. Подсхема определена тремя главными атрибутами плюс некоторое количество других свойств. Главные атрибуты - это, в первую очередь, цифровая цепь, которая определяет цифровую функцию, затем символ цепи, который изображает цепь на верхнем уровне 16 Симулятор схем SPICE - это хорошо известный пример повсеместного использования CAD программы, широко использующей подсхемы при разработке цепей.
иерархии разработки, и, наконец, подсхема выводов ввода/вывода, показанных на символе подсхемы. Другие свойства включают, например, задержки сигналов. Процесс генерации цифровых подсхем идентичен процессу, используемому для аналоговых подсхем. Это лучше продемонстрировать на примере. Рис. С.17 показывает схему для четырех-входовой комбинационной цепи. После вычерчивания подсхемы выводы входа и выхода11 прикрепляются к сигнальным портам. Выводы входного порта типа in показаны на диаграмме цепи, как зеленый символ - сигналы W, X, Y и Z на рис. С. 17. Вывод выходного порта типа out окрашен в красный цвет, сигнал G на рис. С. 17. Прохождение сигнала через порт обозначено стрелкой у символа порта. Сигналы входа/выхода и многие другие сигналы, которые нужно легко идентифицировать, имеют имена. Как только подсхема завершена, нажмите клавишу F3, чтобы Qucs генерировал символ подсхемы. Инструмент рисования, введенный как иконка в окне рисования Qucs, может быть использован для редактирования сгенерированных символов подсхем. Выводы порта ввода/вывода на символе подсхемы имеют тот же тип и имя, что и на оригинальной подсхеме. Рис. С.19 показывает окончательный символ для подсхемы СОМВ1. В этих заметках контур символа показан нарисованным в соответствии с международным кодом для логических символов12. Для проверки нашей новой подсхемы мы поместим ее символ на чистый лист и используем тестовые сигналы для выводов входа, затем посмотрим сигналы на выходном выводе. Рис. С.20 показывает типичную тестовую цепь. Подсхема Gen4bit генерирует 4х-битовый тестовый шаблон, синхронизированный с входом тактового генератора. Спецификация для Gen4bit дана в следующем разделе этих заметок13. Графическое изображение тестового шаблона и выходного сигнала G показано как функция времени на рис. С.21. 11 Qucs 0.0.8 имеет ошибку, которая приводит к ошибке VHDL компилятора, когда выводы подсхемы специфицированы, как выводы типа out. Для обхода проблемы следует задать выходные выводы, как выводы типа analog. Подпрограммы Qucs, генерирующие VHDL код цепи, конвертируют вывод типа analog в VHDL тип inout. FreeHDL затем получает возможность компилировать сгенерированный VHDL код без ошибки. Эта ошибка была скорректирована в Qucs 0.0.9. 12 Ian Kampel, Практическое введение в новые логические символы (A practical introduction to the new logic symbols), Butterworths, 1985, ISBN 0-408-01461-X. 13 Подсхема Gen4bit включает другие вложенные подсхемы. Qucs 0.0.8 имеет ошибку, приводящую к ошибке VHDL компилятора с некоторыми конфигурациями вложенных подсхем. Это было устранено в версии 0.0.9.
Qucs 0.0.10 - Проект: dig subsch Файл Правка Вставка Проект Инструменты Моделирование Вид Справка Рис. С. 17. Комбинационная логическая цепь с входами W, X, Y, Z и выходом G (Далее в руководстве добавляется схема, которую, вследствие фрагментарности данного приложения, следует привести сейчас.). Qucs 0.0.10 - Проект: cub □ ЕЕ И Файл Правка Вставка Проект Инструменты Моделирование Вид Справка диаграммы test_gen4bit.sch test_gen4bit.dpl Gen4bit.sch Декартовская Полярная Табличная Диаграмма Смита Диаграмма Смита (проводимост и) Смешанная полярная-Сми Смешанная Трехмерная Смита-полярн декартовская Круговая диаграмма |ВременнАя I диаграмма Таблица истинности Готово. 1 нет предупреждений □ : О, z Рис. С. 18. Схема gen4bit.sch используемая, как подсхема
Qucs 0.0.10 - Проект: cub □ ЕВ (2 Файл Правка Вставка Проект Инструменты Моделирование Вид Справка Рис. С. 19. Символ Qucs для логической цепи с входами W, X, Y, Z и выходом G (Этот вид можно изменить, перемещая выводы и добавляя текстовые обозначения внутри прямоугольника.). Qucs 0.0.10 - Проект: digsubsch Файл Правка Вставка Проект Инструменты Моделирование Вид Справка дискретные компоненты Резистор Резистор US Земл Порт подцепи симметричны подвод постоянного тока развязка от постоянного тока Трансформат ор Конденсатор Катушка индуктивност •ш- Аттенюатор трансформат ор Смещение T Усилитель Изолято; М -{0b Циркулятор Гиратор Фазосдвига' Предупреждения в последнем моделировании! Нажмите F5 0 : 0 / Устройство Измеритель связи dig_sch.sch dig_subsch.sch dig_subsch.dpl Gen4bit.sch Рис. С.20. Тестовая схема логической цепи с входами W, X, Y, Z и выходом G
Qucs 0.0.10 - проект: dlgsubsch □ ЕЕ К) Файл Правка Вставка Проект Инструменты Моделирование Вид Справка □ ’1 О -jl?H Я® ® 4 <^= © 0 >t? х dig_sch.sch dig_subsch.sch , dig_subsch.dpl Gen4bit.sch |дискретуые компоненты Резистор Резистор US Конденсатор Катушка индуктивност и Земля Порт подцепи Трансформат симметричны ор й трансформат ор развязка от подвод постоянного постоянного тока тока Tjj -Ш- Смещение Т Аттенюатор Усилитель Изолятор зс Циркулятор Гиратор S’ ZZ Фазосдвигате Устройство ль связи Предупреждения в последнем моделировании! Нажмите Н5 0 : О Рис. С.21. Функциональная диаграмма цепи с входами W, X, Y, Z и выходом G (И еще одно примечание при переводе: я долго не мог понять, как получить вид цифровых элементов схемы показанный выше. Все оказалось просто — достаточно в свойствах элемента сменить опцию old на DIN.).
Рис. С.22. Изменение вида цифровых элементов в диалоговом окне свойств Построение цифровой библиотеки компонент Графический интерфейс пользователя Qucs включает хорошие средства поддержки проекта. Комбинация этих возможностей с возможностями подсхем Qucs предоставляет все инструменты, требуемые для разработки библиотеки общих цифровых компонент. Такая библиотека может быть сохранена в мастер-проекте, а файлы индивидуальных компонент импортированы в другие проекты, когда это требуется. Вот несколько компонент, которые я разработал в процессе недавней серии целевых тестов по выявлению ошибок в VHDL коде, генерируемом Qucs. Qucs О.О.1О - Проект: dlg subsch Файл Правка Вставка Проект Инструменты Моделирование Вид Справка нет предупреждений 0:0 Рис. С.23. Построение логического нуля и единицы для библиотеки G2bit - 2х-битовый генератор шаблона:
Qucs 0.0.10 - Проект: dlgsubsch □ ЕЕ IX) Файл Правка Вставка Проект Инструменты Моделирование Вид Справка файловые компоненты gen2bitscn схема SPICE яз файл с S-параметрам двухполюсник а файл S-параметров четырехполю сника файл S-параметров п-портового устройства Ц№ИМ11П Готово нет предупреждений ,0'0 X 1 Рис. С.24. Схема G2bit Qucs 0.0.10 - Проект: dlg_subsch Файл Правка Вставка Проект Инструменты Моделирование Вид Справка Ml х <? gcnZbit ach i рисунки заполненный эллипс го Прямоугольни £ I к | заполненный 3 прямоугольни Эллиптическа я дуга File=name нет предупреждений 0:0 с ||Ц|!Ш;| Стрелка Текст Эллипс Рис. С.25. Вид подсхемы G2bit Код подсхемы VHDL, генерируемый Qucs Qucs генерирует отдельные объектно-архитектурные модели для каждой подсхемы. Определени компонента компилируются в рабочую библиотеку FreeHDL. Вот код VHDL из предыдущего примера: Gen2bit entity £ub_gen2bit is port (CLK: in bit; R: in bit; nnout_B0 : out bit; nnout_Bl : out bit) ; end entity; use work.all;
architecture Arch_Sub_gen2bit of Sub_gen2bit is signal BOb, Bib, JK, nnnet 0, BO, Bl : bit; begin FFO : process (nnnet0 , R, CLK) begin if (R= '1 ') then BO <= '0 ’ ; elsif (nnnet0= '1 ’} then BO <= '1 ’ ; elsif (CLK= '1 ' and CLK' event) then BO <= (JK and not BO) or (not JK and BO); end i f; end process; BOb <= not BO; FF1 : process (nnnet0 , R, BOb) begin if (R= '1 ') then Bl <= '0 elsif (nnnet0= '1 ') then Bl <= '1 r; elsif (B0b= '1 ’ and BOb' event) then Bl <= (JK and not Bl) or (not JK and Bl); end i f; end process; Bib <= not Bl; SUB2 : entity Sub_logic_zero port map (nnnetO); nnout_B0 <= BO or ’ 0 ’ ; nnont_Bl <= Bl or ’ 0 ’; SUB1 : entity Sub_Logic_one port map (JK); end architecture; Замечания по генерации VHDL подсхем • Qucs предопределяет генерацию цифровых компонент, совпадающую с потоком данных состояний сигналов или состояний процесса. • Ранее определенные символы подсхем генерируют VHDL карту состояний портов. • Сигналы объекта порт типа out защищены от чтения, как входные сигналы, маскированием каждого выходного сигнала с использованием логической функции signal-name OR ’0’14. • VHDL use work.All; состояние включено перед каждым определением архитектуры подсхемы для обеспечения того, чтобы FreeHDL могло найти любую вложенную подсхему15. • Полный файл кода VHDL для цифровой разработки составлен из выходных тестовых стендов объектно-архитектурной модели плюс объектно-архитектурные модели для каждой подсхемы, специфицированной в разработке. Область переходных процессов моделей триггеров для симуляции смешанного режима Одной из первых целей проекта Qucs стала разработка универсального симулятора схем, который позволял бы исследовать представление цепи от постоянного тока (DC) до микроволновых частот (microwave). Добавление анализа представления в цифровой области сделало Qucs действительно универсальным симулятором. Qucs 0.0.8 был первым выпуском, включающим цифровую симуляцию. Qucs цифровая симуляция сконцентрировалась на VHDL, используя FreeHDL VHDL компилятор для генерации машинного кода симуляции проверяемых цепей. Выпуск 0.0.8 включал встроенные модели для базовых цифровых вентилей и некоторое количество общих последовательных триггеров (flip-flop). Модели вентилей Qucs могли использоваться и в цифровой симуляции, и в симуляции переходных процессов. К сожалению, модели триггеров допускают только цифровую симуляцию. Текущая версия моделей триггеров Qucs использует VHDL и не предоставляет временную область моделей для симуляции переходных процессов. Это важное упущение, которое ограничивает возможности симулятора Qucs в смешанном режиме. Смешанный режим симуляции - это термин, обычно применяемый к описанию симуляции цепей, которые содержат и аналоговые и цифровые компоненты. В реальном мире цепи, конечно, не подразделяются на аккуратные коробочки с метками: аналоговые, S-параметр, цифровые или любые другие физические области. Так что довольно важно, чтобы Qucs моделирование устройств разрабатывалось с поддержкой для цепей, содержащих ряд разных аналоговых и цифровых компонент, симулируемых одновременно. Обычно такие системы симулируются во временной 14 Попытка прочитать сигналы объекта порта типа out вызывают в VHDL ошибку компиляции. 15 Строго говоря, это не необходимо - задавать состояние использования рабочей библиотеки, поскольку эта библиотека обычно видима в любое время, когда компилируются объектно-архитектурные модели. Однако при настоящем состоянии разработки FreeHDL выяснилось, что это необходимо при использовании предопределенной FreeHDL VHDL карты библиотеки.
области, используя симуляцию переходных процессов больших сигналов. Представляемые данные существуют и в аналоговых, и в цифровых выражениях в табличной или графической форме. Эти консультативные заметки представляют модели симуляции переходных процессов для триггеров, базирующиеся на структурированных цифровых цепях, описывают их использование и показывают некоторые примеры симуляции, происходящие от практических схем. Защелки н триггеры Последовательные цифровые устройства, в основном известные как триггеры (SR, D, JK и Т типов), могут быть разбиты на три главные группыЛ • Защелки: простые или стробируемые. • Переключаемые импульсами триггеры: устройства ведущий-ведомый с или без блокирования данных. • Переключаемые фронтом триггеры: с переключением передним или задним фронтом. Поскольку скорость электронных систем увеличивается, популярность переключаемых фронтом триггеров выше, чем более медленных устройств ведущий-ведомый (master-slave). Сегодня большинство IC разработок базируется на устройствах D типа, переключаемых фронтом, тогда как прежде это были устройства JK, типа ведущий-ведомый. Наша озабоченность в данный момент касается развития согласованного набора моделей, которые позволяют общим триггерам моделироваться аккуратно и надежно во временной области переходных процессов. В порядке поддержания этих тенденций были выбраны простые стробируемые D-типа или переключаемые фронтом устройства, как фундаментальные строительные блоки для Qucs моделей области переходных процессов. Использование базовых концепций булевой логики прямо указывает на то, что модели JK и Т переключаемых фронтом триггеров могут быть производными от моделей D-тригтеров. Стробируемые D-защелкн Диаграмма цепи для стробируемой D-защелки, собранной из двухвходовых вентилей nand, показана на рис. С.2616. Выходы Q и не Q (QB на рис. С.26) образованы двумя пересекающимися связанными вентилями nand, соединенными как базовая SR nand защелка. Рис. С.27 показывает представление характеристик для этой цепи. Они были получены с использованием простой тестовой конфигурации. Цифровые сигналы логической единицы представлены как IV, а сигналы логического нуля как 0V в области анализа переходных процессов. Задержки распространения через различные вентили цепи могут быть установлены изменением времени задержки для каждого вентиля. Кроссовое соединение вентилей зачастую приводит к сбою симуляции, из-за того, что DC анализ перестает сходиться к стабильному решению в начальный момент симуляции переходного процесса. Есть приближение, помогающее форсировать стабильность DC решения, установка Q и QB в известные состояния, скажем логический 0 и логическую 1, при начале симуляции. В цепях, подобных базовой стробируемой D-защелке, показанной на рис. С.26, где входы асинхронной установки и сброса не включены, это невозможно. Однако триггер с входами асинхронной установки и сброса позволяет, чтобы состояние триггера было определено в заданный момент симуляции. В примерах, которые последуют, везде, где возможно, состояние защелки или триггера установлено при старте симуляции. В большинстве примеров задержка распространения устройств также была установлена в нуль. Это, следовательно, приводит к тому, что большинство графических выводов показывают функциональные данные иначе, чем аккуратные временные характеристики. Во многих смешанных симуляциях цифровые элементы, присутствующие в разработке, зачастую моделируются как функциональные устройства, чья первая задача - генерировать сигналы нужные для функционирования остальной части схемы. Более детальное освещение эффектов симуляции переходных процессов, включающих временные задержки, появится в следующих разделах этих заметок. 16 Richard S. Sandige, Modern Digital Design, 1990, McGraw-Hill International Editions.
Предупреждения в последнем моделированми! Нажмите F5,0 • 0 Рис. С.26. Стробируемая D-защелка с цифровыми генераторами сигналов D и С QUCS 0.0.10 - Проект: chap5 (_ ffi (X) Файл Правка Вставка Проект Инструменты Моделирование Вид Справка 1 Й Я О 4 ! Fl X] -» Qj, a U IJ й Й © t> * ♦ / § 4 о- © 'Э ¥? Предупреждения в последнем моделировании! Нажмите F5 С: 0 Рис. С.27. Графический вывод (waveform) симуляции стробируемой D-защелки Тактируемый фронтом D-триггер Схема тактируемого положительным фронтом D-триггера показана на рис. С.2817. Асинхронные входы установки (SET) и сброса (RESET) позволяют установить выходы Q и не Q (QB на рис. С.28) триггера в определенное состояние при старте симуляции. Вентили nand (НЕ-И), формирующие каждую из перекрестно включенных SR-защелок, имеют времена задержки установленными в 0 ns. Управляемое фронтом D устройство - это строительный блок и для JK, и для Т типов триггеров. Типичный набор тестовых результатов симуляции переходных процессов для модели D-триггера проиллюстрирован на рис. С.29. Они были получены с использованием базовой тестовой конфигурации, показанной на рис. С.30. 17 David A. Hodges and Horace G. Jackson, Analysis and Design of Digital Integrated Circuits, 1998, Second edition, McGraw-Hill Book Company.
Qucs 0.0.10 - Проект: dlg_subsch Файл Правка Вставка Проект Инструменты Моделирование Вид Справка Ui Ш IX! j Й И 3 TI © 4 Компоненты Содержание Проекты 101С Компоненты Содержание Проекты диаграммы Декартовская Полярная Табличная Диаграмма Смита Диаграмма Смешанная Смита полярная-Сми (проводимост та Смешанная Трехмерная Смита-полярн декартовская ая Круговая ВременнАя диаграмма диаграмма Таблица истинности Рис. С.28. Схема переключаемого положительным фронтом D-триггера Qucs 0.0.10 - Проект: dlg_subsch Щ IX Правка Вставка Проект Инструменты Моделирование Вид Справка Рис. С.29. Графический вывод анализа переходного процесса (transient)
Qucs 0.0.10 - Проект: dlg_subsch Файл Правка Вставка Проект Инструменты Моделирование Вид Справка 1 ?яой 4 х) £4£4и£4 ч ?> д ± °- » виды моделирования test_d_tr_tct,sch tested_tr_t с t.dpl djrig.tactsch JDIN times=40ns; 4Cns optimization Развертка параметра Гармонически й баланс моделирование переходного процесса моделировани ена постоянном токе моделировани е на переменном токе иущделириьан ие переходного пао есса Моделирован ие S-параметров SUB3 Fiie=d. trig_tact.sch CLC times=5ns; 5ns цифровое моделировани е J-R TRJ . Type=lin Start=O Stop=200 ns R times=ZOns; 1000ns X 1 нет предупреждений n о Рис. С.30. Проверочная схема D-триггера Переключаемый фронтом JK-триггер Переключаемый передним фронтом JK-триггер может быть построен с использованием переключаемого положительным фронтом D-триггера и внешней логики18. Внешняя логика генерирует требуемое характеристиками JK-триггера уравнение, задаваемое как: Q+=J-Q + K-Q, где Q, не-Q, J и не-К - это значения текущего состояния сигналов устройства, a Q+ значение следующего состояния Q после прихода переднего фронта устройства тактовых импульсов. Схема для переключаемого фронтом триггера показана на рис. С.30, а типичный набор тестовых диаграмм на рис. С.31. Они были получены с использованием схемы тестирования, показанной на рис. С.32. qucs 0.0.10 - Проект: dlg subsch Файл Правка Вставка Проект Инструменты Моделирование Вид Справка □ ш ш дай ЯSO6 4 ,0 £4 и £4 £4 *? х «У jk_tr_tct.sch jk._test.sch jk_test.dpl la+iiilt'ld Резистор us Конденсатор Катушка Земл индуктивност и °- X Порт подцепи Трансформат ор £ * симметричны развязка от й постоянного трансформат тока ор • V подвод Смещение Т постоянного тока -EJ- > ® Аттенюатор Усилитель Изолято, •Ф >г а- Циркулятор Гиратор Фазосдвига- ль х а Устройство Измеритель связи тока нет предупреждений 0 :0 f. 18 М. Morris Мало and Charles R Kime, Logic and Computer Design Fundamentals, 2004, Third edition, Pearson Education International, Prentice Hall
Рис. С. 31. Схема переключаемого передним фронтом JK-триггера □ ЕЕ Qucs О.О.1О - Проект: dlgsubsch Файл Правка Вставка Проект Инструменты Моделирование Вид Справка ik tr tct.sch ik test,sch диаграммы time нет предупреждений 0:0 5е-8 time Табличная Диаграмма Смита Диаграмма Смита (проводимост Смешанная полярная-Сми Смешанная Трехмерная Смита-полярн декартовская Круговая ВременнАя диаграмма диаграмма Таблица истинности 5е-б time Рис. С.32. Графический вывод симуляции переходного процесса нет предупреждений 0:0^ Рис. С.ЗЗ. Проверочная схема JK-триггера, показывающая режим переключения с ' РНй-М№ИУЯ Полярная Переключаемый фронтом Т-триггер Характеристическое уравнение для переключаемого фронтом триггера: е+=т®е, где символы имеют то же значение, что для JK-триггера. Схема, графический вывод и схема проверки; триггера даны на рис. C.33-C.35.
Qucs 6.0.10 - Проект: misltest □ Ш El Файл Правка Вставка Проект Инструменты Моделирование Вид Справка 4, ! СО X) '* :Ч L4 й, R дискретные компоненты Kjri5_tactsch' t_trig_test sch t_trig_test.dpl Резистор Резистор US го 8 Конденсатор Катушка Земл индуктивност Порт подцепи X Трансформат ор симметричны грансформат ор развязка от постоянного тока подвод постоянного тока Т Смещение Т ш- Аттенюатор Циркулятор Усилитель Изолято[ М Гиратор ФазосдвигЕг ль R Устройство связи Измеритель тока нет предупреждений 0 : О Рис. С.34. Схема переключаемого положительным фронтом Т-триггера qucs 0.0.10 - Проект: misl_test Q шй Файл Правка Вставка Проект Инструменты Моделирование Вид Справка х t_trig_tactsch t_trig_test.sch t_trig_test.dpl 1 диаграммы .ze-7 Круговая диаграмма ВременнАя диаграмма | Таблица истинности нет предупреждений о : о Табличная Диаграмма Смита Диаграмма Смита (проводимост Смешанная полярная-Сми Смешанная Трехмерная Смита-полярн декартовская Рис. С.35. Графический вывод для схемы рис. С.34
—' Qucs 0.0.10 - Проект: misl test U Ш IX Файл Правка Вставка Проект Инструменты Моделирование Вид Справка Йв 3 Ч О h t £ * * A U А Л Ь Й ft $ & » / Ж @ А о- ® п t_trig_tact sch t_trig _test.sch t_trig_test.dpl диаграммы 13 ESEsffiSSEE) полярная Диаграмма Смешанная 5 Смита полярная-Сми х (проводимост та Смешанная Трехмерная Смита-полярн декартовская ая Круговая ВременнАя диаграмма диаграмма I Таблица истинности Start=O Stop-200 ns I ntegrationMethod=Trapezoidal Order=2 нет предупреждений 0 :0 Рис. С.36. Схема тестирования Т-триггера Пример цифровой цепи Синхронный BCD счетчик с наращиванием счета. Рис. С.36 показывает синхронный счетчик с наращиванием BCD собранный из четырех тактируемых фронтом JK-тригтеров, соединенных как переключаемый триггер. Графики входного сигнала и соответствующих выходов счетчика QO, QI, Q2 и Q3 показаны на рис. С.37. Эти результаты симуляции были получены с использованием предопределенного интегрального метода трапеций второго порядка. qucs 0.0.10 - Проект: dig_subsch диаграммы нет предупреждений 0 :0 Таблица истинности Круговая ВременнАя диаграмма диаграмма Диаграмма Смита (проводимост и) bed countscri bed countdnl Файл Правка Вставка Проект Инструменты Моделирование Вид Справка J щ Я Ч G 2S Смешанная Трехмерная Смита-полярн декартовская ая Табличная Диаграмма Смита Смешанная полярная-Сми Рис. С.37. Синхронный прямого счета BCD-счетчик
—> qucs 0.0.10 - Проект: dig_subsch Файл Правка Вставка Проект Инструменты Моделирование Вид Справка И ffi к 1 У ГЧ I Г? О ь It х) -» Й £ ?> а ♦ / Ж @ а □ V «? Рис. С.38. Transient waveforms (графический вывод) для схемы BCD-счетчика VHDL код для моделей триггеров в области переходных процессов Хотя первоочередная задача развития моделей триггеров в области переходных процессов ставилась в рамках симуляции смешанных цепей, это ничего не стоило, поскольку модели были сконструированы из примитивов вентилей Qucs, используя приближение снизу-вверх. Qucs также может использовать модели для цифровой симуляции. Кроме того, предоставляя возможность симулировать схемы без содержания каких-либо чисто аналоговых компонент, Qucs будет генерировать VHDL испытательный стенд модели, который описывает функцию и тестовую последовательность для симулируемых схем. Листинг ниже показывает код VHDL, сгенерированный Qucs для примера синхронного прямого счета BCD счетчика. — Qucs 0.0.9 — /mnt/hda2/Dlgl tal_Subcircui ts_prj /Sync_BCD_counter. sch entity Sub_Logic_one is port (nnout_Ll : out bit); end entity; use work. all; architecture Arch_Sub_Logic_one of Sub_Logic_one is signal gnd, LI : bit; begin gnd <= '0 '; LI <= not gnd; nnout_Ll <= LI or '0 '; end architecture; entity Sub_dff_sr is port (CLOCK: in bit; DIN : in bit; nnout_Q : out bit; nnout_QB : out bit; RESET: in bit; SET: in bit); end entity; use work.all; architecture Arch_Sub_dff_sr of Sub_dff_sr is signal 10, 12, II, 13, QB, Q : bit; begin nnout_QB <= QB or '0 ' ; nnoutQ <=Q or '0 '; Il <= not (CLOCK and RESET and 10);
13 <= not QB <= not Q <= not 10 <= not 12 <= not end architecture; (DIN and 12 and RESET); (RESET and 12 and Q); (Il and QB and SET); (13 and II and SET); (CLOCK and 13 and II); entity Sub_jkff is port (nnnetO : in bit; nnnetl : in bit; nnnet8 : in bit; nnout_nnnet3 : out bit; nnout_nnnet7 : out bit; nnnet9 : in bit; nnnetlO : in bit); end entity; use work.all; architecture Arch_Sub_jkff of Sub_jkff is signal nnnetO, nnnet2, nnnet4, nnnet5, nnnetl, nnnet3 : bit; begin nnnetO <= not nnnetl; nnnet2 <= nnnet3 and nnnetO; nnnet4 <= nnnet2 or nnnet5; nnnet5 <= nnnetO and nnnetl; nnout_nnnet7 <= nnnet7 or '0 ' ; nnout_nnnet3 <= nnnet3 or '0 ' ; SUB1 : entity Sub dff sr port map (nnnet8, nnnet4, nnnet3 nnnet7, nnnetlO, nnnet9); end architecture; entity TestBench is end entity; use work.all; architecture Arch_TestBench of TestBench is signal CLEAR, COUNT, CLOCK, Q3, Q0, QI, Q2, nnnetO, nnnetl, nnnet2, nnnet3, nnnet4, nnnet5, nnne 16, nnnet7, nnnet8, nnnet9 : bit; begin SUB5 : entity Sub_Logic_one port map (nnnetO); nnnetl <= Q0 and nnnet2; nnnet3 <= QI and nnnetl; nnnet4 <= Q2 and nnnet3; SUB2 : entity Sub jkff port map (nnne11, nnne11, nnne15, QI, nnnetO, nnnetO, nnnet7); SUB3 : entity Sub jkff port map (nnnet3, nnnet3, nnnet5, Q2, nnnet8, nnnetO, nnnet7); SUB1 : entity Sub jkff port map (nnnetO, nnnetO, nnnet5, Q0, nnnet9, nnnetO, nnnet7); nnnet5 <= COUNT and CLOCK; nnnet7 <= not CLEAR; CLEAR: process begin CLEAR <= '1 '; wait for 10 ns; CLEAR <= '0 '; wait for 1000 ns; end process; COUNT: process begin
COUNT <= '0 '; wait for 5 ns; COUNT <= '1 wait for 1000 ns; end process; CLOCK: process begin CLOCK <= '0 '; wait for 5 ns; CLOCK <= '1 '; wait for 5 ns; end process; SUB4 : entity Sub_jkff port map (nnnet4, Q0, nnnet5, Q3, nnnet2, nnnetO, nnnetl); end architecture; Код VHDL испытательного стенда (testbench) для схемы рис. С.37. Генерация библиотеки смешанных цифровых компонент Возможности проекта Qucs предлагают пользователям простой и удобный подход для разработки библиотек компонентов, которые связываются общей темой. В этих заметках - это модели цифровых компонент для симуляции переходных процессов (transient simulation). Для формирования библиотеки создайте новую папку, в точке дисковой файловой системы, к которой пользователи имеют доступ на чтение/запись, дав ей подходящее имя, например: fli_ flop_models_tran_sim_prj Затем поместите в новую папку библиотеки копию каждого файла схемы для моделей триггеров, представленных в этих заметках. Это: dff_sr . sch , jkff . sch, tff . sch , и gated_d_latch . sch Также потребуется копия схемы для установок узлов к логической единице: logic_one.sch Эти модели затем станут доступны для использования в любых проектах, с которыми работают пользователи. Они могут копироваться в эти проекты с использованием клавиши меню Добавить файлы в проект..., находящейся в выпадающем меню Qucs Проект. Аналогично, любая новая модель, разработанная как часть проекта, может быть добавлена в библиотеку и использована в будущем. Время задержки распространения цифровых компонент н числовая стабильность снмуляцнн переходных процессов Симуляция переходных процессов в основном много медленнее, чем цифровая симуляция, использующая VHDL сгенерированный машинный код. Модели симуляции переходных процессов для больших сигналов триггеров и других последовательных цифровых устройств предназначены для использования в симуляции схем в смешанном режиме, а не для использования в симуляции чисто цифровых схем. Интересный, и в действительности очень важный вопрос, относится к эффективности и точности алгоритмов числового анализа, применяемого в интегральных подпрограммах, которые являются центром симуляции переходных процессов цепей. Qucs позволяет пользователям выбрать алгоритм, который они хотят применить для симуляции переходных процессов. Доступные алгоритмы - это трапецеидальный, алгоритмы Euler, Gear и Adams Moulton. В каждом случае порядок алгоритма может быть задан от 1 до 6. Второй порядок трапецеидального интегрального алгоритма используется Qucs по умолчанию для симуляции переходных процессов. Для проверки, какой из этих алгоритмов дает наибольшую эффективность по времени при симуляции переходных процессов цифровых цепей, включающих триггеры, был использован счетчик BCD, показанный на рис. С.37 в качестве тестового с повторной симуляцией при использовании разных интегральных подпрограмм и порядков алгоритмов. Результаты тестов показаны ниже. Очень небольшая разница была обнаружена между схемами, где перекрестно соединенные вентили оба имели нулевую задержку распространения, и случаем, когда один вентиль имел задержку 0.5 ns, а второй нулевую. Один очевидный факт обнаруживается в данных, именно, что интегральная подпрограмма высшего порядка Adams Moulton, похоже, быстрее, чем трапецеидальный алгоритм по умолчанию. Порядок 1 2 4 6 Trapezoidal 1 1 1 1 Euler 1.62 1.62 1.62 1.62 Gear 1.65 0.44 1.28 0.28 Adams Moulton 1.62 1 0.39 0.18 Относительные времена симуляции для цепи, показанной на рис. С.37.
Порядок 1 Число отбраковок 1470 Среднее время шага 5.17737е-12 2 1750 9.4585е-12 4 1454 6 61 2.86 бе-11 5.76646е-11 Число отбраковок и среднее время шага данных для алгоритма Adams Moulton. Это подтверждается средним временем шага и количеством отбракованных точек данных, выведенных Qucs в конце симуляции. Приведенные данные указывают на увеличение среднего времени шага и эффектное уменьшение числа отбраковок решений симуляции, как на возможное основание для уменьшения времени в симуляции переходного процесса при использовании интегральных подпрограмм Adams Moulton высшего порядка. Однако другие факторы могут оказывать влияние на выбор интегральной подпрограммы. Порою скорость не единственный критерий, имеющий значение при симуляции больших сложных цепей. Рассмотрим следующий случай (цепь, показанная на рис. С.34, с интегральным анализом переходных процессов Adams Moulton шестого порядка). Установка задержки одного из вентилей в 1ns, а другого в 0 ns, в каждой из RS защелок переключаемого фронтом D-триггера производит графический вывод, показанный ниже. Совершенно ясно, решение неправильно, что указывает на возможную числовую нестабильность, вызванную выбором интегральной подпрограммы. Qucs 0.0.10 - Проект: digsubsch НЕЙ Файл Правка Вставка Проект Инструменты Моделирование Вид Справка чЙЙ'Зел 4 fi“i xi СШ&Й,. к *? диаграммы ^»bcd_count,sch jk_tr_tct.sch d_trig_tact.sch j focd_count.dpl Декартовская Полярная Табличная Диаграмма Смита Диаграмма Смита (проводимост и) Смешанная полярная-Сми та 5’ 5е-9 1 e S | 5е-£2е-8 2 Se-83e-8 3 de 8 4е-8 4 5e-85e-S 5 S*-86e-8 6 Se 8 7е-8 7 5e-88e-8 8 Se-89e-8 SSe 81 e-71 o4-X 1e-7 14-7 2e-7 ~5е-9 lik 1.4-8 2^8 2.4-83е-8з4-84е8 4.de-85t!-85.4-88j«B.4-87e-87 4-88^88.4-89е8 9.4-81e!-71.o4-T.1*-Jl.l4-T.&-7 s’ .5e-81e-7l ЛИШИШЬ Трехмерная вдшмими Круговая ВременнАя диаграмма диаграмма Таблица истинности s’ 8. Смешанная Смита-полярн декартовская ая 5e-9 iJ-SI i-62t^62.de-83e83.5e-84e-84‘i-85*-855*-8&!-86.de-67<‘!-8 7de-86e^66.5e-89e-89.5e-8le-71 ub1-! Ie-Х 1^e-J2e-7 Mill 5tU 1*81 .de-B 2*8 2.4-83*8 3^-84e-84.5e-85*8 5 4-88*8 6.4-67*8 7.4-8 8*8 6.4-8 9*8 9.4-8 1*71 ob»-T,1 e-7 1 4-7 2*7 5e-9 le-81 Se-62e-82 4-83г-8 35e-64e-84 &-85e-8 5.5e^68e-88 4-87e-8 7.5e-68e-88 4-89e-8 0.5e-6 le-71 Л5е-? 1e-7.15e-? 2e-7 нет предупреждений 0:0 л Рис. С.39. Графика цифрового TimeList для цепи, показанной на рис. С.37 Пример симуляции смешанного режима Симуляция смешанного режима включает симуляцию цепей, которые содержат электронные устройства и цепи из разных физических областей. Наиболее очевидна смесь из аналоговых и цифровых компонент. Qucs был разработан до точки, где он может поддерживать подобный тип цепей, заданный моделями устройств, охватывающими разные физические области. В будущем такие цепи уподобятся встроенным компонентам из разных областей, включая, например, цифровые компоненты обработки сигналов (DSP) и, возможно, нано- механические устройства. Многодоменная симуляция добавляет дополнительную сложность в процесс симуляции, обычно отсутствующую при однодоменной симуляции. Каждая область (домен) обычно представляет сигнальные данные со специфическими для данной области атрибутами - напряжение и ток для аналоговых величин, булевы «1» и «О» для цифровых сигналов и числа с плавающей точкой для DSP (цифровая обработка сигналов). Следовательно, сигналы, проходящие от одного домена к другому, должны быть преобразованы из одного формата в другой. Эти преобразованные элементы, часто называемые узловыми мостами (node-bridge), и формируют сущностную часть процесса симуляции смешанного режима. Примеры, которые приведены в этом разделе заметок, были выбраны для иллюстрации некоторых базовых идей, сосредоточенных вокруг смешанной симуляции цепей с аналоговыми и цифровыми компонентами, и чтобы показать, как Qucs обходится с симуляцией данного типа. В последнем разделе был сделан акцент на важность правильного выбора интегральной подпрограммы при симуляции схем во временной области. Смешанные цепи часто включаются в набор компонент, демонстрирующих весьма разные временные значения. Этим создаются проблемы числовой стабильности даже более критичные, чем работа симулятора. С определенными числовыми интегральными подпрограммами, подобно трапецеидальной, возникает числовая нестабильность, если
временной шаг симуляции становится много больше, чем наименьшая временная константа в цепи. Следовательно, чтобы выполнить успешное завершение симуляции, временной шаг интеграции должен быть уменьшен, что в свою очередь делает предельное время симуляции многократно увеличенным. Неявный алгоритм Gear19 не страдает от этих проблем, и это естественный выбор для цепей с компонентами, которые имеют большую разницу во временных константах. Пример 1: Аналоговый график, производимый цифровыми устройствами с выходным узловым мостом. Цепь на рис. С.37 показывает источник аналогового напряжения, производящий цифровое инвертирование, с элементом узловой мост, обрабатывающим выходной сигнал инвертора. Входной сигнал - это синусоидальное напряжение с амплитудой IV. Выходной сигнал инвертора, VI на рис. С.37, имеет асимметричную форму, поскольку пороговая точка для инвертора установлена в 0.5V, на полпути между двумя логическими уровнями. Элемент узлового моста базируется на управляемом напряжением источнике, где приращение устройства и задержка времени могут программироваться. В этом первом примере приращение было установлено в 5, а задержка времени в 0.5 ns. Рис. С.39 иллюстрирует графический вывод TimeList симуляции для этого примера смешанной цепи. Узловой мост, показанный на рис. С.37, это базовое устройство. Более того, могут устанавливаться значение таких дополнительных параметров, как время нарастания и спада. Следующий пример демонстрирует использование активного узлового моста: [Предупреждения в последнем моделировании! Нажмите F5 0:0 Рис. С.40. Аналоговый вывод цифрового устройства с выходным узловым мостом (Во время перевода, повторяя схему автора, я не нашел узловой мост в компонентах. Поэтому использовал схему, показанную ниже, которую добавил как подсхему, не знаю, правда, насколько это правильно. Я использовал источник напряжения, управляемый напряжением, из раздела Источники меню Компоненты). 19 Алгоритм интеграции Gear - это мощный метод решения жестких систем дифференциальных уравнений, см. Donald A. Calahan, Computer Aided Network Design, Revised edition, 1972, McGraw-Hill.
Qucs 0.0.10 - Проект: misltest O9U Файл Правка Вставка Проект Инструменты Моделирование Вид Справка источники х misl.sch a_nod_bridge.sch misl.dpl источник напряжения постоянного тока Ф: источник напряжения переменного тока ф источник постоянного тока ф' источник переменного тока о-— VI NN S’*?1 C=1 -O VOUTP -o VOUTN Источник питания Источник шумового напряжения Источник шумового тока Источник тока, управляемый напряжением Источник тока, управляемый током з<г Источник напряжения :савляемый напряжением ф- Источник импульсного напряжения Источник напряжения, контролируем ый током ф" Источник импульсного тока |Г1редупреждения в последнем моделировании! Нажмите FS 0 :0, Рис. С.41. Схема узлового моста для предыдущей схемы □ <2 Е Qucs 0.0.10 - Проект: misl test Файл Правка Вставка Проект Инструменты Моделирование Вид Справка Источник шумового тока 3<Е Источник тока, управляемый током источники Предупреждения в последнем моделировании! Нажмите F5 0 : 0 1е-5 time misl.sch a nod fcridoe.sch misl.dpl источник напряжения постоянного тока источник постоянного тока исI очник напряжения переменного тока источник переменного тока Источник питания Источник шумового напряжения Источник тока, управляемый напряжением зс Источник напряжения, контролируем ый током Источник напряжения, управляемый наложением Источник импульсного напряжения Рис. С. 42. Цифровой графический TimeList для цепи рис. С. 40 Пример 2: Импульсы, производимые цифровым инвертором с активным узловым мостом. Иллюстрация рис. С.43 - это цепь похожая на предыдущий пример. На рис. С.43 генератор импульсов ведет цифровой инвертор. Выходной сигнал инвертора проходит через активный узловой мост, произведенный из базового BJT переключаемого усилителя. Выходной график для этой цепи показан на рис. С.44. Заметьте, что времена переднего и заднего фронтов определяются усилителем узлового моста, и что амплитуда результирующего аналогового сигнала установлена в 5V.
Qucs 0.0.10 - Проект: misl test Файл Правка Вставка Проект Инструменты Моделирование Вид Справка jsia'jiod? ।Р" х] А,.ц,й,Л ts В :*><; ъ * */ х «>-©□ V1 *? с | ЕЭЕИЕ^ЗЕЯ Полярная bjtbridge.sch bjt_bridge.dpl w Табличная Диаграмма Сплита Диаграмма Смешанная з Смита полярная-Сми х I (проводимост та Смешанная Трехмерная Смита-полярн декартовская ая Круговая ВременнАя | диаграмма диаграмма I Таблица истинности Type=lm Start=b Stop» 30 ns ’ 1ntegrationMethod=Gear- Order» В нет предупреждений 0 :0, нет предупреждений 0:0 f. Рис. С.43. Управляемый импульсами цифровой инвертор с активным узловым мостом Рис. С.44. Графические выводы цифрового TimeList для цепи на рис. С.43 Пример 3: Более сложный пример симуляции смешанного режима. Цепь, показанная на рис. С.45, собрала вместе ряд идей, очерченных в этих заметках. 4Х-битовый сигнал генерируется простым асинхронным двоичным счетчиком, работающим с цифровым тактовым сигналом. Выход счетчика преобразуется в аналоговую область с помощью простого узлового моста (node-bridge) типа, приведенного в примере 1. 4-х битовый взвешенный DAC конвертирует сигналы узлового моста в окончательный аналоговый выходной сигнал. Операционный усилитель DAC моделирован, как блок усиления с однополюсной частотной характеристикой и ограничением выходного DC напряжения. Выходные графики для этого примера показаны на рис. С.46, а детали модели операционного усилителя на рис. С.47.
Qucs 0.0.10 - Проект: misl test О ffi И Файл Правка Вставка Проект Инструменты Моделирование Вид Справка J f В Н Я в .омпоненты Содержание Проекты I© Г Компоненты Содержание Проекты диаграммы ESE3E33ES Полярная Табличная Диаграмма Смита Диаграмма Смита (проводимост и) Смешанная полярная-Сми Смешанная Трехмерная Смита-полярн декартовская ая Круговая ВременнАя диаграмма диаграмма Таблица истинности countdac 1 .sch count_dac 1 .dpi Stert=O Stop-40 ms Htt^MionM₽thcd= Gear Orders • -St 05ms; 1000ms [Предупреждения в последнем моделировании! Нажмите FS 0 : О Рис. С.45. Более сложный пример аналого-цифровой смешанной симуляции Qucs 0.0.10 - Проект: misl_test □ BE Правка Вставка Проект Инструменты Моделирование Вид Справка диаграммы Декартовская Полярная Табличная Диаграмма Смита Диаграмма Смита (проводимост count_tiac1.sch icount dac1.dpP spcie op ampsch.sch a_nod_bridge.sch Смешанная полярная-Сми Смешанная Трехмерная Смита-полярн декартовская ая 0.do20.do40JJD60u060 bl 0.dl20.dl40.dl60.dl80.b20.d220.d240.d2C0.d280.b30.d32D.d340.d360.d360lM Круговая диаграмма ВременнАя диаграмма Таблица истинности o.do20.dcwo.do£0 doso bi о (Jiao dio.81 ео.81 оо Ае о.Згао.Згво.Згсо cJeso iso «коЛзеэЛзео. o.doa.do4o Ьош doso bi 0.di20.di40.diK) di eo b20.d2a.d240.d2a1.d2B о.ЬзозЬго dew d3to.d360.b4 D.doa.dtMo.doB] dbs c bi o.di2D.di4oJiEO di во Ьзо d2a d2-M.1l2Ki.d2B оЬзо бзаз is® dsto.dseo. Предупреждения в последнем моделировании! Нажмите F5 0 : 0 Рис. С.46. Графический вывод цифрового TimeList для цепи рис. С.45
<= Qucs 0.0.10 - Проект: misl_test Q tb 8 Файл Правка Вставка Проект Инструменты Моделирование Вид Справка Рис. С.47. Модель операционного усилителя с Rin = 200k, частотным полюсом = 5Hz, DC дифференциальным усилением = 200k и Rout = 50 Q (В данном случае в качестве узлового моста я применил источник напряжения, управляемый током, с входным сопротивлением 10 кОм. В схеме операционного усилителя конденсатор С1 я применил емкостью 3.2 nF, а не 3.2 uF, чтобы получить графику, похожую на оригинальную). Моделирование операционных усилителей Операционные усилители (ОР АМР) — это фундаментальные строительные блоки линейной электроники. Они широко применялись в разработках линейных цепей с тех пор, как были впервые представлены около тридцати лет назад. Использование моделей операционных усилителей для симуляции схем с помощью SPICE и других популярных симуляторов схем широко распространено, и многие производители предоставляют модели для их устройств. В большинстве случаев эти модели не пробуют симулировать внутренние цепи на уровне устройства, а используют макромоделирование для представления поведения усилителя, как это происходило бы на выводах устройства. Цель этих заметок пояснить, как эти макромодели могут быть использованы для симуляции ряда свойств операционных усилителей, и показать, как параметры макромодели могут быть получены из справочных данных производителей. Руководство концентрируется на моделях, которые могут быть симулированы с использованием Qucs выпуска 0.0.9. Qucs встроенная модель операционного усилителя Qucs включает модель идеального операционного усилителя. Его символ можно найти в списке нелинейных компонент. Эта модель представляет операционный усилитель, как идеальное устройство с дифференциальным усилением и ограничением выходного напряжения. Модель предназначена для использования с простыми блоками усиления и не должна использоваться в симуляции схем, где свойства операционного усилителя критичны для поведения всей остальной схемы. Рис. С.48 показывает базовый инвертирующий усилитель с усилением в 10 раз, базируемый на Qucs ОР АМР модели. Симуляция АС представления этой цепи показано на рис. С.49. Из рис. С.49 видно, что усиление схемы и фазовый сдвиг это константы, не меняющиеся с изменением частоты входного сигнала. Это, конечно, идеальная ситуация, которую практический операционный усилитель не воспроизведет. Давайте, сравним поведение этой же схемы с операционным усилителем, представленным схемой уровня устройства. Показанное на рис. С. 50 — это рисунок транзисторной схемы для хорошо известного операционного усилителя UA74120. Результаты усиления и фазы для этой схемы показаны на рис. С. 51, где OP АХ1Р смоделировано по UA741 транзисторного уровня модели, данной на рис. С.50. Кривые на этом рисунке ясно иллюстрируют разницу между двумя моделями симуляции. Когда симулируется схема, которая включает операционные усилители, качество модели ОР АМР может быть зачастую ограничивающим фактором в точности всех остальных результатов симуляции. Точные ОР АМР модели обычно включают ряд следующих характеристик устройства: (1) DC и АС дифференциальное усиление, 20 UA741 операционный усилитель - это одно из самых изученных устройств. Все почти уникальное в этой транзисторного уровня модели было сконструировано для этого устройства. Детали работы схемы и моделирования этого устройства можно найти в (1) Paul R. Grey et. al., Analysis and Design of Analog Integrated Circuits, Fourth Edition, 2001, John Wiley and Sons INC., ISBN 0-471-32168-0, и (2) Andrei Vladimirescu, The SPICE book, 1994, John Wiley and Sons, ISBN 0-471-60926-9.
(2) смещение входного тока, (3) уход входного тока и напряжения, (4) входной импеданс, (5) синфазный сигнал, (6) скорость нарастания выходного напряжения, (7) выходной импеданс, (8) эффекты пониженного питания, (9) шумы, (10) ограничения выходного напряжения, (11) ограничения выходного тока и (12) эффекты восстановления сигнала после перегрузки. Точное смешивание выбранных свойств в большой степени зависит от цели используемой модели. Например, если модель требуется только для симуляции АС передаточной функции при малом сигнале, тогда включение раздела ограничений выходного напряжения ОР АМР модели не является необходимым, или вполне может считаться неуместным. В следующих разделах этой статьи руководства разбираются макромодели для нескольких параметров ОР АМР, перечисленных выше, и в каждом случае необходимая техника ограничена показом того, как воссоздать параметры макромодели по справочным данным производителей. Qucs 0.0.10 - Проект: opams Файл Правка Вставка Проект Инструменты Моделирование Вид Справка нет предупреждений 0 :0 Рис. С.48. Qucs схема для базового ОР АМР инвертирующего усилителя: Qucs ОР АМР имеет G=le6 и Umax=15V □ ffi SI Qucs 0.0.10 - Проект: opams Файл Правка Вставка Проект Инструменты Моделирование Вид Справка диаграммы Круговая ВременнАя диаграмма диаграмма Таблица истинности Трехмерная декартовская Смешанная Смита-полярн ая с Декартовская Полярная IW u741.sch u741_testsch ^L741_test.dpl base_opamsch iba,je_opani.d|>l « Табличная Диаграмма Смита Диаграмма Смешанная Смита полярная-Сми (проводимост и) нет предупреждений 0 :0 actrequency Рис. С.49. Кривые усиления и фазы для базового ОР АМР инвертирующего усилителя
Рис. С.50. Транзисторный уровень схемы для операционного усилителя UA741 Qucs 0.0.10 - Проект: opams □ ЕЕ Файл Правка Вставка Проект Инструменты Моделирование Вид Справка , диаграммы L । Декартовская Полярная w Табличная Диаграмма £ Смита Диаграмма Смита (проводимост Смешанная полярная-Сми Смешанная I Смита-пол ярн ая Трехмерная декартовская Круговая ВременнАя диаграмма диаграмма истинности acfrequency Предупреждения в последнем моделировании! Нажмите F5 0 : О Рис. С.51. Кривые усиления и фазы для 10 кратного усиления инвертирующим усилителем с ОР АМР, представленным транзисторным уровнем UA741 модели Дополнительные возможности Qucs ОР АМР модели В предыдущем разделе было показано, что Qucs ОР АМР модель имеет частотную характеристику, которая не зависит от частоты. Добавлением внешних компонентов к Qucs ОР АМР модели функциональность модели может быть улучшена. Усиление UA741 с разомкнутой петлей обратной связи имеет полюс около 5Hz и спад частотной характеристики 20 dB на декаду от первого полюса до второго, около 3 MHz. Схема, показанная на рис. С.52, моделирует дифференциальную частотную характеристику UA741 от DC до 1 MHz. Рис. С.53 иллюстрирует частотную характеристику с замкнутым контуром для модифицированной Qucs ОР АМР модели.
Qucs 0.0.10 - Проект: opams □ ЕН (X Файл Правка Вставка Проект Инструменты Моделирование Вид Справка 3 диаграммы Декартовская Полярная Табличная Диаграмма Смита Диаграмма Смешанная Смита полярная-Сми (проводимост та и) baseopam jealsch ’ base _oparn_re al.dpl Смешанная Смита-полярн ая Трехмерная декартовская Круговая ВременнАя диаграмма диаграмма моделирование на постоянном токе моделирование на переменном токе DC1 Таблица истинности АС1 Type=lin Start= 1 Hz Stop=1OMHz Points=18D0 [Уравнение Eqnl dZ=phase(Vout.v) di=dE(Vout.v) нет предупреждений о : О Рис. С.52. Модифицированная Qucs ОР АМР модель для получения однополюсной частотной характеристикой Qucs 0.0.10 - Проект: opams Файл Правка Вставка Проект Инструменты Моделирование Вид Справка нет предубеждений 0 :0 Рис. С.53. Кривые усиления и фазы для схемы, показанной на рис. 166 Макромодели модульного операционного усилителя Макромоделирование — это термин, данный процессу моделирования электронного устройства, как «черного ящика», где индивидуальные характеристики устройства специфицированы в терминах сигналов и других свойств, получаемых на входных и выходных выводах «черного ящика». Такие модели работают на функциональном уровне, а не на более детальном транзисторном уровне схемы, предлагая значительное увеличение эффективности вычислений21. Макромодели обычно произведены непосредственно из справочных 21 Вычислительная эффективность многократно возрастает благодаря тому факту, что макромодели операционных усилителей имеют, в среднем, около одной шестой от числа узлов переходов по сравнению с моделью транзисторного уровня. Кроме того, число нелинейных р-н переходов, включенных в макромодель, часто меньше десяти, что сравнительно лучше сорока или пятидесяти нужных для модели усилителя на транзисторном уровне.
данных производителя. Для большинства операционных усилителей модели транзисторного уровня не предоставляются производителями. Одно примечательное исключение сделано для операционного усилителя UA741, показанного на рис. С. 50. Блок диаграмма модулей22 общего назначения ОР АМР макро мод ел и содержит блоки, представляющие специфические характеристики усилителя, моделируемые электрическими сетями, собранными из компонент, находящихся во всех популярных симуляторах схем23. Каждый блок состоит из одного или большего числа компонент, которые моделируют единственный параметр усилителя или группу родственных параметров, таких как выходное смещение тока и напряжения. Этим обеспечивается, что изменения одного частного параметра, не распространятся косвенно на другие параметры. Локальные узлы и масштабирование также применяются в макромодельных блоках. Кроме того, поскольку каждый блок работает отдельно, масштабируемые напряжения не распространяются за пределы отдельных блоков. Каждый блок может перемещаться с подсхемой Qucs, что имеет требуемую спецификацию и буферизацию от других блоков. Более того, все подсхемы - это самодостаточные сущности, где детали внутренней схемы скрыты от других блоков. Такой подход похож на структурированное высокоуровневое компьютерное программирование, где внутренние детали функций скрыты от пользователей. Когда характеристики устройства, специфицированные для каждого блока, отделены от всех других характеристик устройства, только те характеристики усилителя, что нужны, включаются в данную макромодель. Такой подход направляет к подлинно структурированным макромоделям. Следующие разделы представляют детали и источники электрических сетей, формирующих нужные блоки. Чтобы проиллюстрировать работу модульной ОР АМР макромодели, значения параметров блока рассчитываются для UA741 ОР АМР и используются в серии показательных симуляций. Базовая АС ОР АМР макромодель Минимальный набор блоков, требуемый для того, чтобы модульная макромодель функционировала, как усилитель: входной каскад, усилительный каскад и выходной каскад. Этим формируется ядро модулей для всех макромоделей. Входной каскад Входной каскад включает напряжение смещение усилителя, отклонение и смещение токов, и компоненты дифференциального входного импеданса. Цепь для входного каскада показана на рис. С.54, где: • Rl = R2 - Половина входного дифференциального сопротивления усилителя (RD). • Cin - Дифференциальная входная емкость усилителя (CD). • Ibl = Ib2 - Отклонение входного тока усилителя (IB). • loff - Половина входного тока смещения усилителя (IOFF). • Voffl = Voff2 - Половина входного напряжения смещения (VOFF). Типичные значения для UA741 ОР АМР: • RD = 2 МП и Rl = R2 = 1MD • CD = 0ml =1.4 pF • IB = Ibl = Ib2 = 80 nA • IOFF = 20 nA и loffl = 10 nA • VOFF = 0.7 mV и Voffl = Voff2 = 0.35 mV Дифференциальный выходной сигнал (VD) задан через VD_P1 - VD_N1, а синфазный выходной сигнал (VCM ) через (VD_P1 + VD_Nl)/2. 2 Brinson M. E. and Faulkner D. J., Modular SPICE macromodel for operational amplifiers, IEE Proc. Circuits Devices Syst., Vol. 141, No. 5, October 1994, pp. 417-420. 23 Модели, использующие нелинейные управляемые источники, например для SPICE, не допускаются в Qucs выпуска 0.0.9. Нелинейные управляемые источники - одна из возможностей в Qucs to-do списке.
Qucs 0.0.10 - Проект: opams □ IS IxJ Файл Правка Вставка Проект Инструменты Моделирование Вид Справка <а К;й *> & */ Й@ 4 °-0i3™ *? х in_opam.sch ^>fm_op_mo0.sch _ файловые компоненты - g -®- 43 о. I И с 1 схема SPICE файле S-параметрам ш И I двухполюсник х | а файл файл _ S-параметров S-параметров ь четырехполю п-портового £ сника устройства нет предупреждений 0:0 Рис. С.54. Модульный блок ОР АМР входного каскада Усилитель напряжения с одним каскадом Цепь для усилителя напряжения с одним каскадом показана на рис. С. 5 5, где: RD1 = 100 МО «Фальшивый» входной резистор, добавленный для соединения узлов IN_P 1 и IN N1 по постоянному току. GMP1 = 1 S Напряжение единичного усиления, управляющее генератором тока. RADO — Разомкнутое по постоянному току дифференциальное усиление (AOL(DC) ) ОР АМР. CPI = l/(2*n*GBP), где GBP - ОР \МР произведение к-та усиления на ширину полосы пропускания. Типовые значения UA741 ОР АМР: • RADO = 200k (AOL(DC) = 106 dB). • CPI = 159.15 nF (Типовое значение для UA741 GBP - 1 MHz). Производная передаточная функция однокаскадного усилителя напряжения Большинство операционных усилителей общего применения характеризуются дифференциальным усилением по напряжению разомкнутого контура, которое имеет (1) очень большое значение на DC, (2) главный полюс (fpl) на низкой частоте, обычно ниже 100 Hz, и (3) частотную характеристику, которая спадает на 20 dB на декаду до частоты единичного усиления часто в районе Mhz. Эта форма частотной характеристики имеет постоянное произведение коэффициента усиления на полосу пропускания (GBP) во всем диапазоне частот от fpl до GBP. Типичная частотная характеристика ОР АМР с разомкнутой обратной связью показана на рис. С.56. Передаточная функция усиления по напряжению для этого типа характеристики может быть моделирована электрической схемой, данной на рис. С. 57, где АС передаточная характеристика напряжения: volU(POLE 1 OW1) = GMPl <PW-F1) - l+j(®-P4DC>-CPl) r 1 где t n =-----------. 2л-RADO-CPI
нет предупреждений 0:0 Рис. С.55. Модульный ОР АМР одно-каскадного усилителя напряжения Рис. С. 56. ОР АМР дифференциальное усиление по напряжению с разомкнутой обратной связью, как функция частоты Выходной каскад Электрическая схема, представляющая базовый выходной каскад, дана на рис. С.57, где: • RD1 = 100 МО - «Фальшивое» входное сопротивление, добавленное для соединения узлов IN P1 и IN N1 по DC (постоянному току). • EOS1 G = 1 - Единичное усиление по напряжению, управляющее генератором напряжения. • ROS1 - ОР АМР выходное сопротивление. Типовое значение для UA741 ОР АМР выходное сопротивление ROS1 = 75 Ом.
Q ffi IxJ Qucs 0.0.10 - Проект: opams Файл Правка Вставка Проект Инструменты Моделирование Вид Справка J £ и TJ <• 0 © 4 1йП RftUA U Й £ £ $ * * / *« @ 4 © 'J ™ * нет предупреждений 0:0 Рис. С.57. Модульная макромодель выходного каскада Модель подсхемы для базовой АС ОР АМР макромодели Модель для базовой АС ОР АМР макромодели показана на рис. С. 5 8. Напряжение синфазного сигнала входного каскада (Vcm) не используется в этой макромодели, и было оставлено свободным. Дня проверки поведения АС макромодели ее действие сравнивалось с моделью UA741 транзисторного уровня. Рис. С.59 показывает схему цепи для двух инвертирующих усилителей, каждый с коэффициентом усиления десять, подключенных к общему АС источнику. Один из усилителей использует простую АС макромодель, а второй UA741 модель транзисторного уровня. Рис. С.60 иллюстрирует выходные кривые усиления и фазы для обоих усилителей. В основном нарисованные кривые очень схожи. Однако на частоте выше GBP базовая АС макромодель не корректно моделирует реальное ОР АМР поведение. Этого и следовало ожидать, поскольку простая АС макромодель не включает каких-либо высокочастотных моделирующих компонент. Заметьте также, что DC выходное напряжение для vout и vout3 очень похоже, см. DC табличные результаты, данные на рис. С.59. Qucs 0.0.10 - Проект: opams Файл Правка Вставка Проект Инструменты Моделирование Вид Справка файловые компоненты simple_rr ac_all.sch & схема SPICE -42 файле S-параметрам SUB1 File=in opam. sch Vctn Vd-H- IN+ Vd- <D OUT1 -О О---- IN_P1 О— IN N1 файл S-параметров четырехполю сника файл S-параметров п-портового устройства двухполюсник a SUB? -1. ------------------ File=one_opam7Sch SUB3 File=out_opam.sch POLE1 IN+ou- IN- ,, Output N+ stage . N- OU' нет предупреждений 0:0 Рис. С.58. Простая AC OP AMP макромодель SUB4 File=simple mac mod.sch
Qucs 0.0.10 - Проект: opams I Файл Правка Вставка Проект Инструменты Моделирование Вид Справка а в в 1 О А -J Й к] SA & & а Й Э £ ' / * @ 0 ^yfcomp opam.sch[ Г гуэдпр opam.dpl моделирование на переменном токе АС1 Type=lin Start=1 Hz Stop=10 MHz Points=1900 [Уравнение Eqnl yp=phase(voirt.v) yp3=phase(voirt3.v) ydb=dB(voirt.v) ydb3=dB(voirt3.v) Предупреждения в последнем моделировании! Нажмите F5 □ : □ Рис. С.59. Тестовая цепь для инвертирующего усилителя. Выходные сигналы: (1) vout для АС макромодели, (2) vout3 для UA741 транзисторной модели □ ш & Qucs 0.0.10 - Проект: opams Рис. С.60. Тестовые результаты симуляции схемы, показанной на рис. С.59
D. KTechlab Handbook Авторы: David Saxton, Daniel Clarke Обзор KTechlab это IDE (Integrated Development Environment — интегрированная среда разработки) для электронных цепей и микроконтроллеров. В ней может выполняться симуляция разнообразных компонент (логических, интегральных, линейных, нелинейных и реактивных), симуляция и отладка PIC микроконтроллеров с помощью gpsim, и система приходит с ее собственными связанными и взаимодополняющими языками высокого уровня: FlowCode и Microbe. KTechlab была разработана так, чтобы быть легкой в использовании и насколько возможно ненавязчивой. Все компоненты и Flow-элементы имеют контекстно-зависимую подсказку, а симуляция электроники столь же проста, как перетаскивание компонентов в рабочую область и создание разъемов, автоматически соединяющих выводы. FlowCode позволяет пользователям, не знакомым с PIC контроллерами, сразу создать собственные программы, тогда как симуляция позволяет пошаговый проход по ассемблерной программе Р1С-контроллера внутри схемы. Документы Чтобы начать работать с KTechlab, вам нужно создать новый документ, тип которого определится вашей задачей: • FlowCode документ - сконструирует PIC программу с помощью flowcharting (блок-схема). • Circuit документ - симулирует электрические схемы и микроконтроллеры. • Microbe документ - язык высокого уровня для PIC контроллеров, также используемый FlowCode для генерации ассемблера. • Assembly документ - начало написания PIC-ассемблерной программы. KTechlab использует Document-View (обзор документа) модель, в которой логика документа полностью отделена от открытого вида документа. Это позволяет иметь несколько видов одного и того же файла. При создании нового документ его вид создается на отдельной вкладке. Каждая из вкадок может поддерживать несколько видов, сложенных в любой произвольный шаблон. Это позволяет, например, симулировать PIC программу в схеме, пошагово проходя ее в ассемблерном документе на той же вкладке. Содержимое вкладок может дублироваться перетаскиванием вкладки в пустую область вкладок. Они могут вставляться в существующие вкладки перетаскиванием их на эту вкладку. Детальные инструкции по всем выше приведенным документам могут быть найдены в соответствующих разделах. Черчение В документах Circuit и FlowCode есть несколько инструментов рисования, включая инструмент создания текста. Они доступны после щелчка по иконке кисточки на инструментальной панели. Для черчения подведите мышку либо к фигуре, либо к линии, соответственно нужному инструменту рисования. Когда выбор сделан, рисунок может масштабироваться растягиванием вручную. Если при этом удерживать клавишу Shift, то осуществляется привязка к подсвеченной сетке. Каждый инструмент имеет базовые опции доступные через инструментальную панель, такие как цвета. В разделах боковой панели есть также множество расширенных опций, таких как стиль линии или шрифта. PIC программы Когда вы создадите документ FlowCode или Text, вы заметите на инструментальной панели иконку с изображением ракеты. С помощью меню вы можете манипулировать вашей PIC программой, преобразовывая ее в разные формы: • Convert to Microbe - используется только для документов FlowCode. • Convert to Assembly - может использоваться в четырех случаях. Когда открыт документ FlowCode, это выведет FlowCode, как ассемблерные инструкции. Когда открыт документ Microbe, это вызовет программу microbe, распространяемую с KTechlab, для компиляции вашей программы. Аналогично, если открыта программа на языке «С», это приведет к попытке компиляции ее с помощью SDCC. Когда открыт текстовый документ, содержащий PIC hex-файл (формат для программирования), будет вызвана программа gpdasm для дизассемблирования hex-файла. • Convert to Hex - может также использоваться в четырех случаях. Как и Convert to Assembly, использоваться с FlowCode, Microbe и «С» документами. Также, когда открыт ассемблерный документ, можно ассемблировать с помощью gpasm. • Upload to PIC - этим ассемблируется редактируемая в настоящий момент PIC-программа и загружается с помощью программатора, выбранного пользователем.
Ни одна из этих акций не требует, чтобы документ был сохранен, что очень полезно в те моменты, когда нужно быстрое программирование. Для целей вне PIC программирования вызывается диалог вывода щелчком по одному из этих разделов, и возможен либо вывод результатов (текст во всех вышеприведенных случаях) для обновления документа, либо вывод в файл. Если вывод сохраняется в файл, также предоставляются опции для загрузки файла после создания, и добавления вновь созданного файла к открытому проекту (если он открыт). Заметьте, что вы можете сделать так, что KTechlab всегда будет использовать один и тот же вид отображения вывода при выборе соответствующей опции в General Settings. Загрузка KTechlab использует программаторы сторонних производителей для загрузки программ в РЮ-контроллеры. Предопределено множество общих программаторов. Другие же могут добавляться через диалог Settings. Загляните на web-сайт KTechlab, если нужна дополнительная информация. Список портов получен сканированием последовательных и параллельных портов, из которых можно читать и в которые можно записывать. Последовательные порты: • /dev/ttyS[0..7] • /dev/tts/[0..7] • /de v/W USB [ 0.. 7] • /dev/usb/tts/[O.. 7] Параллельные порты: • /dev/usb/parport[0..7] • /dev/usb/parports/[0..7] Схемы Слева вы найдете вкладку компонент. Перетаскивание компонента с боковой панели в рабочую область схемы поместит его под курсором мышки. В качестве альтернативы вы можете двойным щелчком по изображению компонента на левой панели повторно добавить его в схему. В этом режиме копия выбранного компонента будет повторно размещаться по левому щелчку мышки до тех пора, пока не будет нажата клавиша Esc на клавиатуре, либо правая клавиша мышки. Для перемещения компонента щелкните по нему левой клавишей мышки и перетащите его. Вы увидите, что он привяжется к подсвеченной сетке. Если при перетаскивании компонента вы выйдите за правый или нижний край рабочей области, она, приспосабливаясь, изменит свой размер. Все компоненты имеют представление об ориентации: 0, 90, 180 или 270 градусов. Те, что не симметричны относительно осей, могут также отражаться. Для поворота выбранных компонент либо щелкните правой клавишей мышки и выберите нужное из всплывающего меню, либо щелкните по кнопке вращения на инструментальной панели. Последние могут быть также доступны с помощью клавиш «[» и «]» (хорошо известных пользователям Inkscape). Боковая панель (справа) предоставляет хороший способ задания ориентации с помощью предварительного просмотра компонент. Отражение компонент тоже доступно только через разделы боковой панели. Соеднненне компонент Есть два режима создания соединений (wires): автоматический (automatic) и ручной (manual). Эти режимы выбираются через выпадающее меню Connection Routing Mode на инструментальной панели. Поэкспериментируйте с обоими вариантами, автоматическая трассировка зачастую лучше для маленьких схем, тогда как более сложные могут потребовать ручного соединения. В автоматическом режиме создаются соединения либо перемещением от вывода компонента, либо пермещением от существующего соединения с последующим отпусканием клавиши мышки на выбранном выводе или соединении. Вы увидите пунктирную линию, которая становится оранжевой, когда вы отпустите клавишу. Если линия, которую вы рисуете, черная, это означает, что либо под курсором мышки ничего нет, либо, что вы соединили вместе два элемента, которые уже соединены. При создании блок-схем критерий правильного соединения более сложный, но к этому мы вернемся позже. Лучший способ почувствовать ручное соединение, это поэкспериментировать с ним. Щелкните по начальному выводу или соединению, а затем расширяйте соединение движением мышки от этого места. Для создания угла щелкните левой клавишей. Для прекращения вычерчивания соединения либо нажмите на клавиатуре клавишу Esc, либо щелкните правой клавишей мышки. KTechlab пытается наилучшим образом поместить ваше соединение. Однако если перетаскивание компонента приводит к тому, что конечные точки соединения перемещаются относительно друг друга, KTechlab будет форсировать перерисовку соединения, используя автоматический режим (auto-routing). Перед перемещением для нового соединения иконки по щелчку становятся серыми. Для удаления существующего соединения выберите его с помощью прорисовки маленького прямоугольника выбора на части соединения, а затем нажмите клавишу удаления (delete). Атрибуты компонент
Большинство компонент будут иметь редактируемые атрибуты, такие как сопротивление для резисторов. По умолчанию вы можете редактировать простые атрибуты с помощью инструментальной панели, когда выбрана группа однотипных компонент. Если ваш выбор содержит смесь разных типов компонент (как, например, резисторы и конденсаторы), тогда атрибуты не будут отображаться для редактирования. Некоторые компоненты имеют более развитые атрибуты, которые не доступны через инструментальную панель. Они могут быть найдены в разделах боковой панели справа. Так, например, диод имеет несколько поведенческих характеристик, которые вы можете здесь редактировать. Если ваш выбор компонент имеет разные значения атрибутов (как разное сопротивление для резисторов), образец на боковой панели будет иметь серый вывод для несогласованных атрибутов. Вы можете включить это щелчком по клавише Merge properties. Клавиша Defaults сбросит атрибуты компонента к значению, которое он имел при создании. Есть один тип атрибутов, который не может быть редактируемым ни с помощью инструментальной панели, ни с помощью боковой панели - multilinetext (многострочный текст). Двойной щелчок по нему откроет диалоговое окно, где может быть введен текст. Симуляция По умолчанию симуляция будет запущена, когда вы создадите новую цепь. Состояние симуляции отображается в нижнем правом углу вида цепи, и может быть изменено через меню Tools. Вначале небольшое объяснение, как работает симуляция. Это позволит вам получить более полное представление о процессе. Когда создается или модифицируется цепь, затронутые области разбиваются на группы выводов и соединений, которые могут рассматриваться независимо. Каждая группа затем симулируется, как отдельная сущность (хотя и взаимодействует через компоненты), со скоростью, зависящей от сложности групп. Сложные группы, такие как те, что содержат нелинейные компоненты подобные LED (светодиоды), замедляют симуляцию. Группы, содержащие только логические выводы, у которых контролируется только значение этого вывода, самые быстрые в симуляции. Результаты симуляции проходят несколько графических средств. Выводы на компонентах будут отображать окошки с напряжением. Они окрашены в оранжевый цвет для положительных значений, в синий для отрицательных. Их длина зависит от уровня напряжения и величины тока, протекающего через вывод. Отображение можно выключить на вкладке WorkArea диалога Configuration. Установка мышки над выводом или соединением отобразит маленький указатель напряжения и тока в этой точке цепи. Несколько компонент предоставляют также графическую анимацию, например, LED и вольтметры или амперметры. Наконец, есть осциллограф, обсуждаемый в следующем разделе. Осциллограф Осциллограф может записывать логические данные, данные напряжения и тока. Логический пробник оптимален для запоминания булевых значений, так что должен использоваться вместо пробника напряжения при логических измерениях. Для сбора данных создайте новый компонент пробника и установите его в надлежащую точку схемы. Вы немедленно увидите нарисованный на экране осциллографа вывод данных. Добавление большего количества пробников приведет к наложению выводов одного на другой. Вы можете перетаскивать их с помощью стрелок слева от экрана осциллографа, и менять их цвет через атрибуты пробников. Для пробников напряжения и тока диапазон входных значений может быть задан с помощью Item Editor на правой боковой панели. Масштабирование управляется ползунком. Шкала логарифмическая, и для каждых нескольких пикселей, на которые смещается ползунок, zoom-фактор будет умножаться на константу. KTechlab симулирует логику с максимальной точностью в 1 микросекунду, а на максимальном zoom-уровне, одна микросекунда представлена 8 пикселями. Когда полоса прокрутки перетаскивается к концу, она остается там, пока записываются новые данные. Иначе позиция полосы прокрутки остается фиксированной во времени. Экран осциллографа может также перемещаться вперед и назад после щелчка левой клавиши мышки и перетаскивания. Благодаря ограничениям, лежащим в основе системы виджетов, прокрутка будет очень «зернистой» при максимальном зуммировании. Щелчок правой клавиши мышки по экрану осциллографа отрывает меню, где вы можете управлять периодом времени обновления окна осциллографа. Это позволяет либо сгладить изображение, либо ослабить нагрузку на CPU. Подсхемы Подсхемы открывают возможность повторного и аккуратного использования цепей, когда вы интересуетесь только внешними соединениями схемы. Подсхемы создаются как IC (интегральные схемы) с выводами, работающими во взаимодействии с внутренней схемой. Первое, используемая схема как шаблон для создания подсхемы, должна быть сконструирована. Точки соединения определяются через компоненты External Connection. Они должны быть соединены и позиционированы там, где вы предполагаете иметь выводы подсхемы IC. Далее, выбранную группу компонент и внешних соединителей следует поместить в подсхему, выбрать Create Subcircuit из меню, вызванного правым щелчком мышки. Вам будет предложено ввести имя для
подсхемы. После ее создания имя будет в подменю селектора компонент под разделом Subcircuits. Подсхема может обрабатываться, как обычный компонент с дополнительной опцией удаления ее правым щелчком мышки по разделу и последующим выбором Remove. FlowCode FlowCode позволяет очень быстро и легко конструировать PIC-программы. После того, как пользователь создал блок-схему из доступных программных частей, KTechlab может конвертировать блок-схему в несколько форматов. Для вывода в hex формат, например, может иметь место следующая цепочка преобразований: 1. FlowCode конвертируется в Microbe, язык высокого уровня, компилятор которого распространяется с KTechlab. 2. Исполняемый microbe затем компилирует Microbe-файл в PIC ассемблер. 3. И, наконец, gpasm берет файл PIC ассемблера и выдает hex-файл для программы. Конечно, если у вас не установлен пакет gputils, с которым распространяется gpasm, тогда последний шаг не может быть выполнен. Создание программы Каждая программа FlowCode нуждается в уникальной точке старта: это место, где ваша программа будет запускаться с запуском PIC-контроллера. Для определения этой точки откройте боковую панель FlowParts слева и перетащите Start part. KTechlab позволит вам использовать только одно из следующего: • Вы можете сконструировать вашу программу, используя предопределенные элементы слева, или вставляя собственный код (на ассемблере или в формате Microbe) с помощью Embed part. Ход программы контролируется через связь с FlowParts. • FlowCode вводит ограничения дополнительно к тем, что описаны в разделе Circuits, на то, что может быть соединено. Например, каждая FlowPart может иметь только одно выходное соединение. PIC установки Когда вы создаете новый документ FlowCode, вы заметите картинку PIC-контроллера, используемого вами, в верхнем левом углу рабочей области. Так представлены начальные установки Р1С-контроллера. Каждый вывод, показанный на картинке PIC-контроллера, отображает начальный тип вывода (ввод-input или вывод-output) и его начальное состояние (высокое-high или низкое-low). Вы можете менять их, перетаскивая вывод для установки типа, и щелкая по нему для переключения состояния. Диалог Settings, вызываемый щелчком по клавише Settings, также позволяет вам редактировать начальный тип вывода и его состояние, но в этом случае через редактирование двоичного значения, записанного в регистры PORT и TRIS. Аналогично установкам выводов диалог позволяет редактировать начальные значения переменных в PIC программе. Внизу есть список в данный момент определенных карт выводов (pin maps), а также кнопки для манипуляции ими. Карта выводов используется для задания того, как семисегментный индикатор или клавиатура подключены к PIC-контроллеру. Для использования SevenS egm ent или Keypad FlowCode элементов вам необходимо вначале определить карту выводов. Вложенный FlowCode Множество FlowParts, таких, как подпрограммы и циклы (subroutines и loops), могут содержать их собственный код. После создания такого контейнера FlowParts могут добавляться либо перетаскиванием, либо сбросом их в контейнер. Контейнер будет подсвечен для индикации, что он становится новым родителем FlowPart. Контейнер берет на себя ответственность за FlowParts, вложенные внутрь. Если клавиша expand (расширить) отжата, все содержащиеся FlowParts будут скрыты, и наоборот, содержимое будет показано, если клавиша expand вновь нажата. Соединения не могут быть сделаны между FlowParts в разных контейнерах, и содержимое контейнера будет перемещаться вместе с контейнером. Microbe Microbe компилирует программу, написанную на привычном языке для PIC-контроллера, как вспомогательная программа KTechlab. Синтаксис был разработан для согласования с FlowCode программами. Синтаксис для запуска microbe из командной строки такой: microbe [options] [input.microbe] [output.asm] где опции: • -show-source - добавить каждую строку исходного кода Microbe, как комментарий, в ассемблерный вывод перед собственно ассемблерной инструкцией на этой строке. • —no-optimize - предотвращает оптимизацию инструкций, генерируемых из исходного кода. Оптимизация обычно безопасна, и, таким образом, опция в основном используется для отладки.
Входной файл .microbe должен идентифицировать целевой PIC с помощью вставки имени контроллера в верхней части .microbe-файла, то есть, имя дляР1С16К84 это "P16F84". Пример. Простая полная программа Microbe: P16F84 а=0 repeat { PORTA = а а=а+1 } until а== 5 end Соглашения об именах Следующие правила относятся к именам переменных и меток: • Они могут содержать только буквенно-цифровые символы [a..z][A..Z][0..9] и подчеркивание «_». • Они зависимы от регистра (case-sensitive). • Они не могут начинаться с цифры. • Они не должны начинаться с «_____» (двойное подчеркивание), поскольку это зарезервировано для использования компилятором. Соглашения о скобках Фигурные скобки, {}, показывают начало и конец блока кода. Они могут появиться в любом месте до начала и после завершения блока кода. Примеры приемлемых блоков кода: statementl { some code } statement! { other code } statement! { other code } statements { code block } statements Комментарии Комментарии похожи на те, что в С. «//» комментирует все следующее в строке. «/*» и «*/» обозначает многострочный комментарий. // Это комментарий х=2 /* А здесь многострочный комментарий */ Структура программы PIC id (идентификатор) должен быть вставлен вверху программы. Конец основной программы (main program) отмечается с помощью end. Подпрограмма должна помещаться после end. Подпрограммы Подпрограмма может быть вызвана из любого места в коде. Синтаксис: sub SubName { // Code... } Подпрограмма вызвана С ПОМОЩЬЮ call SubName. Microbe ссылки языка if -Условный переход. Синтаксис:
if [expression] then [statement] ИЛИ if [expression] then { [statement block] } Аналогично для else: else [statement] ИЛИ else { [statement block] } Пример применения if: if porta.0 is high then { delay 200 } else { delay 300 } alias (псевдоним) - Подменяет одну строку на другую. Синтаксис: alias [from] [to] repeat - Выполняет заданный блок многократно, пока выражение не станет истинным. Становление выражения происходит после выполнения блока, так что заданный блок будет выполнен хотя бы один раз. Синтаксис: repeat { [statement block] } until [expression] while - Аналогично repeat многократно выполняется заданный блок. Однако выражение оценивается до выполнения, а не после. Так что, если выражение оценивается как ложное на первом проходе, блок не будет выполняться. Синтаксис: while [expression] { [statement block] } goto - переход, приводит к тому, что продолжение выполнения кода будет со следующего после заданной метки кода. Синтаксис: goto [labelname] Синтаксис метки (Label): labelname: Часто считается хорошей практикой программирования избегать использования команды goto. Использование управления и подпрограмм приводит к лучшей «читабельности» программы. Пример применения goto: goto MyLabel MyLabel:
// Выполнение кода продолжится с этопо места call - Вызывает подпрограмму. Синтаксис: call [SubName] где SubName имя вызываемой подпрограммы. delay - Приводит к остановке выполнения кода на заданный период времени. Интервал в миллисекундах. Синтаксис: delay [interval] Примечание: В настоящее время Microbe подразумевает, что PIC работает на частоте 4MHz, то есть, каждая инструкция занимает 1 микросекунду. Если это не так, следует пропорционально изменить интервал. sevenseg - Используется для определения карты выводов для семисегментного индикатора (с общим катодом), соединенного с PIC. Синтаксис: sevenseg [name] [a] [b] [с] [d] [е] [f] [g] где [a]...[g] - выводы PIC, к которым подключены соответствующие сегменты семисегментного дисплея. Выводы могут записываться либо, как PORTX.N или RXN. Для отображения цифры на семи сегментах, карта выводов обрабатывается, как переменная только для записи. Пример определения и вывода на семисегментный индикатор: sevenseg segl RBO RBI RB2 RB3 RB4 RB5 RB6 segl=x + 2 keypad - Используется для определения карты выводов для клавиатуры, соединенной с PIC. Синтаксис: keypad [name] [row 1] ... [row 4] [column 1] ... [column n] где [row 1] ... [row 4] и [column 1] ... [column n] - это выводы PIC, к которым присоединены соответствующие выводы строк и столбцов клавиатуры (в настоящее время число строк нельзя изменить). Посмотрите раздел выше, где больше информации по картам выводов. Столбцы клавиатуры должны быть заземлены через резистор 100 кОм. Выводы строк должны быть сконфигурированы как выходы, а выводы столбцов как входы. Когда клавиатура определена, она обрабатывается как переменная только для чтения. Пример определения и чтения с клавиатуры: keypad keypadl RBO RBI RB2 RB3 RB4 RB5 RB6 x = keypadl По умолчанию значения, возвращаемые для клавиатуры, это: • Значение цифры, если это цифровая клавиша (от 1 к 3 строке сверху; шестнадцатеричные от А до D вниз к четвертому столбцу, и дальше для каждого дополнительного столбца). • 253 для клавиши в строке 4, столбце 1. • 254 для клавиши в строке 4, столбце 3. Эти значения могут быть переопределены использованием команд псевдонимов (alias), где имя клавиши в строке х, столбце у (строки и столбцы начинаются с 1) это Keypad_x_y. Например, чтобы клавиша звездочки на клавиатуре 4x3 имела значение ноль, в примере ниже будет использован псевдоним (alias). Пример присваивания псевдониму клавиши значения: alias Keypad 410 PIC I/O Направленность порта устанавливается присваиванием значения TRIS*, где * это буква порта. Например:
Пример установки направленности порта: TRISB = Ь'01111001' Выше устанавливаются выводы RBI, RB2 и RB7 порта PORTB на вывод, а остальные выводы порта PORTB на ввод. В этом примере Ь’ОППООГ - это двоичное представление типа вывода. «1» справа представляет вывод на RB0, а «0» слева ввод на RB7. Порт I/O (ввод/вывод) Порт может обрабатываться как переменная. Например: Пример записи из порта: х = PORTA Выше переменной х присваивается значение PORTA. Вывод I/O Каждый вывод порта достигается через префикс номера вывода за именем порта. То есть, вывод 0 (начиная с вывода 0) на PORTA получается, как PORTA.0. Синтаксис для установки состояния вывода: PORTX.N = STATE где STATE может быть высоким или низким. Синтаксис для проверки состояния вывода: if PORTX.N is STATE then Комбинируя эти примеры, мы получим пример установки и проверки состояния вывода: TRISA = 0 TRISB = 255 if PORTA.3 is high then { PORTB.5 = low } else { PORTB = PORTA + 15 } Переменные Все переменные это 8-битовые беззнаковые целые, получающие значения от 0 до 255. Microbe поддерживает типовые унарные операции (работающие с одной переменной) и бинарные операции (работающие с двумя переменными), которые поддерживаются PI С-контроллером. Дополнительно Microbe также поддерживает деление и умножение. Унарные операции: • rotateleft х - сдвигает переменную х влево через перенос. • rotateright х - сдвигает переменную х вправо через перенос. • increment х - увеличивает (инкремент) переменную х. Если х имеет значение 255, тогда х возвращается вновь к 0. • decrement х - уменьшает (декремент) переменную х. Если х имеет значение 0, тогда х возвращается вновь к 255. Арифметика Поддерживаемые операции: • Сложение: х+у • Вычитание: х-у • Умножение: х*у • Деление: х/у • Двоичное XOR: х XOR у • Двоичное AND: х AND у • Двоичное OR: х OR у Сравнение
Поддерживаемые операции: • Эквивалентность: х == у • Не эквивалентность: х != у • Больше, чем: х>у • Меньше, чем: х<у • Больше, чем или равно: х >=у • Меньше, чем или равно: х <=у Пример сравнения: if PORTA >= 5 then { } Отладка Поддержка отладки осуществляется для ассемблера, SDCC и Microbe, когда файлы открыты как текстовые документы. С этого места действия управляются через меню Debug. Есть два метода запуска отладчика: • Если PIC программа уже запущена в схеме, тогда дважды щелкните по PIC компоненту, что откроет программу. Для ассемблерной PIC программы отладчик текстового документа будет привязан к PIC компоненту. В этом случае меню Debug не может остановить PIC программу, поскольку она принадлежит PIC компоненту. • Если ассемблерный файл уже открыт, тогда отладчик может быть запущен через меню Debug. После компиляции программы отладчик будет готов, a PIC программа приостановлена на первой инструкции. Заметьте, что при отладке языков высокого уровня текущая точка выполнения не будет показана, если нет строки, относящейся к первой выполняемой ассемблерной инструкции. В этом случае щелчок по next перенесет точку выполнения к первой строке в программе. Управление отладкой Отладчик может находиться в одном из двух режимов: выполнения и пошаговом. В режиме выполнения PIC программа будет симулироваться в реальном времени. Чтобы перейти к пошаговому режиму, PIC программа должна быть приостановлена, либо щелчком по Interrupt в меню Debug, либо щелчком по клавише pause на PIC компоненте. В пошаговом режиме зеленая стрелка в поле текстового документа показывает строку текста, которая будет выполняться (знакомо для пользователей Kdevelop). Может оказаться полезным включить рамку иконки через меню View (можно постоянно включить в диалоге Editor Settings). Есть несколько типов шагов: • Step into - этим выполняется текущая инструкция. Зеленая стрелка перемещается на следующую строку, которая должна выполняться. • Step over - если следующая инструкция, которая должна выполняться, вызывается или что-то похожее, этим будет сделан шаг над "step over" вызовом, возвращаясь к пошаговому режиму, как только вызов возвращается. Другими словами, шаг над инструкцией ведет себя идентично шагу. Технически это так, начальный уровень стека записывается, а выполнение программы приостанавливается до момента, когда уровень стека возвращается к начальному состоянию. • Step out - если текущее выполнение внутри вызова или нечто похожее, тогда этим реализуется ожидание возвращение из вызова. Похожее на шаг над, это эквивалентно ожиданию, когда уровень стека возвращается к состоянию предшествующему начальному состоянию стека, если начальное состояние больше, чем ноль. • Breakpoints точки останова позволяют приостановить выполнение, когда PIC программа достигает заданной инструкции. Для переключения точки останова на строке, содержащей курсор, либо используйте меню Debug, либо щелкните по рамке иконки текстового документа. Боковая панель SymbolViewer справа показывает значения Special Function Registers (регистры специальных функций). Чтобы найти значение переменной в General Purpose Registers (регистры общего назначения), вы можете поместить мышку над именем переменной в инструкции, оперируещей с данным регистром. Заметьте, что выбор системы счисления в Symbolviewer также управляет тем, как отображаются значения, когда курсор мышки проходит над переменной. FAQ (часто задаваемые вопросы) 1. Configure не может найти gpsim.
Configure попытается компилировать несколько файлов, чтобы проверить наличие gpsim; проверяются версии 0.21.4, 0.21.11 и 0.21.12. Эти файлы используют часть gpsim API, которая также используется КТechlab, и была приведена к соответствующей версии gpsim. Если компиляция этой программы обрывается, появляется предупреждение пользователю, а поддержка симуляции PIC не будет компилирована в КТесЫаЬ. Есть несколько возможных причин, почему не работает gpsim: • gpsim >= 0.2Е4 не установлен. КТесЫаЬ не поддерживает gpsim-0.21.2 или gpsim-0.20.14 (или любую раннюю версию). Последующие версии могут работать, но это не может быть проверено до их появления. Последние версии gpsim могут быть получены на web-сайте gpsim. • gpsim установлен, но файлы заголовков не могут быть найдены. Если gpsim установлен не в стандартные директории, вам может понадобиться обозначить местонахождение файлов заголовков с помощью ./configure—with-extra-includes=DIR. И, похоже, вам понадобится указать местонахождение библиотеки с помощью опции configure — withextra-lib, если includes не в стандартной директории. • gpsim установлен, и заголовки находятся где-то, где configure может найти их, но обнаруживается какая-то другая сумасшедшая glib. Configure генерирует файл config.log, который содержит детали всего, что пошло не так. Найдите gpsim в этом файле, что поможет определить причины произошедшего. В качестве примера, ниже часть файла config.log, где пропущен один из файлов заголовка gpsim. Пример возможного вывода config.log, где обнаружение gpsim прервано: configure:30956: checking for gpsim 0.21.4 availability configure:31009: g++ -c -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -DQT THREAD SUPPORT -03 -march=athlon-xp -mcpu=athlon-xp -D REENTRANT conftest.cc >&5 conftest.cc:48:35: gpsim/gpsim interface.h: No such file or directory Если config.log не помог, пожалуйста, свяжитесь с разработчиками КТесЫаЬ и не забудьте прикрепить соответствующую часть config.log. 2. КТechlab «рухнул» при запуске PIC программы. Версия 0.2Е11 gpsim имеет ошибку, которая может стать причиной крушения КТесЫаЬ при втором запуске PIC программы. Эта ошибка уже зафиксирована в gpsim. Вы может либо вернуться к более ранней gpsim версии 0.21.4 (перекомпилировав КТесЫаЬ), или обновить gpsim (к моменту написания этого руководства gpsim > version 0.21.11 не была выпущена, но CVS версия работает). Обратите внимание, что сборка Debian gpsim-0.21.11, представленная на web-сайте КТесЫаЬ, была исправлена в отношении этой ошибки. Если вы уже используете сборку Debian или не используете версию 0.2Е11, тогда, пожалуйста, свяжитесь с разработчиками КТесЫаЬ. 3. High Level Language (HLL - язык высокого уровня) отладчик не работает. Версия 0.21.11 gpsim имеет ошибку, препятствующую работе HLL отладчика. Как и в случае, описанном выше, вы можете либо использовать предыдущую версию, либо обновить gpsim. Сборка Debian gpsim-0.21.ll, представленная на web-сайте КТесЫаЬ, была пропатчена для устранения ошибки. Если вы уже используете сборку Debian или не используете версию 0.2Е11, тогда, пожалуйста, свяжитесь с разработчиками КТесЫаЬ. 4. КТechlab перегружает CPU. Есть несколько возможных причин. Симуляция цепей, содержащих и реактивные и нелинейные компоненты (такие как конденсаторы и транзисторы), требует много времени CPU для выполнения симуляции. Вы можете приостановить и возобновить симуляцию с помощью меню Tools. Черчение в рабочей области (в частности перерисовка многочисленных быстро обновляющихся напряжений на выводах) также интенсивно использует CPU. Вы можете уменьшить время обновления или выключить отображение напряжения с помощью диалога Settings. Время обновления Oscilloscope можно также уменьшить правым щелчком мышки на его дисплее. Заметьте, что следующий выпуск КТесЫаЬ будет значительно быстрее в части отображения и рабочей области, и реактивных и нелинейных компонент.
E. SpiceOpus - эмулятор схем Рис. Е.1. Снимки экрана О SpiceOpus SpiceOpus - это симулятор схем с утилитами оптимизации. Это перекомпиляция оригинального исходного кода Berkeley для операционных систем Windows 95/98/NT и Linux. Georgia Tech Research Institute XSPICE симулятор смешанного режима был добавлен в код Berkeley. Возможности кода модели XSPICE были улучшены так, чтобы код модели мог загружаться из dll/so файлов (.ст файлов). Симулятор включает интерпретируемый язык программирования, названный Nutmeg, который реализует интерактивные сессии SPICE. Многочисленные утечки памяти были исправлены. Графическая часть программы была переписана, но оригинальный синтаксис команд черчения (plot и iplot) был сохранен для совместимости любых скриптов с другими компиляциями SPICE. Мы постоянно обновляем SpiceOpus новыми моделями полупроводников и работаем весьма усиленно над стабильностью программы, насколько это возможно. Все, что сказано выше, это только основание нашей действительной исследовательской работы. Мы работаем над профессиональными приложениями различных методов оптимизации в симуляции схем. К сожалению, есть сонм маленьких утечек памяти в любой «родственной по крови» Berkeley SPICE программе, которые обычно безвредны, поскольку операционная система всегда исправляет занятие памяти после завершения работы с приложением. В серьезной оптимизации, однако, нуждаются сотни тысяч безостановочных запусков симуляции без засорения памяти обслуживающей системы. Следовательно, мы должны разработать очень стабильный симулятор, прежде чем мы можем даже помыслить об оптимизации. Наш основной научный подход к SpiceOpus в средствах оптимизации, включающих десть различных приближений оптимизации. Пользователь может выбирать между методом наискорейшего спуска (steepest descent), методом Ньютона (Newton's method), Davidon-Fletcher-Powell's method, случайным поиском (random search), сеточным поиском (grid search), поиском по осям координат (search along coordinate axes), Powell's method, Hooke-Jeeves's method, вынужденный симплекс (constrained simplex), простой основной алгоритм (simple genetic algorithm) и вычисление функции стоимости (cost function) по всему пространству параметра (across whole parameter space). Каждый метод имеет свое собственное множество параметров, и они могут комбинироваться через скрипты Nutmeg. В дополнение ко всем этим опциям пользователи должны идентифицировать подходящие оптимизационные параметры, включая некоторые разумные ограничения. Пользователи должны точно выразить критерии разработки через скалярную функцию стоимости, которая будет, в конечном счете, минимизирована выбранным методом. Полная процедура оптимизации не есть что-то такое, за что хотел бы ухватиться новичок. Даже специалисту потребуется время (и нервы), прежде чем оптимизация принесет какие-то полезные плоды. SpiceOpus увидел свет в декабре 1999 (version 1.0). Очень быстро большое сообщество разработчиков засыпало нас ценными замечаниями о, разного рода, проблемах. Как вы можете видеть в истории разработки, мы были очень заняты. Средства оптимизации SpiceOpus привлекли большое внимание профессиональных
разработчиков, нуждающихся в индивидуальной поддержке. Весной 2001 мы, вследствие этого, решили выделить профессиональную версию SpiceOpus pro 2.1, которая реализуется и поддерживается Sim Shelf International, и оставили свободный продукт SpiceOpus light 2.1 в исследовательских владениях. Легкая версия не имеет средств оптимизации, ограничивает размер цепи 300 узлами и не осуществляет поддержку пользователей. Во всем остальном обе версии функционально идентичны и будут связаны с последующим развитием. Легкая версия должна удовлетворить каждого, кто связан с обучением/изучением, как и компании, осуществляющие макетные разработки. Разработчики чипов с некоторыми здоровыми оптимизационными амбициями и разработчики макетов больших размеров, с другой стороны, должны воспользоваться профессиональной версией от Sim Shelf International, включающей голосовую поддержку покупателей. Изложение миссии Наш честолюбивый замысел - трансформировать методы оптимизации из области теории в реальную жизнь разработки схем. SpiceOpus light не относится к отходам производства нашей научной работы, он служит двум основным целям: • Собирать исследовательские отзывы. Мы побуждаем всех, использующих SpiceOpus light свободно, к обсуждению возникающих проблем с симуляцией с нами. Через это наша исследовательская работа соприкасается с реальностью! • Высшее образование. SPICE хорошо упрочился, как средство обучения/изучения. Будем надеяться, что студенты всего мира получат много пользы от нашего свободного симулятора схем. В то же время мы продолжаем нашу исследовательскую работу с кодом SpiceOpus, которая теперь фокусируется на новых методах и алгоритмах увеличения стабильности и скорости вычислений. Frequently Asked Questions (Часто задаваемые вопросы) 1. В netlist схемы у меня резистор R1 1 0 IkOhm. Почему команда print @R1 выдает два сообщения об ошибках, именно Error: instance RE not found И Error: @R1: no such vector, вместо вывода сопротивления Rl? Проблема в чувствительности к регистру netlist схемы и множества команд Nutmeg. Синтаксис netlist (определение элементов, .model и .subckt заявления) чувствительны к регистру. Перед анализом все преобразуется к нижнему регистру. Например, строки: Rl 1 0 IkOhm Rl 1 0 IKOHM rl 1 0 IKohm etс. все конвертируются в одну строку в нижнем регистре: rl 1 0 Ikohm Во всех вышеприведенных случаях симулятор знает резистор с именем rl, а не Rl. Nutmeg команды (вызванные в блоке .control или интерактивно во вводе SpiceOpus), с другой стороны, чувствительны к регистру. По причине чего, команды print, PRINT, Print etc. - это разные команды. Например, выполнение команды: PRINT @R1 станет причиной того, что SpiceOpus выведет в ответ сообщение об ошибке: PRINT: no such command available in SpiceOpus Причина в том, что симулятор действительно не знает команды PRINT, он знает только print. Поскольку он также не знает элемента R1, а только rl, команда print @R1 не будет работать. Для вывода сопротивления резистора следует выполнить команду print @rl. Чтобы избежать такого рода ошибок, лучше всего перейти к использованию нижнего регистра (в netlist схемы и командах Nutmeg). 2. Как вывод печати в SpiceOpus Command Window (окно команд) можно переадресовать куда-нибудь еще (выходной файл)? Вывод не может переадресовываться из Command Window (окна команд). Но он может также печататься в произвольный файл использованием опции «-о» в командной строке. Этот способ вывода печатается и в файл, и в командное окно SPICE OPUS Command Window одновременно. Опция «-о» была создана, но не документирована в руководстве пользователя Berkeley. Например, старт SpiceOpus с: spice3.exe -о out.txt записывает (logs) все выводы в файл outtxt. Если предоставляются также входной файл с netlist схемы и
команды Nutmeg, а последняя команда - это quit, тогда старт SpiceOpus с: spice3.exe -о out.txt input file.cir похож на запуск в пакетном режиме SpiceOpus без команд, без точек («-Ь» опция). 3. Я добавил команду .ор в мой входной файл с netlist схемы (см. листинг ниже). Почему я не могу вывести результирующее напряжение узла v(2) командой print v(2) после того, как файл загружен в SpiceOpus? simple vl 1 О rl 1 2 r2 2 О . ор . end circuit de 5V 2 3 Когда входной файл загружен (команда source), netlist схемы анализируется и команды Nutmeg (команды внутри .control .endc блоков) выполняются. В листинге выше нет команд Nutmeg. Команды с точкой (в нашем случае .ор) не выполняются. Поскольку анализ точки операции не был сделан, напряжение узла v(2) не может, соответственно, печататься. Команды с точкой устарели в версии Berkeley Spice3. Они использовались в версии Spice2, где запускался пакетный режим, и он записывал результаты в выходной файл, который затем обычно просматривался пост- процессорной программой. Чтобы выполнить команды с точкой может использоваться команда run. Команды с точкой могут также вызываться, как команды Nutmeg внутри .control блока. В нашем случае вместо .ор можно использовать: .control ор . endc 4. Пакетный режим запуска программы, документированный в Berkeley для Spice2 версии, не работает со SpiceOpus. Может SpiceOpus запускаться в пакетном режиме? SpiceOpus может работать в пакетном режиме, если использовать опцию «-Ь» в командной строке. Запуск SpiceOpus: spice3.exe -b in.cir -о out.txt заставит работать программу в пакетном режиме. Будет прочитана схема, описанная в in.cir файле, и вначале выполнятся все команды Nutmeg. Затем автоматически выполнятся команды destroy all и run. Таким образом, команды с точками также выполняются, как и в случае версии Spice2 (см. пояснения о командах с точкой выше). Требуемые результаты (вписанные .print etc. командами) отправляются в выходной файл, который должен быть определен опцией «-о» (в нашем случае out.txt). Результаты команд с точками могут также быть перенаправлены в двоичный инвентаризационный файл (raw file) (опция «-г»). Результаты анализа выполненные, как команды Nutmeg, не сохраняются по опере делению. Давайте поближе рассмотрим следующий пример. Пусть листинг in.cir будет следующим: simple circuit vl 1 0 de 0 ас 1V pulse О 5V Is Is Is 5s 12s rl 1 2 2 r2 2 0 3 c2 2 0 Im .tran Is 13s .ac dec 10 1Hz 100kHz .print tran vl#branch .print ac v(2) .control op write op.raw . endc . end Если пользователь запускает SpiceOpus в пакетном режиме с командной строкой, как выше, тогда результаты анализа операционных точек записаны в файл op.raw. Текущее vi#branch вычисляется в анализе переходных процессов (transient analysis), а напряжение v(2), вычисленное в анализе переменного напряжения (ас analysis), записывается в файл out.txt. 5. Как я могу получить шаг фиксированного времени в анализе переходных процессов (transient analysis)? Время шага в анализе переходных процессов всегда урегулируется динамически. Таким образом, оно
никогда не будет оставаться постоянным во время анализа, а точки отсчета не будут равно удалены, соответственно. Но есть два параметра для управления временем шага А результаты могут также быть впоследствии линеаризованы. Как хорошо известно, команда t ran имеет следующий синтаксис: tran tstep tstop[ tstart [ trtiax] ] [ uic] Параметры tstep и tmax соотносятся co временем шага Второй параметр - верхний предел. Так что время шага никогда не может быть больше, чем tmax. Этим гарантируется минимальная точность времени. Первый параметр tstep не имеет прямого воздействия на анализ переходных процессов (он только используется при расчетах значения по умолчанию tmax, когда оно не задано). Но это имеет место, когда используется команда linearize. Если вызвать команду linearize после команды tran, тогда создается новый план (набор результатов). Все векторы линеаризованы по фиксированному времени шага, определенному параметром tstep. Таким путем можно получить результаты с равнораспределенными временными точками, подходящими для быстрого Фурье преобразования (fast Fourier transformation), например. 6. Я оптимизировал схему методом наискорейшего спуска (steepest descent). В optimize графике, генерированном командой optimize, я увидел точки с меньшими значениями функции стоимости (cost function), чем сообщалось в конце процесса оптимизации. Почему о них не сообщалось, как об оптимальных? Если выражения для градиента компонент не задано, градиент функции стоимости в текущей точке рассчитывается численно. Что означает, что цепь анализируется по точкам, слабо смещенным от текущей точки (для «е» в каждом направлении координат). Этот анализ сохраняется в результирующем optimize графике, и, конечно, может дать значения функции стоимости меньше, чем в текущей точке. Но позже, когда процесс оптимизации продолжается в направлении отрицательного градиента, тогда найдутся даже меньшие значения стоимости. Если функция стоимости увеличивается в направлении отрицательного градиента, тогда текущая точка декларируется оптимальной, не обращая внимания на найденные меньшие значения при вычислении градиента Можно спросить, как можно увеличивать функцию стоимости в расчетном направлении, если меньшие значения обнаружены при определении этого самого направления. Подобные случаи действительно редки, но значение функции стоимости может снижаться в направлении по обеим координатам и повышаться в направлении между ними (направление отрицательного градиента). 7. Я хотел рассчитать DC характеристики MOSFET элемента (см netlist ниже). Когда они были начерчены, некоторые прямые пошли вверх, чего быть не должно. Как могут характеристики быть нарисованы правильно? de mosfet characteristics . control de vds 0 10V 0.5V vgs 0 5V IV plot -i(vds) . endc vgs gate 0 de 0 vds drain 0 de 0 ml drain gate 0 0 nchannel .mode1 nchanne1 nmo s . end Рис. E.2. Графический вывод SpiceOpus DC анализ, вызванный выше, произвел результаты, упакованные в 21x6=126 точечные векторы. Первые 21 точки относятся к vgs = 0, вторые 21 к vgs = IV, и т.д. При выводе результатов рисуется 126-точечный вектор (ы). Команда plot не знает, что, например, вектор i(vds) представляет шесть суб-векторов. Она только чертит свои точки, соединяемые линиями, которые производят нежелательные прямые. Результирующий вектор должен быть разбит на части в шесть суб-векторов, для удаления прямых. Это может быть сделано формированием шести новых векторов, названных ivgO, ivgl,... ivg5, которые затем могут быть нарисованы. Так что команда plot в блоке .control выше должна быть заменена следующими командами: let ivgsO = -i(vds)[ 0, 20] let ivgsl = -i (vds) [ 21, 41]
let ivgs2 = -i(vds)[ 42, 62] let ivgs3 = -i(vds)[ 63, 83] let ivgs4 = -i(vds)[ 84,104] let ivgs5 = -i(vds)[105,125] plot ivgsO ivgsl ivgs2 ivgs3 ivgs4 ivgs5 8. Если ли способ управлять опциями из интерфейса командной строки SpiceOpus? Если устанавливать обычные опции через строку .options в cir-файле, можно ли увидеть эти значения и изменить после загрузки файла? Любые значения опций можно увидеть командой set без аргументов. Если ввести set, отображаются все переменные. Некоторые из них имеют значок «+» перед ними. Это переменные симулятора, которые обычно устанавливаются строкой .options в файле netlist. Опции (переменные со значком «+») могут также переделываться или задаваться с помощью: set variable name = value Заметьте также, что тот же эффект достигается командой let со следующим синтаксисом: let @@@simulator_variable_name = expression Второй путь задания переменных симулятора даже более гибкий, поскольку могут использоваться произвольные выражения Nutmeg. Опции могут также быть удалены командой unset: unset variable_name Если обычные опции симулятора не заданы, тогда SpiceOpus будет использовать значения по умолчанию. 9. Как я могу получить ток в произвольной ветви цепи? SpiceOpus (и другие Spices, в общем) могут выводить токи, которые протекают через источники напряжения. Это может быть сделано двумя путями: i(voltage_source_name) ИЛИ voltage_source_name#branch (Заметьте, что используется нижний регистр в Nutmeg). Таким путем токи в ответвлениях источников напряжения доступны автоматически. Если кому-то захочется измерить часть тока в цепи вне источника напряжения, последовательно должен быть добавлен источник напряжения с 0V (короткозамкнутая цепь). Это не меняет реальной цепи, она остается той же самой. Теперь, когда анализ сделан, можно получить ток через источник напряжения 0V, который, одновременно, и есть искомая ветка, используя синтаксис, приведенный выше. 10. Как результаты ас анализа могут быть отрисованы в обычно используемых единицах (dB для амплитуды и градусах для фазы) ? Положим, что out - это имя выходного узла анализируемой цепи, a in - входной узел с единицами входного источника ас относительно земли. Когда выполняется ас анализ, v(out) в действительности представляет отношение v(out)/v(in), поскольку v(in) = IV. Усиление в dB (то есть, 201og(v(out)/v(in))), и фаза в градусах (то есть, arctg(imag(v(out)/v(in))/real(v(out)/v(in)))) могут выводиться с помощью: set units = degrees plot db(v(out)) ph(v(out)) Nutmeg функции db и ph вычисляют выражения для усиления и фазы, записанные выше. Переменная units определяет единицы для тригонометрических функций (по умолчанию это радианы), так что в нашем случае фаза рассчитывается в градусах. Вместо строк, приведенных выше, можно также получить все простым: plot V(out) v(out) - это комплексный вектор, и только его действительная часть рисуется по умолчанию (подобно оригинальному Berkeley Spice). Для отображения усиления в dB должна быть выбрана опция GraphZMagnitude and Graph/Units/Magnitude: dB(201ogl0). А для отображения фазы в градусах следует выбрать Graph/Phase and
Graph/Units/Angle. 11. Когда я запускаю SpiceOpus, то всегда получаю сообщение - Note: cant find init file. Что это значит, и как я могу исправить это? Nutmeg команды, которые вводятся автоматически при старте, находятся в файле инициализации spinit. SpiceOpus, очевидно, не находит файл, из-за чего команды не выполняются. Если переменная окружения OPUSHOME установлена, тогда файл spinit должен быть в директории OPUSHOME/lib/scripts. Иначе, если OPUSHOME не определена, SpiceOpus берет переменную окружения SPICE_LEB_DIR и ищет spinit в SPICE_LIB_DIR/scripts директории. Если же и SPICE_LIB_DIR не определена, тогда используется директория по умолчанию scripts. Это c:/spiceopus/lib/scripts для операционных систем, базируемых на Windows. 12. Как я могу моделировать нелинейное сопротивление, конденсатор или индуктивность? Нелинейные элементы могут определяться двумя разными путями. Для сопротивления могут быть заданы u(i) или i(u) характеристики, для конденсатора q(u) или u(q), а для индуктивности i(y) или y(i) характеристики. Все шесть случаев нарисованы ниже. Конечно, должны использоваться нелинейные управляемые источники (В) (рис. Е.З). Рис. Е.З. Сводные изображения нелинейных элементов и их эквивалентов 13. Какой анализ может использоваться в optimize analysis заданиях? В блоке optimize analysis могут использоваться произвольные команды Nutmeg. Это включает все команды анализа Команды будут выполняться при каждой итерации процедуры оптимизации, чтобы предоставить результаты для вычисления функции стоимости. Они будут сделаны в порядке, определенном числами после optimize analysis. 14. Если width/length. канала MOSFET имеет параметры оптимизации будут ли drain/sourceperimeters/areas изменяться автоматически, соответственно с width/length? MOSFET drain/source perimeters/areas не корректируются, когда меняется width/length канала Есть также некоторые параметры модели на некоторых уровнях, которые зависят от канального параметра (как lambda для MOS2 - level = 2), и также не корректируются. Все эти параметры должны устанавливаться вручную в задании optimize analysis, предшествующем какому-либо анализу цепи. Например: ml 2 6 3 3 pchl . . . m2 1 7 3 3 pchl . . .
.model pchl pmos level=2 ... .control *** setting optimize parameter optimize parameter optimisation parameters *** 0 @ml[w] low 4u high 200u initial 1 @ml[l] low 4u high 40u initial 4 .2u 4.3u setting width dependent optimi ze optimi ze optimi ze optimi ze optimi ze optimi ze optimi ze optimi ze optimi ze optimi ze optimi ze optimi ze analysis 0 let @m2[w] = @ml[w] analysis 1 let @m2[1] = @ml[1] analysis 2 let @ml[ad] = 9e-6 * analysis 3 let @m2[ad] = 9e-6 * analysis 4 let @ml[as] = 9e-6 * analysis 5 let @m2[as] = 9e-6 * analysis 6 let @ml [pd] = 18e-6 analysis 7 let @m2[pd] = 18e-6 analysis 8 let @ml[ps] = 18e-6 analysis 9 let @m2[ps] = 18e-6 analysis 10 let @@pchl[lambda] = analysis 11 tran ... parameters in every iteration (@ml[w] + 8e-7) (@ml[w] + 8e-7) (@ml[w] + 8e-7) (@ml[w] + 8e-7) (@ml[w] + 8e-7) (@ml[w] + 8e-7) (@ml[w] + 8e-7) (@ml[w] + 8e-7) 1 / (8.3 * (@ml[1] * еб)Л1.14) . endc В примере выше мы имеем для образца два эквивалентных транзистора ml и m2, моделируемых моделью pchl, которая не что иное, как MOSFET level = 2 (netlist цепи не включен). Размеры канала ml имеют параметры оптимизации. Поскольку m2 и m 1 эквивалентны, размеры m2 изменяются в первом задании из двух optimize analysis. Теперь все perimeters/areas устанавливаются для обоих транзисторов (выражения определены технологией процесса). Также параметр lambda скорректирован, поскольку изменилась длина (lenght) канала. Здесь потребуется детальное знание модели. Но обычно нет нужды менять параметры модели, они подходят ко многим диапазонам канального widths/lengths. Автоматическое изменение параметров может быть сделано с помощью параметризованных суб-скриптов. Следовательно, netlist схемы должен быть изменен. Пример выше будет выглядеть, примерно, так: xpair 12367 pair .subckt pair 12367 param: wl=4.2u 11=4.3u ml 2 6 3 3 pchl w={wl} 1={11} ad={9e-6*(wl+8e-7)} as={9e-6*(wl+8e-7)} + pd={18e-6+(wl+8e-7)} ps={18e-6+(wl+8e-7)} m2 1 7 3 3 pchl w={wl} 1={11} ad={9e-6*(wl+8e-7)} as={9e-6*(wl+8e-7)} + pd={18e-6+(wl+8e-7)} ps={18e-6+(wl+8e-7)} .model pchl pmos level=2 ... lambda={1/(8.3*(ll*le6)A1.14)} . ends .cont rol *** setting optimisation parameters *** optimize parameter 0 @xpair[wl] low 4u high 200u initial 4.2u optimize parameter 1 @xpair[ll] low 4u high 40u initial 4.3u *** analyses *** optimize analysis 0 tran ... . endc 15. Похоже, есть противоречия в оптимизационной части SpiceOpus. Каждый раз, когда я запускаю оптимизацию для моей схемы, она выводит разные значения параметров. Почему? Оптимизация - это процесс отыскания минимума заданной функции стоимости. Если функция стоимости имеет более одного локального минимума, или функция стоимости «численно зашумлена», или глобальный минимум не ярко выражен, или метод имеет плохую сходимость, и т.д., тогда нет гарантии, что оптимизация всегда найдет глобальный минимум из случайной начальной точки. Многие методы оптимизации имеют элементы случайности в поведении, встроенные для повышения надежности обычных методов. Так что возможно получать разные решения с одним и тем же методом, запущенным из той же начальной точки, при последующих запусках оптимизации. Это также желательно, поскольку каждое решение (если метод хорошо сходится, тогда решение имеет тот же локальный минимум) даст разработчику некоторую дополнительную информацию о схеме. Заметьте также, что начальная точка устанавливается для новых значений после каждого запуска оптимизации. 16. Является ли параметр т, используемый в BSIM3v3 MOSFET модели (level = 53 in SpiceOpus), истинным параметром параллельности топологии (собственно, т * Ids) или это фактор геометрического масштабирования (то есть, т *w)?
Параметр m, используемый в BSIM3v3, является топологическим параметром. Он определяет m параллельных транзисторов, которые ведут себя приблизительно как в m-раз более широкий транзистор. Таким путем разработчик автоматически получает m параллельных транзисторов, так что ему не требуется m строк идентификации в netlist схемы, m параллельных транзисторов, в общем случае, ведут себя иначе, чем в т-раз более широкий транзистор, из-за нелинейных зависимостей ширины канала. 17. Могут ли результаты одновременно записываться в файл при работе анализа схемы? Да, это может быть сделано командой run. Анализ схемы (или несколько) должны быть определены в SPICE2 стиле с командой, имеющей точку вне интерактивного .control .endc блока. Когда цепь загружается в SpiceOpus, осуществляется анализ точки (или точек) при вызове команды запуска. Если вызываемая команда не имеет аргументов, результаты сохраняются в памяти компьютера. Иначе аргументы определяют имя файла, где результаты одновременно сохраняются. Пример: ...circuit netlist) .t ran . .. dot command(s) ) .control run output.raw . endc . end 18. Только узловые напряжения и токи источников напряжения доступны по определению после завершения вероятностного анализа (arbitrary analysis). Как я могу получить другие векторы рядом с вышеупомянутыми (скажем, ток через порт транзистора)? Другие векторы (как свойства элементов подобные току через порт транзистора, свойства модели, свойства симулятора и т.д.) могут быть включены командой save. Перед выполнением анализа следует вызвать команду save для определения векторов, которые нужно сохранить. Например: save @ml [ id] включит id (вытекающий ток) свойство транзистора ml. Если не определено save, по умолчанию сохраняются узловые напряжения и токи источников напряжения. Но если хотя бы одно save определено, тогда будут сохранены только перечисленные векторы. Команда выше сохранить, следовательно, только вектор @ml[id], и больше ничего. Если кому-то нужно сохранить векторы по умолчанию вместе со специально обозначенным вектором, следует использовать ключевое слово all. Например: save @ml[id] all включит все векторы по умолчанию и вектор @ml[id]. Список для сохранения может быть получен командой status, а отдельная команда save может удаляться ИЗ списка командой delete. 19. Как я могу сохранить результаты в выходном файле? Результаты отдельных анализов состоят из групп векторов, названных графиками (plot). Графики могут сохраняться в выходных фалах (или двоичных raw-файлах) в бинарном (binary) или текстовом (ascii) форматах командой write. Режим может быть задан переменной filetype, по умолчанию это ascii. Синтаксис команды write: write [file name] [expressions] Пример: set filetype = binary write amp.out v(l) v (4) Векторы v(l) и v(4) будут записаны в файл amp.out в binary режиме. Масштабы для обоих векторов будут тоже записаны. Если нет выражений (expressions) в списке выражений, все векторы в текущем графике сохраняются по умолчанию. Если список выражений содержит векторы из разных графиков (результаты разных анализов), тогда будут записаны все графики с векторами из списка и их масштабы. Если имя файла опущено, имя файла по умолчанию будет rawspice.raw и может быть задано флагом «-г» в командной строке. Выходной файл, сгенерированный подобным образом, может быть прочитан впоследствии в SpiceOpus командой load. 20. Я хочу сделать граничные симуляции схемы (comer simulations). Как я могу выбрать параметры модели MOS (то есть, tax, gamma и т.д.) динамически, запуская SpiceOpus?Можно ли задавать зависимости между параметрами модели?
Параметры модели могут изменяться интерактивно через команду alter или let. Однако команда alter устарела, и не будет поддерживаться в дальнейшем, так что рекомендуем пользоваться командой let. Синтаксис: alter #model_name model_parameteг = value let @@model_name[model_parameter] = value Пример: ml 1 2 5 5 pch . . . m2 3 4 5 5 pch . . . .model pch pmos level=l tox=2e-8 ... Параметр tox модели pch может меняться от 20nm до 22nm: alter #pch tox = 2.2e-8 let @@pch[tox] = 2.2e-8 Зависимости между параметрами модели или элемента можно задать с помощью parameterised subcircuits. Тем не менее, параметры модели независимы, и такие отношения обычно не нужны. Пример: pair 12345 ppair .subckt ppair 12345 param: percent=0 ml 1 2 5 5 pch ... m2 3 4 5 5 pch ... .model pch pmos level=l tox={2e-8*(l+percent/100)} + gamma={0.2 *(1+percent/100) } ... . ends Параметры tox и gamma модели pch в подсхеме xl могут быть одновременно увеличены от их номинальных значений на 1% с помощью: let @xl[percent] = 1 Граничные симуляции (Comer simulations) обычно не создаются через изменение параметров модели или элемента интерактивно. Как правило, библиотеки моделей для различных условий (типичные значения, наихудшее питание, наихудшая скорость и т.д.) включаются в netlist, как различные netclasses. Для переключения от одних границ к другим только меняйте netclass на нужный. 21. Когда градиентный метод оптимизации (именно, Davidon-Fletcher-Powell's method) используется, градиент функции стоимости должен вычисляться в каждой итерации. Как градиент вычисляется в SpiceOpus процедурах оптимизации? Если функция стоимости определена таким образом, что ее градиент или, на худой конец, некоторые компоненты градиента (частные производные) могут быть выражены через производные напряжений узла, тогда эти градиентные компоненты могут быть получены анализом чувствительности (sensitivity analysis) схемы. Необходимый анализ чувствительности должен быть сделан внутри optimize analysis блока. Математические выражения, определяющие, как получить частные компоненты градиента из производных узлового напряжения, должны быть заданы параметрами gradientx метода оптимизации градиента (gradient optimisation method). Но функция стоимости обычно не определяется таким хорошим образом, и ее градиент не может быть получен через чувствительность. В этом случае должен быть сделан числовой расчет небольшими возмущениями параметров оптимизации. Такая процедура имеет два существе иных недостатка. Первый, в хотя бы дополнительных п анализах цепи (выполнение optimize analysis блока), которые должны быть сделаны для каждой итерации, а второй, в том, что ошибки вычисления полученных производных обычно не слишком аккуратны. Следовательно, метод оптимизации градиента плохо применим к таким функциям стоимости. 22. Для чего параметры area? Параметры модели для диода, BJT, JFET и MESFET элементов всегда извлекаются для частичного вида и размеров. Таким образом, модель действительна только для этих частных реализаций элемента. Если пользователь хочет изменить вид, должна использоваться другая модель. Единственный способ, которым пользователь может воздействовать на вид (layout) - это через area фактор. Area фактор определяет, как больший (или меньший) элемент сравнивается с уже моделированным. Его значение по умолчанию единица. В
виде (layout) все размеры умножаются на area фактор, так что элемент увеличивается (или уменьшается) на это значение. 23. Почему я получаю ошибку сингулярности матрицы, если я запускаю анализ рабочей точки (operatingpoint analysis) на схеме с конденсаторами, соединенными последовательно? Ошибка сингулярности матрицы с упомянутыми причинами может обнаружиться, только если установлена опция nofloatnode sc heck. В этом случае проверка топологии цепи для плавающих узлов (floating nodes) не выполняется. Во время анализа рабочей точки все конденсаторы рассматриваются, как разомкнутая цепь, а все индуктивности, как короткозамкнутая цепь. Следовательно, если есть узел, к которому присоединены только конденсаторы, тогда этот узел будет свободным в процессе анализа рабочей точки, который приведет к ошибке сингулярности матрицы. Чтобы избежать подобных ситуаций, вставьте резисторы с огромным сопротивлением от всех свободных узлов на землю. Поскольку резисторы имеют огромное сопротивление, они не скажутся на поведении схемы. Можно также использовать опцию rshunt, которая разместит эквивалентные резисторы между всеми узлами и землей. 24. Почему я получаю сообщение failed to open, когда пытаюсь прочитать netlist схемы в SpiceOpus командой source? Если вы задали только имя файла в качестве аргумента команды source, тогда файл должен быть в текущей рабочей директории. Для выяснения текущей рабочей директории измените ее на директорию с точкой (cd . команда). Если файл не располагается здесь, тогда следует в качестве аргумента использовать абсолютный путь к файлу в команде source, или текущая директория должна быть изменена (cd команда). Если файл все еще не может быть открыт, тогда его, очевидно, нет. Общая ошибка в этом случае в том, что файл был создан в текстовом редакторе, который автоматически добавляет расширение hit к имени файла. Следовательно, файл с таким именем действительно не существует, поскольку существует только файл filename.txt. 25. Есть ли какие-нибудь сообщения об ошибках в моделях BSIM3SOIv2 в SpiceOpus? Я запускал пример схемы, доступный на web-сайте UC Berkeley's BSIMSOI, используя карту закрытой модели, но результаты в SpiceOpus отличаются от тех, о которых они сообщают согласно их симуляции. До настоящего времени не было сообщений об ошибках моделей BSIMSOI. Причина, по которой это возможно в том, что модели BSIMSOI не получили пока большого значения. Мы полагали, что только немногие люди работают с BSIMSOI и также, что достаточно сложно найти карты модели для specific=SOI процесса. Sample circuits была запущена со SpiceOpus, и некоторые ошибки были найдены и устранены в версии 2.23. Результаты находятся в согласии с результатами Berkeley. Установка SpiceOpus в Windows 95/98/NT После загрузки zip файла распакуйте его во временную директорию по своему выбору. Затем запустите setup.exe. При инсталляции вам будет задан вопрос, куда бы вы хотели установить SpiceOpus, и файлы будут скопированы туда. Будет также добавлен выполняемый файл SpiceOpus и ссылка на документацию в Start/Programs (Пуск/Программы) меню. После завершения установки вы можете удалить временную директорию. Директория, куда вы установите SpiceOpus, будет содержать следующие поддиректории: • bin - директория с исполняемыми файлами симулятора spice3 и исходный код модели стрр препроцессора • documentation - файлы документации в формате html. • examples - файлы примеров цепей. • lib - файлы библиотек скриптов (lib/scripts), файлы помощи (lib/helpdir), предкомпилированный код моделей (lib/cm) и исходный код моделей (lib/cmsource/). • include - включены файлы для компиляции кода моделей. • template - файлы шаблонов для построения и компиляции кода моделей. Некоторые переменные окружения могут быть установлены для указания SpiceOpus, где искать файлы. Это переменные: • OPUSHOME - путь к домашней директории SpiceOpus (default: с:/spiceopus). • SPICE_EXEC_DIR - путь к исполняемым файлам, справедливо только, если переменная OPUSHOME не определена, иначе SPICE_EXEC_DIR = OPUSHOME/bin (default: c:/spiceopus/bin). • SPICEfLIBDIR - путь к директории библиотеки, справедливо только, если переменная OPUSHOME не
определена, иначе SPICE_LIB_DIR = OPUSHOME/lib (default: c:/spiceopus/lib). • SPICE_LOCK_NAME- блокировать имя файла (default: lock). • SPICE_HELP_DIR - путь к директории help (default: SPICE_LIB_DIR/helpdir, или, если SPICE_LIB_DIR не определено: c:/spiceopus/lib/helpdir). • SPICE_SCRIPTS - путь к директории скриптов (default: SPICE_LIB_DIR/scripts, или, если SPICE_LIB_DIR не определено: c:/spiceopus/lib/scripts). • SPICE_SCRIPTS - путь к директории скриптов (default: SPICE_LIB_DIR/scripts, или, если SPICE_LIB_DIR не определено: c:/spiceopus/lib/scripts). • SPICE_PATH - путь к основной программе SpiceOpus (default: SPICE_EXEC_DIR/sptce3, или, если SPICE_EXEC_DIR не определено: c:/spiceopus/bin/spice3). • SPICE_EDHOR - путь к редактору на ваш выбор (default: c:/windows/notepad.exe). Если вы переместите любую группу файлов в какую-либо другую директорию, вы должны изменить соответствующую переменную окружения. Установка SPICE OPUS в LINUX Под root распакуйте tar.gz файл. Войдите в директорию, созданную при распаковке и введите spice.install /usг/local Программа установки обнаружит и удалит существующую установку SPICE OPUS в заданном дереве (в нашем случае Aisr/local) и затем установит SPICE OPUS в дерево (/usr/local). Следующие директории будут содержать файлы SPICE OPUS: • /usr/local/bin. - директория с выполняемыми файлами симулятора spice3 и исходным кодом модели препроцессора стрр. • /usr/local/liblspice/documentation- файлы документации в формате html. • /usr/local/liUspice/lib - файлы библиотеки, скрипты (scripts/), файлы help (helpdir/), прекомпилированный код моделей (ст/) и исходный к прекомпилировэнному коду моделей (cm source/). • /usrAocal/libPspicefinclude - включая файлы для компилирования кода моделей. • AisrAocal/lillspice/template - шаблоны файлов для построения и компиляции кода моделей. SPICE OPUS требует работающего, установленного X-Window. Вы можете установить SPICE OPUS в некоторое другое место, определив это как параметр командной строки для spice, install. Переменные окружения установлены в /usr/local/bm/spice-configcKpwn't shell. Когда вы запускаете spice3, вы запускаете этот скрипт, который устанавливает переменные окружения и запускает исполняемый файл spice3.bin. Начинаем Давайте рассмотрим простой транзисторный усилитель, показанный на рисунке ниже. Рис. Е.4. Схема транзисторного усилителя Вначале мы должны описать схему в *.cir файле. Netlist схемы может быть присоединен в некоторых
редакторах схем, или он может быть написан в текстовом редакторе Netlist простого усилителя выглядит следующим образом: Transistor amplifier * this is amplifier.cir file * input node 1 * output node 4 * voltage resources vO 3 0 de 10V vl 1 7 de OV ас 1 sin 0 0.1V 10kHz v2 7 0 de 0.58V * bipolar transistors ql 6 2 5 2n2222 q2 4 6 3 2n2907 * resistors rl 1 2 Ik r2 5 4 Ik r3 5 0 10 * model for a 2n2222 transistor •model 2n2222 npn (is=19f bf=150 vaf=100 + ikf=0.18 ise=50p ne=2.5 br=7.5 + var=6.4 ikr=12m isc=8.7p nc=1.2 rb=50 + re=0.4 rc=0.3 cje=26p tf=0.5n cjc=llp + tr=7n xtb=1.5 kf=0.032f af=l) * model for a 2n2907 transistor •model 2n2907 pnp (is=l.lP bf=200 nf=1.2 + vaf=50 ikf=0.1 ise=13p ne=1.9 br=6 + rc=0.6 cje=23p vje=0.85 mje=1.25 tf=0.5n + cjc=19p vjc=0.5 mjc=0.2 tr=34n xtb=1.5) . end Когда netlist схемы записан (в нашем случае c:\spiceopus\amplifier.cir файл) схема может симулироваться. Запустите Spice Opus щелчком по иконке Start/Programs/Spice Opus/Spice Opus. Появится SPICE OPUS Command window (окно команд) SpiceOpus Command Window — Jj (X, File | Edit Control Window Help xtraevt. c ,Г-version 1. UГ-Jan“Ь 2UUb a| Additional event-driven devices ~ Author: Simshelf, Inc. Copyright: 2000 Found 4 CM device (s) and 2 UDN(s). Successfully loaded 4 CM device(s) and 2 UDN(s) Welcome to Program. SpiceOpus (c), version: 2.24 Light Date built- Thu Jan 5 14:22:47 GET 2006 Based on: SPICE 3f4 (patched to 3f5) by Electronics Research Laboratory College of Engineering University of California, Berkeley XSPICE by Georgia Tech Research Institute University of Ljubljana, Slovenia Faculty of Electrical Engineering Group For Computer Aided Circuit Design http://fides.fe.uni-lj. si/spice/ Type "help" for more information, "quit" to leave SpiceOpus (c) 1 -> Рис. E.5. Окно команд SpiceOpus Spice Opus ожидает вашей первой команды с приглашением: Spice Opus 1 -> _ Вначале вы должны загрузить netlist схемы в SPICE. Можно сделать это командой source: Spice Opus 1 -> source c:\spiceopus\amplifier.cir Circuit: transistor amplifier Spice Opus 2 -> _ Мы сделаем DC анализ, анализ переходных процессов (transient) и АС анализ соответствующими командами
de, tran и ас. Источник напряжения v2 меняется от 0 до IV с 5mV шагом в de анализе. Анализ переходных процессов (transient) от 0 до 200us с входным синусоидальным сигналом 10kHz выполняется командой tran. А входная частота меняется от 1kHz до 10MHz с 25 точками на декаду в ас анализе: Spice Opus 2 -> de v2 0 IV 5mV Spice Opus 3 -> tran lus 20Ous Spice Opus 4 -> ac dec 25 1kHz lOOmegHz Spice Opus 5 -> _ Результаты сохраняются в специальных структурах данных, названных графиками (plots). Наши три анализа создают только три графика. Мы можем изменить текущий график командой setplot. Результаты частного анализа могут быть зафиксированы командой plot. Spice Opus 5 -> setplot Type the name of the desired plot: new New plot Current acl transistor amplifier (AC analysis) tranl transistor amplifier (Transient analysis) del transistor amplifier (DC transfer characteristic) const Constant values (constants) ? del Spice Opus 6 -> plot v (4) xlabel v (2) [V] ylabel Output [V] Рис. E.6. Графический вывод команды Рис. Е.7. Графический вывод результата анализа Spice Opus 9 -> setplot acl Spice Opus 10 -> _ Для получения графика фазы в градусах (а не радианах) должна быть установлена переменная units . Мы можем увидеть бесконечную фазу на графике. Это происходит, поскольку Spice Opus вычисляет фазу в интервале [-180°, 180°]. Spice Opus 10 -> set units = degrees Orme 11 -x.
У, Imag 10000 100000 1е-Л0б 1еТО7 х, Real Рис. Е.8. Графический вывод характеристик Spice Opus 12 -> _ Бесконечность можно устранить определением нового вектора, названного phase. Выражение для переноса всех положительных компонент для 360°. Spice Opus 12 -> let phase = unwrap (vp (4) ) Spice Opus 13 -> plot vdb(4) phase xlabel f[Hz] ylabel TMagnitude[dB], Phase[deg]’ MagnitudeldB], Phase[deg] WOOD 100000 1 □□□□□□ Рис. E.9. Отредактированный графический вывод Spice Opus 14 -> _ В конце мы удалим все графики и освободим память командой destroy и покинем Spice Opus после команды quit. Spice Opus 14 -> destroy all Spice Opus 15 -> quit Spice-3f4 done Использование пакета EAGLE, как SPICE OPUS редактора схем EAGLE это пакет разработки с вводом схемы и разводкой (РСВ), включающий мощный язык пользователя. Используя этот язык, можно написать программы на языке пользователя (User Language Programs - ULP), которые могут захватывать информацию из файла редактора схем и производить произвольные выводы. Мы пишем ULP, которая генерирует Spice netlist. Этот документ содержит инструкции по пользованию программой. Черчение схемы Первый шаг в генерации Spice netlist это черчение схемы. Есть несколько простых правил, которыми не следует пренебрегать. Узлы (Nodes) - Узлы в Spice netlist эквивалентны сетям (nets) в схемах. Сети автоматически маркируются, используя метки N$l, N$2....N$n. Эти имена транслируются в имена узлов удалением знака доллара ($), следовательно, задавая имена Nl, N2....Nn. Когда же пользователь хочет задать его, или ее, имя узлу,
соответствующая сеть должна быть переименована командой редактора схем NAME, и имя должно быть сделано видимым с помощью прикрепления LABEL (метки) сети. В свою очередь, чтобы иметь возможность переименовать сеть или прикрепить метку к ней, сеть должна быть видимой. Редактор схем автоматически помещает сеть между двумя элементами, которые соединены непосредственно через их выводы (таким образом, вывод «а» первого элемента размещается прямо на выводе «Ь» второго элемента), но такая сеть невидима. Чтобы сделать ее видимой два элемента должны быть чуть раздвинуты. Опорный узел (Reference Node) - Опорный узел должен быть назван GND или 0 (ноль). Имена и значения элементов - Каждый элемент в схеме может иметь две строки, прикрепленные к нему. Это >NAME и >VALUE. Имена автоматически генерируются для всех элементов и обычно начинаются с буквы, которая также требуется Spice для этого типа элемента. Если этого не случается, имя должно быть отредактировано. Значение элемента - это либо введенное пользователем, либо автоматически выбранное из одной из библиотек EAGLE. Обе строки, имя и значение, непосредственно копируются в netlist, первое помещается до, а второе после списка узлов: >NAME N1 N2 ... Nn RVALUE Не присоединенные выводы (Unconnected Pins) - Если любой вывод элемента не присоединен к сети, знак вопроса (?) будет помещен в генерируемый netlist на место пропущенного соединения. Spice библиотека элементов - Для виртуальных элементов, таких как управляемые источники, которые не могут быть использованы а РСВ разработке непосредственно, была добавлена специальная библиотека к пакету EAGLE, названная spice.Ibr. Генерация Spice Net List - Spice netlist генерируется из схемы запуском spice ULP из командной строки. Синтаксис исполняемой программы: RUN spice.ulp [working directory path [master document name [output file name]]] Working directory (рабочая директория) - это та, где выходной файл (по умолчанию, то же имя, что у файла схемы, но с расширением .cir) будет сгенерирован, и где расположен основной (master) документ (названный «master.cir» по умолчанию). Основной (Master) документ - это .cir файл, который содержит все необходимые данные для анализа схемы (блоки управления, включение библиотек и т.д.), исключая сам netlist, который генерируется spice ULP программой. Основной документ должен иметь директиву .INCLUDE (сгенерированный netlist файл), и все использованные модели, и библиотеки подсхем. Важно, чтобы во время генерации netlist все используемые подсхемы были включены, так чтобы ULP имела возможность правильно упорядочить узлы подсхем. Подсхемы и модели - Как отмечено выше, подсхемы должны быть доступны через основной документ (находясь либо в, собственно, основном документе, либо в любом документе, включенным директивой .INCLUDE основного документа) в момент генерации netlist. Имя подсхемы должно быть введено только, как элемента >VALUE в схеме. Ручное редактирование Net List - После генерации netlist возможно редактировать его, используя любой текстовый редактор. Если текст, вводимый вручную, помещается на отдельную строку, где первый символ это знак плюс «+», этот текст будет сохранен при последующей автоматической генерации netlist. Строки, редактируемые вручную, должны помещаться сразу после ввода элемента (не допускается каких-либо строк комментариев), и будут сохранены, только если имя элемента еще существует во время последующей автоматической генерации netlist. Если элемент удален из схемы, или его имя изменилось, линии ручного редактирования, принадлежащие этому элементу, будут потеряны. SPICE OPUS, Berkeley SPICE и XSPICE Оригинальный Berkeley netlist синтаксис для устройств и моделей сохраняется по всему SPICE OPUS, исключая следующие случаи: • XSPICE А устройства и XSPICE .MODEL карточки. • Berkeley SPICE2 стиль POLY источников поддерживается, но не рекомендуется. Используйте вместо него SPICE3 стиль В источников. • Было сделано много расширений. Чтобы выяснить больше, прочитайте этот документ. Деление netlist схемы на несколько файлов (.include н .lib) Во многих случаях это практика деления большого netlist между множеством файлов. SPICE OPUS предоставляет два значения для выполнения этого: .INCLUDE и .LIB netlist директивы. Обе они - это директивы препроцессора, и включают внешний файл или часть внешнего файла в netlist, который
анализируется (parsed). .INCLUDE и .LIB могут быть использованы для всего netlist (не только вне, но и внутри .SUBCKT и .CONTROL блоков также). Заметьте, что это препроцессорные директивы, и просто включают текст из других файлов. .INCLUDE Синтаксис: .INCLUDE filename ИЛИ .INCLUDE path/filename Включает файл. .LIB Синтаксис: .LIB 'filename' section ИЛИ .LIB 'path/filename' section Включает секции файла. Секция файла может быть задана следующим образом: .LIB section * stuff to include . ENDL Оба .INCLUDE и .LIB могут заходить так глубоко, как вы захотите. Рекурсия не допустима, и когда это случается, выдается сообщение об ошибке при загрузке netlist. Не забудьте взять имя файла в одиночные кавычки. Используйте 7 как сепаратор пути в WINDOWS и в UNIX, хотя 'V также работает для WINDOWS. Как SPICEOPUS ищет .INCLUDEh .LIBфайлы В случае, когда файл задается с полным или частичным путем, используйте 7' вместо 7 в WINDOWS. Это сделает ваш netlist более компактным. В случае использования 7' в WINDOWS они будут конвертированы в 'V автоматически. Для задания диска в WINDOWS используйте тот же синтаксис, что и в DOS (то есть, 'С:'). Мы предостерегаем против использования спецификации для диска, поскольку это сделает ваш netlist менее совместимым с UNIX. Файл вначале ищется в текущей директории, если он задан именем файла. Если вы зададите относительный путь, первым выбирается путь относительно текущей директории. Чтобы увидеть текущую рабочую директорию используйте команду Numeg: cd . Для изменения вашей домашней директории (UNIX только) введите: cd Для изменения вашей рабочей директории введите: cd directory Если файл не находится, он ищется относительно директорий, заданных в переменной sourcepath. Для установки типа sourcepath (обычно в файле spinit): * This will add pathl, ... to the sourcepath set sourcepath=( $sourcepath pathl path2 ... ) * This will set sourcepath to pathl, ... set sourcepath=( pathl path2 ... ) * Don't forget to add a space after '(' and before ')'. По умолчанию sourcepath установлено в: .Sltlib/scripts directory>
Это означает, что файлы ищутся в текущей директории и затем в lib/scripts директории, где установлена программа SPICE OPUS. И, наконец, если файл все еще не найден, файл ищется относительно директории, где расположен файл, из которого вызван .INCLUDE или .LIB. Netclasses (.NETCLASS) Во многих случаях бывает необходимость во множестве разных описаний для той же части схемы. Один из таких случаев - это угловая точка анализа при разработке чипа, где разработчик имеет разные модели для разных внешних условий, которые могут иметь место при производстве чипа (подобно типовым значениям, хуже единицы, хуже нуля, питание меньше, чем и т.д.). Другое использование в режиме аварийного анализа (failure mode analysis - FMA), где цепь (обычно включающая дискретные компоненты) симулируется для различных аварийных режимов (то есть, Q1 закорачивается между С и В, Q1 закорачивается между В и Е, Q1 открыто на С, ...). Определение netclass (.NETCLASS, .ENDN) Для определения секции netlist, которая описывает частное оперативное условие, используйте: .NETCLASS classname classkey condition description .ENDN Использование .NETCLASS для определения угловых точек Давайте, определим 4 netclasses из класса chiptype и назовем их tm, wo, wz и wp. Каждый из них будут описывать соответствующие NMOS и PMOS модели: .NETCLASS chiptype tm .model nmosmod nmos LEVEL=... .model pmosmod pmos LEVEL=... .ENDN .NETCLASS chiptype wo .model nmosmod nmos LEVEL=... .model pmosmod pmos LEVEL=... ENDN NETCLASS chiptype wz .model nmosmod nmos LEVEL=... .model pmosmod pmos LEVEL=... ENDN NETCLASS chiptype wp .model nmosmod nmos LEVEL=... .model pmosmod pmos LEVEL=... ENDN Slttypical mean model parameters> Slttypical mean model parameters> Sltworst one model parameters> Sltworst one model parameters> Sltworst zero model parameters> Sltworst zero model parameters> Sltworst power model parameters> Sltworst power model parameters> Производство чипа способно обычно предоставить разработчику такие модели для NMOS, PMOS, diffusions, и т.д. Конечно, вы не должны копировать MODEL карточки из других файлов. Вы можете просто использовать .INCLUDE или .LIB для включения их в .NETCLASS блок. Использование .NETCLASS для определения сбойных режимов (failure modes) Давайте, определим 6 netclasses, 3 из класса criticalc и 3 из класса criticalq: * Capacitor Cl normal operation .NETCLASS criticalc normal cl 1 2 lOu ENDN * Capacitor Cl shorted NETCLASS criticalc short cl 1 2 lOu rclp 1 2 Im ENDN * Capacitor Cl open .NETCLASS criticalc open cl 1 int2 lOu rcls int2 2 1G ENDN * BJT QI normal operation NETCLASS criticalq normal ql 10 20 30 q2n2222
. ENDN * BJT QI open colector .NETCLASS criticalq openc ql int10 20 30 q2n2222 rqls int10 10 1G .ENDN * BJT Ql shorted B-E .NETCLASS criticalq shortbe ql 10 20 30 q2n2222 rqlp 20 30 Im .ENDN Netclass н пречнсленне ключей (key enumeration), netclasses по умолчанию Имена netclass автоматически перечисляются в том же порядке, в каком они находятся в netlist, начиная с 0. Ключи для частных netclass также автоматически перечисляются в порядке их нахождения в netlist, начиная с 0. В выше описанном случае аварийных режимов перечисление следующее: criticalc 0 normal 0 short 1 open 2 criticalq 1 normal 0 openc 1 shortbe 2 Ключ по умолчанию для каждого netclass - это один, из перечисляемых с 0. Это ключ, который первым определяется для частного netclass. Он рекомендуется для определения, как первый ключ нормальных операционных условий. В случае множества .NETCLASS блоков с определениями тех же самых netclass имен и имен ключей, они обрабатываются как члены одной netclass: :key комбинации. Ключ netclass по умолчанию - один из активных, когда control block (блок управления) стартует. Если вы симулируете пример FMA, описанный выше, ключ normal будет использоваться для criticalc netclass, и ключ normal будет использоваться для criticalq netclass. Фактически вы будете симулировать нормальные операционные условия для С1 и Q1. Выбор netclass ключа нз Nutmeg Для выбора частного ключа для отдельного netclass используйте: netclass select Sltnetclass name>::Sltkey name> * These three are also possible netclass select Sltnetclass number>::Sltkey name> netclass select Sltnetclass name>::Sltkey number> netclass select Sltnetclass number>::Sltkey number> Изменения в активных ключах, если таковые есть, будут иметь эффект после вашего вызова: netclass rebuild Если изменений не было (активные ключи - это то же самое, что только что проанализированные), тогда команда netclass rebuild будет игнорироваться и схема не будет анализироваться вновь. Для принудительного анализа, не обращая внимания на подбор ключей, используйте переменную forcer ebuild. Если переменная установлена, тогда новый анализ всегда выполняется. Информация о согласовании ключей может быть также возвращена: netclass uptodate &ltscalar> Значение scalar установлено на случай необходимости обновления схемы. Это значит, что активные ключи не те же самые, что определены анализом в настоящий момент, и будет иметь место новый анализ схемы или перестройка. Иначе &ltscalar> устанавливается в ноль и обновление схемы не требуется. Новый анализ схемы также сбросит все значения параметров образца к тем, что заданы в описании активного netclass. В случае, когда вы вызываете netclass rebuild, это происходит во время optimize analysis и команда не игнорируется, вызовите также: optimize setparams Команда правильно устанавливает все параметры образца, математически связанные с параметрами
оптимизации командой let. Пример: optimize analysis ... optimize analysis 100 netclass uptodate reparse optimize analysis 110 if reparse optimize analysis 120 netclass rebuild optimize analysis 130 optimize setparams optimize analysis 140 end optimize analysis 150 unlet reparse optimize analysis ... Для сброса всех ключей netclass и количества ключей (количество zero ключей), вызовите: netclass reset Изменения будут вновь иметь место после вашего вызова netclass rebuild. Некоторые примеры: * Simulate normal operation for Cl and short B-E for QI netclass select criticalc::normal netclass select criticalq::shortbe netclass rebuild * Simulation/analysis commands follow * Simulate a short in Cl and short B-E for QI netclass select criticalc::short netclass select criticalq::shortbe netclass rebuild * Simulation/analysis commands follow * This is also possible netclass select 0: :1 netclass select 1: :2 netclass rebuild * To select worst one conditions for a chip simulation netclass select chiptype::wo netclass rebuild Отображение netclasses Для отображения списка всех netclass введите: listing nc Это выведет все netclass и все ключи. Это также пометит все активные ключи и предупредит вас, если netlist нуждаются в netclass rebuild. Для отображения списка активных ключей netclass для всех netclass введите: listing activenc Для получения информации по выбранным netclass введите: listing nc netclassl netclass2 ... В случае если схема нуждается в netclass rebuild (активные ключи были изменены с момента последнего вызова netclass rebuild), будет выведено предупреждение. Важные замечания относительно расширения имени в подсхеме SPICE OPUS использует XSPICE стиль расширения имен подсхем (более логичный, чем Berkeley стиль). Nutmeg скрипты, которые получают доступ к элементам/моделям в подсхемах, не будут работать, если они написаны для Berkeley SPICE. Прочитайте раздел ниже, чтобы узнать больше об XSPICE стиле расширения имен подсхем. Быстрое введение в подсхемы Подсхема может декларироваться с использованием следующего синтаксиса: .subckt subckt name nodel node2 node3 ... subckt netlist . ends Узлы nodel, node2, ... - это интерфейс к внешнему миру. Узел 0 внутри подсхемы имеет то же значение, что где бы то ни было в схеме (узел земли). Подсхема может быть использована в вашем netlist:
xl nodel node2 node3 ... subckt name Заявление выше размещает подсхему, названную subcktjaame, как образец подсхемы xl в вашей схеме, и соединяет ее с узлами nodel, node2, node3, ... Давайте взглянем на пример: .subckt attenuator in out comm rl in int 16.67 rmodl r2 int out 16.67 rmodl r3 int comm 66.67 rmodl .model rmodl r tcl=0.001 tc2=0.0001 . ends Подсхема, определенная выше, это 6dB аттенюатор с температурной зависимостью, вызванной температурной зависимостью резисторов (см. резистивную модель rmodl). Модель rmodl, устройства rl, г2 и гЗ и имена узлов in, out, comm и int справедливы только внутри этой подсхемы. Вы можете повторно использовать эти имена где-нибудь еще в netlist, не опасаясь конфликта имен. В плане использования этой подсхемы в netlist должен быть использован элемент х: xexamplel 670 attenuator Этим размещается подсхема attenuator, как образец подсхемы xexamplel в вашей схеме, и соединяет узлы in, out и comm подсхемы с узлами 6, 7 и 0 схемы. Подсхемы могут также использоваться в подсхемах уровнем выше. В качестве примера, давайте построим 12dB аттенюатор из двух 6dB аттенюаторов: .subckt bigatten in out xnestedl in int 0 attenuator xnested2 int out 0 attenuator . ends Для использования подсхемы bigatten, добавьте следующую строку в netlist: xexample2 7 8 bigatten Глубина вложения подсхем (подобно той, что выше) не ограничена. Расширение имени подсхемы В порядке ссылки на внутренние узлы, устройства и модели внутри подсхем, вы должны знать, как расширяются имена, прежде чем netlist будет анализироваться. Что такое расширение подсхемы? Прежде, чем SPICE действительно анализирует схему, программа делает два прохода через netlist. Во время первого прохода собираются определения подсхем. Во второй проход SPICE действительно замещает каждую ссылку на подсхему (х элемент) реальной подсхемой. Это не столь очевидно, как может показаться. В основном следует сделать две вещи: • Заместить узлы подсхемы, которые представляют их интерфейс, узлами специфицированными в вызове образца подсхемы (X строка). • Переименовать все внутренние узлы подсхемы, устройства и модели так, чтобы не обнаруживалось конфликтов. Последовательно все ссылки на эти узлы, устройства и модели внутри подсхемы должны быть также переименованы. Давайте поясним это на экземпляре схемы: vl inti 0 1 rin inti 1 50 xsubl 1 2 100 attenuator xsub2 2 3 100 attenuator xsub3 3 4 bigatten rxl 100 0 Im rout 4 0 50 Этот netlist расширяется до: vl inti 0 1 rin inti 1 50 Вот расширение образца подсхемы xsubl (attenuator): rl:xsubl 1 int:xsubl 16.67 rmodl:xsubl r2:xsubl int:xsubl 2 16.67 rmodl:xsubl r3:xsubl int:xsubl 100 66.67 rmodl:xsubl .model rmodl:xsubl r to1=0.001 tc2=0.0001
Вот расширение образца подсхемы xsub2 (attenuator): rl:xsub2 2 int:xsub2 16.67 rmodl:xsub2 r2:xsub2 int:xsub2 3 16.67 rmodl:xsub2 r3:xsub2 int:xsub2 100 66.67 rmodl:xsub2 .model rmodl:xsub2 r to1=0.001 tc2=0.0001 А теперь расширение образца подсхемы xsub3 (bigatten). Вначале расширяется вложенная подсхема xnestedl в xsub3 (attenuator): rl:xnestedl:xsub3 3 int:xnestedl:xsub3 16.67 rmodl:xnestedl:xsub3 r2:xnestedl:xsub3 int:xnestedl:xsub3 int:xsub3 16.67 rmodl:xnestedl:xsub3 r3:xnestedl:xsub3 int:xnestedl:xsub3 0 66.67 rmodl:xnestedl:xsub3 .model rmodl:xnestedl:xsub3 r to1=0.001 tc2=0.0001 Расширение вложенной подсхемы xnested2 в xsub3 (attenuator): rl:xnested2:xsub3 int:xsub3 int:xnested2:xsub3 16.67 rmodl:xnested2:xsub3 r2:xnested2:xsub3 int:xnested2:xsub3 4 16.67 rmodl:xnested2:xsub3 r3:xnested2:xsub3 int:xnested2:xsub3 0 66.67 rmodl:xnested2:xsub3 .model rmodl:xnested2:xsub3 r tel=0.001 tc2=0.0001 И, наконец, последние два резистора из оригинального netlist. rxl 100 0 1m rout 4 0 50 Полное имя образца состоит из буквы устройства и остального имени образца. Вот так, например, rinlO: г - это буква устройства, говорящая анализатору (parser), что он имеет дело с резистором, a inlO - остаток имени образца. Другой пример xinnerl: х - это буква устройства, которая говорит анализатору, что он имеет дело с подсхемой, a innerl - это остаток имени образца подсхемы. Правила расширения. Для имен узлов: node name:lowest level full subcircuit instance name:.... Пример: int:xnestedl:xsub3 Это означает, узел int внутри образца подсхемы xnestedl, который расположен внутри образца подсхемы xsub3. Для имен образцов: full device instance name:lowest level full subcircuit instance name:.... Пример: rl:xnestedl:xsub3 Что означает, образец резистора rl (имя образца 1) внутри образца подсхемы xnestedl, который располагается внутри образца подсхемы xsub3. Для имен моделей: model name:lowest level full subcircuit instance name:.... Пример: rmodl:xnested2:xsub3 Что означает: модель, названная rmodl внутри образца подсхемы xnested2, который располагается внутри образца подсхемы xsub3. Давайте, предположим, что вы хотите вывести график напряжения внутреннего узла подсхемы int, который располагается внутри образца подсхемы xnestedl, который располагается внутри образца подсхемы xsub3. Просто введите:
plot v(int:xnestedl:xsub3) Чтобы изменить resistance (сопротивление) параметра образца на 20 для резистора гЗ внутри образца подсхемы xnestedl, который расположен внутри образца подсхемы xsub3, введите: let @r3:xnestedl:xsub3[resistance]=20 Чтобы изменить tel параметр модели на 0.002 для модели rmodl внутри образца подсхемы xnestedl, который располагается внутри образца подсхемы xsub3, введите: let @@ rmodl:xnestedl:xsub3[tcl]=0.002 Глобальные узлы (.GLOBAL) В версии 2.02 была введена опция .global HSPICE. Эта опция делает некоторые узлы глобальными, так образом предотвращая их расширение, когда они обнаруживаются в подсхемах. Узел земли (0) глобальный по определению. Чтобы сделать узел глобальным, введите следующую опцию в ваш netlist: .global nodel [node2 [node3 ...]] Чтобы сделать узлы vdd и vss глобальными, введите следующую опцию в ваш netlist: .global vss vdd Теперь все узлы, названные vdd и vss не будут больше расширяться, когда они внутри подсхем. Это делает для вас возможным соединение с подсхемами без создания каких-либо соединений узлов интерфейсов в определении подсхемы. Чувствуете, что это похоже на глобальные переменные в «С». Локальные н глобальные определения .model Модель, определенная внутри подсхемы, это локальная модель. Такая модель может быть доступна только внутри подсхемы. Модель, определенная вне подсхемы, это глобальная модель. Такая модель может быть доступна на верхнем уровне схемы и во всех подсхемах. Если локальная модель имеет то же имя, что и глобальная, используется локальная модель. И опять чувствуется «С»... Поиск образцов н узлов для СМ, управляемые нсточннкн (В, Е, F, G, Н, POLY) н К элементы В случае, когда любой из выше упомянутых элементов netlist или моделей используется внутри определения подсхемы, все имена образцов расширяются. Это делает все ссылки других образцов внутри определения подсхемы локальными: * KI references instances (Ll, L2) inside the subcircuit (local instances) .SUBCKT ... KI Ll Ll 0.99 .ENDS To же относится к узлам. Имена узлов также расширяются и транслируются, что делает их локальными, пока они не появятся в списке соединений подсхемы, или если они глобальны. Соединение подсхемы - единственный путь, помимо глобальных узлов, отправить сигнал в подсхему. Параметризованные подсхемы Подсхема может быть параметризована через определение ее следующим образом: .subckt subckt name nodel node2 ... noden [Param:] paraml=defl param2=def2 ... paramm=defm subckt netlist . ends Где defi - это предопределенное значение для параметра parami. Предопределенное значение может быть опущено. В последнем случае значение параметра должно быть специфицировано в реализации подсхемы. Значение по умолчанию может быть действительным или комплексным скаляром или вектором. Синтаксис тот же, что и в Nutmeg: Пример: a is a real scalar b is a complex scalar c is a real vector d is a complex vector e is a parameter with no default value subckt demosub 12 3 Param: a=l b= (1,2) c= (1; 2 ; 3) d=((1,2) ; (3,4) ) e
. ends Param, ключевое слово может быть опущено. В том случае, когда оно опущено, первый параметр (paraml) должен иметь значение по умолчанию, иначе он будет интерпретирован, как один из узлов соединения подсхемы. В случае, если Param - ключевое слово, имена параметров и их определения опущены, подсхема оказывается без параметров и действует как обычная SPICE подсхема. Параметризованная подсхема может быть реализована в вашем netlist следующим образом: xl connl conn2 ... connn subckt name [Param:] paraml=vall param2=va!2 ... paramm=valm Param, ключевое слово может быть опущено. Параметр вместе с его значением может быть опущен. Если параметр не специализирован, в реализации используется значение по умолчанию. Если значение по умолчанию не находится, происходит ошибка. Пример: * For b and d the default values are used xl 10 20 30 demosub Param: a=10 c=2 e=l В случае, когда Param - ключевое слово, параметры и их значения опущены, предопределенные значения используются для всех параметров. Если любые предопределения пропущены в определении подсхемы, происходит ошибка. Для параметризации образца или значения параметра модели используйте {expression} синтаксис. Давайте, определим делитель напряжения с переменным коэффициентом деления: .subckt divider top out bottom Param: ratio=0.5 rtotal=10k rl top out {(1-ratio)*rtotal} r2 out bottom {ratio*rtotal} . ends Для реализации делителя напряжения с коэффициентом деления 0.25 и общим сопротивлением 100k используйте: xl pow out 0 divider Param: ratio=0.25 rtotal=100k Можно также параметризировать образец подсхемы внутри определения подсхемы: .subckt bigsub top outl out2 bottom Param: ratiol=0.25 ratio2=0.5 rtotal=100k xl top outl bottom Param: ratio={ratiol/2} rtotal={rtotal} x2 top out2 bottom Param: ratio={ratio2/2} rtotal={rtotal} . ends Фигурные скобки могут быть опущены, когда передаются значения выражения в образец подсхемы: .subckt bigsub top outl out2 bottom Param: ratiol=0.25 ratio2=0.5 rtotal=100k xl top outl bottom Param: ratio=ratiol/2 rtotal=rtotal x2 top out2 bottom Param: ratio=ratio2/2 rtotal=rtotal . ends Заметьте, что последнее допустимо только с образцами подсхем (не с устройствами SPICE). Следующий пример ошибочный: .subckt divider top out bottom Param: ratio=0.5 rtotal=10k rl top out (1-ratio)*rtotal r2 out bottom ratio*rtotal . ends Если фигурные скобки опущены, используйте оператор eq вместо «=». Любой правильный оператор Nutmeg, функция или константа из графика const может быть использована в выражении. Избегайте использования оператора «=» с тех пор, как он стал причиной проблем в некоторых специальных случаях. Используйте вместо него eq. Модели могут также параметризироваться: .subckt divider top out bottom Param: ratio=0.5 rtotal=10k tc=0 rl top out {(1-ratio)*rtotal} rmod r2 out bottom {ratio*rtotal} rmod .model rmod r tcl={tc} . ends
В-источник может также параметр из ироваться: * A multiplier .subckt mult ini in2 out Param: offset=0 factor=l Bl out 0 V=({offset})+({factor})*v(ini)*v(in2) . ends * Another example * A sigmoid transfer function .subckt sigmoid in out Param: offset=0 span=2 steepness=l * Note that constant PI is taken form the const plot because {pi} is used Bl out 0 V=({offset}) + ({span/pi})*atan(v(in) )*({pi/2*steepness}) ) . ends Заметьте, что {} выражения окружены второй парой обычных скобок Q. Это предупреждает ошибки, если {} выражение расширяется к отрицательному числу. .PARAM Клаузула Синтаксис: .PARAM parameter=expression Дополнительные параметры могут быть определены с использованием клаузулы .PARAM. Эти параметры оцениваются после передачи в подсхему, но до реализации любого элемента или модели. Не имеет значения, где в определении подсхемы локализована клаузула .PARAM. Она всегда оценивается до анализа любых образец/модель. .PARAM клаузулы оцениваются в том же порядке, в каком они находятся в определении подсхемы. Пример: .subckt divider top out bottom Param: ratio=0.5 rtotal=10k tc=0 .param rl=(ratio-l)*rtotal .param r2=ratio*rtotal rl top out {rl} rmod r2 out bottom {r2} rmod .model rmod r tcl={tc} . ends Также возможно (результаты в той же подсхеме, что ив предыдущем определении): .subckt divider top out bottom Param: ratio=0.5 rtotal=10k tc=0 .param r2=ratio*rtotal * A previously defined parameter is used in the expression .param rl=rtotal-r2 rl top out {rl} rmod r2 out bottom {r2} rmod .model rmod r tcl={tc} . ends Избегайте рекурсии при использовании .PARAM: * This should be avoided .subckt 1 2 rhalved Param: a .param a=a/2 rl 1 2 {a} . ends * This is better .subckt 1 2 rhalved Param: a .param tmpa=a/2 rl 1 2 {tmpa} . ends .PARAM определяет глобальный параметр, если он используется вне определения подсхемы. Глобальный параметр доступен во всех параметризованных выражениях внутри или снаружи определения подсхемы. * Define some globals .param conl=2 .subckt 1 2 rhalved Param: a .param tmpa=a/conl rl 1 2 {tmpa} . ends * Global parameters can also be used in the top level circuit * 5k resistor rtop 1 0 {10k/coni} * This is also legal, 10k is passed as the value of a
xl 5 0 rhalved Param: a=20k/conl Если определен параметр подсхемы с тем же самым именем, что и глобальный параметр, используется локальное значение параметра. Глобальный параметр остается неизменным: * Define some globals .param conl=2 .subckt 1 2 rhalvedl Param: a .param conl=3 * 3 is used for coni inside rhalvedl, global coni value is left unchanged .param tmpa=a/conl rl 1 2 {tmpa} . ends * coni is global here (2 is used, resulting in 5k) rl 9 0 {10k/conl} * Another example .param conl=5 * coni inside rhalved2 is also local. * This time it is passed as a parameter to rhalved2 with 2 for default). .subckt 1 2 rhalved2 Param: a conl=2 .param tmpa=a/conl rl 1 2 {tmpa} . ends * coni is global here (5 is used, resulting in 4k) rl 9 0 {20k/conl} Да, значение по умолчанию может также быть специфицировано, как выражение. Помните только, не ставьте фигурные скобки вокруг выражения! Глобальный параметр может быть использован в выражении, в том случае, если глобальный параметр определен перед определением подсхемы: * Define some globals (coni = 6.28...) * pi is found in the const plot .param conl=2*pi * Default for a is 5k/pi * No curly braces are used for default expression! .subckt 1 2 rfac Param: a=10k/conl .param tmpa=a/conl rl 1 2 {tmpa} . ends Это также законно. He используйте фигурные скобки для определения значения выражения: * No curly braces are used for default expression! * a defaults to 5k .subckt 1 2 rfac Param: a=10k/2 Расширение параметра Параметризованные подсхемы работают по значению расширения параметра. Фокус в том, что для встроенных устройств SPICE и XSPICE СМ значение выражения в фигурных скобках берется конвертированным в формат, требуемый соответствующей строкой device/model. Все параметры - это векторы Nutmeg, что означает, что они могут быть действительными или комплексными с произвольным числом компонент. Не выполняется проверка типа. Вы должны быть уверены, что строки сделаны разумно (следовательно, результат выражения должен быть действительным скаляром для действительного скаляра device/model параметра). Давайте, посмотрим на пример, который поясняет это: * A real scalar .param rscal=9 * A complex scalar .param cscal=(l,9) * A real vector (1.0,-2.0) .param rvec=(l;2) * A complex vector ( (1, 0) ; (1,2)) * Note that (1,0) ==1 .param cvec=(1; (1,2) ) * Now let's see how this works in a SPICE device/model Vl 1 2 0 PULSE {rscal} 2 0.1m lu lu * лллл expands to: Vl 1 2 0 PULSE 9 2 0.1m lu lu * {rscal} expands to '9' V2 2 3 0 PULSE {cscal} 0.1m lu lu * лллл expands to: V2 2 3 0 PULSE 1 9 0.1m lu lu * {cscal} expands to '1 9'
V3 4 5 0 PULSE {rvec} 0.1m lu lu * лллл expands to: V3 4 5 0 PULSE 1 2 0.1m lu lu * {rvec} expands to '1 2' V4 5 6 0 PULSE {cvec} 10 10 * лллл expands to: V4 5 6 0 * {cvec} expands to '10 1 PULSE 10 1 2 10 10 2 ’ Для суммирования правил для выражений во встроенных SPICE моделях: {real scalar} {complex scalar} {real vector} {complex vector} -> value -> rvalue lvalue -> valuel value2 . -> rvaluel ivaluel rvalue2 ivalue2 Правила дляXSPICE code-моделей нечто отличное (другой синтаксис): {real scalar} {complex scalar} {real vector} {complex vector} -> value -> &ltrvalue,ivalue> -> [valuel value2 ... ] -> {< rvaluel ivaluel > < rvalue2 ivalue2 > ... ] Пример: .param rvec=(1;1;0) .model cml some code model real vector={rvec} * ЛЛЛЛ expands to: .model cml some code model real vector=[l 1 0] * {rvec} expands to ' [1 1 0] ' Помните, проверка типа не выполняется, так что в случае, если вы специфицировали выражение, результат которого вектор, там где следует использовать скаляр, анализатор (parser) сообщит об ошибке и откажется анализировать схему. Listing схемы, глобальных узлов, определений подсхем и образцов подсхем Схема состоит из модулей (образцов подсхем). Один модуль присутствует всегда. Это схема верхнего уровня (названная xtopinst_). Ее определение названо topdef_. Всегда есть только один xtopinst_ module. Схема верхнего уровня и другие модули могут заключать в себе множество подмодулей (образцы подсхем). Модули (образцы подсхем) могут быть вложенными. Определения не могут быть вложенными (то есть, нельзя определить подсхему внутри определения подсхемы). Посмотрим на следующий netlist: TESTNET .param testpl=100 .param testp2=testpl*9 * Complex vector (1, 0) ; (2, 0) ; (3, 1) .param vecl= (1;2; (3,1)) * Real vector 1; 2; 3 .param vec2=(1;2;3) .global vss vdd .subckt testl 123 rl 1 2 1 r2 2 3 1 . ends .subckt test 123 param: a=5*testp2 b c=vecl d=9 e f=vec2 g .param hello = 1 .param aw = 2 .param u=5 rl 1 2 1 r2 2 3 1 . ends xtestsub 50 60 0 test param: b=l e=vecl d=l g=l .subckt teres nl n2 param: r tcl=0 tc2=0 temp=27 tnom=27 rl nl n2 {r} rm temp={temp} .model rm r tcl={tcl} tc2={tc2} tnom={tnom} . ends .subckt vdiv up down out param: k=0.5 r=lk .param upr=r*(l-k)
.param dnr=r*k .param tclin=0.01 xl up out teres param: r=upr tcl=tclin x2 out down teres param: r=dnr tcl=tclin*2 . ends xdiv 1 0 out vdiv param: rtop 10 0 1 .control echo hello . endc k=0.25 r={10k*testpl} . end Схема верхнего уровня (xtopinst_) состоит из образцов резистора rtop И Модулей xdiv И xtestsub. Определение xtopinst_ - это topdef_. Определение xdiv - это vdiv, а определение xtestsub - это test, xdiv заключает В себе модули xl :xdiv И х2 : xdiv. Определение xl :xdiv И х2 : xdiv - ЭТО teres, xl :xdiv И х2 : xdiv оба СОСТОЯТ ИЗ образца резистора (rl:xl:xdiv, rl :х2 :xdiv), а МОДвЛЬ резистора (rmod:xl :xdiv, rmod: х2 : xdiv). Следующие команды допустимы для получения информации об netlist активных схем: listing ИЛИ listing logical Последние две команды отображают netlist вместе с номерами строк. Блок . cont roi опущен. listing physical Отображает физический список (все строки из файла(ов) input, включая блок .control и пустые строки) с номерами строк. listing deck Похоже на предыдущие, исключая, что номера строк опущены. listing global Отображает все глобальные узлы. Для TESTNET netlist результат будет: Spice Opus 19 -> listing global Global nodes: vss vdd listing subdef Отображает список всех определений подсхем. Для TESTNET listing отображается: Spice Opus 21 -> listing subdef Active subcircuit definitions: vdiv teres test testl topdef topdef_ - это определение схемы верхнего уровня. listing subdef namel name2 ... Отображается информация об определениях подсхем. Пример: Spice Opus 24 -> listing subdef topdef teres vdiv Instances of topdef : xtopinst Definition of topdef : Те rminals: — none — Parameters: — none — Parametric expressions: testpl = 100
testp2 = testpl*9 vecl = (1;2;(3,1)) vec2 = (1;2;3) Elements: xtestsub 50 60 0 test param: b=l e=vecl d=l g=l xdiv 1 0 out vdiv param: k=0.25 r={10k*testpl} rtop 10 0 1 Instances of teres : x2:xdiv xl:xdiv Definition of teres : Те rminals: nl n2 Parameters: r tel = 0 tc2 = 0 temp =27 tnom =27 Parametric expressions: — none — Elements: rl nl n2 {r} rm temp={temp} .model rm r tcl={tcl} tc2={tc2} tnom={tnom} Instances of vdiv : xdiv Definition of vdiv : Те rminals: up down out Parameters: к = 0.5 r = 1000 Parametric expressions: up r = r* (1-k) dnr = r*k tclin = 0.01 Elements: xl up out teres param: r=upr tcl=tclin x2 out down teres param: r=dnr tcl=tclin*2 Для каждого определения подсхемы список образцов выводится вместе с границами, параметрами, значениями по умолчанию, параметрическими выражениями (.PARAM клаузула) и списком элементов. listing sub Отображает список всех образцов, упорядоченных по их соответствующим определениям подсхем. Пример: Spice Opus 25 -> listing sub Subcircuit instances of vdiv: xdiv Subcircuit instances of teres: x2:xdiv xl:xdiv Subcircuit instances of test: xtestsub Subcircuit instances of testl: — none — Subcircuit instances of topdef_: xtopinst_ Команда: listing sub namel name2 ... Отображает информацию об образцах подсхемы. Пример: Spice Opus 31 -> listing sub xtopinst_ xtestsub xdiv x2:xdiv Subcircuit instance xtopinst :
Definition : topdef_ Instantiated in top level circuit Connections (model -> instance) : — none — Parameters : — none — Subcircuit instance xtestsub : Definition : test Instantiated in top level circuit Connections (model -> instance) : 1 -> 50 2 -> 60 3 -> 0 Parameters : a = (dfl) 4500 b = 1 c = (dfl) ( (1,0) ; (2,0) ; (3,1) ) d = 1 e = ( (1,0); (2,0) ; (3,1) ) f = (dfl) (1;2;3) g = 1 Subcircuit instance xdiv : Definition : vdiv Instantiated in top level circuit Connections (model -> instance) : up -> 1 down -> 0 out -> out Parameters : к = 0.25 r = le+006 Subcircuit instance x2:xdiv : Definition : teres Instantiated in xdiv Connections (model -> instance) nl -> out n2 -> 0 Parameters : r = 250000 tel = 0.02 tc2 = (dfl) 0 temp = (dfl) 27 tnom = (dfl) 27 Для каждого образца имя определения выводится вместе с местом, где реализовано, соединениями и параметрами. Если параметр установлен по умолчанию (пропущен при вызове подсхемы) dfl выводится перед значением. Есть всегда один образец подсхемы верхнего уровня (topdef_), названный xtopinst_. Измененне/чтенне параметров подсхемы нз Nutmeg Для доступа к параметрам подсхемы из Nutmeg используйте следующий синтаксис: @xname [parameter] Примеры: * Prints the a parameter for subcircuit instance xl:xampl print @xl:xampl[a] * Sets the a parameter for subcircuit instance xl:xampl to 10 let @ x1:x amp 1[a]=10 Все образцы/модели/подсхемы в образце подсхемы, для которой параметр изменен, анализируются вновь и сомнительные параметры вычисляются заново. Для изменения частного параметра для всех образцов некоторой подсхемы используйте: @@submod[а] Этим способом вы можете изменить параметр «а» для всех образцов подсхемы tsubmod. Параметр «а»
должен быть задан предопределенным значением в определении подсхемы. Примеры: * Prints the default value of the a parameter for subcircuit definition ampmod print @@ampmod[a] * Sets the a parameter to 10 for all subcircuit instances of ampmod let @@ampmod[a]=10 Все образцы/модели/подсхемы в образце подсхемы, для которой параметр меняется, анализируются заново и сомнительные параметры пересчитываются. Автоматический выбор модели (binning) для BSIM3v3 MOSFET модели устройства BSIM3v3 MOSFET (level =53) модели устройств обычно подходят только для транзисторов из диапазона определенной ширины и длины канала. Подходящий диапазон задается с помощью параметров модели Imin, Imax, wmin и wmax и шириной и длиной образцов, заданных их w и 1 параметрами: parameters. Следовательно, поддерживаются отношения Imin < 1 < Imax и wmin < w < wmax. В основном, если канал меняется вне обозначенного w, 1 диапазона, должна быть выбрана другая модель, покрывающая новые размеры. Чтобы получить возможность непрерывных проходов по границам между разными диапазонами ширины и длины используется binning (бункерная) техника (определенная параметрами binning модели). Имена моделей имеют следующий синтаксис: Sltmodel name> Sltbin name> bin_name может быть опущено в строке образца транзистора. SpiceOpus ищет между моделями с тем же самым именем и различными bin именами. Правильная модель будет выбрана автоматически. Пример: ml drain gate source bulk nmod l=4um w=120um ... .model nmod 1 nmos level=53 lmin=lu lmax=5u wmin=lu wmax=100u ... .model nmod 2 nmos level=53 lmin=5u lmax=10u wmin=lu wmax=100u ... .model nmod 3 nmos level=53 lmin=lu lmax=5u wmin=100u wmax=250u ... .model nmod 4 nmos level=53 lmin=5u lmax=10u wmin=100u wmax=250u ... В примере выше модель mod_3 будет выбрана для образца ml. Если задано неверное bin_name в строке образца транзистора, тогда правильный bin будет выбран автоматически. Пример: ml drain gate source bulk nmod 1 l=4um w=120um ... model nmod 1 nmos level=53 lmin: model nmod 2 nmos level=53 lmin: model nmod 3 nmos level=53 lmin: model nmod 4 nmos level=53 lmin: du lmax=5u wmin=lu wmax=100u :5u lmax=10u wmin=lu wmax=100u du lmax=5u wmin=100u wmax=250u :5u lmax=10u wmin=100u wmax=250u В примере выше модель mod_3 будет выбрана для образца ml, не обращая внимания на то, что была указана modi. Команда optimize Была добавлена новая команда, названная optimize. Она реализует цикл оптимизации в Spice Opus. Когда мы запускаем отдельный метод оптимизации на конкретной схеме командой optimize, выполняется основной цикл оптимизации, и он всегда один и тот же. Его алгоритм следующий: do if number of iterations > max break change parameter values verify explicit constraints and correct parameter values if necessary execute all analysis commands (analysis 0, analysis 1, ..., analysis N) number of iterations = number of iterations + 1 if not implicit constraint 0 or not implicit constraint 1 or ... or not implicit constraint M continue calculate the cost function while termination criteria not satisfied Количество итераций проверяется при каждой итерации. Таким образом, пользователь имеет некоторого
рода контроль над алгоритмом оптимизации, и предотвращается бесконечный цикл оптимизации (в случае отсутствия сходимости). Метод оптимизации, который был выбран, скрыт от путей изменения значений параметров. Если один из параметров нарушает его явные границы, его значение корректируется для выяснения границ. Многие строки анализа могут быть определены командами optimize analysis. Они выполняются по порядку и производят результаты для проверки потенциальных ограничений целостности и оценки функции стоимости. Если хотя бы одно потенциальное ограничение нарушено, тогда алгоритм продолжается со следующей итерации. Иначе функция стоимости рассчитывается, и критерий прекращения определяет, будет ли цикл продолжен или остановлен. Команда optimize помещается в верхней части Nutmeg около его функций. Фактически, она только подготавливает команды языка Nutmeg и выполняет их в подходящей последовательности, что направляет процесс оптимизации. Но, с другой стороны, команда optimize написана, как дополнительная команда Nutmeg и может использоваться как таковая. Команда optimize также генерирует специальную группу данных (plot). Она называется optimizex, где х представляет номер графика (plot number). Она содержит вектор, названный parameter, с окончательными значениями параметра, вектор, названный cost, со значениями функции стоимости в каждой итерации, и векторы со значениями параметра в каждой итерации. Когда команда optimize завершается и находит некоторые оптимальные значения параметра, которые лучше, чем начальные значения, начальные значения заменяются оптимальными. Таким образом, мы можем возобновить следующую команду optimize (возможно, с каким-то другим методом) на той же схеме из лучше известной точки, чем при начальном предположении. Если опция initial_guess установлена (эквивалентна или больше, чем 1), вышесказанное не справедливо. В этом случае значения начального параметра устанавливаются для значений, где пространство параметра еще не исследовалось. Таким путем, множество размерных областей параметра может быть исследовано последующими процессами оптимизации. Значение опции initial_guess задает весовой фактор точки с наибольшим значением функции стоимости. Весовой фактор точки с наименьшим значением всегда равен 1.
F. Gpsim, Gputils Gpsim Автор T. Scott Dattalo gpsim - это программный симулятор, с полной поддержкой всех свойств PIC микроконтроллеров Microchip, распространяемый под GNU General Pablic License. gpsim был разработан co всей возможной точностью. Точностью, включающей весь PIC - от ядра до выводов ввода-вывода, включая ВСЮ внутреннюю периферию. Таким образом, можно открыть стимулы и связать их с выводами ввода-вывода, и проверить PIC, тот самый PIC, и тем же манером, как вы сделали бы в реальном мире. gpsim был разработан, чтобы быть столь быстрым, сколь возможно. Работает симуляция реального времени со скоростью в 20 МГц. gpsim может управляться либо через графический пользовательский интерфейс (GUI), через интерфейс командной строки (CLI), либо с помощью процесса управления. Типичные средства отладки, подобно точкам останова, пошаговому режиму, дизассемблированию, проверке памяти и модификации, и т.д., поддерживаются все. Вдобавок поддерживаются такие комплексные отладочные средства, как трассировка реального времени, заявки, условные остановки и подключаемые модули для нескольких наименований. Обзор Если вы не намерены брести через все детали, то этот раздел поможет вам получить необходимые знания для начала работы. Файлы INSTALL и README предоставят больше последней информации, чем этот документ, поэтому, пожалуйста, обратитесь сначала к ним. Создание исполняемого файла Исполняемый файл gpsim создается на манер других программ, представленных исходными текстами: tar -xvzf gpsim-x.у.z.tar.gz - разархивирует сжатый tar файл, ./configure - создает makefile, уникальный для вашей системы, make - компилирует gpsim. make install - устанавливает gpsim. Последний шаг требует привилегий root. Задание деталей - ./configure опции gui-less Конфигурация по умолчанию будет поддерживать gui (графический пользовательский интерфейс). Но также доступен cli (интерфейс командной строки), поскольку есть много людей, предпочитающих пользоваться им. Эти стойкие души могут построить интерфейс только командной строки, конфигурируя gpsim: ./configure -disable-gui debugging Если вам угодно отладить gpsim, тогда вы, возможно, воспользуетесь gdb. Следовательно, вы захотите отвергнуть общие библиотеки: ./configure -disable-shared Этим создается единственный, но большой исполняемый файл с символьной информацией. RPM gpsim также распространяется в форме RPM. В текущих версиях два RPM - gpsim-devel и gpsim. Оба пакета должны быть установлены. Есть так же RPM для исходных кодов. Он может использоваться для построения двоичного RPM уникального для вашей системы. Обратите, пожалуйста, внимание на последние INSTALL и README файлы для получения новейшей информации. Windows gpsim работает и на Windows. Борут Разем создал gpsim Windows web-сайт: http://gpsim.sourveforge.net/gpsimWin32/ gpsimWin32.html Вы можете найти детальные инструкции по установке gpsim и ее зависимостям. Внешний вид можно найти на сайте: http://gpsim. sourv е forge. net/snap. php Запуск Исполняемый файл, открытый как описано выше, называется: gpsim. Следующие опции командной строки
могут быть установлены, когда gpsim запускается: gpsim [-?] [-р <device> [<hex_file>]] [-с <stc_file>] • -р, — processor=<processor name> - processor (иначе -рр16с84 для c84). • -c, —command=STRING - startup командный файл. • -s, —symbol=STRING - .cod символьный файл. • -L, —sourcepath=STRING - Через двоеточие список директорий поиска. • -v, —version - gpsim версия. • -Е, —echo - Строка эхо командной линии в консоль. • -i, —cli - Режим только командной линии. • -S, —source =STRING -enable или disable для загрузки исходного кода. По умолчанию enable. Полезно для запуска быстрых регрессионных тестов. • -d, —icd=STRING - Использовать ICD (иначе, -d /dev/ttySO). • -D, —define =STRING - Определить символ co значением, добавленным в gpsim таблицу символов. Определяется любое количество символов. • -е, —exit=STRING - Приводит к авто выходу gpsim по условию. Задание onbreak приведет к выходу gpsim, когда симуляция останавливается, но не раньше, чем текущий командный скрипт завершится. Примеры: gpsim —s тур год.cod <-- loads a symbol file gpsim -p pl6f877 myprog.hex <-- select processor and load hex gpsim —c myscript.stc <-- loads a script Опции подсказки: -?, --help Показывает это сообщение help --usage Отображает краткую подсказку Обычно gpsim запускается следующим образом: [My-Computer]$ gpsim -s mypic-program.cod [My-Computer]$ текст - пример типичной командной строки bash. Вы только вводите текст после этого приглашения. Команда загружает .cod файл (mypic-program.cod), созданный с помощью gputils. Под Windows gpsim также может открыть окно DOS или CygWin для сессии bash (терминальный интерпретатор командной строки), и запустить gpsim из него. Требования Программа gpsim была разработана под Linux. Она должна встраиваться и запускаться прекрасным образом под всеми популярными дистрибутивами Linux, подобными Redhat. gpsim также был портирован в MAC, Microsoft Windows, Solaris и BSD. Два пакета gpsim требуются постольку, поскольку не все дистрибутивы Linux имеют readline и qtk (инструментальные средства gimp). Скрипт ./configure подскажет, если эти пакеты не установлены на вашей системе, или устарели. Необходимо удовлетворить минимальные требования по оборудованию для запуска gpsim. Но чем оно быстрее, тем лучше! Утилиты gputils и gnupic также очень полезны, gpsim может использовать сразу hex-файлы, но, если вы хотите использовать символьную отладку, тогда вам потребуется .cod-файл, который производит пакет gputils. cod-файл имеет тот же формат, что производится MPASM. (.cod-файл - это символьный файл, созданный ByteCraft, и используемый Microchip, a MPASM - ассемблер Microchip). Графический пользовательский интерфейс gpsim предоставляет графический пользовательский интерфейс, который несколько облегчает жизнь по сравнению с cli. Можно открыть окно для обзора всех деталей вашего окружения отладки. Чтобы получить максимум от вашей сессии отладки вам следует откомпилировать ваш код с помощью gpasm (gnupic ассемблер) и использовать символьные .cod файлы, им производимые. Главное окно Меню: File-Open, .stc или .cod файлы. File-Quit, покидаем gpsim.
Windows-*, открываем/закрываем окна. Клавиши (так же есть привязка к клавиатуре в исходном окне): • Step - Шаг на одну инструкцию. • Over - Шаг до перехода рс к следующей инструкции. • Finish - Выполнение до возврата к адресу. • Run - Постоянное выполнение. • Stop - Остановка выполнения. • Reset - Сброс CPU. Режим симуляции Здесь происходит управление тем, как работает gpsim, и как обновляется GUI: • Never - Не обновлять GUI при симуляции. Это самый быстрый режим. Вы должны остановить симуляцию нажатием Ctrl-C в интерфейсе командной строки. • х cycles - Обновляет GUI каждые х циклов симуляции. • every cycle - Обновляет GUI в каждом цикле, (вы увидите все, если пополните запасы кофе :-) • х ms animate - Здесь вы можете замедлить симуляцию введением задержек между каждым циклом. • Realtime - Это даст возможность gpsim попытаться синхронизировать скорость симуляции с настенными часами. Проводники исходного кода .asm Проводник Когда загружен .cod файл с исходным кодом, что-нибудь появится в этом окне. Есть пространство слева от текста, где символы представляют программный счетчик (рс), точки останова, и т.д. Двойной щелчок в этом пространстве переключает точки останова. Вы можете перетаскивать эти символы выше или ниже, чтобы переместить их и изменить РС и переместить точку останова. Щелчок правой клавишей на тексте вызывает выпадающее меню с шестью пунктами (слово «здесь» в некоторых пунктах меню означает линию в тексте, на которую был установлен маркер мышки, когда правая клавиша была нажата): Пункты меню: • Find PC - Этот пункт будет искать РС и менять таблицу страниц и прокручивать обзор текста до текущего (значения) РС. • Run here - Этим установится точка останова “здесь”, и стартует симуляция, пока не попадет на точку останова. • Move PC here - Этим просто изменяется РС на адрес, который имеет «эта» линия текста. • Breajpoint here - Устанавливает точку останова «здесь». • Profile start here - Устанавливает старт маркера для профилирования правила здесь. • Profile stop here - Устанавливает стоп маркера. (Посмотрите раздел по окну профилирования). • Select symbol - Этот пункт меню доступен только, когда некоторый текст выбран в текстовом поле. Что он делает, так это ищет в списке символов выбранное слово, и если находит, выбирает его в символьном окне. В зависимости от типа символа еще кое-что делается, то же самое, что при выборе символа в символьном окне: 1. Если это адрес, тогда opcode и проводник отображают этот адрес. 2. Если это регистр, проводник регистров отмечает ячейку. 3. Если это константа, адрес, регистр или порт, он отмечается в символьном окне. Find text - Этим открывается диалог поиска. С каждым нажатием клавиши Find находится текущая страница блокнота, и текст на этой странице используется. Settings - Диалог, в котором вы можете изменить шрифт. Controls - Подменю, содержащее команды симуляции (также привязка клавиатуры (рекомендуется), или в основном окне). Вот привязка к клавиатуре: s, S, F7 - Пошаговое выполнение. о, О, F8 - Перешагнуть инструкцию. г, R, F9 - Постоянное выполнение.
Escape - Остановить симуляцию. f, F - Выполнять до возвращения адреса. Проводник Opcode - .obj проводник Это окно имеет две таблицы. Одна с ячейкой памяти, адресом, шестнадцатеричным значением и декодированной инструкцией на линии, другая с программной памятью, отображенной по шестнадцать ячеек в строке и конфигурируемым ASCII столбцом. С таблицей ассемблера вы можете: Переключать точки останова двойным щелчком по строке. Использовать те же клавишные команды, что и в проводнике исходного кода. Правым щелчком мышки получить меню, где можно изменить шрифт. Таблица Opcode. Здесь программная память организована в колонки по шестнадцать ячеек в колонке, а строк столько, чтобы поместить всю память. Семнадцатая колонка отведена под ASCII представление памяти. Вы можете конфигурировать эту колонку для использования в трех разных режимах: Один байт на ячейку. Два байта на ячейку, старшие биты впереди. Два байта на ячейку, младшие биты впереди. Вы можете изменить шрифт, используя меню Settings (Установки). Вы можете задать точки останова на одном или больше (помечая мышкой выбранные ячейки) адресах меню, вызывается кликом правой клавиши мышки. Обозреватель регистров В вашем распоряжении два похожих окна регистров. Один для RAM, другой для EEPROM данных, когда они доступны. Здесь вы увидите все регистры текущего процессора. Щелчок на ячейке отображает его имя и значение над всей таблицей. Вы можете изменить значение здесь, или ввести его в ячейку таблицы. Следующие процедуры могут выполняться с одним регистром или с несколькими. (Выбор нескольких регистров выполняется с удержанием левой клавиши мышки и перемещением маркера до нужного места, где клавиша отпускается): Установить и сбросить точки останова. Используйте выпадающее меню, вызываемое правой клавишей мышки, где вы можете прочитать, записать, прочитать значение и записать значение точек останова. Вы можете также «сбросить точки останова», но, заметьте, что при «сбросе точек останова» каждая точка останова на регистрах будет удалена. Установить и сбросить логи регистров. Вы можете прочитать лог, записать, прочитать/записать специфические значения и для выбранных бит с помощью специальной маски. Вы можете выбрать разные имена файлов через set log filename... (установить имя лог-файла). По умолчанию это gpsim.log. Вы можете выбрать LXT или ASCII формат. LXT может быть прочитан программой gtkwave. По умолчанию установлен ASCII формат. Можно копировать ячейки. Копирование доступно перетаскиванием за рамку выбранной ячейки (ячеек). Можно заполнить ячейки. Переместите мышь к нижнему правому углу окна выбранной ячейки, и перетащите ее. Содержимое ячейки будет скопировано в другие ячейки. Можно наблюдать за ними. Выберите пункт меню Add Watch (Добавить наблюдение). Ячейки имеют разный фон, в зависимости от того, что в них представлено: Файл регистр (то есть, RAM): светло голубой Регистры специальных функций (то есть, STATUS, TMR0): темно голубой Переобозначенный регистр (то есть, INDF, расположенный по адресу 0x80, тот же, что 0x00): серый Неправильный регистр: черный. Если все шестнадцать регистров в строке неисправны, тогда строка не показывается. Регистр с одной или больше точкой останова: красный. Регистры с лог-файлами тоже красные. gpsim динамически обновляет регистры в процессе симуляции. Регистры, которые меняют значение между обновлениями окна в процессе симуляции, подсвечиваются синим цветом фона. В меню есть пункт settings, с помощью которого вы можете изменить шрифт. Символьный обозреватель В этом окне, как это следует из названия, отображаются символы. Все регистры специальных функций допускают ввод в символьном проводнике. Если вы используете .cod файлы, тогда вы дополнительно имеете
файловые регистры (определенные в cblocks), эквиваленты и метки адресов. Вы можете фильтровать некоторые типы символов, используя клавиши в верхней части окна. И вы можете сортировать строки кликом на клавишах колонок (читающие символы (symbol), тип (type), адрес (address). Вы можете добавить символ в окно наблюдения щелчком правой клавиши мышки и выбором пункта Add to watch window (Добавить в окно наблюдения). Этим добавится RAM регистр с адресом, эквивалентным значению символа. Символьный проводник связан с другими окнами. Например, если вы щелкните по символу, и: Если это адрес, тогда проводники opcode и исходного текста отобразят адрес. Если это регистр, проводник регистров выберет ячейку. Обозреватель наблюдения Это не только окно вывода, что предполагает название. Вы можете и видеть, и менять данные. Двойной щелчок по биту меняет его значение. Вы добавляете переменные сюда, отмечая в проводнике регистров и выбирая Add watch (Добавить в наблюдение) из меню. Выпадающее меню по щелчку правой клавиши мышки имеет следующие пункты: Удалить из наблюдения. Установить значение регистра. Сбросить точки останова. Установить остановку по чтению. Установить остановку по записи. Установить остановку по чтению значения. Установить остановку по записи значения. Колонки. Последнее открывает окно, где вы можете выбрать, какие из следующих данных отображать: Точка останова. Тип. Имя. Адрес. Десятичное. Шестнадцатеричное. Вх (биты слова). Вы можете сортировать список наблюдаемых щелчком по клавише колонки. Двойной щелчок сортирует список в обратном порядке. Обозреватель стека Это окно отображает текущий стек. Выбор ввода создает окно кода, отображающее адрес возврата. Двойной щелчок устанавливает точку останова на адрес возврата. Макет (breadboard) Здесь вы можете создавать/модифицировать и проверять окружение PIC. Выводы отображены, как стрелки. Направление стрелки показывает, это вывод ввода или вывода. Цвет стрелки отображает состояние (зеленый - низкое, красный - высокое). Вы не можете иллюстрировать поведение процессора отсюда, вы должны сделать это из командной строки, или с помощью .stc файла. Вы может создать узел щелчком по клавише new node (новый узел). Узел - часть схемы, к которой вы можете присоединить стимулы. Вы можете видеть список созданных узлов в пункте узлы в верхнем левом окне дерева макета. Вы можете создать соединение с узлом, щелкнув по выводу, а, затем, щелкнув по клавише Прнсоеднннть стимул к узлу. Это выведет список узлов. Выберите один двойным щелчком по нему. Если вы щелкните по выводу, уже присоединенному к узлу, вы увидите узел и его соединение в нижней левой части окна. Вы можете отключить стимул, щелкнув по нему, и нажав клавишу remove stimulus (удалить стимул). Когда вам захочется добавить модуль к симуляции, вы вначале должны определить библиотеку, которая содержит требуемый модуль. Щелкните по add module (Добавить модуль) и введите имя библиотеки (то есть, libgpsim_mofules.so). Теперь вы можете щелкнуть по клавише Добавить модуль. Выберите нужный модуль из списка двойным щелчком по нему. Введите имя для модуля (оно должно быть уникально и не использоваться ранее). Теперь вы можете позиционировать модуль. Перемещайте указатель мышки туда, куда хотите добавить модуль и щелкните левой клавишей мышки. Если щелкнуть средней клавишей по выводу, вы увидите, как вывод присоединен. Нажмите trace all (трассировать все) для того, чтобы увидеть все сразу, и Очистить трассировку для удаления всего (вы удалите только графическое представление, а не соединения!). Если трассировка не работает, постарайтесь разместить элементы так, чтобы оставалось больше места вокруг выводов. Когда вы все сделаете, вы можете сохранить все щелчком по клавише save configuration (сохранить
конфигурацию). Позже вы можете загрузить этот файл из командной строки подобно тому, как загружали .cod файл, и файл mynet.stc: gpsim —s mycode.cod -c mynet.stc Вы можете загрузить только .stc файл, поскольку он не содержит тип процессора и код. Вы можете создать (в редакторе) ваш собственный .stc файл и в этом файле дать команду load с mynetstc после загрузки .cod файла. Позже вам понадобится ТОЛЬКО загрузить ЭТОТ файл (gpsim -с my_proj ect. stc). Обозреватель трассировки Это окно показывает трассировку выполнения инструкций. Обозреватель профиля В этом окне показывается счетчик для адресов программной памяти. Окно профиля должно быть открыто перед стартом симуляции, поскольку трассировка не установлена по умолчанию. Профиль инструкций Здесь показано значение времени выполнения каждой инструкции. Профиль ряда инструкций Здесь вы можете группировать ряд инструкций в один ввод. Выпадающее меню (правый щелчок мышки) содержит: Remove range - Удалить ряд. Add Range ... - Открывает диалог, в котором вы можете добавить ряд. Add all lables - Добавляет все метки кода, как ряд. Snaphot to plot - Открывает окно, содержащее граф данных. Из этого нового окна вы можете также сохранить (postscript) или распечатать. Профиль регистра Здесь показано число чтений или записи сделанных симулятором в регистр. Профиль программного блока Здесь вы можете увидеть статистику времени выполнения для выбранного программного блока. Вы отмечаете точки входа и выхода в проводнике исходного текста (profile start/stop). Если блок, который вы хотите измерить, имеет несколько точек входа и/или точек выхода, тогда вы должны отмаркировать каждую точку входа, так же, как (и обязательно) каждую точку выхода. Иначе вы получите неверные данные. Когда вы сделаете это, gpsim будет (с началом симуляции) сохранять времена выполнения этих блоков и вычислять мин/макс/среднее/и т.д. Вы можете также использовать пункт меню plot distribution (печатать распределение) для открытия окна, показывающего гистограмму данных. Из этого нового окна вы можете также сохранить (в postscript) или распечатать это. Вы можете измерить период вызова переключением между точкой входа и выхода. Если также захотите измерить время от сброса (или эквивалентной точки) до первого входа, тогда вы должны здесь отметить точку входа. Остановка наблюдения (stopwatch) Это окно показывает счетчик циклов и переустанавливаемый счетчик. Счетчик циклов тот же, что и в окне регистров. Он, в основном, считает инструкции. Другой счетчик считает так же, как счетчик циклов, но может быть очищен щелчком по клавише clear (или преустановлен вводом числа в окне ввода). Индикатор вверх/вниз отмечает направление счета. Прокручиваемое значение определяет пределы счетчика циклов (модульный счетчик). Например, если прокручиваемое значение должно быть 0x42, тогда в какой бы момент переустанавливаемый счетчик не достиг величины 0x42, он провернется к нулю. Если счетчик считает вниз, тогда после установки нуля следующее значение будет 0x41. Если вы не хотите, чтобы так было, установите значение прокрутки несколько больше. Контроль за выполнением. Точки останова Одним из сильных свойств gpsim является гибкость, предоставляемая точками останова. Большинство симуляторов ограничены в выполнении типов точек останова. Если вы хотите установить точки останова на регистры, на выполняемые циклы, неправильное размещение программы, переполнение стека, и т.д., тогда вы, обычно, усиливаете отладчик для вашего кода применением ICE. Точки останова выполнения Точки останова выполнения - это то, что остановит выполнение программы, когда адрес программной памяти, на котором она установлена, будет достигнут. Например, если вы отлаживаете PIC среднего класса, и хотите
остановить выполнение при прерывании, вы должны задать точку останова в программной памяти по адресу 0x04: gpsim> break е 4 (Более точно, прерывание не должно обнаружиться, поскольку эта точка останова будет вычислена - код обработки должен тоже перейти сюда). Точка останова обнаруживается до выполнения инструкции. Другие симуляторы, как MPLAB, останавливаются после того, как инструкция выполнена. Во многих случаях эта разница не существенна. Однако если остановка задана на инструкциях goto или call, тогда предпочтительнее сделать остановку до того, как обнаружится ветвление программы. Этим путем легче определить место ветвления. Точки останова неправильных инструкций gpsim автоматически будет останавливать выполнение программы при попытке выйти за ее пределы. Расположение памяти программы, которое не определено вашим исходным кодом, будет инициализировано, как неправильная инструкция (Invalid instruction). Это хорошо видно, когда вы дизассемблируете программу. Регистровые точки останова gpsim предоставляет возможность останавливаться при обращении к регистру, как для чтения, так и для записи, или в обоих случаях. Более того, возможно останавливаться при специфическом значении, читаемом или записываемом в регистр. Цикловые точки останова Цикловые точки останова позволяют остановить программу определенной цикловой инструкцией. Представьте, что вы имеете 20 МГц PIC и хотите остановить программу через одну секунду симуляции. Вы должны задать точку останова инструкцией в 5 миллионов циклов. (При 4 циклах на выполнение одной инструкции. В дальнейшем предполагается ввести в gpsim возможность задавать инструкцию точки останова в терминах секунд). Симуляция реального мира. Стимулы (воздействия) Стимулы крайне полезны, если не необходимы, для симуляции. Они предоставляют значения для симуляционного взаимодействия с реальным миром. Возможности стимулов gpsim разработаны точными, эффективными и гибкими. Модели для выводов ввода- вывода PIC имитируют реальные устройства. Например, открытый коллектор вывода порта A PIC16C84 может быть только в низком состоянии. Множество выводов ввода-вывода могут соединяться между собой так, что открытый коллектор порта А может получить «подтягивающий» резистор порта В. В первую очередь стимулы только обнаруживают, когда стимул меняет состояние. Другими словами, стимулы не выбирают определения их статуса. Аналоговые стимулы тоже допустимы. Можно создать ссылки на напряжение и уровни напряжения для симуляции, практически, любого рода вещей реального мира. Например, возможно комбинировать два аналоговых стимула вместе, чтобы создать сигналы подобные DTMF тонам. Как они работают В простейшем случае стимул действует, как источник для вывода ввода-вывода PIC. Например, вы можете захотеть симулировать часы и измерять их период, используя TMR0 (таймер 0). В этом случае стимулом будет источник и TMR0 входной вывод PIC, как цепь. В gpsim вы создадите стимул для часов, используя команды стимула и соединив их с выводом ввода-вывода, используя команду узла. В общем, вы можете иметь несколько «источников» и несколько «цепей», которые соединены с узлами. (Хотя gpsim в данный момент ограничена однопортовыми устройствами. Другими словами, принимается, что земля обслуживается, как общая ссылка для источников и цепей). Хорошим аналогом будет цепь spice, spice список цепей (netlist) обращается к списку узлов в gpsim и элементы spice обращаются к источникам и цепям стимулов. Этот главный подход делает возможным создавать разнообразнейшее окружение симуляции. Вот список разных путей, которыми стимулы могут быть соединены: Стимул соединен с одним I/O выводом. Стимул соединен с несколькими I/O выводами. Несколько стимулов присоединены к одному I/O выводу. Несколько стимулов соединены с несколькими I/O выводами. I/O вывод соединен с I/O выводом. Основная техника для реализации стимулов следующая: Определить стимулы или стимул. Определить узел. Присоединить стимулы к узлам. Чаще бывает, чем нет, определение стимула в файле.
Соединения меяеду стимулами Одной из проблем с этим узловым подходом к моделированию стимулов является возможность для соединения существующих. Например, если два I/O вывода соединены один с другим и работают в противоположных направлениях, соединение получится, gpsim принимает соединение с суммой атрибутов. Каждый стимул, даже если это ввод, оказывает влияние на узел. Это влияние заданной силы. Когда узел обновляется, gpsim будет просто объединять силу всех стимулов вместе и применять это числовое значение к узлу. Сила со значением нуль относится к отсутствию цепи. Большая положительная сила используется стимулом для положительного движения узла, большая отрицательная сила используется для отрицательного движения. Суммирование атрибутов полезно для «подтягивающих» резисторов. В примере с открытым коллектором порта А/ порт В слабое «подтягивание», gpsim задает относительно слабую силу «подтягивания» для резисторов и большую отрицательную силу для открытого коллектора, если он активен, или не задает силу, если нет движения (изменения). Эффект конденсатора (пока не поддерживается) может быть симулирован с динамически меняющимся значением силы. Выводы I/O gpsim моделирует выводы I/O, как стимулы. Таким образом, где бы стимулы не использовались, I/O выводы могут быть заменены. Например, вы можете захотеть присоединить два I/O вывода один к другому, как присоединялся подтягивающий резистор порта В к порту А с открытым коллектором, gpsim автоматически создает стимул I/O вывода при создании процессора. Все, что вам нужно, так это обозначить узел и затем назначить стимул для него. Имена для этих стимулов формируются связыванием имени порта с позицией бита I/O вывода. Например, бит 3 порта В называется portb3. Вот список поддерживаемых типов стимулов выводов I/O: INPUT_ONLY (только ввод) - Принимает только ввод (подобно MCLR). ВI _D I RE СТ IONAL (двунаправленные) - Может быть источником или цепью (большинство выводов I/O). ВI _D I RE СТ I ONAL_PU (двунаправленные PU) - PU - подтягивающие резисторы (Порт В). OPEN_COLLECTOR (открытый коллектор) - Могут двигаться только вниз (RA4 у с84). Нет специального типа выводов для аналоговых выводов I/O. Все аналоговые вводы РЮ мультиплексируются с цифровыми вводами. Определение I/O выводов будет всегда для цифровых вводов, gpsim автоматически определяет, если I/O вывод - аналоговый ввод. Асинхронные стимулы Асинхронные стимулы - аналоговые или цифровые стимулы, которые могут изменять состояние в любой заданный момент (ограниченный разрешением счетчика циклов). Они могут также определяться как повторяющиеся. Ниже приведены параметры и их функциональное назначение: start_cicie - Количество циклов перед началом стимула. cycles [] - Массив номеров циклов. dat а [ ] — Состояние стимула для цикла. period - Количество циклов в одном периоде. initiai_state - Начальное состояние перед data[O], Когда стимул впервые инициализируется, он будет приведен в движение в initial state (начальном состоянии) и будет оставаться в нем, пока CPU счетчик команд не станет равен циклу start (начать). После этого два массива cycles[] и data[] определяют выход стимула. Размер массивов тот же, что относится к количеству событий, которые создавались. Таким образом, количество событий, если было, обслуживает индекс этих двух массивов. Массив cycles[] определяет, когда событие обнаруживается, тогда как массив data[] определяет, какое состояние стимула будет введено. cycles[] измеряется в согласии с циклом start. Асинхронные стимулы могут быть сделаны периодическими через задание числа циклов в параметре period. Аналоговый асинхронный стимул Аналоговый асинхронный стимул идентичен синхронным стимулам, исключая тот момент, что данные точки - это числа с плавающей точкой. Gputils Авторы: James Bowman, Craig Franklin Введение gputils - это набор инструментов для работы с Microchip (TM) PIC микроконтроллерами. Он включает gpasm, gplink и gplib. Каждое из этих средств предназначено для замены в рамках open source соответствующего инструмента Microchip (ТМ). Это руководство описывает основы использования инструментов. Для более
детального знакомства с микроконтроллерами обратитесь к руководствам по тем продуктам PICmicro, которые вы используете. Данный документ является частью gputils. gputils - это свободное программное обеспечение. Вы можете распространять его и/или модифицировать в рамках определений GNU General Public License, как опубликованный Free Software Foundation либо в версии 2, либо (на ваш выбор) в любой более поздней версии. Используемые режимы gputils может использоваться в двух разных случаях: абсолютном режиме asm и настраиваемом asm режиме. Абсолютный Asm режим В абсолютном asm режиме, как источник ассемблерного языка, файл непосредственно конвертируется в hex- файл с помощью gpasm. Это метод абсолютный, поскольку окончательные адреса жестко закодированы в исходном файле. Настраиваемый Asm режим В настраиваемом asm режиме исходный ассемблерный код микроконтроллера разделен на отдельные модули. Каждый модуль ассемблируется в объект с помощью gpasm. Этот объект может размещаться «где угодно» в памяти микроконтроллера. А затем используется gplink для разрешения символьных ссылок, присвоения окончательных адресов и правки машинного кода с окончательными адресами. Вывод из gplink - это абсолютный выполняемый объект. Какой режим лучше? Абсолютный режим проще понять и использовать. Он требует только одного инструмента - gpasm. Большинство примеров на Microchip web-сайте используют абсолютный режим. Зачем же тогда использовать перемещаемый? Код можно писать без заботы об адресах. Что делает его легким в написании и повторном использовании. Объекты могут быть архивированы с созданием библиотеки, которую тоже проще использовать повторно. Перекомпиляция проекта может быть более быстрой, поскольку вы компилируете только часть изменений. Файлы могут иметь локальные имена размещения. Пользователь выбирает, какие символы глобальны. Большинство инструментов разработки по этим причинам использует перемещаемые объекты. Немного о том, что не относится обычно к микроконтроллерным средствам. Их приложения так малы, что абсолютный режим непрактичен. Для PIC перемещаемый режим имеет один большой недостаток. Под вопросом остается управление банками и страницами. Поддерживаемые процессоры gputils в настоящее время поддерживает следующие процессоры: eeprom8 gen p!0f200 p!0f202 p!0f204 p!0f206 р!2с508 p!2c508a p!2c509 p!2c509a p!2c671 p!2c672 pl2се518 p!2ce519 p!2ce673 p!2ce674 pl2cr509apl2f508 p!2f509 p!2f629 p!2f635 p!2f675 p!2f683 p!4000 р!6с5х p!6cxx p!6c432 p!6c433 p!6c505 p!6c52 р!6с54 p!6c54a p!6c54b p!6c54c p!6c55 p!6c55a р!6с554 p!6c557 p!6c558 p!6c56 p!6c56a p!6c57 р!6с57с p!6c58a p!6c58b p!6c61 p!6c62 p!6c62a р!6с62Ь p!6c620 p!6c620a p!6c621 p!6c621a p!6c622 р!6с622а р!6с63 p!6c63a p!6c64 p!6c64a p!6c642 р!6с65 p!6c65a p!6c65b p!6c66 p!6c662 p!6c67 р!6с71 p!6c710 pl6c711 p!6c712 p!6c715 p!6c716 р!6с717 p!6c72 p!6c72a p!6c73 p!6c73a p!6c73b р!6с74 p!6c745 p!6c747 p!6c74a p!6c74b p!6c76 р!6с765 p!6c77 p!6c770 p!6c771 p!6c773 p!6c774 р!6с781 p!6c782 p!6c84 p!6c923 p!6c924 p!6c925 р!6с926 p!6ce623 p!6ce624 p!6ce625 p!6cr54 p!6cr54a р!6сг54Ь p!6cr54c p!6cr5 6a p!6cr57a p!6cr57b p!6cr57c р!6сг58а p!6cr58b p!6cr62 p!6cr620apl6cr63 p!6cr64 р!6сг65 p!6cr72 p!6cr83 p!6cr84 p!6f505 p!6f54 p!6f57 p!6f59 p!6f627 p!6f627a p!6f628 p!6f628a p!6f630 p!6f636 p!6f639 p!6f648a p!6f676 p!6f684 p!6f685 p!6f687 p!6f688 p!6f689 p!6f690 pl6f716 p!6f72 p!6f73 p!6f737 p!6f74 p!6f76 p!6f767 p!6f77 p!6f777 p!6f785 p!6f818 p!6f819 p!6f83 p!6f84 p!6f84a p!6f87 p!6f870 pl6f871 p!6f872 p!6f873 p!6f873a p!6f874 p!6f874a p!6f876 p!6f876a
p!6f877 p!6f877a pl6f917 pl6hv540 pl7c44 pl7c752 pl7cr42 pl7cr43 p!8c452 p!8c601 p!8fl320 p!8f2220 p!8f2420 p!8f2431 p!8f2510 p!8f2515 p!8f2550 p!8f258 p!8f2680 p!8f2681 p!8f442 p!8f4420 p!8f4480 p!8f4510 p!8f4539 p!8f4550 p!8f4620 p!8f4680 p!8f6490 p!8f64j!5 p!8f65j!5 p!8f6620 p!8f66j!5 p!8f6720 p!8f8410 p!8f8490 p!8f85jl0 p!8f85jl5 pl8f86j!0 p!8f86jl5 rf509ag rf675f sx28 p!6f88 p!6f913 p!7cxx p!7c42 p!7c756 p!7c756a p!8cxx p!8c242 p!8c658 p!8c801 p!8f2320 p!8f2331 p!8f2439 p!8f2455 p!8f252 p!8f2520 p!8f2580 p!8f2585 p!8f4220 p!8f4320 p!8f4431 p!8f4439 p!8f4515 p!8f452 p!8f458 p!8f4580 p!8f4681 p!8f6310 p!8f6520 p!8f6525 p!8f6621 p!8f6627 p!8f6722 p!8f67jl0 p!8f84jl5 p!8f8520 p!8f8620 pl8f8621 p!8f8720 p!8f8722 rf675h rf675k p!6f914 p!6f916 p!7c42a p!7c43 p!7c762 p!7c766 p!8c252 p!8c442 p!8c858 p!8fl220 p!8f2410 p!8f242 p!8f248 p!8f2480 p!8f2525 p!8f2539 p!8f2610 p!8f2620 p!8f4331 p!8f4410 p!8f4455 p!8f448 p!8f4520 p!8f4525 p!8f4585 p!8f4610 p!8f6390 p!8f6410 p!8f6585 p!8f65jl0 p!8f6680 p!8f66jl0 p!8f8310 p!8f8390 p!8f8525 p!8f8585 p!8f8627 p!8f8680 p!8f87jl0 rf509af sx!8 sx20 gpasm Запуск gpasm Основной синтаксис для запуска gpasm: gpasm [options] asm-file Где опция может быть одной из: • a <format> - Производит hex-файл в одном из четырех форматов: inhx8m, inhx8s, inhxl6, inhx32 (по умолчанию). • с - Выводит перемещаемый объект. • d - Выводит сообщение об ошибке. • D symbol[=value] - Эквивалентно #define <symbol> <value>. • е [ON|OFF] - Расширяет макросы в файл листинга. • g - Используется для директив отладки для COFF. • h - Отображает сообщение помощи (help). • i - Игнорирует чувствительность к регистру. По умолчанию в gpasms обращения «fooYa» и «FOOYA» воспринимаются различно. • I <directory> - Задает директорию включения (include). • 1 - Выводит список поддерживаемых процессоров. • L - Игнорировать директивы nolist. • m - Дамп памяти. • п - Использовать DOS стиль новой линии (CRLF) в hex-файле. Эта опция не разрешена на Win32 системах. • o<file> - Альтернативное имя выходного hex-файла. • p<processor> - Выбор целевого процессора. • q - Выйти. • г <radix> - Установить radix, то есть, основание системы счисления, которую gpasm использует, когда интерпретирует числа. <radix> может быть одной из «oct», «dec» и «hex» для основания восемь, десять и шестнадцать соответственно. По умолчанию это «hex». • v - Выводит информацию о версии gpasm и выходит. • w [0 | 112] - Устанавливает уровень сообщений. • у - Разрешает 18хх расширенный режим. Пока иное не задано gpasm удаляет суффикс «.asm» из входного файла, замещая его «.1st» и «.hex» для выходных файлов list и hex соответственно. На большинстве современных операционных систем это важно в именах файлов. Из этих соображений вы должны обеспечить, чтобы имена файлов образовывались правильно, и чтобы суффикс «.asm» любого исходного кода был в нижнем регистре. gpasm всегда производит «.1st» файл. Если запуск прошел без ошибок, он также производит «.hex» файл или «.о» файл. Использование gpasm с make На большинстве операционных систем вы можете построить проект, используя утилиту make. Для использования gpasm с make вы можете получить makefile подобно этому:
tree.hex: tree.asm treedef.inc gpasm tree.asm Это перестроит «tree.hex», когда бы либо tree.asm, либо treedef.inc файлы ни менялись. Более общий пример использования gpasm с makefile - это пример, включенный в исходный дистрибутив gpasm. Работа с ошибками gpasm не создает специально файл ошибок. Это может вызвать проблемы, если вы хотите сохранять запись ошибок, или если ваш ассемблер производит столь много ошибок, что они переполняют весь экран. Чтобы работать с этим, если ваш командный процессор «sh», «bash» или «ksh», вы можете сделать что-нибудь в этом роде: gpasm tree.asm 2>&1 | tee tree.err Это перенаправит стандартный вывод ошибок на стандартный вывод (2>&1), затем создаст канал этого вывода в tee, который скопируется в tree.err, а затем отобразится на дисплее. Синтаксис, структура файла gpasm файлы источника состоят из ряда строк. Строки могут содержать метку (начинающуюся в столбце 1) или операцию (начинающуюся в столбце, следующем за 1), и то и другое, или ничего. Комментарии следуют за символом «;» и рассматриваются как новая линия. Метки могут быть любой последовательностью букв A-z, цифр 0-9 и подчеркиваний (_); они не могут начинаться с цифр. Метки могут сопровождаться двоеточием (:). Операция - это единственный идентификатор (те же правила, что и для метки выше), сопровождаемый пробелом и, отделенными запятыми, параметрами. Например, следующее допустимо для исходных строк: loop sleep incf 6,1 goto loop ; Blank line ; Label and operation ; Operation with 2 parameters ; Operation with 1 parameter Выражения gpasm поддерживает полный набор операторов, базируемых на наборе операторов «С». Когда gpasm вычисляет операторы эквивалентной значимости, он всегда проходит слева направо. Числа gpasm дает вам несколько способов задания чисел. Вы можете использовать синтаксис, который использует начальный символ для задания основания счисления. Ниже приведены обобщающие альтернативы. Отметьте «С»-стиль опции для обозначения шестнадцатеричных чисел. • Binary В'[01]*’ Десятичное 21 пишется как ВЧ010Г • Octal О'[0-7]*’ Десятичное 21 пишется как 0'25’ • Decimal D'[0-9]*’ Десятичное 21 пишется как D'21’ • Hex H'[0-F]*’ Десятичное 21 пишется как Н'15’ • Hex 0x[0-F]* Десятичное 21 пишется как 0x15 Когда вы пишете число без специального префикса, как, например, 45, gpasm использует текущую систему счисления (основание) для интерпретации числа. Вы можете изменить эту систему счисления директивой RADIX или опцией «-г» в командной линии gpasm. По умолчанию система счисления шестнадцатеричная. Если вы не начинаете шестнадцатеричное число с цифры, gpasm сделает попытку интерпретировать то, что вы написали, как идентификатор. Например, вместо написанного С2, запишет либо 0С2, 0хС2 или Н'С2'. Случай не важный при интерпретации чисел: Оса, ОСА, h'CA’ и Н'са’ все эквивалентны. Несколько допустимых числовых форматов mpasm также поддерживаются. Эти форматы имеют разные недостатки, но все еще поддерживаются: • Binary [01]*b Десятичное 21 пишется как 10101b • Octal q'[0-7]* ’ Десятичное 21 пишется как q'25 • Octal [0-7]*o Десятичное 21 пишется как 25о • Octal [0-7] *q Десятичное 21 пишется как 25q • Decimal [0-9]*d Десятичное 21 пишется как 21 d • Decimal .[0-9]* Десятичное 21 пишется как .21 • Hex [O-F]*h Десятичное 21 пишется как 15h Вы можете записать ASCII код для символа X, используя 'X' или АХ'. Препроцессор
Строка вида: include foo.inc заставит gpasm извлечь строки файла foo.inc до конца файла, а затем вернуться к оригинальному файлу исходного кода к строке, следующей за include. Строки, начинающиеся с «#» - это директивы процессора, и обрабатываются по-разному gpasm. Они могут содержать #define или #undefme директивы. Когда gpasm работает, строки вида: #define X Y каждое последовательное обнаружение X изменят на Y, пока не будет достигнут конец файла или не появится строка: #undefine X Препроцессор будет замещать обнаруженные #v(выражение) в символе со значением «выражения» в десятичном формате. В следующих выражениях: number equ 5 label #v( (number +1) * 5 ) suffix equ 0x10 gpasm заменит символ label_30_suffix значением 0x10 в таблице символов. Препроцессор в gpasm только похож на препроцессор «С», его синтаксис сильно отличается от препроцессора «С», gpasm использует простой внутренний препроцессор для реализации include, #define и #undefine. Файлы заголовков процессора gputils распространяет файлы заголовков Microchip процессора. Эти файлы содержат специфические данные процессора, которые полезны при разработке приложений PIC. Местоположение этих файлов сообщается в gpasm help сообщении. Используйте директиву INCLUDE для использования подходящего файла в вашем исходном коде. Требуется только имя файла, gpasm найдет путь по умолчанию автоматически. Директивы, генерация кода В абсолютном режиме используйте директиву ORG для установки памяти PIC в место, где gpasm начнет ассемблировать код. Если вы не зададите адрес с помощью ORG, gpasm присвоит 0x0000. В перемещаемом режиме используйте директиву CODE. Конфигурация Вы можете выбрать защитные установки для вашей PIC реализации, используя директиву___CONFIG, так что hex-файл явно установит защиту. Конечно, вы должны удостовериться, что эти установки соответствуют вашей аппаратной PIC разработке. Директивы _MAXRAM и ________BADRAM определят, какое положение RAM допустимо. Эти директивы, по большей части, используются в специальных файлах конфигурации процессора. Условное ассемблирование Директивы IF, IFNDEF, IFDEF, ELSE и END IF позволяют вам ассемблировать некоторые секции кода, только если встречается условие. Сами по себе они не приводят к генерации gpasm какого-либо PIC кода. Пример далее демонстрирует условное ассемблирование. Макросы gpasm поддерживает простую схему макроса. Вы можете определить и использовать макросы подобные этому: any macro parm movlw parm endm any 3 3 Более полезный для использования пример некоторых макросов: ; Shift reg left Slf macro reg clrc rlf reg,f endm
; Scale W by "factor". Result in "reg", W unchanged, scale macro reg, factor if (factor == 1) movwf reg ; 1 X is easy else scale reg, (factor /2) ; W * (factor / 2) slf reg,f ; double reg if ((factor & 1) == 1) ; if lo-bit set .. addwf reg,f ; . . add W to reg endif endif endm Этот рекурсивный макрос генерирует код для умножения W на постоянную factor, и сохранения результата в reg. Так что написание: scale tmp,D'10' равносильно написанию: movwf tmp clrc rlf tmp,f clrc rlf tmp,f addwf tmp,f clrc rlf tmp,f ;tmp=W ;tmp=2 *W ;tmp=4 *W ;tmp=(4*W)+W=5*W ;tmp=10*W $ $ распространяется на адреса инструкций, в настоящее время ассемблируемых. Если используется в контексте ином, чем инструкция, таком как условия, распространяется на адреса следующих обнаруженных инструкций, пока ассемблер инкрементирует текущие адреса после ассемблирования инструкции. С $ можно обходиться, как и с любыми другими числами: $ $+1 $-2 и может быть использовано для записи циклов без меток: LOOP: BTFSS flag,0x00 GOTO LOOP BTFSS flag,0x00 GOTO $-1 Предложения по структурированию вашего кода Вложенные IF операции могут быстро стать запутанными. Отступы - это один из путей сделать код яснее. Другой способ - добавить фигурные скобки к IF, ELSE и ENDIF, подобным образом: IF (this); { ELSE; }{ ENDIF; } После того, как вы сделали это, вы можете использовать ваш текстовый редактор с show-matching-brace для проверки частей IF структуры. В vi эта команда - “%”, в emacs это M-C-f и М-С-Ь. Директивы суммарно _BADRAM __BADRAN <expression> [, <ехрression]* Инструктирует gpasm, что нужно генерировать ошибку, если как-то используется заданное место RAM Специфицирует диапазон адресов с помощью <lo>-<hi>. См. любой файл заголовков определенного процессора в качестве примера. См. также: MAXRAM CONFIG CONFIG <expression>
Устанавливает конфигурацию защиты PIC процессора. _IDLOCS __IDLOCS <expression> или _IDLOCS <expressionl>,<ехрression2> Устанавливает местоположения идентификации PIC процессора. Для 12 и 14 битовых процессоров устанавливается четыре id места в шестнадцатеричное значение выражения. Для 18схх устройств id вместо expression! устанавливается в шестнадцатеричное значение expression2. _MAXRAM __MAXRAM <expression> Инструктирует gpasm, что попытка использовать любое место RAM выше заданного, должно считаться ошибкой. См. любой файл заголовка конкретного процессора в качестве примера. См. также:_BADRAM BANKISEL BANKISEL <label> Эта директива генерирует код выбора банка для косвенного доступа к адресам, обозначенным <label>. Директива не доступна для любых устройств. Она доступна только для 14 битовых и 16 битовых устройств. Для 14 битовых устройств код выбора банка будет установлен/очищен IRP битом регистра STATUS. Директива использует МО VLB или MOVLR в 16 битовых устройствах. См. также: BANKSEL, PAGESEL BANKSEL BANKSEL <label> Эта директива генерирует код выбора банка для банка, содержащего <label>. Код выбора банка будет устанавливать/очищать биты в FSR для 12 битовых устройств. Он будет устанавливать/очищать биты в регистре STATUS для 14 битовых устройств. Директива будет использовать МО VLB или MOVLR в 16 битовых устройствах. МО VLB будет использоваться для улучшенных 16 битовых устройств. См. также: BANKISEL, PAGESEL CBLOCK CBLOCK [<expression>] <label>[:<increment>][,<label>[:<increment>]] ENDC Маркирует начало блока константами <label>. gpasm размещает значения для символов в блок, начинающийся со значения <expression>, заданного CBLOCK. Опционное значение <increment> оставляет пространство после <label> перед следующей <label>. См. также: EQU CODE <label> CODE <expression> Только для перемещаемого режима. Создает секцию нового машинного кода в выходном объектном файле. <label> задает имя секции. Если <label> не специфицирует имя, будет использовано имя по умолчанию .code. <expression> не обязательно и задает абсолютный адрес секции. См. также: IDATA, UDATA CONSTANT CONSTANT <label>=<expression> [, <1abe1>=<ехрression>]* Постоянно присваивает значение, полученное при вычислении <expression>, символу <label>. Похоже на SET и VARIABLE, исключая то, что не может быть изменено после присваивания. См. также: EQU, SET, VARIABLE DA <label> DA <expression> [, <expression]* Сохраняет Strings (строки) в программной памяти. Данные сохраняются как одно 14 битовое слово, представляющее два 7 битовых ASCII символа. См. также: DT DATA DATA <expression> [, <expression]*
Генерирует заданные данные. См. также: DA, DB, DE, DW DB <label> DB <expression> [, <expression]* Декларирует байт данных. Значения упаковываются по два в слово. См. также: DA, DATA, DE, DW DE <label> DE <expression> [, Expression] * Определяет данные EEPROM. Каждый символ - это строка, сохраняемая в отдельном слове. См. также: DA, DATA, DB, DW DT DT <expression> [, Expression]* Генерирует заданные данные как байты в последовательности RETLW инструкций. См. также: DATA DW <label> DW <expression> [, Expression] * Декларирует данные одного слова. См. также: DA, DATA, DB, DW ELSE ELSE Маркирует альтернативную секцию условного ассемблерного блока. См. также: IF, IFDEF, IFNDEF, ELSE, ENDIF END END Маркирует end исходного файла. ENDC ENDC Маркирует end для CBLOCK. См. также: CBLOCK ENDIF ENDIF Заканчивает условный ассемблерный блок. См. также: IFDEF, IFNDEF, ELSE, ENDIF ENDM ENDM Заканчивает определение макроса. См. также: MACRO ENDW ENDW Заканчивает цикл while. См. также: WHILE EQU <label> EQU <expression> Постоянно присваивает значение, полученное вычислением выражения <expression>, символу <label>.
Похоже на SET и VARIABLE, исключая невозможность изменения после присваивания. См. также: CONSTANT, SET ERROR ERROR <string> Вызывает сообщение об ошибке. См. также: MESSG ERRORLEVEL ERRORLEVEL {0 | 1 | 2 | +<msgnum> | -<msgnum>}[, ...] Устанавливает типы сообщений, которые выводятся. • 0 - Выводятся сообщения, предупреждения, ошибки. • 1 - Выводятся предупреждения и ошибки. • 2 - Выводятся ошибки. • -<msgnurn> - Препятствует выводу сообщения <msgnum>. • +<msgnum> - Разрешает вывод сообщения <msgnum>. См. также: LIST EXTERN EXTERN <symbol> [ , <symbol> ]* Только для перемещаемого режима. Декларирует новый символ, который определен в другом объектном файле. См. также: GLOBAL EXITM EXITM Немедленно возвращает из макрорасширения в процессе ассемблирования. См. также: ENDM EXPAND EXPAND Расширяет макрос в файле листинга. См. также: ENDM FILL <label> FILL <ехргession>,ccount> Генерирует обнаружение <count> слова программы или байта <expression>. Если выражение заключено в скобки, выражение - строка ассемблера. См. также: DATA DW ORG GLOBAL GLOBAL <symbol> [ , <symbol> ]* Только для перемещаемого режима. Объявляет символ, как глобальный. См. также: GLOBAL IDATA <label> IDATA <expression> Только для перемещаемого режима. Создает секцию новых начальных данных в выходном объектном файле. <label> задает имя секции. Если <label> не задано, будет использовано имя по умолчанию .idata. <expression> не обязательно и специфицирует абсолютный адрес секции. Память для данных локализуется, и начальные данные помещаются в ROM. Пользователь должен обеспечить код для загрузки данных в память. См. также: CODE, UDATA IF IF <expression> Начинает ассемблерный условный блок. Если значение, полученное вычислением <expression>, истинно (то
есть, не нулевое), код, относящийся к следующим ELSE и ENDIF ассемблируется. Если значение - false (то есть, нуль), код не ассемблируется до соответствующих ELSE или ENDIF. См. также: IFDEF, IFNDEF, ELSE, ENDIF IFDEF IFDEF <symbol> Начинает условный блок ассемблера. Если <symbol> появляется в таблице символов, gpasm ассемблирует следующий код. См. также: IF, IFNDEF, ELSE, ENDIF IFNDEF IFNDEF <symbol> Начинает условный ассемблерный блок. Если <symbol> не появляется в таблице символов, gpasm ассемблирует следующий код. См. также: IF, IFNDEF, ELSE, ENDIF LIST LIST <expression> [ , <expression> ] * Разрешает вывод в файл листинга (.1st). Все аргументы интерпретируются как десятичные, не зависимо от текущих установок системы счисления, list п=0 может использоваться для предотвращения прерывания страницы в секции кода файла листинга. Другие опции показаны ниже: • b=nnn - Устанавливает пространство таблицы. • f=<format> - Устанавливает формат hex-файла. Может быть inhx8m, inhx8s, inhxl6 или inhx32. • mm=[ON|OFF] - Карта памяти on или off. • n=nnn - Устанавливает число строк на страницу. • р = <symbol> - Устанавливает текущий процессор. • ре = <symbol> - Устанавливает текущий процессор и разрешает 18хх расширенный режим. • r=[oct | dec|hex] - Устанавливает систему счисления. • st = [ON | OFF ] - Дамп таблицы символов on или off. • w=[0 | 1| 2] - Устанавливает уровень сообщения. • x=[ON|OFF] - Макро расширение on или off. См. также: NOLIST, RADIX, PROCESSOR LOCAL LOCAL <symbol>[[=<expression>], [<symbol>[=<expression>]]*] Объявляет <symbol> как локальный для макроса, который в настоящий момент определяется. Это означает, что дальнейшее обнаружение <symbol> в определении макроса сошлется на локальную переменную, с границами и временем жизни, ограниченными выполнением макроса. См. также: MACRO, ENDM MACRO <label> MACRO [ <symbol> [ , <symbol> ]* ] Объявляет макрос с именем <label>. gpasm замещает любые обнаружения <symbol> в определении макроса с параметрами, заданными в обращении к макросу. См. также: LOCAL, ENDM MESSG MESSG <string> Записывает <string> в файл листинга и в стандартный вывод ошибок. См. также: ERROR NOEXPAND NOEXPAND Выключает расширение макроса в файле листинга. См. также: EXPAND NOLI ST
NOLIST Запрещает вывод файла листинга. См. также: LIST ORG ORG <expression> Устанавливает место, в которое будут помещены инструкции. Если исходный файл не задает адрес с помощью ORG, gpasm принимает, что ORG равно нулю. PAGE PAGE Приводит к переходу файла листинга на следующую страницу. См. также: LIST PAGESEL PAGESEL <label> Эта директива генерирует страницу выбранного кода, чтобы установить биты страницы на страницу, содержащую назначенную <label>. Страница выделенного кода будет устанавливать/очищать биты в STATUS для 12 битовых и 14 битовых устройств. Для 16 битовых устройств генерируется MOVLW и MOVWF для модификации PCLATH. Директива игнорируется для улучшенных 16 битовых устройств. См. также: BANKISEL, BANKSEL PROCESSOR PROCESSOR <symbol> Выбирает целевой процессор. См. также: LIST RADIX RADIX <symbol> Выбирает предопределенную систему счисления из oct для восьмеричной, dec для десятичной и hex для шестнадцатеричной, gpasm использует эту систему счисления для интерпретации чисел, не имеющих явной системы счисления. См. также: LIST RES RES <mem units> Приводит к тому, что указатель на место в памяти будет переведен к <mem_units>. Может быть использовано для резервирования хранилища данных. См. также: FILL, ORG SET <label> SET <expression> Временно присваивает значение, полученное вычислением <expression> символу <label>. См. также: SET SPACE SPACE <expression> Вставляет число <expression> чистых строк в файл листинга. См. также: LIST SUBTITLE SUBTITLE <string> Эта директива создает вторую строку программного заголовка для использования в качестве подзаголовка выходного листинга. <string> - это строка ASCII заключенная в двойные кавычки, не длиннее 60 символов. См. также: TITLE TITLE
TITLE <string> Эта директива создает строку программного заголовка для использования в качестве заголовка выходного листинга. <string> - это ASCII строка, заключенная в двойные кавычки, не длиннее 60 символов. См. также: SUBTITLE UDATA <label> UDATA <expression> Только для перемещаемого режима. Создает новую секцию не инициализированных данных в выходном объектном файле. <label> задает имя секции. Если <label> не задано, будет использовано имя по умолчанию .udata. <expression> не обязательно и задает абсолютный адрес секции. См. также: CODE, IDATA, UDATA_ACS, UDATA_OVR, UDATA_SHR UDATA_ACS <label> UDATA ACS <expression> Только для перемещаемого режима. Создает новую секцию не инициализированных банка доступа данных в выходном объектном файле. <label> задает имя секции. Если <label> не задано, будет использовано имя по умолчанию ,udata_acs. <expression> не обязательно и задет абсолютный адрес секции. См. также: CODE, IDATA, UDATA UDATA_OVR <label> UDATA OVR <expression> Только для перемещаемого режима. Создает новую секцию не инициализированных перезаписываемых данных в выходном объектном файле. <label> задает имя секции. Если <label> не задано, будет использовано имя по умолчанию ,udata_ovr. <expression> не обязательно и задает абсолютный адрес секции. См. также: CODE, IDATA, UDATA UDATA_SHR <label> UDATA SHR <expression> Только для перемещаемого режима. Создает новую секцию не инициализированных общего банка данных в выходном объектном файле. <label> задает имя секции. Если <label> не задано, будет использовано имя по умолчанию ,udata_shr. <expression> не обязательно и задает абсолютный адрес секции. См. также: CODE, IDATA, UDATA VARIABLE VARIABLE <label>[=<expression>, clabel>[=<expression>]]* Объявляет переменную с именем <label>. Значение <label> может позже быть присвоено заново. Значение <label> не должно присваиваться при объявлении. См. также: CONSTANT WHILE WHILE <expression> Создает цикл, пока <expression> истинно. См. также: ENDW Расширения высокого уровня gpasm поддерживает несколько директив для использования с языками высокого уровня. Эти директивы легко идентифицируются, поскольку начинаются с «.». Они доступны только в перемещаемом режиме. Эти возможности расширенные и требуют знания того, как работают перемещаемые объекты gputils. Эти возможности предназначены для использования компиляторами. Ничто не мешает им использоваться и с ассемблером. .DEF .DEF <symbol> [, <expression> ]* Создает новый COFF <symbol>. Опции перечислены ниже: • absolute - Ключевое слово абсолютного символа. • class=nnn - Устанавливает символ класса (размер в байтах). • debug - Ключевое слово символа ошибок. • extern - Ключевое слово внешнего символа.
global - Ключевое слово глобального символа. size=nnn - Резервирование слов или байт для символа, static - Ключевое слово статического символа. type=nnn - Установка типа символа (укороченного). value=nnn - Установка значения символа. Эти директивы дают пользователю хороший способ управления таблицей символов. Контроль необходим, но если используется неправильно, то может привести ко многим нежелательным последствиям. Он может легко стать причиной ошибок в процессе линковки или дать неправильный машинный код. Пользователь должен полностью понимать операцию gputils COFF таблицы символов, прежде чем модифицировать ее содержимое. Для достижения лучших результатов должно использоваться только одно ключевое слово. Ключевое слово должно сопровождаться именем символа. Затем за ключевым словом должно идти любое выражение, которое непосредственно устанавливает значение. Вот пример: .def global clock, global, type = T ULONG, size = 4 См. также: .DIM .DIM .DIM <symbol>, <number>, <expression> [, <expression> ] * Создает <number> вспомогательных символов, прикрепленных к <symbol>. Заполняет вспомогательные символы значениями, заданными в <expression>. Выражения должны получаться в значениях, размещаемых в байтах, когда вычисляются, или быть строковыми. Символ должен быть COFF символом. Эта директива генерирует ошибку, если символ уже имеет вспомогательные символы. Это защищает пользователя от неприятностей с автоматически генерируемыми символами. Каждый вспомогательный символ имеет 18 байт. Так что содержимое, заданное выражениями, должно быть меньше или равно 18 * <number>. gpasm не использует вспомогательные символы. Так что содержимое не сказывается на операциях программы. Однако содержимое может быть использовано gplink или средствами других производителей. См. также: .DEF .DIRECT .DIRECT <command>, <string> Предоставляет механизм для прямой связи из программы с отладочным окружением. Метод не имеет влияния на исполняемые. Символы будут появляться в обоих файлах COFF и COD. Каждая директива создает новый COFF символ .direct. Вспомогательный символ, который прикрепляется, содержит <command> и <string>. Строка должна быть меньше, чем 256 байт. Команда должна иметь значение от 0 до 255. Нет ограничений на содержимое, однако эти сообщения должны согласовываться с отладочной средой. Типичные значения приведены ниже: • а - Определенное пользователем утверждение. • А - Assembler/Compiler определенное утверждение. • е - Определенные пользователем команды эмулятора. • Е - Assembler/Compiler определенные команды эмулятора. • f - Определенное пользователем printf. • F - Assembler/Compiler определенное printf. • 1 - Определенная пользователем log команда. • L - Assembler/Compiler/Code генерированный log проверки команды. Символы также содержат адрес, где сообщение было вставлено в ассемблере. Символы с окончательно перемещенными адресами, доступны в исполняемом COFF. Символы также записываются в COD файл. Они могут просматриваться с помощью gpvc. См. также: .DEF, .DIM .EOF EOF Директива приводит к тому, что символ конца файла будет помещен в таблицу символов. Обычно этот символ генерируется автоматически. Директива позволяет пользователю вручную генерировать символ. Директива проходит только, если используется опция «-g» командной строки. Когда эта опция используется, запрещается автоматическая генерация символа. См. также: .EOF, .FILE, .LINE
.FILE .FILE <string> Директива приводит к тому, что символ файла размещается в таблице символов. Обычно этот символ генерируется автоматически. Директива позволяет пользователю вручную генерировать символ. Директива проходит, только если используется опция «-g» командной строки. Когда эта опция используется, запрещается автоматическая генерация символа. См. также: .EOF, .FILE, .LINE .IDENT .IDENT <string> Создает символ .ident COFF и прибавляет вспомогательный символ. Вспомогательный символ указывает на вход в строковую таблицу. Вход содержит <string>. Это ASCII комментарий любой длины. Этот символ не влияет на операцию gputils. Обычно он используется для хранения версии компилятора. См. также: .DEF, .DIM .LINE .LINE «expression» Директива приводит к тому, что генерируются номера строк COFF. Обычно они генерируются автоматически. Эта директива позволяет пользователю вручную генерировать номера строк. Директива проходит только, если используется опция «-g» командной строки. Когда эта опция используется, автоматическая генерация запрещена. <expression> всегда вычисляется как десятичное, не зависимо от текущих установок системы счисления. См. также: .EOF, .FILE, .LINE .TYPE .TYPE «symbol», «expression» Эта директива модифицирует COFF тип содержащегося <symbol>. Символ должен быть определен. Тип должен быть от 0 до Oxffff. Обычно типы определены в coff.inc. По умолчанию типы символа COFF определены в NULL в gpasm. Хотя тип не влияет на компоновку или генерацию исполняемого файла, он помогает в отладочном окружении. См. также: .DEF Errors/W arnings/Messages gpasm записывает каждое сообщение об ошибках в два места: • Стандартный вывод ошибок. • Файл листинга (.1st). Формат сообщений об ошибках: Error «src-file> <line> : <code> «description» где: • <src-file> - исходный файл, где gpasm встречает ошибку. • <line> - номер строки. • <code> - Зх-значный код ошибки, данный в списке ниже. • <description> - краткое описание ошибки. В некоторых случаях содержит дальнейшую информацию об ошибке. Сообщения об ошибках подходят для анализа emacs в «режиме компиляции». В этой части описаны сообщения об ошибках, производимые gpasm. Ошибки 101 ERROR directive (директива ошибок) - Генерируемая пользователем ошибка. См. директиву ERROR, где это описано более детально. 114 Divide by zero (деление на ноль) - gpasm столкнулся с делением на ноль. 115 Duplicate Label (дублирование метки) - Дублирование метки или переопределение символа, который не может быть переопределен. 124 Illegal Argument (неверный аргумент) - gpasm столкнулся с неверным аргументом в выражении. 125 Illegal Condition (неверное условие) - Было встречено неверное условие подобно пропущенному ENDIF или ENDW.
126 Argument out of Range (аргумент выходит из пределов) - Выражение имеет аргумент, который вышел за пределы. 127 Too many arguments (слишком много аргументов) - gpasm столкнулся с выражением со слишком большим количеством аргументов. 128 Missing argument(s) (пропущен аргумент(ы)) - gpasm столкнулся с выражением, в котором пропущен, по меньшей мере, один аргумент. 129 Expected (ожидалось) - Ожидался некоторый тип аргумента. 130 Processor type previously defined (тип процессора прежде определялся) - Процессор переопределялся. 131 Undefined processor (не определенный процессор) - Тип процессора не был определен. 132 Unknown processor (неизвестный процессор) - Выбранный процессор неправильный. Проверьте список процессоров. 133 Hex file format INHX32 required (требовался hex-файл формат INHX32) - Адрес выше 32К был задан. 135 Macro name missing (пропущено имя макроса) -Макрос был определен без имени. 136 Duplicate macro name (дублированное имя макроса) - Имя макроса было продублировано. 145 Unmatched ENDM (не соответствующее ENDM) - Обнаружено ENDM без определения макроса. 159 Odd number of FILL bytes (нечетное число FILL байт) - В устройствах PIC18CXX число байт должно быть четным. Предупреждения 201 Symbol not previously defined (символ прежде не определен) - Сделана попытка #undefme символ, который не был ранее определен (#define). 202 Argument out of range (аргумент вне пределов) - Аргумент не находится в пределах выделенного пространства. 211 Extraneous arguments (чуждые аргументы) - Нестандартные аргументы были обнаружены в строке. 215 Processor superseded by command line (процессор заменен в командной строке) - Процессор был задан в командной строке и в исходном файле. Предпочтение отдано командной строке. 216 Radix superseded by command line (система счисления заменена в командной строке) - Система счисления была задана в командной строке ив исходном файле. Предпочтение командной строке. 217 Hex format superseded by command line (hex формат задан в командной строке) - Формат hex-файла задан в командной строке и в исходном файле. Предпочтение командной строке. 218 Expected DEC, OCT, HEX. Will use HEX. (ожидается DEC, OCT, HEX. Будет использовано HEX) - gpasm встретил неправильную систему счисления. 219 Invalid RAM location specified (задано неверное место RAM) - gpasm встретил неверное местоположение RAM, заданное директивами _MAXRAM и_______BADRAM. 222 Error messages can not be disabled (сообщение об ошибках не может быть запрещено) - Error messages не могут быть запрещены директивой ERRORLEVEL. 223 Redefining processor (переопределение процессора) - Процессор был заново выбран директивой LIST или PROCESSOR. 224 Use of this instruction is not recommanded (использование этой директивы не рекомендуется) - Использование инструкций TRIS и OPTION не рекомендовано для PIC16CXX устройств. Сообщения 301 User Message (сообщение пользователя) - Сообщение пользователя, вызванное директивой MESSG. 303 Program word too large. Truncated to core size, (слово программы большое, усечено до нужного размера) - gpasm встретил слово программы, большее, чем допустимый размер для выбранного устройства. 304 ID Locations value too large. Last four hex digits used, (значение ID места слишком велико, используются последние четыре hex цифры) - Заданное значение местоположения ID слишком велико. 305 Using default destination of 1 (file) (используется место назначения по умолчанию 1, файл) - Место назначения не было задано, так что используется место по умолчанию. 308 Warning level superseded by command line (уровень предупреждений заменен в командной строке) - Уровень предупреждений был задан в командной строке и исходном файле. Предпочтение командной строке. 309 Macro expansion superseded by command line (макро расширение заменено в командной строке) - Макрорасширение было задано в командной строке и исходном файле. Предпочтение командной строке. gplink gplink перемещает и связывает (link) gpasm COFF объекты и генерирует абсолютный исполняемый COFF. Запуск gplink Основной синтаксис для запуска gplink: gplink [options] [objects] [libraries] Где опции могут быть одной из: а - Производит hex-файо в одном из четырех форматов: inhx8m, inhx8s, inhxl6, inhx32 (по
умолчанию). • с - Выводит исполняемый объект. • d - Отображает сообщения об ошибках. • f <value> - Заполняет неиспользуемое незащищенное пространство памяти значением <value> . • h - Показывает help сообщение. • I <directoiy> - Задет директорию include (включения). • 1 - Запрещает вывод файла листинга. • m - Выводит тар файл (картирование). • <file> - Альтернативное имя выходного hex-файла. • q - Выход. • г - Попытаться переместить не обобщенную секцию данных в общую память, если перемещение прервано. • s <file> - Задет скрипт линковщика. • -t <value> - Создает секцию стека. • v - Выводит информацию версии gplink и выходит. gplink выводы gplink создает абсолютный исполняемый COFF. Из этого COFF создаются hex и cod файлы. Исполняемый COFF записывается, только если опция «-с» добавлена. Этот файл полезен для симуляции и разработки с помощью mpsim. Cod-файл используется для симуляции с gpsim. gplink может также создавать шар-файл, map-файл сообщает об окончательных адресах, присвоенных gplink секциям COFF. Это те же данные, что могут быть просмотрены в исполняемом COFF с помощью gpvo. Скрипты линковщика gplink требует скрипта линковщика. Этот скрипт говорит gplink, какая память доступна в целевом процессоре. Множество сгенерированных Microchip скриптов устанавливается с gputils. Эти скрипты предназначены быть отправной точкой, но для многих приложений они будут работать, как есть. Если пользователь не задал скрипт линковщика, gplink постарается использовать скрипт по умолчанию для процессора, обозначенного в объектном файле. Местоположение по умолчанию для скриптов сообщается в gplink help сообщении. Стеки gplink может создавать секцию стека в процессе линковки, используя директиву стека в скрипте линковщика. Та же возможность может быть использована с опцией «-t» в командной строке, gplink создаст секцию и два символа. _stack указывает на начало секции стека, a _stack_end указывает на конец. gplib gplib создает, модифицирует и распаковывает COFF архивы. Это позволяет относительной группе объектов комбинироваться в один файл. Затем этот единственный файл передается gplink. Запуск gplib Основной синтаксис запуска gplib: gplib [options] library [member] Где опции могут быть одной из: • с - Создать новую библиотеку. • d - Удалить компонент из библиотеки. • h - Показать help сообщение. • п - Не добавлять индекс символа. • q - Покинуть режим. • г - Добавить или заменить компонент в библиотеке. • s - Перечислить глобальные символы в библиотеке. • t - Перечислить членов библиотеки. • v - Вывести информацию версии gplib и выйти. • х - Извлечь компонент из библиотеки. Создание архива Наиболее общая операция - это создание нового архива: gplib -с math.a mult.о add.о sub.о Эта команда создаст новый архив math.a, который содержит mult.o, add.o, sub.o.
Имя архива math.a произвольно. Инструмент не использует расширение файла для определения типа файла. Это свободно может быть math.lib или math. Когда вы используете библиотеку, просто добавьте ее к списку объектов, передаваемых в gplink. gplink просканирует библиотеку и извлечет только элементы архива, которые требуются для разрешения внешних ссылок. Так что в приложении не будет содержаться кода всех членов архива. Другие gplib операции Большинство остальных операций полезно, но будет использоваться гораздо реже. Например, вы можете заместить отдельные элементы архива, но большинство людей выберет удаление старого архива и создание нового. Формат архива Формат файла - это стандартный COFF архив. Заголовок добавляется к каждому члену, и не модифицированный объект копируется в архив. Будучи стандартным архивом, он включает индекс символа. Последний просто служит для определения, какой член архива будет извлекаться для разрешения внешних ссылок. Этот индекс не включается в mplib архивы. Так что использование gplib архивов с Microchip Tools будет, возможно, приводить к появлению проблем, если не использовать опцию «-п» при создании архива. Утилиты gpdasm gpdasm - это дизассемблер для gputils. Он конвертирует hex-файлы, генерируемые gpasm и gplink, в дизассемблерные инструкции. Запуск gpdasm Основной синтаксис запуска gpdasm: gpdasm [options] hex-file Где опции могут быть одной из: • с - Декодировать специальную мнемонику. • h - Отобразить help сообщение. • i - Отобразить информацию hex-файла. • 1 - Список поддерживаемых процессоров. • m - Дамп памяти hex-файла. • p<processor> - Выбрать процессор. • s - Вывести короткую форму вывода. • v - Вывести информацию версии gpdasm и выйти. • у - Разрешить расширенный режим 18хх. gpdasm специально не создает выходной файл. Он делает снимок памяти (dump) своего вывода на экране. Это помогает уменьшить риск того, что хороший исходный файл будет непреднамеренно перезаписан. Если вы хотите создать выходной файл, и ваш командный язык - это «sh, bash» или «ksh», вы можете сделать что-то в этом роде: gpdasm test.hex > test.dis Это перенаправит стандартный вывод в файл test.dis. Комментарии при дизассемблировании • gpdasm использует только hex-файл в качестве ввода. Поскольку так, он не имеет способа различить инструкцию и данные в памяти программы. • Необработанные данные. • Есть DON'T CARE биты в словах инструкций. Обычно это не проблема. Это может ею быть, однако, если файл с данными в пространстве программной памяти дизассемблирован и затем вновь ассемблирован. Например, gpdasm будет рассматривать 0x0060 в 14 битовом устройстве, как NOP. Если вывод затем вновь ассемблируется, gpasm присвоит значение 0x0000. Значение изменилось, а оба инструмента вели себя корректно. gpstrip gpstrip манипулирует секциями и таблицами символов объектных файлов gputils . Запуск gpstrip Основной синтаксис запуска gpstrip:
gpstrip [options] object-file Где опции могут быть одной из: • g - Очистить отладочные символы. • h - Показать help сообщение. • к - Сохранить символ. • п - Удалить символ. • - Альтернативный выходной файл. • р - Защитить данные. • г - Удалить секцию. • s - Удалить все символы. • и - Удалить все символы не нужные для перемещения. • v - Показать версию. • V - Многословный режим. • х - Удалить не глобальные символы. gpvc gpvc - это обозреватель cod-файла для gputils. Он предоставляет легкий путь для просмотра содержимого cod- файлов, сгенерированных gpasm и gplink. Запуск gpvc Основной синтаксис запуска gpvc: gpvc [options] cod-file Где опции могут быть одной из: • а - Отобразить всю информацию. • d - Отобразить заголовок директории. • s - Отобразить символы. • h - Показать help сообщение. • г - Отобразить ROM. • 1 - Отобразить исходный листинг. • m - Отобразить пространство отладочных сообщений. • v - Вывести информацию версии gpvc и выйти. gpvc специально не создает выходного файла. Он делает снимок памяти (dump) своего вывода на экране. Если вы хотите создать выходной файл, и ваш командный процессор - это «sh, bash» или «ksh», вы можете сделать что-нибудь подобное: gpvc test.cod > test.dump Это перенаправит стандартный вывод в файл testdump. gpvo gpvo - это обозреватель COFF объектных файлов для gputils. Он предоставляет легкий способ посмотреть содержимое объектов, генерированных gpasm и gplink. Запуск gpvo Основной синтаксис запуска gpvo: gpvo [options] object-file Где опции могут быть одной из: • b - Двоичные данные. • с - Декодировать специальные мнемоники. • f - Заголовок файла. • h - Показать help сообщение. • п - Подавить имена файлов. • s - Данные секции. • t - Символьные данные. • v - Вывести информацию версии gpvo и выйти. • у - Разрешить расширенный режим 18хх.
gpvo специально не создает выходного файла. Он делает снимок памяти (dump) своего вывода на экране. Если вы хотите создать выходной файл, и ваш командный процессор - это «sh, bash» или «ksh», вы можете сделать что-нибудь подобное: gpvo test.obj > test.dump Это перенаправит стандартный вывод в файл testdump. Список литературы и ссылки: 1. Р.Фелпс, «750 практических электронных схем», из-во Мир, Москва 1986г. 2. Р.Трейстер, «Радиолюбительские схемы на ИС типа 555», из-во Мир, Москва 1988г. 3. П.Шкритек «Справочное руководство по звуковой схемотехнике», из-во Мир, Москва 1991г. 4. Журнал «Радио» №4 1976г. 5. Журнал «Радио» №5 1977г. 6. gEDA http://www.geda.seul.org 7. Qucs http://qucs.sourceforge.net 8. LTSpice http://www.linear.com 9. КТ echlab http: //ktechlab. org 10. Xlab http://www.radio-portal.ru 11. KiCAD http://kicad.sourceforge.net 12. gpsim http://www.dattalo.com 13. gputils http: //gputils. sourceforge. net 14. Xcircuit http://bach.ece.jhu.edu/~tim/programs/xcircuit