Buscar

TT411_VHDL5 - Circuitos Síncronos - Registrador e Máquinas de Estados

Prévia do material em texto

VHDL5 Prof. Rangel Arthur 
FT/UNICAMP 1 
 
 
 
 
Estratégias de Descrição de Circuitos Síncronos 
 
 
 
1. Introdução ..................................................................................................................... 2 
2. Registrador sensível a nível .......................................................................................... 6 
3. Registrador sensível à borda (Inicialização Síncrona) .................................................. 8 
4. Registrador Sensível à borda (Inicialização Assíncrona) ............................................ 10 
5. Máquinas de Estados .................................................................................................. 13 
6. Contadores .................................................................................................................. 19 
7. Prática de Laboratório................................................................................................. 21 
VHDL5 Prof. Rangel Arthur 
FT/UNICAMP 2 
1. Introdução 
 A descrição de um circuito pode empregar os mais diversos recursos 
disponíveis na linguagem. Uma descrição visando à síntese, entretanto, 
nem sempre pode lançar mão de todos esses meios. Os aplicativos de 
síntese não reconhecem todas as estruturas de linguagem e possuem, 
normalmente, estilos preferenciais de descrição para a inferência das 
estruturas. 
 Um elemento de memória pode ser inferido quando um valor é atribuído a 
um sinal ou variável em pelo menos uma condição, e nenhum valor é 
atribuído a esse objeto em pelo menos uma condição. A falta de atribuição 
de um valor acarreta a necessidade de armazenamento do valor quando 
nenhuma condição de atribuição é atingida. 
 Em um registrador composto por elementos sensíveis a nível, a condição 
para memorização correspondente a um determinado nível lógico do sinal 
de controle. Na figura a seguir mostra-se a operação de um latch. 
 
 
VHDL5 Prof. Rangel Arthur 
FT/UNICAMP 3 
 
 Aqui, apresenta-se o formato geral, empregando processo. O sinal d deve 
estar na lista de sensibilidade. 
 
 Uma transição em sinal pode ser detectada através dos atributos EVENT e 
STABLE. Numa borda de subida, após a ocorrência de um evento, o valor 
do sinal deve corresponder a um nível lógico alto. No caso de uma borda de 
descida, o nível do sinal após o evento deve ser baixo. 
 Como abordado anteriormente, atributos garantem informações adicionais 
associadas ao objeto, como tipos e unidades de projeto. Um objeto (em um 
dado instante de tempo) pode conter um único valor mas possuir vários 
atributos. 
VHDL5 Prof. Rangel Arthur 
FT/UNICAMP 4 
 Atributo pode ser referenciado na forma: prefixo’nome_atributo. O prefixo 
corresponde ao item (por exemplo um sinal) e o nome_atributo, o atributo 
desejado do item. O caractere ’ separa o prefixo e o nome_atributo. 
 Dois exemplos de atributos são, como já antecipado, o STABLE e o 
EVENT. 
 
 
 
 
 Esses dois atributos são utilizados então na verificação de bordas de subida 
ou de descida em sinais. 
VHDL5 Prof. Rangel Arthur 
FT/UNICAMP 5 
 No quadro a seguir são apresentadas as condições de teste normalmente 
aceitas pelas ferramentas de síntese para detecção de bordas de subida e de 
descida. Nesses exemplos o sinal é do tipo BIT. 
 
 A inicialização de um registrador permite levar as saídas a um nível lógico 
independente do valor de entrada. A operação que leva as saídas ao nível 
lógico alto costuma se denominada set, e a operação que leva as saídas ao 
nível lógico baixo pode ser denominada reset. 
 As operações de inicialização são denominadas síncronas, caso a sua 
execução dependa do sinal de controle e as operações assíncronas podem 
ser executadas independentemente da condição de sinal de controle. 
 
VHDL5 Prof. Rangel Arthur 
FT/UNICAMP 6 
2. Registrador sensível a nível 
 O código abaixo apresenta uma possível descrição de um registrador de três 
bits sensível a nível, com inicialização assíncrona. O sinal en controla o 
armazenamento da informação presente no sinal d (en no nível lógico baixo 
mantém a informação; en no nível lógico alto o sinal q segue a entrada d). 
O sinal rst estabelece a operação de reset e o sinal set, a operação de set. 
 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
ENTITY latch3_1 IS 
 PORT (en : IN BIT; -- habilita 
 rst : IN BIT; -- rst=1 leva q=000 
 set : IN BIT; -- set=1 leva q=111 
 d : IN BIT_VECTOR(2 DOWNTO 0); 
 q : OUT BIT_VECTOR(2 DOWNTO 0)); 
END latch3_1; 
 
ARCHITECTURE teste OF latch3_1 IS 
BEGIN 
 PROCESS (en, d, rst, set) 
 BEGIN 
 IF (rst ='1') THEN q <="000"; -- q=000 independente de en 
 ELSIF (set ='1') THEN q <="111"; -- q=111 independente de en 
 ELSIF (en ='1') THEN q <=d; -- condicao do sinal para habilitar 
 END IF; 
 END PROCESS; 
END teste; 
 
VHDL5 Prof. Rangel Arthur 
FT/UNICAMP 7 
 A figura a seguir ilustra o esquema do circuito sintetizado a partir da 
descrição do código anterior. 
 
 
VHDL5 Prof. Rangel Arthur 
FT/UNICAMP 8 
3. Registrador sensível à borda (Inicialização Síncrona) 
 O esquema a seguir apresenta um exemplo de um registrador com três bits 
sensíveis à borda de subida do terminal de controle. As operações de set e 
reset são síncronas (dependem do relógio). 
 
 A descrição emprega duas construções do tipo IF ELSE: a primeira detecta 
a condição do sinal de controle, e a segunda testa sucessivamente as 
condições para realizar operações de set, reset ou armazenamento. 
 
VHDL5 Prof. Rangel Arthur 
FT/UNICAMP 9 
 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
ENTITY flip3_2 IS 
 PORT (ck : IN BIT; -- relogio 
 rst : IN BIT; -- rst=1 leva q=000 sincrono 
 set : IN BIT; -- set=1 leva q=111 sincrono 
 d : IN BIT_VECTOR(2 DOWNTO 0); 
 q : OUT BIT_VECTOR(2 DOWNTO 0)); 
END flip3_2; 
 
ARCHITECTURE teste OF flip3_2 IS 
BEGIN 
 PROCESS (ck) 
 BEGIN 
 IF (ck'EVENT AND ck = '1') THEN -- condicao do sinal relogio 
 IF (rst = '1') THEN q <= "000"; -- teste para levar q=000 
 ELSIF (set = '1') THEN q <= "111"; -- teste para levar q=111 
 ELSE q <= d; -- armazena dado 
 END IF; 
 END IF; 
 END PROCESS; 
END teste; 
 
 
VHDL5Prof. Rangel Arthur 
FT/UNICAMP 10 
4. Registrador Sensível à borda (Inicialização Assíncrona) 
 Um registrador com inicialização assíncrona apresenta as operações set e 
reset independentes do sinal de relógio ck. 
 
 
 
 
 
VHDL5 Prof. Rangel Arthur 
FT/UNICAMP 11 
 
 
 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
ENTITY flip3_3 IS 
 PORT (ck : IN BIT; -- relogio 
 rst : IN BIT; -- rst=1 leva q=000 assincrono 
 set : IN BIT; -- set=1 leva q=111 assincrono 
 d : IN BIT_VECTOR(2 DOWNTO 0); 
 q : OUT BIT_VECTOR(2 DOWNTO 0)); 
END flip3_3; 
 
ARCHITECTURE teste OF flip3_3 IS 
BEGIN 
 PROCESS (ck, rst, set) 
 BEGIN 
 IF (rst = '1') THEN q <="000"; -- q=000 independente de ck 
 ELSIF (set = '1') THEN q <="111"; -- q=111 independente de ck 
 ELSIF (ck'EVENT AND ck ='1') THEN q <=d; -- condicao do sinal relogio 
 END IF; 
 END PROCESS; 
END teste; 
 
 
 
VHDL5 Prof. Rangel Arthur 
FT/UNICAMP 12 
 Na figura a seguir é apresentado o resultado da síntese do registrador 
proposto a partir do código mostrado anteriormente. 
 
VHDL5 Prof. Rangel Arthur 
FT/UNICAMP 13 
5. Máquinas de Estados 
 Uma máquina de estados é um circuito seqüencial que transita numa 
seqüência predefinida de estados. A transição entre os estados é comandada 
por um sinal de controle. O estado atual é definido por um elemento de 
memória e o estado futuro é determinado com base no estado atual e na 
condição das entradas. 
 Dois estilos de máquinas de estado são definidos: as máquinas de Mealy e 
de Moore. Na máquina de Mealy, o valor de saída é função do estado atual 
e da condição das entradas. Na máquina de Moore, o valor da saída 
depende exclusivamente do estado atual. 
 
VHDL5 Prof. Rangel Arthur 
FT/UNICAMP 14 
 Na figura a seguir mostra-se o diagrama de estados que representa, na 
forma de um grafo orientado, a evolução entre os estados. Cada estado é 
representado por um nó e a transição entre os estados é indicada por arcos. 
O nó contém o estado atual e o arco, a condição de entrada que leva ao 
próximo estado indicado. Na máquina de Mealy o valor da saída é incluído 
no arco e na máquina de Moore ele é indicado no nó. 
 
 
 No exemplo da figura a seguir é ilustrado o diagrama de estados de uma 
máquina com quatro estados que realiza uma contagem entre os valores 00, 
01, 11 e 10. Para simplificação do circuito, o valor que representa o estado 
atual corresponde ao valor das saídas. 
VHDL5 Prof. Rangel Arthur 
FT/UNICAMP 15 
 
 O quadro a seguir apresenta uma possível descrição para a máquina 
proposta, usando um código com descrições tipo IF ELSE e CASE WHEN. 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
ENTITY maq_est1 IS 
 PORT (ck : IN BIT; -- relogio borda subida 
 rst : IN BIT; -- rst=1, q=00 
 q : BUFFER BIT_VECTOR (1 DOWNTO 0)); -- saida codigo Gray 
END maq_est1; 
 
ARCHITECTURE teste OF maq_est1 IS 
 
BEGIN 
 abc: PROCESS (ck, rst) 
 BEGIN 
 IF rst = '1' THEN -- estado inicial 
 q <= "00"; 
 ELSIF (ck'EVENT and ck ='1') THEN -- ciclo de estados 
 CASE q IS 
 WHEN "00" => q <= "01"; 
 WHEN "01" => q <= "11"; 
 WHEN "11" => q <= "10"; 
 WHEN "10" => q <= "00"; 
 END CASE; 
 END IF; 
 END PROCESS abc; 
END teste; 
 
VHDL5 Prof. Rangel Arthur 
FT/UNICAMP 16 
 
 Essa máquina de estados pode ser descrita a partir do circuito abaixo. 
 
 
VHDL5 Prof. Rangel Arthur 
FT/UNICAMP 17 
 
 O exemplo a seguir segue o caso mais geral de uma máquina de estados, 
em que o valor assumido pelo estágio atual não corresponde diretamente ao 
valor da saída; ele é codificado a partir do estado atual. O exemplo 
proposto é um contador crescente ou decrescente, com o sentido da 
contagem definido pela entrada sobe. Os estados da máquina são 
designados como caso_a, caso_b, caso_c e caso_d. 
 
 
 
 
 
VHDL5 Prof. Rangel Arthur 
FT/UNICAMP 18 
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 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
43 
44 
ENTITY maq_est2 IS 
 PORT (ck : IN BIT; -- relogio borda subida 
 sobe : IN BIT; -- sobe=1, q=00,01,11,10,00... 
 iniciar : IN BIT; -- iniciar=1, q=00 
 q : OUT BIT_VECTOR (1 DOWNTO 0)); -- saida 
END maq_est2; 
 
ARCHITECTURE teste OF maq_est2 IS 
 -- q=2 q=3 q=1 q=0 
 TYPE st IS (caso_d, caso_c, caso_b, caso_a); -- novo tipo definido 
 SIGNAL estado : st; -- sinal estado tipo "st" 
BEGIN 
 abc: PROCESS (ck, iniciar) 
 BEGIN 
 IF iniciar = '1' THEN -- estado inicial 
 estado <= caso_a; -- q=0 
 ELSIF (ck'EVENT and ck ='1') THEN -- ciclo de estados 
 CASE estado IS 
 WHEN caso_a => -- q=0 
 IF sobe = '1' THEN estado <= caso_b; -- q=1 
 ELSE estado <= caso_d; -- q=2 
 END IF; 
 WHEN caso_b => -- q=1 
 IF sobe = '1' THEN estado <= caso_c; -- q=3 
 ELSE estado <= caso_a; -- q=0 
 END IF; 
 WHEN caso_c => -- q=3 
 IF sobe = '1' THEN estado <= caso_d; -- q=2 
 ELSE estado <= caso_b; -- q=1 
 END IF; 
 WHEN caso_d => -- q=2 
 IF sobe = '1' THEN estado <= caso_a; -- q=0 
 ELSE estado <= caso_c; -- q=3 
 END IF; 
 END CASE; 
 END IF; 
 END PROCESS abc; 
 
 WITH estado SELECT -- decodifica estado 
 q <= "00" WHEN caso_a, -- q=0 
 "01" WHEN caso_b, -- q=1 
 "11" WHEN caso_c, -- q=3 
 "10" WHEN caso_d; -- q=2 
END teste; 
VHDL5 Prof. Rangel Arthur 
FT/UNICAMP 19 
6. Contadores 
 Um contador pode ser descrito como uma máquina de estados em que o 
código de cada estado corresponde ao valor da contagem. Uma outra opção 
para a descrição de contadoresé o emprego de operações aritméticas de 
soma ou subtração controladas por um sinal de relógio. 
 O código apresentado no quadro abaixo apresenta uma descrição que 
realiza uma contagem entre os valores 0 e 9, com reset assíncrono e carga 
de dados paralela síncrona. A operação de carga é controlada pelo sinal ld. 
 Como o incremento do contador é realizado através de uma operação de 
soma, o tipo dos sinais d e q, bem como o da variável qv foram declarados 
como inteiro. 
 O código é similar aos exemplos anteriores, diferindo pelo emprego de uma 
variável, em vez de um sinal, para definição do registrador que armazena o 
valor da contagem. 
 
VHDL5 Prof. Rangel Arthur 
FT/UNICAMP 20 
 
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 
 
ENTITY cnt_dec2 IS 
 PORT (ck : IN BIT; -- relogio 
 ld : IN BIT; -- carrega dados sincrono 
 rst : IN BIT; -- rst=1 leva q=0000 assincrono 
 d : IN INTEGER RANGE 15 DOWNTO 0; 
 q : OUT INTEGER RANGE 15 DOWNTO 0); 
END cnt_dec2; 
 
ARCHITECTURE teste OF cnt_dec2 IS 
 
BEGIN 
 abc: PROCESS (ck, rst) 
 VARIABLE qv : INTEGER RANGE 15 DOWNTO 0; 
 BEGIN 
 IF (rst = '1') THEN -- q=0000 independente de ck 
 qv := 0; 
 ELSIF (ck'EVENT AND ck = '1') THEN -- condicao do sinal relogio 
 IF (ld = '1') THEN qv := d; -- carrega dados 
 ELSE 
 IF qv >= 9 THEN qv := 0; -- retorna a zero 
 ELSE qv := qv +1; -- incrementa 
 END IF; 
 END IF; 
 END IF; 
 q <= qv; 
 END PROCESS abc; 
END teste; 
 
 
VHDL5 Prof. Rangel Arthur 
FT/UNICAMP 21 
7. Prática de Laboratório 
1. Apresente a descrição de registrador com 4 bits e duas entradas de 4 bits, da e 
db. O sinal de seleção sel define de qual entrada o dado será armazenado na 
borda de descida do sinal de relógio ck. A operação do circuito é similar ao 
registrador 74298 da família TTL. 
 
 
2. Apresente a descrição de um contador de 4 bits crescente / decrescente com a 
opção para carga de dados paralela e reset assíncrono. O contador deve contar 
entre os valores 0 a 11. A figura a seguir ilustra o contador. O terminal ld 
permite o armazenamento do dado d na borda de subida do sinal de relógio ck. 
O terminal crs define se a contagem é crescente ou decrescente, e rst executa 
uma operação de reset assíncrona. Os sinais d e q são do tipo INTEGER, e os 
sinais restantes do tipo BIT. 
VHDL5 Prof. Rangel Arthur 
FT/UNICAMP 22 
 
3. Apresente a descrição de um registrador de deslocamento equivalente ao 
circuito TTL 74166. O registrador contém 8 bits, possibilidade de carga paralela 
através das entradas d0 a d7 e uma entrada serial (terminal ds). O terminal rst_l 
leva a saída de todos os registradores ao nível lógico baixo de modo assíncrono. 
O terminal ld_l permite a carga dos dados presentes nas entradas de d0 a d7 na 
borda de subida do sinal ck. A operação de deslocamento é executada, também, 
na borda de subida do sinal ck. O terminal ce_l habilita as operações síncronas: 
deslocamento e carga paralela. A figura a seguir ilustra simplificadamente o 
componente e uma tabela contendo os modos de operação do registrador.

Outros materiais

Materiais relacionados

Perguntas relacionadas

Perguntas Recentes