This library serves as a powerful tool for circuit designers, offering a comprehensive suite of functionalities for creating, connecting, and combining logic elements, as well as for drawing circuit diagrams and simulating signal races. It is designed to make circuit modeling accessible through a set of straightforward commands, enabling users to build and analyze complex schematic circuits with ease. With support for flexible element connections and the ability to model intricate signal interactions, the library aims to streamline the circuit design process, offering both visual and logical representations of technical elements.
Create a new node
project:
npm init
After initializing the project, simply add the library module -- ldamle
:
npm install ldamle
After installing the module, you can import the library anywhere in your project by adding the line:
import * as lle from 'ldamle';
The main class of the library is the class for logical elements. Elements can be created, connected, combined, drawn, and simulated.
Elements are divided into two types: static and dynamic.
Since the behavior of static elements is easier to define, the library offers a complete set of functions for static elements: setting inputs, outputs, and the dependency of the output signal on the input signals, etc.
Dynamic elements can only generate a square wave of a certain frequency; otherwise, dynamic elements can connect static elements to create complex dynamic elements.
Standard elements are available in lle.stde
.
All elements must be connected to each other. For this purpose, a connection class has been developed, which carries information about each connection between elements. A connection must have at least one output, but it is not required to have any inputs. A connection can have multiple inputs.
For proper modeling and visualization, an element graph is created for each element, consisting of the elements connected to it and the elements that are connected to it through another element, and so on. A graph can be created if there is at least one generator in the chain.
A queue is created based on the element graph, which is used to calculate the state of all elements at each clock cycle of the given frequency. This is handled by the modeling.
All non-standard types used in the library are described here.
All code is covered by tests. I will add a test table here later. You can view the coverage at the following links:
Эта библиотека является инструментом для схемотехников, предоставляя полный набор функций для создания, соединения и комбинирования логических элементов, а также для отрисовки схем и моделирования гонок сигналов. Она разработана для упрощения процесса моделирования схем с помощью простых инструкций, позволяя пользователям легко создавать и анализировать сложные схемотехнические цепи. Библиотека поддерживает гибкие соединения элементов и моделирование сложных взаимодействий сигналов, предлагая как визуальные, так и логические представления технических элементов.
Создайте новый node
проект:
npm init
После инициализации проекта просто добавьте к нему модуль библеотеки -- ldamle
:
npm install ldamle
После установки модуля библеотеку можно подключить в любом месте проекта, добавив строчку
import * as lle from 'ldamle';
Основным классом библеотеки является класс логических элементов. Элеметы можно создавать, соединять, объедениять, отрисовывать и симулировать.
Элементы были разделены на 2 типа: статические и динамические.
Так как поведение статических определить легче, библеотека предлагает полный набор функций для статических элементов: задание входов, выходов зависимость сигнала на выходе от сигналов на входе и т.д.
Динамические элементы могут только задавать меандр определенной частоты, в остальном к динамическим элементам можно подключать статические и получать сложные динамические элементы.
Стандартные элементы доступны в lle.stde
Все элементы должны соеденяться друг с другом. Для этого был разработан класс соединений, который несет в себе информацию о каждом соединении элементов. Соединению обязательно иметь один выход, но не обязательно иметь хоть один вход. Так же входов у соединения может быть несколько.
Для правильного моделирования и отображения уго по одному элементу создается граф элементов, состоящий из элементов, подключенных к данному и элементов которые подключены к данному через другой элемент и т.д. Граф возможно создать при наличии в цепи хотя бы одного генератора.
По графу элементов создается очередь по которой необходимо просчитать состояние всех элементов на каждый такт заданной частоты. Этим занимается моделирование.
Все нестандартные типы, использованные в библеотеке описаны тут
Весь код покрыт тестами. Позже добавлю сюда таблицу тестов. Покрытие можно посмотреть по адресам: