MÓDULO 2 Sergio Noriega

Documentos relacionados
MÓDULO 2 Sergio Noriega

CU6 FPGA. up16 DIV_CLK CLK_UP16 CLK PC16R MUXMAR BUS MAR RST DIR MEM MEMORIA MEMORIA BUS MUXRX DATA MEM BUS CONTROL CPU ALU BUS MDRO MDRI DATA MEM OUT

CU4 PROYECTO CU4 DISEÑO EN VHDL DE MICROPROCESADOR ELEMENTAL CON UN REGISTRO INTERNO DE DATOS PARA REALIZAR OPERACIONES INTERNAS BÁSICAS.

CU4 PROYECTO CU4 DISEÑO EN VHDL DE MICROPROCESADOR ELEMENTAL CON UN REGISTRO INTERNO DE DATOS PARA REALIZAR OPERACIONES INTERNAS BÁSICAS.

Diseño y verificación en VHDL de microcontrolador implementado en FPGA

Diseño y verificación en VHDL de microcontrolador implementado en FPGA

SEMINARIO DE EXTENSIÓN DE ISLD

EL BUS I2C CARACTERISTICAS. Fernando Remiro

Contador Universal CU13. Contador Universal. Out_bcd3 Out_bcd2 Out_bcd1 Out_bcd0 Overflow End of Conversion. Medidor de Frecuencias

MICROCONTROLADORES PIC

PROYECTOS EN VHDL PARA CONTROL DE MONITOR VGA DESDE UNA FPGA

INSTRUMENTACIÓN AVANZADA Departamento de Ingeniería Eléctrica y Electromecánica Facultad de Ingeniería Universidad Nacional de Mar del Plata

SADE en LabView. IO PIN: SADE cuenta con 13 pines que se pueden configurar como entrada, salida e inclusive como PWM.

Ventajas del BUS I2C

AUTOMATIZACION. Reconocer la arquitectura y características de un PLC Diferenciar los tipos de entradas y salidas MARCO TEORICO. Estructura Interna

Integración de Equipos para Comunicaciones

Arquitectura de computadores I

ITT-327-T Microprocesadores

Tema 0. Introducción a los computadores

ARQUITECTURA DE COMPUTADORES DESCRIPCIÓN BUS PCI (Tema 1: Conexión Externa de Procesadores. Buses)

APUNTE DEL 8155 ELECTRÓNICA DIGITAL III

Lógica cableada: Lógica programada:

Vista de Alto Nivel del Funcionamiento del Computador Interconectividad

Enlaces Seriales UART, I2C, SPI

MICROCONTROLADORES PIC16F84 ING. RAÚL ROJAS REÁTEGUI

Curso de. Módulo 10 MSSP: I2C. Ricardo Gómez González Andrés Prieto-Moreno Torres

INFORMÁTICA INDUSTRIAL. 3º INGENIERÍA TÉCNICA ELECTRÓNICA TRABAJO TUTORADO DE VHDL. Primer Cuatrimestre Curso 2005/2006.

Elementos constituyentes de la ejecución de un programa

Comunicación Serie IIC: Inter-Integrated Circuit

2. PANTALLA ALFANUMÉRICA DE LCD (HITACHI HD44780U)

PCF8574 EXPANSOR REMOTO 8-BIT I/O PARA I²C-BUS

Elección de un microcontrolador

Titulación: Ingeniería Informática Asignatura: Fundamentos de Computadores. Bloque 3: Sistemas secuenciales Tema 9: Módulos secuenciales básicos

Buses. Organización del Computador I. David Alejandro González Márquez

8237A. Programación en Ensamblador Ing. Marcelo Tosini

COMUNICACIÓN I2C (INTER-INTEGRATED CIRCUIT)

Microprocesador. Introducción. Instituto Sagrado Corazón de Jesús

Tema 4. Organización de la memoria

COMUNICACIÓN I2C (Bus de circuito inter-integrado)

BUS DE COMUNICACIÓN I 2 C

Introducción a las Computadoras. Capítulo 3 Buses del Sistema

INSTRUMENTACIÓN AVANZADA Departamento de Ingeniería Eléctrica y Electromecánica Facultad de Ingeniería Universidad Nacional de Mar del Plata

Microcontrolador PIC16F84: Arquitectura

INSTRUMENTACIÓN AVANZADA Departamento de Ingeniería Eléctrica y Electromecánica Facultad de Ingeniería Universidad Nacional de Mar del Plata

Tema 0. Introducción a los computadores

SelectRAM+memory Bloques de memoria RAM En las FPGAs Spartan IIE

INFORMÁTICA INDUSTRIAL. 3º INGENIERÍA TÉCNICA INDUSTRIAL. ESPECIALIDAD ELECTRÓNICA BOLETÍN 2. CURSO 2003/04

Módulo de 16 entradas digitales modbus:

MICROCONTROLADOR PIC DE MICROCHIP

Tema 0. Introducción a los computadores

Tema 3: Expansión de recursos

EVOLUCIÓN HISTÓRICA DE LOS µp

MÓDULO Nº7 REGISTROS Y CONTADORES

4.7 Aplicaciones usando la tarjeta Spartan 3E

Diseño de un sistema de adquisición de datos de un micrófono utilizando una FPGA

Interface paralelo programable 8255.

Memorias. Docente: Ing. Víctor Cárdenas Schweiger

TEMA 2: MICROPROCESADORES Y MICROCONTROLADORES

La Unidad de Memoria y su

Sincronismo de Canales

Bus I 2 C. Introducción

Curso sobre Microcontroladores Familia HC9S08 de Freescale

Microprocesadores, microcontroladores, memorias

Contenidos. Arquitectura de ordenadores (fundamentos teóricos) Elementos de un ordenador. Periféricos

ARQUITECTURA DE LAS COMPUTADORAS FLIP-FLOP

Lógica Digital. Circuitos Secuenciales. Francisco García Eijó. Organización del Computador I Departamento de Computación - FCEyN UBA

Práctica No. 6 del Curso "Meteorología y Transductores". "Convertidores ADC y DAC"

TEMA 2: Organización de computadores

ESTRUCTURA. Estructura básica de un computador ESTRUCTURA BÁSICA DE UN COMPUTADOR RELOJ. Unidad de control CPU ULA. Onda cuadrada RELOJ

ING. JONATHAN QUIROGA TINOCO. Desarrollado por Ing. Jonathan Quiroga T.

ARQUITECTURA DE LOS SISTEMAS BASADOS EN MICROPROCESADOR

Señales de interfase del Z80

Microprocesadores, Tema 8:

Se trata de generar una señal PWM que salga por PB7, el cual está vinculado al canal 2 del TIM4. Por lo tanto la configuración será como sigue:

Anexo II: Lógica programada y lógica cableada. Ventajas e inconvenientes. MSP430G2553.

Mapas de Memoria y E/S

Informática. Informática = Hardware + Software. Hardware + Software. Hardware = Parte física. Software = Parte lógica

Preguntas claves (y sus respuestas)

I2C. Ing. Pablo Martín Gomez

VHDL. Carlos Andrés Luna Vázquez. Lección 10 Problemas

10. Tarjeta analógica multipropósito

IM : ARDUINO NANO OEM

PIC MICRO ESTUDIO Reloj en tiempo real RTCU2 Clave: 719

UPMDIE. 2 - Sistemas embebidos INDUSTRIALES. Sistemas embebidos CPU, Memorias, dispositivos de E/S y buses Sistema microprocesador ejemplo: Arduino

Memoria 24LC256 I. I NTRODUCCIÓN

Repaso Registros internos Z80 1/37

Comunicaciones Digitales: Protocolos seriales (uc)

Práctica 7 - Microarquitectura del CPU

Transcripción:

MÓDULO 2

CU9 PROYECTO CU9 DISEÑO EN VHDL DE MICROPROCESADOR ELEMENTAL BASADO EN EL PROYECTO CU8, DONDE SE ADICIONA UN MODO DE DIRECCIONAMIEMTO INDIRECTO A MEMORIA DE DATOS, A TRAVÉS DE UN REGISTRO INDICE DENOMINADO "IX".

ENTRADA S A FPGA MUXMDRI MEMORIA IX MUXMAR 2 MAR PC16R CU9 RST CLK up16 FPGA BUS ADDRESS BUS DATA_IN MUXRX RX ALU CCR IR CPU MDRO MDRI BUS CONTROL BUS DATA _OUT REGPA REGPB SALIDAS DE FPGA PORT A ENTRADAS A FPGA PORT B

CU9 IR 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 X 0000 X 0100 X 0200 X 0300 X 0400 X 8000 X 0500 X 0600 X 070X X 0800 X 09X0 X 0AX0 X 0B00 X 0C00 X 0D00 X 0E00 X 0F00 X 1000 X 1100 X 1200 X 1300 X"1400" X"1500" X"1600" X"1700" 00000000 = CLR RX 00000001 = INC RX 00000010 = LDI RX 00000011 = DEC RX 00000100 = NOP 10000000 = RST 00000101 = LDD RX 00000110 = STR RX 00000111 = OPERACIONES ARITMÉTICO- LÓGICAS ENTRE MEMORIA DE DATOS Y REGISTRO RX. 00001000 = STR RXL, PORT A 00001001 = BIT SET I, PORT A 00001010 = BIT CLR I, PORT A 00001011 = INC PORT A 00001100 = DEC PORT A 00001101 = LDI RX, PORT B 00001100 = BTIJC, PORT B 00001101 = BTIJS, PORT B 00010000 = JMP PC, DIR 00010001 = JMP PC, IF Z, DIR 00010010 = JMP PC, IF C, DIR 00010011 = DEC RX, IF NZ 00010100 = LDI IX 00010101 = INC IX 00010110 = LDD RX, IX 00010111 = STR RX, IX RESERVADOS PARA OPER. CON LA "ALU" USO ESTOS BITS PARA ENTRAR EL CÓDIGO DE IDENTIFICACIÓN DEL BIT A SELECCIONAR: PORT_A(BIT 0) = 000 PORT_A(BIT 1) = 001.... PORT_A(BIT 6) = 110 PORT_A(BIT 7) = 111 Total: 40 instrucciones

CU9 DIRECCIONAMIENTO INDEXADO SE SUMAN LAS SIGUIENTES INSTRUCCIONES : LDI_IX INC_IX LDD_RX_IX STR_RX_IX CARGA INMEDIATA DE REGISTRO "IX". INCREMENTO DEL CONTENIDO DEL REGISTRO "IX". CARGA DE "RX" CON CONTENIDO DE MEMORIA APUNTADA POR REGISTRO "IX". CARGA DE MEMORIA APUNTADA POR REGISTRO "IX" CON EL CONTENIDO DE "RX".

IX

MUXMAR2 MUXMAR2 PC MDRI IX SELEMUXMAR

CU9

CU9 CONTENIDO DEL ARCHIVO RAM.HEX PARA ESTE PROYECTO RUTINA DE PRUEBA 0000 CLR RX 0001 LDI IX, 0A00 0002 0A00 0003 STR RX, IX 0004 INC IX 0005 INC RX 0006 STR RX, IX 0007 INC IX 0008 INC RX 0009 STR RX, IX 000A LDI IX, 0A00 000B 0A00 000C LDD RX, IX 000D STR RXL, PORTA 000E INC IX 000F STR RX, IX 0010 STR RXL, PORTA 0011 INC IX 0012 STR RX, IX 0013 STR RXL, PORTA 0014 INC RX 0015 JMP PC, 0001 0016 0001

CU9 SE PRUEBAN LAS INSTRUCCIONES RELACIONADAS CON EL REGISTRO IX PRIMERO : SE ESCRIBEN LAS POSICIONES DE RAM DE 0A00, 0A01 Y 0A02 CON "STR RX,IX" SEGUNDO: SE LEEN DICHAS POSICIONES CON "LDD RX, IX" MIENTRAS SE ESCRIBEN EN PORTA. TERCERO: AL TERMINAR EL CICLO, SE INCREMENTA RX Y SALTA A "0001" DONDE SE REPITE TODO PERO CON NUEVOS VALORES DE "RX" EN UN LOOP INFINITO.

CU9 RUTINA PARA DETECCIÓN Y EJECUCIÓN DE INSTRUCCIÓN LDI_IX

CU9

CU9

CU9

CU9 RUTINA SIMILAR A LA DE "LDI RX"

CU9

CU9 RUTINA PARA DETECCIÓN Y EJECUCIÓN DE LAS INSTRUCCIONES LDD RX, IX Y STR RX, IX

CU9

CU9 PARA RACIONALIZAR ESTADOS, VUELVO A UTILIZAR PARTE DE LAS RUTINAS DE "LDD RX, MEM" Y "STR RX, MEM" COMUNES A "LDD RX, IX" Y "STR RX, IX".

CU9 RUTINA PARA DETECCIÓN Y EJECUCIÓN DE INSTRUCCIÓN "INC IX"

CU9

CU10 PROYECTO CU10 DISEÑO EN VHDL DE MICROPROCESADOR ELEMENTAL BASADO EN EL PROYECTO CU9, ADICIONANDO UN CONTROLADOR INDEPENDIENTE DEL CONVERSOR ANALÓGICO-DIGITAL TIPO SERIE ADC128S022, QUE SE ENCUENTRA INTEGRADO EN LA PLACA DE0-NANO DE LA CYCLONE IV..

MEMORIA CONVERSOR ADC SERIE CONTROLADOR DE ADC ENTRADA S A FPGA MUXMDRI2 IX MUXMAR 2 MAR PC16R CU10 up16 FPGA RST CLK ❶ BUS ADDRESS BUS DATA_IN MUXRX RX ALU CCR IR CPU MDRO MDRI BUS CONTROL BUS DATA _OUT ❶ REGPA REGPB PORT A PORT B SALIDAS DE FPGA ENTRADAS A FPGA

CU10 A10 B10 A9 B14

CU10

start_contr end_of_conv addr_contr salida_contr CU10 CONVERSOR ADC SERIE ADC128S022 csn_adc clock_adc din_adc dout_adc CONTROLADOR DE ADC FPGA muxmdri <= salida_contr addr_contr <= salidair(7 downto 5) up16

CU10 IR 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 X 0000 X 0100 X 0200 X 0300 X 0400 X 8000 X 0500 X 0600 X 070X X 0800 X 09X0 X 0AX0 X 0B00 X 0C00 X 0D00 X 0E00 X 0F00 X 1000 X 1100 X 1200 X 1300 X"1400" X"1500" X"1600" X"1700" X 1800 X 1900 X 1A00 00000000 = CLR RX 00000001 = INC RX 00000010 = LDI RX 00000011 = DEC RX 00000100 = NOP 10000000 = RST 00000101 = LDD RX 00000110 = STR RX 00000111 = OPERACIONES ARITMÉTICO- LÓGICAS ENTRE MEMORIA DE DATOS Y REGISTRO RX. 00001000 = STR RXL, PORT A 00001001 = BIT SET I, PORT A 00001010 = BIT CLR I, PORT A 00001011 = INC PORT A 00001100 = DEC PORT A 00001101 = LDI RX, PORT B 00001100 = BTIJC, PORT B 00001101 = BTIJS, PORT B 00010000 = JMP PC, DIR 00010001 = JMP PC, IF Z, DIR 00010010 = JMP PC, IF C, DIR 00010011 = DEC RX, IF NZ 00010100 = LDI IX 00010101 = INC IX 00010110 = LDD RX, IX 00010111 = STR RX, IX 00011000 =START CONV CH I, ADC 00011001 = LDD RX, ADC 00011010 = JUMP PC IF EOC NZ, ADC RESERVADOS PARA OPER. CON LA "ALU" USO ESTOS BITS PARA ENTRAR EL CÓDIGO DE IDENTIFICACIÓN DEL BIT A SELECCIONAR: PORT_A(BIT 0) = 000 PORT_A(BIT 1) = 001.... PORT_A(BIT 6) = 110 PORT_A(BIT 7) = 111 Total: 43 instrucciones

CU10 Controlador del conversor ADC128S022 (de la placa Terasic DE0-Nano - Cyclone IV) Start Clock_50MHz Reset address FPGA Controlador ADC sal_controller End of Conversion csn sclk din dout ADC128S022 8 canales

CU10 ADC128S022

CU10 ADC128S022

CU10 ADC128S022

CU10 ADC128S022

CU10 DIAGRAMA DE TIEMPOS DE LAS SEÑALES DE CONTROL clock t start csn Momento de escribir al ADC Momento de leer el ADC t t sclk t din t dout DB11 DB10 DB9 DB8 DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 Carga de datos al ADC: en cada flanco descendente de sclk. Lectura de datos desde el ADC : en cada flanco ascendente de sclk. t

CU10 Código del controlador del ADC

CU10 Enable se activa con «start_contr» y se desactiva con «counter = 32» Cambia el dato para el ADC en cada flanco ascendente que se envía a la línea «din_adc».

CU10 Se lee el dato desde el ADC en cada flanco descendente Por la línea «dout_adc» El dato en formato paralelo desde el ADC se refresca en cada fin de conversion del ADC (flanco ascendente de «csn») Se genera un pulso positivo al finalizar la conversión para que sea usado como «aviso» al micro.

CU10 Código del testbench del controlador del ADC

CU10 Cómo se debe adaptar este proyecto para ser usado por el microcontrolador...???

CU10 Simulación del controlador del ADC Aquí se generó artificialmente una respuesta del conversor.

CU11 PROYECTO CU11 DISEÑO EN VHDL DE UN CONTROLADOR MASTER PARA BUS SERIE I2C PARA SER EMPLEADO COMO CONTROL DE TRANSFERENCIA DE DATOS ENTRE EL MICROCONTROLADOR Y LA MEMORIA EEPROM SERIE 24LC02B QUE POSEE LA PLACA TERASIC DE0-NANO CYCLONE IV.

CU11 Controlador de bus maestro I2C Ejemplo con la memoria EEPROM 24LC02B (de la placa Terasic DE0-Nano - Cyclone IV) Start R_Wn Dataout Clock_200KHz Reset Addressin Datain FPGA Controlador I2C Acnowledge Error_out End_of_Trans Vdd SCL SDA Vdd Memoria EEPROM (2Kbits serie I2C) 24LC02B

CU11 I2C BUS La versión básica suele usar un dispositivo Master que controla por el bus desde un dispositivo Slave hasta 128 que pueden interactuar sólo con el Master. El bus es de 2 hilos, del tipo open-drain: Uno es un reloj (SCL) que gobierna el Master y el otro es de datos (SDA) que es bidireccional. La versión extendida consiste de múltiples Master que pueden tomar el control del bus a través de un modo de arbitraje.

CU11 I2C BUS Las líneas SCL y SDA deben terminar con una resistencia de pull-up y por lo tanto los terminales de dispositivos conectados a ellas deben admitir la bidireccionalidad. Todo proceso de comunicación para la transferencia de información debe consistir de una condición inicial de inicio (START) y una de finalización (STOP). En cada paquete enviado por el master se espera un reconocimiento del slave seleccionado. Si no responde debe generarse el apropiado manejo de error en dicha transferencia en una capa superior del protocolo de comunicación.

CU11 I2C BUS Los cambios en la línea de SDA para transferencia de datos se deben realizar siempre con SCL en bajo. Para comenzar una transacción se debe generar un flanco negativo en SDA cuando SCL esté en alto. Para terminar una transacción se debe generar un flanco positivo en SDA cuando SCL esté en alto.

CU11 I2C BUS Cuando el master comienza una transacción, manda una señal de START con SCL en «1». En los próximos 8 estados en bajo de SCL, manda 7 bits con la dirección del dispositivo elegido y otro bit en «0» o «1» para señalar que va a escribir o leer en el mismo. En el noveno ciclo de SCL, el master pone la línea SDA en «Z» y espera a recibir un dato por SDA (reconocimiento = acknowldge). Si recibe un «0» prosigue, sino ha habido un error. La cantidad de bytes subsiguientes son ilimitados y depende del sistema. Al finalizar cada byte se debe pedir reconocimiento. Para terminar se debe generar una señal de STOP.

CU11 24LC02B(I2C 2K EEPROM) Memoria EEPROM de 2Kbits en arreglo de 265 x 8. Bus de comunicación serie de dos cables tipo I2C. Velocidad de transferencia de 100KHz ó 400KHz. Protección contra escritura por hardware. Retención de datos hasta 200 años. Mas de 1 millón de ciclos de borrado/escritura.

CU11 24LC02B(I2C 2K EEPROM) Este modelo de memoria tiene una identificación de 7 bits: 1010XXX.

CU11 24LC02B(I2C 2K EEPROM) La escritura de un simple byte "BYTE WRITE" se realiza enviando : 1 - Dirección del dispositivo. 2 - Posición de memoria. MODO USADO AQUI 3 - Dato. EL DISPOSITIVO AL RECIBIR EL "STOP" LUEGO DE UN PEDIDO DE "WRITE", COMIENZA UN CICLO INTERNO DE ESCRITURA QUE PUEDE TARDAR HASTA 5 ms...!!! SE ESCRIBEN 8 BYTES CONSECUTIVOS Se puede escribir también, en múltiples posiciones de memoria consecutivas (hasta 8) denominado "PAGE WRITE", desde la inicial, enviando cada dato con su respectiva confirmación (ACK).

CU11 24LC02B(I2C 2K EEPROM) La memoria tiene un contador interno que se incrementa en cada acceso. Si por ejemplo, quedó apuntando en la dirección N, al generar una sesión de lectura como se muestra, se leerá el dato de la dirección N+1.

CU11 24LC02B(I2C 2K EEPROM) MODO USADO AQUI La forma convencional de lectura de una posición de memoria específica, es la de Random Read. Se deben generar dos ciclos: uno START-ACK y otro START-STOP. El primero direcciona el dispositivo y la posición de memoria deseada para leer. El segundo direcciona nuevamente el dispositivo pero indicándole que se lo va a leer y luego se adquiere el dato almacenado.

CU11 24LC02B(I2C 2K EEPROM) El caso «secuencial» permite la lectura de varias posiciones de memoria consecutivas, terminando la transacción con una señal de STOP.

CU11 En la placa Terasic DE0-Nano de Cyclone IV, las resistencias de pull-up ya están insertadas en la placa del impreso.

CU11 Código del controlador I2C

CU11

CU11 IMPORTANTE: EL DISPOSITIVO 24LC02, AL RECIBIR EL STOP" COMIENZA UN CICLO INTERNO DE ESCRITURA QUE TARDA 5 ms...!!! => ESTO DEBE SER CONSIDERADO EN LA RUTINA DEL CONTROLADOR "I2C" PARA EL MANEJO DE LA MEMORIA 24LC02...!!! QUE HABRÍA QUE MODIFICAR EN ESTE PROYECTO...???

CU11

CU11

CU11

CU11

CU11

CU11

CU11 Simulación de dos rutinas de escritura en la memoria serie EEPROM de dirección 1010xxx en las posiciones de memoria 00 y 01

CU11 Rutina completa de la primera escritura

CU11 Zoom de la primera rutina desde comienzo de START y escritura del CONTROL BYTE

CU11 Zoom de la primera rutina desde escritura de WORD ADDRESS y WRITE DATA

CU11 Rutina de la segunda escritura desde START e indicando CONTROL BYTE y WORD ADDRESS

CU11 Rutina de la segunda escritura desde WORD ADDRESS y WRITE DATA

CU12 PROYECTO CU12 DISEÑO EN VHDL DE UN GENERADOR INDEPENDIENTE DE PWM (PULSE WIDTH MODULATION) PROGRAMABLE.

CU12 GENERADOR "PWM" (Pulse Width Modulation) Clock_50MHz Reset_in data_in Generador PWM sal_pwm Genera una onda cuadrada de ciclo de trabajo variable y frecuencia ajustable. data_in (9 downto 0) = Define el ciclo de trabajo (resolución 1/1024 ó 1 ) data_in (13 downto 12) = Define la frecuencia de referencia(50, 25, 10 ó 5 KHz)

CU12 GENERACIÓN DE SEÑAL "PWM" (Pulse Width Modulation) clock_50mhz clock_per sal_pwm Desde 1 hasta 1022 ciclos de clock_per t t t mode_ucnt => "x x M1 M0 x x D9...D0" M1 M0 => F_pwm 0 0 50 KHz 0 1 25 KHz 1 0 10 KHz 1 1 5 KHz Desde 1022 a 1 Período de clock_per Rango de 1 a 1023 períodos de clock_per para definir el "1" lógico

CU12 Código del Generador PWM

CU12

CU12

CU12 Código del TestBench para el Generador PWM

CU12

CU12 Período de la frecuencia = 20,48 us

CU12 Período de la frecuencia = 40,959 us