Diseño de Circuitos Integrados Analógicos (Full Custom) Estrategia de diseño TOP-DOWN División del sistema en bloques más simples hasta llegar a los bloques circuitales básicos • (divide y vencerás) Niveles de diseño diferenciados: Nivel Componentes del diseño Sistema Cajas negras Esquemático Dispositivos electrónicos Layout Elementos geométricos Nivel de SISTEMA: Diagrama de bloques PGA ADC Ant LNA PLL DSP 90º PGA ADC Nivel de Esquemáticos Nivel de Layout Diseño JERARQUICO A un esquemático se puede asociar un SIMBOLO (caja negra) Ese símbolo puede formar parte de otros esquemas Así, los esquemas de sistemas complejos contienen símbolos de sus bloques funcionales, que a su vez contienen símbolos de unidades más simples, hasta llegar a esquemas con sólo los dispositivos básicos (celdas primitivas). JERARQUIA de Diseño. Ejemplo Receptor LNA Filtro BP Mixer PLL PGA ADC Comparador Amplificador Operacional Núcleo Transistor Control Modo Común Condensador Condensador Interruptor Interruptor Polarización Generación de reloj Transistor Simbolo del núcleo del A. O. parámetros de los bloques funcionales no Diseño de los circuitos de los bloques funcionales Nivel de LAYOUT Dibujo del layout Rediseño Rediseño Rediseño Obtención de Nivel de ESQUEMATICO Rediseño Rediseño Nivel de SISTEMA de los bloques funcionales SIMULACION (SPICE) ¿Parámetros razonables? EXTRACCION si SIMULACION (nivel de sistema) no ¿Cumple especificaciones? Mal LVS si no ¿Cumple especificaciones? si si Bien SIMULACION (SPICE) ¿imposible o muy costoso? no no ¿Cumple especificaciones? si Flujo de Diseño TOP−DOWN FIN Ejemplo de diseño: Convertidor Analógico / Digital (Diseño a nivel de sistema) Tipo: Convertidor algorítmico Resolución: Variable (12 bits nominal) Frecuencia máxima de reloj: 1 MHz Diagrama de bloques INIT Comp. Vin +Vref Vres Bitout S&H Vin x2 Vres + − Vdac 1 +Vref 0 −Vref −Vref −Vref +Vref Implementación SC. (sólo cálculo de Vres) φ1 C2 φ2 φ2 C2 + φ1 Vin Vres C1 φ1 Vdac + φ1 C2 + C1 Vin C1 φ2 +Vref Q + Vdac −Vref Bitout Vres = 2 Vin − Vdac Q = (Vdac − Vin)C1 Vres = Vin − Q/C2 C1 Vres = Vin 1 + C 2 C1 − VDAC C 2 Vres Implementación SC incluyendo S&H φ1 φ2 C3 φ2 0 φ1 Vin 1 C1 φ2 +Vref −Vref 1 φ1 φ2 φ1 INIT φ2 C2 φ1 Vdac 0 Bitout Vres INIT Bitout MSB N−1 N−2 N−3 Simulación a nivel de sistema Efectos a considerar Mismatch entre C1 y C2 Ganancia finita en el operacional Voltajes de offset en operacional y comparador Ruido • Muestreo: Vn2 = KT /C • Equivalente en la entrada del A. O. Simulación a nivel de sistema: Código C int adc1(float vin,int nbit) { int i,o; float vdac,vres,q; vres=vin; for (i=o=0; i<nbit;i++) { o< <=1; if (vres>OFFSET1) { vdac=VREF; o++; } else vdac=-VREF; q=(vdac-vres+alea(1.4142*noisec1))*C1; vres=(vres - q/C2 + OFFSETA*(1.+C1/C2)+alea(noiseamp))/ (1.0+1.0/GAIN+1.0/GAIN*C1/C2); } return o; } Simulación a nivel de sistema: Offset en el comparador 12 0.03 10 0.02 Input Voltage DNL (LSB) 8 6 4 2 0 -0.01 -0.02 0 -2 0.01 0 512 1024 1536 2048 2560 3072 3584 4096 -0.03 2000 Code 2016 2032 2048 Code (VOF F = 10mV ) 2064 2080 2096 Rediseño: Arquitectura de 1.5 bits φ2 B1 C3 C2 φ2 0 B1 φ1 B0 ciclo2 B1 φ2 φ1 Vin 1 Vres +Vref B0 ciclo 1 B0 ciclo 3 B1 Vres B0 ciclo 4 C1 φ1 Vin φ2 φ1 INIT B1 B1 Vdac B1 B0 T2 00 −Vref 0 −Vref/4 Th − Bin 1 −Vref 0 2 +Vref B0 ciclo n−1 −Vref +Vref/4 T1 B0 ciclo n−2 01 −Vref/4 +Vref/4 10 Dn +Vref D2 D1 Resultado de la conversión D0 Corrección digital del offset: Vres +Vref Vref Vin Voff −Vref 00 −Vref 01 −Vref/4 +Vref/4 10 +Vref Simulación a nivel de sistema. Código en C int adc15(float vin,int nbit) { int i,o; float vdac,vres,q; vres=vin; for (i=o=0; i<nbit-1;i++) { o< <=1; if (vres>VREF/4.+OFFSET1) { vdac=VREF; o+=2; } else if (vres>-VREF/4.+OFFSET2){ vdac=0; o+=1; } else vdac=-VREF; q=(vdac-vres+alea(1.4142*noisec1))*C1; vres=(vres - q/C2 + OFFSETA*(1.+C1/C2)+alea(noiseamp))/ (1.0+1.0/GAIN+1.0/GAIN*C1/C2); } return o; } Simulación a nivel de sistema: Offset Operacional 128 Code 96 64 32 0 -1 -0.99 -0.98 Input voltage (VOF F = 10mV ) -0.97 -0.96 Simulación a nivel de sistema: Ganancia finita A. O. 0.3 INL (LSB) 0.2 0.1 0 -0.1 -0.2 0 512 1024 1536 2048 Code (GAIN=10000) 2560 3072 3584 4096 Simulación a nivel de sistema: Mismatch entre C1 y C2 0.6 0.4 INL (LSB) 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 512 1024 1536 2048 Code 2560 (C1=1.001 C2) 3072 3584 4096 Simulación a nivel de sistema: Ruido 4096 0 -20 -40 Amplitud (dB) Dato 3072 2048 -60 -80 -100 1024 -120 0 0 50 100 150 Muestra # 200 250 300 -140 0 50 100 150 200 250 300 350 Frecuencia (kHz) √ (C1 = C2 = 0,4pF , nin(AO) = 10nV / Hz) ->SNDR=72.5 dB 400 450 500 Simulación a nivel de sistema: Error en voltaje de referencia 6 5 DNL (LSB) 4 3 2 1 0 -1 0 512 1024 1536 2048 Code 2560 (∆Vref = 10mV ) 3072 3584 4096 Rediseño: Versión completamente diferencial INIT /INIT Vi+ φ2 C2 DAC 1.5 bits diferencial φ1 φ1 +Vref/4 −Vref/4 φ2 C3 Vref+ Vo+ S0 C1 Vref+ Vref− φ1 φ2 φ2 S0 φ1 A. O. φ1 φ2 Vi− /INIT φ2 φ2 Vref/4 T2 B1 Vref/4 T1 S2 Vi− φ2 C2 Vi+ Vo− B1 φ1 φ1 INIT Vref− C1 B1 B0 φ1 S1 S2 DAC 1.5 bits ADC 1.5 bits ADC 1.5 bits diferencial S2 C3 B0 S1 S0 B0 Obtención de parámetros de los bloques funcionales Algunos ya conocidos de los resultados de las simulaciones: Condensadores: 0.4 pF (ruido) Ganancia A. O. >10000 Otros se obtienen de datos de la tecnología CMOS: Matching condensadores de doble polisilicio mejor 1/1000 para C=0.4 pF Obtención de parámetros: Interruptores Los condensadores se cargan / descargan a través de la resistencia r ON de los interruptores. En medio ciclo de reloj se han de descargar hasta por lo menos V LSB /2 = Vref /4096 esto da: T /2 rON ≤ C ln(4096) = 150 KΩ Cuando se muestrea la entrada se puede tener distorsión debido a la variación de la resistencia del interruptor, ∆R, con el voltaje. La peor distorsión, ∆V es: ∆V = ω ∆R C r N yq ON rON V ref 1 y ∆R = 0,5 , con ω si V∆V ≤ 4096 N yq = 2π × 45 KHz obtenemos rON ≤ 4300 Ω rON ref Obtención de parámetros: A. O. Slew-Rate y Producto ganancia x Ancho de banda. φ2 Vres SR Tslew−rate Tsettling V Tslew−rate = T /4 ->SR = Tref = 8 V /µs /4 v(t) = V0 exp(−BW · t) , v(T /4) = V0/4096 ->BW = 5,3 M Hz GBW = 2 × BW = 10,6 M Hz