Top Banner
MÓDULO 2
103

MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

Mar 13, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

MÓDULO 2

Page 2: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

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".

Page 3: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

RSTCLK

CU9

BUS DATA_IN

BUS ADDRESS

MEM

OR

IA

uP16

CPU

PC

16R

MA

R

RX

IR

MD

RO

MD

RI

MU

XM

AR

MUXRX

FPGA

CCRALU

BUS CONTROL

BUS DATA_OUT

PORT A PORT B

ENTRADAS A FPGASALIDAS DE FPGA

REGPAM

UX

MD

RI

REGPB

ENTR

AD

A S

A F

PG

A

IX

MU

XM

AR

2

Page 4: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU914 13 12 11 10 9 8 7 6 5 4 3 2 1 0IR 15

X”0000” 00000000 = CLR RXX”0100” 00000001 = INC RXX”0200” 00000010 = LDI RXX”0300” 00000011 = DEC RXX”0400” 00000100 = NOPX”8000” 10000000 = RSTX”0500” 00000101 = LDD RXX”0600” 00000110 = STR RXX”070X” 00000111 = OPERACIONES ARITMÉTICO-

LÓGICAS ENTRE MEMORIA DE DATOS Y REGISTRO “RX”.

X”0800” 00001000 = STR RXL, PORT AX”09X0” 00001001 = BIT SET I, PORT AX”0AX0” 00001010 = BIT CLR I, PORT AX”0B00” 00001011 = INC PORT AX”0C00” 00001100 = DEC PORT AX”0D00” 00001101 = LDI RX, PORT BX”0E00” 00001100 = BTIJC, PORT BX”0F00” 00001101 = BTIJS, PORT BX”1000” 00010000 = JMP PC, DIRX”1100” 00010001 = JMP PC, IF Z, DIRX”1200” 00010010 = JMP PC, IF C, DIRX”1300” 00010011 = DEC RX, IF NZX"1400" 00010100 = LDI IXX"1500" 00010101 = INC IX X"1600" 00010110 = LDD RX, IXX"1700" 00010111 = STR RX, IX

USO ESTOS BITS PARA ENTRAREL CÓDIGO DE IDENTIFICACIÓNDEL BIT A SELECCIONAR:PORT_A(BIT 0) = “000”PORT_A(BIT 1) = “001”

.

.

.

.PORT_A(BIT 6) = “110”PORT_A(BIT 7) = “111”

RESERVADOS PARA OPER. CON LA "ALU"

Total: 40 instrucciones

Page 5: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

SE SUMAN LAS SIGUIENTES INSTRUCCIONES :

LDI_IX CARGA INMEDIATA DE REGISTRO "IX". INC_IX INCREMENTO DEL CONTENIDO DEL REGISTRO "IX".LDD_RX_IX CARGA DE "RX" CON CONTENIDO DE MEMORIA

APUNTADA POR REGISTRO "IX".STR_RX_IX CARGA DE MEMORIA APUNTADA POR REGISTRO "IX"

CON EL CONTENIDO DE "RX".

CU9

DIRECCIONAMIENTO INDEXADO

Page 6: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

IX

Page 7: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

MUXMAR2

PC

MDRI

IX

MU

XM

AR

2

SELEMUXMAR

Page 8: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU9

Page 9: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU9CONTENIDO DEL ARCHIVO RAM.HEX PARA ESTE PROYECTO

0000 CLR RX0001 LDI IX, 0A000002 0A000003 STR RX, IX 0004 INC IX0005 INC RX0006 STR RX, IX0007 INC IX0008 INC RX0009 STR RX, IX000A LDI IX, 0A00000B 0A00000C LDD RX, IX000D STR RXL, PORTA000E INC IX000F STR RX, IX0010 STR RXL, PORTA0011 INC IX0012 STR RX, IX 0013 STR RXL, PORTA0014 INC RX0015 JMP PC, 00010016 0001

RUTINA DE PRUEBA

Page 10: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU9SE 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.

Page 11: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU9

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

Page 12: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU9

Page 13: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU9

Page 14: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU9

Page 15: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU9

RUTINA SIMILAR A LA DE "LDI RX"

Page 16: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU9

Page 17: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU9

RUTINA PARA DETECCIÓN Y EJECUCIÓN DE LAS INSTRUCCIONESLDD RX, IX Y STR RX, IX

Page 18: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU9

Page 19: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU9

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

Page 20: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU9

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

Page 21: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU9

Page 22: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

UP16

PROYECTO UP16

EL MISMO DISEÑO EN VHDL DE MICROPROCESADOR DEL PROYECTO CU8,PERO ELIMINANDO LAS ENTRADAS-SALIDAS EMPLEADAS PARA TEST.

Page 23: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

UP16

COMO ERA DE ESPERAR, LA LÓGICA UTILIZADA NO HA VARIADO.SÓLO SE AHORRÓ EN LA CANTIDAD DE PINES DISPONIBLES QUEHA BAJADO A 18 (PORTA, PORTB, RST Y CLOCK)

Page 24: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

UP16PLACA DE0-NANO CYCLONE IV

PORTA PORTB(0)

RESET

PORTB(5,4,3,2)

CLK 50 MHZ

EP4CE22F17C6

Page 25: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

UP16

Page 26: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

UP16

EP4CE22F17C6

Page 27: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

UP16KIT

DISTRIBUCIÓN DE COMPONENTESA UTILIZAR EN LA PLACA DE0-NANO

LAS ENTRADAS A LOS PINES E1 Y J15 TIENENRESISTENCIAS DE PULL-UP POR LO QUE ESTÁN NORMALMENTE EN “1”.

Page 28: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

UP16KIT

Page 29: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

UP16

PORTB(5)

PORTB(6)

PORTB(7)

Page 30: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

UP16 VISTA DEL PIN PLANNER EDITOR

Page 31: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

UP16

DISPOSICIÓN DE PINES PARA COMPATIBILIDAD CON LA PLACA

Page 32: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

UP16

PORTA(0) PIN: A15PORTA(1) PIN: A13PORTA(2) PIN: B13PORTA(3) PIN: A11PORTA(4) PIN: D1PORTA(5) PIN: F3PORTA(6) PIN: B1PORTA(7) PIN: L3

PORTB(0) PIN: E1 (CONEXIÓN AL PULSADOR KEY_1)PORTB(1) PIN: M1 (CONEXIÓN AL DIPSWITCH_0)PORTB(2) PIN: T8 (CONEXIÓN AL DIPSWITCH_1)PORTB(3) PIN: B9 (CONEXIÓN AL DIPSWITCH_2)PORTB(4) PIN: M15 (CONEXIÓN AL DIPSWITCH_3)PORTB(5) PIN: D5 (CONEXIÓN A GPIO-00 : PUERTO DE EXPANSIÓN)PORTB(6) PIN: C6 (CONEXIÓN A GPIO-01: PUERTO DE EXPANSIÓN)PORTB(7) PIN: B3 (CONEXIÓN A GPIO-02 : PUERTO DE EXPANSIÓN)

CLOCKCU PIN: R8 (CONEXIÓN DIRECTA AL OSCILADOR DE 50MHZ) RESETCU PIN: J15 (CONEXIÓN AL PULSADOR KEY_0)

DISPOSICIÓN DE PINES PARA CONFIGURAR EL MICRO AL KIT

Page 33: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

UP16

PROYECTO U16PKIT01

PROYECTO CON EL MICRO UP16, SIMULANDO UN DESPLAZAMIENTO A IZQUIERDA DE UN BIT EN “1” POR EL PORT A, CON LAZO DE RETARDO.(DEBE VISUALIZARSE UN LED ENCENDIDO POR VEZ EN FORMA CÍCLICA DE DERECHA A IZQUIERDA).

Page 34: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

UP16

IMPLEMENTACIÓN DEL PROYECTO “UP16KIT01” EN EL KIT DE0-NANO

CONSTANTE DE LAZO DE RETARDO = X”FFFF”.

CONEXIÓN DEL PULSADOR KEY0 DE LA PLACA A LA ENTRADA DE RESETDEL MICROPROCESADOR.

CONEXIÓN DE LA SALIDA DEL OSCILADOR DE 50 MHZ A LA ENTRADA DE RELOJDEL MICROPROCESADOR FRECUENCIA DE RELOJ INTERNA DE 5 MHZ.

Page 35: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

UP16

0000 CLR RX0001 INC RX0002 STR RX, X” 0800”0003 08000004 LDI RX, X”FFFF”0005 0FFF0006 DEC RX, IF NZ0007 LDD RX, X” 0800”0008 08000009 STR RXL, PORTA000A SLL RX000B STR RX, X” 0800”000C 0800000D JMP PC, X”0005”000E 0004

PROGRAMA 01

DELAY

LED7 LED0

0000 00000001 01000002 06000003 08000004 02000005 FFFF0006 13000007 05000008 08000009 0800000A 0715000B 0600000C 0800000D 1000000E 0004

NEMOTÉCNICO HEX

MÁXIMO VALORDE RETARDO ...

8 BITS

Page 36: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

UP16

CONTENIDO DEL ARCHIVO RAM.HEX PARA ESTE PROYECTO

Page 37: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

UP16

CICLO DE APROX. 394 ms POR CONTEO

SIMULACIÓN PARA EL GENERADOR DE SECUENCIA

Page 38: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

UP16

PROYECTO U16PKIT02

PROYECTO CON EL MICRO UP16, SIMULANDO UN DESPLAZAMIENTO A IZQUIERDA DE UN BIT EN “1” POR EL PORT A, CON DOBLE LAZO DE RETARDO.(DEBE VISUALIZARSE UN LED ENCENDIDO POR VEZ EN FORMA CÍCLICA DE DERECHA A IZQUIERDA).

Page 39: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

UP16

IMPLEMENTACIÓN DEL PROYECTO “UP16KIT02” EN EL KIT DE0-NANO

CONSTANTE DE LAZO DE RETARDO EXTERNO = X”0005” Y PARA LAZO DE RETARDO INTERNO = X”FFFF”.

CONEXIÓN DEL PULSADOR KEY0 DE LA PLACA A LA ENTRADA DE RESETDEL MICROPROCESADOR.

CONEXIÓN DE LA SALIDA DEL OSCILADOR DE 50 MHZ A LA ENTRADA DE RELOJDEL MICROPROCESADOR FRECUENCIA DE RELOJ INTERNA DE 5 MHZ.

Page 40: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

UP16

0000 CLR RX0001 INC RX0002 STR RX, 0800 0003 08000004 LDI RX, 00050005 00050006 STR RX, 08010007 08010008 LDI RX, FFFF0009 FFFF000A DEC RX, IF NZ000B LDD RX, 0801000C 0801000D DEC RX000E JMP PC, IF Z, 0014000F 00140010 STR RX, 08010011 08010012 JMP PC, 0008 0013 00080014 LDD RX, 08000015 08000016 SLL RX 0017 STR RXL, PORTA0018 STR RX, 08000019 08000020 JMP PC, 00040021 0004

PROGRAMA 02

LED7 LED0

USAMOS DOBLE LAZO DE RETARDOEMPLEANDO RX Y UNA POSICIÓN DEMEMORIA DE DATOS

LAZOINTERNO

LAZOEXTERNO

MEM 0800 ALMACENAPOSICIÓN DE DESPLAZAMIENTO

MEM 0801 ALMACENA VALOR DELAZO DE RETARDOEXTERNO.

Page 41: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

UP16

CONTENIDO DEL ARCHIVO RAM.HEX PARA ESTE PROYECTO

LAZO EXTERNO

LAZO INTERNO

Page 42: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

UP16

PROYECTO U16PKIT03

PROYECTO CON EL MICRO UP16, SIMULANDO UN DESPLAZAMIENTO A IZQUIERDA Ó DERECHA DE UN BIT EN “1” POR EL PORT A, CON DOBLE LAZO DE RETARDO.CON EL PULSADOR KEY1 SE CAMBIA EL SENTIDO DE DESPLAZAMIENTO DEL“1”, CADA QUE SE PULSA.

Page 43: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

UP16

EJECUTARSRL

0802 FFFF

KEY1=1?

0802=0?

KEY1=0?

NO

NO

NO

SI

SISI

EJECUTARSLL

NOT 0802

DELAY

DIAGRAMA DE ESTADOS PARA ELCONTROL DE SENTIDO DE BARRIDODEL GENERADOR DE SECUENCIA

PARTE DE LA RUTINA DEL PROYECTO ANTERIOR

0800 0000

EJEMPLO DE CONCEPTO DE SUBRUTINA

Page 44: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

UP16

LED7 LED0

SLL

SRL

IMPLEMENTACIÓN EN LA FPGA CONECTANDOEL PULSADOR KEY0 A LA ENTRADA DE RESETDEL MICROPROCESADOR Y USANDO KEY1COMO UN SELECTOR DE FUNCIÓN

Page 45: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

UP16

RUTINA PRINCIPAL

SUBRUTINA DE GENERACIÓN

DE DELAY

EJEMPLO DE CONCEPTO DE SUBRUTINA

Page 46: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

UP160000 CLR RX0001 INC RX0002 STR RX, 0802 0003 08020004 BT1JS, 000F0005 000F0006 BT1JC, 00060007 00060008 LDD RX, 08020009 0802000A NOT RX000B STR RX, 0802000C 0802000D JMP PC, 000F000E 000F000F LDD RX, 08020010 08020011 JMP PC IF Z, 00180012 00180013 LDD RX, 08000014 08000015 SLL RX0016 JMP PC, 001B0017 001A0018 LDD RX, 08000019 0800 001A SRL RX001B STR RXL, PORTA001C STR RX, 0800 001D 0800001E JMP PC, 0100001F 0100

PROGRAMA 03

0100 LDI RX, 00050101 00050102 STR RX, 08010103 08010104 LDI RX, FFFF0105 FFFF0106 DEC RX, IF NZ0107 LDD RX, 08010108 08010109 DEC RX010A JMP PC, IF Z, 0110010B 0110011C STR RX, 0801011D 0801011E JMP PC, 0104 011F 01040110 JMP PC, 00040111 0004

RUTINA DE DELAY

Page 47: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

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

Page 48: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

RSTCLK

CU10

BUS DATA_IN

BUS ADDRESS

MEM

OR

IA

uP16

CPU

PC

16R

MA

R

RX

IR

MD

RO

MD

RI

MU

XM

AR

MUXRX

FPGA

CCRALU

BUS CONTROL

BUS DATA_OUT

PORT A PORT B

ENTRADAS A FPGASALIDAS DE FPGA

REGPA

MU

XM

DR

I2

REGPB

ENTR

AD

A S

A F

PG

A

IX

MU

XM

AR

2

CO

NTR

OLA

DO

R D

E A

DC

CO

NV

ERSO

RA

DC

SER

IE

Page 49: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU10

A10B10 A9 B14

Page 50: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU10

Page 51: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU10

CONTROLADOR DE ADCCONVERSOR

ADC SERIE

uP16

csn_adc

clock_adc

dout_adc

din_adc

salid

a_co

ntr

add

r_co

ntr

end

_of_

con

v

star

t_co

ntr

FPGA

muxmdri <= salida_contr

addr_contr <= salidair(7 downto 5)

ADC128S022

Page 52: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU1014 13 12 11 10 9 8 7 6 5 4 3 2 1 0IR 15

X”0000” 00000000 = CLR RXX”0100” 00000001 = INC RXX”0200” 00000010 = LDI RXX”0300” 00000011 = DEC RXX”0400” 00000100 = NOPX”8000” 10000000 = RSTX”0500” 00000101 = LDD RXX”0600” 00000110 = STR RXX”070X” 00000111 = OPERACIONES ARITMÉTICO-

LÓGICAS ENTRE MEMORIA DE DATOS Y REGISTRO “RX”.

X”0800” 00001000 = STR RXL, PORT AX”09X0” 00001001 = BIT SET I, PORT AX”0AX0” 00001010 = BIT CLR I, PORT AX”0B00” 00001011 = INC PORT AX”0C00” 00001100 = DEC PORT AX”0D00” 00001101 = LDI RX, PORT BX”0E00” 00001100 = BTIJC, PORT BX”0F00” 00001101 = BTIJS, PORT BX”1000” 00010000 = JMP PC, DIRX”1100” 00010001 = JMP PC, IF Z, DIRX”1200” 00010010 = JMP PC, IF C, DIRX”1300” 00010011 = DEC RX, IF NZX"1400" 00010100 = LDI IXX"1500" 00010101 = INC IX X"1600" 00010110 = LDD RX, IXX"1700" 00010111 = STR RX, IXX”1800” 00011000 =START CONV CH I, ADCX”1900” 00011001 = LDD RX, ADCX”1A00” 00011010 = JUMP PC IF EOC NZ, ADC

USO ESTOS BITS PARA ENTRAREL CÓDIGO DE IDENTIFICACIÓNDEL BIT A SELECCIONAR:PORT_A(BIT 0) = “000”PORT_A(BIT 1) = “001”

.

.

.

.PORT_A(BIT 6) = “110”PORT_A(BIT 7) = “111”

RESERVADOS PARA OPER. CON LA "ALU"

Total: 43 instrucciones

Page 53: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

Controlador ADCClock_50MHz

Reset

sal_controller

End of Conversionaddress

Controlador del conversor ADC128S022(de la placa Terasic DE0-Nano - Cyclone IV)

ADC128S022

doutdinsclkcsn

FPGA

8 canales

CU10

Page 54: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

ADC128S022CU10

Page 55: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

ADC128S022CU10

Page 56: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

ADC128S022CU10

Page 57: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

ADC128S022CU10

Page 58: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

csn

start

t

t

t

t

t

t

clock

DIAGRAMA DE TIEMPOS DE LAS SEÑALES DE CONTROL

sclk

din

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”.

Momento de escribir al ADC Momento de leer el ADC

CU10

cuatro ceros

Page 59: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU10 Código del controlador del ADC(Test en la placa DE0-Nano))

Page 60: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU10

Se usan los 8 bits mas significativosde los 12 adquiridos para servisualizados en los 8 LEDs de la placaDE0-Nano.

Page 61: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU10

Page 62: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU10

Cómo se debe adaptar este proyecto para ser usado porel microcontrolador ...???

Page 63: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

LEDs (D7 .....D0) = dout (11 ....4) = 01110101 = 75 (hexa)

Vmedida = 1,54 V Vref = 3,32 VLectura osciloscopio = 1879Calculo para 1,54 V = 1889

Page 64: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

dout_adc

sclk

dout_adc = 0000011101010111 = 0757(hexa) = 1879 (dec)

Page 65: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

B16=GPI0_21=CSN

F15=GPIO_28=DIN F16 =GPIO_29=EOC

D16= GPIO_25=SCLK

G15=GPIO_212=DOUT

PIN PLANNER de este proyecto

Page 66: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU11

PROYECTO CU11

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

Page 67: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

Controlador I2C

Start

Clock_200KHz

Reset

Dataout

Datain

Controlador de bus maestro I2C Ejemplo con la memoria EEPROM 24LC02B

(de la placa Terasic DE0-Nano - Cyclone IV)

Memoria EEPROM(2Kbits serie I2C)

24LC02B

SDASCL

FPGAVdd Vdd

R_Wn

Addressin

Acnowledge

Error_out

End_of_Trans

CU11

Page 68: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

I2C BUS

La versión básica suele usarun dispositivo Master quecontrola por el bus desdeun dispositivo Slave hasta128 que pueden interactuar sólo con el Master.El bus es de 2 hilos, del tipo open-drain: Uno es unreloj (SCL) que gobierna elMaster y el otro es dedatos (SDA) que es bidireccional.

La versión extendida consiste de múltiples Master que pueden tomar el control del busa través de un modo de arbitraje.

CU11

Page 69: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

I2C BUS Las líneas SCL y SDA deben terminarcon una resistencia de pull-up y porlo tanto los terminales de dispositivos conectados a ellas deben admitir labidireccionalidad.

Todo proceso de comunicación para latransferencia de información debeconsistir de una condición inicial deinicio (START) y una de finalización (STOP).

En cada paquete enviado por el masterse espera un reconocimiento del slaveseleccionado. Si no responde debegenerarse el apropiado manejo de erroren dicha transferencia en una capasuperior del protocolo de comunicación.

CU11

Page 70: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

I2C BUS

Los cambios en la línea deSDA para transferencia de datos se deben realizarsiempre con SCL en bajo.

Para comenzar una transacción se debe generarun flanco negativo en SDAcuando SCL esté en alto.

Para terminar una transacción se debe generarun flanco positivo en SDAcuando SCL esté en alto.

CU11

Page 71: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

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

Page 72: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

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

Page 73: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

24LC02B(I2C 2K EEPROM)

Este modelo de memoria tiene unaidentificación de 7 bits: 1010XXX.

CU11

Page 74: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

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.3 - Dato.

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).

MODO USADO AQUI

CU11

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

Page 75: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

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 delectura como se muestra, se leerá el dato de la dirección N+1.

CU11

Page 76: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

24LC02B(I2C 2K EEPROM)

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 yluego se adquiere el dato almacenado.

MODO USADO AQUI

CU11

Page 77: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

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

Page 78: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

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

CU11

Page 79: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU11Código del controlador I2C

Page 80: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU11

Page 81: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

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 LAMEMORIA 24LC02 .......!!!

QUE HABRÍA QUE MODIFICAR EN ESTE PROYECTO ...???

Page 82: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU11

Page 83: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU11

Page 84: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU11

Page 85: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU11

Page 86: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU11

Page 87: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU11

Page 88: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

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

Page 89: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

Rutina completa de la primera escritura

CU11

Page 90: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

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

CU11

Page 91: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

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

CU11

Page 92: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

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

CU11

Page 93: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

Rutina de la segunda escritura desde WORD ADDRESS y WRITE DATA

CU11

Page 94: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU12

PROYECTO CU12

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

Page 95: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

Generador PWMClock_50MHz

Reset_in sal_pwmdata_in

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)

GENERADOR "PWM" (Pulse Width Modulation)CU12

Page 96: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

sal_pwm

clock_per

t

t

t

clock_50mhz

Desde 1 hasta 1022 ciclos de clock_per

mode_ucnt => "x x M1 M0 x x D9 ...............D0"

M1 M0 => F_pwm0 0 50 KHz0 1 25 KHz1 0 10 KHz1 1 5 KHz

Rango de 1 a 1023períodos de clock_perpara definir el "1" lógico

GENERACIÓN DE SEÑAL "PWM" (Pulse Width Modulation)

Desde 1022 a 1 Período de clock_per

CU12

Page 97: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU12

Código del Generador PWM

Page 98: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU12

Page 99: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU12

Page 100: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU12

Código del TestBench para el Generador PWM

Page 101: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

CU12

Page 102: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

Período de la frecuencia = 20,48 us

CU12

Page 103: MÓDULO 2 - UNLPdiseÑo en vhdl de microprocesador elemental basado en el proyecto cu9, adicionando un controlador independiente del conversor analÓgico-digital tipo serie adc128s022,

Período de la frecuencia = 40,959 us

CU12