Está en la página 1de 24

Asignacin de seales en

VHDL

VHDL: Asignacin de seales


La asignacin a una seal establece una o ms transacciones sobre la
misma
Cada seal tiene asociada una forma de onda proyectada, que es una
lista de transacciones que indica los valores futuros de la seal.
Por ejemplo: s <= 1 after 20 ns;
causar que la seal tome el valor 1 20 ns despus de ejecutada la
asignacin. Esto se representa de la siguiente manera:
1
20 ns

La asignacin puede realizarse de acuerdo a dos tipos de retardo:


inercial y transporte.

Sistemas Digitales - FIUBA

VHDL: Asignacin de seales


Ejemplo 1
entity pru_inercial is
port (
E: in bit;
S: out bit
);
end;
architecture beh of pru_inercial is
begin
process(E)
begin
S <= E after 10 ns;
end process;
end;

Sistemas Digitales - FIUBA

entity pulso is
end;
architecture pulso_arq of pulso is
signal E: bit;
signal S: bit;
component pru_inercial is
port (
E: in bit;
S: out bit
);
end;
begin
E <= 0, 1 after 20 ns, 0 after 35 ns;
aa: pru_inercial port map(E => E, S => S)
end;

VHDL: Asignacin de seales


t=
E

20 ns

35 ns

30

40

10 ns

S
0
Sistemas Digitales - FIUBA

10

15

20

25

35

45

50

VHDL: Asignacin de seales


t=
E

20 ns

35 ns

30

40

10 ns

S
0
Sistemas Digitales - FIUBA

10

15

20

25

35

45

50

VHDL: Asignacin de seales


t = 10
E

20 ns

35 ns

10 ns

S
0
Sistemas Digitales - FIUBA

10

15

20

25

30

35

40

45

50

VHDL: Asignacin de seales


t = 20
E

20 ns

35 ns

30 ns

S
0
Sistemas Digitales - FIUBA

10

15

20

25

30

35

40

45

50

VHDL: Asignacin de seales


t = 30
E

35 ns

30 ns

S
0
Sistemas Digitales - FIUBA

10

15

20

25

30

35

40

45

50

VHDL: Asignacin de seales


t = 35
E

35 ns

45 ns

S
0
Sistemas Digitales - FIUBA

10

15

20

25

30

35

40

45

50

VHDL: Asignacin de seales


t = 45
E

45 ns

S
0
Sistemas Digitales - FIUBA

10

15

20

25

30

35

40

45

50

VHDL: Asignacin de seales


t > 45
E

S
0
Sistemas Digitales - FIUBA

10

15

20

25

30

35

40

45

50

VHDL: Asignacin de seales

Qu ocurrira si la entrada fuera un pulso de 5 ns?


E <= 0, 1 after 20 ns, 0 after 25 ns;

1
0

Sistemas Digitales - FIUBA

10

15

20

25

30

35

40

45

50

VHDL: Asignacin de seales


t=
E

20 ns

25 ns

30

40

10 ns

S
0
Sistemas Digitales - FIUBA

10

15

20

25

35

45

50

VHDL: Asignacin de seales


t=
E

20 ns

25 ns

30

40

10 ns

S
0
Sistemas Digitales - FIUBA

10

15

20

25

35

45

50

VHDL: Asignacin de seales


t = 10
E

20 ns

25 ns

10 ns

S
0
Sistemas Digitales - FIUBA

10

15

20

25

30

35

40

45

50

VHDL: Asignacin de seales


t = 20
E

20 ns

25 ns

30 ns

S
0
Sistemas Digitales - FIUBA

10

15

20

25

30

35

40

45

50

VHDL: Asignacin de seales


t = 25
E

25 ns

30 ns

35 ns

S
0
Sistemas Digitales - FIUBA

10

15

20

25

30

35

40

45

50

VHDL: Asignacin de seales


t = 35
E

35 ns

S
0
Sistemas Digitales - FIUBA

10

15

20

25

30

35

40

45

50

VHDL: Asignacin de seales


t > 35
E

S
0
Sistemas Digitales - FIUBA

10

15

20

25

30

35

40

45

50

VHDL: Asignacin de seales


Ejemplo 2
entity asigna_02 is
end;
architecture asigna_02_arq of asigna_02 is
signal a, b, c: std_logic := '0';
begin
a <= 1 after 2 ns;
b <= not a after 3 ns;
c <= not b after 10 ns;
end;

Sistemas Digitales - FIUBA

VHDL: Asignacin de seales


Ejemplo 3
entity asigna_03 is
end;
architecture asigna_03_arq of asigna_03 is
signal x: std_logic := Z';
begin
process
begin
x <= 1 after 5 ns;
x <= 0 after 8 ns;
x <= 1 after 6 ns;
wait;
end process;
end;

Sistemas Digitales - FIUBA

VHDL: Asignacin de seales


Ejemplo 4
entity asigna_04 is
end;
architecture asigna_04_arq of asigna_04 is
signal x: std_logic := Z';
begin
process
begin
x <= '1' after 5 ns, '0' after 10 ns, '1' after 20 ns;
x <= '0' after 12 ns, '1' after 16 ns, '0' after 25 ns;
wait;
end process;
end;

Sistemas Digitales - FIUBA

VHDL: Asignacin de seales


Ejemplo 5
entity asigna_05 is
end;
architecture beh of asigna_05 is
constant N: integer := 4;
constant TA: bit_vector(0 to N-1) := "1100";
constant TB: bit_vector(0 to N-1) := "1010";
signal a, b, c: bit := '0';
begin
c <= a xor b after 10 ns;
process
begin
for i in 0 to N-1 loop
a <= TA(i);
b <= TB(i);
wait on c for 20 ns;
end loop;
wait;
end process;
end;

Sistemas Digitales - FIUBA

VHDL: Asignacin de seales


Ejemplo 5: Formas de onda obtenidas

Sistemas Digitales - FIUBA

También podría gustarte