pub:psoc_creator_intro

Introducción al PSOC Creator

El programa se puede obtener a través de la página web de Cypress Semiconductor. Para obtenerlo será necesario registrarse en Cypress Semiconductor.

Una vez se inicia por primera vez el programa nos encontramos con la pantalla de bienvenida, como se muestra en la siguiente imagen.

Creación de un proyecto nuevo

Crearemos un proyecto para aprender a utilizar el programa mediante un ejemplo. Hacemos click en File → New → Project y creamos un nuevo proyecto. Se nos pedirá el modelo del hardware sobre el que se llevará a cabo el diseño. En el caso del PSOC 5lp se debe seleccionar Target Device y posteriormente <Launch Device Selector…>, tal y como indica la próxima imagen.

Una vez en el selector de dispositivo debemos buscar el modelo del SoC que se encuentra en la placa de prototipado PSOC 5lp prototyping kit. Este es el CY8C5888LTI_LP097, como muestra la imagen. Para encontrar el dispositivo es posible utilizar filtros en función de las características de hardware que integra.

Seleccionado el dispositivo correcto, haremos clic en OK y continuamos hasta que se nos pregunta si queremos utilizar un ejemplo de código o bien un esquemático vacío. Puesto que muchas de las funciones del PSOC Creator caen fuera del ámbito de aplicación de este proyecto, simplemente seleccionaremos Empty schematic.

Crearemos un espacio de trabajo nuevo (Un espacio de trabajo puede contener múltiples proyectos), y le damos un nombre tanto al espacio de trabajo como al proyecto.

Estructura del proyecto

En la ventana principal del PSOC Creator podremos observar en la sección izquierda la jerarquía del proyecto. En este caso se tienen los siguientes ficheros:

  • TopDesign.cysch: Esquemático que contiene los módulos de lógica programable que se introducirán en la configuración, así como la interconexión de los módulos.
  • miProyectoDePrueba.cydwr: Fichero de configuración del SoC. Contiene múltiples configuraciones de sistemas como relojes, mapeo de pines de entrada/salida, rutado analógico, interrupciones, etc.
  • main.c: Contiene la función main() que es llamada cuando inicia el procesador ARM Cortex-M3.

En la ventana podemos ver:

  • A la izquierda: El explorador del espacio de trabajo. Podemos encontrar los ficheros contenidos en el espacio de trabajo. Vemos que dentro del mismo se encuentra el proyecto generado y los ficheros que se comentaba anteriormente. Es importante recordar que hay una tira vertical de etiquetas para cambiar el contenido del explorador. La pestaña Source muestra los ficheros fuentes de código y esquemáticos del diseño. La pestaña Components muestra los componentes Verilog que se han creado para uso dentro del espacio de trabajo actual. Que estos componentes se hayan definido no significa que se estén usando en alguno de los esquemáticos del proyecto, para ello será necesario incluirlos en el esquemático.
  • En el panel central: Esquemático sobre el que se dispondrán los módulos que conformarán la configuración de la lógica programable del PSOC.
  • A la derecha: Catálogo de componentes. En el se encuentran los pines de E/S que es posible incrustar en el diseño. Entre otras cosas, se encuentran relojes y módulos de todo tipo, como contadores, módulos de comunicación serie (UART), etc.

En general, no se deberá utilizar módulos hardware predefinidos, puesto que el proyecto se describirá por completo en Verilog, siempre que sea posible (los elementos como relojes y pines están predefinidos y no son sintetizables mediante lógica programable).

Ejemplo de diseño

Vamos a llevar a cabo un diseño de prueba. En este caso, utilizaremos únicamente la lógica programable, y por tanto, no será necesario editar el fichero main.c puesto que no es un requisito del proyecto que deben llevar a cabo los alumnos de la asignatura.

Este ejemplo de diseño consistirá en crear una modulación de anchura de pulso (PWM) con un ciclo de trabajo del 50% y una frecuencia modificable mediante el pulsador disponible en la placa de prototipado. La salida del PWM se llevará a un LED presente en la placa.

Comenzamos planteando el diseño. Se tendrán los siguientes elementos:

  • Entrada del botón.
  • Salida del LED.
  • Módulo Verilog para llevar a cabo el PWM, que se implementará mediante un contador binario.
  • Señal de reloj de frecuencia conocida.
Módulo Verilog

Para generar el módulo cambiamos la vista del explorador del espacio de trabajos a la pestaña Components. Una vez nos encontramos en esta pestaña hacemos clic derecho sobre el Proyecto y clicamos en Add Component Item… para generar el módulo.

Una vez se abre el cuadro de diálogo, seleccionaremos Symbol Wizard y le proporcionaremos un nombre al módulo.

La siguiente ventana nos indica que introduzcamos los puertos de entrada/salida del módulo. Se configurarán tal y como se observa en la siguiente imagen.

En la siguiente ventana se podrá editar la representación gráfica del módulo. Nosotros pasaremos directamente a editar la descripción Verilog del módulo. Para ello, se hace clic derecho sobre el área de esquemático, no sobre el componente, y se presiona en Generate Verilog.

Introduciremos el siguiente código, que consta de un contador del cual se toma como salida uno de sus bits, que será el que produzca el PWM.

//`#start header` -- edit after this line, do not edit this line
// ========================================
//
// Copyright YOUR COMPANY, THE YEAR
// All Rights Reserved
// UNPUBLISHED, LICENSED SOFTWARE.
//
// CONFIDENTIAL AND PROPRIETARY INFORMATION
// WHICH IS THE PROPERTY OF your company.
//
// ========================================
`include "cypress.v"
//`#end` -- edit above this line, do not edit this line
// Generated on 08/29/2016 at 01:04
// Component: PWM_Test
module PWM_Test (
	output  L,
	input   B,
	input   CLK
);
 
//`#start body` -- edit after this line, do not edit this line
 
//        Your code goes here
 
    reg [9:0] count;
 
    always@(posedge CLK)
      count <= count + 1;
 
    assign L = B ? count[9] : count[7];
 
//`#end` -- edit above this line, do not edit this line
endmodule
//`#start footer` -- edit after this line, do not edit this line
//`#end` -- edit above this line, do not edit this line

Inicialmente, dado que no hay reset en el sistema, el valor de count será indeterminado, pero el sistema funcionará sin problemas.

Una vez se ha introducido el código del módulo, guardamos el proyecto y deberemos insertar el módulo en el esquemático TopDesign, que es el que contiene el proyecto. Para ello en la ventana derecha de componentes, se deberá seleccionar la pestaña Default, en la que se pueden encontrar los componentes del proyecto.

Inserción de los pines de Entrada/Salida

Para insertar los pones, la ventana de componentes debe tener seleccionada la pestaña Cypress, y obtenemos los pines de entrada y salida de la carpeta Ports and Pins.

Arrastramos un pin de entrada y un pin de salida al esquemático, y los conectamos al módulo PWM. Arrastraremos también el reloj de la carpeta System.

Ahora pasamos a configurar los pines. En el caso de la placa PSOC 5lp Prototyping kit El botón y el led están conectados de la siguiente forma.

Esto es importante en el caso del interruptor, puesto que el interruptor sólo puede llevar el pin a masa, pero no puede llevarlo a Vdd. Para ello, necesitaremos activar una resistencia de pull-up tal y como se muestra a continuación en el menú del pin haciendo doble clic sobre el mismo.

Esta resistencia permitirá que el pin se encuentra en alto mientras que no se pulse el botón. De no activarse, el botón se encontraría en estado de alta impedancia. Para activar la resistencia se selecciona el Drive Mode de Resistive pull-up. Se ha modificado el nombre del pin para que corresponda con su función.

En cuanto al led, no es necesario modificarlo, puesto que por defecto el drive mode está configurado a strong drive, que es el necesario para llevar el LED a ambos estados y proporcionar suficiente corriente en ambos. De nuevo, Se ha modificado el nombre del pin para que corresponda con su función.

Por último, se hace doble clic sobre el reloj para seleccionar su fuente (A partir de qué reloj del PSOC se generará) y su frecuencia. Utilizaremos el ILO que es un reloj interno de baja frecuencia, y lo configuramos a 1kHz, como viene por defecto.

El circuito debe quedar de la siguiente forma:

Las conexiones en azul sólo indican el hardware externo y no son necesarias, son sólo para referencia del usuario.

Asignación del botón y el LED a los pines del PSOC5lp

Gracias a la guía de usuario, sabemos que el Pin 2.2 corresponde al Botón. Por otro lado, el Pin 2.1 Corresponde al LED. Es necesario indicar esta información al proyecto. Para ello, abrimos el fichero miProyectoDePrueba.cydwr y lo modificamos tal y como aparece en la siguiente imagen.

Ejecutando el proyecto

Para ejecutar el proyecto, primero lo guardamos y conectamos la placa de desarrollo al ordenador. Entonces, se hace clic sobre el botón de programar, que se encuentra en la barra de herramientas superior y tiene forma de circuito integrado.

Se sintetiza en ese instante el diseño Verilog de cada módulo y se crea un fichero de programación que se transfiere a la placa de desarrollo. Una vez terminada la programación, la placa debe exhibir este comportamiento:

  • pub/psoc_creator_intro.txt
  • Última modificación: 2020/09/28 11:44
  • (editor externo)