demora (varios nosotros) para la señal PWM

R

robertzhan

Guest
Queridos todos,

Me gustaría hacer una rutina para tener un retraso de señal PWM, acerca de varios microsegundos, al igual que la bodega en la función.Sin embargo, surge el siguiente error:

Error: Error de VHDL en soft_switching.vhd (70): no se puede inferir registro para la señal "P01: counter [0]", porque la señal no tiene valor fuera de su flanco de reloj

No sé por qué.Esperamos sus sugerencias.
Si no se puede hacer así, cómo hacer una rutina para realizar la función de varios nos demora para la entrada de la señal PWM.

Gracias de antemano.
IEEE biblioteca;
USE ieee.std_logic_1164.ALL;
Ieee.std_logic_unsigned.all USO;- Declaración de la entidad

Soft_switching entidad es
- (()) ALTERA_IO_BEGIN NO RETIRE esta línea!
PUERTO
(
PWM: in std_logic;
ILT: in std_logic;
CLK: in std_logic;
pwm_delay: out std_logic;
Ficha: out std_logic;
TL: out std_logic
);
- (()) ALTERA_IO_END NO RETIRE esta línea!

Soft_switching END;- Arquitectura de Administración

Soft_switching_architecture ARQUITECTURA DE soft_switching ES

- Señal de contador: integer: = 0;
SEÑAL bandera: bit;
SEÑAL pwm_temp: std_logic;

BEGIN

P01: process (clk, PWM) es

variable contador: integer: = 0;

empezar
PWM caso es
cuando '1 '=>
loop1: bucle
if (clk'event Y = '1 'Y clk'last_value = '0') entonces
Contador: = contador 1;
END IF;
salida loop1 cuando el contador = 20;
Loop End loop1;
pwm_delay <= '1 ';
Contador: = 0;

cuando '0 '=>
LOOP2: bucle
if (clk'event Y = '1 'Y clk'last_value = '0') entonces
Contador: = contador 1;
END IF;
salida LOOP2 cuando el contador = 20;
Loop End LOOP2;
pwm_delay <= '0 ';
Contador: = 0;
caso extremo;

proceso de fin de p01;

Soft_switching_architecture END;

 
Hola

En el programa, que intentó un proceso para sincronizar con el reloj.Pero lo han hecho dentro del proceso.No funciona.

Si desea sincronizar el diseño de un reloj, usted debe comprobar la activación del reloj en el comienzo del programa.

Y también la sentencia de bucle no funciona, porque no se puede implementar en hardware.

Puede cambiar el programa como este:

IEEE biblioteca;
ieee.std_logic_1164.all uso;
ieee.std_logic_unsigned.all uso;

Soft_switching entidad es
PUERTO
(
PWM: in std_logic;
ILT: in std_logic;
CLK: in std_logic;
pwm_delay: out std_logic;
Ficha: out std_logic;
TL: out std_logic
);

Soft_switching END;- Arquitectura de Administración

Soft_switching_architecture ARQUITECTURA DE soft_switching ES

SEÑAL bandera: bit;
SEÑAL pwm_temp: std_logic;
contador de la señal: std_logic_vector (4 downto 0);
BEGIN

P01: process (clk, PWM) es
empezar

if (clk'event Y = '1 'Y clk'last_value = '0') entonces

if (contador = "10100") entonces

si pwm = '1 ', entonces
pwm_delay <= '1 ';
algo más
pwm_delay <= '0 ';
END IF;

contador <= "00000";

algo más
contador <= contador 1;
END IF;

END IF;

proceso de fin de p01;

Soft_switching_architecture END;De hecho, no entendí lo que estás planeando hacer.Pero esta es la modificación de derecho para el programa dado por usted.

Para la variable de contador, puede cambiar la longitud del vector sobre la base de su requerimiento.Recuerdos,
Vishwa

 
Estimado Vishwa
Gracias por su amable ayuda.Sin embargo, todavía no cumple mi petición.La señal del borde de momento no es muy precisa y PWM con un retraso se ha visto afectada.El archivo adjunto da la cifra de mostrar mi objetivo.¿Podría decirme cómo modificar la rutina para garantizar el tiempo de retraso y el PWM después Sigal a ser menos influenciado.

Muchas gracias.

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Sonreír" border="0" />Robert Zhan
Lo sentimos, pero es necesario iniciar sesión para ver este archivo adjunto

 
Hola

¿Desea generar la réplica de la señal PWM a la salida después de algún retraso?

Podría entender que desea generar la PWM_delay como la versión retardada de la señal PWM.Estoy en lo cierto.Si es así, hágamelo saber.Te puedo dar una mejor solución.

Explique claramente.Recuerdos,
Vishwa

 
Estimado Vishwa,
Gracias por su amable ayuda.
Sí, quiero que la réplica de la señal PWM a la salida después de cierto tiempo (varios microsegundos), también podría considerarse como la versión retardada de la señal PWM.

Gracias.

Recuerdos

Robert Zhan

 
Hola

Para obtener la versión retardada de la señal PWM, puede utilizar el programa siguiente.IEEE biblioteca;
ieee.std_logic_1164.all uso;
ieee.std_logic_unsigned.all uso;

Soft_switching entidad es
PUERTO
(
PWM: in std_logic;
ILT: in std_logic;
CLK: in std_logic;
pwm_delay: out std_logic;
Ficha: out std_logic;
TL: out std_logic
);

Soft_switching END;- Arquitectura de Administración

Soft_switching_architecture ARQUITECTURA DE soft_switching ES
clk_divider señal: std_logic_vector (7 downto 0);
contador de la señal: std_logic_vector (4 downto 0);
2bit_reg señal: std_logic_vector (1 downto 0);
BEGIN

PO1: proceso (clk)
empezar
if (event CLK y = '1 ') then
clk_divider <= clk_divider 1;
END IF;
proceso de fin de p01;

P02: El proceso (clk_divider (7), PWM) es
empezar

if (clk_divider (7) "evento y clk_divider (7) = '1 ') entonces

if (contador = "00010100") entonces

pwm_delay <= 2bit_reg (1);
2bit_reg (1) <= 2bit_reg (0);
contador <= "00000000";

algo más
contador <= contador 1;
END IF;

2bit_reg (0) <= pwm;

END IF;

proceso de fin de p02;

Soft_switching_architecture END;

En este programa, el último valor de PWM se almacena en 2bit_reg (0).Tras algunas demoras, se puede cambiar la salida.Para cambiar el retraso como por su exigencia, puede cambiar cualquiera de clk_divider longitud o duración de venta libre o ambos.

Si cambia la longitud clk_divider, entonces usted tiene que chenge la lista de sensibilidad proceso con poco clk_divider nuevo.Aquí actúa como el reloj interno con una frecuencia baja (mayor demora).

Creo que esta modificación es suficiente para obtener la versión en diferido de PWM.Pero todavía no pude conseguir lo que es el uso de la señal de salida ficha y TL.Vale.All the best.

Recuerdos,
Vishwa

 
Otra forma de retrasar la señal para pasar a través de un registro de desplazamiento de largo.Que permite múltiples transiciones durante el tiempo de retardo.Si el dispositivo tiene memoria RAM disponible, entonces se puede configurar como un registro de desplazamiento muy largo.

 
Estimado Vishwa y echo47
Lo sentimos expresar mi agradecimiento tan tarde ya que estoy en comisión de servicio los últimos días.
Gracias por sus sugerencias positivas, especialmente insistente Vishwa ayuda y el apoyo para que mi problema resuelto más rápidamente que las expectativas.

All the best.

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Sonreír" border="0" />Mis mejores deseos,

Robert Zhan

 

Welcome to EDABoard.com

Sponsor

Back
Top