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 bitsA 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