computadores tu sistemas computacionales n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Computadores (TU Sistemas Computacionales) PowerPoint Presentation
Download Presentation
Computadores (TU Sistemas Computacionales)

Loading in 2 Seconds...

play fullscreen
1 / 65

Computadores (TU Sistemas Computacionales) - PowerPoint PPT Presentation


  • 114 Views
  • Uploaded on

Computadores (TU Sistemas Computacionales). Elementos de estructura de computadores. José Estay A / jea I semestre académico 2014. PIC 16F877-Arquitectura.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

Computadores (TU Sistemas Computacionales)


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
computadores tu sistemas computacionales

Computadores(TU Sistemas Computacionales)

Elementos de estructura de computadores

José Estay A / jea I semestre académico 2014

pic 16f877 arquitectura
PIC 16F877-Arquitectura
  • Este MCU es ampliamente usado como un dispositivo avanzado en la enseñanza ya que posee una variado complemento de interfaces: entrada análoga, puerto serial, puerto esclavo, entre otros mas un buen rango de temporizadores en hardware
slide3
El PIC 16F877 es una elección adecuada para el aprendizaje sobre microcontroladores, debido a que su lenguaje de programación es relativamente simple, en comparación con un microprocesador tal como el Pentium INTEL, el cual es usado en los computadores tipo PC. Este tiene un set de instrucciones poderoso pero complejo para poder soportar operaciones multimedia avanzadas
pic 16f877 pin out
PIC 16F877 Pin out
  • Este chip puede ser obtenido en diferentes formatos de encapsulado y la versión tipo DIP es recomendada para la construcción de prototipos
  • La mayoria de los pines son I/O estructurados en 5 puertos: A(5), B(8), C(8), D(8), y E(3), dando un total de 32 pines I/O
slide5
Estos pueden operar como simples pines I/O digitales, pero la mayoría tiene mas de una función, y el modo de operación de cada uno es seleccionado inicializando varios registros de control dentro del chip
  • Observe en particular, que los puertos A y E son entradas analogas por omisión (...by default...) al alimentar el chip o con Reset, así ellos tienen que ser configurados si operación I/O digital es requerida
  • El puerto B es usado para bajar el programa a la ROM FLASH del chip (RB6 y RB7) y RB0 y RB4..RB7 pueden generar una INT
slide6
El puerto C da acceso a los temporizadores (en adelante TIMERs) y puerto serial
  • El puerto D puede ser usado como un puerto esclavo, con el puerto E proveyendo los pines de control para este efecto
  • El chip puede operar realmente con una tensión algo menor de 2 Volts para trabajo con batería autónoma y ahorro de power
  • Un circuito de CLK de baja frecuencia usando solo un capacitor y un resistor para establecer la frecuencia puede ser conectado a CLKIN
slide8
O un circuito oscilador con XTAL puede ser conectado a través de CLKIN y CLKOUT
  • MCLR es la entrada de RESET; cuando es 0 la MCU se detiene y se restablece cuando MCLR es 1. Esta entrada se debe afianzar en alto permitiendo al chip ejecutar si un circuito de reset externo no está conectado, pero usualmente es una buena idea incorporar un botón reset manual en todas las aplicaciones incluidas aquellas mas triviales.
diagrama de bloque pic 16f877
Diagrama de bloque PIC 16F877
  • La memoria de programa principal es una Flash ROM la cual almacena una lista de instrucciones de 14 bits. Estas son alimentadas a la unidad de control y usadas para modificar el archivo de registros de la RAM
  • Los registros incluyen registros especiales de control, los registros de puerto y un set de registros de propósito general los cuales pueden ser usados para almacenar datos temporalmente
  • Un registro de trabajo separado, W, es usado junto a la ALU para procesar datos
  • Varios módulos especiales de periféricos proveen de un rango de opciones I/O
slide11
Hay 512 direcciones RAM en el archivo de registros: 0..1FF, los cuales están organizados en 4 bancos (0..3), cada banco contiene 128 direcciones
  • Se selecciona por omisión (seleccionado al POWER-UP) el banco 0.
  • Banco 0: es numerado 00..7F
  • Banco 1: 80..FF
  • Banco 2: 100..17F
  • Banco 3: 180..1FF
  • Los bancos contienen registros especiales de funciones (SFRs), los cuales tienen un propósito dedicado, y los registros de propósito general (GPRs). Los registros del archivo son mapeados en la figura 2-3 de la hoja de datos
slide12
Los SFRs pueden ser mostrados en el diagrama de bloques como separados de los GPRs pero ellos están de hecho en el mismo bloque lógico y direccionados del mismo modo
  • Deduciendo los SFRs desde el numero total de localizaciones de RAM y admitiendo que algunos registros se repiten en mas de un banco, esto resulta en 368 bytes de registros de datos GPR
prueba de hwr
Prueba de hwr
  • Es usual definir el hwr sobre el cual se pueden mostrar las operaciones de un programa PIC.
  • Inicialmente un diagrama de bloque es usado para esquematizar el diseño de hwr, como el que se muestra a continuación. El símbolo esquemático para la MCU es mostrado indicando los pines a ser usados
  • Para el programa de prueba simplemente se necesitan entradas que conmuten entre 0V y 5V y una indicación lógica en las salidas
una aplicaci n simple
Una aplicación simple
  • RB0..RB7: el puerto B actúa como un contador binario de 8 bit
  • RD0: un CLEAR por un push-button
  • RD1: un COUNT por un push-button
slide17
Aplicación simple: una secuencia binaria en la salida PORT B, archivo de diseño *.DSN, creado usando ISIS captura de esquemáticos)
slide18
Fuente *.ASM creado usando un editor de texto no-formateado y un archivo de listado *.LST (próxima ppt) creado usando Assembler MPASM

PROCESSOR 16F877

MOVLW 00

TRIS 06

CLRF 06

again INCF 06

GOTO again

slide19
MPASM 08.10 Released BIN1.ASM 4-18-2008 19:09:41 PAGE 1

LOC OBJECT CODE LINE SOURCE TEXT

VALUE

00001 PROCESSOR 16F877

00002

0000 3000 00003 MOVLW 00

Warning[224]: Use of this instruction is not recommended.

0001 0066 00004 TRIS 06

00005

0002 0186 00006 CLRF 06

Message[305]: Using default destination of 1 (file).

0003 0A86 00007 again INCF 06

0004 2803 00008 GOTO again

00009

00010 END

slide20
MPASM 08.10 Released BIN1.ASM 4-18-2008 19:09:41 PAGE 2

SYMBOL TABLE

LABEL VALUE

__16F877 00000001

again 00000003

MEMORY USAGE MAP ('X' = Used, '-' = Unused)

0000 : XXXXX----------- ---------------- ---------------- ----------------

All other memory blocks unused.

Program Memory Words Used: 5

Program Memory Words Free: 8187

Errors : 0

Warnings : 1 reported, 0 suppressed

Messages : 1 reported, 0 suppressed

archivo c digo de m quina creado usando assembler mpasm
Archivo Código de máquina creado usando Assembler MPASM

:020000040000FA

:0A000000003066008601860A03281E

:00000001FF

programa
Programa
  • El ‘877 tiene 8k de memoria de programa
  • Así puede almacenar un máximo de 1024x8=8192 instrucciones de 14-bit
  • Por omisión, la carga y la ejecución empiezan desde la dirección cero
  • Ejemplo de instrucción:

Código fuente: MOVLW 05A

Código HEX: 305A

Código binario: 0011 0000 0101 1010 (16 bits)

Instrucción: 11 00xx kkkk kkkk (14 bits)

La instrucción significa W5A

slide23
En el set de instrucciones de la hoja de datos (Tabla 13-2)se observa que los primeros 4 bits (1100) conforman el código de instrucción (Op-Code), los próximos 2 bits nom son usados (xx, aparece como 00 en el código binario) y los últimos 8 bits conforman el valor literal (5A)
  • El literal está representado como kkkk kkkk ya que puede tener cualquier valor en el rango 00000000..11111111 (00..FF)
  • El formato de las otras instrucciones depende principalmente del número de bits requeridos para el operando
slide24
El número de bits del op-code puede variar entre 3 y todos los 14, dependiendo del número de bits necesarios para el operando
  • Esto es diferente de un procesador convencional, tal como el Pentium, donde el op-code y el operando son cada uno creados como un número entero de bytes
  • La instrucción del PIC es más compacta como se observa en el conjunto de instrucciones mismo, para mayor velocidad de operación. Esto se define como RISC
otro ejemplo con m s detalles
Otro ejemplo con más detalles
  • La aplicación nos genera un archivo de diseño *.DSN, creado usando captura de esquemático de ISIS
  • Los otros archivos generados: *.ASM, *.LST, *.HEX
slide26
Cuando el botón RUN es presionado, un cero lógico es ingresado en RD1, y un incremento en la cuenta binaria es observada en los LEDs, donde LSB=RB0.
  • Cuando es liberado, (RD1=1) la cuenta se detiene y es retenida.
  • Cuando el botón de RESET (RD0) es presionado, la cuenta desplegada va a cero (“reseteada” a cero)
  • La velocidad del reloj de la MCU puede ser ajustada en RV1, alrededor de 40kHz.
slide28
ASM

;Source File: BIN4.ASM

;Author: Date:

;Processor: PIC 16F877

;Hardware: PIC Demo System

;Clock: RC = 100kHz

;Inputs: Port D: Push Buttons

; RD0, RD1 (active low)

;Outputs: Port B: LEDs (active high)

;WDTimer: Disabled

;PUTimer: Enabled

;Interrupts: Disabled

;Code Protect: Disabled

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

slide29
PROCESSOR 16F877 ; Define MCU type

__CONFIG 0x3733 ; Set config fuses

; Register Label Equates....................................

PORTB EQU 06 ; Port B Data Register

TRISB EQU 86 ; Port B Direction Register

PORTD EQU 08 ; Port D Data Register

Timer EQU 20 ; GPR used as delay counter

; Input Bit Label Equates ..................................

Inres EQU 0 ; 'Reset' input button = RD0

Inrun EQU 1 ; 'Run' input button = RD1

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

slide30
; Initialise Port B (Port A defaults to inputs).............

BANKSEL TRISB ; Select bank 1

MOVLW b'00000000' ; Port B Direction Code

MOVWF TRISB ; Load the DDR code into F86

BANKSEL PORTB ; Select bank 0

GOTO reset ; Jump to main loop

slide31
; 'delay' subroutine ........................................

delay MOVWF Timer ; Copy W to timer register

down DECFSZ Timer ; Decrement timer register

GOTO down ; and repeat until zero

RETURN ; Jump back to main program

slide32
; Start main loop ...........................................

reset CLRF PORTB ; Clear Port B Data

start BTFSS PORTD,Inres ; Test reset button

GOTO reset ; and reset Port B if pressed

BTFSC PORTD,Inrun ; Test run button

GOTO start ; and repeat if n pressed

INCF PORTB ; Increment output at Port B

MOVLW 0FF ; Delay count literal

CALL delay ; Jump to subroutine 'delay'

GOTO start ; Repeat main loop always

END ; Terminate source code

programa1
Programa
  • Observe que dos tipos de etiquetas (label) son usados en el programa para representar números: identificadores de etiquetas son usados al principio del programa para declarar rótulos para el archivo de registros que serán usados en el programa
  • Etiquetas que representan direcciones son puestas en la 1era. columna para marcar el destino de instrucciones GOTO y CALL
palabra de configuraci n del chip
Palabra de configuración del chip
  • La directiva de assembler _CONFIG establece aspectos relacionados con la operación del chip. Un área especial de la memoria de programa fuera del rango normal (2007h) almacena la palabra de configuración del chip.
  • La función de cada bit se muestra en la tabla a continuación, junto con algunas configuraciones típicas. Mayores detalles en la sección 12 de la hoja de datos
protecci n del c digo
Protección del código
  • Por consideraciones comerciales o de seguridad se puede prevenir la lectura del código. Detalles en la sección 14 de la hoja de datos.
  • CP1 protege deshabilita lectura
  • WRT permite deshabilitar escritura desde dentro del programa mismo
  • CPD protege escritura de la EEPROM de datos
icd desarrollo depuraci n in circuit
ICD=Desarrollo (depuración) In-Circuit
  • ICD permite que los programas sean bajados a la MCU después de que esta ha sido instalada en el circuito de aplicación
  • Con ICD, el chip puede ser programado y reprogramado durante el desarrollo evitando daños mecánicos y eléctricos causados por la remoción del chip
programaci n de bajo voltaje
Programación de bajo voltaje
  • Normalmente cuando el chip es programado, un voltaje alto (12..14 V) es aplicado al pin PGM (RB3). Para evitar la necesidad de aplicar este voltaje durante la programación in-circuit, un modo de programación de bajo voltaje es disponible, sin embargo, al usar esta opción RB3 pierde su disponibilidad como función I/O en la operación normal
power up timer
Power-up Timer
  • Cuando la fuente de poder es aplicada a una MCU programada, el inicio de la ejecución del programa debería de ser demorado hasta que la fuente y el reloj sean estables, de otra manera el programa puede no ejecutarse correctamente.
  • Así el timer power-up puede habilitarse como un paso rutinario. Un reloj interno provee una demora de 72 mseg. Esto es seguido por una demora de partida del oscilador de 1024 ciclos de reloj antes de que la ejecución del programa comience .
boren
BOREN
  • Brown-out se refiere a una breve caída en el voltaje de polarización, causados por fluctuaciones del suministro u otra falla de la fuente la cual puede interrumpir la ejecución del programa
  • Si BOREN es seteado, una falla de fuente de no mas de 100 uSeg causará que el dispositivo se mantenga en reset hasta que la alimentación se recupere y luego esperará que el timer power-up finalice, antes de reiniciar. El programa debe ser diseñado para recuperación automática
watchdog timer
Watchdog timer
  • Está diseñado para resetear automáticamente la MCU si hay una mal función del código, por un error en la lógica de programación
  • Un oscilador interno separado y un contador generan automáticamente un reset cada 18 mseg, a menos que sea deshabilitado en la palabra de configuración
  • Si WdT es habilitado, debería ser regularmente reseteado por una instrucción en el lazo del programa (CLRWDT) para prevenir el RESET. Si el programa se cuelga y la instrucción de reset del WdTno es ejecutada, la MCU reiniciará y (posiblemente) continuará correctamente dependiendo de la naturaleza de la falla
oscilador rc
Oscilador RC
  • Un reloj tipo RC (resistor-capacitor) es barato y feliz, requiere de solo dos componentes externos de bajo costo, operando con el circuito driver interno
  • La constante de tiempo determina el periodo del reloj
  • Un resistor variable puede ser usado para tener una frecuencia manualmente ajustable, aunque esto no es muy estable y preciso
oscilador xtal
Oscilador Xtal
  • Permite gran precisión. Normalmente es conectado a través de los pines de clock con un par de pequeños capacitores (15 pF)
  • Un valor conveniente es 4 MHz, esto da un tiempo para el ciclo de instrucción de 1 uSeg, lo que hace mas fácil los cálculos de temporización (cada instrucción consume 4 ciclos de reloj)
configuraci n
Configuración
  • La configuración por omisión es 3FFF, lo cual significa que la protección de código está apagada, ICD deshabilitado, escritura de programa habilitada, programación de bajo voltaje habilitada, BOREN habilitada, temporizador power-up deshabilitado, WdT habilitado y oscilador RC habilitado
  • Un seteo típico para un trabajo de desarrollo básico habilita ICD, habilita power-up timer, deshabilita WdtT, y usa oscilador tipo XT
conjunto de instrucciones del pic
Conjunto de instrucciones del PIC
  • Set de instrucciones
  • Una versión del conjunto de instrucciones del PIC, organizada en grupos funcionales se muestra en la tabla hipervinculada arriba.
  • Consiste de 35 instrucciones separadas, algunas con destinos resultantes alternativos
  • El destino por omisión para el resultado de una operación es el archivo de registros, pero el registro de trabajo W es algunas veces una opción. Cada instrucción es descrita en detalle en la hoja de datos de la MCU, sección 15
tipos de instrucciones move
Tipos de instrucciones: MOVE
  • MOVE: los contenidos de un registro son copiados a otro. No se puede mover directamente un byte desde un registro de archivo a otro, debe hacerse vía el registro W
  • Para poner datos dentro del sistema desde el programa (un literal) se debe usar MOVLW para colocar el literal dentro de W inicialmente. Luego puede ser movido a otro registro según se requiera
slide47
La sintaxis no es simétrica, para mover un byte desde W a un registro de archivo, MOVWF es usado. Para mover en el otro sentido, MOVF F,W es usado donde F es cualquier dirección de un registro de archivo.
  • Esto significa que MOVF F,F está también disponible. Esto puede parecer sin objeto, pero de hecho puede ser usado para verificar un registro sin alterarlo
tipo registro
Tipo Registro
  • Las operaciones de registro afectan solamente a un simple registro y todas excepto CLRW operan sobre los registros de archivo
  • CLEAR establece todos los bits a cero
  • DECREMENT disminuye el valor en 1
  • INCREMENT aumenta el valor en 1
  • SWAP intercambia los nibbles superior e inferior
  • COMPLEMENT invierte todos los bits
slide49
ROTATE mueve todos los bits a la izquierda o derecha incluyendo el flag de carry en este proceso
  • CLEAR y SET de un bit opera sobre un bit seleccionado, donde el registro y el bit necesitan ser especificados en la instrucción
tipo aritm tica l gica
Tipo Aritmética&Lógica
  • Adición y substracción: si el resultado genera un bit extra (p.ej FF + FF = 1FE) o requiere de una cifra de préstamo (borrow) (p.ej. 1FE – FF = FF), el flag de carry es usado
  • Las operaciones lógicas son llevadas a cabo con pares de bits de los dos números
tipo test skip jump
Tipo TEST, SKIP&JUMP
  • Los saltos programados son iniciados usando un bit de test y un brinco condicional seguido por un GOTO o CALL
  • El test bit puede ser realizado sobre cualquier bit de un registro de archivo. Este podría ser un bit de un puerto, para chequear si una entrada ha cambiado, o un bit de estado en un registro de control
slide52
BTFSC (Bit Test and Skip iF Clear) y BTFSS (Bit Test and Skip iF Set) son usados para verificar un bit y brincar a la próxima instrucción, o no, de acuerdo al estado del bit cotejado
  • DECFSZ y INCFSZ representan un test usado frecuentemente
  • El test del bit y el brinco pueden ser seguidos de una simple instrucción que involucre la condicionalidad, pero un GOTO y CALL permiten un bloque de código condicional
  • Otra opción, que es usual al usar tablas de datos, es RETLW (Return wi Literal in W)
tipo control
Tipo Control
  • NOP: no realiza operación alguna y consume 4 ciclos de reloj (delay)
  • SLEEP: detiene el programa, tal que puede ser reiniciado por una interrupción externa. También será usada al final de cualquier programa que no posea un lazo que lo devuelva hacia atrás continuamente, para prevenir que la ejecución del programa continúe sobre localizaciones de memoria no usadas. Las localizaciones no usadas contienen el código 3FFF, el cual es una instrucción valida (ADDLW FF). Si el programa no es detenido, continuará ejecutando repetidamente estas instrucciones y comenzará nuevamente cuando el PC de la vuelta a 0000
slide54
CLRWDT: significa limpie (ponga a cero)el temporizador perro de guardia. Si el programa se pega en un loop o se detiene por cualquier otra razón, será reiniciado automáticamente por el WdT. Para detener este evento cuando el programa está operando normalmente, el WdT debe ser reseteado a intervalos regulares menores a 10 mSeg dentro del loop del programa, usando CLRWDT
instrucciones opcionales
Instrucciones opcionales
  • TRIS fue una instrucción originalmente creada para hacer la inicialización de los puertos simple. Selecciona el banco 1 de registros tal que los registros de dirección de datos TRIS (TRISA, TRISB, etc.) pueden ser cargados con un código de sentido de dirección. El fabricante no recomienda más el uso de esta instrucción, aunque aún es soportada por las versiones actuales de ensambladores para mantener una compatibilidad regresiva y es usual cuando se aprende con programas muy simples
slide56
La directiva al ensamblador BANKSEL puede ser usada en programas mas avanzados ya que otorga un acceso más flexible a los registros en los bancos 1, 2, 3
  • La otra opción es cambiar los bits de selección de banco en el registro de estado usando BSF y BCF
  • OPTION: provee acceso al registro OPTION, es la otra instrucción que ya no es más recomendada. Puede ser reemplazada por BANKSEL para seleccionar el banco 1 el cual contiene el registro OPTION el que puede entonces ser accedido directamente
ejecuci n del programa
Ejecución del programa
  • Instrucciones del PIC
  • Registro IR, secuencia, op-code, decodificación
  • PC sigue la pista de la ejecución del programa
  • PC se limpia a cero al encender o resetear
  • El registro PC es de 13 bits, lo que implica 8 K de memoria de programa
  • El rango del registro PC
slide58
El registro PCL (SFR 02) contiene el byte bajo y este puede ser leído o escrito como cualquier otro registro del archivo
  • El byte alto es solo accesible indirectamente vía PCLATH (SFR 0A)
subrutinas
Subrutinas
  • Una etiqueta e usada al inicio de la subrutina
  • Cuando la subrutina es llamada esta dirección destino es copiada dentro del PC
  • Al mismo tiempo la dirección de retorno (PC + 1) es empujada dentro del stack
  • El stack tiene 8 niveles y es LIFO
slide60
La subrutina finaliza con una instrucción RETURN que causa que el programa regrese a la posición original y continúe
  • Esto es realizado sacando la dirección de retorno desde el stack y reemplazándola sobre el PC
  • En los PIC el stack no es directamente accesible (ver figura próx ppt)
interrupciones
Interrupciones
  • El stack también es usado cuando se procesa una INT
  • La INT es efectivamente un CALL y RETURN el cual es iniciado por una señal externa de hwr que fuerza al procesador a saltar a una secuencia dedicada de instrucciones: la ISR
  • Por ejemplo, la MCU puede ser seteada tal que cuando un temporizador de hwr finaliza su cuenta, el proceso requerido en ese momento es llamado vía una INT de Timer
slide63
Cuando una señal de INT es recibida se termina de ejecutar la instrucción actual y la dirección de la próxima instrucción (la dirección de retorno) es empujada dentro del stack
  • La ISR finaliza con una instrucción RETFIE la cual causa que la dirección de retorno sea extraída desde el stack
  • La ejecución del programa continúa entonces en la localización original
  • Sin embargo, hay que tener en cuenta cualquier cambio en los registros que pueda haber sucedido en la ISR
  • Si es necesario los registros deben ser salvados al comienzo de la ISR y restaurados al final, en algún conjunto de registros de archivo libres
l mites o fronteras de p gina
Límites o fronteras de página
  • Durante la ejecución normal de un programa la operación del PC es automática pero pueden surgir problemas potenciales cuando ocurre una bifurcación en el programa
  • Las instrucciones de salto (CALL o GOTO) proveen solo de una dirección destino de 11 bits, tal que la memoria de programa es efectivamente dividida en 4 bloques de 2K, o PAGINAS (pages)
  • Un salto a través de fronteras de páginas requiere de la modificación de los bits de selección de página por el programa usuario (PCLATH 4:3)
  • Además, si los 8 bits del PCL son modificados directamente, como en el caso de una lectura de una tabla, debe tenerse cuidado si un salto está hecho desde un bloque de 256 bytes a otro
  • Secciones 2.3 y 2.4 de la hoja de datos del 16F877 detallan como manejar estos problemas
slide65

Fin

TUSistComp_Comp05

JEA/jea