TEMA 1 Introducción al VHDL y repaso de Fundamentos de E ...

23
1 1. VHDL y repaso de Fundamentos Digital TEMA 1 Introducción al VHDL y repaso de Fundamentos de E ca Digital VHDL. Conceptos básicos. Circuitos combinacionales y VHDL concurrente Circuitos secuenciales y VHDL secuencial

Transcript of TEMA 1 Introducción al VHDL y repaso de Fundamentos de E ...

Page 1: TEMA 1 Introducción al VHDL y repaso de Fundamentos de E ...

11. VHDL y repaso de Fundamentos Digital

TEMA 1Introducción al VHDL y repaso de

Fundamentos de Eca Digital

VHDL. Conceptos básicos.

Circuitos combinacionales y VHDL concurrente

Circuitos secuenciales y VHDL secuencial

Page 2: TEMA 1 Introducción al VHDL y repaso de Fundamentos de E ...

21. VHDL y repaso de Fundamentos Digital

VHDL: Very High Speed Integrated Circuits Hardware Description Language

Es un lenguaje de alto nivel para describir circuitos digitales

¿Para qué sirve un HDL?Sintetizar circuitos: dada una descripción en código (por ej. VHDL), obtener una implementación (por ejemplo en una FPGA) con una herramienta de síntesis

Simular circuitos: comprobar la funcionalidad antes de la implementación (usando un simulador y la descripción en VHDL).

Descripción: documentación de proyectos a partir de la descripción de la funcionalidad

IEEE std 1076-1987: IEEE Standard VHDL Language Reference Manual

¿Qué es VHDL y para qué sirve?

Page 3: TEMA 1 Introducción al VHDL y repaso de Fundamentos de E ...

31. VHDL y repaso de Fundamentos Digital

Lo BÁSICO (la filosofía) del VHDL Dos elementos fundamentales: ENTIDAD y ARQUITECTURA

Entity Las CONEXIONES (entradas y salidas del circuito) Architecture El COMPORTAMIENTO o la ESTRUCTURA del circuito

Dentro de la arquitectura, TODAS LAS SENTENCIAS SON CONCURRENTES ENTRE SI(o sea, es un lenguaje paralelo, como el HW)

Dado que siempre pensamos en los sistemas complejos como sistemas interconectados, esta estructura de programación es óptima. Permite jerarquía estructural … sin embargo, algunas cosas las pensamos como algoritmos

(herencia de los informáticos y los matemáticos) Elementos secuenciales dentro de lo concurrente ¿Cómo va el tiempo? NO hay variables (de momento), sólo SEÑALES NO es un ejecutable (se simula)

Page 4: TEMA 1 Introducción al VHDL y repaso de Fundamentos de E ...

41. VHDL y repaso de Fundamentos Digital

Puerta NAND Puerta XNOR

entity puerta_NAND isPort ( A : in bit;

B : in bit;Y : out bit);

end puerta_NAND;

architecture Behavioral of puerta_NANDis

begin

Y <= A nand B;

end Behavioral;

entity puerta_XNOR isPort ( A : in bit;

B : in bit;Y : out bit);

end puerta_XNOR;

architecture Behavioral of puerta_XNORis

begin

Y <= ((not A) and (not B))or(A and B);

end Behavioral;

Tipo bit: ‘0’ ó ‘1’

Las puertas lógicas, en VHDL

Aquí se está representando comportamiento, y no estructuraDe momento, no hay paralelismo (sólo una sentencia)

Page 5: TEMA 1 Introducción al VHDL y repaso de Fundamentos de E ...

51. VHDL y repaso de Fundamentos Digital

Puerta NAND Puerta XNOR

entity puerta_NAND isPort ( A : in bit;

B : in bit;Y : out bit);

end puerta_NAND;

architecture Behavioral of puerta_NAND is

beginY <= ‘1' when A= '0' and B = '0' else

‘1' when A ='0' and B = '1' else‘1' when A =‘1' and B = ‘0' else‘0';

end Behavioral;

entity puerta_XNOR isPort ( A : in bit;

B : in bit;Y : out bit

);end puerta_XNOR;

architecture Behavioral of puerta_XNOR is

begin

Y <= '1' when A= '0' and B = '0' else'0' when A ='0' and B = '1' else'0' when A =‘1' and B = ‘0' else'1';

end Behavioral;

Otraforma

Funcionalidad mediante asignaciones condicionales

(Vaya rollo, cada vez escribo más….)

Page 6: TEMA 1 Introducción al VHDL y repaso de Fundamentos de E ...

61. VHDL y repaso de Fundamentos Digital

0000000011111111

A

0000111100001111

B

0011001100110011

C

0101010101010101

D

1000100100110011

f entity funcion isPort ( A : in bit;

B : in bit;C : in bit;D : in bit;f : out bit

);end funcion;

architecture Behavioral of funcion is

Begin

f <= ‘1’ when A='0'and B='0‘and C =‘0’ and D =‘0’ else‘0’ when A='0'and B='0‘and C =‘0’ and D =‘1’ else‘0’ when A='0'and B='0‘and C =‘1’ and D =‘0’ else‘0’ when A='0'and B='0‘and C =‘1’ and D =‘1’ else… .

.

. '1' when A=‘1'and B=‘1’ and C =‘1’ and D =‘0’ else‘1’;

end Behavioral;

Ejemplo 1. Funciones lógicas

Habrá otras formas para escribir menos (don’t panic).

Page 7: TEMA 1 Introducción al VHDL y repaso de Fundamentos de E ...

71. VHDL y repaso de Fundamentos Digital

0000000011111111

e3

0000111100001111

e2

0011001100110011

e1

0101010101010101

e0

X101010110101XXX

f

XEFMAMJJASONDXXX

¿Qué pasa con los valores X (don’t care) ?

El tipo de datos ‘bit’ no cubre la realidad de la electrónica digital en todos sus aspectos necesitamos

nuevos tipos de datos

Tipo std_logic: ‘1’, ‘0’, ‘Z’, ‘X’, ‘U’, ‘-’, ‘L’, ‘H’, ‘W’

Z: alta impedancia L: ‘0’ débil

X: conflicto H: ‘1’ débil

U: undefined ‘W’: conflicto débil

- : don’t care

Ejemplo 2. Valores a ‘X’ (don’t care)

Page 8: TEMA 1 Introducción al VHDL y repaso de Fundamentos de E ...

81. VHDL y repaso de Fundamentos Digital

entity funcion isPort ( A : in std_logic;

B : in std_logic;C : in std_logic;D : in std_logic;f : out std_logic);

end funcion;

architecture Behavioral of funcion is

Begin

f <= ‘-’ when A='0'and B='0‘and C =‘0’ and D =‘0’ else‘1’ when A='0'and B='0‘and C =‘0’ and D =‘1’ else‘0’ when A='0'and B='0‘and C =‘1’ and D =‘0’ else‘1’ when A='0'and B='0‘and C =‘1’ and D =‘1’ else

.… .

. ‘-';

end Behavioral;

Ejemplo 2. Código en VHDL

Page 9: TEMA 1 Introducción al VHDL y repaso de Fundamentos de E ...

91. VHDL y repaso de Fundamentos Digital

01111

x x0 00 11 01 1

E1 E0

Funciones lógicas

Decodificador

DEC

enable

n 2n

0 0 0 01 0 0 00 1 0 00 0 1 00 0 0 1

S0 S1 S2 S3

DECE1

E0

S0S1S2S3

01n3

01n2

01n1

01n0

EE·eSEE·eSEE·eSEE·eS

==

=

=

Ejemplo:Decod 2 entradas con enable

en

Se activa la salida correspondiente alnúmero binario codificado en la entrada

en

Decodificadores (repaso)

Page 10: TEMA 1 Introducción al VHDL y repaso de Fundamentos de E ...

101. VHDL y repaso de Fundamentos Digital

entity DEC2a4 isport ( E : in std_logic_vector (1 downto 0);

S : out std_logic_vector (3 downto 0);ena : in std_logic);

end DEC2a4;

architecture Behavioral of DEC2a4 issignal interna: std_logic_vector (3 downto 0);

Begin

interna <= “0001” when E = “00” else“0010” when E = “01” else“0100” when E = “10” else“1000” when E = “11” else“----” when others;

S <= interna when ena = ‘1’ else “0000”;

end Behavioral;

Un std_logic_vector representa un BUS(un conjunto de señales numeradas que se usan generalmente juntas)

Dentro de la arquitectura se pueden declarar señales internas

Estas dos asignaciones son concurrentes (como lo es el hardware), y por tanto da igualel orden)

with E selectS <= “0001” when “00”,

“0010” when “01”, “0100” when “10”,“1000” when “11”,“----” when others;

Alternativa

Decodificador de 2 a 4 con enable en VHDL

Muchos casos se acortan como ‘-’ when others;

Page 11: TEMA 1 Introducción al VHDL y repaso de Fundamentos de E ...

111. VHDL y repaso de Fundamentos Digital

A partir de decodificadores de 2 entradas, construir un decodificador de 4 entradas

E1

E0

S4S5S6S7

en

S0S1S2S3

E1

E0

S0S1S2S3

en

S0S1S2S3

E1

E0

S12S13S14S15

en

S0S1S2S3

E1

E0

S8S9S10S11

en

S0S1S2S3

E1

E0

en

S0S1S2S3

E3

E2

en

E1

E0

Decodificadores grandes (Repaso)

Page 12: TEMA 1 Introducción al VHDL y repaso de Fundamentos de E ...

121. VHDL y repaso de Fundamentos Digital

entity DEC4a16 isPort ( E : in std_logic_vector (3 downto 0);

S : out std_logic_vector (15 downto 0);ena : in std_logic)

end DEC4a16;

architecture Structural of DEC4a16 is

component DEC2a4 isport ( E : in std_logic_vector (1 downto 0);

S : out std_logic_vector (3 downto 0);ena : in std_logic);

end component;

signal enaint: std_logic_vector (3 downto 0);

Begin

C1: DEC2a4 port map ( E(3 downto 2), enaint, ena);C2: DEC2a4 port map ( E(1 downto 0), S(3 downto 0, enaint (0));C3: DEC2a4 port map ( E(1 downto 0), S(7 downto 4, enaint (1));C4: DEC2a4 port map ( E(1 downto 0), S(11 downto 8, enaint (2));C5: DEC2a4 port map ( E(1 downto 0), S(15 downto 12), enaint (3));

end Structural;

E1

E0

S4S5S6S7

en

S0S1S2S3

E1

E0

S0S1S2S3

en

S0S1S2S3

E1

E0

S12S13S14S15

en

S0S1S2S3

E1

E0

S8S9S10S11

en

S0S1S2S3

E1

E0

en

S0S1S2S3

E3

E2

en

E1

E0

C5

C4

C3

C2

C1

El decodificador anterior con VHDL estructural

Page 13: TEMA 1 Introducción al VHDL y repaso de Fundamentos de E ...

131. VHDL y repaso de Fundamentos Digital

011111

n2n

x x x x0 0 0 0x x x 1x x 1 0x 1 0 01 0 0 0

E0 E1 E2 E3en

0 00 01 11 00 10 0

A1 A0

001111

act

COD.n

2nCOD.

en

Codificador prioritario al más alto

act

deshabilitadoinactivo

activo

¿Y si no hay ningunoactivo?

¿Y si hay más de uno?

Se codifica en binario sobrela salida el número de entrada que esté activa

También existe el codificadorprioritario al más bajo

Codificadores (Repaso)

Page 14: TEMA 1 Introducción al VHDL y repaso de Fundamentos de E ...

141. VHDL y repaso de Fundamentos Digital

entity COD4a2 isport ( E : in std_logic_vector (3 downto 0);

S : out std_logic_vector (1 downto 0);ena : in std_logic;act : out std_logic;);

end CUD4a2;

architecture Behavioral of COD4a2 issignal interna : std_logic_vector (1 downto 0);

Begin

interna <= “11” when E(3) = ‘1’ else“10” when E(2) = ‘1’ else“01” when E(1) = ‘1’ else“00”;

S <= interna when ena = ‘1’ else “00”;

act <= ‘1’ when ena = ‘1’ and E /= “0000” else ‘0’;

end Behavioral;

La prioridad va marcada por el orden de interpretación de los else

Codificador en VHDL

Page 15: TEMA 1 Introducción al VHDL y repaso de Fundamentos de E ...

151. VHDL y repaso de Fundamentos Digital

Multiplexor (MUX)

01111

X X0 00 11 01 1

C1 C0

n

2n

X X X XD X X XX D X XX X D XX X X D

E0 E1 E2 E3

C1 C0

E0E1E2E3

en

en

DMUX

S

C

Sen

en

0DDDD

S

S

La entrada de datos correspondiente alnúmero codificado en binario en las señalesde control se conecta a la salida

E0E1E2E3

S

C1 C0

10

23 1 0

Símbolo propio:

Multiplexores (Repaso)

Page 16: TEMA 1 Introducción al VHDL y repaso de Fundamentos de E ...

161. VHDL y repaso de Fundamentos Digital

Ejemplo de MUX en VHDL

entity MUX4a1 isport ( E : in std_logic_vector (3 downto 0);

C : in std_logic_vector (1 downto 0);S : out std_logic;ena : in std_logic);

end MUX4a1 ;

architecture Behavioral of MUX4a1 issignal interna : std_logic;

beginwith C select

interna <= E(0) when “00”,E(1) when “01”,E(2) when “10”,E(3) when “11”,‘-’ when others;

S <= interna when ena = ‘1’ else ‘0’;

end Behavioral;

E0E1E2E3

S

C1C0

10

23 1 0

MUX de 4 a 1

Con with … select se acorta laescritura de funciones lógicas

Page 17: TEMA 1 Introducción al VHDL y repaso de Fundamentos de E ...

171. VHDL y repaso de Fundamentos Digital

Convertidor BCD a 7 segmentos

a

g

dc

bf

e

0 0 0 00 0 0 10 0 1 00 0 1 10 1 0 00 1 0 10 1 1 00 1 1 11 0 0 01 0 0 1resto

E3 E2 E1 E0

1 1 1 1 1 1 00 1 1 0 0 0 01 1 0 1 1 0 11 1 1 1 0 0 10 1 1 0 0 1 11 0 1 1 0 1 11 0 1 1 1 1 11 1 1 0 0 0 01 1 1 1 1 1 11 1 1 1 0 1 1x x x x x x x

a b c d e f g

Convertidores de código (Repaso y VHDL)

with BCD_IN selectSSEG <= “0000001” when “0000”, -- 0

“1001111” when “0001”, -- 1“0010010” when “0010”, -- 2“0000110” when “0011”, -- 3“1001100” when “0100”, -- 4“0100100” when “0101”, -- 5“0100000” when “0110”, -- 6“0001111” when “0111”, -- 7“0000000” when “1000”, -- 8“0000100” when “1001”, -- 9“-------” when others;

Page 18: TEMA 1 Introducción al VHDL y repaso de Fundamentos de E ...

181. VHDL y repaso de Fundamentos Digital

D QD CLK Qt+∆t

0

1

0

1

Biestable D (dato)

Circuitos secuenciales. Biestables síncronos

CLK

Puede ser activo por flanco de subida o de bajada

CLK

D

Q

La entrada D se muestrea en el flanco activo de CLKQ sólo puede cambiar en ese flanco

T QT CLK Qt+∆t

Qt

/Qt

0

1

Biestable T (toggle)

CLK

Puede ser activo por flanco de subida o de bajada

CLK

T

Q

La entrada T se muestrea en el flanco activo de CLKQ sólo puede cambiar en ese flanco

0

D=‘0’

1

D=‘1’

D=‘1’

D=‘0’

0

T=‘0’

1

T=‘1’

T=‘0’

T=‘1’

Page 19: TEMA 1 Introducción al VHDL y repaso de Fundamentos de E ...

191. VHDL y repaso de Fundamentos Digital

ASÍNCRONOS reset

0

preset

1

SÍNCRONOS clear set

Inicialización de biestables

Ejemplo:Biestable D con clear

D

CK

DQ

Ejemplo:Biestable D con reset

CK

DQD

reset

clearLa inic. síncrona se

puede considerar comoparte de la funcionalidad

No hay acuerdo en el uso de esta terminología

La inic. asíncrona es inmediata, mientras que lasíncrona se espera al primer flanco activo de reloj

Las señales de inicialización suelen ser activas por nivel bajo (la acción se produce cuando la señal es 0)

Otras señales de los biestables

Page 20: TEMA 1 Introducción al VHDL y repaso de Fundamentos de E ...

201. VHDL y repaso de Fundamentos Digital

Señal de enable (carga) en biestables D

E

DD

CK

QD

E01

E D Qt+∆t

Qt

D

0 X

1 D

No confundir este enable con el combinacional

Ejemplo: Describir un biestable T con clear, reset, carga y enable

Orden: reset > clear > enable > carga > T

Otras señales de los biestables

Page 21: TEMA 1 Introducción al VHDL y repaso de Fundamentos de E ...

211. VHDL y repaso de Fundamentos Digital

0

0/0

4

26

1

35

70/0

0/0

0/0

0/0

0/0

0/0

0/01/0

1/0

1/0

1/01/0

1/0

1/0

1/1

Ejemplo: Contador síncrono de 3 bits

TCin

CLK

CoutT TQ0 Q1 Q2

Contadores

En VHDL:

Page 22: TEMA 1 Introducción al VHDL y repaso de Fundamentos de E ...

221. VHDL y repaso de Fundamentos Digital

Registro PISO

E0

CK

10

E1

10

E2

L

S

Registros

D Q D Q D Q

Page 23: TEMA 1 Introducción al VHDL y repaso de Fundamentos de E ...

231. VHDL y repaso de Fundamentos Digital

Contador en anillo

000 001 010

100

101 011

110111

CK

D3D1 D2 Q3Q1 Q2

Contador Johnson

CK

D3D1 D2

/Q3

Q1 Q2 001 100

000

011 110

111

101

010

Contadores con registros de desplazamiento