Metodologia de Projeto com Dispositivos Programáveis

Documentos relacionados
PROJETO DE SISTEMAS DIGITAIS

PROJETO DE SISTEMAS DIGITAIS

PROJETO DE SISTEMAS DIGITAIS

Introdução ao Projeto de Sistemas Digitais com Dispositivos Programáveis

Introdução ao Projeto de Sistemas Digitais com Dispositivos Programáveis

Introdução ao Projeto de Sistemas Digitais com Dispositivos Programáveis

Desenvolvimento Sistemático de Projetos de Circuitos Digitais

EPUSP PCS 3335/3635 Laboratório Digital. Circuito em VHDL

EPUSP PCS 3335 Laboratório Digital A. Um Circuito Digital

Projeto com Linguagens de Descrição de Hardware

Banco de Registradores e ULA

EPUSP PCS 3335 Laboratório Digital A. Introdução ao VHDL

Banco de Registradores

EPUSP PCS 2011/2305/2355 Laboratório Digital. Frequencímetro

EPUSP PCS 3335 Laboratório Digital A. Trena Digital

EPUSP PCS 3635 Laboratório Digital I. Trena Digital

CONTROLE DE UM SERVO MOTOR

CALCULADORA SIMPLES COM ULA

EPUSP PCS 2355 Laboratório Digital. Contadores em VHDL

EPUSP PCS 2011 Laboratório Digital I. Uma ULA Simples

Calculadora Simples em VHDL

EPUSP PCS 2011/2305/2355 Laboratório Digital. Frequencímetro

CONTROLE PARA SEMÁFOROS DE UM CRUZAMENTO

Desenvolvimento de um Circuito Complexo

Circuito de Recepção Serial Assíncrona

EPUSP PCS 2011/2305/2355 Laboratório Digital CALCULADORA SIMPLES

EPUSP PCS 2011/2305/2355 Laboratório Digital. Freqüencímetro

Interface com Sensor Ultrassônico de Distância

EPUSP PCS2355 Laboratório Digital SOMADORES DECIMAIS

EPUSP PCS 2011 Laboratório Digital GERADOR DE SINAIS

EPUSP PCS 2011/2305/2355 Laboratório Digital. Frequencímetro

Comunicação Serial Assíncrona

Multiplicador Binário com Sinal

EPUSP PCS 2308 Laboratório Digital. Trena Digital

UM PROCESSADOR SIMPLES

EPUSP PCS 2011/2305/2355 Laboratório Digital SOMADORES DECIMAIS

UTILIZAÇÃO DE CIRCUITOS BIESTÁVEIS

Projeto com Dispositivos Programáveis

Circuito Hierárquico

EPUSP PCS 2011 Laboratório Digital I. Uma ULA Simples

MELHORAMENTO NO PROCESSADOR SIMPLES

EPUSP PCS 2011/2305/2355 Laboratório Digital CALCULADORA SIMPLES

Primeiro Circuito Digital

CONTROLE PARA SEMÁFOROS DE UM CRUZAMENTO

EPUSP PCS 2021 Laboratório Digital II. Sistema de Radar

UTILIZAÇÃO DE CIRCUITOS BIESTÁVEIS

CONTROLE PARA SEMÁFOROS DE UM CRUZAMENTO

Introdução ao Laboratório Digital

Processador nanopcs-3

Painel Luminoso com LEDs

Montagem, testes, depuração e documentação de circuitos digitais

Parte # 2 - Circuitos Combinatórios

EPUSP PCS 2011 Laboratório Digital GERADOR DE SINAIS

Introdução ao Laboratório Digital

Comunicação Serial Assíncrona

Processador nanopcs-4

Turma PCS2304. Objetivos. Site da disciplina. Professor Edson Midorikawa Edson T. Midorikawa 25/02/2008.

Pontifícia Universidade Católica Federal do Rio de Santa Grande Catarina do Sul

EPUSP PCS 2011 Laboratório Digital GERADOR DE SINAIS

Painel Luminoso com LEDs

Circuitos sequenciais Adaptado dos transparentes das autoras do livro The Essentials of Computer Organization and Architecture

EPUSP PCS 2011/2305/2355 Laboratório Digital ARITMÉTICA DECIMAL

Pontifícia Universidade Católica Federal do Rio de Santa Grande Catarina do Sul

EPUSP PCS 2011/2305/2355 Laboratório Digital CALCULADORA SIMPLES

Sistemas Digitais Transferências entre Registradores

EPUSP PCS 2011 Laboratório Digital GERADOR DE SINAIS

SISTEMAS DIGITAIS PROJETOS DE SISTEMAS SEQUENCIAIS. Professor Carlos Muniz

Projeto Moderno de Sistemas Digitais

Sistemas Digitais Módulo 10 Circuitos Sequenciais: Latches e Flip-Flops

Organização e Arquitetura de Computadores I

Sistemas Digitais I LESI :: 2º ano. Introdução

Sistema de Aquisição de Dados

Introdução a Sistemas Digitais

SIMULAÇÃO DE CIRCUITOS

SISTEMAS DIGITAIS (SD)

FPGA & VHDL. Tutorial

Escola Politécnica de Pernambuco Departamento de Engenharia Elétrica PROGRAMA EMENTA OBJETIVOS

Fundamentos de Sistemas Digitais. Lógica Sequencial. Prof. Dr. Alexandre M. Amory Prof. Dr Edson I. Moreno

Somadores Binários E.T.M./2005 (revisão)

Uma Introdução às Linguagens de Descrição de Hardware

Prof. André Rabelo LÓGICA DIGITAL INTRODUÇÃO

Unidade Lógica e Aritmética

PLANEJAMENTO DAS DISCIPLINAS DE SISTEMAS DIGITAIS NA EC3. Workshop de Graduação do PCS Prof. Edson S. Gomi 31 de julho de 2018

SSC510 Arquitetura de Computadores 1ª AULA

Unidade Lógica e Aritmética

SIMULAÇÃO DE CIRCUITOS

Sistemas Digitais (SD) Máquinas de Estado Microprogramadas: Circuito de Dados e Circuito de Controlo

Divisão de Engenharia Eletrônica Laboratório de ELE-20

Departamento de Engenharia Elétrica. ELE Microprocessadores I. Prof. Carlos Antonio Alves Sala 59 Fone

Exemplo 1 de Projeto de Circuito Síncrono: Multiplicador Binário

Programa Analítico de Disciplina INF251 Organização de Computadores I

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 02

Aula 17. Máquina de Estados Parte 1. SEL Sistemas Digitais. Prof. Dr. Marcelo Andrade da Costa Vieira

Projeto de Circuitos Aritméticos

Exercícios de Laboratório 3

Os sistemas combinacionais a saída depende exclusivamente das condições das entradas, portanto o sistema não possui memória interna.

Sistemas Digitais (SD)

SISTEMAS DIGITAIS (SD)

Universidade Federal de Santa Catarina Centro Tecnológico Departamento de Informática e Estatística Curso de Graduação em Ciências da Computação

Transcrição:

Metodologia de Projeto com Dispositivos Programáveis Versão 2015 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 semestral (2015) 1

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. Metodologia de Projeto com Dispositivos Programáveis semestral (2015) 2

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. Metodologia de Projeto com Dispositivos Programáveis semestral (2015) 3

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. Metodologia de Projeto com Dispositivos Programáveis semestral (2015) 4

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 tristate 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. Metodologia de Projeto com Dispositivos Programáveis semestral (2015) 5

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. Devese 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. Metodologia de Projeto com Dispositivos Programáveis semestral (2015) 6

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. Metodologia de Projeto com Dispositivos Programáveis semestral (2015) 7

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 entrada 3 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. IN[1..4] N1 N2 M1 M2 CLOCK RESET SISTEMA DIGITAL EXEMPLO OUT[1..4] 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. Metodologia de Projeto com Dispositivos Programáveis semestral (2015) 8

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. Metodologia de Projeto com Dispositivos Programáveis semestral (2015) 9

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. IN[1..4] EN1 CLR1 R1 SEL 0 1 MUX2X1 EN3 CLR3 R3 OUT[1..4] EN2 CLR2 R2 CLOCK 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. Metodologia de Projeto com Dispositivos Programáveis semestral (2015) 10

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. S0 CLR1 CLR2 CLR3 1 0 0 N1 N2 S1 S2 EN1 EN2 S3 1 0 0 0 0 N1 M1 N2 M2 1 1 S4 1 S5 EN3 SEL S6 SEL EN3 Figura 16 Diagrama ASM do projeto exemplo. Metodologia de Projeto com Dispositivos Programáveis semestral (2015) 11

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. Metodologia de Projeto com Dispositivos Programáveis semestral (2015) 12

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. Metodologia de Projeto com Dispositivos Programáveis semestral (2015) 13

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. Metodologia de Projeto com Dispositivos Programáveis semestral (2015) 14

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. Metodologia de Projeto com Dispositivos Programáveis semestral (2015) 15

Figura 20 Circuito da unidade de controle do projeto exemplo projetado a partir da conversão do diagrama ASM. Metodologia de Projeto com Dispositivos Programáveis semestral (2015) 16

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. Metodologia de Projeto com Dispositivos Programáveis semestral (2015) 17

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? Metodologia de Projeto com Dispositivos Programáveis semestral (2015) 18

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. 2 nd 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. 2 nd 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. 2 nd 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. 11 th 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. Metodologia de Projeto com Dispositivos Programáveis semestral (2015) 19