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".
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
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
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
IX
MUXMAR2
PC
MDRI
IX
MU
XM
AR
2
SELEMUXMAR
CU9
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
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.
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 INSTRUCCIONESLDD RX, IX Y STR RX, IX
CU9
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".
CU9
RUTINA PARA DETECCIÓN Y EJECUCIÓN DE INSTRUCCIÓN "INC IX"
CU9
UP16
PROYECTO UP16
EL MISMO DISEÑO EN VHDL DE MICROPROCESADOR DEL PROYECTO CU8,PERO ELIMINANDO LAS ENTRADAS-SALIDAS EMPLEADAS PARA TEST.
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)
UP16PLACA DE0-NANO CYCLONE IV
PORTA PORTB(0)
RESET
PORTB(5,4,3,2)
CLK 50 MHZ
EP4CE22F17C6
UP16
UP16
EP4CE22F17C6
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”.
UP16KIT
UP16
PORTB(5)
PORTB(6)
PORTB(7)
UP16 VISTA DEL PIN PLANNER EDITOR
UP16
DISPOSICIÓN DE PINES PARA COMPATIBILIDAD CON LA PLACA
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
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).
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.
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
UP16
CONTENIDO DEL ARCHIVO RAM.HEX PARA ESTE PROYECTO
UP16
CICLO DE APROX. 394 ms POR CONTEO
SIMULACIÓN PARA EL GENERADOR DE SECUENCIA
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).
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.
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.
UP16
CONTENIDO DEL ARCHIVO RAM.HEX PARA ESTE PROYECTO
LAZO EXTERNO
LAZO INTERNO
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.
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
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
UP16
RUTINA PRINCIPAL
SUBRUTINA DE GENERACIÓN
DE DELAY
EJEMPLO DE CONCEPTO DE SUBRUTINA
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
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. .
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
❶
❶
CU10
A10B10 A9 B14
CU10
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
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
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
ADC128S022CU10
ADC128S022CU10
ADC128S022CU10
ADC128S022CU10
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
CU10 Código del controlador del ADC(Test en la placa DE0-Nano))
CU10
Se usan los 8 bits mas significativosde los 12 adquiridos para servisualizados en los 8 LEDs de la placaDE0-Nano.
CU10
CU10
Cómo se debe adaptar este proyecto para ser usado porel microcontrolador ...???
LEDs (D7 .....D0) = dout (11 ....4) = 01110101 = 75 (hexa)
Vmedida = 1,54 V Vref = 3,32 VLectura osciloscopio = 1879Calculo para 1,54 V = 1889
dout_adc
sclk
dout_adc = 0000011101010111 = 0757(hexa) = 1879 (dec)
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
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.
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
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
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
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
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
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 unaidentificació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.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
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
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
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áninsertadas en la placa del impreso.
CU11
CU11Có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 LAMEMORIA 24LC02 .......!!!
QUE HABRÍA QUE MODIFICAR EN ESTE PROYECTO ...???
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
CU11
CU12
PROYECTO CU12
DISEÑO EN VHDL DE UN GENERADOR INDEPENDIENTE DE PWM (PULSE WIDTH MODULATION) PROGRAMABLE.
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
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
CU12
Código del Generador PWM
CU12
CU12
CU12
Código del TestBench para el Generador PWM
CU12
Período de la frecuencia = 20,48 us
CU12
Período de la frecuencia = 40,959 us
CU12