Начальная

Windows Commander

Far
WinNavigator
Frigate
Norton Commander
WinNC
Dos Navigator
Servant Salamander
Turbo Browser

Winamp, Skins, Plugins
Необходимые Утилиты
Текстовые редакторы
Юмор

File managers and best utilites

Простой в освоении симулятор электрических схем. Схем эмулятор


Симулятор электронных схем на русском

Симулятор электронных схем на русском-1Симулятор электронных схем на русском-1

Симулятор электронных схем на русском — SPICE-симулятор TINA-TI

Симулятор электронных схем на русском — это обыкновенный SPICE-симулятор под названием TINA-TI с легкой для понимания графической оболочкой. Данная программа работает без всякого лимита на количество применяемых приборов, легко обрабатывает всесторонние работы. Прекрасно соответствует имитированию поведенческой реакции разнообразных аналоговых схем, а также импульсных блоков питания. Используя TINA-TI можно легко сконструировать схему какой угодно степени сложности, соединить раннее созданные фрагменты, исследовать и распознать показатели схемы по качеству.

Все представленные элементы, которыми располагает симулятор электронных схем на русском TINA-TI, рассредоточены распределены на шесть типов: компоненты пассивного действия, ключи переключения, полу-проводниковые приборы, устройства измерения, миниатюрные модели устройств повышенной сложности. Дополнительно данный софт имеет в своем составе множество показательных образцов.

Симулятор электронных схем на русском-2Симулятор электронных схем на русском-2

Симулятор электронных схем составлен на русском языке, поэтому с его помощью можно легко освоить черчение и корректировку принципиальных схем. Процесс создания схемы сам по себе не сложный и после завершения этой операции начинается этап симуляции. Программа может выполнять ниже перечисленные виды исследования: оценку постоянного и переменного тока. В данный анализ входит — расчет ключевых напряжений, построение графика конечного итога, определение промежуточных параметров и тестирование температуры.

Далее идет исследование промежуточных процессов, шумовых искажений. Обусловленность от категории исследования, учебная программа формирует окончательный итог в форме графических изображений или таблиц. Прежде чем начать симуляцию, TINA-TI производит проверку схемы на наличие или отсутствие ошибок. Когда обнаруживаются какие либо отклонения, то все изъяны будут показаны в отдельном окошке в форме списка. Если кликнуть мышью на надписи с ошибкой не распознанной симулятором, то деталь или часть чертежа обозначится маркеровочными знаками.

Симулятор электронных схем на русском-3Симулятор электронных схем на русском-3

Дополнительно TINA-TI может выполнять измерение различных сигналов и их испытание. Чтобы реализовать данный вид исследования, для этого имеются виртуальные устройства: цифровой мультиметр, осциллограф, контрольно-измерительный прибор сигналов, источник периодических сигналов и устройство записи. Все имеющиеся в программе приборы симуляции предельно возможно соответствуют по использованию фактическим измерительным устройствам. Виртуально подключать их можно в любом участке исследуемой схемы. Все полученные условными приборами информационные данные сохраняются в памяти компьютера.

Симулятор электронных схем на русском-4Симулятор электронных схем на русском-4

Tina-TI направлена для функционирования в среде операционных системах Windows 7, Vista, между тем программа эффективно справляется с работой в ОС Linux если использовать виртуальную машины Wine. Определяющим условием должно быть согласованность языка ОС с устанавливаемой программой.

Скачать TINA-TI Russian

usilitelstabo.ru

Circuit Simulator — эмулятор электрических цепей в браузере

Любите электронику? Мы нашли для вас самый доступный способ смоделировать электрическую цепь, посмотреть, как будет работать система и как на её параметры повлияют те или иные компоненты.

Конечно, многие создают DIY-проекты в области электроники прямо на «живых» деталях. Почему бы не смоделировать поведение приборов и компонентов заранее? Хотя бы потому, что сначала нужно найти, купить и скачать подходящий программный пакет и освоить его. Вот если бы обойтись одним браузером и не тратить деньги…

Есть подходящее решение: приложение Circuit Simulator запускается прямо в браузере и не требует каких-либо дополнительных пакетов. Первоначальная версия была написана на Java, но текущий вариант использует только HTML5, так что должен запускаться в любых браузерах и операционных системах (если, конечно, они обладают поддержкой браузеров и графическим интерфейсом).

blog.adafruit.com

С помощью этого веб-приложения можно построить электрическую цепь любой сложности, используя любые (настраиваемые) типы электронных компонентов, элементов питания и проводов. И увидеть, как это будет работать и каким образом повлияют на работу системы те или иные параметры.

В представленном видео — небольшой урок по использованию Circuit Simulator.

Попробовать Circuit Simulator можно прямо сейчас на официальной странице проекта.

lifehacker.ru

3 симулятора электрических цепей на Андроид

симулятора электрических цепей

С каждым годом и так не малые мощности современных планшетов стремительно увеличиваются, а система Андроид, с каждым днем стает все более популярной. Не удивительно, что разработчики уделяют внимания различного рода симуляторам процессов для андроид устройств. В данном обзоре рассмотрим 3 самых популярных симулятора электрических цепей для Андроид устройств, сравним их возможности, потенциал и удобство использования. Некоторые из приложений платные, но у них есть демо версии с которыми можно подробно ознакомиться.

Для теста эмуляторов использовалась классическая схема мультивибратора, а в роли подопытного планшета взят Amazon Kindle Fire HD 7.

Every Circuit

http://everycircuit.com/

EveryCircuit очень эффективная программа с удобным и интуитивно понятным интерфейсом. Отлично реализована автоматическая система соединения деталей в узлы. В верхней части экрана присутствует окно осциллографа, в котором можно увидеть характер тока, проходящий через выбранный радиокомпонент.

симулятора электрических цепей

Также можно выводить на диаграмму данные из нескольких элементов и визуально их сравнивать. Присутствует возможность изменять параметры компонентов и скорость в процессе моделирования работы схемы.

симулятора электрических цепей

Отличная анимация движения и импульсов токов, а также зарядки и разрядки конденсаторов.

Droid Tesla

http://droidtesla.com/

Droid Tesla имеет самое запутанное меню настроек из всех описанных программ. Режим осциллографа включается отдельно специальной иконкой. Неоспоримым плюсом есть то, что данные можно считывать с любых точек схемы и сразу сохранять картинку диаграммы. Сильно усложнена система сбора радиокомпонентов в узлы.

симулятора электрических цепей

Анимация графиков желает быть лучше и слегка притормаживает.

iCircuit

http://kruegersystems.com/

iCircuit имеет неоспоримые преимущества в быстроте работы, анимация графиков самая быстрая и с самым стабильным результатом. Графики можно выводить отдельно на полный экран.

симулятора электрических цепей

симулятора электрических цепей

Для эксперимента моделировалась схема простого драйвера светодиода, у которой iCircuit показала пилообразное напряжение на выходе, остальные симуляторы не совсем корректно работали с элементами индуктивности.

симулятора электрических цепей

симулятора электрических цепей

Данные приложения смогут помочь не только начинающим радиолюбителям осваивать азы электроники, но и более опытным в экспериментах над схемами или узлами.

Вконтакте

Facebook

Twitter

Одноклассники

comments powered by HyperComments

diodnik.com

Моделирование схем в программе Multisim - Интернет-журнал "Электрон" Выпуск №3

Этой статьей начинаю освещать одну из интереснейших тем это тема компьютерного, еще говорят, схемотехнического моделирования схем различных электронных устройств.

Вообще термин моделирование электронных схем имеет много синонимов, это и эмуляция электронных схем, симуляция электронных схем и т. д. Я буду придерживаться термина «компьютерное моделирование» или моделирование схем на компьютере, не суть важно.

Итак, поехали.

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

Перечислю только самые известные из них:

NI Multisim;

Proteus;

OrCAD;

Micro-Cap;

LTSpice и множестов других программ.

Программы моделирования электронных схем

Сегодня я хочу вас познакомить с программой компании National Instruments – это эмулятор схем Multisim.

Бесплатную программу Multisim с ограничениями на 50 элементов в схеме можно скачать с сайта производителя по ссылке https://lumen.ni.com/nicif/confirmation.xhtml, там же на сайте можно найти версию для учебных заведений, более расширенную по сравнению с предидущей, но тоже имеющую свои ограничения https://lumen.ni.com/nicif/us/academicevalmultisim/content.xhtml

Интерфейс программы Multisim

Начнем с изучения интерфейса программы.

Основные функциональные панели программы показаны на следующем рисунке.

Интерфейс программы multisim

Отдельный интерес представляет панель компонентов. С помощью панели компонентов осуществляется доступ к базе компонентов. При нажатии на любую из выбранных пиктограмм компонентов схем открывается окно Выбор компонента. В левой части окна осуществляется выбор необходимого компонента.

Выбор компонента схемы

Вся база данных компонентов разделена на разделы (пассивные элементы, диоды, транзисторы, микросхемы и т. д.), а разделы на семейства (например, для диодов – это сами диоды, стабилитроны, светодиоды, тиристоры и т. д.). Надеюсь идея понятна.

Разделы и семейства компонентов

Так же в окне выбора компонента можно посмотреть обозначение выбранного компонента, описание его функции, выбрать тип корпуса.

Моделирование схем в программе Multisim.

Теперь переходим непосредственно к практике. Давайте соберем простую схему в программе Multisim и заставим ее работать!

Я скачал из интернета схему мультивибратора на двух транзисторах, где в качестве нагрузки используются светодиоды.

multivibrator

Далее собираем ее в программе Multisim и включаем моделирование.

Схема моделирования в multisim

Можем воспользоваться измерительными приборами, например виртуальным осциллографом и посмотреть сигналы в различных точках схемы.

Исследование схемы с помощью осциллографа

Мы убедились, что схема работает, на этом знакомство с программой Multisim заканчиваю, если вас заинтересовала тема моделирования схем, пишите свои вопросы в комментариях, отвечу с удовольствием.

Ну и на последок, по традиции представляю вам подробное видео по моделированию схем в программе Multisim.

Если вы еще не подписались на новые выпуски интернет журнала «Электрон», то заполняйте форму внизу страницы и получайте новые выпуски на электронную почту в формате PDF.

www.sxemotehnika.ru

Пишем эмулятор простых логических схем

14 September 2017

Сегодня мы реализуем программу для симуляции логических схем.

Конечно с помощью неё нельзя будет реализовать такие схемы как:

  • триггер
  • ячейка памяти
  • и многие другие (все те, что имеют обратную связь)

но для написания простого сумматора - самое то!

Для простоты реализации писать будем на Python. Забегу вперёд и скажу, что наша базовая реализация займёт не больше 100 строчек кода. Можно и меньше, но мы за этим не будем гнаться.

Давайте определим что нам будет нужно чтобы эмулировать работу самого простого элемента?

  1. Он должен иметь входы/выходы
  2. Иметь возможность получать сигнал на вход и отдавать на выходе
  3. Выполнять некое преобразование между входным и выходным сигналом

Для определенность возьмём элемент NAND. В привычных для многих функциях он будет выглядеть так:

Это базовый элемент, который используется в электронике и он послужит нам отправной базой в нашей программе.

Напишем каркас для нашего элемента.

class ElementNAND: def __init__(self): # у NAND два входа self.input = [0, 0] # и один выход self.output = [0] def execute(self): # X NAND Y = NOT (X AND Y) = (NOT X) or (NOT Y) # см. законы де Моргана self.output[0] = (not self.input[0]) % 2 or (not self.input[1]) % 2 # и выбирай любое из условий :) # self.output[0] = (not (self.input[0] and self.input[1])) % 2 """ для удобства отображения input и output содержат числа, а не булевый тип и поэтому нужно брать остаток от деления! """

Теперь мы можем проверить работоспособность нашего элемента. Напишем для него небольшую программу, которая пройдёт по таблице истинности и выведет результаты.

from itertools import product """ ... место для класса ElementNAND ... """ a = ElementNAND() for signal in product(range(2), repeat=2): a.input = list(signal) a.execute() print('{} NAND {} = {}'.format(*a.input, a.output[0]))

Запустим и посмотрим на результат

0 NAND 0 = 1 0 NAND 1 = 1 1 NAND 0 = 1 1 NAND 1 = 0

Отлично, результат соответствует таблице истинности!

Теперь обобщим наши действия, т.е. введём ещё пару правил:

  • пусть элемент может содержать в себе произвольное количество других элементов
  • элементы внутри другого элемента можно соединять проводами

Что же это значит для нас?

Только то, что нужно будет:

  • задавать при инициализации количество входов и выходов
  • определять элементы и провода
  • добавить пару функций отвечающие за работу с проводами и новыми элементами
  • переделать функцию execute

Начнём по порядку

class Element: """ input_w -- количество входных проводов output_w -- количество выходных проводов type -- тип элемента ('составной' или 'NAND') """ def __init__(self, input_w, output_w, type='составной'): # инициализируем нулями массивы входов и выходов self.input = [0] * input_w self.output = [0] * output_w # указываем тип элемента self.type = type # создаём список для внутренних элементов self.elements = [] # создаём список соединяющих проводов self.wires = []

Наверное нужно остановится на списках elements и wires.

elements будет содержать объекты Element к которым можно будет обращаться по индексу, а wires будет содержать все связи входных и выходных проводов между элементами.

Пойдём дальше и добавим функции для работы с элементами и проводами

def push_element(self, element): # проталкиваем элемент в список self.elements.append(element) # и возвращаем его номер в списке return len(self.elements) - 1 def connect_wire(self, wire_a, wire_b): # добавляем провод в список self.wires.append((wire_a, wire_b))

Вроде всё просто! Да?

А теперь самое главное, функция execute.

def execute(self): # если элемент NAND, то считаем по формуле if self.type == 'NAND': """ наш прошлый код """ # X NAND Y = NOT (X AND Y) = (NOT X) or (NOT Y) # см. законы де Моргана self.output[0] = (not self.input[0]) % 2 or (not self.input[1]) % 2 # и выбирай любое из условий :) # self.output[0] = (not (self.input[0] and self.input[1])) % 2 # иначе, если элемент составной: elif self.type == 'составной': """ ... некоторый код ... """

Остановимся на данном моменте и подумаем…

В голову сразу приходит несколько вопросов:

  1. Как исполнять код для вложенных элементов?
  2. Как идентифицировать входные и выходные провода?
  3. Как вообще различить внутренние и внешние провода?

На 2 и 3 вопрос можно ответить сразу:

  • ввести in_self и out_self – для входов и выходов данного элемента
  • и in и out – для внутренних элементов

Плюс будем передавать идентификатор элемента и номер входа/выхода, т.е. когда мы будем соединять элементы, то будем использовать следующий код

element.connect_wire(('in_self', 0), ('in', e_id, 0))

где element – имя самого элемента, ('in_self', 0) – нулевой вход у этого элемента, а ('in', e_id, 0) – вход у внутреннего элемента e_id на нулевом проводе

Для ответа на первый вопрос нам нужно либо реализовать хитрый алгоритм, который будет обходить все элементы в определенном порядке, либо схалтурить и просто последовательно идти по проводам и выполнять код на элементе только в определенный момент (когда выставлены все сигналы на входе). В данном случае нам только придётся последовательно указывать провода, а то логика вычисления может быть нарушена и мы получим неверный результат.

Я думаю вы уже поняли каким путём мы пойдём :)

elif self.type == 'составной': """ идём по всем проводам, где from_e -- начало провода to_e -- конец провода """ for from_e, to_e in self.wires: # если from_e -- вход у элемента if from_e[0] == 'in_self': wire = from_e[1] # запоминаем установленных вход во временную переменную result = self.input[wire] # если from_e -- выход у внутреннего элемента elif from_e[0] == 'out': # вытаскиваем номер элемента и провод из from_e idN, wire = from_e[1:] # и запоминаем установленных выход во временную переменную result = self.elements[idN].output[wire] # если to_e -- вход внутреннего элемента if to_e[0] == 'in': # вытаскиваем номер элемента и провод idN, wire = to_e[1:] # устанавливаем значение сигнала на проводе используя ту самую переменную self.elements[idN].input[wire] = result # и выполняем код внутри элемента self.elements[idN].execute() # если to_e -- выход у самого элемента elif to_e[0] == 'out_self': wire = to_e[1] # то просто записываем результат на его выход self.output[wire] = result

Вот и всё! Конечно код не супер идеальный и скорее всего с ошибкой в логике исполнения, но он работает :)

И для миниатюрного симулятора логики этого будет достаточно!

Полный листинг кода

class Element: """ input_w -- количество входных проводов output_w -- количество выходных проводов type -- тип элемента ('составной' или 'NAND') """ def __init__(self, input_w, output_w, type='составной'): # инициализируем нулями массивы входов и выходов self.input = [0] * input_w self.output = [0] * output_w # указываем тип элемента self.type = type # создаём список для внутренних элементов self.elements = [] # создаём список соединяющих проводов self.wires = [] def push_element(self, element): # проталкиваем элемент в список self.elements.append(element) # и возвращаем его номер в списке return len(self.elements) - 1 def connect_wire(self, wire_a, wire_b): # добавляем провод в список self.wires.append((wire_a, wire_b)) def execute(self): # если элемент NAND, то считаем по формуле if self.type == 'NAND': # X NAND Y = NOT (X AND Y) = (NOT X) or (NOT Y) # см. законы де Моргана self.output[0] = (not self.input[0]) % 2 or (not self.input[1]) % 2 # и выбирай любое из условий :) # self.output[0] = (not (self.input[0] and self.input[1])) % 2 # иначе, если элемент составной: elif self.type == 'составной': """ идём по всем проводам, где from_e -- начало провода to_e -- конец провода """ for from_e, to_e in self.wires: # если from_e -- вход у элемента if from_e[0] == 'in_self': wire = from_e[1] # запоминаем установленных вход во временную переменную result = self.input[wire] # если from_e -- выход у внутреннего элемента elif from_e[0] == 'out': # вытаскиваем номер элемента и провод из from_e idN, wire = from_e[1:] # и запоминаем установленных выход во временную переменную result = self.elements[idN].output[wire] # если to_e -- вход внутреннего элемента if to_e[0] == 'in': # вытаскиваем номер элемента и провод idN, wire = to_e[1:] # устанавливаем значение сигнала на проводе используя ту самую переменную self.elements[idN].input[wire] = result # и выполняем код внутри элемента self.elements[idN].execute() # если to_e -- выход у самого элемента elif to_e[0] == 'out_self': wire = to_e[1] # то просто записываем результат на его выход self.output[wire] = result

Если мы честно хотим реализовать сумматор используя класс Element, то для начала нам нужно создать ещё несколько логических элементов.

Реализовывать мы его будем через два полусумматора, а также нам будут нужны ещё и следующие элементы:

Элемент NOT

Элемент NOT достаточно легко будет реализовать, нужно всего лишь подать один и тот же сигнал на обе ноги NAND.

NOT X = X NAND X = NOT (X AND X) = NOT X

Реализуем в коде

# нам нужен новый объект, а не ссылка from copy import deepcopy """ ... код ... """ # создадим элемент NAND (два входа и один выход) nand_e = Element(2, 1, type='NAND') # создадим элемент NOT (вход и выход) not_e = Element(1, 1) # добавим элемент внутрь и получим его id nand_id = not_e.push_element(deepcopy(nand_e)) # соединяем нулевой вход элемента NOT и нулевой вход у NAND not_e.connect_wire(('in_self', 0), ('in', nand_id, 0)) # соединяем нулевой вход элемента NOT и первый вход у NAND not_e.connect_wire(('in_self', 0), ('in', nand_id, 1)) # соединяем выходы not_e.connect_wire(('out', nand_id, 0), ('out_self', 0)) # + можно сделать проверку на корректность результатов not_e.input[0] = 0 not_e.execute() assert(not_e.output[0] == 1) not_e.input[0] = 1 not_e.execute() assert(not_e.output[0] == 0)

Элемент AND

Элемент AND реализуем через только что написанный NOT и опять же NAND.

X AND Y = NOT (X NAND Y) = X AND Y

Пишем код

from itertools import product """ ... код ... """ # создадим элемент AND (два входа и один выход) and_e = Element(2, 1) # добавим NOT и NAND not_id_1 = and_e.push_element(deepcopy(not_e)) nand_id_1 = and_e.push_element(deepcopy(nand_e)) # теперь соединяем провода # B = X NAND Y and_e.connect_wire(('in_self', 0), ('in', nand_id_1, 0)) and_e.connect_wire(('in_self', 1), ('in', nand_id_1, 1)) # A = NOT B and_e.connect_wire(('out', nand_id_1, 0), ('in', not_id_1, 0)) # result = A and_e.connect_wire(('out', not_id_1, 0), ('out_self', 0)) # и делаем проверку for signal in product(range(2), repeat=2): and_e.input = list(signal) and_e.execute() prof = signal[0] and signal[1] assert(and_e.output[0] == prof)

Элемент OR

Элемент OR реализуем используя три NAND.

X OR Y = (X NAND X) NAND (Y NAND Y)

Реализуя следующим кодом

# создаём элемент OR (два входа и один выход) or_e = Element(2, 1) # добавляем нужные элементы nand_id_1 = or_e.push_element(deepcopy(nand_e)) nand_id_2 = or_e.push_element(deepcopy(nand_e)) nand_id_3 = or_e.push_element(deepcopy(nand_e)) # и соединяем провода # A = X NAND X or_e.connect_wire(('in_self', 0), ('in', nand_id_1, 0)) or_e.connect_wire(('in_self', 0), ('in', nand_id_1, 1)) # B = Y NAND Y or_e.connect_wire(('in_self', 1), ('in', nand_id_2, 0)) or_e.connect_wire(('in_self', 1), ('in', nand_id_2, 1)) # C = A NAND B or_e.connect_wire(('out', nand_id_1, 0), ('in', nand_id_3, 0)) or_e.connect_wire(('out', nand_id_2, 0), ('in', nand_id_3, 1)) # result = C or_e.connect_wire(('out', nand_id_3, 0), ('out_self', 0)) # и делаем проверку for signal in product(range(2), repeat=2): or_e.input = list(signal) or_e.execute() prof = signal[0] or signal[1] assert(or_e.output[0] == prof)

Элемент XOR

Элемент XOR реализуем используя NAND, AND и OR.

X XOR Y = (X NAND Y) AND (X OR Y)

Реализация будет следующая

# создаем элемент XOR (два входа и один выход) xor_e = Element(2, 1) # добавляем элементы nand_id = xor_e.push_element(deepcopy(nand_e)) or_id = xor_e.push_element(deepcopy(or_e)) and_id = xor_e.push_element(deepcopy(and_e)) # и соединяем провода # A = X NAND Y xor_e.connect_wire(('in_self', 0), ('in', nand_id, 0)) xor_e.connect_wire(('in_self', 1), ('in', nand_id, 1)) # B = X OR Y xor_e.connect_wire(('in_self', 0), ('in', or_id, 0)) xor_e.connect_wire(('in_self', 1), ('in', or_id, 1)) # C = A AND B xor_e.connect_wire(('out', nand_id, 0), ('in', and_id, 0)) xor_e.connect_wire(('out', or_id, 0), ('in', and_id, 1)) # result = C xor_e.connect_wire(('out', and_id, 0), ('out_self', 0)) # и делаем проверку for signal in product(range(2), repeat=2): xor_e.input = list(signal) xor_e.execute() prof = signal[0] ^ signal[1] assert(xor_e.output[0] == prof)

Полусумматор

Настало время написать полусумматор. Для этого нам понадобятся два элемента: XOR и AND.

Таблица истинности полусумматора выглядит следующим образом

где X и Y – входы, а S и C – сумма и бит переноса, и они определяются следующими выражениями

Напишем его реализацию

# создаём полусумматор (два входа и два выхода) hadd_e = Element(2, 2) # добавляем в него XOR и AND xor_id = hadd_e.push_element(deepcopy(xor_e)) and_id = hadd_e.push_element(deepcopy(and_e)) # и соединяем провода # S = X XOR Y hadd_e.connect_wire(('in_self', 0), ('in', xor_id, 0)) hadd_e.connect_wire(('in_self', 1), ('in', xor_id, 1)) # result[0] = S hadd_e.connect_wire(('out', xor_id, 0), ('out_self', 0)) # C = X AND Y hadd_e.connect_wire(('in_self', 0), ('in', and_id, 0)) hadd_e.connect_wire(('in_self', 1), ('in', and_id, 1)) # result[1] = C hadd_e.connect_wire(('out', and_id, 0), ('out_self', 1)) # и делаем проверку for signal in product(range(2), repeat=2): hadd_e.input = list(signal) hadd_e.execute() prof = [signal[0] ^ signal[1], signal[0] and signal[1]] assert(hadd_e.output == prof)

Сумматор

Наконец-то мы подошли к самому сумматору!

Для его реализации нам понадобятся два полусумматора и элемент OR.

Таблица истинности следующая

XYZSC
00000
10010
01010
11001
00110
10101
01101
11111

где X и Y – входы, Z – входной бит переноса, S – выходная сумма, C – выходной бит переноса.

Давайте же наконец напишем его

# создаём сумматор (три входа и два выхода) add_e = Element(3, 2) # добавляем элементы ha_id_1 = add_e.push_element(deepcopy(hadd_e)) ha_id_2 = add_e.push_element(deepcopy(hadd_e)) or_id = add_e.push_element(deepcopy(or_e)) # и соединяем провода # я думаю вы сможете найти схему полного сумматора на двух полусумматорах # и разобраться в этом коде! add_e.connect_wire(('in_self', 0), ('in', ha_id_1, 0)) add_e.connect_wire(('in_self', 1), ('in', ha_id_1, 1)) add_e.connect_wire(('in_self', 2), ('in', ha_id_2, 1)) add_e.connect_wire(('out', ha_id_1, 0), ('in', ha_id_2, 0)) add_e.connect_wire(('out', ha_id_1, 1), ('in', or_id, 0)) add_e.connect_wire(('out', ha_id_2, 1), ('in', or_id, 1)) add_e.connect_wire(('out', ha_id_2, 0), ('out_self', 0)) add_e.connect_wire(('out', or_id, 0), ('out_self', 1)) # делаем финальную проверку по таблице истинности table = [ # X Y Z S C [0, 0, 0, 0, 0], [1, 0, 0, 1, 0], [0, 1, 0, 1, 0], [1, 1, 0, 0, 1], [0, 0, 1, 1, 0], [1, 0, 1, 0, 1], [0, 1, 1, 0, 1], [1, 1, 1, 1, 1] ] for x, y, z, s, c in table: add_e.input = [x, y, z] add_e.execute() assert(add_e.output == [s, c])

Полный листинг представлен ниже

from itertools import product from copy import deepcopy class Element: """ input_w -- количество входных проводов output_w -- количество выходных проводов type -- тип элемента ('составной' или 'NAND') """ def __init__(self, input_w, output_w, type='составной'): # инициализируем нулями массивы входов и выходов self.input = [0] * input_w self.output = [0] * output_w # указываем тип элемента self.type = type # создаём список для внутренних элементов self.elements = [] # создаём список соединяющих проводов self.wires = [] def push_element(self, element): # проталкиваем элемент в список self.elements.append(element) # и возвращаем его номер в списке return len(self.elements) - 1 def connect_wire(self, wire_a, wire_b): # добавляем провод в список self.wires.append((wire_a, wire_b)) def execute(self): # если элемент NAND, то считаем по формуле if self.type == 'NAND': # X NAND Y = NOT (X AND Y) = (NOT X) or (NOT Y) # см. законы де Моргана self.output[0] = (not self.input[0]) % 2 or (not self.input[1]) % 2 # и выбирай любое из условий :) # self.output[0] = (not (self.input[0] and self.input[1])) % 2 # иначе, если элемент составной: elif self.type == 'составной': """ идём по все

freecx.github.io

программы для радиолюбителя

Только авторский контент.

Здесь перечислены некоторые из программных пакетов, необходимых при работе с микроконтроллерами. Следует отметить, что предлагаемые ссылки для скачивания - далеко не единственные, а даны для ориентировки читателей.

Всё начинается со схемы. Это первый этап создания любого электронного устройства. К началу написания программы желательно иметь хотя бы черновик принципиальной схемы. И рисовать эту схему удобнее, конечно не от руки карандашем. Вполне симпатичные схемки получаются на OrCAD. Они легко переносятся в текстовые и графические редакторы для дальнейшей публикации. Есть более "легкие" программы, например, sPlan. Можно для этой цели использовать P-CAD, но о нем позже.

Второй этап - написание программы для контроллера. Первые два этапа разделить трудно, настолько они взаимосвязаны. Часто в ходе написания программы несколько раз приходится корректировать схему и наоборот. Начинать осваивать программирование я бы рекомендовал с языка Ассемблер, так как это язык самого низшего уровня и Вы попутно неизбежно разберетесь во внутренней структуре микроконтроллеров. Программу писать и частично отлаживать лучше на фирменном продукте: AVR Studio. В настоящее время существует уже пятая версия, но начинать надо с четвертой: 4.18. Для любителей языка С существует целый ряд пакетов. Среди них, пожалуй, самый распространенный - CodeVisionAVR. Это бесплатный компилятор, но есть еще и другие.

Не утверждаю, что время паяльника ушло, но его значительно "подвинули". В настоящее время, на просторах интернета можно найти множество пакетов для эмуляции электронных схем, в том числе и на микроконтроллерах. 1.Прежде всего - это Proteus. Программа постоянно обновляется, выходят новые версии и сервис паки. Есть руссификаторы и можно найти уроки по освоению. 2.Маленькая программка VMLAB. Замечательна тем, что дает почти 100% гаратию работы устройства в "железе", но очень бедна в плане внешней "обвески" контроллера. 3. Известный пакет MicroCap, вышла уже десятая версия(демо - без контроллеров), в девятой присутствуют только старые модели контроллеров. 4. Для эмуляции можно использовать и OrCAD, но там контроллеров нет вообще.

Самые большие возможности для разводки печатных плат предоставляет конечно - PCAD. Это наиболее старый и многофункциональный пакет, но слишком сложный для начинающего. Пионеры могут пробовать Sprint-Layout. Я ей не пользовался, ничего не могу сказать. Есть модуль трассировки и в OrCAD, но возможностей по оформлению платы меньше, чем в PCAD. Аналогичный модуль присутствует в Proteus. Печатные платы - очень важный аспект нашей работы.

И наконец - прошивка программного кода в микроконтроллер. Программаторов бесчисленное множество и перечислить все - невозможно. Остановлюсь, пожалуй, на одном остальные - найдете самостоятельно. Это PonyProg. Для начинающего - то, что надо. Широкий выбор контроллеров, не нужно отдельного питания. Интерфейс - COM порт. Последняя доступная версия 2.07с. Схема приведена на сайте.

yysup.narod.ru

Популярный симулятор электрических схем под Windows для виртуального анализа.

Multisim

Multisim - возможно самая продвинутая программа для создания и симулирования электронных схем и печатных плат. Программа multisim - это целая лаборатория схемотехнического моделирования, которая предназначена для разработки принципиалок и проектирования печатных плат на профессиональном уровне. Multisim имеет простой удобный интерфейс и позволяет с легкостью моделировать сложные принципиальные схемы и проектировать многослойные печатные платы. Просто нужно программу multisim установить на ваш компьютер. Установка multisim выполняется быстро и просто. На этом сайте вы можете скачать бесплатно и на хорошей скорости. Последняя версия multisim имеет новейшую графическую среду моделирования и новый эмулятор микроконтроллера. В новой версии multisim значительно увеличен размер базы данных компонентов, а также увеличена производительность и скорость компоновки элементов и разводки частей с помощью нового инструмента Ultiboard. Программа multisim имеет новую возможность программно подключать к уже собранной электронной схеме виртуальные приборы, переключатели, потенциометры для мониторинга изменения электронных величин в реальном времени.

Новый русский multisim скачать бесплатноПрограмма multisimинструмент устранения расходимостипараметризованные модели SPICEвывод на электронные представления начальных условийрасширена функциональность электрического пробникаглубокий анализ схеммных решений с расширенными возможностямисовместная имитация микроконтроллера и MCU модуляувеличение объема и качества базы компонентов1200 новых компонентов от ведущих производителейновые биполярные источники тока и напряженияжидкокристаллические графические индикаторыобозначение одним символом базовых логических компонентовприменение передовых методов моделированиявысокая скорость обработки объемной информацииэталонная точность и углубленный анализпригодна для использования в домашних условияхуспешно заменяет дорогое оборудованиевозможно добавление новых электронных моделейимеет простой в использовании интерфейсспособна имитировать работу компьютерной периферииимитирует основные контрольно-измерительные приборыПрограмма представляет собой электронный конструктор, позволяющий имитировать на экране монитора процессы сборки электросхем, исследовать особенности их работы, проводить измерения физических величин так, как это делается в реальном физическом эксперименте. Профессионалы знают, что программа для составления электрических схем помогает при настройке микроконтроллеров. Если Вы неудачно установили: Перед переустановкой почистите реестр от лицензий. Запускаем regedit.exe и ищем "national"; найденные ключи, только (!) если относятся к этой проге (сразу видно будет) удаляем. Доп. информация: National Instruments выпустила новые версии программных пакетов NI Multis 11 и NI Ultiboard 11. Симулятор последней версии программы обладает повышенной функциональностью, новыми возможностями пользовательского интерфейса и поддерживают более 300 новых компонентов от лидирующих мировых производителей. Благодаря новым возможностям разработка и создание прототипов электрических схем может проводиться гораздо быстрее и с большей точностью. С помощью конструктора можно: - изучать зависимость сопротивления проводников от удельного сопротивления его материала, длины и поперечного сечения; - изучать законы постоянного тока - закон Ома для участка цепи и закон Ома для полной цепи; - изучать законы последовательного и параллельного соединения проводников, конденсаторов и катушек; - изучать принципы использования предохранителей в электронных схемах; - изучать законы выделения тепловой энергии в электронагревательных и осветительных приборах, принципы согласования источников тока с нагрузкой; - ознакомиться с принципами проведения измерений тока и напряжения в электронных схемах с помощью современных измерительных приборов (мультиметр, двухканальный осциллограф), наблюдать вид переменного тока на отдельных деталях, сдвиг фаз между током и напряжением в цепях переменного тока; - изучать проявление емкостного и индуктивного сопротивлений в цепях переменного тока, их зависимость от частоты генератора переменного тока и номиналов деталей; - изучать выделение мощности в цепях переменного тока; - исследовать явление резонанса в цепях с последовательным и параллельным колебательным контуром; - определять параметры неизвестной детали; - исследовать принципы построения электронных фильтров для цепей  переменного тока.

Multisim 11.0.2Программа _700Mb_DEPOSITFILES c таблеткой, русификатором и подробными инструкциями по установке

5 видеоуроков по Multisim_120Mb__DEPOSITFILES

6 книг самоучителей по Multisim__108Mb__DEPOSITFILES

jaxik1.narod.ru


 

..:::Новинки:::..

Windows Commander 5.11 Свежая версия.

Новая версия
IrfanView 3.75 (рус)

Обновление текстового редактора TextEd, уже 1.75a

System mechanic 3.7f
Новая версия

Обновление плагинов для WC, смотрим :-)

Весь Winamp
Посетите новый сайт.

WinRaR 3.00
Релиз уже здесь

PowerDesk 4.0 free
Просто - напросто сильный upgrade проводника.

..:::Счетчики:::..