1.2 - Diseño VHDL ALU
-
Upload
leo-mendez -
Category
Documents
-
view
45 -
download
8
description
Transcript of 1.2 - Diseño VHDL ALU
Competencia 1
DISEÑO VHDL DE UNAÉ Ó
Competencia 1
UNIDAD ARITMÉTICA LÓGICA
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
VHDL es un lenguaje de descripción de hardware decircuitos integrados de muy alta velocidad .
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
Es un lenguaje estándar adoptado por el IEEE (Instituteof Electrical and Electronics Engineers) y se designacomo IEEE Std. 1076‐1993.
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
Los tres elementos fundamentales en cualquier códigoen VHDL son:
•Contiene una lista de todas las librerías que son utilizadas en el diseñoLibrerías
•Especifica los pines de entrada / salida (I/O) del circuitoEntidad
•Contiene el código VHDL apropiado, el cual describe como el circuito debería comportarse
Arquitectura
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
Previamente se había diseñado una ALU con lassiguientes funciones:
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
El circuito
átiesquemático
sería
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
Observe que la ALU está formada por las siguientes tresetapas:
• Sección aritmética
• Sección lógica• Sección lógica
• Unión de ambas secciones
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
Sección
A it étiAritmética
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
Sección
Ló iLógica
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
Unión deUnión de
ambas
isecciones
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
Para describir/programar de mejor manera la ALU, sesugiere seguir la misma segmentación vista, es decir,dividir el circuito en tres secciones:
• Sección aritméticaSección aritmética
• Sección lógica
• U ió d b i• Unión de ambas secciones
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
La sección aritmética está formada por dos partes:
• Sumador Completo
• Circuito Verdadero/Complemento, Uno/CeroCircuito Verdadero/Complemento, Uno/Cero
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
Identificados los elementos que conforman la secciónaritmética, se inicia a programar cada parte porseparado.
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
library ieee;use ieee.std_logic_1164.all;
entity FA isport( A: in std_logic ;
B: in std_logic ;Cin: in std_logic ;F: out std_logic ;Cout: out std logic );Cout: out std_logic );
end;
architecture BEH of FA isbegin
F <= A xor B xor Cin;Cout <= (A and B) or ((A xor B) and Cin);
dend BEH;
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
library ieee;use ieee.std_logic_1164.all;
entity VCUC isport( B: in std_logic ;
S: in std_logic_vector ( 1 downto 0 );Y: out std_logic );
end;end;
architecture BEH of VCUC isbegin
Y <= (not B and S(1)) or (B and S(0));end BEH;
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
Con los dos códigos programados (FA.vhd y VCUC.vhd)se puede integrar los programas en un código generalque describa a la ALU Aritmética (ALUA.vhd) como untodo.
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
La descripción estructural es el método mas eficientepara la integración de dos o más estructuras definidascon la finalidad de crear una nueva estructura.
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
Observe que la ALU Aritmética está formada por:
• 5 entradas
• 2 salidas2 salidas
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
library ieee;use ieee.std_logic_1164.all;
entity ALUA isPort( A: in std_logic ;
B: in std_logic ;Cin: in std_logic ;S: in std_logic_vector ( 1 downto 0 );F: out std logic ;F: out std_logic ;Cout: out std_logic );
end;
architecture STRL of ALUA is...
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
Se ha establecido que la ALU Aritmética en sí es laintegración de dos componentes y su interconexión.
Un componente es una estructura ya definida y sedeclara después de la arquitectura con el nombre ydeclara después de la arquitectura con el nombre ypuertos con el que fue creado.
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
El componente FA sería:
component FAport( A: in std logic ;port( A: in std_logic ;
B: in std_logic ;Cin: in std_logic ;F: out std logic ;_ g ;Cout: out std_logic );
end component;
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
El componente VCUC sería:
component VCUCport( B: in std logic ;port( B: in std_logic ;
S: in std_logic_vector ( 1 downto 0 );Y: out std_logic );
end component;p ;
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
Observe que las entidades del sumador completo(FA.vhd) y del circuito verdadero/complemento,uno/cero (VCUC.vhd) son idénticos a los componentesdeclarados en la ALU Aritmética (ALUA.vhd).
entity FA isport( A: in std_logic ;
B: in std_logic ;
component FAport( A: in std_logic ;
B: in std_logic ;Cin: in std_logic ;F: out std_logic ;Cout: out std_logic );
end;
Cin: in std_logic ;F: out std_logic ;Cout: out std_logic );
end component;
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
La interconexión hace referencia a las señales internasde conexión entre componentes sin considerar lasentradas y salidas.
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
Todas las señales de interconexión se declaran despuésde los componentes cuidando que las características dela señal sean las mismas entre componentes.
signal Y: std_logic;
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
Finalmente, se asignan las entradas (i), salidas (o) yseñales (s) que va a utilizar cada componente para sucorrecto funcionamiento a través de la sentencia portmap.
Cada asignación deberá tener un identificador así comoel nombre del componente a utilizar para la asignación.el nombre del componente a utilizar para la asignación.
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
La sintaxis de asignación sería:
Identificador: Componente port map (i, i, s, o, o)
Observe que el orden de los parámetros dentro delObserve que el orden de los parámetros dentro delparéntesis dependerá de la declaración delcomponentecomponente.
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
Es decir, si se declara un componente con 3 entradas y1 salida, su sintaxis sería:
component EJEMPLOport( A: in std_logic ;
B: in std_logic ;C: in std_logic ;Z: out std_logic );
end component;
...
U1: EJEMPLO port map (i, i, i, o)
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
U1: EJEMPLO port map (i, i, i, o)
De igual forma, si un componente es declarado con 4entradas/salidas, se debe tener cuidado de asignar lamisma cantidad de parámetros.
component EJEMPLOport( A: in std_logic ;
B i td l iB: in std_logic ;Z: out std_logic );
end component;
...
U1: EJEMPLO port map (i, i, i, o, o)
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
La asignación de la ALU sería: U1
begin
U2
U1: VCUC port map (B, S, Y);U2: FA port map (A, Y, Cin, F, Cout);
end STRL;
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
library ieee;use ieee.std_logic_1164.all; U1
entity ALUA is
U2
Port( A: in std_logic ;B: in std_logic ;Cin: in std_logic ;S: in std logic vector ( 1 downto 0 );S: in std_logic_vector ( 1 downto 0 );F: out std_logic ;Cout: out std_logic );
end;
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
architecture STRL of ALUA isU1
component FAport( A: in std_logic ;
B: in std_logic ;
U2
Cin: in std_logic ;F: out std_logic ;Cout: out std_logic );
end component;end component;
component VCUCport(
B: in std_logic ;S: in std_logic_vector ( 1 downto 0 );Y: out std_logic );
d tend component;
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
U1
signal Y: std_logic;
begin
U2
U1: VCUC port map (B, S, Y);U2: FA port map (A, Y, Cin, F, Cout);
end STRL;end STRL;
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
La sección lógica está formada por solo una parte, porlo que se puede programar en un mismo código.
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
library ieee;use ieee.std_logic_1164.all;
entity ALUL isport( A: in std_logic ;
B: in std_logic ;S: in std_logic_vector ( 1 downto 0);R out std logic )R: out std_logic );
end;
architecture BEH of ALUL isbegin
with S selectR <= (A and B) when "00",
(A xor B) when "01",(A or B) when "10",( o ) e 0 ,(not A) when "11",'0' when others;
end BEH;
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
Para realizar la unión de las secciones aritméticas ylógicas (ALUA.vhd y ALUL.vhd) se debe considerar queambas son componentes y además se requiere de untercer componente el cual será el multiplexor 2 a 1(mux2x1.vhd) que une ambas partes.
Todos los componentes deberán estar contenidos en unTodos los componentes deberán estar contenidos en unsolo código (ALU.vhd)
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
Diseño general
d l ALUde la ALU
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
library ieee;use ieee.std_logic_1164.all;
entity MUX2X1 isPort( I: in std_logic_vector ( 1 downto 0 );
S2: in std logic ;_ g ;X: out std_logic );
end;
architecture BEH of MUX2X1 isarchitecture BEH of MUX2X1 isbegin
with S2 selectX <= I(0) when '0',
I(1) when '1','0' when others;
end BEH;
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
Con los tres componentes (ALUA.vhd, ALUL.vhd yMUX2X1.vhd) se puede iniciar con el código de laUnidad Aritmética Lógica (ALU.vhd)
De la misma forma que en el diseño de la ALUDe la misma forma que en el diseño de la ALUAritmética, se debe de considerar a la ALU como unasola entidad que tiene sus entradas y salidas, ademássola entidad que tiene sus entradas y salidas, ademásde estar formada por tres componentes.
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
Se debe de tener en cuenta las interconexiones queexisten entre componentes sin considerar las entradasy salidas.
Es recomendable tener siempre un esquemático queEs recomendable tener siempre un esquemático queguíe para el proceso de programación.
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego
Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego