---
# System prepended metadata

title: NGSPICE Project4快速入門
tags: [數位電子導論]

---

# 如何撰寫Ngspice模擬電路代碼
## 注意事項
1. 第一行一定為註解，需要注意不要將程式內容寫在第一行。
2. 由於ngspice 無法直接測元件上的電流所以需要假設節點來測量。
3. 最後一行 .end 結尾
4. \* 為註解符號

#    指令介紹
1. 使用 Batch mode 執行模擬電路
```
ngspice -b <filename> 
```
2. 架設電壓源、電流源
```
*架設電壓源
v<name> <high> <low> <dc/ac> <value>
*架設電流源
i<name> <from> <to> <dc/ac> <value>

*example(參考下圖)
v1 a 0 dc 50
i1 0 b dc 10
``` 
![image](https://hackmd.io/_uploads/BJhmdfpJA.png)

3. 架設電阻
```
*架設電阻
r<name> <high> <low> <value>

*example(參考下圖)
r1 a 0 100
``` 
![image](https://hackmd.io/_uploads/HJvJFzpy0.png)

4. 架設虛擬電壓源(似安培計)用來測量電阻電流
```
*架設虛擬電壓源
v<name> <high> <low> <dc/ac> <value>

*example(參考下圖)
vdr1 ad a dc 0
```
![image](https://hackmd.io/_uploads/rJGyif6J0.png)

5. 設置電壓、電流的變化
```
*設置電壓、電流的變化量
.dc <name> <begin> <end> <delta>

*example
.dc v1 0 50 10

*可以想像成for(int v1=0;v1<=50;v1+=10)
```

6. 輸出
```
*輸出各個節點電壓電流
.op

*輸出元件上的電壓
*使用.print 需要先設置電壓變化(.dc)
*節點對地
.print <dc/ac> v(point)
*節點對節點
.print <dc/ac> v(point1,point2)

*輸出元件上的電流
.print <dc/ac> i(v_name)

*example
.print dc v(a)
.print dc v(a,b)
.print dc i(vdr1)
```

#    範例
![image](https://hackmd.io/_uploads/BynkXm6kR.png)
**程式碼**
```
*Example

*Voltage
v1 a 0 dc 50

*Set
.dc v1 10 50 10

*Resistance
r1 ad 0 100

*SetDummy
vdr1 ad a dc 0

*Print
.print dc v(a) i(v1)
.print dc v(ad) i(vdr1)
.end
```
**輸出結果**
![image](https://hackmd.io/_uploads/Sys4XXayA.png)

##    數值換算
1.00000e+XX = 1.00000*(10^XX)
1.00000e-XX = 1.00000*(10^(-XX))

範例
1. 1.00000e+01=10
2. 1.00000e-01=0.1
