¿Cuáles son las mejores opciones para cálculos simples pero de muy baja latencia?

0

Después de revisar mis matemáticas, resultó que había cometido un error en mis cálculos y estaba desviado por un par de factores. En un esfuerzo por hacer que esta pregunta valga la pena, todavía estoy interesado en qué tipo de dispositivo puede realizar cálculos muy específicos a altas semillas y bajas latencias.

    
pregunta Adam

4 respuestas

1

Suena interesante.
1 / 10ns = 100MHz. Bastante rápido ... Dependiendo de lo que implica exactamente "unos pocos cálculos de baja latencia", esto puede ser un trabajo para un FPGA (o un ASIC ..)

La mayoría de los FPGA modernos tienen velocidades máximas de reloj de más de 300MHz y vienen con elementos como bloques DSP dedicados para hacer la vida más fácil. Puede ser paralelo (y tuberías si es posible, probablemente no en esta situación, supongo) según sea necesario para lograr la mayor velocidad posible. Para saber si puede cumplir con el tiempo o no, puede descargar uno de los IDE de los proveedores (por ejemplo, Xilinx, Altera, etc.), escribir su HDL y ejecutar una simulación.

Es posible que deba analizar algunos trucos analógicos en combinación con el FPGA, o intentar iniciar la medición antes del impacto (si es posible) para tener más tiempo.
Probablemente, más información acerca de lo que está tratando de hacer sería de gran ayuda con los detalles (por ejemplo, ¿cómo pretende afectar el impacto?)

EDITAR: para responder a la pregunta editada, un FPGA (Field Programmable Gate Aray) es exactamente lo que está buscando si desea cálculos personalizados / específicos a altas velocidades.
Google (y aquí) tiene un montón de información sobre ellos, por lo que no voy a entrar en demasiados detalles, pero básicamente son una gran variedad de puertas lógicas que puede conectar de cualquier forma que elija, diseñando efectivamente su propio IC digital personalizado. .
Por ejemplo, si desea un FFT realmente rápido, literalmente podría dedicar todo el chip a la optimización solo para esa función. Puede implementar sumadores, contadores, controladores de RAM, SPI, UART, procesadores de "núcleo suave", etc, etc., básicamente, lo que desee.
Por lo general, son reprogramables tantas veces como desee (según la tecnología utilizada para mantener la configuración: puede obtener RAM, Flash, Antifuse, etc. La mayoría está basada en RAM) y tienen RAM incorporada para usar con su diseño. < br> Yo sugeriría leer un poco sobre ellos ( La Guía de Diseño de los FPGAs es un muy buen libro IIRC) y luego agarrando un libro en HDL, descargando un IDE y probando algunas cosas en simulación. Luego, tome una tabla de inicio de Digilent (por ejemplo, algo como Nexsys2 ) y listo. < br> FWIW, Xilinx y Altera son los dos grandes jugadores en el mercado, por lo que probablemente sea mejor comenzar con uno de ellos. Las series Spartan de Xilinx son FPGA populares y versátiles.

Cuando esté listo para diseñar sus propios tableros, necesitará un cable de descarga para configurar el FPGA a través de JTAG; estos pueden adquirirse en Xilinx / Altera o puede obtener una versión mucho más barata en eBay que hace lo mismo.

    
respondido por el Oli Glaser
4

Creo que tus requisitos son irrazonables e innecesarios. Vamos a ver algunos cálculos rápidos para verificar esto.

Una de las balas más rápidas y comúnmente disponibles es la Remington .223, que viaja aproximadamente 3,000 pies / segundo. En 10 ns, esa bala habrá recorrido 0,00036 pulgadas.

Ahora, su pregunta fue sobre cálculos de baja latencia y no sobre cómo detectar realmente la velocidad del impacto. Por lo tanto, voy a ignorar todo el problema de detección y asumir que ya conoce una forma de detectar el impacto con la precisión y rapidez suficientes.

Con un FPGA de bajo costo y comúnmente disponible a 100 MHz, estimo que puede hacer los cálculos en aproximadamente 10 ciclos de reloj. 10 ns por reloj. ¡Esto es solo una conjetura ya que no dijiste exactamente cuáles son los cálculos! Aun así, esto es 10 veces más largo que el requisito de 10 ns. Sin embargo, en esos 100 ns, la bala solo ha viajado 0.036 pulgadas!

Entonces, incluso si su requerimiento de 10 ns es real, puede compensarse simplemente moviendo su sensor 0.036 pulgadas más lejos.

Elegí la bala .223 como un ejemplo arbitrario. Hay balas más rápidas pero no significativamente más rápidas. Hay algunas rondas que van a aproximadamente 4,000 pies / segundo, por ejemplo. La velocidad más rápida de estos no cambia las conclusiones básicas.

Me atrevo a decir que si está trabajando en un proyecto personal con proyectiles que no son balas pero que van a más de 4.000 pies / segundo, es posible que desee volver a evaluar sus opciones de vida. Si sus proyectiles van más lentos que eso, entonces su requerimiento de 10 ns no es realista y un simple reordenamiento mecánico de las cosas podría resolver el problema.

    
respondido por el user3624
0

Sus requisitos son muy difíciles de cumplir, y esto probablemente solo será posible en un conjunto restringido de circunstancias.

Por ejemplo, si quieres detectar balas que golpean el costado de un barco de guerra y responder dentro de 10ns, esto es probablemente imposible. Pero si su objetivo es de una pulgada de ancho y el proyectil es fácil de detectar, entonces es más fácil, pero aún así no es trivial.

Sin saber un poco más sobre su aplicación, nuestras sugerencias serán tomas en la oscuridad. En primer lugar, me olvidaría de los microcontroladores o FPGA. Vas a necesitar un realmente rápido. Creo que una solución analógica será más fácil de implementar.

Si tu objetivo es pequeño y el proyectil no es demasiado pequeño, entonces puedes detectarlo con un par de láseres y fotodiodos rápidos. Cuando el proyectil interrumpe el primer láser, un capacitor se carga rápidamente con un controlador de corriente constante. Cuando se interrumpe el segundo láser, se detiene la carga. Cuanto más bajo sea el voltaje resultante en el capacitor, más rápido viajará el proyectil. Lo bueno de esta solución es que puede colocar los láseres lejos y lejos del objetivo. De esta manera puedes conocer la velocidad antes del impacto. Para todos los componentes electrónicos, tendrá que elegir sus piezas con cuidado. Muchas partes simplemente no serán lo suficientemente rápidas. También necesitarás usar pequeñas piezas de montaje superficial. Como mencionó Olin, 10ns es solo el tiempo suficiente para que una señal eléctrica viaje unos pocos pies, por lo que no hay cables largos.

    
respondido por el Rocketmagnet
0

El problema de la latencia puede no estar en la velocidad del cálculo (es posible que pueda hacer un par de acumulaciones múltiples de baja precisión o tal vez una división en un microcontrolador de 1 GHz o un FPGA de 250 MHz en 10 nS), pero en activar y desactivar cualquier señal del microcontrolador o chip FPGA haciendo el cálculo. El tiempo de subida de las señales de entrada y salida y los retrasos del puerto / almohadilla de E / S en el chip probablemente consumirán más de 10 nS antes de que pueda comenzar su cálculo o informar a cualquier cosa que se encuentre fuera del chip de la CPU sobre cualquier resultado de cálculo.

Añadido: Si realmente tiene más de 1 uS, entonces es probable que muchos microcontroladores multi-100MHz con GPIO directo puedan registrar en alguna entrada, hacer unas pocas docenas de instrucciones aritméticas y registrar una salida, siempre que el código que lo haga sea dedicado y no dependa de un lento controlador de interrupción OS / SW.

    
respondido por el hotpaw2

Lea otras preguntas en las etiquetas