# 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`