desktop

Programar FPGA con microcontrolador con una FLASH compartida

Estoy diseñando una placa que usa una FPGA de la casa Altera, específicamente una Cyclone III. He mirado las distintas opciones de configuración que ofrece este modelo y he concluido que la más económica es programar el dispositivo mediante un microcontrolador utilizando el protocolo Passive Serial. La solución consiste en conectar una memoria FLASH, SPI u otro tipo, a un microcontrolador y que éste mande las señales pertinentes a la FPGA a través de los pines adecuados. Simple.

Me interesa poder acceder a la memoria FLASH desde la FPGA. Podría hacerlo a través del micrococontrolador, pero por cuestiones de consumo quiero que éste pueda ponerse en modo de ahorro de energía hasta que no se lo precise y leer la memoria directamente desde la FPGA.

Los pines de la FPGA se mantienen en alta impedancia hasta poco después de finalizar la configuración, así que si pongo los pines del microcontrolador en alta impedancia justo al terminar no debería ocasionar ningún problema.

Sin embargo, no estoy seguro que sea posible leer un dispositivo conectado a los pines de un microcontrolador aunque éstos estén en alta impedancia. Tampoco estoy seguro de que, aún si fuera posible lo anterior, no surgirían problemas o si supondría una disminución apreciable de la velocidad de comunicación con la memoria (capacidad de los pines en alta del micro).

¿Puede causar problemas la configuración anterior?

Por si es necesario, la FPGA es una Cyclone III EP3C5E144C8N, la FLASH una HY27UF082G2A-TPCB y el microcontrolador un PIC.

Muchas gracias de antemano.
 
Tengo entendido que Altera ofrece un modulo que permite que el FPGA se "autoreprograme"... posiblemente sea mas simple cargar ese modulo en vez de usar un micro externo...
 
Efectivamente esta opción existe y es más simple, pero como ya he dicho, no es la más barata. Unos 4 Mbit de FLASH (lo que se necesita para la FPGA que uso) y un microcontrolador cuestan unos 2 €; el integrado que ofrece Altera se va a los 13 €, seis veces más caro.

Además, la capacidad de esas memorias es escasa. La que yo tengo intención de usar es de 2 Gbit y cuesta tan solo 6 €. Por la mitad de precio tengo 512 veces la capacidad que me ofrece Altera.

Muchas gracias por la respuesta.
 
Última edición:
No me explique bien... segun recuerdo del "crash course" que me dieron, hay un modulo IP que se programa dentro del mismo FPGA y que sirve para reprogramarlo justo como un bootloader... lo unico que necesitas es una memoria externa... deja busco si hay una nota de aplicacion
 
Esa sería la solución ideal, un único integrado que realice todas las funciones. El problema es que las FPGA no tienen forma de guardar ni un solo bit de memoria de configuración en su interior, así que sería preciso una primera configuración con mecanismos externos. Luego ya sería posible que la propia FPGA se auto reconfigurara, a excepción de la lógica usada para dicha tarea, pero habría que repetir el paso interior cada vez que se cortara el suministro de energía.

Quizás me salte algún detalle y en realidad si que sea posible, así que toda brizna de información que me puedas dar al respecto será bien recibida.

Nuevamente gracias por la respuesta.

Volviendo a mi duda original, lo único que pido es si al poner los pines de E/S de un microcontrolador (en los PIC el registro TRISx a 1, el ANSELx a 0 y el WPUx5 a 0) se puede considerar que las líneas conectadas a dichos pines están en alta impedancia y se puede trabajar con los dispositivos allí conectados como si no estuvieran conectados a ninguna parte.

En principio la respuesta debería ser afirmativa, pero debido a que una vez realizada la PCB y soldados los componentes no hay vuelta atrás, quiero asegurarme al 100%.

Gracias.
 
Última edición:
Volviendo a mi duda original, lo único que pido es si al poner los pines de E/S de un microcontrolador (en los PIC el registro TRISx a 1, el ANSELx a 0 y el WPUx5 a 0) se puede considerar que las líneas conectadas a dichos pines están en alta impedancia y se puede trabajar con los dispositivos allí conectados como si no estuvieran conectados a ninguna parte.

Efectivamente .... al poner los pines en modo de entrada automaticamente pasan a ser de alta impedancia... puedes consultar con mas detalle el circuito de salida en la hoja de datos (fig 5-1 pag 52 del manual del PIC16F88 )
 
Atrás
Arriba