proyecto cu6 - unlp · 2018. 9. 22. · normal escritura desde registro rx. a nivel de bit borrar...

87
CU6 PROYECTO CU6 DISEÑO EN VHDL DE MICROPROCESADOR ELEMENTAL CON UN REGISTRO INTERNO CON ACCESO DIRECTO A LA MEMORIA DE DATOS PARA REALIZAR LECTURA Y ESCRITURA DE LA MISMA Y OPERACIONES ARITMÉTICO-LÓGICAS ENTRE ELLA Y DICHO REGISTRO.

Upload: others

Post on 25-Jan-2021

6 views

Category:

Documents


0 download

TRANSCRIPT

  • CU6PROYECTO CU6

    DISEÑO EN VHDL DE MICROPROCESADOR ELEMENTAL CON UN REGISTRO INTERNO CON ACCESO DIRECTO A LAMEMORIA DE DATOS PARA REALIZAR LECTURA Y ESCRITURA DE LA MISMA Y OPERACIONES ARITMÉTICO-LÓGICAS ENTRE ELLA Y DICHO REGISTRO.

  • BUSDATAMEMIN

    BUS DATAMEMOUT

    BUS DIRMEM

    MEM

    OR

    IA

    uP16

    BUS CONTROL

    CLK

    RST

    CPU

    MA

    RM

    DR

    OM

    DR

    I

    FPGACU6

    MEM

    OR

    IA

    IR

    PC

    16

    R

    MU

    XM

    AR

    RX

    MUXRX

    ALU

    CLK_UP16

    DIV_CLK

  • CU6

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

    00000000 = CLR RX00000001 = INC RX00000010 = LDI RX00000011 = DEC RX00000100 = NOP10000000 = RST00000101 = LDD RX00000110 = STR RX00000111 = OPERACIONES

    ARITMÉTICO-LÓGICAS ENTRE MEMORIA DE DATOS Y REGISTRO “RX”.

    01000 RX RX +MEM01001 RX RX + MEM +C01010 RX RX - MEM010 11 RX RX – MEM - C10001 RX NOT RX00101 RX SWAP RX10000 RX SLA RX10001 RX SRA RX10010 RX SLL RX10011 RX SRL RX11000 RX RX AND MEM11001 RX RX NAND MEM11010 RX RX OR MEM11011 RX RX NOR MEM11100 RX RX XOR MEM11101 RX RX XNOR MEM

    EN “0”

  • FPGAALUR

    clockalu

    entradaalu_a

    opselecalu (4..0)

    16

    16

    GENERADOR DE ESTÍMULOS

    DESDE TEST BENCH

    salidaalu

    ALU

    entradaalu_b

    16

  • ALUR

  • ALUR

    IMPLEMENTACIÓN DE “A + B + CARRY”

    y “A – B – CARRY”

    RECIÉN EN EL PROYECTO CU7

  • ALURTEST-BENCH DE ALUR

  • ALUR

  • ALUR

  • ALUR

    salidaalu

  • ALUR

    salidaalu

  • ALUR

    salidaalu

  • ALUR

    salidaalu

  • MUXRX

  • MUXRX

  • MUXRXTEST-BENCH DE MUXRX

  • MUXRX

  • CU6

    (1) TRABAJOS CON INSTRUCCIONES SÓLO CON RX:--REALIZAR OPERACIÓN.--GRABAR RESULTADO EN EL REGISTRO.

    (2) TRABAJOS CON INSTRUCCIONES ENTRE RX Y MEM:--LEER DATO DE MEMORIA.--REALIZAR OPERACIÓN.--GRABAR RESULTADO EN EL REGISTRO.

    PARA OPTIMIZAR EL USO DE ESTADOS SE APROVECHA PARTE DE LASRUTINAS DE (1) EN LAS ACTIVIDADES DE (2) COMO SE HIZO EN ELPROYECTO ANTERIOR CON STR_RX/LDD_RX Y LDI_RX.

  • CU6

  • CU6

  • CU6

  • CU6

  • CU6

    TEST-BENCH PARA CU6

  • CU6REPORTE DEL COMPILADOR

  • CU6CONTENIDO DEL ARCHIVO RAM.HEX PARA ESTE PROYECTO

    Instruccionescargadas en RAM:

    LDI RX, 000E

    STR RX, 0800LDI RX, 0018STR RX, 0801 LDD RX, 0800RX + MEM, 0801LDI RX, F001SLL RXSRL RXSRL RXRX AND MEM, 0800NOT RXRST

  • CU6

    TEST BENCH PARA VERIFICAR CONTENIDO DE RAM PARA ESTE PROYECTO

  • CU6

    LDI RX, 0800 LDI RX, 0801 LDD RX, 0800 RX + MEM SLL SRL RX AND MEM NOT RX

  • CU7PROYECTO CU7

    DISEÑO EN VHDL DE MICROPROCESADOR ELEMENTAL CON UN REGISTRO INTERNO CON ACCESO DIRECTO A LAMEMORIA DE DATOS PARA REALIZAR LECTURA Y ESCRITURA DE LA MISMA Y OPERACIONES ARITMÉTICO-LÓGICAS ENTRE ELLA Y DICHO REGISTRO. SE ADICIONAN INSTRUCCIONES PARA IMPLEMENTAR REDIRECCIONAMIENTO CONDICIONAL E INCONDICIONAL Y OPERACIONES CONDICIONALES CON REGISTRO RX.

  • BUSDATAMEMIN

    BUS DATAMEMOUT

    BUS DIRMEM

    MEM

    OR

    IA

    uP16

    BUS CONTROLCPU

    MA

    RM

    DR

    OM

    DR

    I

    FPGACU7

    MEM

    OR

    IA

    IR

    PC

    16

    R

    MU

    XM

    AR

    RX

    MUXRX

    ALU CCR

    CLK

    RST

    CLK_UP16

    DIV_CLK0

    1

    01

    Nota: Ahora MDRO se conecta a la salidade la ALU

  • CU7

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

    00000000 = CLR RX00000001 = INC RX00000010 = LDI RX00000011 = DEC RX00000100 = NOP10000000 = RST00000101 = LDD RX00000110 = STR RX00000111 = OPERACIONES

    ARITMÉTICO-LÓGICAS ENTRE MEMORIA DE DATOS Y REGISTRO “RX”.

    00010000 = JMP PC, (MEMCODE+1)00010001 = JMP PC, IF Z00010010 = JMP PC, IF C00010011 = DEC RX, IF NOT Z

    01000 RX RX +MEM01001 RX RX + MEM +C01010 RX RX - MEM010 11 RX RX – MEM - C10001 RX NOT RX00101 RX SWAP RX10000 RX SLA RX10001 RX SRA RX10010 RX SLL RX10011 RX SRL RX11000 RX RX AND MEM11001 RX RX NAND MEM11010 RX RX OR MEM11011 RX RX NOR MEM11100 RX RX XOR MEM11101 RX RX XNOR MEM

    EN “0”

    Dependendientes del CCR (CONDITION CODE REGISTER)*

    *

  • CCR

  • CCR

  • CCRTEST-BENCH DE CCR

  • CCRREPORTE DEL COMPILADOR

  • CCR

    C = 1 , Z=1

    C = 1 , Z=0

    C = 0 , Z=1

    C = 1 , Z=1

    RESET

  • CU7

  • CU7

  • CU7

    (zero = ‘1’ or salidarx = X”0000”)

  • CU7

    INCORPORACIÓN PARAUSAR LAS INSTRUCCIONES“A+B+Carry” y “A-B-Carry”

  • CU7CONTENIDO DEL ARCHIVO RAM.HEX PARA ESTE PROYECTO

    Instruccionescargadas en RAM:

    JMP PC, 0004

    LDI RX, 00FFLDI RX, 0003INC RXINC RX DEC RX IF Z JMP PC IF Z, 000CRSTLDI RX, 0022JMP PC IF Z, 0012JMP PC, 0013RSTLDI RX, FFFFSTR RX, 0900LDI RX, 0001 RX + MEM, 0900JMP PC IF C, 001ERSTDEC RXDEC RXRST

  • CU7

    JMP PC, 0004

    LDI RX, 0003 INC RX INC RX

    ME SALTEO «LDI RX, 00FF» DEBIDO A «JMP PC, 0004»

  • CU7

    DEC RX IF NOT ZERO

    Z=‘1’

    LDI RX, 0022

    SALTO CONDICIONAL SI ES CERO

  • CU7

    LDI RX, 0022

  • CU7

    STR RX, 0900 LDI RX, 0001

  • CU7

    RX + MEM, 0900 JMP PC IF Z, 001E

  • CU7

    DEC RX DEC RX RST

  • CU8PROYECTO CU8(CON AIRE DE MICROCONTROLADOR)

    DISEÑO EN VHDL DE MICROPROCESADOR ELEMENTAL CON UN REGISTRO INTERNO CON ACCESO DIRECTO A LA MEMORIA DE DATOS PARA REALIZAR LECTURA Y ESCRITURA DE LA MISMA Y OPERACIONES ARITMÉTICO-LÓGICAS ENTRE ELLA Y DICHO REGISTRO. ADEMÁS DISPONE DE INSTRUCCIONES PARA IMPLEMENTAR REDIRECCIONAMIENTO CONDICIONAL E INCONDICIONAL Y OPERACIONES CONDICIONALES CON REGISTRO RX.

    SE ADICIONA EN ESTE PROYECTO LA HABILIDAD DE MANEJAR DOS PUERTOS DE DATOS EXTERNOS A LA FPGA CON CONTROL INDEPENDIENTE DE OPERACIÓN EN CADA BIT.

  • RSTCLK

    CU8

    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

  • CU8A FIN DE APROVECHAR LA PLACA DEMO DE CYCLONE IV, SE HA DISEÑADOEL “PORT A” COMO SALIDA DE 8 BITS A FIN DE MANEJAR DIRECTAMENTE LOS8 LEDS DISPONIBLES.EL “PORT B” COMO ENTRADA, TIENE ASOCIADOS PULSADORES Y DIP-SWITCHES.

    EL “PORT A” PUEDE TRABAJAR EN DOS MODALIDADES:

    NORMAL ESCRITURA DESDE REGISTRO RX.

    A NIVEL DE BIT BORRAR Ó AJUSTAR CADA UNO DE LOS 8 BITS DEL PORTDE FORMA INDEPENDIENTE, MANTENIENDO EL MISMOESTADO DEL RESTO.

    EL “PORT B” PUEDE TRABAJAR EN DOS MODOS DIFERENTES:

    NORMAL LECTURA DE TODOS SUS BITS EN FORMA SIMULTÁNEA.

    TEST A NIVEL DE BIT ANALIZA EL ESTADO DE UN BIT EN PARTICULAR A FINDE DEFINIR UNA POSIBLE ACCIÓN.

  • CU8

    REG

    PA

    CPU

    RX

    8

    PO

    RT

    A

    PA7PA6PA5PA4PA3PA2PA1PA0

    FPGA

    PORT B

    PB

    7P

    B6

    PB

    5P

    B4

    PB

    3P

    B2

    PB

    1P

    B0

    MDRI

    IMPLEMENTACIÓN PARA MANEJO DE PUERTOS E/S

    ENTRADA

    SALIDA

    8

    REGPB

    MUXMDRI

    RAM

    16

    1 6

  • CU814 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 NZ

    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

  • X”09X0” = 0000 1001 XXX0 0000 BIT SET I, PORT A

    if (salidair >= X”0900” and salidair

  • X”0800” = 0000 1000 0000 0000 STR RXL, PORT A

    if (salidair = X”0800”) then proximoestado = X”0A00” and salidair

  • REGPA

  • REGPATEST-BENCH DE REGPA

  • REGPA

  • REGPA

  • REGPA

    SIMULACIÓN COMPLETA

  • REGPA

    SIMULACIÓN PARA AJUSTE DE BIT DE PORT A (BIT SET)

  • REGPA

    SIMULACIÓN PARA BORRADO DE BIT DE PORT A (BIT CLR)

  • REGPA

    SIMULACIÓN PARA LOAD, INC Y DEC PORT A

  • REGPB

  • REGPBSIMULACIÓN PARA REGISTRO REGPORTB

  • REGPBSIMULACIÓN PARA MUXMDRI

  • CU8

  • CU8

    LDI RX, 000ASTR RXL, PORTA BIT CLR 2, PORTACLR RX BIT CLR 1, PORTALDI RX, 00FF BIT CLR 0, PORTADEC PORTA LDI RX, 00AADEC PORTA STR RXL, PORTAINC PORTA LDI RXL, PORTBCLR RX STR RXL, PORTABIT SET 0, PORTA BTIJS 0, 0024BIT SET 1, PORTA RSTBIT SET 2, PORTA LDI RX, 0055 BIT SET 3, PORTA STR RXL, PORTABIT SET 4, PORTA BTJIC, 002B BIT SET 5, PORTA LDI RX, 0001BIT SET 6, PORTA LDI RX, 00AABIT SET 7, PORTA STR RXL, PORTABIT CLR 7, PORTA RSTBIT CLR 6, PORTABIT CLR 5, PORTABIT CLR 4, PORTABIT CLR 3, PORTA

    CONTENIDO DEL ARCHIVO RAM.HEX PARA ESTE PROYECTO

  • CU8INSTRUCCIONES ESPECIFICADAS EN FORMA NEMOTÉCNICA

  • CU8INSTRUCCIONES ESPECIFICADAS EN FORMA NEMOTÉCNICA

  • CU8

    LAS INSTRUCCIONES BIT SET PORT A Y BIT CLR PORT A AUTOMÁTICAMENTELEEN LA POSICIÓN DEL BIT A MODIFICAR, LEYENDO DESDE EL REGISTRO IR(7,6,5).

    LAS INSTRUCCIONES TEST BIT JMP IF CLR Y TEST BIT JMP IF SET, PARA PORT A, SON SIMILARES A LAS DE JMP PC IF Z Y JMP PC IF C, EN CARGAN EL DATO DE LA POSIBLEPRÓXIMA DIRECCIÓN DE PROGRAMA Y LUEGO SE RESUELVE SI DEBE SALTAR AHÍ ÓSEGUIR CON LA PRÓXIMA INSTRUCCIÓN CONSECUTIVA.

    STR RXL, PORT A ES SIMPLE YA QUE SÓLO HAY QUE ESCRIBIR EN REGPA.DADO QUE PORT A ES DE 8 BITS, SÓLO SE CARGA LA PARTE BAJA DE RX.

    LDI RXH, PORT B, DEBE RUTEAR EL DATO DE SALIDA DE PORT B HACIA RX.PARA ELLO, HAY QUE ESCRIBIR REGPB, DIRECCIONAR LA ENTRADA DE MDRI PARALEER PORT B Y NO MEMORIA RAM (selmuxmdri = ‘1’).LUEGO SE ESCRIBE MDRI Y POR ÚLTIMO RX.DEBE VOLVERSE LUEGO (selmuxmdri = ‘0’) PARA DIRECCIONAR A LA RAM.

  • CU8

    INSTANCIACIÓN DE NUEVOS COMPONENTES

  • CU8DECISIONES SOBRE INSTRUCCIONES CON “PORTA” Y LECTURA DE “PORTB”

  • CU8RUTINA PARA INSTRUCCIONES DE SALTO CONDICIONAL SEGÚN EL PORT_B

    SE APROVECHA PARTE DEL HARDWARE DE “REGPA” (SALIDACODE) PARA DECODIFICAR EN LAS INSTRUCCIONES “BTIJC, PORT B” Ó “BTIJS, PORT B”, QUE BIT HAY QUE ANALIZAR.SE COMPARA CON LO LEÍDO EN “SALIDAREGPB” CON UNA FUNCIÓN “AND”:SI EL RESULTADO DÁ “CERO” EL BIT ANALIZADO ERA “0” Y VICEVERSA.

    NO SALTA

    SALTA SET

  • CU8

    VUELVE PARA BUSCARNUEVA INSTRUCC.

    RUTINA PARA INSTRUCCIONES DE “SET BIT” Y “CLEAR BIT” EN EL “PORTA”

  • CU8RUTINAS PARA INSTRUCCIONES “STR RX, PORTA” E “INC PORTA”

    EN LA PRÓXIMAFILMINA

  • CU8RUTINAS PARA INSTRUCCIÓN “DEC PORTA”

  • CU8INICIO DE RUTINA PARA INSTRUCCIÓN DE LECTURA DEL PORT_B

  • CU8RUTINA PARA INSTRUCCIÓN DE LECTURA DEL PORT_B

  • CU8RUTINA PARA INSTRUCCIÓN DE LECTURA DEL PORT_B

  • CU8FIN DE RUTINA PARA INSTRUCCIÓN DE LECTURA DEL PORT_B

    SALTA A PRÓXIMAINSTRUCCIÓN

  • CU8

    UTILIZA LOS BITS 7,6 Y 5 DE “IR”PARA DECODIFICAR EL BIT CARGADOEN LAS INSTRUCCIONES DE MANEJODE BIT EN PORTA Y PORTB

  • CU8

    REPORTE DEL COMPILADOR

    4% DE ELEMENTOS LÓGICOS Y

    11% DE RAM DEDICADAUTILIZADOS EN ESTE ÚLTIMO

    PROYECTO

  • CU8

    STR RXL, PORT_A INC PORT_A DEC PORT_A

    INSTRUCCIONES: STR_RXL, PORT_A ; DEC_ PORT A ; INC_PORT A

  • CU8INSTRUCCIONES BIT SET I, PORTA

    DESDE INSTRUCCIÓN BITSET 0, PORTA (“0900”)HASTA INSTRUCCIÓN BITSET 7,PORTA (“09E0”)

  • CU8INSTRUCCIONES BIT CLR I, PORTA

    DESDE INSTRUCCIÓN BITCLR 7, PORTA (“0AE0”)HASTA INSTRUCCIÓN BITCLR 0,PORTA (“0A00”)

  • CU8BIT TEST 0, JUMP IF CLR, PORTB X”002E”

    COMO EL BIT “7” DE PORT B ES “0” (X”0F” = “00001111”)EL MICRO SALTA A LA POSICIÓN DE MEMORIA X“002B”Y EJECUTA LA INSTRUCCIÓN “LDI RX, 00AA” EN VEZ DE “LDI RX, 0001”. LUEGO CARGA EL PORTA CON DICHO DATO: “AA”

  • CU8

    COMO EL BIT “0” DE PORT B ES “1” (X”0F” = “00001111”)

    EL MICRO SALTA A LA POSICIÓN DE MEMORIA X“0024”

    Y EJECUTA LA INSTRUCCIÓN “LDI RX, 0055” (SALTEA LA DE “RST”)Y LUEGO STR RXL, PORT_A , DONDE PORT_A ADOPTA EL VALOR X“55”

    BIT TEST 0, JUMP IF SET, PORTB “0024” Y STR RXL, PORTB

  • CU8LDI RXL, PORTB

    EL BYTE ALTO DE “RX” SE “RELLENA” CON CEROS.