Cómo reducir la demora del proceso usando VHDL en xilinx

1

Para el código que escribí, estoy dando mis 19 muestras de una señal sinusoidal al pegarlas en el banco de pruebas, estoy usando un proceso en el código donde hago todos los cálculos que quiero hacer, pero en el simulador Se está demorando mucho tiempo (aproximadamente 19 ms) para calcular la salida. Ayúdame a eliminar este retraso.  A continuación se muestra la imagen donde el campo superior es el reloj, las siguientes tres son entradas y luego tenemos tres salidas y, por último, el período de tiempo. aquí 220 es el máximo. rango que le di a la salida.  código:

entitytrial_6isgeneric(width:integer:=18);Port(clk:instd_logic;V1,V2,V3:inintegerrange-220to220;Va,Vb,Vc:outintegerrange-220to220);endtrial_6;architectureBehavioraloftrial_6istypememoryisarray(0towidth-1)ofintegerrange-220to220;signalREG_1:memory:=(others=>0);signalREG_2:memory:=(others=>0);signalREG_3:memory:=(others=>0);beginprocess(clk,REG_1,REG_2,REG_3)variableflag:integerrange0towidth:=0;beginifrising_edge(clk)thenREG_1(flag)<=V1;REG_2(flag)<=V2;REG_3(flag)<=V3;flag:=flag+1;if(flag=width)thenVa<=((REG_1(0)+REG_2(0)+REG_3(0))/3);Vb<=((REG_1(0)+REG_2(5)+REG_3(11))/3);Vc<=((REG_1(0)+REG_2(11)+REG_3(5))/3);flag:=0;endif;endif;endprocess;endBehavioral;

bancodepruebas:-Heusadounperíododerelojde1.11ms

    
pregunta dev

2 respuestas

3

Como se mencionó, el reloj que usa en su banco de pruebas ciertamente no coincide con el reloj que tiene en su diseño real. El tiempo que toma el proceso para entregar su resultado depende directamente de su tasa de reloj.

    
respondido por el Humpawumpa
3

No podrá eliminar el retraso por completo, ya que es fundamental para el código que ha publicado.

El indicador de variable se actualiza en cada flanco ascendente de clk como es REG_1, REG_2 y REG_3. Cuando el valor de flag = width (que es 18 en este caso) las salidas Va, Vb y Vc se actualizan con los valores de los cálculos. Como la marca comienza desde 0, esto provocará que esta actualización ocurra después de exactamente 19 ciclos de reloj.

Este retraso es necesario para permitir que REG_1, 2 y 3 se rellenen con los valores de muestra entrantes. Podría reducir la demora a 12 modificando el ancho genérico, ya que el elemento en sus cálculos es REG_3 (11). Sin embargo, es probable que esto tenga implicaciones para el sistema más amplio, ya que este ancho puede elegirse deliberadamente. También puede cambiar la comparación Flag = width para Flag = 12.

O podría usar un reloj más rápido que retendrá el número de ciclos de reloj pero reducirá la latencia absoluta.

    
respondido por el Vance

Lea otras preguntas en las etiquetas