20 votos

Cómo conseguir un procesador de diseño en FPGA

Recientemente hice un largo viaje de auto-enseñanza de la lógica de diseño. El producto final de este es un funcional de 16 bits de la CPU que funciona exactamente como fue diseñado en un simulador. Ahora que he empezado a buscar en la posibilidad de poner en silicio por medio de un FPGA. Sé que voy a tener que hacer un montón de ajustes en la entrada/salida de la arena (el mundo real diferente del entorno de simulación) y han descubierto que hice mi diseño en su totalidad en un programa que no exportar listas o código HDL, lo único que realmente tenemos es un esquema.

Pero, suponiendo que yo de alguna manera llegar a un punto donde tengo un netlist o HDL código de mi diseño, ¿cuál es mi siguiente paso para entrar en el silicio? Tan lejos de lo que he leído parece que FPGA son mi solución, pero mirando el Xilinx y Altera los sitios web hace que mi cabeza de vuelta. Estoy ladrando al árbol equivocado? Básicamente, estoy en busca de un inglés simple descripción de lo que el siguiente paso es para un hombre con una funcional esquemático de una CPU. Una vez que sabemos en qué dirección ir, me pueden romper los libros y averiguar todo lo que necesitas saber acerca de cómo llegar allí. También una nota, estoy en Mac OS X, pero tengo una Ventana XP cuadro que puedo conectar si es absolutamente necesario.

17voto

lillq Puntos 4161

Felicidades en su CPU de diseño. Sí, la FPGA es sin duda el siguiente paso. Pero no está muy claro qué es lo que hace girar la cabeza. Supongo que es el gran número de diferentes dispositivos que se ofrecen. Usted también no dicen lo que el simulador está utilizando.
Al sintetizar un diseño del sintetizador debe dar un informe sobre los recursos utilizados, como el número de puertas y la memoria RAM. Esto debe darle una idea de qué partes son adecuados para su diseño. Asegúrese de que tiene suficiente espacio libre. Escoja una parte que tiene algo de RAM extra, que necesitará para ejecutar programas en el CPU.

editar (re su comentario)
Usted necesita un sistema de desarrollo para un fabricante específico. Altera y Xilinx son los grandes jugadores, y ambos tienen sus creyentes. Que uno elige no es que sea importante, ambos tienen bastante diferentes partes para satisfacer sus necesidades.
Si usted elija para Xilinx, tiene su ISE WebPACK Software de Diseño, que es gratis (descarga grande en el 3,4 GB). Las limitaciones en comparación con versiones más avanzadas del software no se moleste usted en este momento.
Luego, se necesita una placa de desarrollo. Usted necesita tener una idea de lo que FPGA tendrás que seleccionar uno de ellos. Si usted va para Xilinx me gustaría recoger un Spartan, tal vez un Spartan-6 fpga Virtex ya es demasiado alto-final de la OMI. Todavía hay un gran número demasiado elegir, sobre todo diferentes en los extras de la junta. Usted querrá una junta con un poco más de un par de interruptores y LEDs. Me gustaría mirar hacia fuera para un conector de teclado, y un módulo de pantalla.
Xilinx tiene un número de placas, y para FPGAs de Xilinx también hay Digilent, Avnet, Xess y muchos otros.

Para comparar un número de juntas (precio también jugará una parte, supongo) y descargar el software de desarrollo para el FPGA va a utilizar. Sintetizar su diseño para verificar que se ajuste en la opción de la FPGA, y entonces usted está listo para comprar una junta en torno a este FPGA.

Se me olvidó comentarte un poco sobre FPGAs. Un FPGA es, básicamente, una gran colección de puertas programables conexiones entre ellos, de modo que usted puede crear casi cualquier lógica de la función/sistema con ellos. A través de varias generaciones FPGAs se hizo más avanzada y que ahora se han optimizado los bloques para crear de manera eficiente las funciones como la memoria RAM. Su desarrollo del software sintetizador crea el diagrama de conexión entre las puertas. Esto no se almacenan permanentemente en la FPGA, sino que debe ser cargado en el encendido de un equipo externo configuración de la memoria Flash. Que es a donde su diseño será almacenado. Como cualquier otra memoria Flash puede ser borrado y vuelto a escribir un gran número de veces.

9voto

John Christman Puntos 188

Yo no estoy familiarizado con herramientas de Xilinx, pero yo estoy con Altera, por lo que voy a decirle a usted acerca de ellos. Xilinx y a los demás no debería ser muy diferente.

Verilog

La primera cosa que usted necesita hacer es aprender de Verilog. Esto hará que su cabeza le dolía porque Verilog (y algo similar VHDL) fue diseñado como una simulación idioma, y muchas de las construcciones (como #5 que significa "esperar 5 pasos de tiempo", un tiempo de paso suele ser un nanosegundo). Así que hay un montón de restricciones que hay que tener en cuenta para hacer su código Verilog synthesizable, es decir, compilable en un flujo de bits para un FPGA.

El susto más grande, sin embargo, es que lo que usted escribe en Verilog (y VHDL) es el comportamiento esperado del sistema, y el compilador infiere la adecuada lógica de su descripción. Si usted no tiene cuidado, usted puede conseguir un montón de errores desagradables de este.

Por ejemplo, un D flip-flop se ve así:

always @(posedge RESET or posedge CLK)
begin
    if(RESET)
        Q <= 1'b0;
    else if(CLK_ENA)
        Q <= D;
end

Este describe cómo un DFF obras, y el compilador ha de analizar y entender usted desea un DFF. El @(...) se llama la sensibilidad de la lista, que es una lista de las señales que desencadenan una reevaluación del bloque de código; por lo tanto, en este bloque, Q sólo cambia si hay un flanco ascendente en RESET o CLK (esto es para un activo de alto reset). Si se le olvida algo en la sensibilidad de la lista (que debe contener todo el lado derecho de variables sin ninguna posedge o negedge modificadores para un bloque de lógica combinacional) el compilador de sintetizar las trabas según sea necesario, en lugar de llamar a un error. Loco, pero es como es, porque Verilog fue originalmente un lenguaje de simulación que se escondió (y por lo tanto no requieren) detalles de la implementación. VHDL es la misma, pero mucho más detallado.

Por último, una nueva versión de Verilog llamado SystemVerilog fue lanzado un par de años atrás que hace la escritura de synthesizable código mucho, mucho más fácil. Si es posible, aprender este idioma, como Xilinx ISE y Altera Quartus II, tanto de apoyo. El principal problema es la absoluta falta de buen material de referencia.

El SystemVerilog versión de un DFF limpia un par de cosas:

always_ff @(posedge RESET, posedge CLK)
begin
    if(RESET)
        Q <= '0;
    else if(CLK_ENA)
        Q <= D;
end

Tenga en cuenta que las señales en la sensibilidad de la lista están separados por comas. Esto es debido a que or fue confuso, ya and no podía trabajar allí. También tenga en cuenta la sustitución de 1'b0 (una sola 0 bits) con '0 (un símbolo que se expande sin embargo, muchos 0 bits son necesarios basado en lo que se asigna a; mucho más flexible con parametrizada módulos). Por último, tenga en cuenta la sustitución de always (que podría ser utilizado para cualquier cosa; la lógica combinacional, cerrojos y flip flops) con always_ff que requiere el contenido de sintetizar los flip-flops. También hay un always_comb que elimina la sensibilidad de la lista, ya que sólo funciona de la sensibilidad de las entradas para el bloque.

Altera el diseño del software se llama Quartus II, y se le busca para la Edición Web. (Las ediciones de suscripción son bastante caros y sólo es necesario para la más rápida o la más reciente de FPGA modelos.)

La parte triste es que no he encontrado un buen libro sobre el tema. Lo que he aprendido me dieron por las cosas juntando a partir de múltiples fuentes, tales como Verilog libros que no hacen un buen trabajo de decirle a usted lo que es synthesizable y lo que no, y un código de ejemplo. Quartus II tiene una "plantilla de inserción de comandos" que se inserta la plantilla de código para varias estructuras comunes, de D flip-flops para máquinas de estado.

Demo De Hardware

Una vez que haya implementado el procesador en Verilog, que necesita para construir. Por el momento, vamos a Quartus elegir la ficha que tienes para elegir a la familia, me gustaría recomendar el Cyclone IV) y las salidas de los pines. Una vez que se biulds, usted sabrá cuánto chip que usted necesita. Se le dirá cuántas lógica de los elementos, las chanclas, los bits de RAM, etc. usted utiliza. Asegúrese de que usted no está de más del 50% en cualquiera de esos, si, mira el chip el compilador elegido y seleccionar manualmente el siguiente más grande (en la lógica de elementos) de chips que tiene al menos el mismo número de pines, y repetir la operación hasta conseguir la utilización por debajo del 50%.

Luego de ir a comprar una placa de demostración que tiene un chip al menos tan grande como la que finalmente se construyó. Compruebe que dispone de los periféricos y/o conectores de e/S que usted necesita. No es raro para construir un daughtercard que se conecta a un conector de expansión para proporcionar cualquier falta de hardware.

Ahora que usted ha elegido su hardware, averiguar la verdadera configuración de pines y usar el Pin Planificador de colocar las señales en el derecho de los pines. La demo de la junta directiva tendrán una guía del usuario que indica que los pines están conectados a los dispositivos o los pines del conector en la placa de demostración.

Una vez que la configuración de pines de establecer, construir de nuevo para que se utiliza el pin que desee. Tenga en cuenta que algunas señales, como el sistema de los relojes se necesita dedicado a los pines de entrada (por lo que la ruta directamente a la interna Pll).

Utilice el programador para descargar tu diseño directamente en la FPGA (registro de desplazamiento que he mencionado hace un tiempo). Ahora estás en la conocida edición-compilación-ejecución de la depuración de ciclo. Lo golpearon hasta que funcione.

Una vez que funciona, puede utilizar el programador para descargar el código en el bordo de la configuración del dispositivo para que el programa se cargue y ejecute en el encendido.

Esto era bastante largo, y espero que ayudó a algunos. Hay mucho que aprender; no es como aprender un nuevo lenguaje de programación como mucho ya que es como el aprendizaje de un nuevo paradigma de programación, por ejemplo, movimiento de procedimientos de los lenguajes funcionales. Verilog es un simultánea del lenguaje; la mayoría del código es siempre la ejecución.

Buena suerte!

5voto

Martin Thompson Puntos 6509

Sí, los FPGAs son casi ciertamente la solución!

Es casi seguro que se necesita para utilizar uno de los lenguajes de descripción de hardware, o volver a entrar en sus diagramas en una herramienta diferente. Yo no le recomendaría el esquema de aproximación, como

  1. la FPGA a los proveedores de herramientas no son realmente de apoyo bien
  2. No es portable

Una vez que has escrito HDL, siempre y cuando usted no está directamente en la inserción de las cosas de los vendedores de la biblioteca con sus diferentes "IP asistentes", o directamente pegar en los componentes de sus bibliotecas, tendrás el código que se puede trasladar a otros chips con bastante facilidad (mucho más de lo que, por ejemplo, portar incrustado en C IME)

También, tiene mucho mejor de prueba y validación del entorno de pruebas de escritura que "entender" su funcionalidad y comprobar los resultados por ti, en lugar de mirar fijamente a las formas de onda a ver si todo se ve bien.

El big 2 Hdl son VHDL y Verilog. Si quieres puedes leer esta respuesta en cuanto a cómo se diferencian...

VHDL o Verilog?

También me gustaría decir que MyHDL es también vale la pena un vistazo si ya sabes Python - le da una gran verificación de la capacidad, pero en la mayoría de los de bajo nivel de control que un "normal" HDL da.

Una vez que elija un nivel de HDL, y luego conseguir que el trabajo (de nuevo, lo siento!) en una simulación a continuación, voy a estar en un estado donde usted puede empujar a través del proveedor de herramientas y aprender la próxima gran parte de la tarea - una vez que simule correctamente, siempre hay más esfuerzo de lo que usted piensa llegar a sintetizar :)

Si estás apegado a los diagramas esquemáticos y puede conseguir un asimiento de una licencia, LabviewFPGA puede adaptarse a usted.

3voto

Mark Biek Puntos 41769

Obtener una copia de creación Rápida de Prototipos de Sistemas Digitales en Hamblen et al:

http://users.ece.gatech.edu/~hamblen/book/bookte.htm

Se utiliza principalmente en VHDL, que prefiero Verilog.

Incluye una muy simple de 8-bits de la CPU, el uP3, que he implementado en mi propia Altera FLEX 10K de hardware de hace algunos años, el uso de una edición anterior del libro. Voy a trasladar a este $25 Cyclone II de la junta cuando llegue a mi "panel frontal" PCB hecho. También incluye un MIPS y Altera NIOS II procesador. Usted puede trabajar a través de la uP3 ejercicios en el libro con el libre Altera Quartus II herramientas, vuelva a escribir la CPU código en VHDL, y que funcione en un Ciclón II de la junta. Alternativamente, Quartus II ha esquemático de la entrada, y usted debería ser capaz de introducir su esquema directamente, simular y ejecutar en el Ciclón II.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X