cu16 proyecto cu16 - unlp...retardos en forma independiente al microcontrolador (uc).--programable...

26
CU16 PROYECTO CU16 EJEMPLO DE UTILIZACIÓN DEL MICROCONTROLADOR uC16 COMO PLC (CONTROLADOR LÓGICO PROGRAMABLE) BÁSICO.

Upload: others

Post on 06-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CU16 PROYECTO CU16 - UNLP...retardos en forma independiente al microcontrolador (uc).--programable con rango de 16 bits. --divisor de reloj de entrada programale (x16, x32, …., x2048).--salida

CU16

PROYECTO CU16

EJEMPLO DE UTILIZACIÓN DEL MICROCONTROLADOR uC16 COMO

PLC (CONTROLADOR LÓGICO PROGRAMABLE) BÁSICO.

Page 2: CU16 PROYECTO CU16 - UNLP...retardos en forma independiente al microcontrolador (uc).--programable con rango de 16 bits. --divisor de reloj de entrada programale (x16, x32, …., x2048).--salida

CU16

L1

SW0

SW2

SW0SW1

SW0

SW2

L1

L2 L3

EJEMPLO 1: SIN ENCLAVAMIENTO

PLC

SW0 SW1 SW2

L2 L3 L4

PB0 PB1 PB2 PORT B

PORT APA1 PA2 PA3 PA4

Page 3: CU16 PROYECTO CU16 - UNLP...retardos en forma independiente al microcontrolador (uc).--programable con rango de 16 bits. --divisor de reloj de entrada programale (x16, x32, …., x2048).--salida

CU16ECUACIONES LÓGICAS: L1 = SW0; L2 = SW0 • SW2; L3 = ( SW1 + SW2 ) • SW0

LEER PORT B

BIT0 PB=0?

SI

NO

(PA) <- 0

BIT1 PA <- 0 BIT1 PA <- 1

EJEMPLO PARA PROGRAMAR "L1"

LEER PORT B

BIT0 PB=0?

SI

NO

(PA) <- 0

BIT2 PA <- 0

BIT2 PA <- 1

EJEMPLO PARA PROGRAMAR "L2"

BIT2 PB=0?

NO

SI

Page 4: CU16 PROYECTO CU16 - UNLP...retardos en forma independiente al microcontrolador (uc).--programable con rango de 16 bits. --divisor de reloj de entrada programale (x16, x32, …., x2048).--salida

CU16

PLC

SW0 SW1 SW2

L1 L2 L3 L4

SW0

SW1

L4

PB0 PB1 PB2 PORT B

PORT APB1 PB2 PB3 PB4

EJEMPLO 2: CON ENCLAVAMIENTO

SW1 ACTÚA COMO RESET POR NIVEL.SW0 ACTÚA COMO SET POR NIVEL PERO DEJA A "L4" EN SET HASTA QUE ACTÚE NUEVAMENTE SW1.

LATCH

Page 5: CU16 PROYECTO CU16 - UNLP...retardos en forma independiente al microcontrolador (uc).--programable con rango de 16 bits. --divisor de reloj de entrada programale (x16, x32, …., x2048).--salida

CU16

IF SW1 = 1 THEN L4 <-0ELSIF SW0=1 THEN L4 <-1ENDIF

PSEUDOCÓDIGO EN VHDLLEER PORT B

SW1=1?

SI NO

(0800) <- 0

BIT4 PA <- 0

SW0=1?

MEMORIA 0800 PARA ALMACENAMIENTODE ESTADO DE "L4".

(0800)=0?

(0800) <- 0

SI

NO

NO

SI

BIT4 PA <- 1

(0800) <- 1

EJEMPLO PARA PROGRAMAR "L4"

DISCUSIÓN:CÓMO SE PUEDE HACER PARA TEMPORIZAR ELESTADO DE L4 DURANTEEL ENCENDIDO ..???

Page 6: CU16 PROYECTO CU16 - UNLP...retardos en forma independiente al microcontrolador (uc).--programable con rango de 16 bits. --divisor de reloj de entrada programale (x16, x32, …., x2048).--salida

CU17

PROYECTO CU17

DISEÑO EN VHDL DE UN TIMER PROGRAMABLE DE 16 BITS, TIMERØ.PERMITE GENERAR TIEMPOS DE PRECISIÓN PARA SU EMPLEO COMORETARDOS EN FORMA INDEPENDIENTE AL MICROCONTROLADOR (uC).--PROGRAMABLE CON RANGO DE 16 BITS. --DIVISOR DE RELOJ DE ENTRADA PROGRAMABLE (X16, X32, …., X2048).--SALIDA DE FIN DE CONTEO PARA SER USADA COMO AVISO DE TIEMPO

ALCANZADO.

Page 7: CU16 PROYECTO CU16 - UNLP...retardos en forma independiente al microcontrolador (uc).--programable con rango de 16 bits. --divisor de reloj de entrada programale (x16, x32, …., x2048).--salida

DIVISORDE

FREC.

clocktmr

selclocktmr(2...0)

entradatmr (15...0)

opselectmr

Contador binarioregresivo de 16 bits

precargable(DOWNCOUNTER)

salidatmr

TIMER_0CU17

Page 8: CU16 PROYECTO CU16 - UNLP...retardos en forma independiente al microcontrolador (uc).--programable con rango de 16 bits. --divisor de reloj de entrada programale (x16, x32, …., x2048).--salida

Divisor de reloj de entradaprogramable (8 opciones:desde x16 hasta x2048).

La salida se pone a '1'al llegar el conteo a "0".Se resetea al poner laentrada opselectmr en '0'.

Diseño de contadorregresivo con precargasincrónica y salida deconteo nulo.

CU17 TIMER_0

Page 9: CU16 PROYECTO CU16 - UNLP...retardos en forma independiente al microcontrolador (uc).--programable con rango de 16 bits. --divisor de reloj de entrada programale (x16, x32, …., x2048).--salida

CU17 TIMER_0

Page 10: CU16 PROYECTO CU16 - UNLP...retardos en forma independiente al microcontrolador (uc).--programable con rango de 16 bits. --divisor de reloj de entrada programale (x16, x32, …., x2048).--salida

Aquí se genera el aviso de conteo nulo,luego de 64 us desde la habilitación.

clocktmr [ns] x div frec. x entradatmr = 20 ns x 32 x 100 = 64.000 ns

CU17 TIMER_0

Page 11: CU16 PROYECTO CU16 - UNLP...retardos en forma independiente al microcontrolador (uc).--programable con rango de 16 bits. --divisor de reloj de entrada programale (x16, x32, …., x2048).--salida

INSTRUCCIONES ASOCIADAS CON TIMER0:

LOAD_TMR0

JUMP_IF_TMR0_IS_Z

CU17 TIMER_0

Page 12: CU16 PROYECTO CU16 - UNLP...retardos en forma independiente al microcontrolador (uc).--programable con rango de 16 bits. --divisor de reloj de entrada programale (x16, x32, …., x2048).--salida

SignalTap II Logic Analyzer

Sergio Noriega 2018

Page 13: CU16 PROYECTO CU16 - UNLP...retardos en forma independiente al microcontrolador (uc).--programable con rango de 16 bits. --divisor de reloj de entrada programale (x16, x32, …., x2048).--salida

Herramienta empleada cuando es necesario realizar una verificación funcional del diseño empleando el hardware sintetizado en la FPGA. Funciona como un analizador lógico donde es posible seleccionar las señales que servirán para disparar el análisis y las que se desean testear.Las señales de trigger pueden ser internas ó externas de entrada a la FPGAbajo estudio (lo mismo que las señales bajo análisis).Dado que la información se almacena en memoria se requieren recursos tanto de lógica como de memoria dedicada de la propia FPGA en estudio.Los resultados pueden verse en el mismo ambiente de diseño en el Quartus yalmacenados luego en un archivo para posterior tratamiento.

Ventajas:Permite realizar un análisis de la respuesta del hardware empleando eventos de disparo provenientes de señales internas ó externas al dispositivo.

Desventajas:No permite realizar una verificación rigurosa del TIMING. Para ello existen otras herramientas de análisis como por ej. TimeQuest Timing Analyzer.

SIGNAL TAP II

Page 14: CU16 PROYECTO CU16 - UNLP...retardos en forma independiente al microcontrolador (uc).--programable con rango de 16 bits. --divisor de reloj de entrada programale (x16, x32, …., x2048).--salida

SIGNAL TAP II

En el siguiente ejemplo se analizará la respuesta de los bits de salida de un contador binario de 8 bits, el cual es sintetizado en la FPGA Cyclone IV de la placa DE0-Nano.Todo el proceso de análisis se realiza con la placa conectada a la PC.Se utiliza como trigger la señal de RESET la cual es externa y asignada al pulsadorKEY0.Los 8 bits de salida del contador serán almacenadas en memoria de la FPGAy posteriormente grabados en un archivo.

Al iniciar el análisis en el mismo ambiente del Quartus, es posible ver el diagrama temporal con la evolución de las señales a testear.

La cantidad de muestras se puede ajustar y depende de los recursos de la FPGA.En este caso se eligen 16 Kmuestras.

Para definir el tiempo de muestreo se usa el reloj de 50 MHz de la entrada.

Page 15: CU16 PROYECTO CU16 - UNLP...retardos en forma independiente al microcontrolador (uc).--programable con rango de 16 bits. --divisor de reloj de entrada programale (x16, x32, …., x2048).--salida

SIGNAL TAP II

reset

enablecount

clk_50mhz

cou

nt

clk

cuen

ta

enableKEY1

resetKEY0

(TRIGGER)

(SAMPLE)

clk_50mhz

divisor_clock_p

Page 16: CU16 PROYECTO CU16 - UNLP...retardos en forma independiente al microcontrolador (uc).--programable con rango de 16 bits. --divisor de reloj de entrada programale (x16, x32, …., x2048).--salida

SIGNAL TAP II

A este contador se le hacenlas siguientes asignacionesen la placa DE0-Nano:

RESET a pulsador KEY0.ENABLE a pulsador KEY1.CLK_50MHZ a oscilador 50MHz.Las 8 Salidas a los 8 LED´s.

KEY0 y KEY1 están siempre en«1» cuando NO se presionan(son pulsadores sin retención).

Page 17: CU16 PROYECTO CU16 - UNLP...retardos en forma independiente al microcontrolador (uc).--programable con rango de 16 bits. --divisor de reloj de entrada programale (x16, x32, …., x2048).--salida

SIGNAL TAP II

RESULTADO DE LA COMPILACIÓN SIN USAR LA HERRAMIENTA «SignalTap II»

Page 18: CU16 PROYECTO CU16 - UNLP...retardos en forma independiente al microcontrolador (uc).--programable con rango de 16 bits. --divisor de reloj de entrada programale (x16, x32, …., x2048).--salida

SIGNAL TAP II

Se configura la entrada de relojclk_50mhz como referencia parael período de muestreo.Se definen 16Kmuestras para eltamaño del buffer de almacena-miento de las señales.

Se definen lasseñales usadas para su análisque son las 8salidas del contador count

Page 19: CU16 PROYECTO CU16 - UNLP...retardos en forma independiente al microcontrolador (uc).--programable con rango de 16 bits. --divisor de reloj de entrada programale (x16, x32, …., x2048).--salida

SIGNAL TAP II

Se configura el disparo comopretrigger.La señal de disparo es RESET y elmuestreo empieza al detectarseun flanco de subida en esa señal(al soltar el pulsador KEY0).

Requerimiento del analizador

Page 20: CU16 PROYECTO CU16 - UNLP...retardos en forma independiente al microcontrolador (uc).--programable con rango de 16 bits. --divisor de reloj de entrada programale (x16, x32, …., x2048).--salida

SIGNAL TAP II

Si bien el circuito contador no emplea memoria dedicada, las 16 Kmuestras solicitadas para hacer el análisis, utiliza el 22% de los recursos disponibles con el modelo de la Cyclone IV que viene en la DE0-Nano.Por otro lado, el proyecto requiere un total de 11 Elementos Lógicos para implementarel contador, mientras que el SignalTap, necesita 656.

RESULTADO DE LA COMPILACIÓN AL USAR LA HERRAMIENTA «SignalTap II»

Page 21: CU16 PROYECTO CU16 - UNLP...retardos en forma independiente al microcontrolador (uc).--programable con rango de 16 bits. --divisor de reloj de entrada programale (x16, x32, …., x2048).--salida

SIGNAL TAP II

PASOS A REALIZAR:

1) El análisis se inicia al presionar el botón de Analysis de la ventana del SignalTap.

2)Como la entrada de RESET es la que origina el comienzo de la adquisición demuestras, se debe presionar KEY0.Al soltar KEY0 (flanco de subida) comienza el proceso el cual se detendrá al llenar el buffer.

3)Al termino de la captura, aparecerá una ventana con un diagrama temporal con las señales configuradas para su análisis.Se puede operar sobre ese diagrama o posteriormente dado que la información sealmacena en un archivo de datos.

Page 22: CU16 PROYECTO CU16 - UNLP...retardos en forma independiente al microcontrolador (uc).--programable con rango de 16 bits. --divisor de reloj de entrada programale (x16, x32, …., x2048).--salida

SIGNAL TAP II

Diagrama temporal con las 16Kmuestras adquiridas de las 8 salidas del contador

Page 23: CU16 PROYECTO CU16 - UNLP...retardos en forma independiente al microcontrolador (uc).--programable con rango de 16 bits. --divisor de reloj de entrada programale (x16, x32, …., x2048).--salida

SIGNAL TAP II

Diagrama temporal con las 16Kmuestras adquiridas de las 8 salidas del contador

Zoom

Page 24: CU16 PROYECTO CU16 - UNLP...retardos en forma independiente al microcontrolador (uc).--programable con rango de 16 bits. --divisor de reloj de entrada programale (x16, x32, …., x2048).--salida

BIBLIOGRAFÍA (I):--VHDL FOR LOGIC SYNTHESIS.ANDREW RUSHTON. 3RD. EDITION. ED. WILEY. 2011.

--THE GUIDE TO VHDL. PETER ASHENDEN – JIM LEWIS. 3RD. EDITION. 2008.

--FINITE STATE MACHINES IN HARDWARE: Theory and Design (with VHDL and SystemVerilog)VOLNEI A. PEDRONI , 2013.

--RAPID PROTOTYPING OF DIGITAL SYSTEMS WITH QUARTUS II.JAMES O. HAMBLEN. ED. SPRINGER. 2005.

--MICROPROCESSOR DESIGN: PRINCIPLES AND PRACTICES WITH VHDL.ENOCH O. WANG. ED. COLE. 2004.

--TRABAJO FINAL “DISEÑO DE UN MICROPROCESADOR EN UN DISPOSITIVO FPGACON VHDL“. ALUMNO: MARCOS MINEO, DEPTO ELECTROTÉCNIA, FAC. DE ING.,U.N.L.P. 2003.

--DISEÑO DE UN MICROCONTROLADOR MC6805 USANDO LÓGICA PROGRAMABLE FLEX de ALTERA. GUILLERMO A. JAQUENOD. 2000.

--FILMINAS DE TEORÍA DE ISLD: "CIRCUITOS LÓGICOS PROGRAMABLES:VHDL". 2017

--Cyclone IV Manual Data Sheet. ALTERA. 2010.

--QUARTUS II HANDBOOK. 10.1 VERSION. ALTERA 2010.

--WEBSITE: eewiki.net (proyectos con controladores para LCD, VGA e I2C)

Page 25: CU16 PROYECTO CU16 - UNLP...retardos en forma independiente al microcontrolador (uc).--programable con rango de 16 bits. --divisor de reloj de entrada programale (x16, x32, …., x2048).--salida

BIBLIOGRAFÍA (II):

--RAM Initializer (ALTMEM_INIT) Megafunction User Guide (ALTERA).

--Internal Memory (RAM and ROM) User Guide. ALTERA. 2009.

--The Design of an 8-bit CISC CPU Based on FPGA. Yunjie Zhang, Lei Bao Electronic & Information Engineering Department. 2010.

--The Design of an 8-Bit CISC CPU Based on FPGA . IEEE WIRELESS COMMUNICATIONS, NETWORKING AND MOBILE COMPUTING CONFERENCE. 2011.

--Un Microprocesador Elemental como ejercicio de diseño de Sistemas Digitales. T. POLLÁN, C. BERNAL Y A. BONO. Escuela Universitaria de Ingeniería Técnica Industial de Zaragoza. 2007.

--Using ModelSim to Simulate Logic Circuits in VHDL Designs. ALTERA FOR QUARTUS 11.1.

--UM10204 I2C-bus Specification and User Manual (NXP Semiconductors 2014).

--24LC02B Data Sheet (MICROCHIP).

--ADC128S022 Data Sheet (NATIONAL SEMICONDUCTORS).

Page 26: CU16 PROYECTO CU16 - UNLP...retardos en forma independiente al microcontrolador (uc).--programable con rango de 16 bits. --divisor de reloj de entrada programale (x16, x32, …., x2048).--salida

SEMINARIO DE EXTENSIÓN DE ISLD – 2018

Sergio Noriega – ISLD 2018

uC16

GRACIAS …