Чи можливо намалювати схеми за допомогою коду?


17

Чи є кращий спосіб не писати файли netlist. щось на зразок:

Define Battery1 As a Battery
Define Resistor1 As a Resistor

Connect Battery1 First Terminal to Resistor1 Second Terminal
Connect Resistor1 First Terminal to Battery1 Second Terminal

Редагувати:

Я вважаю відповіді досить корисними. Буде чудово, якщо знайдеться спосіб імітувати схему, вироблену кодом.


5
FWIW, ваш приклад код для мене схожий на чистий список. Він просто визначає пару частин (імовірно, бібліотека, яка повідомляє інструменту, скільки терміналів у кожного), а потім каже, які термінали підключені один до одного. Якщо ви його трохи використали, можливо, вам навіть буде легше називати вузли та підключати термінали до вузлів, а не до інших терміналів.
The Photon

3
Існує широка прогалина між "чи можливо" та "чи корисно це" для багатьох предметів.
whatsisname

3
Я думаю, ви можете дивитися на ЛПВЩ. Хоча вони в основному описують цифрові схеми, вони технічно не обмежуються такими (я думаю, що Verilog має для них певну підтримку). Як зазначає @ThePhoton, те, що ви показали, виглядає як сіткий список, який вони зазвичай складають.
Мацей П'єхотка

2
Причина, для якої потрібен час, щоб подумати про найкращий спосіб її малювання - це те, що ви повинні добре розуміти схему та як зрозуміти її функцію для людей, які дивляться на креслення. Нічого з цього не є речами, у яких комп’ютери непогані, тому просити комп’ютер зробити це за вас, це не викликає проблем.
The Photon

1
Якщо ви думаєте, що ви просто будете використовувати цей опис як вхід до інструмента компонування друкованої плати, тому його не потрібно використовувати людським читачем, то що ви будете використовувати як документацію для когось (вас) усунення несправностей схеми після він побудований або змінений дизайн пізніше. Якщо ви використовуєте схематичний запис, ви по суті пишете документацію і використовуєте її як вхід до інструменту компонування. Тепер ви знаєте, що ваш макет насправді буде відповідати документації.
The Photon

Відповіді:


28

Якщо ви знайомі з , ви можете використовуватиCiritikzдля малювання приємних схем, написавши код.LATEX

введіть тут опис зображення

Приклад .
Більше прикладів


4
Щоб додати до цього - як говорили інші, малювання хорошої схеми вимагає певної людської інтуїції. Однак якщо ви малюєте безліч подібних схем, то використання laTeX і circuitikz дозволить вам побудувати макет шаблону та налаштувати його під конкретні. Це підхід, який я використовую у створенні матеріалів курсу.
Джон

2
Пропущений пробіл між номером та одиницею виглядає жахливо.
Лонг

@Loong Ви завжди можете розмістити простір між числами та одиницями, якщо хочете. \ або \,можете додати місця в середовищі математики з латексу
nidhin

1
@Loong Очевидно, це проблема локалізації. Як американець, завжди здається дивним мати випадковий додатковий простір між числами та одиницями.
chrylis

1
@chrylis Це не проблема локалізації, вона вказана ISO 80000 і повинна використовуватися виключно.
awjlogan

15

Ознайомтеся з SKiDL ( https://github.com/xesscorp/skidl ), це відбувається відповідно до ваших думок.

Редагувати (як req'd): SKiDL дозволяє процедурний опис всіх схем (а не лише цифрових), а не графічно вводити схему. Вихід з netlist може бути імпортований у програмне забезпечення для компонування. Він також буде виконувати перевірки ERC, і є розширюваним. Це означає, наприклад, що ви могли написати фільтр один раз, а потім повторно використовувати його в різних проектах, а не малювати кожен раз. Написано в Python, з усією підтримкою, яка є разом із цим.


Додано трохи більше інформації.
awjlogan

Інші параметри схематичного малювання Python - це SchemDraw та lcapy .
фенікс

13

Багато програм можуть малювати схематично. Жоден, про який я знаю, не може скласти хорошої схеми: Такий, який підкреслює найважливішу інформацію, і впорядковує схему чітко і легко для розуміння.

Якщо ви просто шукаєте апаратну мову опису (відсутній графічний схематичний вихід), VHDL та Verilog широко використовуються для визначення (цифрових) схем, що реалізуються в ІС, а також можуть використовуватися для проектування на рівні плати.


Verilog-A також може бути використаний для опису та моделювання / моделювання аналогових схем, хоча я не знаю жодних некомерційних тренажерів.
Шамтам

Я сконструював кілька плат, де було легше програмно описати взаємозв’язки, ніж із схематичним; Я використовував програму для створення netlist, а потім завантажив її в програмне забезпечення PCB. Якщо схематичний редактор міг імпортувати чистий список і показати рацнест для з'єднань, у яких ще не було накреслених "справжніх" проводів або явних мережевих міток, це може бути корисним у таких випадках, принаймні для частин схеми, де зроблені реальні дроти. більше сенсу, ніж "повітряні дроти".
supercat

@Shamtam, я використовував Veriolog A, але лише як мову моделювання. Чи є системи, які можуть синтезувати схему з опису Verilog A?
The Photon

@ThePhoton Не те, що я знаю. Я припускаю, що моє використання терміна "описувати" може ввести в оману в цьому сенсі.
Шамтам

@Shamtam, я б не переймався цим словом. Зрештою, це апаратний опис мови. Він просто описує функцію, а не реалізацію.
The Photon

9

Ваш приклад дуже схожий на modelica , об'єктно-орієнтовану мову для моделювання на основі створення блоків та з'єднання портів між блоками.

Приклад використання бібліотеки електричних компонентів (з maplesoft.com ),

encapsulated model ChuaCircuit "Chua's circuit, ns, V, A"
  import Modelica.Electrical.Analog.Basic;
  import Modelica.Electrical.Analog.Examples.Utilities;
  import Modelica.Icons;
  extends Icons.Example;

  Basic.Inductor L(L=18);
  Basic.Resistor Ro(R=12.5e-3);
  Basic.Conductor G(G=0.565);
  Basic.Capacitor C1(C=10, v(start=4));
  Basic.Capacitor C2(C=100);
  Utilities.NonlinearResistor Nr(
    Ga(min=-1) = -0.757576,
    Gb(min=-1) = -0.409091,
    Ve=1);
  Basic.Ground Gnd;
equation 
  connect(L.p, G.p);
  connect(G.n, Nr.p);
  connect(Nr.n, Gnd.p);
  connect(C1.p, G.n);
  connect(L.n, Ro.p);
  connect(G.p, C2.p);
  connect(C1.n, Gnd.p);
  connect(C2.n, Gnd.p);
  connect(Ro.n, Gnd.p);
end ChuaCircuit;

Хоча ви можете створити схему з моделі, зазвичай це робиться в графічному інтерфейсі, який коментує компоненти з інформацією про положення та орієнтацію.


4

Cirkuit - це редактор для перетворення простого опису тексту на схему. Він надає набір макросів M4 для електричних символів.

Він може бути використаний разом з circuitikz , який був запропонований nidhin . Ciritikz використовує більш сучасну графічну систему pgf / TikZ . Спільнота stackexchange має дуже активних користувачів cirkuitikz , але в TeX є більше рішень .

Джерело: https://ece.uwaterloo.ca/~aplevich/Circuit_macros/html/quick.png

Зображення з https://ece.uwaterloo.ca/~aplevich/Circuit_macros/html/examples.html .


3

PSTricks - ще одна бібліотека для користувачів TeX. Він навіть може робити складні математичні обчислення, такі як диференціальні рівняння.

\documentclass[pstricks,border=12pt,12pt]{standalone}
\usepackage{pst-eucl,pst-circ}
\psset
{
    dipolestyle=zigzag,
    labelangle=0,
    labeloffset=-.9,
    intensitylabeloffset=-.4,
    tensionstyle=pm,
    tensionoffset=.9,
    tensionlabeloffset=.9,
    %tensioncolor=red,
    %tensionlabelcolor=blue,
}
\begin{document}
\begin{pspicture}[showgrid=none](12,-12)
	\pstGeonode[PosAngle={135,90,45,0,-45,-90,-135,180,45}]
		(2,-2){A}
		(6,-2){B}
		(10,-2){C}
		(10,-6){D}
		(10,-10){E}
		(6,-10){F}
		(2,-10){G}
		(2,-6){H}
		(6,-6){I}
	%
	\resistor[intensitylabel=$i_1$,tensionlabel=$V_{HA}$](H)(A){$R_1$}
	\resistor[tensionlabel=$V_{AB}$](A)(B){$R_2$}
	\vdc[tensionlabel=$V_{BC}$](B)(C){$E_1$}
	\resistor[tensionlabel=$V_{CB}$](C)(D){$R_3$}
	%
	\resistor[intensitylabel=$i_2$,tensionlabel=$V_{HI}$](H)(I){$R_4$}
	\vdc[tensionlabel=$V_{ID}$](I)(D){$E_2$}
	%
	\resistor[intensitylabel=$i_3$,tensionlabel=$V_{HG}$](H)(G){$R_5$}
	\newSwitch[ison=true,tensionlabel=$V_{GF}$](G)(F){$S_2$}
	\wire(F)(E)
	\resistor[tensionlabel=$V_{DE}$,dipoleconvention=generator](E)(D){$R_6$}
	%
	\vdc[tensionlabel=$V_{FI}$,dipoleconvention=generator](I)(F){$E_3$}
	\newSwitch[intensitylabel=$i_4$,tensionlabel=$V_{BI}$,ison=false](B)(I){$S_1$}	
\end{pspicture}
\end{document}

введіть тут опис зображення


2

Так. Ви можете використовувати HDL для опису схеми за допомогою коду. Ви можете використовувати верифікатор, Xilinx або будь-який інший програмний продукт, або ви можете використовувати https://www.edaplayground.com/ (який працює в Інтернеті, не встановлюючи нічого на ПК ).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.