About This Blog

Este es un blog dedicado al módulo de "Desarrollo y Construcción de Prototipos Electrónicos", el cual pertenece al segundo año del ciclo "Desarrollo de productos electrónicos", en el que se irá colgando cualquier tema que sea abordado en dicho ciclo.

Máquina de estados

Posted by Diego Lavín 15:58, under | No comments

Una máquina se desplaza de derechas (D) y de izquierdas (I) y dos finales de carrera (A y B). Al actuar sobre el pulsador (P) la máquina se desplaza de A hacia B efectuando una operación (X). Al llegar a B regresa hasta A sin efectuar ninguna operación.
Al llegar a A inicia un nuevo movimiento hacia B realizando una operación (Y). Cuando llega a B vuelve a A sin ejecutar ninguna operación y se queda en reposo.

Contador BCD

Posted by Diego Lavín 14:15, under | No comments


El enunciado del ejercicio es el siguiente: Implementar en el CPLD XC9572 un Contador BCD con permiso de reloj y borrado asíncrono. Su salida será decodificada a 7 segmentos sobre una DISPLAY de cátodo con de 7 segmentos.

Creamos un nuevo proyecto al igual que en los anteriores ejercicios. Colocamos un contador BCD, al que ya hemos añadido el BUFG para minimizar el skew

Tenemos que diseñar el decodificador, en este caso, en código VHDL. Seguimos los siguientes pasos:




Continuamos y se nos crea un fichero .vhd, si nos adentramos en él veremos un código como este



Tenemos las librerias creadas y la cabecera pero nos falta el programa en si, que lo podemos conseguir de las plantillas VHDL que el mismo programa nos proporciona. Para ello vamos a Edit-> Language Templates y buscamos un display de 7 segmentos, copiamos el código que nos haga falta en nuestro programa y ya estará



Teniendo en cuenta que dependiendo si el display es de ánodo común o de cátodo común habrá que cambiar los ceros por unos y viceversa (en la imagen es ánodo común) así que nosotros lo vamos a cambiar.
Ahora vamos a crear el símbolo y conectamos todo



Creamos el Test Bench como ya hemos hecho en otros ejercicios y nos vamos al ModelSim

 
Asignamos los pines como en la imagen


Y finalmente programar en la tarjeta, como ya hemos visto.

4-Bit binary counter

Posted by Diego Lavín 13:15, under | No comments


El siguiente ejercicio es un contador de 4 bit´s con permiso de reloj y borrado asíncrono

Seguimos los pasos del ejercicio anterior para crear un nuevo proyecto. Añadimos el CB4CE, un contador que Xilins da por defecto




Para minimizar el skew añadiremos un BUFG en el reloj



Vamos a crear un símbolo de un esquema, para ello añadimos un nuevo fichero fuente y creamos el siguiente esquema



Una vez hecho, creamos el símbolo





Ahora ya podemos seleccionarlo como si fuera un componente más y lo conectamos todo


En este ejercicio vamos a crear un fichero de restricciones para la localización de pines. Para ello vamos a Project->New Source->Implementation Constraints File.
Ahora se habrá creado un fichero .UCF en el cuál podremos poner el orden de pines deseado.



Solo queda crear el Test Bench y programarlo, exactamente igual que en el ejercicio anterior





Implementation of a 1-bit full adder in the XC9572 CPLD

Posted by Diego Lavín 13:40, under | No comments


We will use  ISE Webpack 10.1, that is a Xilinx´s application and a CPLD XC9572.
Other aplication that we have to use is ModelSim that is another application whose function is to simulate the exercise.

Our first exercise is: IMPLEMENT A 1 BIT ADDER using a CPLD (XC9572, in my case).


To understand the operation of our adder, we have to make a true table:


This table contains two input data (A and B) + the input Carry and a output data + the output Carry.

If we apply Karnaugh, our result is as follows:



The next step is to design  a schematic circuit. For this, we have to open  ISE Webpack 10.1 (Project Navigator) and we must select 'File'--> 'New Project'
Now, will be opened a window like this:

Here, we must put the Project name (sumador) and the Project location (C:\Xilinx\Projects\sumador). At last we need to select the type of source for the project that will be 'Schematic'.

In the next window, we have must to configure our device properties. The device and the family are XC9572 and XC9500 CPLDs respectively. Our Package is PC84 and the speed -7.
Later we must select the programming language that we prefer, I prefer VHDL. 
To simulate the program, I have to use ModelSim simualator.


In the new window, we select Schematic for the design and we put the Location and the File name. 
In the next window we click next because we don´t need to add any source.

Now will be opened a new window with the working environment. 
We have to go to 'Symbols' tab for select our components. In the window´s top there is a toolbar where we can select different options like 'Add wire' or 'Add Net name'.


We begin to select the components (2 AND gates, 2 XOR, 1 OR gate) and we add the nets.

Create the Test Bench file, for this, we need to create a new source and we select Test Bench Waveform.
In this window we should select the internal clock like in the image:



Now, we have to check the true table of the counter. We need to configure the time inputs for realize the simulation.



We have to add the Test Bench file to project and it will be opened ModelSim with the simulation.


Finally, we have to program the project in a CPLD.
For this we need a JTAG


An ATX power source






and the CPLD 'TAD-XC9572'.




At first we have to generate our programming file (.JED file)



When we had generated the .JED, we must go to Impact (Xilinx´s application). And program the CPLD.


Tarjeta de circuito impreso con PIC18F4550

Posted by Diego Lavín 15:48, under | No comments

Siguiendo el desarrollo de nuestro PROYECTO en OrCAD Capture, es hora de pasar a diseñar lo que será el circuito impreso con otra aplicación de OrCAD, el Layout.


Suponiendo que no existan errores en Capture y hayamos elegido los Footprints adecuados es hora de comenzar nuestra placa en Layout. Para ello abrimos un nuevo proyecto, como se muestra en la imagen, cargando el archivo .MNL que corresponda a nuestro diseño de Capture.

En este punto nos pueden aparecer algunos errores que Capture solo nos marca como Warning, así que atentos.
Una vez esté todo correcto nos debería aparecer una pantalla con todos nuestros componentes.

En la imagen se pueden apreciar todas las conexiones entre componentes en color amarillo pero no están todavía 'hechas' por así decirlo hasta que no realicemos el autoroute.
 
Una vez aquí lo primero que vamos a hacer es crear un borde exterior para la placa, es decir, el contorno. Vamos a la barra de herramientas y veremos un icono llamado Obstacle Tool, lo seleccionamos y podemos dibujar el borde de nuestra placa (para comprobar la medida podemos ir a Options-> System Settings y configurarlo según nos convenga en cada momento).

Ahora vamos a definir las caras para el trazado, seleccionamos el icono View Spreadsheet y Layers y nos aparecerá una ventana que tendrá que quedar, en nuestro caso, así:

Ya que solo vamos a trazar pistas en la cara TOP y BOTTOM.

El siguiente paso es colocar los componentes dentro de nuestro borde, teniendo en cuenta que entre el borde de la placa y el componente tiene que haber una distancia mínima de 1.27mm y entre componentes de 0.76mm. 
Una vez colocado quedará algo tal que así

Para comprobar que no hay errores vamos a Auto-> Design Rule Check-> Clear All-> Placement Spacing Violations y OK. 
Si existe algún error nos lo marcará con un cículo amarillo.

Ahora toca trazar las pistas, lógicamente de manera automática y teniendo en cuenta el grosor de pista que deseamos y la separación entre ellas. Seleccionando la opción Nets del menú.
Para trazarlas vamos a Auto-> Autoroute-> Component y el resultado final es este



Muchas veces no hace todas las pistas por lo que hay que borrarlas con Unroute Board y volver a trazarlas, podemos girar algún componente donde tenga mas pistas para facilitar la labor de trazado o mover de sitio algún componente.
Como vemos, solo hay dos colores: verde y rojo que corresponden a las caras Top y Bottom que antes hemos configurado.


Algo muy recomendable es colocar texto en la cara Top de la placa para tener cierta información sobre que componente es cada uno y así facilitar la labor a la hora de colocar los componentes.


Vamos a hacer un plano de masa en la cara BOT, para ello creamos un obstáculo del tamaño de la placa (como el borde) que sea BOT y vamos a propiedades y seguimos la información de la imagen


Damos OK y quedará algo así. El plano de masa sería toda la parte de color rojo, es decir, sería cobre.


Antes de finalizar debemos crear los ficheros para la CNC (la máquina de taladrado y fresado). En primer paso vamos Window-> Post Process y habrá que configuralo como en la imagen


A continuación vamos a generar los ficheros Gerber y Excellon. Vamos a Options->Gerber Settings y elegimos 3.4 Format, lo demás lo dejamos por defecto, le damos a Save y OK.

Seguidamente vamos a Post Process settings y habilitamos las capas que necesitemos (.GND y .PWR no son necesarias pero las habilitamos porque puden dar errores).

Por último ejecutamos el comando Auto-> Run Post Processor que generará todos los archivos que necesitamos. 

Aquí acabaríamos nuestro diseño en Layout y nos quedaría exportar los ficheros que acabamos de generar al Circuit Cam y posteriormente al Board Master para poder comenzar con el taladrado y el fresado de la placa. 

Primero vamos al CircuitCam e importamos los archivos anteriormente generados y veremos nuestra placa



MCP6S92 SPI FOOTPRINT

Posted by Diego Lavín 17:28, under | No comments

Vamos a crear un Footprint que no existe en Layout, este es el MCP6S92




Y a continuación dejo la librería donde se puede encontrar, su nombre es SOIC_MCP6S92
http://www.badongo.com/file/24283266

Diseño de circuito con el PIC18F4550 en Capture

Posted by Diego Lavín 18:42, under | No comments

Utlizando el Orcad Capture,  hemos propuesto crear un entrenador con el PIC18F4550. Para poder realizar este proyecto deberemos estudiar el datasheet del pic, que podemos ver aquí.

Como he dicho, vamos a utilizar el Orcad Capture y mas adelante utilizaremos el Layout, que son unas aplicaciones de Cadence para el diseño y desarrollo de circuitos electrónicos.

Abrimos Orcad Capture y podemos empezar

Lo primero que debemos hacer es crear la librería del PIC en el Capture, ya que no viene por defecto. Lo que podemos hacer es coger como plantilla cualquier otro pic que ya exista y guiándonos por el datasheet del PIC18F4550, ir modificando cada patilla de nuestra plantilla hasta que sea idéntico al esquema real del pic. Sino es así, a la hora de llevarlo a la realidad nunca funcionará correctamente.


Una vez terminada nuestra plantilla, y todos nuestros pines esten igual que en el datasheet del 18F4550 ya se podrá utilizar en la librería parar realizar el proyecto, vamos avanzando y haciendo las conexiones pertinentes, en este caso con los buses que determinarán los distintos puertos. Así como también deberemos ir colocándo etiquetas a cada pista y pin que utilicemos.


Una vez esté todo etiquetado, es decir, las conexiones hechas empezaremos a diseñar los distintos bloques que contendrá nuestro proyecto. 
Lo primero que vamos a hacer va a ser el RESET y el OSCILADOR EXTERNO. El reset símplemente será un pulsador para poder realizar un reset manual al PIC cuando lo necesitemos. El oscilador externo contiene un cristal de 20MHz, que es para determinar la frecuancia a la que trabajará el pic (su reloj).


Ahora vamos a poner un CONECTOR RIBBON que es un bloque de ampliación por si quisieramos conectar algún periferico externo mas adelante.

El siguiente bloque consistirá en las interrupciones. Habrá dos, una externa y la RB4 con un pulsador cada una para ponerlas a cero.


El siguiente bloque contiene un conector DB9, el cual permitirá la conexión del PIC con el PC mediante una conexión RS-232.

Ahora introduciremos un Display LCD gráfico y otro Display común de 7 segmentos para coformar el bloque de la visualización.


Otro de los bloques que hay es un ICD2 para poder realizar una comunicación en lenguaje Assembler o C con el Mplab. Así podremos programar los distintos integrados que dispondrá nuestra placa.

Seguimos ampliando nuestro futuro entrenador y llega la hora de introducir un teclado matricial, en este caso realizado con pulsadores ya que el coste es mucho mas ajustado que si utilizáramos un teclado matricial ya construido.

Ahora vamos a diseñar puerto serie SPI.
Aquí disponemos de varios bloques realizados con distintos integrados de los que habrá que detenerse en estudiar sus datasheet para comprender su funcionamiento y características: 

Un conversor digital - analógico (DAC) realizado con un MCP4822.
Un serial EEPROM realizado con un 25LC020.
Un sensor de temperatura construido con un TC77.
Un conversor ADC construido con un MCP3204.
Un Amplificador de ganancia programable (PGA) con un MCP6S92 y finalmente
Un potenciómetro de 8 bit realzado con un MCP41010.


También vamos a introducir un potenciómetro como el de la imagen


Y también una fuente analógica ATX (como las que usan los ordenadores) con tensiones de +12V, -12V, +5V, -5V y +3V


Una vez finalizados todos los bloques hay que unirlos y conexionarlos entre sí, ya que hasta ahora cada bloque que hemos hecho lo hemos realizado por separado.



Cuando hayamos realizado todas las conexiones entre los bloques que contendrá la placa nos queda por comprobar los posibles errores que existan. Para ello nos vamos a DRC para que nos muestre el log con todos los errores y warnings existentes



Como veis en la imagen tengo bastantes warning pero no hace falta eliminarlos todos, solo los que nos impidan poder llevar la placa a la realidad.


Aquí terminaría nuestro proyecto en Orcad Capture.

Para seguir el proceso en Layout: AQUÍ