Buscar

TT411_VHDL3 - Comandos Concorrentes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 20 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 20 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 20 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

VHDL3 Prof. Rangel Arthur 
FT/UNICAMP 1 
 
 
 
Comandos Concorrentes Básicos em VHDL 
 
 
1. Introdução ..................................................................................................................... 2 
2. Atribuição de Valor para um Sinal ............................................................................... 5 
3. Descrição de um Circuito de Seleção ........................................................................... 6 
4. Construção WHEN ELSE ............................................................................................. 9 
5. Construção WITH SELECT ....................................................................................... 11 
6. Comando BLOCK ...................................................................................................... 14 
7. Comando PROCESS .................................................................................................. 16 
8. Palavra reservada UNAFFECTED ............................................................................. 17 
9. Prática de Laboratório................................................................................................. 17 
10. Referências ............................................................................................................... 20 
 
 
 
 
 
VHDL3 Prof. Rangel Arthur 
FT/UNICAMP 2 
1. Introdução 
 Os comandos concorrentes presentes em um determinado código são 
executados conjuntamente e, por isso, a seqüência como são apresentados é 
irrelevante. 
 Em uma região de código concorrente a ordem dos comandos no código 
não deve interferir no resultado final da simulação. Para isso, o simulador 
necessita de um atraso interno Δ, de modo a coordenar a avaliação de 
eventos que ocorrem no mesmo instante. 
 Durante uma simulação, a alteração de uma condição do circuito pode 
ativar um ou mais comandos do código. Para todos os comandos ativados, 
o resultado é transferido 1Δ após. 
 A nova condição pode ativar novos comandos e o processo se repete por 
sucessivas iterações até atingir uma condição estável. 
 
 
 
 
 
 
 
VHDL3 Prof. Rangel Arthur 
FT/UNICAMP 3 
 
 
 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
 
ENTITY sig_tes0 IS 
 PORT (sa : IN BIT; 
 sb, sc : BUFFER BIT); 
END sig_tes0; 
 
ARCHITECTURE teste OF sig_tes0 IS 
BEGIN 
 sc <= sb; 
 sb <= sa; 
END teste; 
 
 
 
 
 
 
 
VHDL3 Prof. Rangel Arthur 
FT/UNICAMP 4 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
 
ENTITY c04_delt IS 
 PORT (z : IN BIT; 
 x, y : BUFFER BIT); 
END c04_delt; 
 
ARCHITECTURE teste OF c04_delt IS 
BEGIN 
 x <= z AND y; 
 y <= '1' XOR x; 
END teste; 
 
 
 
 
 Os simuladores normalmente limitam o número máximo de iterações e 
abortam a simulação caso uma condição estável nunca seja atingida. 
 
#** Error: (vsim-3601) Iteration limit reached at time 10 ns. 
VHDL3 Prof. Rangel Arthur 
FT/UNICAMP 5 
2. Atribuição de Valor para um Sinal 
 
 
 A atribuição de um valor a um objeto da classe sinal pode ocorrer tanto 
em regiões de código concorrente como em regiões de código seqüencial. 
 Uma atribuição ocorrendo em uma área de comandos concorrentes é 
considerada como tal e, portanto, a ordem dos comandos é irrelevante. 
 A linguagem VHDL é rigorosa com relação a operações envolvendo 
tipos diferentes. Transferência de valores entre objetos de tipos diferentes 
não é permitida. 
 
 
 
sinal_destino_a <= sinal_fonte; -- tipo de sinal_destino_a = tipo do sinal_fonte 
sinal_destino_b <= sinal_x OR sinal_y; 
 
 
VHDL3 Prof. Rangel Arthur 
FT/UNICAMP 6 
3. Descrição de um Circuito de Seleção 
 
 Entradas: i0, i1, i2 e i3. 
 Saída: ot. 
 Controle da seleção: s0 e s1. 
 
 
 
 
 
 
VHDL3 Prof. Rangel Arthur 
FT/UNICAMP 7 
 
 Exemplo: descrição do circuito de seleção em linguagem VHDL: 
 
o A descrição emprega uma única expressão. 
o Observar: uso de parêntesis → AND e OR de igual precedência. 
 
 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
 
ENTITY mux_0 IS 
 PORT (i0, i1, i2, i3 : IN BIT; -- entradas 
 s0, s1 : IN BIT; -- selecao 
 ot : OUT BIT); -- saida 
END mux_0; 
 
ARCHITECTURE nivel_logico OF mux_0 IS 
BEGIN 
 ot <= (i0 AND NOT s1 AND NOT s0) OR 
 (i1 AND NOT s1 AND s0) OR 
 (i2 AND s1 AND NOT s0) OR 
 (i3 AND s1 AND s0); 
END nivel_logico; 
 
 
 
 
 
VHDL3 Prof. Rangel Arthur 
FT/UNICAMP 8 
 Exemplo: - nova descrição do circuito de seleção em linguagem VHDL: 
 
o Emprega 5 expressões. 
o Sinais internos: int0, int1, int2 e int3. 
o Observar concorrência do código. O valor de ot é determinado pelas 
expressões linhas 11, 12, 13 e 14. 
 
 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
 
ENTITY mux_00 IS 
 PORT (i0, i1, i2, i3 : IN BIT; -- entradas 
 s0, s1 : IN BIT; -- selecao 
 ot : OUT BIT); -- saida 
END mux_00; 
 
ARCHITECTURE teste OF mux_00 IS 
 SIGNAL int0, int1, int2, int3 : BIT; -- sinais internos 
BEGIN 
 ot <= int0 OR int1 OR int2 OR int3; 
 int0 <= i0 AND NOT s1 AND NOT s0; 
 int1 <= i1 AND NOT s1 AND s0; 
 int2 <= i2 AND s1 AND NOT s0; 
 int3 <= i3 AND s1 AND s0; 
END teste; 
 
 
VHDL3 Prof. Rangel Arthur 
FT/UNICAMP 9 
4. Construção WHEN ELSE 
 Esse tipo de construção pode acontecer quando há um desejo de 
transferência condicional de um sinal. 
 Contém uma lista de condições e expressões, sendo que a condição 
verdadeira define a expressão transferida. O formato da construção é dado a 
seguir. 
 
 
 
 Exemplo: circuito de seleção usando a construção WHEN ELSE. 
 Nota-se que há um nível de abstração mais elevado, fazendo com que a 
descrição seja mais próxima do comportamento do circuito. 
 
 
 
 
VHDL3 Prof. Rangel Arthur 
FT/UNICAMP 10 
 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
 
ENTITY mux_1 IS 
 PORT (i0, i1, i2, i3 : IN BIT; 
 s0, s1 : IN BIT; 
 ot : OUT BIT); 
END mux_1; 
 
ARCHITECTURE teste OF mux_1 IS 
 BEGIN 
 ot <= i0 WHEN s1= '0' AND s0='0' ELSE 
 i1 WHEN s1= '0' AND s0='1' ELSE 
 i2 WHEN s1= '1' AND s0='0' ELSE 
 i3; 
END teste; 
 
 
 
 
VHDL3Prof. Rangel Arthur 
FT/UNICAMP 11 
5. Construção WITH SELECT 
 Usa-se essa construção quando da transferência condicional de um sinal. 
Contém: uma lista de opções e expressões, sendo que todas as condições da 
expressão de escolha devem ser consideradas. 
 Não existe uma prioridade como na construção WHEN ELSE. Opções 
pode ser agrupadas: 
o caracter | equivale a “ou”; 
o TO e DOWNTO delimitam faixas de opções. 
 Opções restantes: uso da palavra reservada OTHERS. 
 Formato da construção: 
 
 
VHDL3 Prof. Rangel Arthur 
FT/UNICAMP 12 
 No quadro a seguir apresenta-se a parte de um código contendo dois 
exemplos com a construção WITH SELECT. No primeiro exemplo o sinal 
é do tipo CHARACTER e no segundo, do tipo BIT. 
 
WITH s0 SELECT -- s0 tipo CHARACTER 
 x0 <= i0 AND i1 WHEN ‘a’, -- condicao unica 
 i0 OR i1 WHEN ‘b’ | ‘c’, -- uma ou outra condição 
 i0 XOR i1 WHEN ‘d’ TO ‘g’, -- faixa crescente de condições 
 i0 WHEN ‘x’ DOWNTO ‘k’, -- faixa decrescente de condições 
 i1 WHEN OTHERS; 
 
WITH b1 AND b0 SELECT -- b1 e b0 tipo BIT 
 x1 <= i0 WHEN ‘0’, 
 i1 WHEN ‘1’; 
 
 
 
VHDL3 Prof. Rangel Arthur 
FT/UNICAMP 13 
 Exemplo: circuito de seleção em linguagem VHDL usando a construção 
WITH SELECT. 
 O nível de abstração é mais elevado, fazendo da descrição algo mais 
próxima do comportamento do circuito. Utilização da expressão de escolha: 
sinal sel = s1 e s0 concatenados. 
 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
 
ENTITY mux_9 IS 
 PORT (i0, i1, i2, i3 : IN BIT; 
 s0, s1 : IN BIT; 
 ot : OUT BIT); 
END mux_9; 
 
ARCHITECTURE teste OF mux_9 IS 
 SIGNAL sel : BIT_VECTOR (1 DOWNTO 0); 
BEGIN 
 sel <= s1 & s0; 
 WITH sel SELECT 
 ot <= i0 WHEN "00", 
 i1 WHEN "01", 
 i2 WHEN "10", 
 i3 WHEN "11"; 
END teste; 
 
 
VHDL3 Prof. Rangel Arthur 
FT/UNICAMP 14 
6. Comando BLOCK 
 O comando BLOCK tem a finalidade de dividir o código em regiões para 
facilitar o entendimento da descrição. Sinais podem ser declarados no 
interior de um bloco, e a visibilidade destes é restrita ao interior do bloco. 
 A divisão não interfere, naturalmente, no circuito sintetizado. No quadro a 
seguir apresenta-se o circuito de seleção que vem sendo apresentado, 
visando apenas a visualização de um possível emprego do comando 
BLOCK. 
 Outro emprego do comando BLOCK é desabilitar sinais no interior do 
bloco segundo condições definidas por expressões de guarda. A expressão 
de guarda retorna um valor booleano. 
 
nome_rotulo: BLOCK expressao_guarda 
 -- definicao de sinais visiveis no bloco 
BEGIN 
 sinal_a <= GUARDED expressao_1 
 -- comandos 
END BLOCK nome_rotulo; 
 
 
VHDL3 Prof. Rangel Arthur 
FT/UNICAMP 15 
 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
 
ENTITY mux_5 IS 
 PORT (i0, i1, i2, i3 : IN BIT; -- entradas 
 sel : IN INTEGER RANGE 3 DOWNTO 0;-- selecao 
 ot : OUT BIT); -- saida 
END mux_5; 
 
ARCHITECTURE com_block OF mux_5 IS 
 SIGNAL global : BIT_VECTOR(0 TO 1); 
BEGIN 
 abc: BLOCK 
 BEGIN 
 ot <= i0 WHEN global = "00" ELSE 
 i1 WHEN global = "01" ELSE 
 i2 WHEN global = "10" ELSE 
 i3; 
 END BLOCK abc; 
 
 def: BLOCK 
 SIGNAL interno_abc : BIT_VECTOR(0 TO 1); -- sinal visivel no bloco abc 
 BEGIN 
 WITH sel SELECT 
 interno_abc <= "00" WHEN 0, 
 "01" WHEN 1, 
 "10" WHEN 2, 
 "11" WHEN OTHERS; 
 global <= interno_abc; 
 END BLOCK def; 
END com_block; 
 
 
VHDL3 Prof. Rangel Arthur 
FT/UNICAMP 16 
7. Comando PROCESS 
 
 Um processo permite definir uma área contendo comandos seqüenciais. A 
palavra reservada PROCESS identifica o comando conforme o formato 
apresentado no quadro a seguir. Um processo é composto de duas regiões: 
parte de declaração e parte de comandos seqüenciais. 
 
abc: PROCESS (lista de sensibilidade) 
 -- parte_de_declaracao_do_processo 
 -- declaracao_de_tipo_e_subtipo; 
 -- declaracao_de_constante; 
 -- declaracao_de_variavel; 
 -- declaracao_de_pseudonimo; 
 -- não_e_permitido: declaracao_de_sinal e decalaracao_de_variavel_compartilhada 
BEGIN 
 -- parte_de_comandos_sequenciais 
 -- comando_sequencial; 
 -- comando_sequencial; 
 ... 
 -- comando_sequencial; 
END PROCESS abc; 
 
VHDL3 Prof. Rangel Arthur 
FT/UNICAMP 17 
8. Palavra reservada UNAFFECTED 
 A palavra reservada UNAFFECTED pode ser empregada na atribuição de 
valor a um sinal, quando não se deseja afetar o valor do sinal. A palavra 
UNAFFECTED somente é permitida em atribuições concorrentes de 
valores a sinais, não é definida para a versão VHDL-1987 e nem sempre é 
suportada pelas ferramentas de síntese. 
 
9. Prática de Laboratório 
1. Proponha descrições para os circuitos a seguir. Analise a seqüência de 
iterações que devem ser executadas pelo simulador, com base nas formas de 
onda apresentadas na figura. 
 
VHDL3 Prof. Rangel Arthur 
FT/UNICAMP 18 
2. Desenvolva o código para um detector de prioridade com quatro entradas 
empregando a construção WHEN ELSE. A entrada de prioridade máxima é p0 
e a entrada de prioridade mínima é p3. O detector deve ser empregado em um 
sistema microprocessado, onde quatro periféricos podem solicitar uma 
interrupção. Uma das entradas em nível alto corresponde a um pedido de 
interrupção; neste caso, a saída int deve ser ativada. 
 
 
 
3. Repita o desenvolvimento anterior, empregando a construção WITH 
SELECT. 
 
 
 
 
VHDL3 Prof. Rangel Arthur 
FT/UNICAMP 19 
4. Com base na figura a seguir, desenvolva o código descrevendo o sistema 
contendo um decodificador BCD para 7 segmentos e um circuito de seleção. A 
descrição deve ser dividida em dois blocos. Um deles contendo o decodificador 
e o outro, o circuito de seleção. Os mostradores são acionados em nível baixo e 
os segmentos acionados em nível alto. 
 
 
 
VHDL3 Prof. Rangel Arthur 
FT/UNICAMP 20 
10. Referências 
[1] d’Amore, Roberto, VHDL: Descrição e Síntese de Circuitos Digitais, LTC, 
São Paulo, 2005.

Outros materiais

Outros materiais