¿IC del contador / temporizador?

0

EDITAR: para que quede claro, esto no pretende ser una pregunta de "compra". Estoy buscando la técnica correcta para construir un contador muy rápido.

=====

Estoy buscando un contador / temporizador IC con las siguientes capacidades:

  • > Tasa máxima de conteo de 10MHz
  • ≥ 32 bits de profundidad (preferiblemente > 40 bits)
  • preferiblemente, una función preestablecida o de comparación incorporada

Lo usaré para contar una sucesión de eventos y daré una interrupción cuando el conteo alcance un valor específico. La interrupción debe ocurrir muy rápido, antes del siguiente evento (por lo tanto, menos de 100 ns), por lo que estoy usando una lógica discreta en lugar de un microcontrolador.

Ahora mismo estoy haciendo prototipos con contadores de 4 bits como 74LVC161 . Sin embargo, al final tengo que conectar en cascada al menos 8 de ellos, lo que se aproxima a sus límites de retardo de propagación (calculo una frecuencia máxima de 11MHz).

¿Hay una solución mejor para este problema? Estoy dispuesto a intentar usar un CPLD / FPGA para hacer un gran contador síncrono, pero no tengo experiencia y no sé cuántas puertas / unidades lógicas se requieren. ¿Cuál es el mejor enfoque?

    
pregunta Colin Marcus

4 respuestas

1

Esto se puede hacer fácilmente en un FPGA pero no creo que necesites algo tan complejo para lo que describes.

  • Con los IC de 4 bits que ya tiene, tiene una salida de conteo de terminal (TC). Si alimenta eso a la entrada de habilitación de conteo (CEP) del siguiente contador, sincronice los contadores. Debería ser posible diseñar un contador muy amplio.

  • Para lograr un retraso bajo y sincronizado después del evento, establezca el valor objetivo que desea comparar con el valor que ocurre 1 ciclo antes de que ocurra el evento, luego retrase el resultado 1 ciclo con un flip-flop .

Para hacer el comparador simple, mi propia preferencia es diseñar un contador descendente que esté cargado con el valor objetivo en (p) reinicio. Cuando el contador llega a 0 se hace. Opcionalmente, agregue un flip / flop para sincronizar la salida del comparador, y diseñe el contador para probar 1, o reste 1 del valor predeterminado.

  • Puedes hacer algo similar con los CI que tienes. Simplemente elija el valor preestablecido / de carga como (Valor de contador máximo: período objetivo), luego la última salida de TC estará activa durante un ciclo cuando haya terminado el conteo.

Solo para desviarse un poco, un registro de desplazamiento a menudo se considera uno de los contadores más rápidos que puede hacer, ya que no hay comparadores ni sumadores. Sin embargo, dado que necesita un latch (o flip-flop) por valor de contador, esto no es lo que desea para un contador de & gt = = 32 bits.

    
respondido por el HKOB
2

Un procesador rápido (por ejemplo, Cortex M3 a 64MHz) tiene un ciclo de reloj de ~ 16ns y responderá a una interrupción dentro de 100ns. Mucho más rápido si no tiene nada más que hacer y simplemente ejecuta un ciclo de 'mirar el valor del contador'. (Probablemente necesite combinar un contador de SW y uno de hardware para tener más de 32 bits)

Para un muy rápido > contador de 40 bits, puede utilizar un FPGA. En cuanto a la cantidad de código / puertas que necesita depende de qué acción desea realizar. Mi conjetura es que incluso la más pequeña será suficiente.

Necesitará aprender un lenguaje HDL como Verilog y recorrer la curva de aprendizaje con el conjunto de herramientas. La herramienta también le dirá si el diseño se ajusta al FPGA elegido. Pero al final, si sus 'acciones' no son demasiado complejas, es muy probable que sea capaz de hacer lo que quiera.

    
respondido por el Oldfart
2

Si lo entiendo correctamente (contando los impulsos y emitiendo impulsos en un cierto número de impulsos) no necesita realmente un microcontrolador rápido (20 MHz debería ser suficiente) ya que la mayoría de las fuentes soportan temporizadores de reloj y encadenan múltiples temporizadores con Último temporizador de salida directamente en el pin de salida.

Si este es su caso, su microcontrolador solo necesitará configurar registros e ingresar a un bucle infinito (o suspensión), sin necesidad de interrupción o ejecución de código en el microcontrolador.

En los microcontroladores más nuevos, ni siquiera necesitará más de un temporizador, ya que suelen ser de 32 bits con la adición de un preescalador de 16 bits, lo que es útil si desea contar números múltiples de 2 ^ N.

    
respondido por el Rokta
0

Incluso un pequeño FPGA lo hará con facilidad. Puede obtener una tarjeta de evaluación para Xilinx, Lattice, etc. y tenerla. Pick y HDL (VHDL y Verilog son los más populares), y debería poder descargar suficientes herramientas para este proyecto sin costo alguno.

Algunos CPLD también podrían hacerlo, pero con un FPGA probablemente no tendrá que preocuparse por los recursos porque no usará muchos de los recursos disponibles.

La combinación de un FPGA y un procesador resolverá muchos problemas donde uno u otro no es el adecuado.

    
respondido por el Spehro Pefhany

Lea otras preguntas en las etiquetas