¿Cómo se diseña un búfer CMOS con exactamente el mismo retraso de un inversor CMOS?

Todo el mundo sabe que un inversor CMOS es simplemente un PMOS conectado a un NMOS. Hay situaciones en el diseño asíncrono en las que necesitamos compensar el retraso de propagación del inversor en una señal paralela que se ejecuta al lado de la otra señal. En ese caso, puedo ver que los diseñadores agregan un búfer en los esquemas de nivel de puerta.

Pero necesito implementar ese búfer por mí mismo usando bibliotecas de celdas CMOS y me parece que el enfoque más racional es simplemente poner dos inversores en serie que invierten la señal dos veces, por lo tanto, actúan como un búfer. Pero me parece que el retraso de propagación también se duplicará.

¿Cómo se puede tener un búfer con EXACTAMENTE el mismo retraso de propagación de un inversor?

¿No puede simplemente alimentar sus señales invertidas y no invertidas a los flip flops D (DFF)? Las salidas de los flip-flop deben estar bastante sincronizadas. O tal vez use una biblioteca de celdas DFF con salidas complementarias. Nunca he diseñado un chip. Pero si necesitara sincronizar dos señales en un FPGA, eso es lo que haría.
No hay reloj en los circuitos asíncronos.
Oh, veo que dijiste diseño asincrónico. Bueno, déjame preguntarte esto: ¿De cuánto retraso estamos hablando? ¿Cuál es el retraso del inversor de dos transistores, cuando se implementa dentro de un IC? ¿No son picosegundos?
¿Se pueden utilizar, por ejemplo, 3 inversores para la ruta inversora y 4 para la ruta no inversora? ¿Puedes cargar algunos de ellos con más carga capacitiva para ralentizarlos? ¿O usar FET de dimensión no mínima para algunos y no para otros?
@mkeith: ¡ay! ¡usted me hizo una pregunta que realmente me ayudó a obtener la respuesta correcta! La respuesta a su pregunta es que depende de la longitud y el ancho del transistor. Pero luego me doy cuenta de que puedo ver una solución: elija transistores pequeños para un búfer y uno más grande para un solo inversor. En ese caso, el retardo de propagación será el mismo.
@Ehsan, sería muy útil si escribiera su respuesta en algún momento y respondiera su propia pregunta aquí. Eso es perfectamente legal y deseable, y hará que el sitio sea mejor para otras personas que vengan más tarde. No tienes que revelar ningún detalle de propiedad, solo un poco más para ayudar a la siguiente persona.
Precaución: obtener exactamente el mismo retardo mediante el dimensionamiento es más difícil de lo que parece. Los retrasos de subida y bajada son diferentes. El retraso depende de la temperatura y la carga de salida. Esta es la razón por la que el diseño asíncrono tiende a utilizar diferentes estructuras como el elemento C de Muller.

Respuestas (3)

Una solución común es tener dos caminos como se muestra en la figura a continuación. La primera ruta es una cadena de inversores para amortiguar la señal, o podría ser un solo inversor si la carga es baja. La segunda ruta es casi idéntica a la primera, pero un inversor se reemplaza por una estructura similar a una puerta de transmisión.

El uso de un simulador debería ser posible para igualar los retrasos.

(Tenga en cuenta que el volumen debe estar vinculado a tierra y vdd para NMOS y PMOS, respectivamente. No está dibujado correctamente).

esquemático

simular este circuito : esquema creado con CircuitLab

Si es necesario jugar con las características del dispositivo para que los retrasos coincidan exactamente, ¿es posible simplemente construir un inversor realmente lento para que coincida con el par superior?
Por supuesto, hay diferentes maneras de lograr el mismo resultado. Escalar un inversor también podría funcionar.
Simulé el circuito anterior, todavía hay un desajuste de aproximadamente 85ps. Medido al 50% del nivel de señal.

Yo sugeriría una exclusiva-o puerta. Si vincula una entrada alta, tiene un inversor. Si vincula una entrada baja, tiene un búfer. El tiempo de propagación debe ser el mismo.

No sé lo suficiente sobre las entrañas para saber si la respuesta es correcta, ¡pero +1 por la idea!
No CMOS, pero el buen libro de datos TTL tiene dos tablas de retrasos de propagación (Tplh, Tphl), una para "otra entrada alta", la otra para "otra entrada baja". Los valores difieren entre un 20 y un 30 %, por lo que, al menos en TTL, no son exactamente iguales. Por lo tanto, use con precaución.
Esta idea es genial, pero es ineficiente debido al hecho de que el xor usa 8 transistores. La respuesta de @Mario es en realidad la misma que tu respuesta. Creo que la forma más eficiente es escalar el inversor a nivel de transistor.

Un enfoque es generar señales tanto amortiguadas como invertidas a través de la misma etapa, y existen dos enfoques analógicos clásicos para el problema.

No los traduciré a CMOS, ya que no tengo experiencia en el nivel de biblioteca celular o por debajo de él. Pueden requerir etapas combinadas para la conversión del nivel de voltaje antes o después de la etapa misma.

El primero es el divisor de fase clásico: basado en un amplificador de fuente común, su ganancia es de aproximadamente -R1/R2, o -1 con resistencias de igual valor. (De lo contrario, los valores de los componentes no tienen sentido). En esta forma, claramente no es CMOS, aunque las cargas activas combinadas sustituirían a las resistencias. Un inconveniente es que su oscilación máxima de voltaje es solo la mitad del riel de suministro y el nivel de CC en cada salida es diferente.

esquemático

simular este circuito : esquema creado con CircuitLab

El segundo es el par de cola larga, que dirige la corriente de una pata a la otra. Las mismas observaciones se aplican al reemplazo de resistencias con cargas activas y valores de componentes sin sentido.

No estoy convencido de que logre un equilibrio tan bueno de retrasos de propagación, pero al menos las salidas pueden estar en los mismos niveles de voltaje y no están limitadas a la mitad del suministro.

esquemático

simular este circuito

Creo que su primera oración puede ser la mejor sugerencia aquí. Por ejemplo, si la señal es generada por una puerta AND, podría replicarla con una puerta NAND vinculada a las mismas entradas y eso debería (AFAICS) tener el mismo retraso de propagación.
NAND suele ser más rápido que AND, cuya implementación suele ser una NAND seguida de un inversor.