Наши партнеры

UnixForum






Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Тематический каталог -> Программное обеспечение для Linux

Разработка цифровых схем с помощью KTechLab

Оригинал: Computer Logic Design with KTechLab
Автор: Mike Diehl
Дата: 24 июня 2009
Перевод: Александр Тарасов aka oioki
Дата перевода: 7 августа 2009

Несколько недель назад я написал статью о симуляторе цифровых и аналоговых схем под названием ksimus. Один из моих читателей поинтересовался, в чем разница между ksimus и ktechlab, поэтому я решил взглянуть также и на ktechlab. Сразу могу сказать, что с обеими программами работать и играть - одно удовольствие.

С первого взгляда мне показалось, что в ktechlab куда более широкий набор компонентов, из которых можно строить схемы. В отличие от ksimus, в наборе ktechlab есть компонент, имитирующий ОЗУ, а также АЦП, ЦАП и даже микроконтроллер PIC! Мне даже пришлось воспользоваться Google'ом, чтобы понять, для чего же предназначены некоторые компоненты. Документация Ktechlab достаточно полна, хотя на веб-сайте программы я нашел множество битых ссылок. На сайте размещено обращение к сообществу с просьбой помочь в поддержке веб-сайта, и даже вы можете на нее откликнуться.

Компоненты в Ktechlab грубо разделены на категории: источники, дискретные элементы, переключатели, элементы индикации, логические элементы, соединители и микросхемы.

Удивительно, но в комплекте ktechlab идет десять источников напряжения, включая и те, о которых я даже не слышал. Я не инженер-электроник, но на мой взгляд, дублировать батарейку источником постоянного напряжения - это излишне. У обоих компонентов есть настраиваемый выход напряжения. Источник напряжения выдает синусоидальный сигнал с настраиваемой амплитудой и частотой. Генератор сигнала квадратной формы позволяет настроить частоту и период сигнала, хотя он интуитивно воспринимается как логический компонент, а не как источник.

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

Выходные элементы в KTechlab также разнообразны. Есть простые светодиоды и лампы. Есть двунаправленные светодиоды, семисегментные индикаторы и точечно-матричные дисплеи. Точечно-матричный дисплей может быть практически любой, какой вам захочется. Разумеется, в наличии имеются вольтметры и амперметры. Наконец, можно построить графики тока и напряжения в интересующем нас месте. На рисунке 1 изображена простейшая схема, демонстрирующая различные переключатели, батарею, лампу накаливания, вольтметр и потенциометр.

Группа соединителей KTechlab неожиданно меня удивила. Здесь можно найти последовательный и параллельный порты с подписями ко всем выходам! Можно воспользоваться шинным (bus) соединением для объединения нескольких проводников, так с ними удобнее работать. К примеру, все адресные линии, идущие на ОЗУ, могут быть объединены в единую адресную шину. Можно создавать внешние соединения для построения модулей, которые могут быть использованы в других, более сложных схемах.

Итак, добрались до цифровых компонентов, становится намного интереснее. Здесь вы найдете любые логические элементы, которые вам понадобятся. Создать элемент ИЛИ с 50 входами - звучит дико, но в KTechlab это возможно. Также есть триггеры типа JK, SR и D. Переходим к более сложным микросхемам, среди которых можно найти ЦАП, АЦП, операционные усилители, двоичные сумматоры, мультиплексоры, демультиплексоры и счетчики. Но и это еще не все! Ktechlab содержит конвертер кода BCD в код 7-сегментного индикатора и драйвер матричного дисплея. Можно даже воспользоваться таймером 555! Помните такой?

На рисунке 2 изображена другая схема. Теперь у нас есть таймер, к которому подсоединен 8-битный счетчик. Выход счетчика соединен со входом драйвера матричного дисплея, который управляет единственым символом на матричном дисплее. Как вы можете видеть, имеются кнопки включения, up/down и перезапуска. Когда кнопка включения (en) не нажата, таймер запускается и на дисплее поочередно показываются все возможные символы. Если нажать на кнопку перезапуска (r), отсчет начнется снова. Если нажать/отжать кнопку up/down (u/d), счет будет вестись в прямом или обратном порядке. Это простая схема, наглядно демонстрирующая основные функции ktechlab.

Далее, мы подошли к двум микросхемам, которые я даже не надеялся увидеть в симуляторе. Одна из них - это микросхема ОЗУ с 32-разрядной адресной шиной! Разрядность ее слова также может быть изменена, и я остановился на 90 битах.

Другой неожиданный чип - это микроконтроллер PIC! Ktechlab позволяет вам задействовать в своей схеме модель P16F84 PIC. При этом Ktechlab позволяет не только симулировать работу PIC, но также и настраивать его и программировать на нем! У реального PIC каждый вывод может быть настроен в качестве входа или выхода. Эта настройка осуществляется путем записи определенного набора битов в регистр конфигурации. Ktechlab максимально упрощает начальную настройку PIC; начальный уровень сигнала выставляется мышкой. Режим работы вывода (вход или выход) настраивается так - нажимаете кнопку мышки и тяните туда, куда должны идти данные. У каждого вывода изображены стрелочка, отображающая направление течения данных.

На рисунке 3 изображена вымышленная схема с микроконтроллером PIC и параллельным портом. Очевидно, если немного посидеть и поразбираться, то создать схему с параллельным интерфейсом на PIC'е не составит большого труда. Ktechlab позволяет вам спроектировать и смоделировать подобную схему.

После настройки своего PIC'а с помощью Ktechlab, можно загружать программу в формате .asm, .c или .microbe. Если программа записана в формате .asm, тогда ktechlab будет симпулировать ее выполнение в схеме.

Язык ассемблера PIC может показаться скучным, но Ktechlab поможет вам сделать программирование легче. На самом деле, в KTechlab можно писать программы, просто соединяя элементы блок-схемы. Это проще показать, чем объяснять. Поэтому просто взгляните на рисунок 4. Слева изображен PIC с подписанными выводами. У каждого вывода имеется стрелочка, обозначающая выход или вход. Справа изображена простейшая программа и процедура. Таким образом, Ktechlab предоставляет разработчику унифицированное окружение, в котором можно программировать, симулировать и соединять микроконтроллер PIC.

Единственное, чего я не нашел в ktechlab, а также в ksimus, это возможности сохранения выходных сигналов в файл, а также считывание входных сигналов из файла. Это позволило бы значительно приблизить симуляцию к реальным ситуациям. Можно было бы сравнить выход виртуального устройство с известным поведением реальных устройств. К сожалению, ни ktechlab, ни ksimus не предоставляют такой возможности.

Ранее мной был найден ksimus, я установил его и попробовал чисто из интереса. На Ktechlab обратил мое внимание мой читатель. Обе программы интересно изучать, и обе вполне работоспособны. Возможно, Ksimus больше подходит для симуляции аналоговых схем, а Ktechlab - для цифровых, потому что в его комплекте идет более широкий выбор цифровых компонентов.

Майк Диль (Mike Diehl) - фрилансер, компьютерщик, специализирующийся на Linux, программировании и VoIP. Майк живет в Альбукерке, Нью-Мексико, со своей женой и тремя сыновьями. С ним можно связаться по адресу mdiehl@diehlnet.com



Средняя оценка 4 при 1 голосовавших