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.
Ciclo de maquina (CM)
Sección titulada «Ciclo de maquina (CM)»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_oscEn 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 MHz | 0,25 µs | 1 µs |
| 8 MHz | 0,125 µs | 0,5 µs |
| 20 MHz | 0,05 µs | 0,2 µs (200 ns) |
Ejemplo del PDF: con 4 MHz, una instruccion de 1 ciclo tarda 1 µs.
Cristal 20 MHz en el parcial
Sección titulada «Cristal 20 MHz en el parcial»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
Ciclos de instruccion (CI)
Sección titulada «Ciclos de instruccion (CI)»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).
Tabla 4.1 — aprendetela de memoria
Sección titulada «Tabla 4.1 — aprendetela de memoria»| Instruccion | Ciclos (CI) |
|---|---|
MOVLW | 1 |
MOVWF | 1 |
NOP | 1 |
GOTO | 2 |
BRA | 2 |
CALL | 2 |
RETURN | 2 |
DECFSZ | 1 si no salta; 2 o 3 si salta |
DECFSZ en detalle
Sección titulada «DECFSZ en detalle»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:
| Situacion | Que pasa despues | Ciclos de DECFSZ |
|---|---|---|
| El contador no llego a cero | Sigue a la linea de abajo (BRA) | 1 ciclo |
| El contador si llego a cero | Salta 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.
Ejemplo concreto: contador empieza en 3
Sección titulada «Ejemplo concreto: contador empieza en 3»| Vuelta | Valor antes | Resta 1 → queda | ¿Llego a cero? | DECFSZ | ¿Se ejecuta BRA? |
|---|---|---|---|---|---|
| 1 | 3 | 2 | No | 1 ciclo | Si |
| 2 | 2 | 1 | No | 1 ciclo | Si |
| 3 | 1 | 0 | Si | 2 ciclos | No (lo salta) |
Resumen de esa vuelta:
DECFSZse ejecuto 3 veces → 1 + 1 + 2 = 4 ciclos (= N + 1 con N = 3).BRAse 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 ciclosBRA → (N − 1) veces × 2 ciclos = 2 × (N − 1) ciclosEjemplo del PDF (N = 200): DECFSZ → 199×1 + 1×2 = 201 ciclos. BRA → 199×2 = 398 ciclos.
Solapamiento (pipeline)
Sección titulada «Solapamiento (pipeline)»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.
Formula del retardo
Sección titulada «Formula del retardo»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.
Pasos para cualquier ejercicio
Sección titulada «Pasos para cualquier ejercicio»- Escribe el codigo del retardo linea por linea.
- Asigna ciclos segun Tabla 4.1.
- Cuenta repeticiones (N, M, P en bucles anidados).
- Suma Σ CI.
- Multiplica por CM.
- Compara con el tiempo pedido; ajusta con
NOPsi 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.
Relacion con otras paginas
Sección titulada «Relacion con otras paginas»- Bucles de retardo — como contar Σ CI en bucles de 1, 2 y 3 niveles.
- Calculo y aplicaciones — retardo de 3 ms del examen con N=29 y variable A.
Siguiente: Bucles de retardo.
Ciclos de maquina e instruccion
Basado en: Clase Tema 4 y 5.pdf
0 de 0 respondidas
Inicia sesion en CALETAS para sincronizar este resultado entre dispositivos.
Iniciar sesion en CALETAS