Controlador de PWM sobre bus Avalon

Una de las principales ventajas del SoC es el desarrollo de componentes para una plataforma para la reusabilidad de los mismos

El desarrollo de los componentes debe acoplarse a un conjunto de normas que faciliten el acoplamiento de los distintos componentes

El desarrollo de sistemas basados en procesador suelen tener como nexo de unión un determinado bus al/del que cuelgan todos los demás componentes del sistema: timers, memorias, módulos de comunicaciones y demás componentes

Cuando se crea un driver para un componente se debe seguir el protocolo que permite conectar cualquier componente al procesador

En el caso de Altera, el sistema se basa en el procesador Nios y tiene como bus base el bus Avalon. Por consiguiente, la creación de un controlador Pulse Width Modulation (PWM) requiere de las siguientes etapas:

- Creación del componente PWM

- Desarrollo del wraper (envoltorio) que conecta el componente PWM al bus Avalon

Creación del componente PWM

La función del componente PWM consiste en generar un pulso de amplitud variable a requerimiento del usuario

El núcleo del PWM es un contador de periodo limitado, que tiene como salida un pulso de amplitud menor o igual al período

Los parámetros fundamentales (ambos programables) que definen al PWM son:

- El período
- La amplitud del pulso

De acuerdo con ello, la entrada/salida del PWM se compone de

- Las señales de entrada del PWM, que son

· El reloj, la señal de nreset (activa por 0-lógico) y la señal de enable (de capacitación de conteo)
· Las señales período y pulso

- Y la salida es PW (amplitud d pulso)

El código del componente del PWM es:

La figura siguiente muestra un resultado de simulación del componente PWM. En ella se comprueba que

La señal count (interna) de la gráfica representa el estado del contador. La señal periodo limita el valor máximo al que llega

La señal pulso es la responsable del ancho de la señal de salida pw

Creación del wrapper

El wrapper impone al componente

- Las señales de entrada/salida que entran al driver en su conjunto. Son las responsables de mantener el protocolo de comunicación con el resto de componentes que configuran el procesador

- Un conjunto de registros para las señales que se conectan al bus. En este driver se necesitan tres registros:

· El registro pulso, con ancho de flujo de 16 bits
· El registro período, con ancho de flujo de 16 bits
· El registro enable, con ancho de flujo de 1 bits

A cada uno de estos registros se le asocia una dirección que sirve para que el procesador reconozca el componente (y registro) con el que se comunica

El método de funcionamiento del driver, pues, es el siguiente

- Inicialmente el procesador carga, a cada registro, un determinado valor

- Acto seguido, y cuando capacita la señal enable, el PWM empieza a proporcionar pulsos, de período el valor almacenado en el registro período, y de amplitud el valor almacenado en el registro de amplitud

La figura siguiente muestra el conjunto de señales, el wraper y el PWM que configuran el componente

El código global del wraper se encuentra en . Aunque de lectura bastante dura, básicamente consta de

- La definición de los registros del wrapper
- El control global del PWM mediante las señales que interactúan con el bus

Finalmente, el PWM y el wrapper forman el driver. Tan sólo es necesario una descripción estructurada con ambos componentes para crear el driver final

Anterior
Volver a inicio curso
Volver a inicio capítulo


WcN - Joan Oliver. Diseño de circuitos digitales con VHDL: IPs