Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
Projeto de Sistemas Digitais
Edson Midorikawa (2016)Adaptado por Glauber (2018)
PCS3225
PCS3225 - 2018 1
Tópicos
• Projeto de Sistemas Digitais– Metodologia de projeto
– Projeto Exemplo
– Projeto #1: Multiplicador
– Projeto #2: Máximo Divisor Comum
– Exercícios
• Referências: Haskell & Hanna, Digital Design using Digilent FPGA Boards – capítulo 9Gajski, Principles of digital design - Capítulo 8W.V. Ruggiero & C.B. Margi, Capítulo 1: Metodologia de Projeto Estruturado para Sistemas Digitais. Apostila de PCS2022
PCS3225 - 2018 2
Desenvolvimento de Circuitos Digitais
• Circuitos combinatórios e sequenciais
– Pequenos circuitos: portas lógicas, mapas de Karnaugh, tabelas verdade, somadores, etc;
– Circuitos maiores: componentes MSI (mux, decodificadores, etc), ULA,circuitos sequenciais, diagrama de transição de estados.
• Contudo, sistemas mais complexos precisam de técnicas de projeto mais abstratas e sistemáticas.
PCS3225 - 2018 3
Metodologia de Projeto Estruturado
• Uma metodologia apresenta uma sequência de atividades que levam a um desenvolvimento organizado de um sistema digital;
• Conceitos importantes:
– Divisão do sistema digital em fluxo de dados e unidade de controle;
– Concepção e organização hierárquica de módulos de projeto;
– Projeto voltado para a síntese do circuito.
PCS3225 - 2018 4
Projeto de Sistemas Digitais
• SISTEMA DIGITAL = Fluxo de Dados + Unidade de Controle
PCS3225 - 2018 5
Projeto de Sistemas Digitais
• Fluxo de Dados
– responsável pelo armazenamento, roteamento, combinação e processamento em geral dos DADOS.
– composto principalmente por:• registradores, contadores,
deslocadores;
• memórias;
• unidades funcionais gerais (somadores, ULAs, comparadores, etc).
– recebe COMANDOS da unidade de controle.
PCS3225 - 2018 6
Projeto de Sistemas Digitais
• Unidade de Controle
– Entradas:
• COMANDOS externos para o sistema digital, e
• Sinais de STATUS ou CONDIÇÃO vindos do fluxo de dados.
– Saídas:
• Sinais de CONTROLE para o fluxo de dados;
• Pode gerar SAÍDAS DE CONTROLE externas(e.g., fim ou pronto).
PCS3225 - 2018 7
Projeto de Sistemas Digitais
• Unidade de Controle
– responsável pelo sequenciamento das operações realizadas pelo sistema digital.
– Ações principais:
• Iniciar e terminar operações;
• Testar condições;
• Decidir ações futuras;
– modelo baseado em uma máquina de estados.
8PCS3225 - 2018
Metodologia de Projeto
• Passos do método
1. Obter uma descrição verbal do circuito;
2. Desenvolver um pseudocódigo do algoritmo;
3. Elaborar um diagrama de alto nível;
4. Selecionar elementos do fluxo de dados para as operações;
5. Identificar sinais de status e de controle dos elementos fluxo de dados;
6. Especificar a FSM da unidade de controle;
7. Verificar conexão do fluxo de dados e da unidade de controle (microarquitetura).
PCS3225 - 2018 9
Metodologia de Projeto
1. Descrição verbal do circuito
PCS3225 - 2018 11
Obs.: ignora comandos M1 e M2 até que N1 e/ou N2 sejam acionados ao menos uma vez
Metodologia de Projeto
1. Descrição verbal do circuito
– Sinais da Interface de Entrada e Saída
PCS3225 - 2018 12
Metodologia de Projeto
2. Pseudocódigo do funcionamento do circuito
PCS3225 - 2018 13
2. entrada inicialde dados
3. Processamentodos comandos(obs.: precedência condizentecom a especificação)
1. Valores iniciaisdos registradores
Metodologia de Projeto
4. Elementos do fluxo de dados
PCS3225 - 2018 15
1. registradores
2. interconexão:R1, R2 IN(obs: mesmo fio)
3. interconexão:R3 R1, R2(obs.: mux)
Metodologia de Projeto
5. Sinais de status e de controle do fluxo de dados
PCS3225 - 2018 17
Sinais de controle
Metodologia de Projeto
6. Detalhar ASM daunidade de controle
PCS3225 - 2018 18
ASM dealto nível
comandos e testes no ASM variáveis de controle e de estado do FD
Obs. (estado extra): trata temporização de mux/R3
Metodologia de Projeto
7. Conexão do fluxo de dados e da unidade de controle
PCS3225 - 2018 19
Sinais de controle
Sinais de entrada
Sinais de saída
Metodologia de Projeto
• Após a aplicação da metodologia, o projetista deve prosseguir o desenvolvimento do circuito digital com a sua implementação, usando por exemplo uma HDL.
• Em seguida, pode-se fazer a síntese do circuito em uma placa de desenvolvimento com FPGA (ex. Altera DE2).
PCS3225 - 2018 20
FPGA
Metodologia de Projeto• Trecho da descrição VHDL do componente principal.
PCS3225 - 2018 21
componentes FD e UC
Entidade do sistema digital
Projeto-Exemplo: Multiplicador
• Especificação: multiplicador
PCS3225 - 2018 25
Fonte: W.V. Ruggiero & C.B. Margi . Capítulo 1: Metodologia de Projeto Estruturado para Sistemas Digitais. Apostila de PCS2022.
Projeto-Exemplo: Multiplicador
1. Especificação: multiplicador(descrição textual ou verbal)
PCS3225 - 2018 26
Projeto-Exemplo: Multiplicador
2. Escolha do algoritmo demultiplicação
PCS3225 - 2018 27
• Após Start: carregar VA e VB, e inicializar resultado em zero
• Somar o valor do multiplicando ao resultado
• Subtrair 1 do multiplicador
• Verificar se multiplicador = 0
• Se sim, para; se não, continua loop de soma do multiplicando ao resultado
Projeto-Exemplo: Multiplicador
2. Escolha do algoritmo de multiplicação
PCS3225 - 2018 28
Definimos que o multiplicador utilizará o algoritmo
de multiplicação por somas sucessivas.
Exemplo:
5x3 = 3 + 3 + 3 + 3 + 3
Projeto-Exemplo: Multiplicador
2. Pseudocódigo do algoritmo de multiplicação
PCS3225 - 2018 29
• Após Start: carregar VA e VB, e inicializar resultado em zero
• Somar o valor do multiplicando ao resultado
• Subtrair 1 do multiplicador
• Verificar se multiplicador = 0
• Se sim, pára; se não, continua loop de soma do multiplicando
ao resultado
Multiplicador
3. Diagrama ASMde alto nível
PCS3225 - 2018 30
• Após Start: carregar VA e VB, e inicializar resultado em zero
• Somar o valor do multiplicando ao resultado
• Subtrair 1 do multiplicador
• Verificar se multiplicador = 0
• Se sim, pára; se não, continua loop de soma do multiplicando ao resultado
• Após Start: carregar VA e VB, e inicilizar resultado em zero
• Somar o valor do multiplicando ao resultado
• Subtrair 1 do multiplicador
• Verificar se multiplicador = 0
• Se sim, pára; se não, continua loop de soma do multiplicando ao resultado
Multiplicador
• 4. Elementos do fluxo de dados (FD)
PCS3225 - 2018 32
1. Registradores (Ra, Rb: 4 bits ; result: 8 bits)
5b. interconexões: result <= somadorsomador <= (Ra, result)
2. Somador
3. Subtrator de 1
4. Detector de 0000
5c. interconexões: Rb <= subtratorsubtrator <= (Rb, 1)
5a. interconexões: Ra <= VaRb <= Vb
Mux em Rbresult: sinal de reset
Multiplicador
6. Detalhar ASM daunidade de controle
PCS3225 - 2018 35
zrb0
1
ceA <= ‘0’ ; ceB <= ‘0’ceR <= ‘0’ ; dcB <= ‘0’rstR <= ‘0’ ; ready <= ‘0’
ceA <= ‘1’ ; ceB <= ‘1’ceR <= ‘1’ ; dcB <= ‘0’rstR <= ‘1’ ; ready <= ‘0’
ceA <= ‘0’ ; ceB <= ‘0’ceR <= ‘0’ ; dcB <= ‘0’rstR <= ‘0’ ; ready <= ‘0’
ceA <= ‘0’ ; ceB <= ‘1’ceR <= ‘1’ ; dcB <= ‘1’rstR <= ‘0’ ; ready <= ‘0’
ceA <= ‘0’ ; ceB <= ‘0’ceR <= ‘0’ ; dcB <= ‘0’rstR <= ‘0’ ; ready <= ‘1’
Notaçãocom todosos sinaisexplícitos
Projeto-Exemplo: Multiplicador-v21. Especificação: multiplicador
(descrição textual ou verbal)
PCS3225 - 2018 49
Colocar multiplicando na via de dados de entrada ( IN );
Ativar o sinal ENTRA_MULTIPLICANDO;
Colocar multiplicador na via de dados de entrada;
Ativar o sinal ENTRA_MULTIPLICADOR;
Acionar o botão INICIAR para a execução da multiplicação binária;
Resultado é colocado na via de dados de saída (OUT) e READY é colocado em 1
Usar comando RESET para reinicializar sistema
RESET
READY
Projeto-Exemplo: Multiplicador-v2
2. Escolha do algoritmo: soma e deslocamento
x 1
x 0
x 1
x 1
PCS3225 - 2018 50
2. Escolha do algoritmo: soma e deslocamentoI. Produto parcial inicialmente em 0 (zero)
II. Um bit do multiplicador processado por vez, começando pelo bit
menos significativo
a) Se bit for 1: multiplicando somado a produto parcial; em
seguida deslocamento para a direita do produto parcial
b) Se bit for 0: deslocamento para a direita do produto parcial
c) O bit de vai-um (carry) do somador: armazenado e usado
como entrada do registrador-deslocador com o produto parcial;
d) Soma realizada apenas nos n bits mais significativos de
produto parcial.
e) Repetir até os 4 bits do multiplicador serem processados
PCS3225 - 2018 51
Projeto-Exemplo: Multiplicador-v2
2. Pseudocódigo: soma e deslocamentoint4 RA, RB; //RA: multiplicando, RB: multiplicador (assumindo já fornecidos)
int4 RPH, RPL = 0000; //RP: produto parcial (High e Low)
bit C = 0; //carry
for (cont = 4 ; cont > 0 ; cont--) {
//verifica bit menos significativo (lsb) de RB
if ( lsb(RB) == 1) { RPH += RA; C = Cout; }
else { C = 0; }
//deslocamento p/ direita, com entrada C
RPH || RPL = shiftRight (RPH || RPL, C);
//deslocamento p/ direita, com entrada qualquer
RB = shiftRight (RB, *);
}
// Neste ponto, temos Ready = 1
PCS3225 - 2018 52
Projeto-Exemplo: Multiplicador-v2
Cabe uma otimização aqui: RB = RPL
2. Pseudocódigo: soma e deslocamentoint4 RA, RB; //RA: multiplicando, RB: multiplicador (assumindo já fornecidos)
int4 RPH = 0000; //RPH: produto parcial (High); RPL = RB
bit C = 0; //carry
for (cont = 4 ; cont > 0 ; cont--) {
if ( lsb(RB) == 1) { RPH += RA; C = Cout; }
else { C = 0; }
RPH || RB = shiftRight (RPH || RB, C);
}
// Neste ponto, temos Ready = 1
PCS3225 - 2018 53
Projeto-Exemplo: Multiplicador-v2
Otimização : RB = RPL
Projeto-Exemplo: Multiplicador-v2
3. Diagrama ASM de alto nível
PCS3225 - 2018 54
ENTRA_MULTIPLICANDO (EM1):
carrega IN em registrador A
ENTRA_MULTIPLICANDOR (EM2):
carrega IN em registrador B
Acionar o botão INICIAR (INIT)
para a execução da multiplicação
binária
O resultado é colocado na via de
dados de saída (OUT).
Usar comando RESET (RST) para
reinicializar sistema
Idle
EM1
EM2
RST
INIT
RA <= IN
RB <= IN
RA , RB <= 0
Multiplica
Projeto-Exemplo: Multiplicador-v2
3. Diagrama ASM de alto nível
PCS3225 - 2018 55
int4 RA, RB; // (já fornecidos)
int4 RPH = 0000; //RP: produto parcial
bit C = 0; //carry
for (cont = 4 ; cont > 0 ; cont--) {
if ( lsb(RB) == 1) { RPH += RA; C = Cout; }
else{C = 0 ;}
RPH || RB = shiftRight (RPH || RB, C);
}
// Neste ponto, temos Ready = 1
RPH <= 0cont <= 4
Mul0
LSB(RB)
cont = 0
RPH <= RPH + RA
C <= Cout
C || RPH || RB >> 1cont --
0
1
0
Idle
(...)
Mul1
Mul2
1Ready <= 1
RA e RB fornecidos
C <= 0
Problema!
Projeto-Exemplo: Multiplicador-v2
3. Diagrama ASM de alto nível
PCS3225 - 2018 56
int4 RA, RB; // (já fornecidos)
int4 RPH = 0000; //RP: produto parcial
bit C = 0; //carry
for (cont = 4 ; cont > 0 ; cont--) {
if ( lsb(RB) == 1) { RPH += RA; C = Cout; }
else{C = 0 ;}
RPH || RB = shiftRight (RPH || RB, C);
}
// Neste ponto, temos Ready = 1
RPH <= 0cont <= 3
Mul0
LSB(RB)
cont = 0
RPH <= RPH + RA
C <= Cout
C || RPH || RB >> 1cont --
0
1
0
Idle
(...)
Mul1
Mul2
1Ready <= 1
RA e RB fornecidos
C <= 0
4. Elementos do fluxo de dados (FD)
PCS3225 - 2018 57
Projeto-Exemplo: Multiplicador-v2
Mult_UC
INICIAR
Mult_FD
IN
OUT
ENTRA_MULTIPLICANDO
ENTRA_MULTIPLICADOR
Ready
Sinais de controle
Sinais de condição
• 4. Elementos do fluxo de dados (FD)– Simplificação, assumindo RA e RB fornecidos – Solução completa incluiria MUXes adicionais (e.g., RB)
int4 RA, RB; // (já fornecidos)
int4 RPH = 0000; //RP: produto parcial
bit C = 0; //carry
for (cont = 4 ; cont > 0 ; cont--) {
if ( lsb(RB) == 1) { RPH += RA; C = Cout; }
else{C = 0 ;}
RPH || RB = shiftRight (RPH || RB, C);
} // Neste ponto, temos Ready = 1
Multiplicador
58
1. Registrador RA: 4 bits
3. Flip Flop
4. Contador decrescente
5. Detector de 0
5a. interconexões: somador <= (RPH, RA)RPH <= somador (paralela)C <= Cout (somador)
2. Registradores-DeslocadoresRB , RPH: : 4 bits
6. Somador
RPH, C: sinal de resetcont: inicialização em 45b. interconexões: RPH <= C (serial)
RB <= LSB(RPH) (serial)PCS3225 - 2018
Multiplicador
4. Fluxo deDados
PCS3225 - 2018 59
RPH
cont
RA
RB (=RPL)C
OUT
IN
ldCtr
zeroc
lsb
clrAldAclkA
clrCldCclkC
D
shiftPldPclkP
shiftBldBclkB
4 bits4 bits
4 bits 4 bits
4 bits 4 bits
1 bit
Multiplicador
5. FD: sinais de status e controle
PCS3225 - 2018 60
RPH
cont
RA
RB (=RPL)C
OUT
IN
zeroCtr
lsb
clrAldAclkA
clrCldCclkC
D
shiftPclrPldPclkP
shiftBclrBldBclkB
4 bits4 bits
4 bits 4 bits
4 bits 4 bits
1 bit
ldCtrenCtr
6. Detalhar ASM daunidade de controle
Multiplicador
PCS3225 - 2018 61
RPH <= 0cont <= 4
Mul0
LSB(RB)
cont = 0
RPH <= RPH + RA
C <= Cout
C || RPH || RB >> 1cont --
0
1
0
Idle
(...)
Mul1
Mul2
1Ready <= 1
RA e RB fornecidos
C <= 0
clrPldCtr
Mul0
lsb
zeroCtr
ldPldC
shiftP, shiftBenCtr
0
1
0
Idle
(...)
Mul1
Mul2
1Ready
RA e RB fornecidos
clrC
Notação: apenas
sinais em 1
6. Detalhar ASM daunidade de controle
Multiplicador
PCS3225 - 2018 62
RPH <= 0cont <= 4
Mul0
LSB(RB)
cont = 0
RPH <= RPH + RA
C <= Cout
C || RPH || RB >> 1cont --
0
1
0
Idle
(...)
Mul1
Mul2
1Ready <= 1
RA e RB fornecidos
C <= 0
clrPldCtr
Mul0
lsb
zeroCtr
ldPldC
shiftP, shiftBenCtr
0
1
0
Idle
(...)
Mul1
Mul2
1Ready
RA e RB fornecidos
clrC
Notação: apenas
sinais em 1
Multiplicador
7. Conexão de FD e UC
PCS3225 - 2018 63
Mult_UC
INICIAR
Mult_FD
IN
OUT
ENTRA_MULTIPLICANDO
ENTRA_MULTIPLICADOR
Ready
Sinais de controle
Sinais de condição
(lsb, zeroCtr)
(clrP , clrC , ldCtr, ldP, ldC, shiftP, shiftB, enCtr)
1 - Máximo Divisor Comum
• Circuito que calcula o máximo divisor comum de dois números inteiros positivos a e b.
PCS3225 - 2018 65
Máximodivisorcomum
a_en
b_en
inicio
clk
mdc
fim
Referência: D’Amore, VHDL: descrição e síntese de circuitos digitais, 2ª edição, 2012 . Capítulo 16.
1 - Máximo Divisor Comum
• Algoritmo de Euclides:
int a, b; //entradas
while ( a != b) {
if ( a > b) {a = a – b ; }
else {b = b – a ;}
}
mdc = a;
PCS3225 - 2018 66
Ex.: mdc (15,10)
67PCS3225 - 2018
Diagrama ASM de alto nível
fim ¬ 0a ¬ a_enb ¬ b_en
iniciar=1? não
espera
tes_a_b
sim
a ¹ b?
fim ¬ 1mdc ¬ a
não
a ¬ a - b
sim
a_igl_b
a_maior_b
a > b? sim não
b ¬ b - a
a_menor_b
Máximo Divisor Comum
• Vamos analisar:
– as operações executadas;
– os recursos necessários para realizá-las;
– as etapas necessárias para realizá-las.
PCS3225 - 2018 68
Máximo Divisor Comum
• Fluxo de dados
PCS3225 - 2018 75
sinais de status
s1
h1
s2
h2
x1
sinais de comando
saída
entradas
Máximo Divisor Comum
• Fluxo de dados eUnidade de controle
PCS3225 - 2018 76
diferente maior
unidade de controle
Máximo Divisor Comum
• Depois de definidos os módulos do fluxo de dados:
– devemos estabelecer a sequência de operações do conjunto (como o processamento será executado);
– responsabilidade da unidade de controle.
• O projeto completo define as :
– operações executadas: fluxo de dados; e
– mudanças de estados da máquina: unidade de controle.
PCS3225 - 2018 77
78PCS3225 - 2018
Diagrama ASM de alto nível
fim ¬ 0a ¬ a_enb ¬ b_en
iniciar=1? não
espera
tes_a_b
sim
a ¹ b?
fim ¬ 1mdc ¬ a
não
a ¬ a - b
sim
a_igl_b
a_maior_b
a > b? sim não
b ¬ b - a
a_menor_b
81PCS3225 - 2018
Diagrama ASM de alto nível
fim ¬ 0a ¬ a_enb ¬ b_en
iniciar=1? não
espera
tes_a_b
sim
a ¹ b?
fim ¬ 1mdc ¬ a
não
a ¬ a - b
sim
a_igl_b
a_maior_b
a > b? sim não
b ¬ b - a
a_menor_b
PCS3225 - 2018 82
h1h2
iniciar 0
espera
tes_a_b
1
diferente
fimx1
0
s1h1
1
a_igl_b
a_maior_b
maior 1 0
s2h2
a_menor_b
Diagrama ASM da Unidade de controle
2 - Raiz Inteira
• Projetar circuito de cálculo da raiz quadrada, baseado no algoritmo abaixo.
PCS3225 - 2018 84
DICA: veja vídeo em https://www.youtube.com/watch?v=38md9YNPee0
Raiz inteira
• Pseudocódigo e ASM de alto nível
– O projeto começa com a elaboração de um diagrama ASM de alto nível que modela o funcionamento do circuito;
– Considere um sinal de entrada go que inicia o cálculo da raiz quadrada;
– Como é este diagrama?
PCS3225 - 2018 86
sqrt
go
aresultado
Raiz inteira
• ASM de alto nível
PCS3225 - 2018 87
condições iniciaiscarrega entrada
go=1
square £ a
square += deltadelta += 2
resultado = delta/2 - 1
não
sim
nãosim
Raiz inteira• Fluxo de dados
–Como inicializar, com valores adequados, as variáveis square e delta?
PCS3225 - 2018 92
Raiz inteira
• Unidade de controle
– A unidade de controle pode ser projetada a partir de um diagrama de transição de estados;
– Considere um sinal de entrada go que inicia o cálculo da raiz quadrada;
– Como é este diagrama?
PCS3225 - 2018 93
sqrt
go
aresultado
PCS3225 - 2018 94
condições iniciaiscarrega entrada
go=1
square £ a
square += deltadelta += 2
resultado = delta/2 - 1
não
sim
nãosim
Máximo Divisor Comum
• Codificação em VHDL
– Descrição comportamental.
– Observação: o autor da referência adota o estilo de codificação de máquina de estados usando apenas 1 processo.
PCS3225 - 2018 97