題:
是否可以通過代碼繪製電路?
user37421
2017-10-29 20:22:20 UTC
view on stackexchange narkive permalink

有沒有一種更好的方法,而不是編寫網表文件。像這樣:

 將Battery1定義為電池
將Resistor1定義為電阻

將電池1第一端子連接到電阻1第二端子
將電阻1第一端子連接到電池1第二端子
 

編輯:

我發現答案很有幫助。如果有一種方法可以模擬代碼產生的電路,那就太好了。

FWIW,您的示例代碼對我來說就像一個網表。它僅定義了兩個部分(可能有一個庫告訴工具每個端子有多少個端子),然後說出哪些端子相互連接。如果稍微使用一下,您甚至會發現能夠命名節點並將終端連接到節點而不是其他終端更加容易。
您是否可以編輯問題以弄清楚您的意思是人類可讀的原理圖?如果是這樣,我懷疑答案是否定的。好的示意圖的部分樂趣在於,繪圖人員以邏輯清晰的格式佈置了圖紙。
對於許多主題而言,“是否可能”和“是否有用”之間存在巨大鴻溝。
@whatsisname與手工繪製原理圖相比,編寫代碼要容易得多,因為這將浪費時間來考慮繪製最佳方法的時間。編碼很簡單。
您還可以考慮Spice,它本質上是一個編碼網表,將直接插入LTSpice之類的模擬器(免費)。
我認為您可能正在看HDL。儘管它們主要描述數字電路,但從技術上講,它們並不局限於此(我認為Verilog對它們有一些支持)。正如@ThePhoton所指出的,您所顯示的內容看起來像一個網表,通常是它們的編譯對象。
之所以花時間思考最佳的繪製方法,是因為您必須對電路有一個很好的了解,以及如何讓看圖的人清楚其功能。這些都不是計算機擅長的事情,因此,要求計算機為您完成任務會帶來麻煩。
如果您只是想將此描述用作pcb佈局工具的輸入,那麼人工閱讀器就不必使用它,那麼您將用什麼作為文檔供某人(您)在電路故障排除後使用它已建立,或稍後修改設計。如果使用原理圖條目,則實際上是在編寫文檔,並將其用作佈局工具的輸入。現在您知道您的佈局實際上將與文檔匹配。
自己寫。我43年前在Fortran中做到了這一點。
許多原理圖/捕獲程序提供了一種宏語言,您可以根據自己的需要做任何事情。EAGLE在這方面很強。
七 答案:
nidhin
2017-10-29 22:06:24 UTC
view on stackexchange narkive permalink

如果您熟悉\ $ \ LaTeX \ $,則可以使用 circuitikz通過編寫代碼來繪製漂亮的電路。

enter image description here

示例
更多示例

除此之外,正如其他人所說,繪製好的原理圖需要一些人的直覺。但是,如果您要繪製大量相似的電路,則可以使用laTeX和circuitikz來構建模板佈局並根據具體情況對其進行自定義,這是我在製作課程資料時使用的一種方法。
數字和單元之間缺少的空間看起來很糟糕。
@Loong您可以隨時在數字和單位之間放置空格。`\`或`\,`可以在乳膠數學環境中添加空間
@Loong顯然是一個本地化問題。作為美國人,在數字和單位之間隨機地留有額外的空間似乎總是很奇怪。
@chrylis這不是本地化問題,它指定了ISO 80000,應專門使用。
在LaTeX中,在數學環境中或不在數學環境中處理SI單位格式的正確方法是siunitx軟件包,該軟件包會留出空間。
awjlogan
2017-10-29 20:24:21 UTC
view on stackexchange narkive permalink

查看SKiDL( https://github.com/xesscorp/skidl),這符合您的想法。

編輯(根據要求):SKiDL允許對所有電路進行程序描述(而不僅僅是數字化),而無需以圖形方式輸入原理圖。然後可以將網表輸出導入佈局軟件。它還將執行ERC檢查,並且是可擴展的。例如,這意味著您可以編寫一次過濾器,然後在不同的項目中重複使用它,而不必每次繪製。用Python編寫,並附帶所有支持。

添加了更多信息。
其他Python邏輯示意圖繪製選項為[SchemDraw](https://cdelker.bitbucket.io/SchemDraw/)和[lcapy](http://lcapy.elec.canterbury.ac.nz/)。
The Photon
2017-10-29 20:53:56 UTC
view on stackexchange narkive permalink

許多程序都可以繪製原理圖。據我所知,沒有人能畫出一個好的原理圖:強調最重要的信息,並以清晰易懂的方式排列電路。

如果您只是在尋找一種硬件描述語言(沒有圖形示意圖輸出),則VHDL和Verilog被廣泛用於定義要在IC中實現的(數字)電路,也可以用於板級設計。

Verilog-A也可用於描述和建模/仿真模擬電路,儘管我不知道任何非商業仿真器。
我設計了一些板,用程序比用原理圖更容易描述互連。我使用了一個程序來生成網表,然後將其加載到PCB軟件中。如果原理圖編輯器可以導入網表並顯示尚未繪製“真實”導線或顯式網絡標籤的連接的最貼圖,則在這種情況下可能會有所幫助,至少對於原理圖已製成真實導線的部分而言比“空氣線”更有意義。
@Shamtam,我使用了Veriolog A,但僅將其用作模擬語言。是否有可以從Verilog A描述中合成電路的系統?
@ThePhoton不是我所知道的。我想我在這個意義上對“描述”一詞的使用可能會產生誤導。
@Shamtam,我不會擔心這個詞。畢竟,它是一種硬件“描述”語言。它只是描述功能而不是實現。
Pete Kirkham
2017-10-30 19:12:58 UTC
view on stackexchange narkive permalink

您的示例看起來很像 modelica,這是一種基於對象的語言,用於基於創建塊並在塊之間連接端口進行仿真。

使用電氣組件庫的示例(來自 maplesoft.com),

 封裝模型ChuaCircuit“ Chua's circuit,ns,V,A”
  導入Modelica.Electrical.Analog.Basic;
  導入Modelica.Electrical.Analog.Examples.Utilities;
  導入Modelica.Icons;
  擴展Icons.Example;

  基本電感L(L = 18);
  基本電阻Ro(R = 12.5e-3);
  基本導體G(G = 0.565);
  基本電容器C1(C = 10,v(start = 4));
  基本電容器C2(C = 100);
  實用程序.NonlinearResistor Nr(
    Ga(min = -1)= -0.757576,
    Gb(最小= -1)= -0.409091,
    Ve = 1);
  Basic.Ground Gnd;
方程
  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);
結束ChuaCircuit;
 

儘管您可以從模型中生成原理圖,但通常是在GUI中完成的,該GUI用位置和方向信息為組件添加註釋。

Jonas Stein
2017-10-30 22:07:48 UTC
view on stackexchange narkive permalink

Cirkuit是將簡單文本描述轉換為電路圖的編輯器。它為電子符號提供了一組M4宏

它可以與 nidhin 建議的 circuitikz一起使用。 circuitikz使用了更現代的 pgf / TikZ圖形系統。 stackexchange社區 cirkuitikz的非常活躍的用戶,但在TeX中有更多解決方案

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

圖片來自 https://ece.uwaterloo.ca/~aplevich/Circuit_macros/html/examples.html

Wissen Macht Frei
2018-11-25 18:55:26 UTC
view on stackexchange narkive permalink

PSTricks是另一個供TeX用戶使用的庫。它甚至可以進行複雜的數學計算,例如微分方程。

  \ documentclass [pstricks,border = 12pt,12pt] {獨立}
\ usepackage {pst-eucl,pst-circ}
\ psset
{
    dipolestyle =之字形,
    labelangle = 0,
    labeloffset =-。9,
    strengthlabeloffset =-。4,
    tensionstyle = pm,
    tensionoffset = .9,
    tensionlabeloffset = .9,
    %tensioncolor =紅色,
    %tensionlabelcolor =藍色,
}
 \開始{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}  span>
 

enter image description here

Shunya
2017-11-06 08:10:16 UTC
view on stackexchange narkive permalink

是的。您可以使用HDL通過代碼描述電路。可以使用verilator,Xilinx或任何其他軟件,也可以使用 https://www.edaplayground.com/(其中可以在線工作而無需在PC上安裝任何東西。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...