Metodologia de Projeto com Dispositivos...

19
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órios 1 . 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

Transcript of Metodologia de Projeto com Dispositivos...

Page 1: Metodologia de Projeto com Dispositivos Programáveislabdig/pdffiles_2015/metodologia-projeto.pdf · Esta experiência tem como objetivo a familiarização com uma metodologia de

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

Page 2: Metodologia de Projeto com Dispositivos Programáveislabdig/pdffiles_2015/metodologia-projeto.pdf · Esta experiência tem como objetivo a familiarização com uma metodologia de

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.

Page 3: Metodologia de Projeto com Dispositivos Programáveislabdig/pdffiles_2015/metodologia-projeto.pdf · Esta experiência tem como objetivo a familiarização com uma metodologia de

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.

Page 4: Metodologia de Projeto com Dispositivos Programáveislabdig/pdffiles_2015/metodologia-projeto.pdf · Esta experiência tem como objetivo a familiarização com uma metodologia de

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.

Page 5: Metodologia de Projeto com Dispositivos Programáveislabdig/pdffiles_2015/metodologia-projeto.pdf · Esta experiência tem como objetivo a familiarização com uma metodologia de

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.

Page 6: Metodologia de Projeto com Dispositivos Programáveislabdig/pdffiles_2015/metodologia-projeto.pdf · Esta experiência tem como objetivo a familiarização com uma metodologia de

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.

Page 7: Metodologia de Projeto com Dispositivos Programáveislabdig/pdffiles_2015/metodologia-projeto.pdf · Esta experiência tem como objetivo a familiarização com uma metodologia de

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.

Page 8: Metodologia de Projeto com Dispositivos Programáveislabdig/pdffiles_2015/metodologia-projeto.pdf · Esta experiência tem como objetivo a familiarização com uma metodologia de

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

Page 9: Metodologia de Projeto com Dispositivos Programáveislabdig/pdffiles_2015/metodologia-projeto.pdf · Esta experiência tem como objetivo a familiarização com uma metodologia de

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.

Page 10: Metodologia de Projeto com Dispositivos Programáveislabdig/pdffiles_2015/metodologia-projeto.pdf · Esta experiência tem como objetivo a familiarização com uma metodologia de

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

Page 11: Metodologia de Projeto com Dispositivos Programáveislabdig/pdffiles_2015/metodologia-projeto.pdf · Esta experiência tem como objetivo a familiarização com uma metodologia de

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

Page 12: Metodologia de Projeto com Dispositivos Programáveislabdig/pdffiles_2015/metodologia-projeto.pdf · Esta experiência tem como objetivo a familiarização com uma metodologia de

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.

Page 13: Metodologia de Projeto com Dispositivos Programáveislabdig/pdffiles_2015/metodologia-projeto.pdf · Esta experiência tem como objetivo a familiarização com uma metodologia de

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.

Page 14: Metodologia de Projeto com Dispositivos Programáveislabdig/pdffiles_2015/metodologia-projeto.pdf · Esta experiência tem como objetivo a familiarização com uma metodologia de

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.

Page 15: Metodologia de Projeto com Dispositivos Programáveislabdig/pdffiles_2015/metodologia-projeto.pdf · Esta experiência tem como objetivo a familiarização com uma metodologia de

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.

Page 16: Metodologia de Projeto com Dispositivos Programáveislabdig/pdffiles_2015/metodologia-projeto.pdf · Esta experiência tem como objetivo a familiarização com uma metodologia de

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.

Page 17: Metodologia de Projeto com Dispositivos Programáveislabdig/pdffiles_2015/metodologia-projeto.pdf · Esta experiência tem como objetivo a familiarização com uma metodologia de

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.

Page 18: Metodologia de Projeto com Dispositivos Programáveislabdig/pdffiles_2015/metodologia-projeto.pdf · Esta experiência tem como objetivo a familiarização com uma metodologia de

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?

Page 19: Metodologia de Projeto com Dispositivos Programáveislabdig/pdffiles_2015/metodologia-projeto.pdf · Esta experiência tem como objetivo a familiarização com uma metodologia de

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.