1.2 - Diseño VHDL ALU

41
Competencia 1 DISEÑO VHDL DE UNA É Ó Competencia 1 UNIDAD ARITMÉTICA L ÓGICA Ingeniería Mecatrónica M.C. Victor Hugo Cacique Borrego

description

diseñar mediante entorno VHDL una ALU(unidad aritmetica logica) rfvafwfafearrfafwffwefwe

Transcript of 1.2 - Diseño VHDL ALU

Page 1: 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

Page 2: 1.2 - Diseño VHDL ALU

VHDL es un lenguaje de descripción de hardware decircuitos integrados de muy alta velocidad .

Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego

Page 3: 1.2 - Diseño VHDL ALU

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

Page 4: 1.2 - Diseño VHDL ALU

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

Page 5: 1.2 - Diseño VHDL ALU

Previamente se había diseñado una ALU con lassiguientes funciones:

Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego

Page 6: 1.2 - Diseño VHDL ALU

El circuito

átiesquemático

sería

Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego

Page 7: 1.2 - Diseño VHDL ALU

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

Page 8: 1.2 - Diseño VHDL ALU

Sección

A it étiAritmética

Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego

Page 9: 1.2 - Diseño VHDL ALU

Sección

Ló iLógica

Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego

Page 10: 1.2 - Diseño VHDL ALU

Unión deUnión de

ambas

isecciones

Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego

Page 11: 1.2 - Diseño VHDL ALU

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

Page 12: 1.2 - Diseño VHDL ALU

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

Page 13: 1.2 - Diseño VHDL ALU

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

Page 14: 1.2 - Diseño VHDL ALU

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

Page 15: 1.2 - Diseño VHDL ALU

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

Page 16: 1.2 - Diseño VHDL ALU

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

Page 17: 1.2 - Diseño VHDL ALU

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

Page 18: 1.2 - Diseño VHDL ALU

Observe que la ALU Aritmética está formada por:

• 5 entradas

• 2 salidas2 salidas

Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego

Page 19: 1.2 - Diseño VHDL ALU

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

Page 20: 1.2 - Diseño VHDL ALU

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

Page 21: 1.2 - Diseño VHDL ALU

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

Page 22: 1.2 - Diseño VHDL ALU

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

Page 23: 1.2 - Diseño VHDL ALU

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

Page 24: 1.2 - Diseño VHDL ALU

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

Page 25: 1.2 - Diseño VHDL ALU

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

Page 26: 1.2 - Diseño VHDL ALU

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

Page 27: 1.2 - Diseño VHDL ALU

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

Page 28: 1.2 - Diseño VHDL ALU

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)

Page 29: 1.2 - Diseño VHDL ALU

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

Page 30: 1.2 - Diseño VHDL ALU

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

Page 31: 1.2 - Diseño VHDL ALU

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

Page 32: 1.2 - Diseño VHDL ALU

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

Page 33: 1.2 - Diseño VHDL ALU

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

Page 34: 1.2 - Diseño VHDL ALU

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

Page 35: 1.2 - Diseño VHDL ALU

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

Page 36: 1.2 - Diseño VHDL ALU

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

Page 37: 1.2 - Diseño VHDL ALU

Diseño general

d l ALUde la ALU

Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego

Page 38: 1.2 - Diseño VHDL ALU

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

Page 39: 1.2 - Diseño VHDL ALU

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

Page 40: 1.2 - Diseño VHDL ALU

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

Page 41: 1.2 - Diseño VHDL ALU

Ingeniería MecatrónicaM.C. Victor Hugo Cacique Borrego