Nội dung các file mô phỏng

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Thiết kế bộ chuyển đổi số - tương tự 8 bít sử dụng công nghệ bán dẫn CMOS (Trang 151)

Trong quá trình thiết kế mạch DAC, các mạch điện đều đƣợc mơ phỏng bằng chƣơng trình mơ phỏng HSPICE [5], một phiên bản thƣơng mại của chƣơng trình mơ phỏng mạch SPICE [4]. Vì vậy trƣớc khi trình bày nội dung các file mơ phỏng mạch điện, phần này sẽ giới thiệu vắn tắt chƣơng trình mơ phỏng mạch SPICE và cấu trúc của file mô phỏng.

SPICE (Simulation Program with Integrated Circuit Emphasis) là một chƣơng trình mơ phỏng mạch mục đích chung (general-purpose circuit-simulation program). Nó cung cấp một số loại phân tích mạch nhƣ là phân tích DC phi tuyến (nonlinear DC analysis), phân tích transient phi tuyến (nonlinear transient analysis) và phân tích AC tuyến tính (linear AC analysis). Các mạch điện có thể chứa điện trở, tụ điện, cuộn cảm, cuộn cảm tƣơng hỗ (mutual inductor), nguồn dòng và nguồn áp độc lập (independent voltage and current source), đƣờng truyền (transmission line), và các thiết bị bán dẫn nhƣ điốt (diode), transistor lƣỡng cực (bipolar junction transistor, BJT), các transistor hiệu ứng trƣờng nhƣ JFET (Junction Field Effect Transistor), MOSFET (Metal-Oxide- Semiconductor Field Effect Transistor) và MESFET (Metal-Semiconductor FET). Phần phân tích DC của chƣơng trình mơ phỏng sẽ tính tốn điểm phân cực (bias point) trong đó các tụ đƣợc hở mạch hay khơng kết nối (unconnected) và các cuộn cảm đƣợc ngắn mạch (short-circuited). SPICE sử dụng phƣơng pháp lặp để giải các phƣơng trình mạng phi tuyến (nonlinear network equation) của mạch điện, tính phi tuyến chủ yếu là do đặc tính dịng-áp (I-V) phi tuyến của các thiết bị bán dẫn gây ra.

Chế độ phân tích AC tính tốn giá trị phức (complex value) của các điện áp nút (node voltage) của mạch điện tuyến tính nhƣ là một hàm của tần số của một tín hiệu sin đƣợc cấp vào đầu vào. Đối với các mạch điện phi tuyến (mạch điện chứa phần tử phi tuyến nhƣ điốt, transistor,…), loại phân tích này yêu cầu giả định tín hiệu nhỏ (small-signal assumption), nghĩa là biên độ của nguồn kích thích (excitation source) đƣợc cho là nhỏ, so sánh đƣợc với điện áp nhiệt (thermal voltage, Vth = kT/q = 25,8mV ở 27oC). Chỉ với sự giả định này, mạch điện phi tuyến có thể thay thế bằng mạch tuyến tính tƣơng đƣơng quanh điểm phân cực một chiều.

Chế độ phân tích transient tính dạng sóng điện áp tại mỗi nút của mạch nhƣ một hàm của thời gian. Đây là một phân tích tín hiệu lớn (biên độ tín hiệu vào khơng bị hạn chế). Vì thế đặc tính phi tuyến của các thiết bị bán dẫn đƣợc tính đến trong loại phân tích mạch này.

Trƣớc khi chạy chƣơng trình SPICE để mơ phỏng, ngƣời sử dụng phải tạo ra một file văn bản (sử dụng kí tự theo mã ASCII) chứa hai loại thông tin: thông tin miêu tả mạch điện và các yêu cầu phân tích (analysis request). File này đƣợc gọi là file đầu vào SPICE (SPICE input file) (ở đây ta gọi là file mơ phỏng). Nó ln bắt đầu bằng một dòng tiêu đề (title statement) và kết thúc bằng dòng .END. Cấu trúc chung của file đầu vào SPICE là nhƣ sau:

của file mô phỏng này là tìm điện áp ngƣỡng logic của mạch logic_in.

Logic_in circuit simulation

* Purpose: Find logic threshold voltages of Logic_in cicruit .option cshunt=5e-14

.option gshunt=5e-14 .option method=gear

.lib "\WORK\MODELS\U06_REV4.LIB" MOS_tt .include "E:\ch_proj\dw\logic_in.NET" V_V V G pwl(0 0 1u 3) V_G G 0 0 V_IN IN G pwl(0 0 1m 3 2m 0) .temp 25 .tran 1u 2m * PROBE OUTPUTs: .probe v(in) v(out) .END

Giải thích nội dung file mơ phỏng:

- Dịng đầu tiên " Logic_in circuit simulation " chính là dịng tiêu đề, nội dung dòng tiêu đề thƣờng chứa tên mạch điện đƣợc mô phỏng. Ở đây là mạch Logic_in.

- Dòng tiếp theo "* Purpose: Find logic threshold voltages of Logic_in cicruit" là một dịng nhận xét (comment statement), nó bắt đầu bằng kí tự *

- Ba dòng tiếp theo bắt đầu bằng .option là các lệnh thiết lập các giá trị option của chƣơng trình SPICE, các option này giúp chƣơng trình mơ phỏng tránh gặp vấn đề khơng hội tụ (nonconvergence) khi chạy mơ phỏng.

- Dịng tiếp theo bắt đầu với .lib [5] là lệnh nạp file thƣ viện (library file). File

transistor MOS, điện trở mạch tích hợp, tụ điện mạch tích hợp, …). Những thông tin này do nhà máy sản xuất bán dẫn cung cấp.

- Dòng tiếp theo bắt đầu bằng .include, đây là lệnh nạp file mô tả mạch của mạch điện cần mơ phỏng. Trong ví dụ này là file "logic_in.NET". File này đƣợc tạo bởi chƣơng trình vẽ mạch điện DesignWork. Nội dung của file này nhƣ sau:

** Subcircuits section ** .SUBCKT AINV V G A Z

XM1 Z A V V MP L=0.7 W=2.7 M=1 GEO=1 XM2 Z A G G MN L=0.6 W=1.4 M=1 GEO=1 .ENDS AINV

** Top level circuit ** X1 V G SIG3985 OUT AINV X2 V G OUT SIG4014 AINV

XM1 SIG3962 IN G G MNI L=0.6 W=12 M=1 GEO=1 XM2 SIG3985 IN SIG3962 G MNI L=0.6 W=60 M=1 GEO=1 XM3 V SIG3985 SIG3962 G MNI L=0.6 W=2 M=1 GEO=1 XM4 SIG3985 IN SIG3983 V MP L=0.7 W=20 M=1 GEO=1 XM5 SIG3983 IN V V MP L=0.7 W=4 M=1 GEO=1

XM6 G SIG3985 SIG3983 V MP L=0.7 W=2 M=1 GEO=1

- Ba dòng tiếp theo là ba mô tả phần tử (element statement) nguồn áp đặt vào mạch.

- Dịng tiếp theo là dịng tồn cục (global statement) .temp, dòng này cho phép thiết lập nhiệt độ mạch đƣợc mơ phỏng, trong ví dụ này là 25o

C.

- Dòng tiếp theo là một dòng điều khiển (control statement) chỉ định loại phân tích sử dụng cho mơ phỏng là phân tích transient.

- Tiếp theo là một dịng nhận xét

- Dòng tiếp theo là dòng điều khiển .probe, dòng điều khiển này đƣợc sử dụng để chỉ định những kết quả mô phỏng cần đƣợc lƣu trữ ở file kết quả mơ phỏng. Trong ví dụ này đó là điện áp của nút in và nút out của mạch logic_in

- Cuối cùng là dòng kết thúc .END

Sau đây là nội dung một số file mô phỏng khác đƣợc sử dụng trong quá trình thiết kế mạch DAC:

- Nội dung file mơ phỏng đặc tính chuyển mạch của mạch logic_in:

************ logic_in circuit simulation ************

*Purpose: Simulation switching characteristic of logic_in circuit .option cshunt=5e-14

.option gshunt=5e-14 .option method=gear .option post=2

.lib "\WORK\MODELS\U06_REV4.LIB" MOS_tt .lib "\WORK\MODELS\U06_REV4.LIB" RES_tt

.temp 25 .tran 1n 4u

* PROBE OUTPUTs: .probe v(in) v(out) .END

- Nội dung file mô phỏng hoạt động của DFF1:

************ DFF1 simulation ************ .option cshunt=5e-14

.option gshunt=5e-14 .option method=gear .option post=2

.lib "\WORK\MODELS\U06_REV4.LIB" MOS_tt .lib "\WORK\MODELS\U06_REV4.LIB" RES_tt .lib "\WORK\MODELS\U06_REV4.LIB" CAP_tt .include "E:\ch_proj\dw\DFF1.NET"

.param vdd=3.6

V_V V G pwl(0 0 10n vdd) V_G G 0 0

V_D D G pulse(vdd 0 0 10n 10n 4u 8u)

V_CLK CLK G pulse(vdd 0 0 10n 10n 16u 32u) $'Tclk=4Td .temp 25

.tran 0.1u 64u

* SEE OUTPUT (default HSPICE save all voltage of nodes in top circuit) * So don't need use .probe statement here

.END

- Nội dung file mô phỏng hoạt động của DFF2:

************ DFF2 simulation ************ .option cshunt=5e-14

.option gshunt=5e-14 .option method=gear .option post=2

.lib "\WORK\MODELS\U06_REV4.LIB" MOS_tt .lib "\WORK\MODELS\U06_REV4.LIB" RES_tt .lib "\WORK\MODELS\U06_REV4.LIB" CAP_tt .include "E:\ch_proj\dw\DFF.NET"

.param vdd=3.6

V_V V G pwl(0 0 10n vdd) V_G G 0 0

V_D D G pulse(vdd 0 0 10n 10n 4u 8u)

V_CLK CLK G pulse(vdd 0 0 10n 10n 16u 32u) $'Tclk=4Td V_nCLR nCLR G pwl(0 0 64u 0 64.01u vdd)

.temp 25

.tran 0.1u 128u * SEE OUTPUT .END

- Nội dung file mô phỏng hoạt động của khối Logic Control:

************ Control Logic simulation ************ .option cshunt=5e-14

.option gshunt=5e-14 .option method=gear .option post=2

.lib "\WORK\MODELS\U06_REV4.LIB" MOS_tt .lib "\WORK\MODELS\U06_REV4.LIB" RES_tt .lib "\WORK\MODELS\U06_REV4.LIB" CAP_tt

.include "E:\ch_proj\dw\for_sim\control_logic_sim.NET" .param vdd=3.6

V_V V G pwl(0 0 10n vdd) V_G G 0 0

V_WR WR G pulse(vdd 0 0 10n 10n 4u 8u)

V_nCLR nCLR G pulse(vdd 0 0 10n 10n 16u 32u) $'Tclk=4Td V_CS CS G pwl(0 0 64u 0 64.01u vdd)

.temp 25

************ Thermometer encoder simulation ************ .option cshunt=5e-14

.option gshunt=5e-14 .option method=gear .option post=2

.lib "\WORK\MODELS\U06_REV4.LIB" MOS_tt .lib "\WORK\MODELS\U06_REV4.LIB" RES_tt .lib "\WORK\MODELS\U06_REV4.LIB" CAP_tt

.include "E:\ch_proj\dw\thermometer_encoder_sim.NET" .param vdd=5

V_V V G pwl(0 0 1u vdd) V_G G 0 0

V_b0 b0 G pulse(vdd 0 0 10n 10n 5u 10u) V_b1 b1G pulse(vdd 0 0 10n 10n 10u 20u) V_b2 b2 G pulse(vdd 0 0 10n 10n 20u 40u) V_b3 b3 G pulse(vdd 0 0 10n 10n 40u 80u) .temp 25

.tran 0.1u 80u * SEE OUTPUT: .END

- Nội dung file mơ phỏng sự phụ thuộc của dịng IQ theo điện áp nguồn của khối tạo dòng phân cực:

************I BIAS circuit simulation ************ .option cshunt=5e-14

.option gshunt=5e-14 .option method=gear .option post=2

.lib "\WORK\MODELS\U06_REV4.LIB" MOS_tt .lib "\WORK\MODELS\U06_REV4.LIB" RES_tt .lib "\WORK\MODELS\U06_REV4.LIB" CAP_tt

.include "E:\ch_proj\dw\for_sim\ibias_sim.NET" V_V V G 0 V_G G 0 0 V_ON ON V 0 .temp 25 .DC V_V 0 5 1m * PROBE OUTPUTs:

*Display drain current of all MOS .probe i1(x1.xm*.m1)

.END

- Nội dung file mơ phỏng vịng hở của mạch tạo điện áp phân cực:

************ VBIAS circuit simulation ************ * Purpose: Phase margin of VBIAS circuit

.option cshunt=5e-14 .option gshunt=5e-14 .option method=gear .option post=2

.lib "\WORK\MODELS\U06_REV4.LIB" MOS_tt .lib "\WORK\MODELS\U06_REV4.LIB" RES_tt .lib "\WORK\MODELS\U06_REV4.LIB" CAP_tt .include "E:\ch_proj\dw\for_sim\VBIAS_sim.NET" V_V V G 3 V_G G 0 0 V_ON ON V 0 V_VREF VREF G 1 I_IPU2U V IPU2U 2u R_AC FBI FB 0 ac=1g R_DC FBI TNT 1g ac=0 VTEST TNT G 0 ac=1 .temp 25

.AC DEC 30 1 1000meg * PROBE OUTPUTs:

.probe vdb(fbi) vdb(fb) vp(fb) .END

.lib "\WORK\MODELS\U06_REV4.LIB" RES_tt .lib "\WORK\MODELS\U06_REV4.LIB" CAP_tt

.include "E:\ch_proj\dw\for_sim\OAMP_openloop_sim.NET" V_VA VA G 5.5

V_G G 0 0 V_GA GA G 0

V_nPDIN nPDIN VA 0

V_REFIN REFIN G 2.5 $'worst case for phase margin I_IPD10U IPD10U G 10U

*Vout=VREF

I_SRC VA N 159.2u $' current from current sources, n=128--> Vout=VREF C_OUT OUT G 100p

RAC NI N 0 ac=1g RDC NI TNT 1g ac=0 VTEST TNT G 0 ac=1 .temp 25

.OP $ to check operating point .AC DEC 20 1m 50meg

* PROBE OUTPUTs:

.option probe $ to limit output .probe vdb(NI) vdb(N) vp(N) .END

- Nội dung file mô phỏng điện áp ra tương tự theo từ mã số của chip DAC ở VDD=3,3V,VREF=VDD/2:

************ DAC top simulation ************ *NOTE:

.option cshunt=5e-14 .option gshunt=5e-14 .option method=gear

.option post=2

.lib "\WORK\MODELS\U06_REV4.LIB" MOS_tt .lib "\WORK\MODELS\U06_REV4.LIB" RES_tt .lib "\WORK\MODELS\U06_REV4.LIB" CAP_tt .include "E:\ch_proj\dw\dac8bits_pinout.NET" .param VSUP=3.3

V_VDD VDD G pwl(0 0 1u 3.3) V_REFIN REFIN G pwl(0 0 1u 1.65) V_nPD nPD G pwl(0 0 5u 0 5.1u VSUP)

V_nWR nWR G pulse(VSUP 0 101u 10n 10n 1u 20u) V_G G 0 0

V_GA GA G 0 V_GD GD G 0

V_nCLR nCLR VDD 0 V_nCS nCS G 0

V_D0 D0 G pulse(VSUP 0 100u 10n 10n 20u 40u) V_D1 D1 G pulse(VSUP 0 100u 10n 10n 40u 80u) V_D2 D2 G pulse(VSUP 0 100u 10n 10n 80u 160u) V_D3 D3 G pulse(VSUP 0 100u 10n 10n 160u 320u) V_D4 D4 G pulse(VSUP 0 100u 10n 10n 320u 640u) V_D5 D5 G pulse(VSUP 0 100u 10n 10n 640u 1.28m) V_D6 D6 G pulse(VSUP 0 100u 10n 10n 1.28m 2.56m) V_D7 D7 G pulse(VSUP 0 100u 10n 10n 2.56m 5.12m) C_OUT OUT G 100p R_OUT OUT G 10k .temp 25 .tran 0.01u 5.4m * PROBE OUTPUTs: .END

- Nội dung file mô phỏng thời gian thiết lập của điện áp ra tương tự của chip DAC ở VDD = 2,7V:

************ DAC top simulation ************ .option cshunt=5e-14

.option gshunt=5e-14 .option method=gear .option post=2

.lib "\WORK\MODELS\U06_REV4.LIB" MOS_tt .lib "\WORK\MODELS\U06_REV4.LIB" RES_tt .lib "\WORK\MODELS\U06_REV4.LIB" CAP_tt

V_GD GD G 0

V_nCLR nCLR G pwl(0 0 5u 0 5.1u VSUP) V_nCS nCS G 0

V_nWR nWR G pwl(0 0 1u VSUP 50u VSUP 50.1u 0 55u 0 55.1u VSUP) V_nPD nPD VDD 0 V_D0 D0 VDD 0 V_D1 D1 VDD 0 V_D2 D2 VDD 0 V_D3 D3 VDD 0 V_D4 D4 VDD 0 V_D5 D5 VDD 0 V_D6 D6 VDD 0 V_D7 D7 VDD 0

V_REFIN REFIN G pwl(0 0 1u VREF) C_OUT OUT G 100p

R_OUT OUT G 10k .temp 25

.tran 0.1u 200u

* PROBE OUTPUTs:

.alter $ change temperature to -40oC .temp -40

.alter $ change temperature to 105oC .temp 105

.END

- Nội dung file mô phỏng ảnh hưởng của điện áp nguồn đến điện áp ra tương tự của chip DAC ở VDD = 3,3V:

************ DAC top simulation ************ .option cshunt=5e-14

.option gshunt=5e-14 .option method=gear .option post=2

.lib "\WORK\MODELS\U06_REV4.LIB" MOS_tt .lib "\WORK\MODELS\U06_REV4.LIB" BIP_tt .lib "\WORK\MODELS\U06_REV4.LIB" RES_tt .lib "\WORK\MODELS\U06_REV4.LIB" CAP_tt .lib "\WORK\MODELS\U06_REV4.LIB" DIO .include "E:\ch_proj\dw\dac8bits_pinout.NET" .param VSUP=3.3 VREF=1.65

V_VDD VDD G pwl(0 0 1u 2.97 50u 2.97 50.1u 3.63 80u 3.63 80.1u 3.3) V_G G 0 0

V_GA GA G 0 V_GD GD G 0

V_nCLR nCLR G pwl(0 0 5u 0 5.1u VSUP) V_nCS nCS G 0

V_nWR nWR G pwl(0 0 1u VSUP 10u VSUP 10.1u 0 15u 0 15.1u VSUP) V_nPD nPD VDD 0 *Vout=VREF V_D0 D0 G 0 V_D1 D1 G 0 V_D2 D2 G 0 V_D3 D3 G 0 V_D4 D4 G 0 V_D5 D5 G 0 V_D6 D6 G 0 V_D7 D7 VDD 0

V_REFIN REFIN G pwl(0 0 1u VREF) C_OUT OUT G 100p

R_OUT OUT G 10k .temp 25

.tran 0.01u 100u * PROBE OUTPUTs: .END

- Nội dung file mơ phỏng dịng tiêu thụ của chip DAC ở VDD = 3,3V:

************ DAC top simulation ************ .option cshunt=5e-14

.include "E:\ch_proj\dw\dac8bits_pinout.NET" .param VSUP=3.3 VREF=1.65

V_VDD VDD G pwl(0 0 1u VSUP) V_G G 0 0 V_GA GA G 0 V_GD GD G 0 V_nCLR nCLR VDD 0 V_nCS nCS G 0

V_nWR nWR G pwl(0 0 1u VSUP 10u VSUP 10.1u 0 15u 0 15.1u VSUP) V_nPD nPD G pwl(0 0 5u 0 5.1u VSUP) V_D0 D0 G 0 V_D1 D1 G 0 V_D2 D2 G 0 V_D3 D3 G 0 V_D4 D4 G 0 V_D5 D5 G 0 V_D6 D6 G 0 V_D7 D7 VDD 0

V_REFIN REFIN G pwl(0 0 1u VREF) C_OUT OUT G 100p

.temp 25 .tran 0.1u 50u

* PROBE OUTPUTs: .probe i(V_VDD) .alter $2 .temp -40 .alter $3 .temp 105 .END

- Nội dung file mô phỏng chế độ power-down của chip DAC:

************ DAC top simulation ************ .option cshunt=5e-14

.option gshunt=5e-14 .option method=gear .option post=2

.lib "\WORK\MODELS\U06_REV4.LIB" MOS_tt .lib "\WORK\MODELS\U06_REV4.LIB" RES_tt .lib "\WORK\MODELS\U06_REV4.LIB" CAP_tt .include "E:\ch_proj\dw\dac8bits_pinout.NET" .param VSUP=5.5 VREF=2.75

V_VDD VDD G pwl(0 0 1u VSUP) V_G G 0 0 V_GA GA G 0 V_GD GD G 0 V_nCLR nCLR VDD 0 V_nCS nCS G 0

V_nWR nWR G pwl(0 0 1u VSUP 10u VSUP 10.1u 0 15u 0 15.1u VSUP) V_nPD nPD G 0 $shutdown condition V_D0 D0 G 0 V_D1 D1 G 0 V_D2 D2 G 0 V_D3 D3 G 0 V_D4 D4 G 0 V_D5 D5 G 0 V_D6 D6 G 0 V_D7 D7 VDD 0

V_REFIN REFIN G pwl(0 0 1u VREF) C_OUT OUT G 100p

.temp 25 .tran 0.1u 50u

* PROBE OUTPUTs: .probe i(V_VDD) .alter $2

.temp 105 .END

.lib "\WORK\MODELS\U06_REV4.LIB" CAP_tt .include "E:\ch_proj\dw\dac8bits_pinout.NET" .param VSUP=5.5 VREF=2.75

V_VDD VDD G pwl(0 0 1u VSUP) V_G G 0 0 V_GA GA G 0 V_GD GD G 0 V_nCLR nCLR VDD 0 V_nCS nCS G 0

V_nWR nWR G pwl(0 0 1u VSUP 10u VSUP 10.1u 0 15u 0 15.1u VSUP) V_nPD nPD G pwl(0 0 50u 0 50.1u VSUP) $shutdown condition

V_D0 D0 G 0 V_D1 D1 G 0 V_D2 D2 G 0 V_D3 D3 G 0 V_D4 D4 G 0 V_D5 D5 G 0 V_D6 D6 G 0 V_D7 D7 VDD 0

V_REFIN REFIN G pwl(0 0 1u VREF) C_OUT OUT G 100p

R_OUT OUT G 10k .temp 25

.tran 0.01u 100u * PROBE OUTPUTs: .probe i(V_VDD) .END

- Nội dung file mơ phỏng đặc tính định thời của DAC:

************ DAC top simulation ************ *NOTE:

.option gshunt=5e-14 .option method=gear .option post=2

.lib "\WORK\MODELS\U06_REV4.LIB" MOS_tt .lib "\WORK\MODELS\U06_REV4.LIB" RES_tt .lib "\WORK\MODELS\U06_REV4.LIB" CAP_tt

.include "E:\ch_proj\dw\for_sim\dac8bits_digitalpart_sim_2.NET" .param vdd=2.7 V_VV VV G pwl(0 0 1n vdd) V_G G 0 0 V_GD GD G 0 V_D0 D0 G pwl(0 0 10n 0 10.1n vdd) V_D1 D1 G 0 V_D2 D2 G 0 V_D3 D3 G 0 V_D4 D4 G 0 V_D5 D5 G 0 V_D6 D6 G 0 V_D7 D7 G 0 V_nPD nPD G 0 V_nCS nCS G 0 V_nWR nWR G pulse(vdd 0 0 0.1n 0.1n 1u 2u) V_nCLR nCLR G pwl(0 0 4u 0 4000.1n vdd 6u vdd 6000.1n 0) .temp 25 .tran 1n 8u * SEE OUTPUT: .END

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Thiết kế bộ chuyển đổi số - tương tự 8 bít sử dụng công nghệ bán dẫn CMOS (Trang 151)

Tải bản đầy đủ (PDF)

(165 trang)