Escolar Documentos
Profissional Documentos
Cultura Documentos
Juliana Amncio Malagoni Marco Aurlio Frana Rafael Rodrigues Vieira Neto Wanderley Silmrio Jnior Thoms Bessa Ferreira
26-04-2009
Faculdade de Engenharia Eltrica Universidade Federal de Uberlndia Campus Santa Mnica Av. Joo Naves de vila, 2121, Bairro: Santa Mnica CEP 38408-100 , Uberlndia - MG, Brasil
Sumrio
1 Introduo
1.1 1.2 1.3 1.4 1.5 Linha do Tempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Arquitetura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Design Digital . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Aplicaes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introduo ao Kit de Desenvolvimento UP2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 Dispositivo EPF10K70 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dispositivo EPM7128S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Oscilador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
4 6 6 7 8 9 9 9 9 10
Jumpers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dispositivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 Design Digital
2.1 Linguagem de Descrio de Hardware 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
11 11 11 12 12 12 12 12 13 13 14 15 17 17 19 23 24 25 25 25 26 26 30 30 35 38
Breve Histrico
O que VHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O que signica VHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O que uma linguagem de descrio de hardware . . . . . . . . . . . . . . . . . . . . . . . . . . .
Vantagens e Desvantagens de se utilizar VHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Componentes de um projeto VHDL 2.1.7.1 2.1.7.2 2.1.7.3 2.1.7.4 PACKAGE (Pacotes) ENTITY (Entidade) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ARCHITECTURE (Arquitetura)
CONFIGURATION (Congurao)
2.1.8
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Comandos Seqenciais
2.1.9
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Comando if then
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tutorial Quartus II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1 Criao do projeto de um circuito lgico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1.1 2.2.1.2 Utilizao de Blocos Lgicos Existentes . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SUMRIO
42 49 50 50 51 51 52 52 53
Carregando Seu design do Computador para UP2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . Preparando para Carregar Passos nais para Carregar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 Aplicaes e Prtica
3.1 3.2 3.3 3.4 3.5 Prtica 1 Prtica 2 Prtica 3 Prtica 4 Prtica 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
54 57 57 62 65
Captulo 1
Introduo
O rpido desenvolvimento dos recursos de concepo de circuitos integrados, tanto na rea de processos quanto na rea de
Computer Aided Design (CAD), tornou possvel o aparecimento de Dispositivos Lgicos Programveis (DLP). DLPs so
dispositivos que possuem em seu interior diversas portas lgicas, ip-ops e registradores, que oferecem uma forma exvel de arranjo destes componentes a nvel de hardware. Em outras palavras, voc poderia substituir diversos componentes como portas E, OU e NO por um nico chip, usufruindo de todas as vantagens disso, como um menor consumo, uma menor rea utilizada na placa e a eliminao de interconexes entre componentes. Alm disso, o fato de ser recongurvel permite alterar o circuito lgico sem mudanas na placa. Dentro de cada DLP existe um conjunto de macroclulas conectadas entre si. Estas macroclulas tipicamente compreendem alguma quantidade de portas lgicas (AND e OR, por exemplo) e ip-ops. Em outras palavras, uma pequena equao lgica Booleana pode ser resolvida em cada macroclula. Esta equao combina o estado de algumas entradas, produzindo uma sada que, se necessrio, ca disponvel em portas lgicas e ip-ops at a prxima borda de clock. A idia em geral essa, apesar das particularidades envolvendo fabricantes e famlia de produtos. A primeira utilizao destes circuitos naturalmente nos projetos de prototipagem. Tendo em vista que grande parte destes circuitos podem ser reprogramados, o seu uso nas fases preliminares de projeto possibilita uma grande economia de tempo e dinheiro. medida que os DLPs se tornam cada vez mais densos e rpidos, o processo de design eletrnico se benecia destes circuitos fazendo com que o tempo de projeto seja reduzido. Com a densidade dos chips aumentando a cada dia os fabricantes passaram tambm a produzir componentes com caractersticas semelhantes aos DLPs mas cada vez mais robustas (em termos de lgica). Estes componentes receberam o nome de Complex Programmable Logic Devices (CPLD). Em sua essncia uma CPLD um conjunto de mltiplas DLPs. A densidade destes componentes permite o desenvolvimento de circuitos muito mais complexos. Devido ao fato das CPLDs serem mais robustas que as DLPs, o seu potencial de uso muito mais varivel. possvel utiliz-las para simples aplicaes como decodicao de endereos, mas tambm possvel fazer uso das mesmas em lgicas de controle de alta performance ou complexas mquinas de estado nito. O desenvolvimento dos Field Programmable Gate Array (FPGA) fruto de uma evoluo do conceito de PLDs e CPLDs e da indstria de memrias programveis somente de leitura (PROM). FPGAs podem ser utilizados para a implementao de praticamente qualquer dispositivo de hardware. Um dos usos mais comuns a prototipao de componentes que sero um dia Application Specic Integrated Circuits (ASIC, circuitos integrados prontos feitos especicamente para uma aplicao). No entanto, no h problemas em se distribuir FPGAs em produtos nais. Esta deciso requer basicamente uma anlise de custo, uma vez que o desenvolvimento de um ASIC um processo bastante caro e inexvel, mas que gera componentes de custo bastante reduzidos se produzidos em larga escala. se comparados ASICs com alta escala de produo. As FPGAs, e particularmente desenvolvimento para o Kit Educacional UP2 da Altera, sero o alvo desta apostila e portanto maiores detalhes viro a seguir. Os FPGAs por sua vez possuem baixo custo de prototipao e alta exibilidade, mas os preos de produtos nais que utilizam FPGAs so pouco competitivos
1.1
Linha do Tempo
1983 1984
- A empresa Altera fundada. Esta empresa futuramente se torna uma grande produtora no ramo de FPGAs, abastecendo o meio acadmico e industrial. - A empresa Xilinx fundada. Futuramente esta viria a ser a lder FPGA no meio industrial. 4
CAPTULO 1.
INTRODUO
1985
- Os co-fundadores da Xilinx, Ross Freeman e Bernard Vonderschmitt, inventaram o primeiro Field Programmable Gate Array (FPGA) comercialmente vivel, seu nome era XC2064. Ele possuia portas programveis e interligaes programveis entre estas portas, este era o incio de uma nova tecnologia e de um novo mercado. O XC2064 possuia meros 64 blocos de lgica congurvel, com um par lookup tables (LUTs) de trs entradas.
1985 1988 1988 1990 1991 1991 1992 1992 1993 1997 1999 2000 2001 2002 2003 2006 2006 2006 2007 2008 2009 2009 2009
- Patentes so concedidas a David W. Page e Luverne R. Peterson por alguns dos conceitos fundamentais da indstria FPGA e das tecnologias de vetores de lgica programvel, portas e lgica fundada em blocos. - MAX 5000 CPLD lanado pela Altera. Este o primeiro CPLD do mundo. - Altera lana seu software de desenvolvimento MAX+PLUS II. - A dcada de 1990 foi denitiva para a exploso dos FPGAs, tanto na sosticao quanto no volume de produo. No incio da dcada de 1990, FPGAs foram utilizados principalmente em telecomunicaes e redes. - Xilinx Introduz a famlia XC4000. Primeira famlia de FPGAs a ser largamente utilizada. - Altera lana a verso windows-based do MAX+PLUS II. - Naval Surface Warfare Departament (NSWD), no nal dos anos 80, nanciou um experimento proposto por Steve Casselman para desenvolver um computador que implementaria milhares de portas reprogramveis. Casselman foi bem sucedido em seu experimento para a NSWD, e o sistema gera patente em 1992. - Altera lana sua primeira famlia de FPGAs conhecida como FLEX 8000. - Concorrentes aparecem. A empresa Actel assumiria cerca de 18% do mercado neste ano. - As FPGAs tem sua fama elevada ao auge, quando Adrian Thompson fundiu tcnicas de algoritmo gentico e FPGAs para criar um dispositivo de reconhecimento de som. O algoritmo de Thompson permitiu que uma matriz de 64 x 64 clulas em um chip FPGA da Xilinx realizasse uma boa tarefa de reconhecimento. - Altera introduz no mercado os kits de desenvolvimento voltados para o pblico acadmico. - No nal da dcada de 90 as FPGAs encontraram seu caminho para o mercado automotivo, de consumo e de aplicaes industriais. - O software Quartu s II da Altera introduzido no mercado. Este viria a ser um CAD e software de design para FPGAs largamente utilizado. - A famlia Cyclone lanada pela Altera. Esta famlia possui baixo custo e utiliza a tecnologia .13m. - Xilinx lana sua linha Spartan -3. Primeiro FPGA de 90nm do mundo. Esta famlia representa um salto nas tecnologias FPGA. - Quartus II sofre upgrades signicativos. - Xilinx revela o primeiro FPGA de 65nm com a famlia Virtex -5. Esta a plataforma de mais alta performance na indstria FPGA, porm seu custo ainda elevado. - FPGAs educacionais atingem a marca de 1 milho de portas. - Cyclone III lanada pela Altera. Esta famlia a primeira com tecnologia 65nm de baixo custo. Combinando baixo consumo, alta funcionalidade e preo acessvel. A tecnologia parece promissora. - Stratix IV lanado pela Altera. Este o primeiro dispositivo de 40nm da indstria. Com a mais alta densidade, a mais alta performance, menor consumo e a mais alta largura de banda para transceptores. A tecnologia surge despontando. - Xilinx promete introduzir duas novas famlias de FPGAs representantes de uma nova gerao que permitiram a superao de novos desaos em design lgico. - Ross Freeman, co-fundador da Xilinx, entra para o National Inventor's Hall of Fame por sua inveno. Esta uma homenagem pstuma. - Arria II GX. ltima famlia lanada pela Altera. Oferece vrias melhorias em relao s demais tecnologias de custo otimizado do mercado.
CAPTULO 1.
INTRODUO
1.2
Arquitetura
Diferentes
Nesta sesso sero apresentados alguns dos conceitos chaves acerca da arquitetura das FGPAs modernas. de construo de FPGAs.
famlias de FPGA e dispositivos dentro destas famlias so construdos com diferentes combinaes destes blocos bsicos
As estruturas de hardware destacadas na Figura 1.1 so selecionadas pelo software de design a partir das escolhas do projetista e outras opes de design. O software para design seleciona as estruturas apropriadas para atingir as metas do projetista, que podem ser o melhor desempenho possvel ou usar a menor quantidade de energia. A arquitetura de um FPGA predominantemente lgica, na forma de Elementos Lgicos (Logic Elements - LE), dispostos em malhas ao longo do dispositivo. LEs possuem duas partes: Look -Up Tables (LUT), que podem implementar funes comuns de lgica, tais como portas E ou OU; e registros que podem implementar lgica sncrona, como ip-ops. Alm dos LEs, outras estruturas de hardware dedicadas esto presentes para auxiliar na implementao de funes denidas pelo usurio e aumentar a performance. Estes recursos esto geralmente dispostos em colunas ao longo da FPGA. Um dos tipos de recursos dedicados so as memrias embutidas (Embedded Memory - EM). Este recurso pode variar tanto na capacidade quanto na disposio (srie ou paralelo), com a nalidade de obter memrias mais robustas. Multiplicadores embutidos (Embedded Multipliers ou Digital Signal Processor - DSP) eles podem ser cascateados de tal sorte a facilitar o processamento digital de sinais (PDS), auxiliando na implementao de funes avanadas de PDS. A maioria dos dispositivos contm Loops de Fase Fixa (Phase Locked Loops - PLL) para implementar instrues de clock mais renadas (ou complicadas se o leitor preferir). As FPGAs contam com elementos de entrada e sada (User-selectable I/O elements ), cuja disposio e uso so denidas pela escolha do usurio. Estes elementos podem ser posicionados e congurados para comunicar o FPGA com outros dispositivos externos presentes no circuito impresso. Todos estes elementos esto conectados atravs de uma planta contendo rotas recongurveis e registros de congurao (Congurable routing and Conguration registers ). Estas rotas so extremamente exveis, assegurando que os requerimentos de hardware para um design em particular sero conectados corretamente e de tal forma que atinjam todas as metas de desenvolvimento. Todas as estruturas citadas neste tpico e sua disposio podem ser melhor visualizadas na gura 1.1.
1.3
Design Digital
Design digital o processo de criao de uma nova estrutura lgica utilizando DLP. Trataremos mais especicamente do design digital envolvendo FPGAs.
CAPTULO 1.
INTRODUO
O processo de design digital comea com a idia. Seja ela em nvel de sistema ou em nvel de design especco para uma FPGA. Esta idia geralmente documentada em um formulrio para especicar as caractersticas do que a FPGA deveria fazer e a forma como ela deveria trabalhar. No entraremos em detalhes de processos e formulrios para especicao de idias em design digital, embora eles existam. O prximo passo seria descrever esta idia utilizando um formulrio digital que possa ser entendido pelo programa de design de FPGAs e que possa ser traduzido para as estruturas fsicas encontradas no dispositivo alvo. Esta descrio normalmente feita em uma linguagem de alto nvel para descrio de hardware (Hardware Description Language - HDL). Verilog HDL e VHDL so as liguagens mais popularmente utilizadas na criao de designs para FPGAs (veja o captulo2). Agora utilizamos um programa de design de FPGAs (trataremos do Quartus II no captulo 2) para pegar este cdigo e realizar um processo conhecido como compilao. principais Sntese e Place and Route (P&R): 1. Sntese: Traduz o cdigo de descrio nas estruturas de hardware disponveis dentro do dispositivo. 2. P&R: Escolhe a posio atual das estruturas fsicas e as conecta usando a planta de rotas congurveis (Figura 1.1) No processo de compilao ainda est inserida a checagem de erros no design, esta etapa assegura que o design se encaixa corretamente no FPGA alvo e garante que o design opera na performance especicada pelo usurio. O software gera um programa binrio que contm todas as informaes necessrias para programar uma FPGA com o design. Por ltimo o usurio faz um download do programa no dispositivo. Dois itens so necessrios para que esta etapa ocorra: o programa binrio e as funcionalidades do depurador de design (este ltimo faz parte do software de design). conexo direta entre um computador e uma FPGA. Se houver qualquer problema ou alterao no design basta voltar ao cdigo de descrio ou s conguraes do software de design realizar as mudanas, recompilar o design e reprogramar o novo binrio na FPGA. Como podemos notar este processo torna fcil a correo de problemas e mudanas de design num curto perodo de tempo, alm de ser bem mais exvel que a fabricao de um ASIC. O processo todo pode ser visto na gura 1.2. Este download feito diretamente no hardware. A programao ocorre atravs de uma memria FLASH ou atravs de uma A compilao, em design digital, composta de 2 (dois) passos
1.4
Aplicaes
Os FPGAs so aplicveis em qualquer circuito que empregue lgica digital. Naturalmente, em muitos casos, os FPGAs no sero competitivos em termos de custo (como no caso de placas em que seriam usados um ou dois circuitos lgicos) ou facilidade (em montagens onde no seja recomendvel o uso de encapsulamento SMD). Contudo, a facilidade de implementao ou modicao de um circuito utilizando FPGA, muitas vezes sem precisar alterar a placa de circuito impresso, aliada minimizao dos custos pela reduo de nmero de componentes fsicos, reduo de tamanho de placas e agilidade em colocar novos produtos, de tamanho e peso reduzidos no mercado, fazem deste tipo de dispositivo a escolha
CAPTULO 1.
INTRODUO
Figura 1.3: ALTERA UP2 board, jumpers, PB1, PB2, e os locais dos LEDs.
certa para a implantao de novos circuitos, principalmente embarcados ou especializados, a qual pode ser decisiva no estabelecimento de um produto ou no aumento da lucratividade de um negcio. Portanto as aplicaes de FPGA podem ser descritas nas seguintes grandes reas:
Aliado ao design
digital possvel obter prottipos de circuitos lgicos simples arquitetura de ASICs ou at de processadores mais
Design Digital: Criao de qualquer circuito lgico a partir de design digital. Vrias reas da engenharia so ans utilizao de circuitos lgicos. Ensino de Tecnologias e Conceitos: A FPGA pode ter um importante papel em vrias disciplinas da engenharia. Este papel pode ser tanto didtico, quanto no auxlio de implementaes nestes tpicos. Dentre as disciplinas podemos citar: Eletrnica Digital, Robtica, Controle Digital, Eletrnica de Potncia, Inteligncia Articial, Arquitetura e Organizao de Computadores, Processamento Digital de Sinais.
Ncleos Embutidos: Ncleos de processamento especializados em uma tarefa, capazes de realizar as operaes em tempo real visto que as mesmas so efetuadas em hardware. recongurveis, tornando-os versteis. Ncleos Embutidos utilizando FPGA so inclusive
Chips Hbridos: Combinam partes de lgica xa e partes de lgica programvel. Geralmente a parte de lgica xa dedicada comunicao perifrica ou a algumas rotinas comuns. exibilidade j conhecida da FPGA. Por sua vez a parte programvel possuir a
Computao Recongurvel: A sonhada computao recongurvel, proposta no nal da dcada de 60, que tinha como princpio a alterao do design interno das aplicaes de maneira on-the-y, torna-se mais tangvel com o surgimento dos DLPs. Aplicaes High-End de sistemas inteligentes, militares e de comunicao so desenvolvidas utilizando-se o conceito de computao recongurvel e as FPGAs.
1.5
O University Program Educatoin Kit (UP2), uma placa ou tambm chamada board, para experincias e j vem pronta pra uso, est baseada em um dispositivo FLEX 10K e em um dispositivo Max 7000. de desenvolvimento padro industrial e PLDs. O kit projetado para satisfazer as necessidades de instrutores e estudantes em um ambiente de labortorio. O dispositivo EPF10K70 pode ser congurado em um sistema (referindo-se ao processo de programar diretamente com o dispositivo conectado a um PC com o Quartus II), ou com o cabo de download ByteBlaster II, ou com a congurao dispositivo EPC 1. O dispositivo EPM7128S pode ser programado em um sistema de cabo byteBlaster II. Quando usado com o software Quartus II, este board provem de uma plataforma superior para aprender o desenho da lgica digital e usa ferramentas
CAPTULO 1.
INTRODUO
Tabela 1.1: Diagrama dos jumpers dos dispositivos TDI C1 C2 C3 TOD C1 C2 C3 DEVICE C1 C2 C3 BOARD C1 C2 C3
Tabela 1.2: Descrio dos pinos do conector JTAG AO DESEJADA Programar somente o dispositivo EPM7128S Programar somente o dispositivo FLEX10K Programar e congurar ambos os dispositivos (1) Conectar mltiplas UP2 juntas (2) TDI C1 e C2 C2 e C3 C2 e C3 C2 e C3 TODO C1 e C2 C2 e C3 C1 e C2 ABERTO DEVICE C1 e C2 C2 e C3 C2 e C3 C2 e C3 BOARD C1 e C2 C2 e C3 C1 e C2 C2 e C3
1.5.3 Oscilador
O UP2 Education Board contm um cristal oscilador de 25,175 Mhz. A sada do oscilador dirige uma distribuio de relgio global no dispositivo EPM7128S, pino 83 e uma contribuio de relgio global no dispositivo FLEX10K, pino 91.
1.5.4 Jumpers
O UP2 Education Board tem 4 jumpers (TDI, TODO, DEVICE e BOARD) para xar a congurao do conector JTAG, que pode ser xada para uma variedade de conguraes (programar s o dispositivo EPM7128S, congurar s o dispositvo FLEX10K, congurar e programar ambos os dispositivos, ou conectar mltipllos UP2 Education Board ). A tabela 1.1 mostra as conexes dos 3 conectores (C1, C2 e C3) em cada um dos quatro jumpers.
A tabela 1.2 apresenta a congurao para os pinos do jumper JTAG apresentados na tabela 1.1, e os mesmos servem para as vrias conguraes apresentadas anteriormente.
Notas: (1) O primeiro dispositivo conectado no JTAG o FLEX10K e o segundo o EPM7128S. (2) Idem (1). O ltimo Board no conector deve estar xado para congurao simples (congure somente um dispositivo do Board ) e o ltimo Board no deve ser conectado junto a outros Boards.
CAPTULO 1.
INTRODUO
10
Dispositivo FLEX: O UP2 dispes dos seguintes recursos para o dispositivo FLEX10K. Os pinos para estes dispositivos j esto pr-assinados para switches e LED's da placa Board.
Conector JTAG para o cabo ByteBlaster II; Socket para a congurao de um dispositivo EPC1; Dois switches push button (este boto quando pressionado gera um sinal baixo (bit zero), em seu estado normal est em alto ) momentneos; Um switch octal com encapsulado DIP; Dois displays de 7 segmentos; Oscilador on-board 25,175 Mhz; Porto VGA; Porto Mouse; Trs portas de expanso, cada uma vom 42 pinos I/O e 7 pinos globais.
1.5.5 Dispositivo
FLEX O UP2 dispe dos seguintes recursos para o dispositvo FLEX10K. Os pinos para estes dispositvos j esto prassinados para switches e LED's da placa Board.
Conector JTAG para o cabo ByteBlaster II. Socket para a congurao de um dispositvo EPC1. Dois switches push button (este boto quando pressionado gera um sinal baixo (bit zero), em seu estado normal est
em alto ) momentneos. Um switch octal com encapsulado DIP. Dois displays de 7 segmentos. Oscilador on-board 25,175 Mhz. Porto VGA. Porto Mouse. Trs portas de expanso, cada uma vom 42 pinos I/O e 7 pinos globais.
Captulo 2
Design Digital
2.1 Linguagem de Descrio de Hardware
2.1.1 Objetivo
Este tpico tem como objetivo introduzir conceitos bsicos de VHDL, para alunos de Engenharia, envolvidos em atividades de projeto de hardware digital de alguma complexidade, que exija boa documentao e que busque independncia de tecnologia de implementao.
11
CAPTULO 2.
DESIGN DIGITAL
12
Intercmbio de projetos entre grupos de pesquisa sem a necessidade de alterao; Permite ao projetista considerar no seu projeto os delays comuns aos circuitos digitais; A linguagem independe da tecnologia atual, ou seja, voc pode desenvolver um sistema hoje e implement-lo depois; Os projetos so fceis de serem modicados; O custo de produo de um circuito dedicado elevado, enquanto que usando VHDL e Dispositivos Programveis, isto passa a ser muito menor; Reduz consideravelmente o tempo de projeto e implementao.
PACKAGE so declarados as constantes, tipos de dados, sub-programas; ENTITY declarao dos pinos de entrada e sada; ARCHITECTURE dene as implementaes do projeto; CONFIGURATION dene as arquiteturas que sero utilizadas.
CAPTULO 2.
DESIGN DIGITAL
13
Como utiliz-los: LIBRARY <nome_da_biblioteca> e/ou USE <nome_da_biblioteca>.all Observao: .all signica que todos os elementos da bibliotecas devem ser utilizados, caso no seja acrescentado .all
INOUT= Porta de entrada e sada; BUFFER = Porta de sada que pode ser atualizada por mais de uma fonte; LINKAGE = O valor da porta pode ser lido e atualizado. Um exemplo pode ser visto na gura 2.4:
Tipos de Sinais (g. 2.5): <tipo> => bit, bit_vetor, std_logic, std_logic_vector, boolean, real;
1 No 2 No
pode receber atribuio de valor dentro do programa. pode ser utilizada como entrada para o outro circuito.
CAPTULO 2.
DESIGN DIGITAL
14
Arquitetura Simples: A arquitetura simples contm apenas um processo, ou seja, apenas um bloco(g. 2.7).
Arquitetura Concorrente: A arquitetura concorrente uma forma mais complexa de descrever um sistema, geralmente apresenta vrios processos dentro de uma arquitetura. Nos programa 1 e 2, na gura2.8, temos uma arquitetura com trs processos, podendo ser independentes ou no. Estes processos so executados em paralelo, porem os processos s sero executados se algum sinal (A, B ou C) tiver seu estado alterado. Novamente tem-se um ganho de processamento.
CAPTULO 2.
DESIGN DIGITAL
15
1. Uma arquitetura com dois processos, que sero executados; 2. Execuo Paralela; 3. Os dois processos possuem variveis com mesmo nome, mas isto no inuncia no processamento.
CAPTULO 2.
DESIGN DIGITAL
16
CAPTULO 2.
DESIGN DIGITAL
17
Identicadores
Quando se escreve um programa em VHDL, deve-se tomar certos cuidados, com os identicadores,
Boolean: Integer:
Physical:
min, hr.
Intervalos:
Array:
3 bit_vector um conjunto de bits. Ex: 4 Sempre com ponto decimal 5 No possvel realizar converso sobre
CAPTULO 2.
DESIGN DIGITAL
18
type word is array (31 downto 0) of bit; type memory is array (address) of word; type transform is array (1 to 4, 1 to 4) of real; type vector is array (integer range < >) of real; type string is array (positive range < >) of character type b is array (1 to 5) of character; (`t', `e', `s', `t', `e') (1 => 't', 5 => 'e', 2 => `e', 3 => `s', 4 => `t' ) (3 => `s', 2 => `e', 5 => `e', others => `t')
Record:
Expresses e Operadores
Operadores Numricos:
Operadores Lgicos:
Os operadores lgicos so: and, or, nand, nor, xor, xnor e not.
Os operadores numricos so: soma (+), subtrao (-), multiplicao (*), diviso (/), mdulo (mod), remanescente (rem ex.: 6 rem 4 = 2), expoente (**), valor absoluto (abs). Operadores de deslocamento, gura 2.13:
Operadores de concatenao: Esta operao consiste em criar um novo vetor a partir de dois vetores j existentes, veja a gura 2.14:
CAPTULO 2.
DESIGN DIGITAL
19
Atribuio de Variveis
Interpretao do programa:
Nas linhas 16 e 17 foram utilizados operadores booleanos. Nas linhas 18 e 19, utilizou-se o operador & para realizar a concatenao (vide semntica de linguagem). Na linha 20, o bit menos signicativo do vetor D ser igual a 0 enquanto que o outro 1 . Na linha 21, o vetor W teria os seguintes valores aps a operao: [1G00], onde G o valor dele mesmo. Na linha 22, DATA ser todo preenchido com 0's. A funo de uma varivel dentro de um processo serve para intermediar valores. OBS.1: a varivel (VARIBLE) s pode ser utilizada dentro do processo em que foi criada; OBS.2: ela poder assumir os mesmos tipos descritos anteriormente; OBS.3: sempre que for passado algum parmetro para uma varivel, estes devem ser do mesmo tipo; OBS.4: note que a passagem de valores para uma varivel atravs de := e para pinos de sada a atribuio feita com <= Exemplo (Figura 2.17): Note que a atualizao da varivel automtica. Este exemplo apresenta as etapas de simulao de um programa em VHDL, acompanhe cada bloco (horizontalmente).
Atribuio de Sinais
CAPTULO 2.
DESIGN DIGITAL
20
Interpretao do programa:
40ns, retorna a ser 0.
Na linha 11, inicialmente A vale 0, aps 20ns o valor de A alterado para 1 e aps
Na linha 12 e linha 13, so operaes lgicas. Na linha 14, o processo semelhante ao da linha 11, entretanto os dados agora so do tipo inteiro. OBS. 1: Note que a atribuio a um sinal feita atravs de <= OBS. 2: Houve uma atribuio ao SIGNAL dentro do processo, isto no implica em dizer que em outro processo eu possa utiliz-lo atribuindo outro valor, ou seja, ele poder ser utilizado por outro processo, mas no poder receber uma atribuio de valores. OBS. 3: O signal deve ser passado ao processo, como mostra o exemplo. Outro exemplo: Na gura2.19, ca bem claro a diferena entre uma varivel e um sinal, ou seja, todos os sinais s sero atualizados no nal do processo, enquanto que a varivel atualizada sempre que usada. simulao do programa passo-a-passo (horizontalmente). Novamente, acompanhe a
Qual a diferena entre o SIGNAL e a VARIABLE ? O signal pode ser utilizado por qualquer processo pertencente aquela arquitetura, enquanto que a varivel interna ao processo e, a atualizao da varivel imediata, enquanto que o signal s atualizado no nal do processo.
CAPTULO 2.
DESIGN DIGITAL
21
CAPTULO 2.
DESIGN DIGITAL
22
CAPTULO 2.
DESIGN DIGITAL
23
Na forma wait for o processo suspenso por um intervalo de tempo. Na forma wait until o processo suspenso at que a condio seja vlida. Observe que se no houver mudana nos sinais, o processo continua suspenso. Na forma wait on o processo suspenso at que um evento da lista de sinais ocorra. Como os comandos de um process so executados constantemente e ciclicamente, pode parecer, portanto, que no faz diferena de onde se coloca um wait. Na verdade, de vital importncia o seu posicionamento adequado. Se uma instruo
wait for colocada no inicio de um process, nada ocorre at que as condies do wait sejam satisfeitas. Se este mesmo wait
for colocado no nal de um process, todos os comandos anteriores ao wait sero executados. Ao invs de se utilizar o wait on no nal de um process, pode-se usar o conceito de sensitivity list, ou lista de sensitividade, que consiste simplesmente em colocar as condies do wait on ao lado do comando process (entre parnteses). Neste caso, o process no pode conter nenhum wait. A listagem a seguir ilustra o uso de process para se implementar um multiplixador 2x1. Observe na gura 2.21que os sinais A, B e Sel foram colocados na sensitivity list.
CAPTULO 2.
DESIGN DIGITAL
24
Deve-se ressaltar que neste caso, os comandos do process so executados uma vez, e o processo ca suspenso. Ao haver mudana em qualquer uma das variveis, o process executado mais uma vez. Como entradas e sadas so sinais, qualquer variao de sada tido como variao de sinal e novamente o processo executado. Considere o exemplo da gura2.22.
Uma vez iniciado o processo, pode-se ver que o Sinal2 recebe o valor de Sinal1 acrescido de 5. Como houve uma variao em Sinal2, o processo executado novamente. Desta vez, como no h variao em nenhuma varivel (Sinal2 continua com o valor de Sinal1 acrescido de 5), o processo suspenso. Neste momento Sinal2 efetivamente recebe o novo valor. Qualquer valor atribudo a uma varivel s passa a valer efetivamente quando o processo suspenso, e somente a ltima atribuio a uma varivel vlida. Esse conceito pode ser entendido pela listagem apresentada a seguir. Considere o valor inicial de todos os sinais como sendo 1 . Quando D mudar para 2, o processo iniciado. Quais seriam os valores quando o processo for suspenso? Veja a gura2.23.
Neste caso os valores nais so: A=3; B=2; C=1; D=2; E=2. Esta limitao do process eliminada com o uso de variables, que podem ser declaradas dentro do process. O valor
atribudo a uma variable valido imediatamente aps a sua atribuio, e pode receber vrias atribuies no mesmo
process.
Neste caso, os valores nais das variveis so: A=3;B=3;C=1; D=2; E=6. Para um melhor entendimento, na gura 2.25 apresenta-se uma comparao entre signal e variable, observe a tabela a seguir que ilustra suas semelhanas e diferenas.
CAPTULO 2.
DESIGN DIGITAL
25
por ponto-e-vrgula. Ao trmino destas operaes deve ser colocado o end if. Considere como exemplo o process de um
array. Considere como exemplo a gura 2.28, que apresenta trs entradas de seleo (Modo), duas entradas de dados (In1
CAPTULO 2.
DESIGN DIGITAL
26
e In2) e uma sada Out. dependendo dos valores presentes nas entradas de seleo, diferentes operaes so executadas nos dados. Pode-se observar o uso do recurso when others, para situaes no previstas pelas demais opes.
CAPTULO 2.
DESIGN DIGITAL
27
CAPTULO 2.
DESIGN DIGITAL
28
CAPTULO 2.
DESIGN DIGITAL
29
CAPTULO 2.
DESIGN DIGITAL
30
2.2
Tutorial Quartus II
O software Quartus II uma ferramenta importante no design digital, ele foi lanado em 2001 pela Altera (veja a seo 1.1 desta apostila). Desde ento ele vm sendo atualizado e este tutorial aborda a veso Quartus II 7.2. Esta seo serve como guia para princpios bsicos necessrios ao design digital. Sero abordados os seguintes tpicos:
Utilizao de blocos lgicos existentes; Criao de blocos lgicos a partir de Cdigo VHDL.
Assume-se que o leitor j tenha instalado o software em seu computador e saiba abr-lo. Para download do softwar e e maiores informaes sobre como instal-lo visite o site <http://www.altera.com/> e procure pela seo Download Center, no canto superior direito do site. Para informaes acerca do Quartus II que vo alm deste tutorial recomenda-se fazer o download do material de literatura gratuito disponvel em <http://www.altera.com/literature/lit-qts.jsp>. O teste em hardware, que seria o prximo passo de um projeto ser abordado no prximo tpico.
Esta caixa de dilogo nos mostra quantos so e quais sero os passos do Wizard de Projetos. Tm-se a opo de marcar o checkbox ao lado da frase Don't show me this introduction again . Isto faria com que a janela de introduo no aparecesse mais .Clique no boto Next para continuar. A prxima janela a New Project Wizard: Directory, Name, Top Level Entity e pode ser vista na gura2.34.
CAPTULO 2.
DESIGN DIGITAL
31
Figura 2.34: New Project Wizard: Directory, Name, Top Level Entity
A tela nos mostra trs campos, onde o primeiro corresponde ao caminho (URL) onde o projeto ser salvo, o segundo corresponde ao nome do projeto e o terceiro campo ao nome entidade de nvel mais alto (sistema). Aps o preenchimento dos trs campos, click em next para continuar. A tela seguinte (gura 2.35) para casos em que o usurio deseja adicionar arquivos ou bibliotecas ao projeto. Uma vez que no precisaremos disto neste projeto, vamos simplesmente clicar em Next.
Estamos agora na tela New Project Wizard: Family & Device Settings. Nela selecionamos qual dispositivo est vinculado ao projeto. Para os casos ilustrados nesta apostila deve-se escolher a famlia FLEX10K no campo Family e o dispositivo EPF10K70RC2404 no campo Avaiable Devices (Como mostrado na gura 2.36). possvel ltrar a lista de dispositivos usando os campos
6 Ateno:
Se voc um inciante no recomendvel que voc marque esta opo at se familiarizar com o Wizard de Projetos
CAPTULO 2.
DESIGN DIGITAL
32
Seguindo teremos que especicar uma lista de dispositivos que conguram a etapa de compilao. No nosso caso, a lista padro ser suciente. Bastando portanto, clicar em Next sem alterar qualquer campo (gura 2.37).
Finalmente a prxima tela nos diz que o 'New Project Wizard' est acabado e o novo projeto com as conguraes mostradas foi criado. Este passo mostrado na gura 2.38.
Aps a criao do projeto, a prxima etapa a criao de um arquivo Diagrama de Blocos (.gdf ), o qual servir de base para a criao do circuito lgico. Para tanto acesse o menu FILE e escolha a opo NEW. Uma janela como a da gura 2.39 aparecer. Na aba de nome Device Design File uma lista de opes lhe ser mostrada. Escolha a opo Block
CAPTULO 2.
DESIGN DIGITAL
33
A tela da gura 2.40ser aberta no ambiente do Quartus II. Nela, em breve, construremos um circuito utilizando diversos tipos de elementos. Por hora apenas acesse o menu FILE e a opo SAVE, utilize preferencialmente o mesmo nome do projeto para o arquivo de Design.
CAPTULO 2.
DESIGN DIGITAL
34
CAPTULO 2.
DESIGN DIGITAL
35
Com a abertura da tela, temos que expandir o diretrio primitives. Dentro deste expandiremos o diretrio logic, escolhendo ento a porta lgica a ser inserida. Neste caso exemplo usaremos a porta AND2, como mostrado na gura 2.42.
A porta lgica utilizada uma porta AND com 2 entradas. A opo Repeat Insert Mode (logo abaixo dos diretrios), quando marcada permite a insero repetida de um mesmo componente. No diagrama de blocos, ao posicionar a quantidade de componentes desejados, basta apertar a tecla ESC do teclado para cancelar este modo. Como exemplo posicionaremos apenas uma porta AND. Veja a gura 2.43.
Clicando mais uma vez no boto Symbol Tool. Em agora no diretrio PIN em PRIMITIVES voc pode selecionar input para adicionar ao seu projeto duas entradas lgicas e depois output para congurar uma sada. Ficando o circuito como mostrado na gura 2.44.
CAPTULO 2.
DESIGN DIGITAL
36
Para fazer ligaes utilize a ferramenta Orthogonal Node Tool (gura 2.45). Com a ferramenta selecionada, basta clicar no n de origem e depois no n de destino.
Para nomear um pino tanto de entrada quanto de sada, clique duas vezes sobre ele.Uma janela como a da gura 2.46. No campo Instance Name e de seu novo nome. Geralmente utiliza-se letras do alfabeto maisculas em projetos simples.
Aps criar o circuito salve o seu projeto em FILE, opo SAVE ou utilize as teclas de atalho <Ctrl+S>.
CAPTULO 2.
DESIGN DIGITAL
37
CAPTULO 2.
DESIGN DIGITAL
38
Agora o cdigo referente uma porta lgica OR deve ser incluido na janela aberta (gura 2.48).
Salve o arquivo. Geralmente escolhe-se o mesmo nome da entidade Agora v ao menu FILE, selecione CREATE/UPDATE e CREATE SYMBOL FILE FOR CURRENTE FILE (gura 2.49).
7 Em
grandes projetos necessrio a utilizao de caixas pretas, ou seja, unidades menores as quais sero utilizadas em circuitos maiores.
Esse procedimento aumenta a inteligibilidade do sistema total e permite ao projetista analisar o circuito em pequenas partes. Este comando pode ser utilizado em quase todos os tipos de arquivos, incluindo diagramas de blocos (.bdf ).
CAPTULO 2.
DESIGN DIGITAL
39
A aba do cdigo fonte em VHDL no ser mais necessria, feche-a tambm. Na aba do arquivo de diagrama de blocos clique mais uma vez no boto Symbol Tools. Clique no boto mostrado na gura 2.51, para procurar o diretrio onde o smbolo da porta OR feita em VHDL foi salvo.
Uma janela de procura de diretrios se abrir. Escolha o diretrio e o arquivo e clique em abrir (gura 2.52).
O smbolo referente ao cdigo que o usurio criou aparecer imediatamente do lado direito da janela Symbol. Clique em
OK (gura 2.53) e posicione o bloco vhdl_or no arquivo de diagrama de blocos como indicado na gura 2.54.
CAPTULO 2.
DESIGN DIGITAL
40
CAPTULO 2.
DESIGN DIGITAL
41
CAPTULO 2.
DESIGN DIGITAL
42
2.2.2 Simulao
Precisamos saber se o circuito est funcionando antes de grav-lo na FPGA. Para isso precisamos simular o circuito criado. No Quartus II preciso criar um arquivo do tipo VECTOR WAVEFORM FILE (.vwf ) para realizar simulaes. Antes de prosseguir criando o VECTOR WAVEFORM FILE precisamos realizar uma etapa de compilao parcial do diagrama de blocos. Para tal v ao menu PROCESSING e escolha a opo START COMPILATION (gura 2.55) ou, utilize as teclas de atalho Ctrl+L .
Algumas janelas aparecero (para entend-las melhor v sesso 2.2.4)e se tudo estiver correto
Agora acesse o menu FILE, opo NEW. Na janela que se abrir, clique na aba OTHER FILES e selecione VECTOR
A tela da gura 2.57 aparecer. Antes de prosseguir salve este arquivo com o mesmo nome do projeto (o nome sugerido serve apenas para facilitar a identicao).
Agora precisamos congurar o tempo mximo de simulao para indicarmos ao Quartus II como ele deve proceder. Para isso v ao menu EDIT e acesse a ooo END TIME (gura 2.58).
A janela da gura 2.59 aparecer. Como exemplo conguraremos o tempo nal de simulao como e picosegundos). Clique em OK e retorne janela de simulao.
10ms.
H um campo
para digitar o valor e uma caixa de seleo para escolher a unidade (segundos, milisegundo, microsegundos, nanosegundos
CAPTULO 2.
DESIGN DIGITAL
43
Clicando com o boto direito na campo NAME, um menu de contexto aparecer. Acesse a opo INSERT e no submenu a opo INSERT NODE OR BUS ... (gura 2.60).
A janela da gura 2.62 aparecer. No campo NAMED coloque um asterisco caso esteja preenchido de outra forma ou vazio, isso far com que o NODE FINDER no se restrinja ao nome do n. Na opo FILTERS selecione a opo PINS:
ALL. Clique em LIST e a janela da gura 2.63 aparecer . Voc pode utilizar o boto circulado em vermelho para incluir
os ns um a um ou o boto circulado em verde para incluir todos os ns. Para a nossa simulao incluiremos todos os ns.
8 Erros 9 Se na
comuns nesta etapa so: os mal conectados e ausncia de entradas ou sadas. pr-compilao anterior a este processo, voc no obteve sucesso por algum motivo, ocorrero erros nesta etapa tambm.
CAPTULO 2.
DESIGN DIGITAL
44
CAPTULO 2.
DESIGN DIGITAL
45
CAPTULO 2.
DESIGN DIGITAL
46
CAPTULO 2.
DESIGN DIGITAL
47
CAPTULO 2.
DESIGN DIGITAL
48
Aps realizadas estas operaes clique em OK nas janelas NODE FINDER e INSERT NODE OR BUS. Voc retornar tela do VECTOR WAVEFORM FILE. Com as teclas de atalho Ctrl+Shift+Space ou Ctrl+Space podemos aproximar e afastar o grid de simulao para melhor ver os sinais de entrada (e futuramente sada). O grid da gura 2.64 est com as variveis de entrada j conguradas. Voc aprender a congurar as suas agora. Basta clicar no boto OVERWRITE CLOCK do menu de simulao (marcado em vermelho na gura 2.65).
campo START TIME indicar quando o ciclo comea a ser executado (no nosso caso no tempo 0 em qualquer unidade). O campo END TIME indica quando o ciclo se encerrar (no nosso caso tempo 10 ms pois desejamos que o ciclo se repita ao longo de todo o tempo de simulao
te dra acesso aos campos PERIOD, OFFSET e DUTY CYCLE. Em PERIOD voc determina o ciclo de repetio do DUTY CYCLE. Por enquanto no exploraremos o recurso OFFSET, ele desloca o nicio do ciclo que seria igual ao
10 O
tempo total de simulao foi estabelecido no menu EDIT opo END TIME...
CAPTULO 2.
DESIGN DIGITAL
49
START TIME para o valor indicado no campo. Por m DUTY CYCLE corresponde porcentagem do perodo no qual
a onda car em nvel lgico alto. Como dica para a criao de uma tabela verdade sugere-se que a cada nova entrada, seja usado como perodo um valor correspondente metade do anterior. Na gura 2.64 temos ciclos de 10 ms, 5 ms e 2,5 ms para as portas A, B e C respectivamente.
Realizaremos agora mais uma etapa de compilao parcial (Ctrl + L). Por m realizaremos a simualo clicando no boto indicado na gura 2.67 ou usando as teclas de atalho Ctrl+I.
Voc obeter uma janela de resultados, que muito similar de simulao, porm no possvel alterar os formatos de entrada e/ou sada. (Figura 2.68)
Podemos constatar que o circuito funciona conforme o esperado. E hora de partir para a implementao em hardware.
VECTOR WAVEFORM FILE, podem ser fechadas e agora temos certeza que a parte de cdigo do projeto funcionra.
PLANNER. Ele pode ser aberto escolhendo-se a opo PIN PLANNER no menu ASSIGNMETS. A janela da gura 2.69
aparecer. Note que no canto inferior esquerdo voc encontra os pinos A, B, C e S presentes no seu circuito.
CAPTULO 2.
DESIGN DIGITAL
50
As designaes de entrada e sada podem ser encontradas na segunda coluna da tabela. Por hora no as alteraremos. Clique no campo Location da tabela. Uma janela como a da gura 2.70 se desdobrar e nela voc pode escolher qual pino ser atribuido a cada um dos elementos do seu circuito
11 .
Para esta aplicao utilizaremos o pino 6 para a sada e os pinos 39, 40 e 41 para as entradas (A, B e C respectivamente).
2.2.4 Compilao
Compilar traduzir de informaes visuais ou linguagem de programao para linguagem de mquina
12 .
A compilao que gerar o arquivo que pode ser carregado na FPGA s pode ocorrer depois da atribuio de pinos. Quaisquer outras compilaes parciais realizadas geram binrios, mas no esto apatas a irem para a FPGA. Os comandos so os mesmos Ctrl+L ou menu PROCESSING opo START COMPILATION.
possvel acompanhar o progresso da compilao e os erros nas janelas mostradas na gura 2.71. Aps todos os passos executados e concludos com sucesso as janelas de resultados de compilao e PIN ASSIGNMENT podem ser fechadas.
CAPTULO 2.
DESIGN DIGITAL
51
A janela da gura 2.73 se abrir. Para o Kit UP2 verique se a opo JTAG est selecionada na janela MODE. Quaisquer alteraes de hardware devem ser indicadas no boto HARDWARE SETUP. O checkbox mostrado na gura deve estar marcado. Estando todas as opes corretas e o hardware conectado, o boto START se habilitar (gura 2.73). Basta clicar nele.
2.3
11 Verique 12 So
o datasheet da sua placa para saber quais pinos so prprios para entrada (pushbuttons, ps2 etc.) e quais so prprios para sada
(displays de 7 segmentos, VGA, LEDs etc.). Para a placa UP2 verique o captulo gerados os famosos arquivos binrios
??
desta apostila.
CAPTULO 2.
DESIGN DIGITAL
52
Figura 2.74: ALTERA UP2 board com colocaes de jumpers e PB1, PB2, e LEDs.
Verique que os jumpers de dispositivo so xos para a fatia de CABO como mostrado na tabela 1.2. EPM7128 do chip, os pinos de jumper so todo o jogo posio de topo como indicado em tabela 1.2.)
Os locais do
pushbuttons, tambm so realados PB1 e PB2, e o ponto decimal do LED em Figura 1.18. (Nota que porque o MAX
Figura 2.75: ALTERA UP2 board com colocaes de jumpers e PB1, PB2, e LEDs.
CAPTULO 2.
DESIGN DIGITAL
53
Figura 2.76: CABO de 1.19 UP2 FPGA xam conexo para sete-segmentar ponto decimal de exibio.
Todos estes LEDs so pre-telegrafados ao chip da FPGA com um pull-up resistor como ilustrado mais cedo em Figura 1.6. Esta congurao permite o resistor externo para controlar a quantia de corrente pelos LEDs; porm. Os estudantes esquecem deste ponto regularmente e tm um projeto completamente trabalhando com um padro invertido no LEDs. Vcc 5V no UP2. Depois de carregar seu programa UP2 board, localize as duas exibies de sete-segmento de rightmost. Como a produo do porto de BNOR2 est dirigindo o decimal do LED sinal no dgito esquerdo das duas exibies de sete-segmento, deveria ser out (i.e., Estado CONDUZIDO invertido em UP2 board). Desde que os botes so ativos em sinal baixo, e o porto de BNOR2 tambm tem baixas contribuies ativas e produo, enquanto batendo qualquer boto os LEDs deveriam conduzir. Parabns! Voc h pouco entrou, compilou, simulou, e carregou um design a um dispositivo de FPGA, e vericou sua operao.
Captulo 3
Aplicaes e Prtica
3.1 Prtica 1
Esta experincia tem por objetivo a familiarizao com portas lgicas E, NO, a m de acionar um indicador de alerta de cinto de segurana em um carro. Se o motorista estiver presente E NO estiver usando cinto, E a ignio estiver acionada, ENTO, acenda a luz de advertncia. Descrever o circuito usando lgebra booleana, diagramas de smbolos lgicos, tabelas-verdade e diagramas de tempo.
Soluo:
Expresso Booleana:
54
CAPTULO 3.
APLICAES E PRTICA
55
motorista_presente 0 0 0 0 1 1 1 1
cinto_em_uso 0 0 1 1 0 0 1 1
ignicao_ligada 0 1 0 1 0 1 0 1
luz_de_advertencia 0 0 0 0 0 1 0 0
CAPTULO 3.
APLICAES E PRTICA
56
Nas Figuras 3.1 ,3.2, 3.3 e a tabela3.1 mostra quatro formas diferentes de representar o circuito lgico que foi descrito em linguagem normal nas guras citadas. H muitas outras formas de representar a lgica dessa deciso. Como um exemplo, poderamos imaginar um conjunto inteiramente novo de smbolos grcos, ou utilizar o francs ou o japons para declarar a relao lgica. bvio que no h como cobrirmos todas as formas possveis de descrever um circuito lgico, mas
CAPTULO 3.
APLICAES E PRTICA
57
preciso entender os mtodos mais comuns para podermos nos comunicar com os outros em nossa prosso. Alm disso, certas situaes so mais fceis de descrever por meio de um mtodo do que por outro. Em alguns casos, uma gura vale mil palavras, e em outros, as palavras so concisas o bastante e mais facilmente comunicveis aos outros. O importante que precisamos saber descrever e comunicar a operao de sistemas digitais.
3.2
Prtica 2
Esta experincia tem por objetivo a familiarizao com os cdigos IF, ELSIF e ELSE, a m de controlar a temperatura. Denir as entradas como um integer de 4 bits. As sadas so 3 bits individuais que acionam trs indicadores de intervalo. Essa prtica usa um sinal intermedirio que nos permite atribuir um padro de bit que representa todas as trs condies frio_demais, ideal e quente_demais. O cdigo usa IF, ELSIF e ELSE para identicar o intervalo em que a temperatura est e atribuir o padro de bit correto a status. Nas trs ltimas declaraes, todos os bits de status so conectados ao bit da porta de sada correto.
Soluo:
Ver Tutorial Quartus II (seo 2.2).
Para denir o nome do pino de entrada do barramento no podemos esquecer de adicionar [3..0]3.6 aps o nome, pois a entrada de 4 bits.
3.3
Prtica 3
Um detector de moedas em uma mquina automtica aceita quarters, dimes e nickels e ativa o sinal correspondente (Q, D, N) apenas quando a moeda correta est presente. sicamente impossvel mltiplas moedas estarem presentes ao mesmo tempo. Um circuito digital precisa usar os sinais Q, D e N como entradas e produzir um nmero binrio
representando o valor da moeda. Escreva o cdigo VHDL, fazer o diagrama esquemtico e o diagrama de tempo.
Soluo:
Esta uma aplicao ideal da construo CASE para descrever a operao correta. As sadas devem ser declaradas como nmero de 5 bits em ordem para representar os valores at 25 centavos. A gura3.9 mostra a soluo em VHDL. Ver Tutorial Quartus II (seo 2.2).
CAPTULO 3.
APLICAES E PRTICA
58
CAPTULO 3.
APLICAES E PRTICA
59
CAPTULO 3.
APLICAES E PRTICA
60
CAPTULO 3.
APLICAES E PRTICA
61
CAPTULO 3.
APLICAES E PRTICA
62
3.4
Prtica 4
O ip-op J-K um bloco de construo padro de circuitos lgicos (sequenciais) com clock conhecido como um bloco primitivo lgico. Em sua forma mais comum, ele possui cinco entradas e uma sada. Os nomes de entradas/sadas podem ser padronizados para permitir que nos reramos s conexes desse circuito primitivo ou fundamental. O VHDL permite ao projetista descrever o funcionamento do circuito lgico com clock explicitamente no cdigo. O funcionamento adequado do circuito pode ser vericado por meio de um simulador. A parte mais importante e desaadora da vericao com um simulador criar um conjunto de condies de entrada hipotticas que prove que o circuito faz tudo aquilo para que foi projetado. H muitas formas des se fazer isso, e cabe ao projetista escolher a melhor. Escreva o cdigo VHDL, fazer o diagrama esquemtico e o diagrama de tempo.
Soluo:
Ver Tutorial Quartus II (seo 2.2).
Vamos denir cada linha de tempo das entradas do bloco criado utilizando as ferramentas selecionadas de vermelho na gura3.14.
CAPTULO 3.
APLICAES E PRTICA
63
CAPTULO 3.
APLICAES E PRTICA
64
CAPTULO 3.
APLICAES E PRTICA
65
3.5
Prtica 5
O cdigo na gura3.16implementa todos os recursos a que nos referimos. Trata-se de um contador de quatro bits, mas pode ser facilmente expandido. Leia as entradas e sadas nas linhas 3-6 para ter certeza de que entendeu o que cada uma deve fazer. A declarao PROCESS na linha 10 a chave para todos os circuitos com clock descritos em VHDL, mas tambm desempenha um importante papel em determinar se o circuito responde de modo sncrono ou assncrono a suas entradas. Queremos que esse circuito responda imediatamente a transies nas entradas clock, clear e down. Com esses sinais na lista de sensibilidade, garantimos que o cdigo dentro do PROCESS ser avaliado assim que qualquer dessas entradas mude de estado. A varivel count denida na linha 11 como INTEGER de modo que pode ser incrementado e decrementado com facilidade. Variveis so declaradas dentro do PROCESS e podem ser usadas apenas dentro de
PROCESS. A entrada clear recebe precedncia ao ser avaliada com o primeiro comando IF na linha 13. Se clear est
ativa, as outras condies no importaro. A sada ser zero. Para fazer a funo carga operar sincronamente, ela deve ser avaliada aps a deteco da borda do clock. A borda do clock detectada na linha 14, e o circuito verica de imediato se load est ativa. Se estiver ativa, count carregada a partir de din, independentemente de o contador estar habilitado ou no. Em consequencia, a deciso condicional (IF) na linha 15 avalia a entrada de carga. S se esta estiver inativa a linha 16 ser avaliada e vericar se o contador est habilitado. Se estiver, count ser incrementada ou decrementada (linhas 17 e 18, respectivamente). O prximo passo detectar a contagem terminal. As linhas 22-25 decidem se a contagem terminal mxima ou mnima foi atingida e colocam a sada no nvel apropriado. A estrutura de tomada de deciso muito importante aqui porque queremos avaliar essa situao, independentemente de o processo de tomada de deciso ter sido invocado por clock, clear ou down. Observe que essa decisop no outro ramo ELSE das decises IF anteriores, mas avaliada para cada sinal na lista de sensibilidade aps a limpeza ou contagem ter ocorrido. Depois que todas essas decises so tomadas, count deve ter o valor correto no registrador, e a linha 27 conecta efetivamente o registrador aos pinos de sada.
Soluo:
Ver Tutorial Quartus II (seo 2.2).
CAPTULO 3.
APLICAES E PRTICA
66
CAPTULO 3.
APLICAES E PRTICA
67
CAPTULO 3.
APLICAES E PRTICA
68