Notas de estudio de FPGA (dos): estandarización de códigoverilog

1. Formulario de organización de ingeniería

La organización del proyecto generalmente incluye las siguientes partes, que son doc, par, rtl y sim. doc: generalmente almacena documentos relacionados con el proyecto, incluida la hoja de datos (manual de datos), el plan de diseño, etc., que se utilizan en el proyecto. Sin embargo, para que sea más fácil de ver para todos, los documentos de nuestra placa de desarrollo se recopilan y almacenan en el disco de datos;

par: almacena principalmente archivos de proyecto y algunos archivos de IP utilizados;
 
rtl: Almacena principalmente el código RTL del proyecto. Este es el núcleo del proyecto. El nombre del archivo y el nombre del módulo deben ser consistentes. Se recomienda almacenarlos por separado según el nivel del módulo;
 
sim: almacena principalmente el código de simulación del proyecto. En proyectos complejos, la simulación también es una parte indispensable, que puede reducir en gran medida la carga de trabajo de depuración.
 
2. Declaración del encabezado del archivo
Al principio de cada archivo Verilog, debe haber una declaración. Incluidos los derechos de autor, autor, fecha de creación e introducción del contenido del archivo, como se muestra en la siguiente tabla.
 

3. Definición de entrada y salida

una fila define solo una señal;

② Todas las señales están alineadas;

③ Junte las señales del mismo grupo.
 
4. Definición de parámetros
No se recomienda colocar la declaración de parámetros en el módulo en todas partes;
② Coloque la definición del parámetro inmediatamente después de la definición de entrada y salida del módulo ;
Todos los nombres de constantes, como los parámetros, están en mayúscula.
 
5. Definición de cable / registro
 
① Ponga la definición de reg y cable inmediatamente después del parámetro ;
② Se recomienda juntar las señales con la misma función;
③ La señal debe estar alineada, el registro y el ancho de bit deben estar vacíos por 2 espacios , y el ancho de bit y el nombre de la señal deben estar vacíos por al menos cuatro espacios;
④ El ancho de bit se describe en orden descendente, [6: 0] ;
⑤ El reloj usa el prefijo clk y el reinicio usa el sufijo primero ;
⑥ Las palabras clave de Verilog no se pueden utilizar como nombres de señales;
⑦ Solo se define una señal en una línea.

6 . Nombre de la señal

① La denominación de señales debe reflejar su significado, por ejemplo, FIFO_wr representa la habilitación de lectura y escritura FIFO ;
② Puede utilizar "_" para separar señales, como sys_clk ;
③ No utilice mayúsculas o minúsculas para las señales internas, se recomienda utilizar todas las minúsculas;
④ Utilice minúsculas para el nombre del módulo;
⑤ Para señales activas de bajo nivel, use _n como sufijo de señal;
⑥ Señal asíncrona, utilice _a como sufijo de señal;
⑦ La señal de ritmo retardado puro utiliza _dly como sufijo.
 
7. Bloquear siempre la descripción
Si necesita cuatro espacios en blanco;
② An siempre necesita un comienzo y un final ;
Se requiere un comentario delante de siempre ;
Beign sugiere ponerlo en la misma línea de siempre ;
⑤ Uno siempre y el siguiente siempre debe estar en blanco una línea, no deje en blanco varias líneas;
⑥ La descripción del disparador de reinicio del reloj usa posedge sys_clk y negedge sys_rst_n
⑦ Un bloque siempre contiene solo un reloj y se reinicia;
⑧ La lógica secuencial utiliza una asignación sin bloqueo.
 

8. Asignar método de descripción de bloque

La lógica de asignación no puede ser demasiado complicada, de lo contrario la legibilidad no es buena;
Se requiere un comentario antes de asignar ;
③ La lógica combinatoria utiliza la asignación de bloqueo.
 
9. Espacios y TAB
Debido a que los diferentes intérpretes son inconsistentes con la traducción TAB, se recomienda no usar TAB y usar todos los espacios.
 
10. Comentarios
① La descripción del comentario debe ser clara y concisa;
② No utilice descripciones absurdas y redundantes;
③ La descripción del comentario debe usar "//";
④ La descripción del comentario debe estar alineada;
⑤ Deben agregarse notas entre el código central y la definición de la señal.
 
11. Creación de instancias del módulo
 
① La instanciación del módulo moudle está representada por u_xx .
 
12. Otro
① Cuanto más simple sea el código, mejor, para que sea fácil de leer y comprender para otros;
② No utilice declaraciones de bucle como repetir ;
③ La declaración inicial no se usa en el código RTL , excepto para el código de simulación;
④ Evite generar pestillos Latch , como si no hubiera otra rama en la lógica combinatoria y el caso carece de una declaración predeterminada ;
⑤ Evite el uso de una gramática demasiado complicada y poco común, que puede resultar en una menor optimización del sintetizador gramatical.
 
 
 
 
¡Buen estilo de codificación es mi insistencia!

 

 
 
 

 

Supongo que te gusta

Origin blog.csdn.net/qq_25479231/article/details/103616641
Recomendado
Clasificación