Mobile

Metodologia de Projeto com Dispositivos Programáveis

Description
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.
Categories
Published
of 19
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Related Documents
Share
Transcript
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 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 ) e Verilog em 1995 (IEEE Standard ) 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 ). Já a linguagem SystemVerilog (IEEE Standard ) 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] 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 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 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 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 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 (fonte: Texas Instruments). A operação de deslocamento no 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 Mantém valor interno Desloca para a direita X Carrega valor paralelo Erro (mantém valor) Finalmente, o diagrama lógico da figura 10 mostra o circuito com o deslocador 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 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 apre
Search
Related Search
We Need Your Support
Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

Thanks to everyone for your continued support.

No, Thanks