Sugerencia de computadora de placa única (SBC) para interactuar con DMA

2

Estoy asumiendo un proyecto en el que un Spartan 6 FPGA proporciona la interfaz entre un ADC y un chip de memoria DDR2. El FPGA toma datos de 16 bits del ADC y los almacena en la RAM a una velocidad de 28MHz.

Tengo la opción de hacer que el controlador DDR2 sea multipuerto para que un procesador pueda acceder a la memoria DDR2 y comenzar a analizarla. Idealmente, me gustaría encontrar una computadora de placa única (SBC) COTS por menos de $ 150 que tenga acceso directo a memoria (DMA) disponible para una conexión externa a la memoria. El SBC finalmente ejecutaría algún tipo de distribución de Linux, por lo que tendría que ser más poderoso que un microcontrolador estándar.

Esto es una especie de paso en una extremidad para mí, ya que anteriormente he desarrollado el uso de PIC's o Xilinx Microblaze donde diseñé todo el tablero. Me gustaría pasar a ejecutar Ubuntu en una placa establecida, por lo que asumí este proyecto.

Solo espero poder recibir algunas sugerencias y avisarme si hay detalles que no tengo claros o si debería publicar en un foro diferente. Gracias!

    
pregunta Peter

3 respuestas

1

Sus números sugieren un ancho de banda de aproximadamente 53.4 MB / s (MegaBytes!). Esto me hace preguntarme sobre los requisitos para el resto del sistema, dado que desea agregar la sobrecarga de un sistema operativo Linux pesado como Ubuntu en la parte superior. Para lo que vale la pena, hay algunas placas SBC Linux que ofrecen DMA a un lector de tarjetas de memoria para lograr un rendimiento cercano a 6 MB / s. Esta cifra probablemente no tenga en cuenta la sobrecarga del protocolo, por lo que el rendimiento real de los datos es probablemente menor. . Sin embargo, su cálculo es todos los datos sin procesar, lo que se suma aún más al desafío.

Tengo curiosidad por saber qué tipo de aplicación requiere una tasa de muestreo tan alta. Puedo imaginar que algo así como los transceptores de radio de alta frecuencia necesitan algo tan rápido (o más rápido) pero no especularé sobre lo que estás haciendo. el uso de esto para: adquisición de datos a alta velocidad ( si esto se considera realmente de alta velocidad ) no es de mi conocimiento.

Dado el requisito de ancho de banda, lo que haría sería comenzar con un bus periférico de computadora que sea capaz de mover ese tipo de datos.

  • PCI: 133 MB / s
  • PCIe (1 línea, gen1): 250 MB / s
  • Si está dispuesto a disminuir su frecuencia de muestreo, USB 2.0: 480 Mbit / s (rendimiento efectivo de hasta 35 MB / s)

Estas cifras pueden o no incluir la sobrecarga del protocolo, así que tenga en cuenta que su ancho de banda requerido ya es pura información y puede requerir mucho más de 53.4 MB / s considerando la sobrecarga del protocolo.

Por ahora voy a olvidar el requisito de un SBC y sugeriré una PC completa. Después de elegir el bus correcto, ahora tiene el placer de implementar su propia tarjeta periférica para conectarla a una PC típica capaz de ejecutar Ubuntu. También tendrá que escribir un controlador de Linux para su dispositivo PCI / PCIe / USB personalizado. Espero que alguien responda con un buen SBC que exponga un bus de memoria con DMA en su lugar ... las soluciones anteriores seguramente serán un desafío.

Por cierto, ¿qué fue lo que ya estaba procesando los datos después del FPGA en primer lugar? ¿No fue lo suficientemente bueno / flexible?

    
respondido por el Jon L
0

Creo que te has pintado en un rincón aquí. Hay tarjetas con capacidad para Linux por menos de $ 150, pero ninguna que yo sepa lleve un bus de memoria a un conector externo. Hay placas que tienen tales conectores, pero cuestan más de $ 150.

Lo más cercano a lo que puedo pensar es en un tablero de "Blackfin Stamp". La familia de DSP "Blackfin" de Analog Devices puede ejecutar ucLinux, y tiene, entre otras cosas, un PPI de alta velocidad (interfaz periférica paralela) que puede manejar datos de video. Pero no estoy seguro de si estos tableros todavía están generalmente disponibles.

Pero normalmente para este tipo de aplicación, tendría el FPGA y el procesador integrados en la misma placa. Varios fabricantes hacen tableros como este, como Sistemas tecnológicos .

    
respondido por el Dave Tweed
0
  

Gracias por los consejos sobre las diferentes opciones de bus periférico. Volví a leer mi publicación original y me di cuenta de que había omitido una información crítica. Mis disculpas. El ADC extrae datos de un sensor de imagen a 28MHz y se toma una imagen cada 30 segundos aproximadamente. Esto significa que una vez que se almacenan los datos, se pueden transferir a una velocidad más lenta. Mi esperanza original era conectar el bus RAM al SBC para que no tuviera que volver a copiar los datos al SBC, pero parece que esto no sería posible con una placa más barata.

Si este es el caso, creo que una interfaz DMA no es la mejor manera de hacerlo.

Si solo necesitas extraer el contenido de la DRAM cada 30 segundos, tienes MUCHA flexibilidad.

Creo que la forma más económica y sencilla de hacerlo sería simplemente abofetear a una Raspberry Pi allí. Conéctelo a la FPGA a través de una interfaz SPI (hay una conexión SPI de hardware en el GPIO del PI), y con una velocidad de reloj de unos pocos megahertz, debería tener suficiente tiempo para leer los datos de su imagen.

Ahora, asumiendo que está construyendo la interfaz FPGA en la empresa, y no me importa hacer algunas modificaciones, sugeriría volver a diseñar la placa FPGA con un Xilinx Zynq microprocesador.

  

La familia Zynq 7000 incorpora una plataforma de procesamiento extensible en dispositivos para abordar aplicaciones de sistemas integrados de gama alta, como vigilancia por video, asistencia para conductores de automóviles, tecnología inalámbrica de última generación y automatización de fábrica. Los FPGA de Zync-7000 integran un sistema completo de 28 nm basado en procesador ARM Cortex-A9 MPCore. La arquitectura Zynq difiere de matrimonios anteriores de lógica programable y procesadores integrados al pasar de una plataforma centrada en FPGA a un modelo centrado en el procesador. Para los desarrolladores de software, los FPGA de Zynq parecen lo mismo que un sistema basado en procesador ARM estándar y con todas las funciones -chip (SOC) que se inicia inmediatamente en el encendido y puede ejecutar una variedad de sistemas operativos independientemente de la lógica programable.

Básicamente, utiliza el tejido FPGA para leer su sensor de imagen y luego lo pone a disposición de la CPU a través de un canal DMA local. Todo en el mismo IC.

Hay un dev-kit con el que puedes hacer pruebas llamado ZedBoard .

    
respondido por el Connor Wolf

Lea otras preguntas en las etiquetas