有沒有一種更好的方法,而不是編寫網表文件。像這樣:
將Battery1定義為電池
將Resistor1定義為電阻
將電池1第一端子連接到電阻1第二端子
將電阻1第一端子連接到電池1第二端子
編輯:
我發現答案很有幫助。如果有一種方法可以模擬代碼產生的電路,那就太好了。
有沒有一種更好的方法,而不是編寫網表文件。像這樣:
將Battery1定義為電池
將Resistor1定義為電阻
將電池1第一端子連接到電阻1第二端子
將電阻1第一端子連接到電池1第二端子
編輯:
我發現答案很有幫助。如果有一種方法可以模擬代碼產生的電路,那就太好了。
如果您熟悉\ $ \ LaTeX \ $,則可以使用 circuitikz通過編寫代碼來繪製漂亮的電路。
查看SKiDL( https://github.com/xesscorp/skidl),這符合您的想法。
編輯(根據要求):SKiDL允許對所有電路進行程序描述(而不僅僅是數字化),而無需以圖形方式輸入原理圖。然後可以將網表輸出導入佈局軟件。它還將執行ERC檢查,並且是可擴展的。例如,這意味著您可以編寫一次過濾器,然後在不同的項目中重複使用它,而不必每次繪製。用Python編寫,並附帶所有支持。
許多程序都可以繪製原理圖。據我所知,沒有人能畫出一個好的原理圖:強調最重要的信息,並以清晰易懂的方式排列電路。
如果您只是在尋找一種硬件描述語言(沒有圖形示意圖輸出),則VHDL和Verilog被廣泛用於定義要在IC中實現的(數字)電路,也可以用於板級設計。
您的示例看起來很像 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用位置和方向信息為組件添加註釋。
Cirkuit是將簡單文本描述轉換為電路圖的編輯器。它為電子符號提供了一組M4宏。
它可以與 nidhin 建議的 circuitikz一起使用。 circuitikz使用了更現代的 pgf / TikZ圖形系統。 stackexchange社區 cirkuitikz的非常活躍的用戶,但在TeX中有更多解決方案。
圖片來自 https://ece.uwaterloo.ca/~aplevich/Circuit_macros/html/examples.html。
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>
是的。您可以使用HDL通過代碼描述電路。可以使用verilator,Xilinx或任何其他軟件,也可以使用 https://www.edaplayground.com/(其中可以在線工作而無需在PC上安裝任何東西。