Ir al contenido

Ciclos de maquina e instruccion

Todo retardo por software se reduce a una pregunta: ¿cuantos ciclos de instruccion ejecuta el PIC y cuanto dura cada ciclo de maquina? Eso es exactamente lo que evalua el Segundo Parcial en la parte teorica y en el calculo del retardo de 3 ms.

El ciclo de maquina es el tiempo base del PIC18. Con la frecuencia del cristal f_osc:

CM = 4 / f_osc

¿Por que aparece el 4? El cristal marca la velocidad del reloj. La duracion de un pulso se calcula con 1 / f_osc.

Si el cristal es de 20 MHz (20 millones de pulsos por segundo), cada pulso dura 0,05 µs — es decir, 1 / 20 000 000 s = 0,000 000 05 s.

El PIC18 no ejecuta una instruccion en un solo pulso. Por dentro divide el trabajo en 4 etapas de reloj (Q1, Q2, Q3, Q4). Para completar una instruccion simple necesita 4 pulsos del cristal. Por eso el ciclo de maquina es 4 veces mas largo que un pulso:

CM = 4 × (1 / f_osc) = 4 / f_osc

En una frase: el cristal dice cuanto dura un pulso; el 4 dice cuantos pulsos consume una instruccion en el modelo del curso.

Cristal (f_osc)1 pulso (1/f_osc)CM = 4 pulsos
4 MHz0,25 µs1 µs
8 MHz0,125 µs0,5 µs
20 MHz0,05 µs0,2 µs (200 ns)

Ejemplo del PDF: con 4 MHz, una instruccion de 1 ciclo tarda 1 µs.

Casi todos los ejercicios del examen usan 20 MHz. Memoriza:

  • CM = 0,2 µs
  • 1 ms = 1000 µs → para 3 ms necesitas 3000 µs de retardo
  • Si Retardo = CM × Σ CI, entonces Σ CI = Retardo / CM = 3000 / 0,2 = 15 000 ciclos

No todas las instrucciones tardan lo mismo. El PDF dice: casi todas toman 1 ciclo de maquina, excepto los saltos (2 o mas) y DECFSZ (caso especial).

InstruccionCiclos (CI)
MOVLW1
MOVWF1
NOP1
GOTO2
BRA2
CALL2
RETURN2
DECFSZ1 si no salta; 2 o 3 si salta

En casi todo retardo por software veras este par de lineas:

BUCLE
DECFSZ CONTADOR,F ; resta 1 al contador
BRA BUCLE ; vuelve al inicio del bucle

¿Que hace DECFSZ? Resta 1 al contador y luego mira el resultado:

SituacionQue pasa despuesCiclos de DECFSZ
El contador no llego a ceroSigue a la linea de abajo (BRA)1 ciclo
El contador si llego a ceroSalta la linea de abajo (no ejecuta el BRA)2 ciclos

El truco para contar bien: el BRA solo corre cuando el contador aun no es cero. La ultima vez, DECFSZ salta el BRA y el bucle termina.

VueltaValor antesResta 1 → queda¿Llego a cero?DECFSZ¿Se ejecuta BRA?
132No1 cicloSi
221No1 cicloSi
310Si2 ciclosNo (lo salta)

Resumen de esa vuelta:

  • DECFSZ se ejecuto 3 veces → 1 + 1 + 2 = 4 ciclos (= N + 1 con N = 3).
  • BRA se ejecuto 2 veces (solo las vueltas 1 y 2) → 2 × 2 = 4 ciclos (= 2 × (N − 1)).

Regla general para un bucle de N iteraciones

Sección titulada «Regla general para un bucle de N iteraciones»

Si el contador arranca en N y baja hasta 0:

DECFSZ → (N − 1) veces × 1 ciclo + 1 vez × 2 ciclos = N + 1 ciclos
BRA → (N − 1) veces × 2 ciclos = 2 × (N − 1) ciclos

Ejemplo del PDF (N = 200): DECFSZ → 199×1 + 1×2 = 201 ciclos. BRA → 199×2 = 398 ciclos.

El PIC18 usa pipeline: mientras una instruccion se ejecuta, la siguiente puede estar en etapa de busqueda (fetch). Eso se llama solapamiento de instrucciones.

En el parcial (opcion multiple) la respuesta correcta suele ser solapamiento o pipeline, no “retardo” ni “comparacion”.

Para calcular retardos en el curso no restas ciclos por pipeline: usas la Tabla 4.1 tal como esta y sumas Σ CI. El profesor quiere que sepas el concepto en teoria y la tabla en la practica.

Retardo = CM × Σ CI
  • CM = duracion de un ciclo de maquina (en segundos o µs).
  • Σ CI = suma de ciclos de cada instruccion, multiplicada por cuantas veces se repite en el bucle.
  1. Escribe el codigo del retardo linea por linea.
  2. Asigna ciclos segun Tabla 4.1.
  3. Cuenta repeticiones (N, M, P en bucles anidados).
  4. Suma Σ CI.
  5. Multiplica por CM.
  6. Compara con el tiempo pedido; ajusta con NOP si falta o sobra.

Ejercicio · Parcial

CM con distintos cristales

Calcula CM para 4 MHz, 10 MHz y 20 MHz. ¿Cuantos µs dura un MOVLW en cada caso? (Respuesta: 1 × CM en cada caso.)

Ejercicio · Parcial

Sigma CI minimo

Un programa tiene solo MOVLW + MOVWF + RETURN (sin bucle). Con 20 MHz, ¿cuanto dura? Σ CI = 1+1+2 = 4 → 4 × 0,2 µs = 0,8 µs.

Siguiente: Bucles de retardo.

Examen interactivo

Ciclos de maquina e instruccion

Basado en: Clase Tema 4 y 5.pdf

0 de 0 respondidas

La formula del ciclo de maquina (CM) es...
Con cristal 20 MHz, CM vale...
En la Tabla 4.1, MOVLW y MOVWF consumen...
DECFSZ consume mas ciclos cuando...
El solapamiento (pipeline) en el parcial se refiere a...
Para 3 ms @ 20 MHz necesitas Σ CI aproximadamente...