Você está na página 1de 69

Design Digital Utilizando FPGA

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

Semntica da linguagem VHDL 2.1.8.1 2.1.8.2 Elementos Lxicos

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Comandos Seqenciais

2.1.9

Descrio de Comportamento (Process )

2.1.10 Controle da Seqncia 2.1.10.1 2.1.10.2 2.1.10.3 2.1.10.4 2.1.10.5 2.2

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Comando if then

Comando if then else Comando Case

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Comando For Loop Comando Next

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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 . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Criao de blocos lgicos a partir de cdigo VHDL . . . . . . . . . . . . . . . . . . . . . . 2

SUMRIO

2.2.2 2.2.3 2.2.4 2.2.5 2.3

Simulao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Atribuio de Pinos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

42 49 50 50 51 51 52 52 53

Compilao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Etapas de Gravao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Testando Seu Design em um Kit FPGA 2.3.1 2.3.2 2.3.3 2.3.4

Carregando Seu design do Computador para UP2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . Preparando para Carregar Passos nais para Carregar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Testando Seu design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

Abaixo so apresentados alguns fatos marcantes na linha do tempo das FPGAs.

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.

Figura 1.1: Arquitetura de FPGAs modernas

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

Figura 1.2: Processo de Design Digital

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:

Prottipos: Pela sua recongurabilidade FPGAs so utilizados em prototipagens de sistemas. avanados.

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

Introduo ao Kit de Desenvolvimento UP2

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.1 Dispositivo EPF10K70


O dispositivo EPF10K70 est baseado na tecnologia SRAM (Static Random Acess Mem ory ). Est disponvel em um Cada LE encapsulado RQFP de 241 pinos e tem 3,744 elementos lgicos (LEs) e 9 embedded array blocks (EABs). consiste em 4 entradas LUT, um ipop programvel, e caminhos dedicados para funes de carry-and-cascade. Cada EAB prov 2,078 localidades de memria que pode ser usada para criar RAM, ROM, ou funes rst-in rst-out (FIFO). EABs tambm podem implementar funes lgicas, como multiplicadores, microcontroladores, mquina-de-estados, e funes Digital Signal Processing (DSP). Com 70,000 gates tpicos, o dispositivo EPF10K70 ideal para intermedirios, para cursos de desenhos digitais avanados, inclusive arquitetura de computador, comunicaes, e aplicaes DSP.

1.5.2 Dispositivo EPM7128S


O dispositivo de EPM7128S, um membro de alta densidade, do alto da famllia MAX7000S, est baseado nos elementos (EEPROM  Erase Programmable Read Only Memory ). O dispositivo EPMF7128S se caracteriza por um encapsulado plstico de 84 pinos (PLCC  Plastic J-Lead Chip Carrier ) e tem 128 macro clulas. Cada macro clulas tem um (AND/xed  OR) programvel bem como, um registro congurvel com relgio de programao independente, clock enable, clear, e funes preset. Com uma capacidade de 2500 gates e uma arquitetura simples, o dispositvo EPM7128S ideal para desenhos introdutrios como tambm maiores combinaes e funes de lgica sequencial.

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.

2.1.2 Breve Histrico


Nas dcadas de 70 e 80 foi posto em prtica um programa do Departamento de Defesa (DoD) americano, para desenvolvimento de circuitos integrados de alta velocidade, denominado VHSIC e originado da preocupao de domnio das tecnologias envolvidas. Desde o princpio, anteviu-se o problema de representao dos projetos segundo uma linguagem que fosse comum s vrias empresas envolvidas e que permitisse uma documentao fechada e clara para projetos de complexidade crescente. Nesta mesma poca, j havia no mercado de computao a chamada crise do software, caracterizada pela diculdade de gesto, documentao e sistematizao do ciclo de vida do software (que envolve, em termos gerais, todas as atividades relativas sua criao e uso). O problema surgiu inicialmente no software porque era neste componente que se desenvolviam as aplicaes, reponsveis pela particularidade de uso do produto. Isso fazia com que um grande volume de projetos fossem conduzidos, quase sempre com muita complexidade e pouco mtodo. No hardware a questo era mais bem controlada, pois os projetos eram, em geral, mais genricos, especialmente para o hardware digital. Os projetos de microprocessadores, que eram os mais complexos, visavam na maior parte dos casos o uso geral. Um mesmo microprocessador seria utilizado em vrias aplicaes, seria reproduzido e testado aos milhes. Isso signicava que o investimento em um nico projeto poderia ser muito maior, inclusive em termos de especicao e testes. A evoluo da metodologia de projeto de software foi ento natural, em funo dos argumentos sustentados pela crise. Hoje ainda grande o desenvolvimento de novos mtodos e a busca por uma linguagem descritiva universal, como o UML, para especicao e projeto de software orientado a objetos. A questo preocupante quanto ao hardware, para o programa VHSIC americano, era que alguns fatos indicavam para uma evoluo do mercado que faria surgirem problemas semelhantes aos apresentados pela crise de software. Entre estes fatos pode-se citar os seguintes: a) A fabricao de circuitos integrados deixava de ser exclusiva de alguns poucos fabricantes. CIs de uso especco para certas aplicaes. b) As novas tecnologias de fabricao (abaixo de 2mm, na poca) permitiam um aumento de densidade dos CIs, com conseqente aumento de complexidade. c) Surgiam componentes de lgica programvel (PLDs e PALs), inicialmente de pequena densidade, mas que poderiam evoluir para densidades muito maiores rapidamente. Tais componentes poderiam criar, como de fato ocorreu posteriormente, um grande mercado de projetos de pequena escala e aplicaes especcas, muito parecido com o mercado de projetos de software. A criao de uma linguagem de descrio de hardware patrocinada pelo programa e, em paralelo algumas outras linguagens criadas pela indstria, foi ento uma decorrncia natural. Em 1987, o VHDL foi normalizado pelo IEEE, tornando-se um padro mundial, ao lado do Verilog, uma alternativa tambm expressiva no mercado de projetos de hardware. Hoje, praticamente todas as ferramentas de desenvolvimento de hardware computadorizadas aceitam essas linguagens como entrada, de forma que um projeto baseado em VHDL ou Verilog pode ser implementado com qualquer tecnologia. Surgiam empresas especializadas na fabricao de projetos de terceiros, o que permitiria, em conjunto com o desenvolvimento de tecnologias de fabricao menos custosas, a criao de

11

CAPTULO 2.

DESIGN DIGITAL

12

2.1.3 O que VHDL


VHDL uma forma de se descrever, atravs de um programa, o comportamento de um circuito ou componente digital.

2.1.4 O que signica VHDL


Very Hight Speed Intregrated Circuit Hardware Description Languagem Traduzindo para o portugus temos: Altssima Velocidade. Linguagem de Descrio de Hardware com nfase em Circuitos Integrados de

2.1.5 O que uma linguagem de descrio de hardware


Uma linguagem de descrio de hardware descreve o que um sistema faz e como ele o faz. Esta descrio um modelo do sistema hardware, que ser executado em um software chamado simulador. Um sistema descrito em linguagem de hardware pode ser implementado em um dispositivo programvel (FPGA  Field Program Gate Array ), permitindo assim o uso em campo do seu sistema, tendo a grande vantagem da alterao do cdigo a qualquer momento.

2.1.6 Vantagens e Desvantagens de se utilizar VHDL


A descrio de um sistema em VHDL apresenta inmeras vantagens, tais como:

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.

Quanto as desvantagens, apenas uma relevante:

VHDL no gera um hardware otimizado.

2.1.7 Componentes de um projeto VHDL


A estrutura de um programa VHDL, baseia-se em 4 blocos. Veja as guras 2.1 e 2.2.

Figura 2.1: Estrutura de um programa VHDL

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

Figura 2.2: Representao de uma descrio feita utilizando VHDL

2.1.7.1 PACKAGE (Pacotes)


Os pacotes (biblioteca) contm uma coleo de elementos incluindo descrio dos tipos de dados (similares aos includes da Linguagem C). Pacotes normalmente usados podem ser vistos na gura 2.3.

Figura 2.3: Pacotes mais usuais

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

deve-se especicar os elementos que sero utilizados.

2.1.7.2 ENTITY (Entidade)


Tipo de Portas: IN = Porta de Entrada; OUT = Porta de Sada;

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

Figura 2.4: Entidade

Figura 2.5: Tipos de sinais

2.1.7.3 ARCHITECTURE (Arquitetura)


Arquitetura pode ser denida como sendo a implementao do projeto. Na gura 2.6-a, temos uma placa me de um PC, por exemplo, onde est faltando o chip, considere que a interface entre o chip e o meio externo seja idntica. Na gura 2.6-b, foi colocado um chip, com toda a arquitetura do projeto.

Figura 2.6: a) Placa Me b)Placa Me e FPGA com Arquitetura de Projeto

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.

O cdigo na gura 2.9, apresenta algumas caractersticas, tais como:

CAPTULO 2.

DESIGN DIGITAL

15

Figura 2.7: Arquitetura Simples

Figura 2.8: Arquiteturas Concorrentes

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.

2.1.7.4 CONFIGURATION (Congurao)


Uma mesma entidade pode ter varias arquiteturas. Veja gura 2.10.

CAPTULO 2.

DESIGN DIGITAL

16

Figura 2.9: Exemplo de Execuo Paralela

Figura 2.10: Congurao

CAPTULO 2.

DESIGN DIGITAL

17

2.1.8 Semntica da linguagem VHDL


2.1.8.1 Elementos Lxicos Comentrios
Exemplo 2: A<=B and C;  esta operao realiza a and de B com C e o resultado colocado em A Comentrios em VHDL so iniciados por dois hfens adjacentes (), podendo ser estentido at o nal da linha. Exemplo 1:  a linha que voc colocar como comentrio, dever conter dois hfens adjacentes no incio

Identicadores

Quando se escreve um programa em VHDL, deve-se tomar certos cuidados, com os identicadores,

na gura2.11 so apresentados alguns identicadores vlidos e invlidos.

Figura 2.11: Identicadores

Tipos de dados no lgicos BIT: Real:


Assume valores `0' e `1' .

Abaixo so listados alguns tipos de dados no lgicos:

Boolean: Integer:

Assume valores true ou false.

Representam valores reais

4 . Ex: -3.2, 4.56, 6.0, -2.3E+2 5 .Ex: 3, 546, -349


Tipos pr-denidos: ps, ns, um, ms, sc,

Representam valores interiros

Physical:

Representam uma medida fsica: voltagem, capacitncia, tempo.

min, hr.

Intervalos:

Permite determinar um intervalo de utilizao dentro de um determinado tipo.

range <valor_menor> to <valor_maior> range <valor_maior> downto <valor_menor>

Array:

em VHDL um array denido como uma coleo de elementos do mesmo tipo.


 010001 inteiros.

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:

semelhante a  struct da Linguagem C, ou seja, uma coleo de elementos de tipos diferentes.

Figura 2.12: 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:

Figura 2.13: Operadores de Deslocamento

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

Figura 2.14: Operadores de Concatenao

2.1.8.2 Comandos Seqenciais


Nesta seo sero apresentados alguns comandos seqenciais que o VHDL dispe, veja a gura 2.15:

Figura 2.15: Comandos Sequnciais

Atribuio de Variveis

Note que a passagem de parmetros realizada utilizando-se :=.

Interpretao do programa:

Na linha 15 o bit menos signicativo do vetor C receber  um e o outro  zero .

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

A passagem de parmetros para sinais se d com o uso de <=.

CAPTULO 2.

DESIGN DIGITAL

20

Figura 2.16: Atribuio de Variveis

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

Figura 2.17: Exemplo apresentando etapas de simulao

Figura 2.18: Atribuio de Sinais

CAPTULO 2.

DESIGN DIGITAL

22

Figura 2.19: Exemplo de atribuio de sinais

CAPTULO 2.

DESIGN DIGITAL

23

2.1.9 Descrio de Comportamento (Process )


O comportamento, ou funcionalidade, de um sistema corresponde a uma lista de operaes a serem executadas para se obter um determinado resultado. Process o modo formal de se fazer uma lista seqencial dessas operaes, e tem um formato estruturado. Existem algumas regras para se fazer uma descrio process. Inicialmente, deve-se especicar que a listagem corresponde a um process, e isto feito pelo comando process, que ca posicionado aps o nome e os dois pontos. Da mesma forma este nome deve ser colocado aps a declarao end of process. Para separar as operaes seqenciais de comandos tais como variable ou constant, a declarao begin usada para marcar o inicio da listagem das operaes seqenciais. Ao contrario de linguagens de programao convencionais, processos descritos em VHDL no terminam. Aps a execuo do ltimo comando, process executado novamente desde o primeiro comando. Circuitos eletrnicos em geral operam em modo continuo, aguardando ocorrncia de certas condies de entrada, executando tarefas, suspendendo as atividades quando se completa o servio, e novamente retomando o servio na ocorrncia de certas condies de entrada. Em VHDL suspende-se um processo pelo comando wait. Este comando pode suspender o processo incondicionalmente, ou apresentar uma lista de condies a serem satisfeitas para se retomar a operao normal. O comando wait pode aparecer em trs formas distintas, como exemplicado na gura2.20.

Figura 2.20: Comando Wait

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.

Figura 2.21: Utilizao da 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.

Figura 2.22: Re-execuo de processo

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.

Figura 2.23: Suspenso de processo

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.

A listagem a seguir ilustra como se declara e utiliza as variables.

Considere os mesmos valores iniciais do

exemplo anterior e veja o cdigo mostrado na gura 2.24.

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.

2.1.10 Controle da Seqncia


Como os processes representam sistemas reais, esto sujeitos a constantes mudanas externas e assim, normalmente no executam todas as instrues. Estas mudanas externas podem ser modeladas em VHDL pelos comandos condicionais.

CAPTULO 2.

DESIGN DIGITAL

25

Figura 2.24: Continuao de Suspenso de Processo

Figura 2.25: Signal versus Variable

2.1.10.1 Comando if then


Algumas operaes so executadas somente se certas condies forem satisfeitas, e so chamadas de operaes condicionais. Se a condio for verdadeira, ento a lista de operaes executada. As operaes desta lista devem estar separadas

por ponto-e-vrgula. Ao trmino destas operaes deve ser colocado o end if. Considere como exemplo o process de um

ip-op D ativo por rampa de subida mostrado na gura 2.26.

2.1.10.2 Comando if then else


O comando if then pode ser modicado para se obter maior exibilidade atravs do comando if then else. Se a condio for verdadeira, a primeira operao executada, caso contrario, a segunda operao executada. verdade, cada condio podem ser varias operaes separadas por ponto-e-vrgula. Para uma maior exibilidade ainda, este comando pode incluir novos testes atravs do elsif. A listagem da gura 2.27 ilustra como exemplo o process de um ip-op tipo D ativo por rampa de subida, com linha de reset ativa por  1 . Na

2.1.10.3 Comando Case


O uso do comando if then else com outros if  aninhados serve para selecionar uma ramicao, mas pode car complicado se o nmero de opes se tornar maior que trs. Para esta situao utiliza-se o comando case. Ao invs de se avaliar uma expresso booleana, o comando case verica as condies de uma expresso discreta ou 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

Figura 2.26: Comando if-else

Figura 2.27: Comando If-Then-Else

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.

2.1.10.4 Comando For Loop


O comando for loop se repete por um nmero especico de vezes. Este comando usa um contador, e desde que o valor do contador esteja em uma certa faixa, o loop executado. Ao trmino de cada execuo do loop, o contador atualizado. O contador no precisa ser declarado e tratado como uma constante, e s existe dentro do loop. A listagem da gura 2.29 ilustra um exemplo de uso deste comando.

2.1.10.5 Comando Next


Algumas vezes se torna necessrio pular alguns comandos do loop e ir diretamente para a prxima interao. Esta situao pode ser obtida pelo comando next, como exemplicado pela gura 2.30.

Alguns exemplos ilustrativos so mostrados nas guras 2.31e2.32.

CAPTULO 2.

DESIGN DIGITAL

27

Figura 2.28: Comando Case

Figura 2.29: Comando For-Loop

CAPTULO 2.

DESIGN DIGITAL

28

Figura 2.30: Comando Next

Figura 2.31: Exemplo 1

CAPTULO 2.

DESIGN DIGITAL

29

Figura 2.32: Exemplo 2

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:

Criao do projeto de um circuito lgico;

Utilizao de blocos lgicos existentes; Criao de blocos lgicos a partir de Cdigo VHDL.

Simulao; Atribuio de Pinos; Compilao; Etapas de Gravao.

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.

2.2.1 Criao do projeto de um circuito lgico


Com o software Quartus II aberto, para criar um novo projeto basta acessar o menu FILE e escolher a opo NEW

PROJECT WIZARD. A janela de Introduo (gura 2.33) ser mostrada:

Figura 2.33: Janela Introduo

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.

Figura 2.35: New Project Wizard: Add File

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

Package, Pin Count e Speed Grade.

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

Figura 2.36: New Project Wizard: Family & Device Settings

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).

Figura 2.37: New Project Wizard: EDA Tools Settings

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

Diagram/Schematic File. Clique em OK.

CAPTULO 2.

DESIGN DIGITAL

33

Figura 2.38: New Project Wizard: Summary

Figura 2.39: Janela New

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

Figura 2.40: Tela Diagrama de Blocos - Quartus II.

CAPTULO 2.

DESIGN DIGITAL

35

2.2.1.1 Utilizao de Blocos Lgicos Existentes


Para utilizar Blocos Lgicos Existentes clique no boto Symbol Tool como mostrado na gura 2.41.

Figura 2.41: Boto Symbol Tool

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.

Figura 2.42: Diretrio Logic do Quartus II

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

Figura 2.43: Porta AND no Diagrama de Blocos

Figura 2.44: Pinos Input e OutPut

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

Figura 2.45: Orthogonal Node Tool

Figura 2.46: Pin Properties

CAPTULO 2.

DESIGN DIGITAL

38

2.2.1.2 Criao de blocos lgicos a partir de cdigo VHDL


Para criar blocos lgicos prprios utilizando cdigos em VHDL, voc deve realizar os passos que se seguem. Esta ferramenta muito importante, pois aqui o usurio car livre para criar o componente especco necessrio sua aplicao. O primeiro passo acessar o menu FILE e a opo NEW. A janela NEW (j apresentada) se abrir. Nela escolha a opo VHDL File na aba Device Design File. Como na gura 2.47.

Figura 2.47: Novo arquivo VHDL

Agora o cdigo referente uma porta lgica OR deve ser incluido na janela aberta (gura 2.48).

Figura 2.48: Janela com cdigo OR em VHDL

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).

Um processo de compilao se iniciar. aparecer (gura 2.50).

Aguarde a concluso e depois feche a aba COMPILATION REPORT que

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

Figura 2.49: Menu CREATE/UPDATE

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

Figura 2.50: Aba Compilation Report

Figura 2.51: Diretrio Symbol Tools

Figura 2.52: Abrir smbolo criado por cdigo VHDL

CAPTULO 2.

DESIGN DIGITAL

41

Figura 2.53: Bloco vhdl_or

Figura 2.54: vhdl_or no diagrama de blocos

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 .

Figura 2.55: Compilar

Algumas janelas aparecero (para entend-las melhor v sesso 2.2.4)e se tudo estiver correto

8 voc pode prosseguir.

Agora acesse o menu FILE, opo NEW. Na janela que se abrir, clique na aba OTHER FILES e selecione VECTOR

WAVEFORM FILE (gura 2.56).

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

Figura 2.56: Criando Vector Waveform FILE

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 do gura 2.61aparecer. Clique no boto NODE FINDER.

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

Figura 2.57: Vector Waveform File

CAPTULO 2.

DESIGN DIGITAL

45

Figura 2.58: Menu EDIT, opo END TIME

Figura 2.59: Janela END TIME

CAPTULO 2.

DESIGN DIGITAL

46

Figura 2.60: Insert Node or Bus ...

Figura 2.61: Janela Insert Node or Bus

CAPTULO 2.

DESIGN DIGITAL

47

Figura 2.62: NODE FINDER

Figura 2.63: Seleo na Janela NODE FINDER

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).

Figura 2.64: Grid de Simulao com entradas denidas

Figura 2.65: Menu e OVERWRITE CLOCK

A janela da gura2.66se abrir.

Nela especicaremos os padres de sinais de entrada que se alteram ciclicamente.

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

10 ). Se o radial button TIME PERIOD no estiver selecionado, selecione-o. Isto

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.

Figura 2.66: Janela CLOCK

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.

Figura 2.67: Boto de Incio de simulao

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)

Figura 2.68: Resultados de Simulao

Podemos constatar que o circuito funciona conforme o esperado. E hora de partir para a implementao em hardware.

Aps tal constatao as janelas de resultado e do

VECTOR WAVEFORM FILE, podem ser fechadas e agora temos certeza que a parte de cdigo do projeto funcionra.

2.2.3 Atribuio de Pinos


Para atribuir pinos a cada entrada e/ou sada do seu diagrama de blocos voc precisa acessar um mdulo chamado PIN

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

Figura 2.69: PIN PLANNER

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 .

Figura 2.70: Location

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.

2.2.5 Etapas de Gravao


Para carregar o programa na FPGA voc precisar acessar o PROGRAMMER. Para isso clique no boto indicado na gura 2.72.

CAPTULO 2.

DESIGN DIGITAL

51

Figura 2.71: PROGRESS

Figura 2.72: Boto PROGRAMMER

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.

Figura 2.73: Janela PROGRAMMER

2.3

Testando Seu Design em um Kit FPGA

2.3.1 Carregando Seu design do Computador para UP2


Para testar seu design em Kit UP2, plugue o cabo ByteBlaster na porta paralela de um PC. Se voc j no fez, tem certeza que o settting de BIOS do PC para o porto de impressora ECP ou modo de EPP. Usando um 9V AC a DC parede transformador ou outra 7 a 9V DC fonte, conecte (DC_IN) situado no canto esquerda superior da board de UP2. Quando corretamente um do LEDs verde na board deveria iluminar.

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.

2.3.2 Preparando para Carregar


Depois de conferir para ter certeza que os cabos e jumpers esto corretamente pronto para carregar o circuito compilado UP2 board. Selecione Tools/Programmer. Clique em Hardware Setup, selecione o prprio hardware, o cabo ByteBlasterII em LPT1. (Se uma janela surge isso exibe, " No Hardware" direita do boto de Hardware Setup, use o boto Hardware Setup para mudar o hardware atualmente selecionado de " No Hardware " para " ByteBlaster II ". Se uma JTAG erro mensagem vermelha se aparece ou o boto de comeo no est trabalhando, feche a janela Programmer e reabre isto. Se isto no corrigir o problema, ento h qualquer outra coisa errado com a organizao ou conexo de cabo. Volte para o comeo desta seo e conra cada passo e conexo cuidadosamente.) O USB ByteBlaster novo tambm pode ser usado.

2.3.3 Passos nais para Carregar


Tenha certeza que o Device Name mudou para EPF10K70RC240 para o UP2. o pino para uma board de UP2 (veja tabela 1.1). Program/Congure. O boto Start na janela de programao deveria ser realado agora. Clique no boto Start para carregar UP2 board. So exigidos alguns segundos carregar. Se carregar com xito, um mensagem verde de operao de programador prspera exibe na janela de sistema. (Se o boto Start no realado, clique Hardware Setup da janela programmer. Conrme as colocaes e clique OK. Tenha certeza voc tambm nomeou Logo, conra a caixa de Se no exibir o dispositivo correto, ento devolva seu esquemtico, nomeie o dispositivo correto primeiro e ento o pino certo, recompile, e tente novamente.

CAPTULO 2.

DESIGN DIGITAL

53

2.3.4 Testando Seu design


Os locais de PB1, PB2, e o LED indicado em Figura 1.19. monitorar a produo CONDUZIDA. No UP2, um do display sete segmento so usados para

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:

luz _de_advertncia = motorista_presente cinto_em_uso ignicao_ligada e


Ver Tutorial Quartus II (seo 2.2).

54

CAPTULO 3.

APLICAES E PRTICA

55

Figura 3.1: Cdigo em VHDL 1

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

Tabela 3.1: Tabela Verdade

CAPTULO 3.

APLICAES E PRTICA

56

Figura 3.2: Diagrama Esquemtico 1

Figura 3.3: Diagrama de Tempo 1

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

Figura 3.4: Cdigo em VHDL 2

CAPTULO 3.

APLICAES E PRTICA

59

Figura 3.5: Diagrama Esquemtico 2

Figura 3.6: Dene Pino do Barramento

CAPTULO 3.

APLICAES E PRTICA

60

Figura 3.7: Count Value da Simulao

Figura 3.8: Diagrama de Tempo 2

CAPTULO 3.

APLICAES E PRTICA

61

Figura 3.9: Cdigo Fonte em VHDL 3

Figura 3.10: Diagrama Esquemtico 3

CAPTULO 3.

APLICAES E PRTICA

62

Figura 3.11: Diagrama de Tempo 3

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.

Simulou-se o diagrama de tempo. O resultado ser como mostra a gura3.15.

CAPTULO 3.

APLICAES E PRTICA

63

Figura 3.12: Cdigo Fonte em VHDL 4

Figura 3.13: Diagrama Esquemtico 4

CAPTULO 3.

APLICAES E PRTICA

64

Figura 3.14: Denir cada linha de Tempo

Figura 3.15: Diagrama de Tempo 4

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.

Escreva o cdigo VHDL, fazer o diagrama esquemtico e o diagrama de tempo.

Soluo:
Ver Tutorial Quartus II (seo 2.2).

CAPTULO 3.

APLICAES E PRTICA

66

Figura 3.16: Cdigo Fonte em VHDL 5

CAPTULO 3.

APLICAES E PRTICA

67

Figura 3.17: Diagrama Esquemtico 5

CAPTULO 3.

APLICAES E PRTICA

68

Figura 3.18: Diagrama de Tempo 5

Você também pode gostar