---
# System prepended metadata

title: Projeto de fonte de corrente cascode com rede de polarização CMOS
tags: [Eletrônica Analógica]

---

# Projeto de fonte de corrente cascode com rede de polarização CMOS

**Aluno:** Maurício Taffarel
**Número:** 24

## Objetivos do projeto

Os objetivos deste trabalho são: 
- (i) o dimensionamento dos transistores de uma fonte cascode $M_1$ e $M_2$, ilustrados na Fig. 1, bem como dos transistores dos divisores de tensão a carga ativa CMOS, $M_3$, $M_4$, $M_5$ e $M_6$, que devem prover os potenciais a serem aplicados aos terminais de porta dos primeiros; 
- (ii) a simulação dos circuitos para aferição do desempenho.

<center>
    
![](https://i.imgur.com/GRzTbo9.png)

###### Figura 1 - Topologia do circuito
</center>

As especificações do projeto são: 

- $I_{OUT} = 240\mu A$
- $V_{OUTmáx} = 0.1V$

Os dados do projeto:

- $V_{DD} = 0.6V$
- $V_{SS} = -0.6V$
- $W_{min} = L_{min} = 0.12\mu m$

Parâmetros tecnológicos:

<center>

| $V_{T0n}$ (V) | $V_{T0p}$ (V) | $n_n$  | $n_p$  | $I_{Ssqn}$ (nA) | $I_{Ssqp}$ (nA) |
|:-------------:|:-------------:|:------:|:------:|:---------------:|:---------------:|
|    0.3618     |    -0.3554     | 1.3790 | 1.2952 |      353.38           |         49.514        |
    
</center>

## 1. Projeto da fonte cascode

A topologia da fonte cascode está representado a seguir:

<center>

![](https://i.imgur.com/Ed2gQxq.png)

###### Figura 2 - Topologia fonte cascode
</center>

De acordo com a figura $(2)$, para garantir a região de saturação para os transistores $M_1$ e $M_2$, :

$$
V_{DD}-v_{OUT}>v_{SDmax1}+v_{SDmax2}
\tag{1}
$$

No modelo **ACM**, a tensão de limiar de saturação $v_{SDmáx}$ pode ser determinado por:

$$
v_{SDmax} = \phi_{t}\left(\sqrt{i_{f}+1}+3\right)
\tag{2}
$$

Substituindo $(2)$ em $(1)$ para cada transistor canal P:

$$
v_{OUTmáx}=V_{DD}-\phi_{t}\left(\sqrt{i_{f1}+1}+\sqrt{i_{f2}+1}+6\right)
\tag{3}
$$

Através da equação $(3)$ pode-se determinar a excursão. Analogamente, para $M_2$ permanecer em saturação:

$$
v_{S2}-v_{OUT}=v_{SD2}>\phi_{t}\left(\sqrt{i_{f2}+1}+3\right)\\
v_{S2}>\phi_{t}\left(\sqrt{i_{f2}+1}+3\right)+v_{OUT}
\tag{4}
$$

A tensão $v_{S2}$ pode ser determinada também através do terminal de substrato: 
$$
v_{SB2}=v_{S2}-V_{DD}=V_{P2}+\phi_{t}\cdot f\left(i_{f2}\right)\\
v_{S2}=V_{P2}+\phi_{t}\cdot f\left(i_{f2}\right)+V_{DD}
\tag{5}
$$

Comparando as equações $(4)$, $(5)$ e utilizando a apróximação para tensão de pinchoff $V_p\cong \frac{V_{GB}-V_{T0}}{n}$ é possível determinar o valor mínimo para a tensão de porta $V_{GG}$ em $M_2$:

$$
V_{GG2}\gt n_{p}\left(v_{OUTmáx}+5\phi_{t}-\phi_{t}\ln\left(\sqrt{i_{f2}+1}-1\right)\right)-\left(n_{p}-1\right)V_{DD}+V_{T0p}
\tag{6}
$$

> O valor de tensão máximo pode ser determinado através da equação $(3)$

Do mesmo modo, para garantir $M_1$ em saturação:
$$
V_{DD}-v_{S2}=-v_{DB}=-\left(V_{P2}+\phi_{t}\cdot f\left(i_{f2}\right)\right)>\phi_{t}\left(\sqrt{i_{f1}+1}+3\right)=V_{DSsat1}\\
i_{f1}<\left(-f\left(i_{f2}\right)-\frac{V_{GG2}-V_{DD}-V_{T0p}}{\phi_{t}n_{p}}-3\right)^{2}-1
\tag{7}
$$

Com o uso da equação anterior $(7$), tomando um valor mínimo como $i_{f1}=0$, obtemos o valor de $V_{GG2máx}$:

$$
V_{GG2} < V_{DD} + V_{T0p} - n_p\phi_t(f(i_{f2})+4)
\tag{8}
$$

E para $V_{GG1}$:

$$
\frac{V_{GG1}-V_{DD}-V_{T0p}}{n_{n}}=-\phi_{t}f\left(i_{f1}\right)\\
V_{GG1} = V_{DD} + V_{T0p} - n_p\phi_{t}f\left(i_{f1}\right)
\tag{9}
$$

O procedimento pode ser resumido com o algoritmo a seguir:

<center>

[![](https://mermaid.ink/img/pako:eNpNkE1OwzAQha9ieUWlVoguswChBCQkYFMEi6aLIZ6kI_wTXDsqSnIYxJpT5GLYadPi1djve2880_LCCOQJryzUW_aS5ZqFQ-VyfessvXuy8bJhi8U1a6pqSdpdpCALLyEo2qFtQBomkL0GdXawH8GTaZ1hSTpERdZO8OYMjySVVwr253Q9_DYomRq-96TGFqQbtLvhx0R2Nn01usaAtH27fGQ1fnrUht30ByCNWrci1bH7h6f_b88hqYvj8TlXaBWQCJtoI5Jzt0WFOU9CKcB-5DzXfeB8LcDhnSBnLE9KkDucc_DOrL50wRNnPU5QRhC2qo5U_wdk2Hf9)](https://mermaid.live/edit#pako:eNpNkE1OwzAQha9ieUWlVoguswChBCQkYFMEi6aLIZ6kI_wTXDsqSnIYxJpT5GLYadPi1djve2880_LCCOQJryzUW_aS5ZqFQ-VyfessvXuy8bJhi8U1a6pqSdpdpCALLyEo2qFtQBomkL0GdXawH8GTaZ1hSTpERdZO8OYMjySVVwr253Q9_DYomRq-96TGFqQbtLvhx0R2Nn01usaAtH27fGQ1fnrUht30ByCNWrci1bH7h6f_b88hqYvj8TlXaBWQCJtoI5Jzt0WFOU9CKcB-5DzXfeB8LcDhnSBnLE9KkDucc_DOrL50wRNnPU5QRhC2qo5U_wdk2Hf9)

</center>

O script responsável por esta simulação se encontra a seguir:

```python=1
% Tensões de alimentação
VDD = 0.6;
VSS = -0.6;

% Parâmetros tecnológicos
VT0n = 0.3618;
VT0p = -0.3554;
nn = 1.3790;
np = 1.2952;
ISsqn = 353.38e-9;
ISsqp = 49.514e-9;
phit = 26e-3;

% Requisitos de projeto
Voutmax = 0.1;
Iout = 240e-6;

if2 = 36.814 # Ajuste manual

f_if2 = sqrt(if2+1)-2 + log(sqrt(if2+1)-1);

% Calculo de VGG2
Vgg2min = np*(Voutmax + 5*phit - ...
phit*log(sqrt(if2+1)-1)) - (np-1)*VDD + VT0p;
Vgg2max = VDD + VT0p - np*phit*(f_if2+4);
disp([num2str(Vgg2min),'V < Vgg2 < ',num2str(Vgg2max),'V']);
VGG2 = 0.9*Vgg2min+0.1*Vgg2max;
disp(['VGG2 escolhido: ', num2str(VGG2), 'V']);

% Calculo das correntes if
if1max = (-f_if2 - (VGG2-VDD-VT0p)/(phit*np) - 3).^2 -1
if1 = 0.9*if1max # Ajuste manual do peso

% Calculo de VGG1
VGG1 = VDD + VT0p - ...
np*phit*(sqrt(if1+1)-2 + log(sqrt(if1+1)-1))
VGG2

% Calculo das razoes de aspecto
W1_L1 = Iout./(ISsqp*if1)
W2_L2 = Iout./(ISsqp*if2)

% Calculo das dimensoes
L1=L2=0.2 # Arbitrado
L2
W1=L1*W1_L1
W2=L2*W2_L2

```

Os obtidos retornados pelo script:
```matlab
>> fonte_cascode_octave

if2 =  36.814
-0.28981V < Vgg2 < -0.085019V
VGG2 escolhido: -0.26933V
if1max =  40.904
if1 =  36.813
VGG1 =  0.049684
VGG2 = -0.26933
W1_L1 =  131.67
W2_L2 =  131.66
L1 =  0.20000
L2 =  0.20000
W1 =  26.333
W2 =  26.333
```

## 2. Simulação do cascode calculado e ajuste empírico

A simulação destes valores realizada no software LTSpice, pode ser vista a seguir:

### 2.1. Esquemático:
<center>
    
<img src="https://i.imgur.com/5QHcZsS.png" width=480>

</center>

### 2.2. Gráfico $I_{out} \times V_{out}$

<center>

<img src="https://i.imgur.com/VDxO4RZ.png" width=480>
    
</center>

---

O valor de tensão $V_{GG1}$ foi ajustado para se obter a corrente de projeto $I_{OUT} = 240\mu A$ na metade da excursão de $V_{OUT}$.

$$
V_{GG1}=0.021V
$$

<center>

![](https://i.imgur.com/vAtxbx8.png)

</center>

O ajuste foi realizado diminuindo $V_{GG1}$, pois como se trata de um transistor canal P, a diminuição em $V_{GG1}$ se reflete em um aumento em  $V_{BG1}$, aumentando o nível de inversão e consequentemente o aumento da corrente $I_D$. Assim, segue-se para a próxima etapa, os circuitos divisores de tensão.

## 3. Dimensionamento dos transistores para os divisores de tensão.

A topologia de circuitos para geração de referência de tensão utilizada, está mostrada na imagem a seguir:

<center>

![](https://i.imgur.com/0R60cPn.png)
    
###### Figura 3 - Topologia divisor de tensão

</center>

Nesta topologia, a diferença de potencial entre fonte e substrato, nos dois transistores é nula. Assim:

$$
\begin{align}
V_{Pp} = \frac{V_{GBp}-V_{T0P}}{n_p}=-\phi_t f(i_f)\tag{canal P}\\
V_{Pn} = \frac{V_{GBn}-V_{T0N}}{n_n}=\phi_t f(i_f)\tag{canal N}\\
\end{align}
\tag{10}
$$

Por inspeção da figura $(3)$, é possível determinar a diferença de potencial entre porta e substrato para cada transistor:

$$
\begin{align}
V_{GBp}= V_X - V_{DD} \tag{canal P}\\
V_{GBp}= V_X - V_{SS} \tag{canal N}\\
\end{align}
\tag{11}
$$

Combinando as equações $(10)$ e $(11)$, e dos valores de $V_X$ determinados anteriormente, calculamos $f(i_f)$, a partir disso, determinamos a inversa aproximada da função para determinar os níveis de inversão $i_f$, para então calcular as razões de aspecto através de correntes $I_D$ escolhidas.

A função inversa foi obtida realizando uma regressão logarítimica através da expressão abaixo:

$$
f(i_f)\approx A\ln\left(B(i_f)^{C}+D\right)^{E}+F
\tag{12}
$$

Os pontos escolhidos atendem a região de inversão fraca, moderada e forte, até $i_f=250$ aproximadamente: $i_f=\left[0.1,0.15,0.2,...250\right]$. A função obtida foi:

$$
f_2(i_f)\approx39.2377\ln\left(-2.71958i_f^{0.0531707}+6.60001\right)^{-5.64938}-8.49241
\tag{13}
$$

A comparação com o gráfico real $\color{red}{f(i_f)}$ e a sua aproximação $\color{green}{f_2(i_f)}$ está mostrado abaixo:

<center>
    
![](https://i.imgur.com/OVulfGr.png)

</center>

A função $f_2(i_f)$ admite inversa, deste modo:

$$
i_f\approx\left(\frac{e^{\left(\frac{f(i_f)+8.49241}{39.2377}\right)^{\frac{1}{-5.64938}}}-6.60001}{-2.71958}\right)^{\frac{1}{0.0531707}}
\tag{14}
$$

Após determinar os níveis de inversão são escolhidos correntes $I_D$ para cada divisor de tensão, de modo que seja um valor menor possível (para economia de energia) em que ainda seja possível obter $\frac{W}{L}$ dentro dos limites de fabricação.

<center>
    
[![](https://mermaid.ink/img/pako:eNpNkE1OwzAQha8ymlUrtWLvBQglIEUCNkWwqCtk4jEdkdjBsaOiJKdhzSl6MZz-iVk9zfvePGl6LJ0mFPjhVbOF51xaSNPt1jkZtuzhZbeB5fIazBubmcRMVWWslAczYzOXOD8GJveAJeiCWO6IW9AEbDvy7f7HwRQ6JM68Xt8Gz-8xVRV6c_J0srL-9eoBGte2-9-OKiAocmjoK5J1N-MRzKYbw4rrAe6Lx_-7p1Q2pEO4wJp8rZIS2E-ExLClmiSKJLXynxKlHRMXG60C3WkOzqMwqmppgSoGt_q2JYrgI52hnFV6WH2ixj9-8mpa)](https://mermaid.live/edit#pako:eNpNkE1OwzAQha8ymlUrtWLvBQglIEUCNkWwqCtk4jEdkdjBsaOiJKdhzSl6MZz-iVk9zfvePGl6LJ0mFPjhVbOF51xaSNPt1jkZtuzhZbeB5fIazBubmcRMVWWslAczYzOXOD8GJveAJeiCWO6IW9AEbDvy7f7HwRQ6JM68Xt8Gz-8xVRV6c_J0srL-9eoBGte2-9-OKiAocmjoK5J1N-MRzKYbw4rrAe6Lx_-7p1Q2pEO4wJp8rZIS2E-ExLClmiSKJLXynxKlHRMXG60C3WkOzqMwqmppgSoGt_q2JYrgI52hnFV6WH2ixj9-8mpa)
    
</center>

O script responsável por esta simulação se encontra a seguir:

```python=1
% Tensões de alimentação
VDD = 0.6;
VSS = -0.6;

% Parâmetros tecnológicos
VT0n = 0.3618;
VT0p = -0.3554;
nn = 1.3790;
np = 1.2952;
ISsqn = 353.38e-9;
ISsqp = 49.514e-9;
phit = 26e-3;

% Valor das tensoes a serem obtidas
Vx = [0.021 -0.26933];

% Calculo do nível de inversão
f_if1 = (Vx-VSS-VT0n)/(nn*phit)
f_if2 = -(Vx-VDD-VT0p)/(np*phit)

if1 = ((e.^(((f_if1+8.49241)/39.2377).^(1/-5.64938))-6.60001)/(-2.71958)).^(1/0.0531707)
if2 = ((e.^(((f_if2+8.49241)/39.2377).^(1/-5.64938))-6.60001)/(-2.71958)).^(1/0.0531707)

% Escolha do I_D
Id = [12.3e-6 6.4e-6]; # Ajustado manualmente

% Calculo das razoes de aspecto
W1_L1 = Id./(ISsqn*if1)
W2_L2 = Id./(ISsqp*if2)

% Calculo das dimensoes
L1=L2=0.20 # Arbitrado
L2
W1=L1*W1_L1
W2=L2*W2_L2
```

Os obtidos retornados pelo script:

```matlab
>> divisor_tensao_octave

f_if1 =

   7.22932  -0.86824

f_if2 =

    6.6399   15.2614

if1 =

   53.2078    1.6681

if2 =

    45.984   213.503

W1_L1 =

    0.65417   10.85686

W2_L2 =

   5.40214   0.60541

L1 =  0.20000
L2 =  0.20000
W1 =

   0.13083   2.17137

W2 =

   1.08043   0.12108
```
## 4. Simulação da rede de divisores de tensão e ajuste empírico

Com os valores determinados via script, foi realizada a simulação.

<center>

![](https://i.imgur.com/VtdFpGR.png)
    
</center>

Os valores dos potenciais de porta estão na mesma ordem de grandeza que os valores esperados.

De acordo com a imagem anterior, foi ajustado o transistor **U3**, equivalente ao **M4** da figura $(1)$, o valor de $W$ foi ajustado:

$$
W_{M4} = 1.08\mu m \rightarrow 1.52\mu m 
$$

Já na outra rede, o transistor ajustado foi o **U6**, equivalente ao **M5** da figura $(1)$:

$$
W_{M5} = 2.17\mu m \rightarrow 3.26\mu m 
$$

Para aumentar o nível potencial $V_{GG1}$, foi realizado um aumento na razão de aspecto, através do aumento do comprimento $W_{M4}$. Deste modo, ocorre uma diminuição no nível de inversão deste transistor e assim, a tensão $V_{GB}$ diminui com a diminuição de $f(i_f)$ aumentando, neste transistor canal P, a tensão de porta $V_X$.

Já no ajuste do outro circuito divisor de tensão, foi necessário diminuir o valor de $V_X$ através do aumento da razão de aspecto no transistor canal N da topologia. Este aumento da razão de aspecto, através da dimensão de $W_{M5}$ ocasiona uma diminuição na inversão dese transistor, e por consequência uma menor tensão $V_{GB}$, ocasionando assim uma diminuição no nível de tensão. 

Após os ajustes, temos finalmente as referências de tensão com os valores adequados:

<center>
    
![](https://i.imgur.com/j27Oqqz.png)

</center>

## 5. Simulação da rede completa

Por fim, a simulação da rede completa é realizada:

<center>

![](https://i.imgur.com/hjj2Mbw.png)
    
</center>

<center>

![](https://i.imgur.com/tOop7Zc.png)
    
</center>

Os resultados ficaram dentro do esperado, a rede completa fornece $240\mu A$ dentro dos limites conhecidos da carga $V_{out}<0.1V$.

## 6. Resultados do dimensionamento e das simulações 


| Parâmetro                                               |  Valor   |
| ------------------------------------------------------- |:--------:|
| $I_{OUT}$ ($\mu A$) especificada                        |   240    |
| $I_{OUT}$ ($\mu A$) calculados 2.1                      |   183    |
| $I_{OUT}$ ($\mu A$) ajustados 2.2                       |   240    |
| $I_{OUT}$ ($\mu A$) simulados 5.1                       |  239.74  |
| $i_{f1}$                                                |  36.813  |
| $i_{f2}$                                                |  36.814  |
| $W_1 (\mu m)$                                           |  26.333  |
| $L_1 (\mu m)$                                           |   0.2    |
| $W_2 (\mu m)$                                           |  26.333  |
| $W_2 (\mu m)$                                           |   0.2    |
| $V_{GG1}$ ($V$) calculado                               |  0.0497  |
| $V_{GG1}$ ($V$) ajustado 2.2                            |  0.021   |
| $V_{GG1}$ ($V$) simulado antes do ajuste do divisor 4.1 | -0.00527 |
| $V_{GG1}$ ($V$) simulado antes do ajuste do divisor 4.2 | 0.021046 |
| $V_{GG2}$ ($V$) calculado                               | -0.26933 |
| $V_{GG2}$ ($V$) ajustado 2.2                            | -0.26933 |
| $V_{GG2}$ ($V$) simulado antes do ajuste do divisor 4.1 | -0.25541 |
| $V_{GG2}$ ($V$) simulado antes do ajuste do divisor 4.2 | -0.26997 |
| $W_3 (\mu m)$ calculado                                 |   2.17   |
| $W_3 (\mu m)$ ajustado empiricamente                    |   3.26   |
| $L_3 (\mu m)$ calculado                                 |   0.2    |
| $L_3 (\mu m)$ ajustado empiricamente                    |   0.2    |
| $W_4 (\mu m)$ calculado                                 |   0.12   |
| $W_4 (\mu m)$ ajustado empiricamente                    |   0.12   |
| $L_4 (\mu m)$ calculado                                 |   0.2    |
| $L_4 (\mu m)$ ajustado empiricamente                    |   0.2    |
| $W_5 (\mu m)$ calculado                                 |   0.13   |
| $W_5 (\mu m)$ ajustado empiricamente                    |   0.13   |
| $L_5 (\mu m)$ calculado                                 |   0.2    |
| $L_5 (\mu m)$ ajustado empiricamente                    |   0.2    |
| $W_6 (\mu m)$ calculado                                 |   1.08   |
| $W_6 (\mu m)$ ajustado empiricamente                    |   1.52   |
| $L_6 (\mu m)$ calculado                                 |   0.2    |
| $L_6 (\mu m)$ ajustado empiricamente                    |   0.2    |


<!--
https://tinyurl.com/yyw7m5cf
https://www.desmos.com/calculator/vrfzmjzpi2
https://www.desmos.com/calculator/tg1g77ebaa
-->

###### tags: `Eletrônica Analógica`
