Problema de Ingenieria 2 - Electronica Digital III

Anuncio
Universidad Nacional de Rosario
Facultad de Ciencias Exactas, Ingeniería y Agrimensura
Escuela de Ingeniería Electrónica
Digital III
Problema de Ingeniería Nº 2
Start up y aplicación para sistema con 80C86
Autor/es:
Grupo Nº
Nombre y Apellido
Corrigió
Nº de Legajo
Calificación
2015
Universidad Nacional de Rosario
Facultad de Ciencias Exactas, Ingeniería y Agrimensura
Escuela de Ingeniería Electrónica
1. Índice
1.
ÍNDICE .................................................................................................................... 2
2.
INTRODUCCIÓN .................................................................................................... 2
3.
OBJETIVOS............................................................................................................ 2
4.
PROBLEMA............................................................................................................ 4
5
REQUISITOS DEL INFORME ................................................................................ 6
6
SOLUCIÓN/ES PROPUESTA/S ............................................................................. 7
7
CONCLUSIONES ................................................................................................... 7
8
BIBLIOGRAFÍA ...................................................................................................... 7
9
ANEXO A: ESQUELETO MÓDULO STARTUP ..................................................... 7
10
ANEXO B: MAPA DE MEMORIA (USUARIO) ....................................................... 9
11
ANEXO C: CAPTURA DE NMI............................................................................. 10
2.
Introducción
El presente Problema de Ingeniería aborda las primeras etapas del diseño de software de un
sistema de microcómputo sin sistema operativo, es decir, las rutinas básicas para el funcionamiento del
sistema de hardware desarrollado.
3.
Objetivos
El objetivo principal de este problema es lograr que el alumno adquiera la capacidad de diseñar el
software de un sistema de microcómputo sin sistema operativo y desarrollar destrezas en la
programación de aplicaciones.
El problema se plantea en base a un microprocesador Intel 80C86 con un mapa de memoria y
Entrada / Salida dado, implementando el diseño del software necesario para el manejo de una interfase
Página 2 de 9
Universidad Nacional de Rosario
Facultad de Ciencias Exactas, Ingeniería y Agrimensura
Escuela de Ingeniería Electrónica
de display multiplexado de 4 dígitos que en conjunto con los cuatro pulsadores existentes, conformarán
dos Timers Programables hasta 99 segundos.
4.
Problema
1.1. Realizar un diagrama de flujo describiendo el proceso de generación del programa
partiendo desde la escritura del programa fuente hasta la grabación final de la
memoria de almacenamiento del mismo. Indicar TODAS las herramientas de
software y hardware utilizadas en el proceso y explicar claramente su función.
1.2. Realizar un módulo STARTUP.ASM que cumpla las siguientes funciones:
1.2.1. Definir todas las secciones a utilizar y agruparlas convenientemente.
1.2.2. Tomar el control del sistema después del reset.
1.2.3. Inicializar el área reservada para variables con valores iniciales considerando
que podrían existir módulos adicionales al STARTUP.ASM
1.2.4. Inicializar el área reservada para variables sin valores iniciales considerando
que podrían existir módulos adicionales al STARTUP.ASM
1.2.5. Inicializar el área destinada a la Pila del sistema (Stack) asignando a la misma
toda la memoria RAM sobrante luego de reservar e inicializar las variables.
1.2.6. Capturar el servicio de NMI ( Ver ANEXO C)
1.2.7. Habilitar la interrupción NMI escribiendo un 0FFh en la dirección dada por la
etiqueta NMI_KEY en el espacio de entrada / salida.
1.2.8. Generar un salto a una rutina llamada _main ubicada en el módulo
USUARIO.ASM.
Nota: Para la realización del modulo STARTUP.ASM puede utilizar el esqueleto
ubicado en el Anexo A al final de este trabajo practico.
4.3. Realizar un módulo USUARIO.ASM que implemente dos timers de cuenta
descendente con las siguientes caracteristicas:
BH
o
El valor actual de los timers podrá examinarse en el display utilizando
la tecla “S4” para conmutar entre timer1 y timer2:
o
El timer en display podrá ser disparado o detenido utilizando la tecla
“S3” para conmutar el estado.
o
El valor inicial del timer en display podrá ser ajustado mediante los
pulsadores S1 (incrementar) y S2 (decrementar) cuando se encuentre
en estado detenido. ( valor máximo programable = 99 segundos)
o
Un timer debe continuar su evolución aun cuando no se encuentre en
el display. (conservar el valor programado si esta detenido y
decrementarse correctamente si esta disparado)
o
Para la presentación en display deberá utilizar un servicio del sistema
monitor a través de la SWI int 42h, el cual mostrará en display el
contenido de los Registros BX y AX (codificados en 7 segmentos) de la
siguiente manera.
BL
( número
de Timer)
AH
TIMERi
THi
AL
TIMERi
TLi
Página 3 de 9
Universidad Nacional de Rosario
Facultad de Ciencias Exactas, Ingeniería y Agrimensura
Escuela de Ingeniería Electrónica
i
Nota: No debe realizar la rutina de multiplexado de display, ya que la misma
esta resuelta en el sistema Monitor.
o
TECLADO: Para la detección del teclado deberá utilizar un servicio del
sistema monitor a través de la SWI int 43h, el cual devuelve en AL el
valor de la variable de scaneo de teclado.
TECLA
VALOR DEVUELTO EN AL
o
S4
08h
S3
04h
S2
02h
S1
01h
TEMPORIZACIONES:
Para
las
temporizaciones
deberán
implementarse servicios que utilicen la interrupción NMI. (una vez
habilitada, la NMI produce una interrupción cada 200us)
4.4
Ensamblar los módulos STARTUP.ASM y USUARIO.ASM de manera de formar un
único archivo ejecutable capaz de funcionar sobre el sistema. El programa debe
ser ensamblado SIN ERRORES.
4.5
Indicar todas las secciones utilizadas en ambos módulos e indicar su función
específica (BSS, DATA, TEXT, etc).
Ayuda: Definir en el segmento de código una tabla de bytes que contenga los codigos 7 segmentos
de los dígitos hexadecimales.
TABLA db
db
db
db
0EEh, 028h, 0CBh, 06Bh,
02Dh, 067h, 0E7h, 026h,
0EFh, 02Fh, 0AFh, 0E5h,
0C6h, 0E9h, 0C7h, 087h
;
;
;
;
0,1,2,3
4,5,6,7
8,9,A,B
C,D,E,F
El punto decimal se encuentra vinculado al Bit4 de cada display
Página 4 de 9
Universidad Nacional de Rosario
Facultad de Ciencias Exactas, Ingeniería y Agrimensura
Escuela de Ingeniería Electrónica
Circuito del Periferico
4
3
2
1
D
D
8
8
8
8
8 x3 30 R
DL ?
L E D Ro jo
# CS
C
Dis_ 1
DISPL AY K Co mu n
sa
Disp lay
a
a
sb
b
sc
b
c f
g
sd
d
se
c
e
e
d
sf
f
dp
sg
g
sd p
dp
c om
+5V
7
6
4
2
1
9
10
5
Dis2
DISPL AY K Co mu n
7
sa
Disp lay
a
6
a
sb
b
4
sc
b
c f
g
2
sd
d
1
se
c
e
e
9
d
sf
f
10
dp
sg
g
5
sd p
dp
c om
sf
sa
sd p
sd
se
sc
sb
sg
Dis_ 3
DISPL AY K Co mu n
7
sa
Disp lay
a
6
a
sb
b
4
sc
b
c f
g
2
sd
d
1
se
c
e
e
9
d
sf
f
10
dp
sg
g
5
sd p
dp
c om
16
15
14
13
12
11
10
9
1
2
3
4
5
6
7
8
D2
D1
D4
D6
D7
D5
D3
D0
Dis_ 4
DISPL AY K Co mu n
7
sa
Disp lay
a
6
a
sb
b
4
sc
b
c f
g
2
sd
d
1
se
c
e
e
9
d
sf
f
10
dp
sg
g
5
sd p
dp
c om
RP?
R?
1 0K
#W R
Q1
BC3 37
Q2
BC3 37
Q3
BC3 37
Q4
BC3 37
# RD
C
R?
1 0K
R?
1 0K
R?
1 0K
E4
E3
E2
E1
L A0
L A1
L A2
R?
Led
4 70 R
D4
1 N41 48
D3
1 N41 48
D2
1 N41 48
D1
1 N41 48
s?
SW -PB
s?
SW -PB
s?
SW -PB
s?
SW -PB
B
B
Co mu n Pulsa do r
R?
3 K3
Interface a Sistem a uP
A
A
Inter fac e de E /S para Intel 8086
Tamaño: A4
Fecha:
Archivo:
1
2
3
Ver.
2 -May-2 00 5
1 .0
Hora:
Rev.
A
1 5:3 4:3 9
Revisó:
Ing. GustavoMinnucci
Pag.
1 / 1
Digital III
Fac. de Ingeni ería Electrónica
Universidad Nacional de Rosario
Rosario - Santa Fe - Argentina
D:\Work\EC A\Prot el 9 9 \CPU Dig it al 3 \CPU Digit al 3.Dd b - IO_8 08 6
4
5. Requisitos del Informe

Se incorporarán los listados de los programas FUNCIONANDO. Los mismos
deberán haber sido ensamblados, linkeados y simulados SIN ERRORES.

Todos los programas fuentes deberán estar comentados de manera clara
y sintética indicando las funcionalidades de las distintas rutinas y
subrutinas.

Se adjuntarán los archivos de listado resultantes de la compilación.
(archivos Listing .lst)

Todos los cálculos, razonamientos, y justificaciones deben quedar
registrados en este informe.

No incluir introducciones teóricas
Página 5 de 9
Universidad Nacional de Rosario
Facultad de Ciencias Exactas, Ingeniería y Agrimensura
Escuela de Ingeniería Electrónica
6. Solución/es propuesta/s
7. Conclusiones
8. Bibliografía
Se sugiere la utilización de la siguiente bibliografía:
- Hojas de datos del: 80c86, Am29F040, K6T1008, 74HC374, y de todo otro
dispositivo lógico usado.
- Los microprocesadores Intel, Barry Brey, tercera Ed.
-
9. Anexo A: Esqueleto Módulo STARTUP
Esqueleto Módulo STARTUP:
model small
extrn _main:near
CGROUP
DGROUP
FINRAM
LOADER_RAM
DS_SYS
GROUP _TEXT, _TEXTEND
GROUP _DATA, _DATAEND, _BSS, _BSSEND, _STACK
equ
equ
equ
1040h
1000h
FINRAM-LOADER_RAM
; Apunta al segmento de datos del sistema.
_TEXT
_TEXT
segment public 'CODE'
ends
; Segmento de código.
_TEXTEND
end_of_code
_TEXTEND
segment public 'CODE'
label byte
ends
; Segmento marcador de fin de código.
_DATA
_DATA
segment public 'DATA'
ends
; Segmento de datos inicializados.
_DATAEND
end_of_data
_DATAEND
segment byte public 'DATA'
label byte
ends
; Segmento marcador fin de datos inicializados.
_BSS
_BSS
segment byte public 'BSS'
ends
; Segmento de datos sin inicialización.
_BSSEND
end_of_bss
_BSSEND
segment public 'BSS'
label byte
ends
; Segmento marcador fin de dato sin inicializar.
Página 6 de 9
Universidad Nacional de Rosario
Facultad de Ciencias Exactas, Ingeniería y Agrimensura
Escuela de Ingeniería Electrónica
_STACK
_STACK
segment public 'PILA'
ends
; segmento marcador de comienzo de PILA.
assume cs:CGROUP, ds:DGROUP
_TEXT
segment public 'CODE'
STARTUP
proc
near
NMI_KEY
equ
04000h
; Inicio de volcado de DATA a RAM.
mov
cx, offset end_of_data
mov
ax, cs
mov
bx, offset CGROUP:end_of_code
shr
bx, 4
add
ax, bx
mov
ds, ax
mov
si, 0
mov
di, 0
mov
ax, DS_SYS
mov
es, ax
cld
rep
movsb
;ds:si -> es:di (cx)
; Inicio de volcado de BSS a RAM e inicialización de variables.
; Introduzca código de usuario
; Inicialización de la PILA.
; Introduzca código de usuario
; Inicialización de DS.
mov
ax, DS_SYS
mov
ds, ax
; Captura de NMI
; Introduzca código de usuario
; Habilitación NMI.
; Introduzca código de usuario
; Salto a rutina _main en Modulo USUARIO.
; Introduzca código de usuario.
STARTUP
endp
_TEXT
ends
end
Página 7 de 9
Universidad Nacional de Rosario
Facultad de Ciencias Exactas, Ingeniería y Agrimensura
Escuela de Ingeniería Electrónica
10. Anexo B: Mapa de memoria (Usuario)
Mapa de Memoria del sistema:
MAPA de MEMORIA (MODO USUARIO)
Direcciones
Tamaño
Dispositivo
0xFFFFF
FLASH
…
Memoria FLASH
…
512 Kb
(Ultimos 256 Kb de Flash1 y Flash2)
256 Kb
Memoria FLASH Paginada
128 Kb
Área Libre
…
…
0xA0000
0x9FFFF
FLASH
…
0x60000
0x5FFFF
…
0x40000
0x3FFFF
…
8 Kb
RAM
Área Reserva para el programa
Monitor (NO USAR)
0x3E000
0x3DFFF
RAM
…
120 Kb
Memoria RAM
0x00000
Áreas Particulares y Reservadas:
 El sistema Monitor ocupa 8 K de RAM (direcciones 0x3FFFF – 0x3E000) las cuales NO
deberán ser alteradas.

El área destinada al Stack deberá estar ubicada convenientemente de acuerdo al criterio
de diseño adoptado. Justificar la elección del área asignada.

El área destinada a la Tabla de Vectores de Interrupción (IVT - Interrupt Vector
Table) corresponde al 1er Kb del mapa (direcciones 0x003FF – 0x00000).
Página 8 de 9
Universidad Nacional de Rosario
Facultad de Ciencias Exactas, Ingeniería y Agrimensura
Escuela de Ingeniería Electrónica
11. Anexo C: Captura de NMI.
La “captura” de NMI consiste en leer y guardar el vector (inicializado por el monitor) que
se encuentra en la posición “2” de la IVT y posteriormente reemplazarlo por otro vector que
apunte a los servicios que se deberá implementar.
Una vez finalizados los servicios “del usuario”, es necesario que se pase el control
(utilizando el vector guardado) al resto de los servicios de NMI (servicios del monitor: teclado,
display, etc.)
Nota 1: Tener en cuenta que el tiempo entre NMI es solo de 200 uS y que los servicios
de teclado y display consumirán parte de ese tiempo. Además, el programa principal también
necesita una parte de ese tiempo para correr. Por todas estas consideraciones, los servicios que
vayan a implementarse deberán producir la minima carga posible (pocas instrucciones) sobre la
CPU.
Nota 2: Tener en cuenta que el servicio debe guardar los registros que vaya a utilizar y
recuperarlos antes de pasar el control a los servicios del monitor. Además se debe dejar la pila en
el mismo estado en que se encontraba al aceptar la NMI.
Página 9 de 9
Descargar