Projeto Opamp usando LTspice

Oct 22 2020

Acabei de terminar uma palestra online sobre design de IC analógico. Quero colocar em prática o que aprendi e busquei projetos que me ajudem a atingir meu objetivo. Me deparei com este projeto online

Na palestra que assisti online o parâmetro KP = Un * Cox é sempre dado. No projeto mostrado acima, há um modelo do dispositivo que pode ser usado para o projeto usando LTspice, minha pergunta é como faço para determinar o valor de KP do modelo fornecido? Obrigado!

O MODELO:

* BSIM3 models for AMI Semiconductor's C5 process
*
* Don't forget the .options scale=300nm if using drawn lengths
* and the MOSIS SUBM design rules
*
* 2<Ldrawn<500   10<Wdrawn<10000 Vdd=5V
* Note minimum L is 0.6 um while minimum W is 3 um
* Change to level=49 when using HSPICE or SmartSpice

.MODEL NMOS NMOS (                                 LEVEL   = 8
+VERSION = 3.1            TNOM    = 27             TOX     = 1.39E-8
+XJ      = 1.5E-7         NCH     = 1.7E17         VTH0    = 0.6696061
+K1      = 0.8351612      K2      = -0.0839158     K3      = 23.1023856
+K3B     = -7.6841108     W0      = 1E-8           NLX     = 1E-9
+DVT0W   = 0              DVT1W   = 0              DVT2W   = 0
+DVT0    = 2.9047241      DVT1    = 0.4302695      DVT2    = -0.134857
+U0      = 458.439679     UA      = 1E-13          UB      = 1.485499E-18
+UC      = 1.629939E-11   VSAT    = 1.643993E5     A0      = 0.6103537
+AGS     = 0.1194608      B0      = 2.674756E-6    B1      = 5E-6
+KETA    = -2.640681E-3   A1      = 8.219585E-5    A2      = 0.3564792
+RDSW    = 1.387108E3     PRWG    = 0.0299916      PRWB    = 0.0363981
+WR      = 1              WINT    = 2.472348E-7    LINT    = 3.597605E-8
+XL      = 0              XW      = 0              DWG     = -1.287163E-8
+DWB     = 5.306586E-8    VOFF    = 0              NFACTOR = 0.8365585
+CIT     = 0              CDSC    = 2.4E-4         CDSCD   = 0
+CDSCB   = 0              ETA0    = 0.0246738      ETAB    = -1.406123E-3
+DSUB    = 0.2543458      PCLM    = 2.5945188      PDIBLC1 = -0.4282336
+PDIBLC2 = 2.311743E-3    PDIBLCB = -0.0272914     DROUT   = 0.7283566
+PSCBE1  = 5.598623E8     PSCBE2  = 5.461645E-5    PVAG    = 0
+DELTA   = 0.01           RSH     = 81.8           MOBMOD  = 1
+PRT     = 8.621          UTE     = -1             KT1     = -0.2501
+KT1L    = -2.58E-9       KT2     = 0              UA1     = 5.4E-10
+UB1     = -4.8E-19       UC1     = -7.5E-11       AT      = 1E5
+WL      = 0              WLN     = 1              WW      = 0
+WWN     = 1              WWL     = 0              LL      = 0
+LLN     = 1              LW      = 0              LWN     = 1
+LWL     = 0              CAPMOD  = 2              XPART   = 0.5
+CGDO    = 2E-10          CGSO    = 2E-10          CGBO    = 1E-9
+CJ      = 4.197772E-4    PB      = 0.99           MJ      = 0.4515044
+CJSW    = 3.242724E-10   PBSW    = 0.1            MJSW    = 0.1153991
+CJSWG   = 1.64E-10       PBSWG   = 0.1            MJSWG   = 0.1153991
+CF      = 0              PVTH0   = 0.0585501      PRDSW   = 133.285505
+PK2     = -0.0299638     WKETA   = -0.0248758     LKETA   = 1.173187E-3
+AF      = 1              KF      = 0)
*
.MODEL PMOS PMOS (                                 LEVEL   = 8
+VERSION = 3.1            TNOM    = 27             TOX     = 1.39E-8
+XJ      = 1.5E-7         NCH     = 1.7E17         VTH0    = -0.9214347
+K1      = 0.5553722      K2      = 8.763328E-3    K3      = 6.3063558
+K3B     = -0.6487362     W0      = 1.280703E-8    NLX     = 2.593997E-8
+DVT0W   = 0              DVT1W   = 0              DVT2W   = 0
+DVT0    = 2.5131165      DVT1    = 0.5480536      DVT2    = -0.1186489
+U0      = 212.0166131    UA      = 2.807115E-9    UB      = 1E-21
+UC      = -5.82128E-11   VSAT    = 1.713601E5     A0      = 0.8430019
+AGS     = 0.1328608      B0      = 7.117912E-7    B1      = 5E-6
+KETA    = -3.674859E-3   A1      = 4.77502E-5     A2      = 0.3
+RDSW    = 2.837206E3     PRWG    = -0.0363908     PRWB    = -1.016722E-5
+WR      = 1              WINT    = 2.838038E-7    LINT    = 5.528807E-8
+XL      = 0              XW      = 0              DWG     = -1.606385E-8
+DWB     = 2.266386E-8    VOFF    = -0.0558512     NFACTOR = 0.9342488
+CIT     = 0              CDSC    = 2.4E-4         CDSCD   = 0
+CDSCB   = 0              ETA0    = 0.3251882      ETAB    = -0.0580325
+DSUB    = 1              PCLM    = 2.2409567      PDIBLC1 = 0.0411445
+PDIBLC2 = 3.355575E-3    PDIBLCB = -0.0551797     DROUT   = 0.2036901
+PSCBE1  = 6.44809E9      PSCBE2  = 6.300848E-10   PVAG    = 0
+DELTA   = 0.01           RSH     = 101.6          MOBMOD  = 1
+PRT     = 59.494         UTE     = -1             KT1     = -0.2942
+KT1L    = 1.68E-9        KT2     = 0              UA1     = 4.5E-9
+UB1     = -6.3E-18       UC1     = -1E-10         AT      = 1E3
+WL      = 0              WLN     = 1              WW      = 0
+WWN     = 1              WWL     = 0              LL      = 0
+LLN     = 1              LW      = 0              LWN     = 1
+LWL     = 0              CAPMOD  = 2              XPART   = 0.5
+CGDO    = 2.9E-10        CGSO    = 2.9E-10        CGBO    = 1E-9
+CJ      = 7.235528E-4    PB      = 0.9527355      MJ      = 0.4955293
+CJSW    = 2.692786E-10   PBSW    = 0.99           MJSW    = 0.2958392
+CJSWG   = 6.4E-11        PBSWG   = 0.99           MJSWG   = 0.2958392
+CF      = 0              PVTH0   = 5.98016E-3     PRDSW   = 14.8598424
+PK2     = 3.73981E-3     WKETA   = 5.292165E-3    LKETA   = -4.205905E-3 
+AF      = 1              KF      = 0)
```

Respostas

5 SteKulov Oct 22 2020 at 10:33

Normalmente, KP é explicitamente usado apenas com os modelos MOSFET mais simples, como o modelo Shichman-Hodges (ou seja, NÍVEL 1). O modelo BSIM3 (NÍVEL 8) é muito mais sofisticado e normalmente definido usando parâmetros geométricos / físicos em vez de parâmetros elétricos. Embora a ideia do KP ainda exista no BSIM3, ele é bastante modificado por muitos outros parâmetros, então raramente é usado sozinho. De qualquer forma, se você começar com a equação básica que referiu, pode expandi-la ainda mais:$$ \text{KP} = \mu_0 \cdot C_{ox}' = \mu_0 \cdot \frac{\varepsilon_{ox}}{t_{ox}} = \mu_0 \cdot \frac{\varepsilon_r \varepsilon_0}{t_{ox}} $$

Onde

\$\text{KP}\$ é o parâmetro de transcondutância,

\$\mu_0\$ é a mobilidade da superfície,

\$C_{ox}'\$ é a capacitância por unidade de área da camada de óxido,

\$\varepsilon_{ox}\$ é a permissividade do óxido,

\$t_{ox}\$ é a espessura do óxido,

\$\varepsilon_r\$ é a constante dielétrica do material de óxido, e

\$\varepsilon_0\$é a permissividade do espaço livre ( \$8.85 \times 10^{-14} \text{F/cm}\$)


Vou me concentrar apenas no NMOS aqui, e você pode fazer o PMOS por conta própria usando a mesma matemática. \$\mu_0\$já está definido no modelo como U0 = 458.439679. O mesmo vale para \$t_{ox}\$onde TOX = 1.39E-8, exceto que é especificado em metros e precisa ser convertido para centímetros desde \$\mu_0\$e \$\varepsilon_0\$são especificados em centímetros. Não sei o suficiente sobre o projeto de IC, então vou assumir SiO 2 (dióxido de silício) como o material de óxido para este exemplo, que tem uma constante dielétrica de 3.9. Usando esses números junto com a constante \$\varepsilon_0\$ definido acima, obtemos:

$$ \text{KP} = \mu_0 \cdot \frac{\varepsilon_r \varepsilon_0}{t_{ox}} = 458.439679 \frac{\text{cm}^2}{\text{V} \cdot \text{s}} \cdot \frac{3.9 \cdot (8.85 \times 10^{-14} \text{F/cm})}{(1.39 \times 10^{-6} \text{cm})} \approx 113.835 \times 10^{-6} \frac{\text{A}}{\text{V}^2} $$


A seguir estão as duas referências que usei para criar esta resposta. Eu sugiro pelo menos dar uma olhada na referência BSIM3, já que é ela que está sendo usada como base para validar este projeto via SPICE.

  • http://ngspice.sourceforge.net/external-documents/models/bsim330_manual.pdf
  • https://books.google.com/books/about/Semiconductor_Device_Modeling_with_SPICE.html?id=_QZTAAAAMAAJ

EDIT1: Esqueci de incluir as unidades e, portanto, cometi um erro no cálculo por falta de conversão das unidades. Eu adicionei as unidades e fixei o cálculo.


EDIT2: Pediram-me para entrar em detalhes sobre como extrair KP da medição de resultados de simulação usando SPICE, então adicionei essas seções extras abaixo. Lembre-se de que a premissa aqui é um tanto estranha, porque estamos usando resultados gerados a partir de um modelo NÍVEL 8 (BSIM3) para mapear de volta aos parâmetros do modelo NÍVEL 1.

A primeira coisa a saber é que existem duas configurações de teste separadas, uma vez que os MOSFETs podem ser operados nas regiões linear e de saturação. Cada configuração corresponde a cada região e o KP resultante entre as duas será ligeiramente diferente. Apresentarei os dois métodos, mas é recomendado que apenas um seja usado com base na aplicação e modo de operação desejados para o MOSFET. Para começar, as equações do modelo básico do NÍVEL 1 são mostradas abaixo.$$ \begin{align*} &\text{Linear: } &&I_{DS} = \text{KP} \frac{W}{L-2 \text{LD}} \left( V_{GS}-V_{TH}-\frac{V_{DS}}{2} \right) V_{DS}(1 + \lambda V_{DS}) \\ \\ &\text{Saturation: } &&I_{DS} = \frac{\text{KP}}{2} \frac{W}{L-2 \text{LD}} (V_{GS}-V_{TH})^2 (1 + \lambda V_{DS}) \end{align*} $$Agora, algumas simplificações podem ser feitas. Com base em como configuramos o teste de região linear, \$\frac{V_{DS}}{2}\$será insignificante para que possa ser definido como zero. \$\lambda\$é a modulação do comprimento do canal que podemos assumir como sendo zero também. Para simplificar ainda mais, precisamos definir \$\frac{W}{L-2 \text{LD}}\$a 1. LD é o parâmetro de "difusão lateral" e é basicamente um deslocamento de correção fixo aplicado a \$L\$. Se tornarmos o MOSFET longo o suficiente, o LD é insignificante. Assumindo que o LD é geralmente 1 µm ou menos, definimos L=100ue W=100u(para corresponder) e ficamos com:$$ \begin{align*} &\text{Linear: } &&I_{DS} = \text{KP} \cdot V_{DS} (V_{GS}-V_{TH}) \\ \\ &\text{Saturation: } &&I_{DS} = \frac{\text{KP}}{2} (V_{GS}-V_{TH})^2 \end{align*} $$O que isso diz para a região linear é que se varrermos \$V_{GS}\$para um \$V_{DS}\$e traçar \$I_{DS}\$, então sua inclinação dividida por \$V_{DS}\$é igual a KP. Para a região de saturação, podemos fazer algo semelhante, mas primeiro precisamos tirar a raiz quadrada de \$I_{DS}\$antes de encontrar a inclinação e resolver para KP. Matematicamente, em cada cenário:$$ \begin{align*} &\text{Linear: } &&\frac{dI_{DS}}{dV_{GS}} = \text{KP} \cdot V_{DS} \implies \text{KP} = \frac{dI_{DS}}{dV_{GS}} \cdot \frac{1}{V_{DS}} \\ \\ &\text{Saturation: } &&\frac{d\sqrt{I_{DS}}}{dV_{GS}} = \sqrt{\frac{\text{KP}}{2}} \implies \text{KP} = 2 \left( \frac{d\sqrt{I_{DS}}}{dV_{GS}} \right)^2 \end{align*} $$


As configurações de teste são mostradas abaixo. M1 é o MOSFET para o teste da região linear e M2 é para o teste da região de saturação. A única diferença entre os dois é que \$V_{DS}\$é definido para um pequeno valor fixo de 50mV no teste linear, enquanto \$V_{DS}\$está em curto com \$V_{GS}\$para o teste de saturação. Vamos varrer \$V_{GS}\$de 1mV a 5V em etapas de 1mV. [NOTA: Começar em 1mV em vez de zero evita um artefato de divisão por zero ao usar LTspice para fazer os cálculos KP.]

O primeiro enredo é o \$I_{DS}\$de M1. A ideia é usar o valor da inclinação logo após a tensão de limiar onde o gráfico parece linear pela primeira vez. Isso evita a região de inversão fraca e, ao mesmo tempo, evita erros nas regiões posteriores devido à resistência em série. Selecionei pontos em 1.0V e 1.1V e dividi esta inclinação por 50m (nosso \$V_{DS}\$) para obter: $$ \text{KP(lin)} = \frac{6.10144 \times 10^{-6}}{50 \times 10^{-3}} \approx 122.029 \times 10^{-6} \frac{\text{A}}{\text{V}^2} $$O segundo gráfico é a raiz quadrada de \$I_{DS}\$de M2. Eu escolhi os mesmos pontos de tensão de 1,0 V e 1,1 V para obter a inclinação. Esta inclinação é elevada ao quadrado e depois multiplicada por dois para obter KP:$$ \text{KP(sat)} = 2 \cdot (7.44373 \times 10^{-3})^2 \approx 110.818 \times 10^{-6} \frac{\text{A}}{\text{V}^2} $$

A última coisa que quero mencionar é que você também pode usar o recurso de matemática de forma de onda do LTspice para que ele plote KP em todos os \$V_{GS}\$. Você simplesmente precisa conectar as equações acima, conforme mostrado abaixo. O motivo pelo qual quis mostrar esses gráficos é para destacar que o KP não é constante em um MOSFET real e é um dos motivos pelos quais os modelos de MOSFET de nível superior foram desenvolvidos. Se você executou os mesmos procedimentos de extração de KP em um modelo de NÍVEL 1 em vez de em um NÍVEL 8, esses gráficos pareceriam bem diferentes.

3 Pai Oct 22 2020 at 11:39

Usei um cartão de modelo de exemplo para esta simulação. O gráfico azul fornecerá o valor kp que foi usado no cartão do modelo.

Este gráfico é uma característica de entrada do MOSFET. Reorganizando a equação Id para kp.

Espero que isso ajude para o modelo que você forneceu.

1 Paumdrdo Oct 22 2020 at 14:04

Alguém pode verificar se o resultado que tenho é um valor razoável de KP obrigado!

hoopeer Oct 25 2020 at 13:25

Além disso, este link ajudará se você considerar o parâmetro de modulação do comprimento do canal http://www.ece.tamu.edu/~spalermo/ecen474/Lab1.pdf