Академический Документы
Профессиональный Документы
Культура Документы
ndice general
Introduction 1
Codigo
2
3 7 9 11 14 15 17
1. Arquitectura Principal 2. Clock del micro 3. Latch Principal 4. Chip Select 5. Proteccin de Escritura 6. Registro de Paginacin 7. Paginador
II Testeo
1. Introduccin 2. Simulaciones de cada bloque por separado 3. Test Bench General
19
20 21 25
III
31
34
Conclusion
ndice de guras
1.1. 2.1. 3.1. 4.1. 5.1. 6.1. 7.1. 2.1. 2.2. 2.3. 2.4. 2.5. 2.6. 2.7. 2.8. 2.9. Esquema General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bloque Reloj Bloque Latch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 7 9 11 14 15 17 21 21 22 22 22 23 23 23 24 24 24 24 27 29 30 32 33
Test Bench del reloj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Simulacin del reloj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Test Bench del Latch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Simulacin del Latch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Test Bench de la Chip Select . . . . . . . . . . . . . . . . . . . . . . . . . Simulacin de la Chip Select . . . . . . . . . . . . . . . . . . . . . . . . . Test Bench de Proteccin de Escritura Simulacin de Proteccin de Escritura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.10. Simulacin de Registro de Paginacin . . . . . . . . . . . . . . . . . . . . 2.11. Test Bench del Paginador 2.12. Simulacin del Paginador . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1. 3.2. 3.3. 4. 5. Primera Simulacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Segunda Simulacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tercera Simulacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Hardware Sintetizado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Esquemtico General . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Introduccin
Para encontrar una solucin a un problema real es necesario atravesar varias etapas. Para comenzar debemos traducir el problema coloquial a un lenguage ingenieril. Luego debemos delimitar el problema para entender a ciencia cierta que parte debemos resolver. A continuacin debemos proponer una solucin alternativa al problema en cuestin. Luego esta solucin debe ser testeada para saber si cumple con los requerimientos y expectativas del cliente. Para terminar debemos renar el producto y escojer la solucin que deje ms conforme a nuestro cliente. Este informe intenta dar respuesta al problema de comunicar al microprocesador 80C86 y diversos perifricos tales como memorias RAM y Flash. El presente Problema de Ingeniera aborda las primeras etapas del diseo de hardware de un sistema de microcmputo. Las conexiones entre los componentes principales del sistema: microprocesador, memoria, unidades de entrada salida y los circuitos auxiliares necesarios para que el sistema sea funcional. El problema se plantea en base a un microprocesador 80C86-2 de Intel abordando los aspectos lgicos del sistema implementado. Todo fue programado en el lenguage VHDL utilizando los conocimientos adquiridos en la presente materia como as tambin nos valimos de conocimientos adquiridos en materias anteriores como Digital II. Entendemos que el lenguage VHDL brinda hoy en da una herramienta muy til, capaz de trabajar a muy alta frecuencia y proveyendo un cdigo modular y muy conable.
Parte I Codigo
A continuacin aparece el cdigo de la arquitectura principal del programa. Comunmente llamada top.
library IEEE ; use IEEE . STD_LOGIC_1164 .ALL; use IEEE .STD_LOGIC_ARITH.ALL; use IEEE .STD_LOGIC_UNSIGNED.ALL; entity port (
top
is
: :
CLOCK R
in in
std_logic ; std_logic ;
3
end architecture B e h a v i o r a l of top is signal CLK : s t d _ l o g i c := ' 0 ' ; signal LBHE : s t d _ l o g i c := ' 0 ' ; signal LAD : s t d _ l o g i c _ v e c t o r ( 1 9 downto 0 ) :=( others => ' 0 ' ) ; signal LAD_P : s t d _ l o g i c _ v e c t o r ( 1 9 downto 1 6 ) :=( others => ' 0 ' ) ; signal DIR_P : s t d _ l o g i c _ v e c t o r ( 1 7 downto 1 5 ) :=( others => ' 0 ' ) ; signal BIT0 , BIT1 , BIT4 : s t d _ l o g i c := ' 0 ' ; signal CS_RP : s t d _ l o g i c := ' 0 ' ; component r e l o j is Port ( CLOCK, R : in s t d _ l o g i c ; SALIDA : out s t d _ l o g i c ) ; end component ; component l a t c h is Port ( CLOCK, ALE, R, BHE : in s t d _ l o g i c ; AD : in s t d _ l o g i c _ v e c t o r ( 1 9 downto 0 ) ; LBHE : out s t d _ l o g i c ; LAD : out s t d _ l o g i c _ v e c t o r ( 1 9 downto 0 ) ) ; end component ; component C h i p _ s e l e c t is Port ( LAD : in STD_LOGIC_VECTOR ( 1 9 downto 0 ) ; MIO : in std_logic ; CS_R12 : out s t d _ l o g i c ; CS_R34 : out s t d _ l o g i c ; CS_F12 : out s t d _ l o g i c ; CS_IO1 : out s t d _ l o g i c ; CS_IO2 : out s t d _ l o g i c ; CS_IO3 : out s t d _ l o g i c ; CS_RP : out s t d _ l o g i c ) ; end component ; component p r o t e c c i o n is
4
ALE BHE WR MIO ADDA uDATA DIR uCLOCK WRP WRI CS_R12 CS_R34 CS_F12 CS_IO1 CS_IO2 CS_IO3 top ;
: : : : : : : : : : : : : : : :
in in in in in in out out out out out out out out out out
std_logic ; std_logic ; std_logic ; std_logic ; std_logic_vector (19 std_logic_vector (7 std_logic_vector (18 std_logic ; std_logic ; std_logic ; std_logic ; std_logic ; std_logic ; std_logic ; std_logic ; std_logic ) ;
: std_logic ; : std_logic ; : std_logic ; : std_logic ; : std_logic ) ; ; Paginacion ( CLOCK, CS_RP : std_logic ; DATA : std_logic_vector (7 BIT0 , BIT1 , BIT4 : std_logic ) ; ; selector ( R, BIT0 , BIT1 , BIT4 : std_logic ; LAD_P : std_logic_vector (19 DIR_P : std_logic_vector (17 ;
Port
end component component port end component component port end component begin port map
in in in out out
is
in in
out
downto
0) ;
is
in out
in
downto 1 6 ) ; downto 1 5 ) ) ;
clock_micro : r e l o j ( CLOCK => CLOCK, R => R, SALIDA => CLK) ; latch_principal : latch ( CLOCK => CLOCK, ALE => ALE, BHE => BHE, R => R, AD => ADDA, LBHE => LBHE, LAD => LAD) ; CS : Chip_Select ( MIO => MIO, LAD => LAD, CS_R12 => CS_R12 , CS_R34 => CS_R34 , CS_F12 => CS_F12 , CS_IO1 => CS_IO1 , CS_IO2 => CS_IO2 , CS_IO3 => CS_IO3 , CS_RP => CS_RP) ; Escritura : proteccion ( LAD0 => LAD( 0 ) , BHE => LBHE,
port map
port map
port map
WR => WR, WRP => WRP, WRI => WRI) ; Registro : Paginacion ( CLOCK => CLOCK, CS_RP => CS_RP, DATA => uDATA, BIT0 => BIT0 , BIT1 => BIT1 , BIT4 => BIT4 ) ; Paginador : s e l e c t o r ( R => R, LAD_P => LAD_P, DIR_P => DIR_P, BIT0 => BIT0 , BIT1 => BIT1 , BIT4 => BIT4 ) ;
port map
port map
uCLOCK <= CLK; LAD_P <= LAD( 1 9 16) ; DIR <= LAD( 1 9 )& DIR_P( 1 7
downto
downto
1 5 ) & LAD( 1 5
downto
1) ;
end
Behavioral ;
Para generar la seal de clock del micro realizamos el siguiente cdigo en VHDL:
library IEEE ; use IEEE . STD_LOGIC_1164 .ALL; use IEEE .STD_LOGIC_ARITH.ALL; use IEEE .STD_LOGIC_UNSIGNED.ALL; entity r e l o j is port ( clock , R : in s t d _ l o g i c ; salida : out s t d _ l o g i c ) ; end r e l o j ; architecture B e h a v i o r a l of r e l o j is type s e c u e n c i a is ( cuenta_1 , cuenta_2 ) ; signal e s t a d o : s e c u e n c i a := cuenta_1 ; signal c o n t : s t d _ l o g i c _ v e c t o r ( 1 downto 0 ) := " 00 " ; begin process ( c l o c k , R) begin i f R= '1 ' then s a l i d a <= '0 '; e s t a d o<= cuenta_1 ;
7
elsif
( clock ' event c l o c k = '1 ') estado cuenta_1 => c o n t=" 01 " s a l i d a <= ' 1 ' ; e s t a d o<= cuenta_2 ; cont<= c o n t +1;
case when if
and is then
then
when
e s t a d o<= cuenta_1 ; cont<= c o n t +1; ; cuenta_2 => c o n t=" 10 " s a l i d a <= ' 0 ' ; cont <=( = > '0 ') ; e s t a d o<= cuenta_1 ;
else
end i f
if
then others
end i f
else
library IEEE ; use IEEE . STD_LOGIC_1164 .ALL; use IEEE .STD_LOGIC_ARITH.ALL; use IEEE .STD_LOGIC_UNSIGNED.ALL; entity l a t c h is Port ( CLOCK, ALE, R, BHE : in s t d _ l o g i c ; AD : in s t d _ l o g i c _ v e c t o r ( 1 9 downto LBHE : out std_logic ; LAD : out s t d _ l o g i c _ v e c t o r ( 1 9 downto end l a t c h ; architecture B e h a v i o r a l of l a t c h is begin
9
0) ; 0) ) ;
process begin
if
else
then downto if
0 ) <= (
others then
if
end i f
(CLOCK = ' 1 ' CLOCK' e v e n t ) (ALE = ' 1 ' ) LAD <= AD ; LBHE <= BHE; ; ;
and
then
end i f
Behavioral ;
10
El Chip Select es el encargado de seleccionar con que dispositivo el micro se va a comunicar dentro de los diversos perifricos posibles. Para implementar esto realizamos el siguiente cdigo:
library IEEE ; use IEEE . STD_LOGIC_1164 .ALL; use IEEE .STD_LOGIC_ARITH.ALL; use IEEE .STD_LOGIC_UNSIGNED.ALL; entity C h i p _ s e l e c t is Port ( LAD : in std_logic_vector MIO : in STD_LOGIC; CS_R12 : out STD_LOGIC; CS_R34 : out STD_LOGIC;
11
(19
downto
0) ;
end architecture B e h a v i o r a l of C h i p _ s e l e c t is begin process (LAD, MIO) begin i f ( (LAD <= x" 3FFFF" ) and MIO = ' 1 ' ) then CS_R12 <= ' 0 ' ; else CS_R12 <= ' 1 ' ; end i f ; i f ( (LAD >= x" 40000 " ) and (LAD <= x" 5 f f f f " ) and MIO = '1 ') then CS_R34 <= ' 0 ' ; else CS_R34 <= ' 1 ' ; end i f ; i f ( (LAD >= x" 60000 " ) and (LAD <= x"FFFFF" ) and MIO = '1 ') then CS_F12 <= ' 0 ' ; else CS_F12 <= ' 1 ' ; end i f ; i f ( (LAD( 1 5 downto 0 ) <= x" 3 f f f " ) and MIO = ' 0 ' ) then CS_RP <= ' 0 ' ; else CS_RP <= ' 1 ' ; end i f ; i f ( (LAD( 1 5 downto 0 ) >= x" 4000 " ) and (LAD( 1 5 downto 0 ) <= x" 7 f f f " ) and = ' 0 ' ) then CS_IO1 <= ' 0 ' ; else CS_IO1 <= ' 1 ' ; end i f ; i f ( (LAD( 1 5 downto 0 ) <= x" b f f f " ) and (LAD( 1 5 downto 0 ) >= x" 8000 " ) and = ' 0 ' ) then CS_IO2 <= ' 0 ' ; else CS_IO2 <= ' 1 ' ; end i f ; i f ( (LAD( 1 5 downto 0 ) <= x" f f f f " ) and (LAD( 1 5 downto 0 ) >= x"C000" ) and = ' 0 ' ) then
CS_IO3 <= ' 0 ' ;
12
: : : : :
MIO
MIO
MIO
'1 ';
13
Cdigo del circuito de proteccin contra escritura para proteger los bancos pares e impares.
library IEEE ; use IEEE . STD_LOGIC_1164 .ALL; use IEEE .STD_LOGIC_ARITH.ALL; use IEEE .STD_LOGIC_UNSIGNED.ALL; entity p r o t e c c i o n is Port ( LAD0 : in STD_LOGIC; BHE : in STD_LOGIC; WR : in STD_LOGIC; WRP : out STD_LOGIC; WRI : out STD_LOGIC) ; end p r o t e c c i o n ; architecture B e h a v i o r a l of p r o t e c c i o n is begin WRP <= not ( ( not WR) and ( not LAD0) ) ; WRI <= not ( ( not WR) and ( not BHE) ) ; end B e h a v i o r a l ;
14
El bloque anterior representa el Registro de Paginacin, en el cual el micro va a cargar estrategicamente un valor de 8 bits del registro, para acceder completamente a las memorias paginadas. A continuacin aparece el cdigo realizado para lograr este propsito:
library IEEE ; use IEEE . STD_LOGIC_1164 .ALL; use IEEE .STD_LOGIC_ARITH.ALL; use IEEE .STD_LOGIC_UNSIGNED.ALL; entity P a g i n a c i o n is port ( CLOCK, CS_RP : in std_logic ; DATA : in s t d _ l o g i c _ v e c t o r ( 7 downto BIT0 , BIT1 , BIT4 : out std_logic ) ; end P a g i n a c i o n ; architecture B e h a v i o r a l of P a g i n a c i o n is begin process (CLOCK)
15
0) ;
'1 '
and
then
Nota al programador: Sr. Programador el registro de paginacion se encuentra mapeado en el espacio de Entrada/Salida entre las direcciones 0x0000 y 0x3FFF, el registro es de un byte y se encuentra espejado, solo escriba direcciones pares.
16
Captulo 7 Paginador
Figura 7.1: Bloque Selector Este bloque es el responsable de acondicionar el bus de direcciones necesario para acceder completamente a los registros de la memoria que corresponda. En el problema de ingeniera se encuentran paginadas parte de las memorias Flash y parte de las memorias RAM. Para solucionar el acceso a los primeros 256 Kb paginados de la Flash 1 y la Flash 2 en una ventana de 128 Kb, leemos el bit LAD(19) y segn su estado multiplexamos los bits LAD(18) y LAD(17) por los bits BIT0 y BIT1 del registro de paginacin (se utilizan dos bits porque la ventana es de 4 paginas). Para solucionar el acceso completo a los registros de las memorias RAM 3 Y 4, reemplazamos el bit LAD(17) por el BIT4 del registro de paginacin, de esta forma las memorias se pueden acceder completamente. Para este circuito realizamos el siguiente codigo:
library IEEE ; use IEEE . STD_LOGIC_1164 .ALL; use IEEE .STD_LOGIC_ARITH.ALL; use IEEE .STD_LOGIC_UNSIGNED.ALL; entity s e l e c t o r is port ( R, BIT0 , BIT1 , BIT4 : in
std_logic ;
17
end architecture B e h a v i o r a l of s e l e c t o r is begin process (LAD_P, BIT0 , BIT1 , BIT4 ) begin i f (R = ' 1 ' ) then DIR_P <= ( others => ' 0 ' ) ; RAM 1 y 2 elsif ( (LAD_P <= x" 3 " ) ) then DIR_P( 1 7 downto 1 5 ) <= LAD_P( 1 8 downto 1 6 ) ; RAM 3 y 4 elsif ( (LAD_P >= x" 4 " ) and (LAD_P <= x" 5 " ) ) then
DIR_P( 1 7 ) <= LAD_P( 1 8 ) ; DIR_P( 1 6 ) <= BIT4 ; DIR_P( 1 5 ) <= LAD_P( 1 6 ) ; FLASH 1 y 2 ( (LAD_P >= x" 6 " ) (LAD_P <= x"F" ) ) (LAD_P( 1 9 )= ' 0 ' ) DIR_P( 1 7 1 6 ) <= BIT1&BIT0 ; DIR_P( 1 5 )<= LAD_P( 1 6 ) ;
LAD_P : std_logic_vector (19 16 DEL BUS LATCHEADO DIR_P : std_logic_vector (17 selector ;
in out
BITS 19 18 17
elsif if
then
DIR_P( 1 7
end i f ;
end i f ;
downto downto 1 6 ) ;
1 5 )<= LAD_P( 1 8
18
Parte II Testeo
19
Captulo 1 Introduccin
Para poder vericar si el cgido realizado cumpla con los requerimientos deseados llevamos adelante diversas simulaciones. Entendemos que a lo largo de estas simulaciones se ejemplican algunos casos posibles como para determinar si el presente programa funciona correctamente o no. Cabe destacar que se han realizado simulaciones de todos los bloques trabajando en conjunto como as tambin de cada bloque por separado.
20
La simulacin del reloj, mediante ISim, se puede apreciar en la siguiente gura 2.2. La primer linea correspondiente a la seal del clock de la fpga, su frecuenecia es de 25 Mhz y el nombre de la seal es CLOCK. Luego simulamos una seal de reset, para que el sistema inicie con sus valores iniciales. Por ltimo se encuentra la seal llamada Salida, que es la seal de clock generada para alimentar al microprocesador 80c86-2. Mientras que la seal de clock presenta un ciclo de trabajo de 1/2, es decir duracion del estado alto igual a la duracion del estado bajo, la seal salida presenta un ciclo de trabajo de 1/3. Cuando se presenta la seal de reset la salida presenta un estado bajo para cualquier estado del clock y al bajar el reset el ciclo comienza en estado bajo subiendo un ciclo de clock despues.
21
En la siguiente gura 2.4 puede verse como se acerrojan los buses de direccin y la seal BHE. El BUS LAD(19:0) arroja la direccin presentada por el BUS AD(19:0) del microprocesador con la llegada de ALE. La seal BHE tambin se acerroja con la llegada de ALE.
22
23
24
LIBRARY i e e e ; USE i e e e . s t d _ l o g i c _ 1 1 6 4 .ALL; ENTITY t e s t IS END t e s t ; ARCHITECTURE b e h a v i o r OF t e s t IS COMPONENT top PORT( CLOCK : IN s t d _ l o g i c ; R : IN s t d _ l o g i c ; ALE : IN s t d _ l o g i c ; BHE : IN s t d _ l o g i c ; WR : IN s t d _ l o g i c ; MIO : IN s t d _ l o g i c ; ADDA : IN s t d _ l o g i c _ v e c t o r ( 1 9 downto uDATA : IN s t d _ l o g i c _ v e c t o r ( 7 downto DIR : OUT s t d _ l o g i c _ v e c t o r ( 1 8 downto uCLOCK : OUT s t d _ l o g i c ; WRP : OUT s t d _ l o g i c ; WRI : OUT s t d _ l o g i c ; CS_R12 : OUT s t d _ l o g i c ; CS_R34 : OUT s t d _ l o g i c ; CS_F12 : OUT s t d _ l o g i c ; CS_IO1 : OUT s t d _ l o g i c ; CS_IO2 : OUT s t d _ l o g i c ; CS_IO3 : OUT s t d _ l o g i c ); END COMPONENT;
25
0) ; 0) ; 0) ;
Entradas CLOCK : s t d _ l o g i c := ' 0 ' ; R : s t d _ l o g i c := ' 0 ' ; ALE : s t d _ l o g i c := ' 0 ' ; BHE : s t d _ l o g i c := ' 1 ' ; WR : s t d _ l o g i c := ' 1 ' ; MIO : s t d _ l o g i c := ' 1 ' ; ADDA : s t d _ l o g i c _ v e c t o r ( 1 9 uDATA : s t d _ l o g i c _ v e c t o r ( 7
signal signal signal signal signal signal signal signal signal signal signal signal signal signal signal signal signal signal
0 ) := ( 0 ) := ( 0) ;
others others
S a l i d a s
DIR : s t d _ l o g i c _ v e c t o r ( 1 8 uCLOCK : s t d _ l o g i c ; WRP : s t d _ l o g i c ; WRI : s t d _ l o g i c ; CS_R12 : s t d _ l o g i c ; CS_R34 : s t d _ l o g i c ; CS_F12 : s t d _ l o g i c ; CS_IO1 : s t d _ l o g i c ; CS_IO2 : s t d _ l o g i c ; CS_IO3 : s t d _ l o g i c ;
BEGIN
uut : top ( CLOCK => CLOCK, R => R, ALE => ALE, BHE => BHE, WR => WR, MIO => MIO, ADDA => ADDA, uDATA => uDATA, DIR => DIR , uCLOCK => uCLOCK, WRP => WRP, WRI => WRI, CS_R12 => CS_R12 , CS_R34 => CS_R34 , CS_F12 => CS_F12 , CS_IO1 => CS_IO1 , CS_IO2 => CS_IO2 , CS_IO3 => CS_IO3) ; c l o c k <= clock 40 ns ; R <= ' 1 ' 10 ns , ' 0 ' 70 ns ; ALE <= ' 1 ' 90 ns , ' 0 ' 155 ns , ' 1 ' 400 ns , ' 0 ' ns , ' 1 ' 720 ns , ' 0 ' 800 ns ; ADDA <= x" 00003 " 180 ns , x" 00000 " 350 ns , x" 60002 " , x" 00002 " 500 ns , x" 80002 " 720 ns , x" 00002 " MIO <= ' 0 ' 90 ns , ' 1 ' 400 ns ; WR <= ' 0 ' 480 ns , ' 1 ' 640 ns , ' 0 ' 800 ns , ' 1 '
PORT MAP
not after after after after after after after after after after after after after
after after
after after
26
ns ,
'1 '
after
480 ns ,
'0 '
after
720 ns ,
'0 '
after
800
80 ns , x" 01 "
after
720 ns ;
END;
0 ns
200 ns
400 ns
600 ns
800 ns
En la simulacin anterior, se ejemplico el acceso a la pgina 4 de la Flash. En la imagen, gura 3.1 se puede apreciar que luego de bajar Reset (R) aparece por el bus ADDA (bus de direcciones del micro) la direccin 0x0000 y la seal MIO en bajo haciendo
27
referencia al registro de paginacin, para sacar por el puerto 0x0000 el byte 0x03, este byte hace referencia a la pagina 4 de la Flash. En el prximo bus cycle, se enva por el bus ADDA la direccin a grabar (0x60002) en memoria, se puede observar como se acondiciona el bus de direcciones DIR(18:0) para que se acceda al registro correcto. Se puede observar, como se dan las restantes seales como WrP, WrI, las chip select de los dispositivos en cuestin, los bits de paginacin BIT0, BIT1 y BIT4.
A continuacin realizamos unos cambios en el cdigo para ver si funcionaba correctamente frente a otros estmulos. La Segunda simulacin general, gura 3.2, pretende acceder a la pagina 1 de la Flash. Procediendo de manera similar a la anterior, solo que en este caso el programador carga en el registro de paginacin el byte 0x00. Y obtuvimos la siguiente simulacin:
c l o c k <= clock 40 ns ; R <= ' 1 ' 10 ns , ' 0 ' 70 ns ; ALE <= ' 1 ' 90 ns , ' 0 ' 155 ns , ' 1 ' 400 ns , ' 0 ' ns , ' 1 ' 720 ns , ' 0 ' 800 ns ; ADDA <= x" 00003 " 180 ns , x" 00000 " 350 ns , x" 60002 " , x" 00002 " 500 ns , x" 80002 " 720 ns , x" 00002 " MIO <= ' 0 ' 90 ns , ' 1 ' 400 ns ; WR <= ' 0 ' 480 ns , ' 1 ' 640 ns , ' 0 ' 800 ns , ' 1 ' ns ; BHE <= ' 0 ' 400 ns , ' 1 ' 480 ns , ' 0 ' 720 ns , ' 0 ' ns ; uDATA <= x" 00 " 80 ns , x" 01 " 720 ns ;
not after after after after after after after after after after after after after after after after after after after after after after
after 480 after 400 ns after 820 ns ; after 1000 after 800
c l o c k <= clock 40 ns ; R <= ' 1 ' 10 ns , ' 0 ' 70 ns ; ALE <= ' 1 ' 90 ns , ' 0 ' 155 ns , ' 1 ' 400 ns , ' 0 ' ns , ' 1 ' 720 ns , ' 0 ' 800 ns ; ADDA <= x" 00003 " 180 ns , x" 00000 " 350 ns , x" 40002 " , x" 00002 " 500 ns , x" 00002 " 720 ns , x" 00002 " MIO <= ' 0 ' 90 ns , ' 1 ' 400 ns ; WR <= ' 0 ' 480 ns , ' 1 ' 640 ns , ' 0 ' 800 ns , ' 1 ' ns ; BHE <= ' 0 ' 400 ns , ' 1 ' 480 ns , ' 0 ' 720 ns , ' 0 ' ns ; uDATA <= x" 10 " 80 ns , x" 10 " 720 ns ;
28
not after after after after after after after after after after after after after after after after after after after after after after
after 480 after 400 ns after 820 ns ; after 1000 after 800
0 ns
200 ns
400 ns
600 ns
800 ns
29
0 ns
200 ns
400 ns
600 ns
800 ns
30
31
32
33
Conclusion
En el presente trabajo se pudieron alcanzar los requerimientos propuestos por el problema de ingeniera. El problema se solucion en forma modular con distintos bloques VHDL, donde cada funcin solicitada por el problema fue cubierta en forma individual mediante diferentes bloques: Bloque generador del clock, latch principal de las direcciones y estados del bus de direcciones, chip select de dispositivos de memoria e IO, un bloque de escritura y proteccin, un bloque de registro y paginacin y por ultimo un bloque generador de las direcciones de memoria para las distintas memorias. Finalmente todos los resultados obtenidos fueron concordantes en tiempo con los obtenidos de la hoja de datos del microprocesador 80C86, tanto en el ciclo de lectura como de escritura. Adems se pudo vericar el correcto direccionamiento de los cuatro dispositivos de memorias, el cual jug un papel importante en la realizacin del problema.
34
Bibliografa
[1] Los microprocesadores Intel, Barry Brey, Tercera Edicin. [2] Hojas de datos del: 80C86-2, AM29F040, K6T1008.
35