Metodologia de Projeto com Dispositivos...
Transcript of Metodologia de Projeto com Dispositivos...
EPUSP — PCS 2308 — Laboratório Digital II
Metodologia de Projeto com Dispositivos Programáveis – semestral (2015) 1
RESUMO Esta experiência tem como objetivo a familiarização com uma metodologia de projeto de circuitos digitais
com dispositivos programáveis. O projeto de um sistema digital realizado através de uma sequência
organizada de etapas é exemplificado através de um circuito exemplo a ser desenvolvido nesta experiência.
O circuito é sintetizado em uma placa de desenvolvimento com uma FPGA Cyclone II da Altera.
OBJETIVOS
Após a conclusão desta experiência, os seguintes tópicos devem ser conhecidos pelos alunos:
Familiarização com uma metodologia de projeto de circuitos digitais síncronos;
Experimentação em um dispositivo programável; Desenvolvimento estruturado.
1. PARTE TEÓRICA
1.1. Conceituação de um Sistema Digital
Atualmente, os sistemas digitais estão amplamente difundidos em (quase) todos os lugares. Temos a
presença de sistemas digitais nos celulares que carregamos aonde vamos, no forno de micro-ondas na
cozinha de casa ou no escritório, e nos próprios tablets, notebooks ou computadores desktop onde editamos
nossos relatórios1. Outros exemplos mais “desconhecidos pelo público leigo”2 incluem os
microcontroladores que são responsáveis pelo sistema de controle de tração e pelos freios ABS de um carro
moderno ou o sistema de controle dos carros autônomos em desenvolvimento pela Google. Tais sistemas
digitais são sistemas complexos e o desenvolvimento desses sistemas envolve uma série de atividades que
devem seguir uma metodologia, que contém uma sequência de atividades de forma a tratar esta
complexidade de forma sistemática.
Um sistema digital (SD) é um sistema com entradas e saídas, como qualquer outro sistema real (fig.1). O
fato que diferencia um SD de outros diz respeito ao tipo de dados de entrada e de saída que são
manipulados: os dados são digitais, ou seja, são representados por um conjunto finito de sinais binários e
discretos.
Figura 1 – Sistema digital geral.
Quando há a necessidade de tratar informações e/ou dados ou gerar sinais de saída em formato analógico,
um processo de conversão de sinais deve ser adicionado nas extremidades do SD. Por exemplo, um sinal
1 Ou os planejamentos do Laboratório Digital. 2 “Desconhecidos” pelo menos para a maioria das pessoas, que não tem conhecimento técnico ou experiência na área de projeto de sistemas digitais.
Metodologia de Projeto com Dispositivos
Programáveis
Versão 2015
EPUSP — PCS 2308 — Laboratório Digital II
Metodologia de Projeto com Dispositivos Programáveis – semestral (2015) 2
de entrada analógico é convertido para o formato digital com auxílio de um conversor analógico/digital. O
processo inverso é realizado por um conversor digital/analógico. A figura 2 ilustra o posicionamento dos
conversores de sinais.
Figura 2 – Conversões entre sinais analógicos e sinais digitais.
1.2. Projeto de Sistemas Digitais
Tradicionalmente, um SD era projetado como um sistema único e usando-se componentes discretos SSI e
MSI com circuitos integrados TTL [Fregni & Saraiva, 1995] [Morris & Miller, 1978]. O desenvolvimento de
circuitos digitais era baseado em um diagrama de circuitos conhecido como captura esquemática (fig.3).
Figura 3 – Exemplo de projeto de circuito digital com captura esquemática.
Com a evolução e o aumento da complexidade de sistemas digitais, esta metodologia tradicional se mostrou
limitada e novas estratégias tiveram de ser desenvolvidas. O projeto hierárquico foi uma forma de tratar a
complexidade dos circuitos grandes, com a divisão do circuito em blocos ou módulos menores que são
projetados em separado e depois interligados para compor o sistema completo (fig.4).
Figura 4 – Exemplo de projeto hierárquico de sistemas digitais.
EPUSP — PCS 2308 — Laboratório Digital II
Metodologia de Projeto com Dispositivos Programáveis – semestral (2015) 3
Cada bloco em um projeto hierárquico é um subprojeto que também possui um diagrama de captura
esquemática. Esta hierarquia pode conter vários níveis, até que a complexidade de um bloco seja adequada
para um projeto tradicional usando componentes digitais básicos.
Apesar da definição de estratégias de particionamento de circuitos como forma de gerenciamento de
complexidade, projetistas menos experientes mostravam muita dificuldade para projetar circuitos muito
complexos. Esta dificuldade se refere principalmente ao desenvolvimento e depuração de circuitos de
controle e de sincronização de seus sinais de controle. Torna-se importante então a aplicação de estratégias
específicas para o projeto de circuitos digitais não-triviais. Por exemplo, para o projeto de circuitos de
controle, a literatura mostra uma série de ferramentas para a especificação, modelagem e
desenvolvimento: diagramas de transição de estados [Wakerly, 2006], statecharts [Harel, 1987] e
diagramas ASM [Givone, 2003] [Mano & Kime, 2000], entre outros. Estas ferramentas auxiliam o projetista
no desenvolvimento de circuitos sequenciais, facilitando o teste e, depois, a verificação da corretude do
circuito projetado.
A aplicação de estratégias de auxílio ao projeto de sistemas digitais complexos é independente da forma
como o circuito digital é desenvolvido. Antes da década de 1980, a captura esquemática foi muito difundida
e ferramentas de software eram utilizadas pelos projetistas para o projeto e documentação, as chamadas
ferramentas de CAD (computer-aided design) ou, como é conhecida mais atualmente, de EDA (electronic
design automation).
Nos anos 80, a utilização de linguagens de descrição de hardware (HDL – hardware description language)
se difundiu e começou a se tornar uma alternativa para o projeto de circuitos. As padronizações das
linguagens VHDL em 1987 (IEEE Standard 1076-1987) e Verilog em 1995 (IEEE Standard 1364-1995)
permitiram o uso destas linguagens de forma universal, desde a especificação de sistemas até a etapa de
síntese de circuitos integrados.
As linguagens de descrição de hardware se caracterizam pelo uso de uma descrição textual de sistemas
digitais e um conjunto de ferramentas para a análise e síntese de circuitos. A figura 5 abaixo apresenta um
trecho da descrição de um processador de 32 bits na linguagem SystemVerilog.
Figura 5 – Trecho da descrição em linguagem SystemVerilog de um processador de 32 bits.
(extraído de [Harris & Harris, 2013]).
Atualmente várias outras linguagens de descrição de hardware estão disponíveis, incluindo várias
características, inclusive extensões para suporte a sinais analógicos (analog and mixed-signal extensions),
como por exemplo, o VHDL-AMS, Verilog-A e Verilog-AMS. Para suporte a projetos em alto nível, ou seja,
em nível de sistema (system-level modelling), tem-se a linguagem SystemC (IEEE Standard 1666-2005).
Já a linguagem SystemVerilog (IEEE Standard 1800-2005) inclui também suporte à verificação de projetos.
As seções a seguir apresentam uma metodologia de projeto de sistemas digitais não-triviais com a
apresentação de estratégias específicas. Estas estratégias são independentes da forma como o circuito é
implementado, seja na forma de esquemáticos ou com uso de HDLs. Para ilustrar os conceitos, é
desenvolvido um projeto exemplo.
EPUSP — PCS 2308 — Laboratório Digital II
Metodologia de Projeto com Dispositivos Programáveis – semestral (2015) 4
1.3. Particionamento de Sistemas Digitais
Para gerenciar a complexidade do projeto de um sistema digital não trivial, convém adotar uma estratégia
do tipo “dividir para conquistar” (divide and conquer), onde um sistema é organizado como um conjunto
de subsistemas menores interligados entre si. O projeto de um sistema digital pode ser organizado, em um
primeiro nível, particionando o SD em duas partes com funções distintas: o Fluxo de dados (FD) e a Unidade
de controle (UC). O fluxo de dados compreende a parte do circuito responsável pela manipulação,
processamento, armazenamento e geração de dados. A unidade de controle é responsável pelo
sequenciamento das operações executadas no fluxo de dados, de forma a garantir o correto funcionamento
do circuito. A figura 6 mostra um diagrama com a estruturação interna detalhada do SD, onde são
apresentadas as duas partes principais e os sinais internos para interconexão entre elas.
Figura 6 – Estruturação interna de um sistema digital.
Os sinais de entrada de dados são ligados ao fluxo de dados, que também gera os sinais de saída (de
dados). Os sinais de estado (ou sinais de condição) indicam a condição atual dos dados armazenados no
fluxo de dados e incluem sinais que apresentam o valor atual de um determinado registrador, a saída de
um comparador e a detecção de uma condição em particular.
Os sinais de estado do fluxo de dados e os sinais de entrada de controle são os responsáveis pela execução
da unidade de controle. Um sinal de entrada de controle é um sinal que aciona a execução de um comando
pelo SD (p.ex. uma entrada INICIAR usado para acionar a execução de um sistema). Normalmente a
unidade de controle é modelada usando um circuito sequencial através de uma máquina de estados finita.
A saída da unidade de controle são sinais de controle para os componentes do fluxo de dados, como por
exemplo, a seleção de função de uma ULA, a habilitação de um contador ou a habilitação de um circuito
de um banco de registradores. Opcionalmente, a unidade de controle também pode gerar alguns sinais de
saída. Por exemplo, é conveniente gerar como saída uma identificação do estado atual da máquina de
estados finitos para ser usada para a depuração do circuito. Outro exemplo de sinal de saída de controle é
indicar o término da execução de uma operação (sinal FIM).
Esta organização de sistemas digitais pode ser aplicada em sistemas embarcados [Flynn & Luk, 2011],
como por exemplo, em um sistema de controle automotivo, ou em modernos processadores multicore
[Patterson & Hennessy, 2009][Harris & Harris, 2013].
1.3.1. Projeto do fluxo de dados
O fluxo de dados deve ser projetado como um circuito digital no nível de transferência de registradores.
Um sistema é dito estar no nível de transferência de registradores (RTL – register transfer level) se as
informações fluírem pelo circuito através de componentes de memória ou registro de dados (registradores).
À medida que os dados fluem pelo circuito, estes podem ser manipulados por blocos combinatórios
implementando uma determinada lógica (fig.7).
O circuito descrito na figura 7 é basicamente um circuito sequencial síncrono, onde um sinal global de
relógio (clock) gerencia o fluxo de informações pelo sistema digital. O bloco de lógica combinatória pode
incluir um circuito com portas lógicas ou outros componentes mais complexos, como, multiplexadores,
decodificadores, ULAs, etc. Já os módulos registradores incluem registradores, propriamente ditos, ou
simplesmente flip-flops ou ainda registradores de deslocamento.
EPUSP — PCS 2308 — Laboratório Digital II
Metodologia de Projeto com Dispositivos Programáveis – semestral (2015) 5
Figura 7 – Estrutura de um circuito no nível RTL.
A identificação dos componentes do fluxo de dados pode ser feita a partir do algoritmo ou descrição
detalhada do funcionamento do circuito digital. A partir da identificação dos componentes (por exemplo,
contador), pode-se verificar quais operações são executadas por estes componentes (por exemplo, zerar,
incrementar, reiniciar, carregar novo valor, etc).
Um circuito no nível RTL é estruturado como um conjunto de caminhos para o fluxo de informações pelo
sistema digital completo. A ordenação correta e o processamento específico são determinados pela unidade
de controle que aciona os sinais de controle dos vários componentes combinatórios do fluxo de dados (por
exemplo, função da ULA) e também dos elementos registradores (por exemplo, habilitação da saída tri-
state de um registrador).
Os recursos disponíveis no fluxo de dados implementam funções diferentes no hardware [de Micheli, 1994],
que podem ser classificados em:
Os recursos funcionais processam dados. Eles implementam funções aritméticas ou lógicas e podem
ser agrupadas em duas subclasses. A primeira são os recursos primitivos que foram projetados
cuidadosamente uma vez e usados frequentemente. São exemplos desta classe as unidades lógicas e
aritméticas e as funções lógicas padrão, como os codificadores e decodificadores. A segunda classe
inclui recursos específicos da aplicação, pois incorporam circuitos que executam uma tarefa particular.
Um exemplo desta classe é o circuito de tratamento de interrupções de um processador.
Os recursos de memória armazenam dados. São exemplos os registradores e as memórias EPROM e
RAM. O requisito para armazenar informação é importante no sequenciamento de operações de um
sistema digital.
Os recursos de interface realizam a transferência de dados. Estes recursos incluem as vias de dados e
os multiplexadores que compõem um meio de comunicação essencial em um fluxo de dados. Interfaces
com circuitos externos incluem ainda pinos de E/S e circuitos de interfaceamento.
1.3.2. Projeto da unidade de controle
A unidade de controle deve organizar o funcionamento correto do sistema digital garantindo o correto
sequenciamento de operações realizadas pelo fluxo de dados. Uma forma para desenvolver a unidade de
controle é a partir de um diagrama de transição de estados ou do diagrama ASM correspondente. Uma
forma de implementação da unidade de controle é projetar o circuito que implementa o diagrama de
transição de estados. A figura 8 ilustra com um exemplo.
Figura 8 – Diagrama de transição de estados de uma unidade de controle.
EPUSP — PCS 2308 — Laboratório Digital II
Metodologia de Projeto com Dispositivos Programáveis – semestral (2015) 6
1.4. Etapas da Metodologia de Projeto de Sistemas Digitais
A metodologia de projeto de sistemas digitais não triviais proposto neste documento possui sete etapas:
1. Escrever uma descrição verbal do sistema;
2. Desenvolver um pseudo-código do funcionamento;
3. Elaborar um diagrama ASM de alto nível;
4. Selecionar os elementos do fluxo de dados para as operações;
5. Identificar sinais de estado e de controle do fluxo de dados;
6. Verificar conexão do fluxo de dados e da unidade de controle;
7. Elaborar diagrama ASM da unidade de controle.
O desenvolvimento do projeto inicia com a escrita da especificação do sistema digital, através de uma
descrição verbal do sistema. Esta descrição em linguagem natural deve apresentar as funcionalidades a
serem implementadas e possíveis restrições.
A leitura e interpretação da descrição verbal do sistema são usadas para a geração de uma forma
algorítmica do funcionamento do sistema. Assim, na segunda etapa, gera-se um pseudo-código com o
algoritmo do sistema digital. Este pseudo-código usa os comandos básicos usados na descrição de
algoritmos, como comandos em sequência, comandos de decisão, comparações e estruturas em laço. Deve-
se evitar o uso de estruturas complexas como o uso de recursão.
Em seguida, a partir do pseudo-código obtido, a metodologia gera um diagrama abstrato que modela o
comportamento descrito. Este diagrama, chamado diagrama ASM de alto nível, contém os elementos
de um diagrama ASM convencional, mas inclui comandos e testes em linguagem natural. Esta etapa visa
gerar uma primeira descrição mais formal ou abstrata do sistema em desenvolvimento.
De posse do pseudo-código e do diagrama ASM de alto nível, é possível identificar os principais elementos
do fluxo de dados. As variáveis identificadas no algoritmo podem ser implementadas usando
registradores. As operações sobre estas variáveis podem ser projetadas com unidades funcionais
combinatórias, como somadores, ULAs, codificadores ou outro circuito combinatório específico. As trocas
de informações entre variáveis formam o sistema de transferência de dados descrito na seção 1.3.1. Este
sistema pode ser realizado como uma via de dados tri-state ou por um sistema de transferência de dados
com uma rede de multiplexadores.
A quinta etapa pode ser executada pela definição dos sinais de controle que acionam os elementos do
fluxo de dados. Por exemplo, a saída de um multiplexador depende do valor de sua entrada de seleção e
uma ULA depende das entradas de seleção de função. Um registrador de deslocamento pode precisar de
vários sinais de controle para zerar seu conteúdo, deslocar os bits para a direita e carregar outro valor
pelas entradas paralelas. Os sinais de estado são identificados pelos blocos de decisão do diagrama ASM.
Assim, bits de um registrador podem ser usados para verificar o conteúdo de um dado ou a saída de um
comparador de magnitude pode identificar uma condição para o término de execução de uma operação.
Com a definição dos elementos do fluxo de dados e do comportamento da unidade de controle, pode-se
prosseguir para uma primeira versão da microarquitetura do sistema digital com a obtenção da estrutura
interna que contém a conexão do fluxo de dados e da unidade de controle. Esta estrutura é uma
primeira aproximação do projeto final. Devem ser incluídos os elementos do fluxo de dados, o bloco da
unidade de controle e os sinais de controle e de estados interligando ambos os blocos.
Finalmente, de posse dos sinais de controle e de estados, o diagrama ASM de alto nível pode ser detalhado
para gerar o diagrama ASM da unidade de controle com estes sinais para acionar o fluxo de dados e
testar as condições de estado. Cabe lembrar aqui que um diagrama ASM adota, como padrão, sinais ativos
em ALTO e os blocos de estado e de saída condicional indicam apenas aqueles sinais de saída que devem
ser ativados.
1.4.1. Observação importante
Um ponto importante que devemos ressaltar é com os elementos sensíveis a borda do clock. Considere um
contador normalmente acionado por uma borda da entrada do sinal de clock. Assim um projetista poderia
considerar a entrada de clock deste contador como um sinal de controle deste elemento do fluxo de dados.
Contudo isto vai de encontro com a estrutura RTL definida na seção 1.3.1 onde todos os elementos devem
compartilhar de um mesmo sinal de relógio. Desta forma, elementos sensíveis a borda de clock devem ser
acionados por um sinal de habilitação de função, ao invés do próprio sinal de relógio.
EPUSP — PCS 2308 — Laboratório Digital II
Metodologia de Projeto com Dispositivos Programáveis – semestral (2015) 7
Vejamos um exemplo concreto: considere um deslocador que precisa das funções de atualização do
conteúdo atual e de carga de um valor inicial. Os sinais de controle que devemos adotar são aqueles que
especificam o deslocamento do conteúdo e a carga do valor da entrada paralela. Para isto usaremos o
circuito integrado 74165, cuja pinagem e tabela funcional de seus sinais de função são apresentadas na
figura 9.
Figura 9 – Deslocador integrado 74165 (fonte: Texas Instruments).
A operação de deslocamento no 74165 depende de três sinais de entrada: o sinal SHIFT/LOAD̅̅ ̅̅ ̅̅ ̅̅ ̅ deve ser
igual a 1, CLOCK_INHIBIT deve ser igual a 0 e é necessário haver a borda de subida do CLOCK. Já a carga
do valor de entrada paralela depende apenas do sinal SHIFT/LOAD̅̅ ̅̅ ̅̅ ̅̅ ̅ ser igual ao valor 0.
Assim, de forma a usar sinais de controle ativos em 1 é necessário projetar um circuito adicional para
acionar os pinos de controle do circuito integrado. Este circuito adicional deve seguir os valores abaixo.
CARGA DESLOCA SHIFT/LOAD CLOCK_INHIBIT FUNÇÃO
0 0 1 1 Mantém valor interno
0 1 1 0 Desloca para a direita
1 0 0 X Carrega valor paralelo
1 1 1 1 Erro (mantém valor)
Finalmente, o diagrama lógico da figura 10 mostra o circuito com o deslocador 74165 que contém os sinais
de controle ativos em 1, conforme solicitado pela metodologia.
Figura 10 – Diagrama lógico do elemento deslocador com comandos de carga e deslocamento.
EPUSP — PCS 2308 — Laboratório Digital II
Metodologia de Projeto com Dispositivos Programáveis – semestral (2015) 8
1.5. Desenvolvimento de um Projeto Exemplo
Para ilustrar os conceitos apresentados, vamos desenvolver um projeto exemplo aplicando a metodologia
de projeto a ser adotada nos projetos do Laboratório Digital. A cada etapa, busca-se explicar as decisões
de projeto tomadas e os resultados obtidos.
1.5.1. Descrição verbal do projeto
A especificação do funcionamento do circuito é apresentada abaixo:
“Projetar um sistema digital (SD) que seja responsável pelo armazenamento de dois números de
4 bits, que serão introduzidos através de uma única entrada de dados. Após a introdução inicial
de um ou mais valores, o SD deve disponibilizar os números armazenados, um de cada vez, em
uma única saída de dados. Para o armazenamento dos números e posterior apresentação, são
disponíveis sinais de comando. Tanto o armazenamento quanto a apresentação dos dados devem
ocorrer sincronamente com o sinal de relógio”.
A interface do projeto exemplo é ilustrado na figura 11. O sistema digital exemplo tem cinco sinais de
entrada3 e um sinal de saída [Menezes et all, 2011][Ranzini et all, 2002]:
• IN[1..4] – entrada de dados de quatro bits;
• N1 – sinal para armazenar o primeiro valor de quatro bits presente na entrada IN;
• N2 – sinal para armazenar o segundo valor de quatro bits presente na entrada IN;
• M1 – sinal para apresentar na saída de dados OUT o primeiro valor armazenado;
• M2 – sinal para apresentar o na saída de dados OUT o segundo valor armazenado;
• OUT[1..4] – saída de dados de quatro bits.
Figura 11 – Interface de entrada e saída do projeto exemplo.
O sistema digital deve armazenar dois números de 4 bits internamente, que depois podem ser apresentados
na saída OUT. Para que o primeiro número seja armazenado no sistema, ele deve ser colocado na entrada
de dados IN e o sinal N1 deve ser ativado. De maneira análoga, o segundo número é armazenado quando
o mesmo é colocado na entrada IN e o sinal N2 é ativado. Para mostrar cada um destes números na saída
OUT, os sinais M1 ou M2 devem ser acionados. Caso seja acionado M1, a saída OUT deverá mostrar o
primeiro número. Caso seja acionado M2, a saída OUT deverá mostrar o segundo número.
A interpretação da especificação acima do SD nos leva a concluir que os sinais M1 e M2 devem ser ignorados
enquanto, pelo menos, um número não for armazenado. Outra conclusão é a de que podem ser
armazenados mais de dois números antes de se ativar, pela primeira vez, o sinal de apresentação de
número na saída.
Convém ressaltar que todos os sinais de controle são definidos como ativos em alto, ou seja, para acioná-
los, deve-se colocar um valor lógico ALTO ou 1.
3 Cinco sinais de entrada, exceto os sinais de relógio (CLOCK) e de reinício (RESET), presentes normalmente em sistemas digitais síncronos.
SISTEMADIGITAL
EXEMPLO
IN[1..4]
OUT[1..4]
N1
N2
M1
M2
CLOCK
RESET
EPUSP — PCS 2308 — Laboratório Digital II
Metodologia de Projeto com Dispositivos Programáveis – semestral (2015) 9
1.5.2. Elaboração do pseudo-código
A partir da interpretação da especificação do projeto exemplo, pode-se elaborar um pseudo-código abaixo
que descreve o funcionamento lógico do circuito (figura 12).
1 // condições iniciais
2 R1 := 0;
3 R2 := 0;
4 R3 := 0;
5 // entrada inicial de dados
6 repeat
7 if (N1 = 1) R1 := IN; break
8 else if (N2 = 1) R2 := IN; break;
9 until (false);
10 // processar sinais N1, N2, M1 e M2
11 repeat
12 if (N1 = 1) R1 := IN;
13 else if (M1 = 1) R3 := R1;
14 else if (N2 = 1) R2 := IN;
15 else if (M2 = 1) R3 := R2;
16 until (false);
Figura 12 – Pseudo-código do exemplo.
As primeiras três linhas do pseudo-código mostram a condição inicial dos registradores. As linhas 5 a 9
mostram a entrada inicial dos dados, com a verificação dos sinais de entrada N1 e N2. Caso um destes
sinais seja ativado, o respectivo registrador armazena o valor presente na entrada IN. Pode-se notar aqui
que os sinais de comando M1 e M2 são ignorados neste ponto, conforme foi especificado na descrição
verbal do projeto. As linhas 10 a 16 descrevem o comportamento do circuito a ser projetado com a
execução dos comandos de armazenamento e de apresentação de dados na saída.
Esta etapa é importante, pois a metodologia se baseia no pseudo-código gerado para a realização do
projeto do sistema digital. Se houver a necessidade de alterar alguma instrução do pseudo-código, será
preciso reexecutar as demais etapas.
1.5.3. Criação do diagrama ASM de alto nível
O diagrama ASM de alto nível correspondente ao funcionamento do circuito descrito pelo pseudo-código da
figura 12 pode ser elaborado tendo-se em conta a estrutura de controle e o sequenciamento de operações
a serem executadas. A figura 13 apresenta o diagrama resultante desta etapa da metodologia.
Figura 13 – Diagrama ASM de alto nível para o projeto exemplo.
EPUSP — PCS 2308 — Laboratório Digital II
Metodologia de Projeto com Dispositivos Programáveis – semestral (2015) 10
O diagrama ASM de alto nível contém comandos escritos com palavras, ao invés de sinais de controle. Por
exemplo, no estado S1, a ação tomada é “copiar o valor na entrada IN para o primeiro registrador”. Este
estado está relacionado com o comando da linha 6 do pseudo-código. Podemos observar também a
característica da entrada inicial dos dados descrita nas linhas 4 a 8, com a estrutura de laço (“loop”) das
transições a partir do estado S0 quando os sinais N1 e N2 não são acionados.
Os estados S1 a S5 estão relacionados com o tratamento dos comandos de armazenamento de dados (S1
e S2) e dos comandos de apresentação dos dados nos registradores na saída (S4 e S5). Enquanto nenhum
dos comandos for acionado, o circuito permanece no estado S3.
1.5.4. Identificar e selecionar os elementos do fluxo de dados
Aqui passamos a definir que componentes serão parte do circuito digital. Analisando o pseudo-código,
vemos que precisaremos de três registradores de 4 bits para armazenar e apresentar os números (R1, R2
e R3). Os dados de entrada IN são copiados para R1 e R2, e posteriormente, valores em R1 e R2 podem
ser copiados para R3. Este comportamento pode ser implementado pelo circuito da figura 14.
Figura 14 – Esquema do fluxo de dados do projeto exemplo.
Os sinais de entrada IN são ligados diretamente aos registradores R1 e R2. As saídas destes registradores
são conectadas na entrada de um multiplexador 2x1. E a saída deste multiplexador é ligada na entrada do
registrador R3. Finalmente, a saída de R3 é ligada no sinal de saída OUT.
1.5.5. Identificar sinais de estado e de controle do fluxo de dados
Nesta etapa detalhamos os componentes identificados anteriormente com a definição dos sinais de estado
e de controle. Observe, assim, que os sinais de controle necessários para controlar (ou acionar) a operação
dos componentes do fluxo de dados são para a reinicialização dos registradores (CLR1, CLR2 e CLR3), para
o controle do armazenamento dos dados nos registradores (EN1, EN2 e EN3) e para a seleção de entrada
do multiplexador (SEL).
Neste projeto em particular, não há nenhum sinal de estado do fluxo de dados que é usado como sinal de
entrada na unidade de controle. Isto pode ser verificado nos blocos decisão do diagrama ASM da figura 13:
apenas os sinais de entrada N1, N2, M1 e M2 são usados para verificar as condições de decisão.
1.5.6. Verificar a conexão de sinais entre o fluxo de dados e a unidade de controle
Com a definição dos sinais internos do projeto (sinais de controle e de estado), podemos visualizar como
os blocos internos do projeto se conectam. Isto é mostrado na figura 15. Observe que o sinal de relógio é
ligado em ambos os blocos, porque o sistema digital é um circuito síncrono.
R2
R1
MU
X2
X1
R3 OUT[1..4]
IN[1..4]
CLOCK
EN3
CLR3
EN2
CLR2
EN1
CLR1
SEL
0
1
EPUSP — PCS 2308 — Laboratório Digital II
Metodologia de Projeto com Dispositivos Programáveis – semestral (2015) 11
Figura 15 – Particionamento do projeto exemplo.
Na figura 15 temos a ligação interna dos sinais de entrada de dados (sinal IN) para o fluxo de dados e dos
sinais de entrada de comandos (sinais N1, N2, M1, M2 e RESET) para a unidade de controle. Os sinais de
controle são responsáveis pelo controle dos registradores internos (sinais EN1, CLR1, EN2, CLR2, EN3 e
CLR3) e do multiplexador (sinal SEL) do fluxo de dados. E a saída OUT é gerada também pelo fluxo de
dados.
1.5.7. Detalhar o diagrama ASM da unidade de controle
Com as informações obtidas até aqui, podemos agora substituir os comandos em linguagem verbal do
diagrama ASM de alto nível para os sinais de controle e de estado.
O diagrama ASM da unidade de controle é gerado com a especificação direta dos sinais de controle e dos
sinais de estado. Neste caso, os blocos de estado contêm os sinais de controle que devem ser ativados no
estado correspondente e os blocos de condição testam o valor do sinal de estado. A figura 16 mostra o
diagrama ASM da unidade de controle do projeto exemplo.
Figura 16 – Diagrama ASM do projeto exemplo.
CLR1CLR2CLR3
N1 N2
EN1
EN2
N1 M1 N2 M2
EN3 SEL
S0
S1
S2
S3
S4 S5
SELEN3
1 0 0
0 0 0 0
11
1
1
S6
EPUSP — PCS 2308 — Laboratório Digital II
Metodologia de Projeto com Dispositivos Programáveis – semestral (2015) 12
Note que o estado S5 do primeiro diagrama ASM precisou ser dividido em dois estados (S5 e S6) no
diagrama ASM final, por causa dos requisitos de tempo do registrador R3 (tempo de preparação ou setup
time). A razão disto é que, para copiar o conteúdo de R2 para R3, a entrada 1 do multiplexador deve ser
selecionado para, posteriormente, o registrador R3 armazenar sua saída. Assim, antes de copiar o dado
para o registrador R3, é necessário acrescentar um estado anterior para selecionar a entrada correta do
multiplexador. Isto não é necessário para o estado S4 porque o sinal SEL já tem o valor necessário em S3.
Assim, o multiplexador já tem o valor correto na sua saída e o registrador R3 pode armazenar o valor de
sua entrada no estado S4.
1.5.8. Considerações
Descrevemos aqui um método sistemático com etapas determinadas, que tem como objetivo organizar as
ideias do projetista de circuitos digitais. O resultado final desta metodologia é a estruturação e definição
da microarquitetura do sistema.
A seguir, passamos a trabalhar alguns aspectos da implementação do circuito em uma plataforma de lógica
programável.
1.6. Aspectos de Implementação
Aqui, nesta seção, detalhamos a implementação do projeto do fluxo de dados e da unidade de controle.
1.6.1. Implementação do fluxo de dados
A implementação do fluxo de dados pode ser realizada usando componentes MSI da família 74xxx. Desta
forma, considerando-se o circuito integrado 74173 para ser usado para os componentes R1, R2 e R3 e o
circuito integrado 74157 para o componente MUX2x1, podemos desenvolver o diagrama esquemático da
figura 17.
Figura 17 – Diagrama esquemático do fluxo de dados do projeto exemplo.
Observe que como o projeto considera todos os sinais de controle como ativos em alto, há a necessidade
da inversão dos sinais de habilitação dos registradores (EN1, EN2 e EN3) para a controle dos componentes
74173.
Como consideração adicional, temos um comentário sobre a escolha do registrador 74173: embora uma
característica deste componente seja sua saída tri-state, ele também dispõe de sinais de controle para o
armazenamento de dados (sinais G1N e G2N). Isto faz com que os sinais de controle gerados pela Unidade
de Controle sejam ligados “diretamente” nestes pinos do componente. Outras alternativas para este
componente talvez exigiriam mudanças no projeto ou circuitos complementares.
Uma vez desenvolvido o fluxo de dados, é possível partir para o projeto da unidade de controle, responsável
pelo acionamento correto dos sinais de controle.
EPUSP — PCS 2308 — Laboratório Digital II
Metodologia de Projeto com Dispositivos Programáveis – semestral (2015) 13
1.6.1. Implementação da unidade de controle
A unidade de controle deve ser desenvolvida tendo como base o diagrama ASM desenvolvido (conforme a
figura 16). A implementação da unidade de controle pode ser realizada de várias formas. A primeira
alternativa selecionada aqui é usar a linguagem de descrição de hardware AHDL (Altera HDL), como
mostrado na figura 18.
Figura 18 – Código AHDL da unidade de controle.
Convém destacar que, além dos sinais de controle e de estado do projeto exemplo, foram acrescentados
no código AHDL acima três sinais de saída, E1, E2 e E3. Estes sinais identificam o estado atual da máquina
de estados e são importantes no acompanhamento e depuração da execução da unidade de controle e
devem ser usados na depuração do circuito.
EPUSP — PCS 2308 — Laboratório Digital II
Metodologia de Projeto com Dispositivos Programáveis – semestral (2015) 14
A linguagem AHDL permite várias alternativas para designar os estados [MENEZES et al., 2002].
Adotaremos a designação de cada estado pelo valor das saídas da UC, que devem ser geradas em cada
estado. Por exemplo, o estado S0 será caracterizado como sendo aquele em que: CLR1=1, CLR2=1,
CLR3=1, EN1=0, EN2=0, EN3=0, SEL=0, E3=0, E2=0 e E1=0.
Uma vez caracterizados os estados, é necessário descrever as transições entre os mesmos, ou seja,
descrever o diagrama ASM através de uma tabela de transições. Também há alternativas, em função da
estratégia adotada na construção do ASM (Mealy ou Moore). Adotou-se aqui a máquina de Moore.
As construções desta linguagem formam as seções do arquivo texto, a saber:
a) denominação do projeto – nesta seção, iniciada pela palavra SUBDESIGN, é especificado o nome do
projeto, que deverá ser o mesmo declarado no início da descrição da UC.
b) declaração de entradas e saídas – nesta seção, delimitada por parênteses, são declarados todos os
sinais de entrada e de saída do diagrama. As declarações de entradas são finalizadas por :INPUT; e
as de saída por :OUTPUT; .
c) denominação dos estados – nesta seção, iniciada pela palavra VARIABLE, os estados do diagrama
ASM são definidos em função das saídas da UC. Primeiramente deve ser descrita a ordem dos bits que
definirão cada estado. Isto é feito através da seguinte sentença:
UC: MACHINE OF BITS (........) WITH STATES
Entre parênteses devem ser colocados os nomes das saídas do diagrama. Por exemplo, para o diagrama
da figura 19:
(CLR1, CLR2, CLR3, EN1, EN2, EN3, SEL, E3, E2, E1)
Em seguida, cada um dos estados deve ser descrito em função das saídas do diagrama, de acordo com a
ordem estabelecida na construção anterior. Isto é feito da seguinte maneira:
(nome_do_estado = B'valores_das_saídas',);
Para a descrição da figura 18, o estado S0 seria descrito como S0=B'1110000000'.
d) declaração da máquina de estados – nesta seção, delimitada pelas palavras BEGIN e END; são
descritos os sinais de controle CLK e RESET da máquina de estados representada pelo diagrama ASM
e a tabela de transições de estados. Esta tabela é feita baseada nos caminhos existentes entre cada
um dos estados do mesmo, em função das entradas a eles associadas (caso existam), e deve ser
delimitada pelas palavras TABLE e END TABLE;. Por exemplo, na figura 18, para que a UC passe do
estado S0 para o estado S1, é necessário que N1=1 e independente do valor de N2, M1 e M2. Portanto,
a linha que representa este caminho é:
S0, 1,X,X,X => S1;
Para uma plataforma de lógica programável, o uso de linguagens de descrição de hardware é sempre uma alternativa interessante. Assim, implementações alternativas em VHDL ou Verilog são viáveis. Contudo, a implementação de uma unidade de controle nestas linguagens requer conhecimento de técnicas de descrição de máquinas de estados. Outra forma para a implementação da unidade de controle é através do uso de um circuito com
componentes digitais básicos apresentado com um diagrama de captura esquemática gerado a partir do
diagrama ASM. A figura 19 apresenta uma tabela de conversão dos blocos do diagrama ASM para o circuito
digital correspondente [Mano & Kime, 2000].
A figura 20 apresenta o resultado da conversão do diagrama ASM da figura 16 em um circuito digital usando
a tabela da figura 18.
Como esta técnica de implementação usa uma codificação de estados one-hot, o estado inicial deve ser
acertado através do acionamento do sinal de reinício da máquina de estados. O estado inicial S0 foi
mapeado no flip-flop FF0, assim o sinal RESET do circuito precisa ativar (iniciar com 1) somente o flip-flop
FF0 correspondente ao estado inicial do diagrama ASM. Os outros flip-flops deverão ser zerados.
EPUSP — PCS 2308 — Laboratório Digital II
Metodologia de Projeto com Dispositivos Programáveis – semestral (2015) 15
Bloco ASM Circuito correspondente
Estado
Decisão
Saída condicional (saída em 1)
Saída condicional (saída em 0)
Junção
Figura 19 – Tabela de conversão de bloco ASM para circuito digital.
EPUSP — PCS 2308 — Laboratório Digital II
Metodologia de Projeto com Dispositivos Programáveis – semestral (2015) 16
Figura 20 – Circuito da unidade de controle do projeto exemplo projetado
a partir da conversão do diagrama ASM.
EPUSP — PCS 2308 — Laboratório Digital II
Metodologia de Projeto com Dispositivos Programáveis – semestral (2015) 17
1.6.3. Implementação do sistema digital
Terminado o desenvolvimento dos módulos fluxo de dados e unidade de controle do projeto do sistema
digital, resta a integração destas partes para concluir o sistema.
No nosso projeto exemplo, a partir dos projetos das duas partes (fluxo de dados e unidade de controle),
podemos criar um projeto adicional do sistema digital (chamado tutorial_sd) no Altera Quartus II,
conectando os símbolos do fluxo de dados e da unidade de controle, conforme mostrado na figura 21.
Figura 21 – Projeto do sistema digital a partir do fluxo de dados e da unidade de controle.
Para verificar o funcionamento do sistema digital projetado, realiza-se a simulação do projeto completo
desenvolvido como apresentada na figura 22 abaixo. Nas formas de onda mostradas, inicialmente é
armazenado o valor 6 (acionando N1) e em seguida o valor 7 (acionando N2). Ao acionar M1, o primeiro
valor é apresentado na saída. Depois, ao acionar M2, o segundo valor armazenado é mostrado. No final, o
acionamento de RESET faz o sistema voltar ao estado inicial.
Figura 22 – Simulação do sistema digital do projeto exemplo.
Concluímos aqui a apresentação da metodologia de projeto de sistemas digitais. Esta metodologia será
praticada nas experiências seguintes do Laboratório Digital. Os projetos deverão seguir o padrão
determinado pela aplicação desta metodologia.
EPUSP — PCS 2308 — Laboratório Digital II
Metodologia de Projeto com Dispositivos Programáveis – semestral (2015) 18
2. PARTE EXPERIMENTAL A parte experimental visa praticar a metodologia de projeto de sistemas digitais apresentada com o
desenvolvimento do projeto exemplo e sua implementação para a placa de desenvolvimento FPGA DE2 da
Altera.
2.1. Atividades Pré-Laboratório
a) Como preparação da experiência, solicita-se que, após a leitura e entendimento das etapas da
metodologia de projeto, sejam projetados os módulos de fluxo de dados, de unidade de controle e do
sistema digital, conforme apresentado na seção anterior.
A apostila “Projeto de circuitos com Quartus II 9.1” [Menezes, 2011] apresenta os procedimentos a
serem executados para a implementação do projeto exemplo usando o software Altera Quartus II. Siga
os procedimentos descritos para a síntese do circuito para a placa DE2.
Recomenda-se a realização desta atividade antes da realização da experiência. Sugere-se que seja
usado o recurso de OpenLab do Laboratório Digital. Reserve um horário com os técnicos do Laboratório
Digital para usar a infraestrutura de laboratório fora de horários de aula.
b) Simule o funcionamento do projeto para valores diferentes de entrada.
c) Simule o funcionamento do projeto para condições incomuns: por exemplo, quando os sinais de
comando são acionados simultaneamente. Que outras situações devem ser consideradas?
d) Traga os arquivos do projeto exemplo para a aula.
e) Documente no planejamento a execução das atividades executadas.
f) Responda as questões abaixo:
1. Explique como os registradores do fluxo de dados são controlados para armazenar seu valor de entrada.
Como o circuito integrado 74173 é usado? Explique a função dos pinos MN e NN.
2. Que comportamentos incomuns dos sinais de entrada devem ser considerados nas simulações? Explique o
comportamento de cada situação.
2.2. Implementação na placa DE2
g) Sintetize o circuito projetado para a placa DE2. Não se esqueça de realizar a designação de pinos
conforme apresentado na apostila “Projeto de Circuitos com Quartus II 9.1”.
h) Teste o funcionamento do circuito na placa e verifique seu comportamento para várias situações. Foi
semelhante aos comportamentos obtidos nas simulações realizadas nas atividades pré-laboratório?
2.3. Desafio
i) Ao concluir a demonstração bem-sucedida do circuito exemplo, o grupo deve implementar uma
modificação no projeto. Esta modificação deve ser documentada no relatório.
j) Sintetize o circuito modificado na placa DE2.
k) Realize uma demonstração do circuito modificado ao professor.
2.4. Atividades Pós-Laboratório
l) Após o término das atividades experimentais, respondas as perguntas.
1. Explique como o uso da metodologia facilitou ou não a implementação da modificação proposta no desafio.
2. Discuta como o pseudo-código pode ser elaborado a partir de uma descrição verbal de um circuito.
3. Qual foi a maior dificuldade encontrada na experiência para a familiarização com a metodologia de projeto
proposta?
EPUSP — PCS 2308 — Laboratório Digital II
Metodologia de Projeto com Dispositivos Programáveis – semestral (2015) 19
3. BIBLIOGRAFIA
ALTERA. Altera DE2 Development and Education Board User Manual. 2008.
CHU, P.P. RTL Hardware Design Using VHDL: coding for efficiency, portability, and scalability. Wiley, 2006.
DE MICHELI, G. Synthesis and Optimization of Digital Circuits. McGraw-Hill, 1994.
FLYNN, M.J. & LUK, W. Computer System Design: System-on-Chip, Wiley, 2011.
FREGNI, E. & SARAIVA, A.M. Engenharia do Projeto Lógico Digital: conceitos e prática. Edgard Blücher, 1995.
GAJSKI, D.D. Principles of Digital Design. Prentice-Hall, 1997.
GIVONE, D.D. Digital Principles and Design. McGraw-Hill, 2003.
HAREL, D. Statecharts: a Visual Formalism for Complex Systems. Science of Computer Programming, vol. 8, pp. 231-274, 1987.
HARRIS, D.M. & HARRIS, S.L. Digital Design and Computer Architecture. 2nd edition, Morgan Kaufmann, 2013.
LALA, P.K. Principles of Modern Digital Design. Wiley, 2007.
MANO, M. M.; KIME, C. R. Logic and computer design fundamentals. 2nd edition, Prentice-Hall, 2000.
MENEZES, M.P.; SATO, L.M.; MIDORIKAWA, E.T. Projeto de Circuitos com Quartus II 9.1. Apostila de Laboratório Digital, 2011.
MORRIS, R.L. & MILLER, J.R. Projeto com Circuitos Integrados TTL. Editora Guanabara Dois, 1978.
PATTERSON, D.A. & HENNESSY, J.L. Computer Organization and Design: the hardware/software interface. 4th edition, Morgan Kaufmann, 2009.
PEDRONI, V.A. Circuit Design and Simulation with VHDL. 2nd ed., The MIT Press, 2010.
RANZINI, E.; HORTA, E.L.; MIDORIKAWA, E.T. Projeto de Circuitos com MAX+PLUS II. Apostila de Laboratório Digital, 2002.
SIGNETICS. TTL Logic Data Manual. 1982.
TOCCI, R. J.; WIDMER, N. S.; MOSS, G. L. Digital Systems: Principles and Applications.
11th ed., Prentice-Hall, 2011.
TOKHEIM, Roger L. Princípios Digitais. Schaum-McGraw Hill, 1983.
WAKERLY, J.F. Digital Design: Principles and Practices. 4th edition, Prentice-Hall, 2006.
4. EQUIPAMENTOS NECESSÁRIOS
1 computador PC com programa Altera Quartus II.
1 placa de desenvolvimento FPGA DE2 da Altera com o dispositivo Altera Cyclone II EP2C35F672C6.
1 dispositivo Digilent Analog Discovery.
Histórico de Revisões E.T.M./2015 – versão inicial.