코드를 통해 회로를 그릴 수 있습니까?


17

넷리스트 파일을 작성하지 않는 것이 더 좋은 방법이 있습니까? 같은 :

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, 예제 코드는 넷리스트처럼 보입니다. 그것은 단지 몇 개의 부품을 정의하고 (어쩌면 도구가 각 터미널에 얼마나 많은 터미널을 알려주는 라이브러리를 가지고) 어떤 터미널이 서로 연결되어 있는지 알려줍니다. 조금 사용하면 노드 이름을 지정하고 터미널을 다른 터미널이 아닌 노드에 연결하는 것이 더 쉽다는 것을 알 수 있습니다.
광자

3
많은 주제에 대해 "가능한가"와 "유용한가"사이에는 넓은 차이가 있습니다.
whatsisname

3
HDL을보고 계신 것 같습니다. 그것들은 대부분 디지털 회로를 기술하지만 기술적으로 제한되지는 않습니다 (Verilog가 약간 지원한다고 생각합니다). @ThePhoton이 지적한 바와 같이, 당신이 보여준 것은 그것들이 보통 컴파일되는 넷리스트처럼 보입니다.
Maciej Piechotka

2
회로를 그리는 가장 좋은 방법에 대해 생각하는 데 시간이 걸리는 이유는 회로를 잘 이해하고 도면을 보는 사람들에게 그 기능을 명확하게하는 방법 때문입니다. 그 중 어느 것도 컴퓨터가 능숙한 것이 아니므로 컴퓨터에게 컴퓨터를 요청하면 문제가 발생합니다.
Photon

1
이 설명을 pcb 레이아웃 도구에 대한 입력으로 사용한다고 생각한다면 사람이 읽을 필요가 없습니다. 그러면 회로 문제를 해결 한 사람 (당신)을위한 문서로 무엇을 사용할 것입니까? 나중에 디자인을 만들거나 수정합니다. 회로도 항목을 사용하는 경우 본질적으로 문서를 작성하고이를 레이아웃 도구의 입력으로 사용합니다. 이제 레이아웃이 실제로 문서와 일치한다는 것을 알았습니다.
광자

답변:


28

L에 익숙하다면 ,circuitikz를사용하여 코드를 작성하여 멋진 회로를 그릴수 있습니다.LATEX

enter image description here

.
더 많은 예


4
이것에 덧붙여서-다른 사람들이 말했듯이 좋은 회로도를 그리기 위해서는 인간의 직관이 필요합니다. 그러나 비슷한 회로를 많이 그리는 경우 laTeX와 circuitikz를 사용하면 템플릿 레이아웃을 구성하고 특정 항목으로 맞춤화 할 수 있습니다. 이것은 강의 자료 제작에 사용하는 방법입니다.
John

2
숫자와 단위 사이의 공백이 끔찍해 보입니다.
Loong

@Loong 원하는 경우 숫자와 단위 사이에 공백을 둘 수 있습니다. \ 또는 \,라텍스 수학 환경에서 공간을 추가 할 수 있습니다
nidhin

1
@Loong 현지화 문제인 것 같습니다. 미국인으로서, 숫자와 단위 사이에 임의의 여분의 공간이있는 것은 항상 기괴한 것 같습니다.
chrylis

1
@chrylis 현지화 문제가 아니며 ISO 80000으로 지정되어 있으며 독점적으로 사용해야합니다.
awjlogan

15

SKiDL ( https://github.com/xesscorp/skidl )을 확인하십시오 .

편집 (필수) : SKiDL을 사용하면 회로도를 그래픽으로 입력하는 대신 디지털이 아닌 모든 회로에 대한 절차 적 설명이 가능합니다. 그런 다음 넷리스트 출력을 레이아웃 소프트웨어로 가져올 수 있습니다. 또한 ERC 검사를 수행하며 확장 가능합니다. 예를 들어 필터를 한 번 작성한 다음 매번 그리는 대신 다른 프로젝트에서 재사용 할 수 있습니다. 그와 함께 제공되는 모든 지원과 함께 파이썬으로 작성되었습니다.


좀 더 정보를 추가했습니다.
awjlogan

다른 Python 회로도 그리기 옵션은 SchemDrawlcapy 입니다.
피닉스

13

많은 프로그램이 회로도를 그릴 수 있습니다. 내가 아는 것은 좋은 회로도를 그릴 수 없습니다. 가장 중요한 정보를 강조하고 회로를 명확하고 이해하기 쉬운 방식으로 정리하는 것입니다.

하드웨어 설명 언어 (그래픽 회로도 출력 없음)를 찾고 있다면 VHDL과 Verilog는 IC에서 구현할 (디지털) 회로를 정의하는 데 널리 사용되며 보드 레벨 설계에도 사용될 수 있습니다.


Verilog-A를 사용하여 아날로그 회로를 설명하고 모델링 / 시뮬레이션 할 수도 있습니다. 비 상업용 시뮬레이터는 알지 못합니다.
Shamtam

회로도보다 프로그래밍 방식으로 상호 연결을 설명하기 쉬운 보드를 설계했습니다. 프로그램을 사용하여 넷리스트를 생성 한 다음 PCB 소프트웨어에로드했습니다. 회로도 편집기가 네트리스트를 가져 와서 아직 "실제"와이어 나 명시 적 네트 레이블이없는 연결에 대해 가장 덜 비틀 거릴 수 있다면, 그러한 경우에 적어도 실제 와이어가 만들어진 회로도 부분에 도움이 될 수 있습니다. "에어 와이어"보다 더 의미가 있습니다.
supercat

@Shamtam, Veriolog A를 사용했지만 시뮬레이션 언어로만 사용했습니다. Verilog A 설명에서 회로를 합성 할 수있는 시스템이 있습니까?
광자

@ThePhoton 잘 모르겠습니다. "설명"이라는 용어를 사용하는 것이 그런 의미에서 오해의 소지가 있다고 생각합니다.
Shamtam

@Shamtam, 나는 그 단어에 대해 걱정하지 않을 것입니다. 결국 하드웨어 설명 언어입니다. 단지 구현보다는 기능을 설명합니다.
광자

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;

모델에서 회로도를 생성 할 수 있지만 일반적으로 위치 및 방향 정보로 구성 요소에 주석을 추가하는 GUI에서 수행됩니다.


4

Cirkuit간단한 텍스트 설명 을 회로도 로 변환하는 편집기 입니다. 전기 기호 용 M4 매크로 세트를 제공합니다 .

nidhin 이 제안한 circuitikz 와 함께 사용할 수 있습니다 . circuitikz는보다 현대적인 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을 사용하여 코드를 통해 회로를 설명 할 수 있습니다 .Verilator, Xilinx 또는 기타 소프트웨어를 사용하거나 https://www.edaplayground.com/(PC에 아무것도 설치하지 않아도 온라인으로 작동)을 사용할 수 있습니다 ).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.