MICROELECTRÓNICA Laboratorio 02: Programación de un CPU Mg. Jorge HUARCA JLHQ Aqp - Perú Mensaje motivacional Evite escuchar malos comentarios Fuente: 2 JLHQ Aqp - Perú Recordando la sesión anterior Indicar los pasos para realizar un circuito en un FPGA 3 JLHQ Aqp - Perú Capacidad terminal Obtiene criterios teóricos y técnicos para el diseño de sistemas embebidos por medio de circuitos FPGA usando el lenguaje concurrente VHDL así como el uso de herramientas tecnológicas para el diseño de circuitos y dispositivos embebidos, los cuales son usados con responsabilidad en beneficio de la sociedad. 30 % a) Aplica conocimientos de ciencias básicas para comprender la fabricación y aplicación de dispositivos y Micro-dispositivos en FPGA mediante lenguaje de bajo nivel VHDL. b) Diseñar y programar eventos discretos secuenciales en dispositivos FPGA por medio de VHDL. c) Diseñar, implementar y evaluar sistemas de control en FPGA y microsistemas utilizando hardware y periféricos de comunicación. 4 JLHQ Aqp - Perú Elementos de la capacidad terminal / Competencia específica de la sesión Al finalizar el laboratorio los alumnos realizan la programación de un CPU en un FPGA por medio de lenguaje VHDL para una mejor comprensión de VHDL. 5 JLHQ Aqp - Perú Contenidos de la sesión Partes de un CPU. Registros. Entidad y I/O Code Operation 6 JLHQ Aqp - Perú Explicación de CPU • • • • PC (Program Counter) Instruction decoder ALU (Arithmetic Logic Unit) Registers PC ALU R0 R1 CPU Instruction decoder R2 R3 registers 7 JLHQ Aqp - Perú Register El CPU contiene 4 registros de 4 bits cada uno para trabajar con ALU. Los registros pueden funcionar como registro fuente (Rs) o registro destino (Rd), estos registros son apuntados por medio de dos bits. Dirección Register Name 4 bits Rd_1 Rd_0 Rs_1 Rs_0 0 0 R0 (0 0 0 0) 0 0 0 0 0 1 R1 (0 0 0 0) 0 1 0 1 1 0 R2 (0 0 0 0) 1 0 1 0 1 1 R3 (0 0 0 0) 1 1 1 1 8 JLHQ Aqp - Perú Register Status El registro Status guarda información adicional después de haber realizado una operación lógica matemática, esta conformado por 4 bits. Status Bit Name Name Description S3 Compare Se pone a 1 cuando después de una operación de comparación los valores sean iguales. S2 Negative Flag Se pone a 1 cuando después de una sustracción exista acarreo S1 Zero flag Se pone a 1 cuando después de una operación lógica matemática el resultado sea cero. S0 Carry Flag Se pone a 1 cuando después de una adición existe acarreo, también el caso de rotación de bits 9 JLHQ Aqp - Perú Entity of CPU La siguiente figura muestra la propuesta de la entidad. Rd y Rs sirven para direccionar los registros del CPU, K sirve para asignar datos y code operation para seleccionar el tipo de instrucción a realizar. El Button sirve para ejecutar la operación. 10 JLHQ Aqp - Perú Entity of CPU Para las salidas se tiene 4 bits (leds) para visualizar el valor de Status, y dos adicionales para visualizar los valores de los registros destino y fuente (según sean direccionados). 11 JLHQ Aqp - Perú I/O del CPU Para interactuar con el CPU se propone las siguientes I/O de la tarjeta. - Dos interruptores para seleccionar el registro Destido - Dos interruptores para seleccionar el registro Fuente - Cuatro interruptores k3 k2 k1 k0 para inyectar valores. - Cuatro interruptores Code Op. Para seleccionar el tipo de instrucción. Button (CLK) 12 JLHQ Aqp - Perú I/O del CPU Para las salidas se propone la utilización de leds. - Cuatro leds para visualizar el registro Destino - Cuatro leds para visualizar el registro Fuente - Cuatro leds para visualizar el registro Status. 13 JLHQ Aqp - Perú Code Operation Code Operation Descripción 0 0 0 0 Clear Status 0 0 0 1 MOV: Rd <= K 0 0 1 0 MOV: Rd <= Rs 0 0 1 1 ADD: Rd <= Rd + Rs , afecta status 0 1 0 0 ADDI: Rd <= Rd + K , afecta status 0 1 0 1 SUB: Rd <= Rd - Rs , afecta status 0 1 1 0 SUBI: Rd <= Rd - K , afecta status 0 1 1 1 AND: Rd <= Rd & Rs 1 0 0 0 ANDI: Rd <= Rd & K 1 0 0 1 COM: Rd <= Complemento a uno 1 0 1 0 CP: Status (S3) <= Compare Rd, Rs 1 0 1 1 CPI: Status (S3) <= Compare Rd, K 1 1 0 0 BCF: Rd (bit) <- 0 , bit esta dado por K 1 1 0 1 BSF: Rd (bit) <- 1 , bit esta dado por K 14 JLHQ Aqp - Perú Code Operation – Instruction ADD Description: Adds two registers and the contents of the C Flag and places the result in the destination register Rd. Operation: Rd <= Rd & Rs Ejemplo Antes de ejecución: R3 = 8, R2 = 11, R1 = 2 y R0 = 3 // S0 (Carry) = 0; Después de ejecución: R3 = 8, R2 = 11, R1 = 5 y R0 = 3 // S0 (Carry) = 0; 15 JLHQ Aqp - Perú Code Operation – Instruction ADDI Description: Adds one register with the literal K and the contents of the C Flag and places the result in the destination register Rd. Operation: Rd <= Rd + K Ejemplo Antes de ejecución: R3 = 8, R2 = 11, R1 = 2 y R0 = 3 // S0 (Carry) = 0; Después de ejecución: R3 = 3, R2 = 11, R1 = 5 y R0 = 3 // S0 (Carry) = 1; 16 JLHQ Aqp - Perú Evaluación de la sesión 1 Implemente la instrucción ADDI en la tarjeta Nexys A7 17 JLHQ Aqp - Perú Evaluación de la sesión 2 Implemente todas las instrucciones en la tarjeta Nexys A7 18 JLHQ Aqp - Perú Resumen de la sesión Partes de un CPU. Registros. Entidad y I/O Code Operation 19 JLHQ Aqp - Perú Recomendaciones Revisar información y ejercicios de : 21 JLHQ Aqp - Perú Thanks for your attention JLHQ Aqp - Perú