Estoy diseñando una nueva placa que utiliza el NXP LPC4330 (microcontrolador Cortex M4) con una placa de desarrollo XESS Xula2 FPGA. En este diseño, el Xula 2 tiene pines de E / S limitados ya que está diseñado para ajustarse a un factor de forma DIP-40. La principal forma de comunicación entre el micro y el FPGA es a través de SPI.
Me gustaría que el bus fuera bastante rápido, del orden de 80 a 100 Mbps. Puede ser suficiente para ejecutar un solo puerto SPI a 80 MHz, pero como el reloj principal en el FPGA solo se ejecuta a 120 MHz (y controla la interfaz SPI), no estoy seguro de que el SPI funcione en tal alta velocidad de datos. El LPC4330 tiene varios puertos SPI, y una idea que tengo es utilizar 2 puertos SPI para que cada uno pueda ejecutarse a una velocidad de bits más lenta. Hay mucho espacio en el FPGA Spartan 6, pero no tengo los pines de E / S en la placa de desarrollo para tener 2 juegos de los 3 de MOSI / MISO / SCK (más un solo CS).
Por lo tanto, me pregunto si es posible sincronizar los puertos en el LPC para que compartan un reloj SPI. La comunicación rápida solo tiene que suceder en una sola dirección, por lo que solo necesitaría duplicar el pin MISO (el micro necesita leer rápidamente desde el FPGA, no al revés). No parece haber un modo especial para sincronizar los puertos SPI, pero asumo que estarían en el mismo dominio de reloj debido a la arquitectura de sincronización del micro.
Me doy cuenta de que también hay un SPIFI multipuerto (interfaz de memoria spi-flash) en el NXP. ¿Alguien ha tenido una experiencia creando un bloque en el FPGA que básicamente emula un flash SPI?
Entonces, mis preguntas son a) ¿crees que esto funcionará? y b) ¿hay una mejor manera de hacer esto?