Es posible aumentar la fpga con un simple pendrive?
Es posible aumentar la fpga con un simple pendrive?
Me he encontrado con este artículo: http://www.computerworld.com/article/29 ... -data.html
Se podría utilizar memoria flash externa para aumentar la memoria de la fpga y así poder empepinarla de forma barata?
borrad este hilo si esto es un absurdo
Se podría utilizar memoria flash externa para aumentar la memoria de la fpga y así poder empepinarla de forma barata?
borrad este hilo si esto es un absurdo
Última edición por hikoki el 27 Nov 2016, 15:10, editado 1 vez en total.
Re: Pregunta de copón: aumentar memoria con pendrive?
Lo veo complicado. Un pendrive, no es SRAM, y no tiene pines para acceder a direcciones de memoria.
Re: Pregunta de copón: aumentar memoria con pendrive?
yo creo que se referirá más bien a usar la SD como ram para la fpga...carmeloco escribió:Lo veo complicado. Un pendrive, no es SRAM, y no tiene pines para acceder a direcciones de memoria.
Re: Pregunta de copón: aumentar memoria con pendrive?
Me refiero a utilizar flash o sd como apoyo a la sram para ampliar la capacidad de almacenar lógica
Re: Es posible aumentar la fpga con un simple pendrive?
El tiempo de acceso no es suficiente ni de lejos, para lo que se usa la SRAM. Lo siento, no es viable.
El artículo que has enlazado al principio se refiere a servidores escalables de internet, este caso es muy diferente.
El artículo que has enlazado al principio se refiere a servidores escalables de internet, este caso es muy diferente.
Re: Es posible aumentar la fpga con un simple pendrive?
Entonces coloca allí ciertos periféricos que no requieran tanta velocidad de comunicación con el resto de circuitos. Podría haber algún tipo de caché para sincronizar las diferentes velocidades de acceso. No corras!!! Todo esto para dar más espacio a algunos cores creados específicamente para el ZX-Uno. Barato-Barato aunque algunos cores grandes solo funcionen en el ZX-Unoyombo escribió:El tiempo de acceso no es suficiente ni de lejos, para lo que se usa la SRAM. Lo siento, no es viable.
Re: Es posible aumentar la fpga con un simple pendrive?
Estás mezclando churros con merinas y sugiriendo sinsentidos. Los recursos internos de la FPGA son los que son y no se pueden ampliar.
- mcleod_ideafix
- Mensajes: 831
- Registrado: 27 Sep 2015, 00:14
- Ubicación: Jerez de la Frontera
- Contactar:
Re: Es posible aumentar la fpga con un simple pendrive?
Distwave ha sido más expeditivo que yo, pero a efectos prácticos tiene razón, aunque me permito añadir un apunte: en realidad, sí que es posible meter lógica en memoria, pero el truco está en que esa memoria debería ser muy muy rápida, y una flash no estaría a la altura, ni es la más adecuada por su estructura y su forma de gestionarse.
O sea: dado un diseño lógico, parte de él puede estar en memoria, si eres capaz de modelar tu lógica como una máquina de estados. Hay técnicas para codificar una máquina de estados completa (estado actual, salidas de la máquina, y estado próximo) en memoria, estando únicamente el secuenciador en lógica de la FPGA "de verdad". Estas técnicas se usan para poder hacer diseños complejos en FPGA sin gastar LUTs (una LUT es algo así como la unidad mínima de procesador lógico en la FPGA). De hecho, basado en esta técnica hay otra que se denomina de "microsecuenciamento" que ha permitido meter cores de procesadores complejos como el 8086 en muy poco espacio (cabría de sobra en nuestra Spartan 6 LX9)
http://www.eetimes.com/author.asp?secti ... id=1328967
Ciñéndonos a lo que tenemos en el ZX-UNO, leyendo ese enlace podeis ver que es posible meter un core microsecuenciado de 8086 en la LX9 (tenemos 5720 LUTs en ella, y según el artículo bastan 308, cuando un core "tradicional" no cabe ni de coña. Para el microsecuenciamento se usa la memoria BRAM, que es interna a la FPGA, muy rápida (280 MHz), ancho variable y de doble puerto.
La única RAM que puede estar más o menos a la altura de la BRAM es la SRAM externa, que va a 10ns (100 MHz), ancho fijo y simple puerto. Volcando de alguna forma el microcódigo de la máquina de estados cuando la FPGA arranca, y si el diseño lógico no usa una frecuencia de reloj alta (es de sólo unos pocos megahercios), se pueden realizar varios accesos a la SRAM para leer dado un estado (dirección de la SRAM), todas las salidas de ese estado y el próximo estado.
También se ha hablado de "caché": curiosamente estas técnicas tambien preveen el uso de caché: como la SRAM es más lenta y menos flexible que la BRAM, la BRAM se usaría como caché, para ejecutar la parte de máquina de estados más inmediata, y a medida que ésta progresa, la BRAM se va actualizando con datos de nuevas transiciones que vendrían de la SRAM. A partir de aquí puedes establecer una jerarquía de memoria al uso y acabar teniendo en una tarjeta SD toda la tabla de transiciones de una gran máquina de estados.
El microsecuenciamento y otras técnicas, lo que en realidad hacen es hacer funcionar a la FPGA como un gran emulador de máquinas de estado: es decir, la FPGA se encarga poco menos que de ejecutar mediante el secuenciador un "programa" (microprograma en realidad) que es lo que se guarda en la memoria como salidas y transiciones de la máquina de estados. No son técnicas novedosas. Datan al menos de los años 80. Hay un libro titulado "Mmicroprocessor Logic Design", de 1987, donde ya se habla de todo esto, y de hecho creo recordar que uno de sus autores es, o fue uno de los diseñadores del Motorola 68000, que implementa en sí mismo el microsecuenciamento y nanosecuenciamiento (tiene dos secuenciadores: uno de ellos lee microinstrucciones de una memoria interna del M68K, que en realidad son interpretadas por otro secuenciador que tiene otra memoria, con nanoinstrucciones, que son las que realmente disparan toda la lógica del procesador)
O sea: dado un diseño lógico, parte de él puede estar en memoria, si eres capaz de modelar tu lógica como una máquina de estados. Hay técnicas para codificar una máquina de estados completa (estado actual, salidas de la máquina, y estado próximo) en memoria, estando únicamente el secuenciador en lógica de la FPGA "de verdad". Estas técnicas se usan para poder hacer diseños complejos en FPGA sin gastar LUTs (una LUT es algo así como la unidad mínima de procesador lógico en la FPGA). De hecho, basado en esta técnica hay otra que se denomina de "microsecuenciamento" que ha permitido meter cores de procesadores complejos como el 8086 en muy poco espacio (cabría de sobra en nuestra Spartan 6 LX9)
http://www.eetimes.com/author.asp?secti ... id=1328967
Ciñéndonos a lo que tenemos en el ZX-UNO, leyendo ese enlace podeis ver que es posible meter un core microsecuenciado de 8086 en la LX9 (tenemos 5720 LUTs en ella, y según el artículo bastan 308, cuando un core "tradicional" no cabe ni de coña. Para el microsecuenciamento se usa la memoria BRAM, que es interna a la FPGA, muy rápida (280 MHz), ancho variable y de doble puerto.
La única RAM que puede estar más o menos a la altura de la BRAM es la SRAM externa, que va a 10ns (100 MHz), ancho fijo y simple puerto. Volcando de alguna forma el microcódigo de la máquina de estados cuando la FPGA arranca, y si el diseño lógico no usa una frecuencia de reloj alta (es de sólo unos pocos megahercios), se pueden realizar varios accesos a la SRAM para leer dado un estado (dirección de la SRAM), todas las salidas de ese estado y el próximo estado.
También se ha hablado de "caché": curiosamente estas técnicas tambien preveen el uso de caché: como la SRAM es más lenta y menos flexible que la BRAM, la BRAM se usaría como caché, para ejecutar la parte de máquina de estados más inmediata, y a medida que ésta progresa, la BRAM se va actualizando con datos de nuevas transiciones que vendrían de la SRAM. A partir de aquí puedes establecer una jerarquía de memoria al uso y acabar teniendo en una tarjeta SD toda la tabla de transiciones de una gran máquina de estados.
El microsecuenciamento y otras técnicas, lo que en realidad hacen es hacer funcionar a la FPGA como un gran emulador de máquinas de estado: es decir, la FPGA se encarga poco menos que de ejecutar mediante el secuenciador un "programa" (microprograma en realidad) que es lo que se guarda en la memoria como salidas y transiciones de la máquina de estados. No son técnicas novedosas. Datan al menos de los años 80. Hay un libro titulado "Mmicroprocessor Logic Design", de 1987, donde ya se habla de todo esto, y de hecho creo recordar que uno de sus autores es, o fue uno de los diseñadores del Motorola 68000, que implementa en sí mismo el microsecuenciamento y nanosecuenciamiento (tiene dos secuenciadores: uno de ellos lee microinstrucciones de una memoria interna del M68K, que en realidad son interpretadas por otro secuenciador que tiene otra memoria, con nanoinstrucciones, que son las que realmente disparan toda la lógica del procesador)
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA
Re: Es posible aumentar la fpga con un simple pendrive?
¿Estaríamos hablando entonces de emulacion y no implementacion? (al menos parcialmente)
Re: Es posible aumentar la fpga con un simple pendrive?
Haciendo un inciso y aprovechando el comentario, logré meter el 80x86 en el Papilio Pro (un poco con la ayuda de su autor al que pedí sopitas por el tema de la velocidad, que no lograba ajustarla), y funcionó (no tengo fotos para poner). Entró el 8086, el lector de SD y la VGA, pero sin sonido. Y el manejo de la BIOS y del HD virtual son muy complejos e incómodos, es necesario sobreescribir los sectores de la SD con un editor de sectores a mano, por ejemplo, el HxD. Me pareció tan "soso" y complicado de implementar, que no me he preocupado de pasarlo al ZXUNO, y aparte, que el Papilio lleva SDRAM y el ZXUNO no....mcleod_ideafix escribió: De hecho, basado en esta técnica hay otra que se denomina de "microsecuenciamento" que ha permitido meter cores de procesadores complejos como el 8086 en muy poco espacio (cabría de sobra en nuestra Spartan 6 LX9)
http://www.eetimes.com/author.asp?secti ... id=1328967
Última edición por jepalza el 31 Dic 2016, 18:47, editado 1 vez en total.