Sie sind auf Seite 1von 17

VHDL

Linguagem de Descrio e
Sntese de Circuitos Digitais
Sistemas Digitais
Comandos Concorrentes Bsicos
O Atraso Delta
Comandos concorrentes so executados conjuntamente.
Logo, a sequncia como so apresentados no cdigo irrelevante
Um atraso delta empregado para o simulador avaliar as iteraes
resultantes dos comando concorrentes.
Ordem dos comandos no cdigo no deve interferir no resultado
final da simulao
O simulador necessita de um atraso interno, denominado , para
coordenao da avaliao de eventos concorrentes
Para todos os comandos ativados, o resultado transferido 1 aps
A nova condio pode ativar novos comandos, e o processo se
repete por sucessivas iteraes at atingir uma condio estvel
Comandos Concorrentes Bsicos
O Atraso Delta
Observe que em uma linguagem sequencial, o comando da linha 9
deveria ser apresentado antes do comando da linha 8!
1 | ENTITY sig_tes0 IS
2 | PORT( sa : IN BIT;
3 | sb, sc : BUFFER BIT);
4 | END sig_tes0;
5 |
6 | ARCHITECTURE teste OF sig_tes0 IS
7 | BEGIN
8 | sc <= sb;
9 | sb <= sa;
10 | END teste;
Comandos Concorrentes Bsicos
O Atraso Delta
Simulador Comportamento real
Comandos Concorrentes Bsicos
O Atraso Delta condio instvel
Os simuladores normalmente limitam o nmero mximo de iteraes e
abortam a simulao!
Comandos Concorrentes Bsicos
Atribuio de valor a um sinal
Pode ocorrer tanto em regies de cdigo concorrente quanto sequencial
Quando a atribuio ocorre em regio concorrente, a ordem dos comandos
irrelevante
A atribuio emprega o delimitador <=
A informao pode ser originada de um outro sinal ou expresso
VHDL rigorosa com relao a operaes envolvendo tipos diferentes, no
permitindo transferncia de valor entre objetos nesse caso
Comandos Concorrentes Bsicos
Atribuio de valor a um sinal
Exemplo: MUX (Circuito de Seleo)
Comandos Concorrentes Bsicos
Atribuio de valor a um sinal
Comandos Concorrentes Bsicos
Atribuio de valor a um sinal
Comandos Concorrentes Bsicos
Construo WHEN ELSE
Comandos Concorrentes Bsicos
Construo WHEN ELSE
s1_s0 <= s1 & s0;
Comandos Concorrentes Bsicos
Construo WITH SELECT
Comandos Concorrentes Bsicos
Construo WITH SELECT
Comandos Concorrentes Bsicos
WHEN ELSE versus WITH SELECT
Na construo WHEN ELSE a ordem de apresentao das condies
indica a precedncia na execuo
Primeira condio tem prioridade mxima e a ltima mnima
Na construo WITH SELECT todas as condies possuem igual
prioridade
Tais diferenas podem ser aproveitadas pelo projetista para obter
circuitos mais eficientes e descries mais sucintas
O exerccio a seguir ilustra o caso onde a construo WHEN ELSE
leva vantagem sobre a construo WITH SELECT
Exerccios
Exerccios
1 | ENTITY pr_cod IS
2 | PORT( p : IN BIT_VECTOR(3 DOWNTO 1);
3 | c : OUT BIT_VECTOR(1 DOWNTO 0));
4 | END pr_cod;
5 |
6 | ARCHITECTURE teste1 OF pr_cod IS
7 | BEGIN -- p3 p2 p1 c1 c0
8 | c <= 11 WHEN p(3) = 1 ELSE -- 1 - - 1 1
9 | 10 WHEN p(2) = 1 ELSE -- 0 1 - 1 0
10 | 01 WHEN p(1) = 1 ELSE -- 0 0 1 0 1
11 | 00; -- 0 0 0 0 0
12 | END teste1;
1 | ENTITY pr_cod IS
2 | PORT( p : IN BIT_VECTOR(3 DOWNTO 1);
3 | c : OUT BIT_VECTOR(1 DOWNTO 0));
4 | END pr_cod;
5 |
6 | ARCHITECTURE teste2 OF pr_cod IS
7 | BEGIN
8 | WITH p SELECT -- p3 p2 p1 c1 c0
9 | c <= 11 WHEN 111|110|101|100, -- 1 - - 1 1
10 | 10 WHEN 011|010 , -- 0 1 - 1 0
11 | 01 WHEN 001, -- 0 0 1 0 1
12 | 00 WHEN 000; - 0 0 0 0 0
13 | END teste2;
Comandos Concorrentes Bsicos
Criao de latch com as construes
WHEN ELSE e WITH SELECT
1 | ENTITY latch IS
2 | PORT( enb, d1, d2, d3 : IN BIT;
3 | q1, q2, q3, : BUFFER BIT);
4 | END latch;
5 |
6 | ARCHITECTURE funcionamento OF latch IS
7 | BEGIN
8 | q1 <= d1 WHEN enb = 1 ELSE
9 | q1;
10 | q2 <= d2 WHEN enb = 1;
11 | WITH enb SELECT
12 | q3 <= d3 WHEN 1;
13 | q3 WHEN 0;
14 | END funcionamento;

Das könnte Ihnen auch gefallen