Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Micro Proce Sad or
Micro Proce Sad or
PRACTICA NO. 5
MICROPROCESADOR EN VHDL
SISTEMAS DIGITALES II
JOSE MA. VALENCIA
OBJETIVO
Al finalizar la prctica el alumno debe ser capaz de:
1. Describir el funcionamiento general de un microprocesador.
2. Describir el funcionamiento de los bloques que componen un microprocesador.
3. Modelar y simular un microprocesador de 4 bits en VHDL.
INVESTIGACIN TERICA
Microprocesador
El microprocesador, o CPU (Unidad Central de Procesamiento por sus siglas en ingls), es un chip
integrado por millones de transistores dentro de una cpsula de variados tamaos, segn el tipo de
computadora que deba integrar. Generalmente se lo compara con un cerebro humano para intentar
explicar el rol que cumple dentro de una computadora.
Se instalan sobre un zcalo dispuesto en la placa madre y presentan en general una forma de prisma
delgado. En su proceso de evolucin, estos microchips comenzaron a producir cada vez ms calor,
por lo cual se disearon sistemas de enfriamiento, generalmente en base a ventiladores, tambin
llamados coolers.
El microprocesador se encarga del control y el procesamiento de datos en todo el ordenador. Para
esta tarea es necesario que le ayuden otros elementos capaces de realizar funciones especficas y as
liberar de trabajo costoso y difcil al microprocesador.
Unidad Aritmetico-Lgica (ALU): Lleva a cabo las funciones de procesamiento de datos.
Unidades Funcionales: se encargan de operaciones matemticas especficas, y as sacan y facilitan
el trabajo al microprocesador. (sumas, multiplicaciones, dividir por nmeros enteros, etc.)
Registros:
Almacenan
datos
durante
cierto
tiempo,
dentro
la
CPU.
etc.
Todos estos elementos estn conectados entre s por medio de un conjunto de circuitos o conexiones
nombrado bus. Todo su funcionamiento se basa en interpretar las seales elctricas como nmeros y
de esta forma poder operar sobre ellas, para lo cual hace servir mtodos como la lgebra de Boole.
El nombre de microprocesador nos describe slo el conjunto de todos los componentes que forman
la CPU una vez encajados y listos para funcionar. Podemos dividir cualquier procesador en dos
grandes bloques: la Unidad de Control (UC) y la Unidad de Proceso (UP), se comunican
constantemente entre ellas. La Unidad de Control es la encargada de gestionar y controlar el
correcto funcionamiento de la Unidad de Proceso, que es la que realiza el trabajo. Esta tarea de
gestin y control de la UC, se lleva a cabo mediante la activacin/desactivacin de seales enviadas
a la UP, indicadoras de qu acciones he de tomar en cada momento.
La Unidad de Proceso est formada por ms componentes tales como : la ALU, Registros, y buses.
En la imagen podemos ver el interior de la UP, sta en particular es muy simple, tiene unos cuntos
registros, tres buses y una ALU. Los buses A y B traen los datos de los registros hasta la ALU para
ser operados, y el C se encarga de llevar los datos resueltos hacia la memoria, o a los registros para
ser sobreescritos con un nueve valor.
La UC en cambio, es la encargada de controlar y dar rdenes (qu rdenes pasan y por dnde, quien
va primero, como se ha de operar, etc.) sobre todos los procesos que se lleven a trmino dentro la
UP. Estas rdenes son en el interior de la instruccin a ejecutar, por lo tanto podemos deducir que
todas las instrucciones primero pasan por la UC y de aqu hacia la UP.
La instruccin, contiene en su interior los datos a operar, y al principio de todo el tipo de operacin
a realizar con aquellos datos.
BIBLIOGRAFA
http://www.mastermagazine.info/termino/5881.php
http://www.hardware12v.com/conocimientospc/21.php
DESARROLLO TEORICO
1. Modelar y simular en VHDL un microprocesador de 4 bits:
Microprocesador
library ieee;
use ieee.std_logic_1164.all;
Entity u_pro is
Port(
clk: in std_logic;
s: buffer std_logic_vector (3 downto 0)
);
end u_pro;
Architecture funcional of u_pro is
Signal a,b,c,d,e: std_logic;
signal s0, s1, s2, s3, s4, s6, s7: std_logic_vector (3 downto 0);
Signal s8: std_logic_vector (0 to 7);
Component ALU
Port (
DI: in std_logic_vector (0 to 7);
RD: in std_logic_vector (3 downto 0);
ACC: in std_logic_vector (3 downto 0);
s: buffer std_logic_vector (3 downto 0)
);
end component;
component state_machine
Port(
clk: in std_logic;
a,b,c,d,e: out std_logic
);
end component;
component reg_ins
Port(
e: in std_logic_vector (3 downto 0);
a: in std_logic;
s: buffer std_logic_vector (3 downto 0)
);
end component;
component reg_dat
Port(
e: in std_logic_vector (3 downto 0);
b: in std_logic;
s: buffer std_logic_vector (3 downto 0)
);
end component;
component mem
Port(
dir: in std_logic_vector (3 downto 0);
s: buffer std_logic_vector (3 downto 0)
);
end component;
component deco_ins
Port(
e: in std_logic_vector (3 downto 0);
s: out std_logic_vector (0 to 7)
);
end component;
component cont_prog
Port(
E: in std_logic;
s: out std_logic_vector (3 downto 0)
);
end component;
component ACT
Port(
e: in std_logic_vector (3 downto 0);
C: in std_logic;
s: buffer std_logic_vector (3 downto 0)
);
end component;
component ACC
Port(
e: in std_logic_vector (3 downto 0);
D: in std_logic;
s: buffer std_logic_vector (3 downto 0)
);
end component;
Begin
u1: ALU port map (DI=>s8, RD=>s1, ACC=>s3, s=>s);
u2: state_machine port map (clk=>clk, a=>a, b=>b, c=>c, d=>d, e=>e);
u3: reg_ins port map (e=>s6, a=>a, s=>s0);
u4: reg_dat port map (e=>s6, b=>b, s=>s1);
u5: mem port map (dir=>s7, s=>s6);
u6: deco_ins port map (e=>s0,s=>s8);
u7: cont_prog port map (e=>e, s=>s7);
u8: ACT port map (e=>s,c=>c, s=>s4);
u9: ACC port map (e=>s4, d=>d, s=>s3);
end funcional;
Unidad lgica Aritmtica
Maquina de estados
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity state_machine is
Port(
clk: in std_logic;
a,b,c,d,e: out std_logic
);
end state_machine;
architecture funcional of state_machine is
begin
Process (clk)
variable contador :integer range 0 to 6 ;
begin
if (clk' event and clk='0') then
contador:=contador+1;
if(contador=0) then
a<='0';
b<='0';
c<='0';
d<='1';
e<='0';
elsif(contador=1) then
a<='1';
b<='0';
c<='0';
d<='0';
e<='0';
elsif (contador=2)then
a<='0';
b<='0';
c<='0';
d<='0';
e<='1';
elsif (contador=3)then
a<='0';
b<='1';
c<='0';
d<='0';
e<='0';
elsif (contador=4)then
a<='0';
b<='0';
c<='0';
d<='0';
e<='1';
elsif (contador=5)then
a<='0';
b<='0';
c<='1';
d<='0';
e<='0';
elsif (contador=6)then
a<='0';
b<='0';
c<='0';
d<='0';
e<='0';
end if;
end if;
end process;
end funcional;
Registro de instrucciones
library ieee;
use ieee.std_logic_1164.all;
Entity reg_ins is
Port(
"0000";
end flujo;
Decodificador de Instrucciones
Contador de Programa
library ieee;
use ieee.std_logic_1164.all;
Entity cont_prog is
Port(
E: in std_logic;
s: out std_logic_vector (3 downto 0)
);
end cont_prog;
Architecture funcional of cont_prog is
begin
Process (E)
variable contador :integer range 0 to 4;
begin
if (E' event and E='1') then
contador:=contador+1;
if (contador=0) then
s<="0100";
elsif (contador=1) then
s<="0000";
elsif (contador=2) then
s<="0001";
elsif (contador=3) then
s<="0010";
elsif (contador=4) then
s<="0011";
end if;
end if;
end process;
end funcional;
Acumulador Temporal
library ieee;
use ieee.std_logic_1164.all;
Entity ACT is
Port(
e: in std_logic_vector (3 downto 0);
C: in std_logic;
s: buffer std_logic_vector (3 downto 0)
);
end ACT;
Architecture funcional of ACT is
Begin
Process (C)
Begin
Memoria AT28C64
Buffer 74LS245
Protoboard
Cable para Protoboard
Push-Botton
2 Midip-switch
12 Resistencias de 4.7k
8 Resistencias de 330
1 Compuerta not 74LS04
EQUIPO
Puntas lgicas
Fuente de voltaje
Multmetro