Kod üzerinden devre çizmek mümkün mü?


17

Netlist dosyaları yazmanın daha iyi bir yolu var mı? gibi bir şey:

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

DÜZENLE:

Cevapları oldukça faydalı buluyorum. Kod tarafından üretilen devreyi simüle etmenin bir yolu varsa harika olacak.


5
FWIW, örnek kodunuz bana bir netlist gibi görünüyor. Sadece birkaç parça tanımlar (muhtemelen alete her birinin kaç terminali olduğunu söyleyen bir kütüphane ile) ve daha sonra hangi terminallerin birbirine bağlı olduğunu söyler. Biraz kullandıysanız, düğümleri adlandırmak ve terminalleri diğer terminallerden ziyade düğümlere bağlamak daha kolay olabilir.
Foton

3
Birçok konu için "mümkün mü" ve "faydalı mı" arasında geniş bir uçurum vardır.
whatsisname

3
Bence HDL'ye bakıyorsunuz. Çoğunlukla dijital devreleri tanımlarken, teknik olarak bunlarla sınırlı değildirler (Bence Verilog'un onlar için bazı destekleri var). @ThePhoton tarafından belirtildiği gibi, gösterdikleriniz genellikle bir derleme olan bir netlist'e benziyor.
Maciej Piechotka

2
Bunu çizmenin en iyi yolu hakkında düşünmek zaman almasının nedeni, devreyi iyi bir şekilde anlamanız ve işlevini çizime bakan insanlar için nasıl açık hale getirmeniz gerektiğidir. Bunların hiçbiri bilgisayarların iyi olduğu şeyler değildir, bu yüzden bir bilgisayardan sizin için yapmasını istemek sorun istemektir.
Foton

1
Bu açıklamayı sadece pcb mizanpaj aracına giriş olarak kullanacağınızı düşünüyorsanız, bir insan okuyucu tarafından kullanılmasına gerek yoktur, o zaman birisini devre dışı bırakan bir kişi için dokümantasyon olarak ne kullanacaksınız daha sonra inşa edilmiş veya tasarımı değiştirmiştir. Şematik giriş kullanıyorsanız, temel olarak belgeleri yazıyorsunuz ve bunu düzen aracına girdi olarak kullanıyorsunuz. Artık düzeninizin dokümanlarla gerçekten eşleşeceğini biliyorsunuz.
Foton

Yanıtlar:


28

L'yi biliyorsanız ,kod yazarak güzel devreler çizmekiçincircuitikzkullanabilirsiniz.LATEX

enter image description here

Örnek .
Daha fazla örnek


4
Buna eklemek için - diğerleri iyi bir şematik çizmenin söylediği gibi, bazı insan sezgileri gerektirir. Bununla birlikte, çok sayıda benzer devre çiziyorsanız, laTeX ve circuitikz kullanmak, bir şablon düzeni oluşturmanıza ve onu belirli özelliklerle özelleştirmenize izin verecektir.
John

2
Sayı ve birim arasındaki eksik alan korkunç görünüyor.
Loong

@Loong İsterseniz her zaman sayılar ve birimler arasında boşluk bırakabilirsiniz. \ veya \,lateks matematik ortamında boşluk ekleyebilir
nidhin

1
@Loong Görünüşe göre bu bir yerelleştirme sorunu. Amerikalı olarak, sayılar ve birimler arasında rastgele fazladan boşluk olması her zaman tuhaf görünmektedir.
chrylis -on strike-

1
@chrylis Bu bir yerelleştirme sorunu değil, ISO 80000 belirtildi ve yalnızca kullanılmalıdır.
awjlogan

15

SKiDL'ye ( https://github.com/xesscorp/skidl ) göz atın , bu düşündüğünüz satırlar boyunca.

Edit (req'd): SKiDL, şemanıza grafik olarak girmek yerine tüm devrelerin (sadece dijital değil) prosedürel tanımlamasına izin verir. Netlist çıktısı daha sonra düzen yazılımına aktarılabilir. Ayrıca ERC denetimleri gerçekleştirir ve genişletilebilir. Bu, örneğin, bir filtre bir kez yazabileceğiniz ve ardından her seferinde çizmek yerine farklı projelerde yeniden kullanabileceğiniz anlamına gelir. Bununla birlikte gelen tüm destekle Python'da yazılmıştır.


Biraz daha bilgi eklendi.
awjlogan

Diğer Python şematik çizim seçenekleri SchemDraw ve lcapy'dir .
phoenix

13

Birçok program şematik çizebilir. Bildiğim hiçbiri iyi bir şema çizemez: En önemli bilgileri vurgulayan ve devreyi açık ve kolay anlaşılır bir şekilde düzenleyen bir şema.

Sadece bir donanım açıklama dili arıyorsanız (grafik şematik çıktı yok), VHDL ve Verilog, IC'lerde uygulanacak (dijital) devreleri tanımlamak için yaygın olarak kullanılır ve ayrıca pano düzeyinde tasarım için de kullanılabilir.


Verilog-A, analog devreleri tanımlamak ve modellemek / simüle etmek için kullanılabilir, ancak ticari olmayan simülatörlerin farkında değilim.
Şamtam

Arabağlantıları programsal olarak açıklamanın şematik olmaktan daha kolay olduğu bazı tahtalar tasarladım; Bir netlist oluşturmak için bir program kullandım ve daha sonra PCB yazılımına yükledim. Bir şematik editör bir netlist'i içe aktarabilir ve henüz "gerçek" kabloları veya açık net etiketleri çizilmemiş bağlantılar için bir ratsnest gösterebilirse, bu gibi durumlarda, en azından gerçek tellerin yapıldığı şemalar için yararlı olabilir. "hava tellerinden" daha mantıklı.
supercat

@Shamtam, Veriolog A'yı kullandım, ama sadece bir simülasyon dili olarak. Verilog A tanımından bir devreyi sentezleyebilen sistemler var mı?
Foton

@ThePhoton Farkında olduğumdan değil. "Tanım" terimini kullanmamın bu anlamda yanıltıcı olabileceğini düşünüyorum.
Şamtam

@Shamtam, bu kelime için endişelenmezdim. Ne de olsa bir donanım açıklama dilidir. Sadece uygulama yerine işlevi tanımlar.
Photon

9

Örneğiniz , blok oluşturmaya ve bloklar arasındaki bağlantı noktalarını bağlamaya dayalı simülasyon için nesne yönelimli bir dil olan modelica'ya çok benziyor .

Elektrikli bileşenler kitaplığını kullanan bir örnek ( maplesoft.com sitesinden ),

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;

Modelden bir şematik oluşturabilseniz de, normalde bu, konum ve yönlendirme bilgileriyle bileşenlere açıklama ekleyen bir GUI'de yapılır.


4

Cirkuit , basit bir metin açıklamasını devre şemasına dönüştüren bir editördür . Elektrik sembolleri için bir dizi M4 makro sağlar.

Nidhin tarafından önerilen circuitikz ile birlikte kullanılabilir . circuitikz daha modern pgf / TikZ grafik sistemini kullanır. Stackexchange topluluğunun çok aktif cirkuitikz kullanıcıları var, ancak TeX'te daha fazla çözüm var .

Kaynak: https://ece.uwaterloo.ca/~aplevich/Circuit_macros/html/quick.png

Https://ece.uwaterloo.ca/~aplevich/Circuit_macros/html/examples.html adresinden resim .


3

PSTricks , TeX kullanıcıları için başka bir kütüphanedir. Diferansiyel denklemler gibi karmaşık matematiksel hesaplamalar bile yapabilir.

\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}

resim açıklamasını buraya girin


2

Evet, kodunuzu kullanarak devrenizi tanımlamak için HDL'leri kullanabilirsiniz.Onaylayıcı, Xilinx veya diğer yazılımları kullanabilir veya https://www.edaplayground.com/ (PC'nize hiçbir şey yüklemenize gerek kalmadan çevrimiçi çalışır) kullanabilirsiniz. ).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.