En un lugar en el que trabajó había dos campamentos de los diseñadores FPGA. Uno de los campamentos llamé a simular, simular, simular o s en cubos. El otro campamento fue todo sobre diseño.
La s en cubos chicos utilizaron un simulador como modelsim, iban a venir para arriba con un diseño inicial a través de los métodos de codificación y\o bloques en el diseño de la suite. Entonces van a simular y encontrar las cosas que no funcionan, a continuación, cambie el código. Este proceso fue reiterado varias veces hasta que vino para arriba con un diseño que trabajó.
El diseño de campamento (que he preferido) sería el diseño de la forma de onda en el papel (o papel digital como visio), exactamente lo que se requiere. Luego vienen con un diagrama de la lógica. Este es un auto-documentar el proceso. A continuación, el diagrama fue traducido a código (el código y el diagrama es de 1:1 si había algo en el diagrama, no fue un proceso en el código). Entonces fue simulado, y la simulación de la forma de onda se comparó con el diseño de la forma de onda en el papel, y se espera que sea el mismo.
Terminé haciendo las dos cosas, a veces me metía en s, cortado en cubos de modo, y que no era muy divertido. He encontrado que he perdido de vista mi objetivo, a veces. Por ejemplo, me gustaría cambiar de un estado en un estado de la máquina, y el cambio de la ondulación hacia abajo hasta el siguiente estado, entonces tendría que arreglar eso. Me pasé más tiempo de pensar en ello.
En que campo ¿te gustaría estar? Creo que hay que ser riguroso diseño, hacer lo que funciona para usted, pero creo que el más detallado y riguroso que están en el diseño, el menos de los problemas que puede tener en el largo plazo. Me dio algunos ejemplos de lo que es posible que no se ajuste a la estructura organizativa de su lugar de trabajo. La razón por la que el detalle del diseño y la planificación cuidadosa es muy útil, es que te obliga a pensar sobre lo que estás haciendo. Esto hace que sea fácil de depurar. Desarrollar un diseño de flujo de trabajo que permite que esto suceda.
También, conseguir realmente familiarizado con las herramientas de simulación y escribir bien testbenches que pondrá a prueba todas las condiciones que el dispositivo simulado puede experimentar. Por supuesto, esto tiene que ser equilibrada con el tiempo. Por ejemplo, escribir ADC código HDL que simulará el dispositivo en sus simulaciones.
La herramienta más valiosa a tener en diseño de FPGA (en mi opinión) es un buen procedimiento de prueba que te permitirá poner a prueba su diseño y ejecución a través de sus pasos. Un diseño de FPGA no se puede esperar que "trabajar" se requiere un gran esfuerzo para asegurarse de que todas las piezas de trabajo. Si se detectan errores, a continuación, volver a la simulación y el diseño y aprender cuáles son las diferencias entre una simulación de la FPGA y RTL. Que principalmente viene con la experiencia, pero si el diseño funciona en la simulación, pero no en el hardware, entonces usted necesita para encontrar la razón de por qué hay una diferencia.
Algunas cosas importantes que he aprendido:
1) Desinfectar sus entradas, el reloj y el reset circuitos deben ser limpios o usted puede conseguir metastablity de propagación a través de su sistema. Saben lo que es un sincronizador de rango dual es. Hay muchos diferentes topologías para restablecer los circuitos, saber cómo usarlos (no es un gran artículo en el web, no lo tengo a mano).
2) Obtener los requisitos del diseño frontal y, a continuación, diseño alrededor de los. Si la gente de tu alrededor no te den definido los requisitos, luego vienen con algunos en su propio.
3) de Matlab punto fijo caja de herramientas es ideal para la simulación de sistemas de control y las aplicaciones de DSP, pero podría no tener acceso a eso. Es una gran manera de probar un diseño antes de código.
4) Diseño viene primero, después de la codificación, a continuación, la simulación.
5) establecimiento inflexible de tipos, también hay que tener nombres de señales consistentes en pcb esquemático y hdl. (esta es también la razón de que me gusta mucho VHDL más de verilog.