Red de conocimientos sobre prescripción popular - Conocimiento de perdida de peso - Ajuste del ciclo de trabajo de onda cuadrada basado en FPGA

Ajuste del ciclo de trabajo de onda cuadrada basado en FPGA

Le sugiero que primero establezca BZQ y TSQ como constantes y vuelva a intentarlo.

Después de leer tu código, creo que hay varios problemas además del diseño.

1. Verilog no es un lenguaje C. Al implementar la multiplicación y la división, se pueden sintetizar operadores de escritura directa, pero la lógica es más profunda y el tiempo será deficiente. Por ejemplo: if (CNT

2. El primer bloque siempre es muy irregular y no es un circuito sincrónico. Un mejor método de implementación es:

Siempre@(Bosage·BCLK)

Inicio

if(~INICIO)

Inicio

Inicio<=1;

Fin

Fin

3. El sistema no tiene señal de reinicio. Todos los sistemas digitales deben tener un reinicio del sistema. El bloque siempre debe usar una plantilla como esta:

Always@(posedge). mlk o posedge mrst)

Iniciar

IF (mrst)

Iniciar

reg 1 <= 0;

Fin

Otro

Inicio

Si (...)

Inicio

reg 1 <=Ingresar 1;

Fin

Otro

Inicio

reg 1 <=Ingresar 2;

Fin

Fin

Fin

4. Los nombres de señales o registros no distinguen entre mayúsculas y minúsculas. Aunque Verilog distingue entre mayúsculas y minúsculas, ninguna empresa lo permitirá. Generalmente se requieren mayúsculas o minúsculas, sin mencionar el mismo nombre, que solo distingue entre mayúsculas y minúsculas. Por ejemplo, START se puede cambiar a start_in.