Você está na página 1de 47

Universidade Estadual de Campinas - UNICAMP Faculdade de Engenharia Eletrica e de Computa ao - FEEC c Departamento de Engenharia de Computa ao e Automa ao Industrial - DCA c c

- TUTORIAL Altera Quartus II e Kit de Desenvolvimento DE1

Verso 2.1 a Campinas, 30 de julho de 2010

Notas da Verso a
Verso 2.1: Uma atualizao da verso anterior, do primeiro semestre de 2010. Foram inclu a ca a das a seo sobre FPGA e sobre a visualizao grca de netlist. Foi tambm revisada ca ca a e a seo de analisador de tempos. ca Verso 2.0: Reescrita do texto originalmente proposto no segundo semestre de 2009. Ama pliao do contedo e adequao das guras referentes ao ambiente de desenvolvimento ca u ca Quartus II para a verso 9.11 a

Licena de Uso c
Este tutorial tem objetivo puramente educativo, sem nenhuma nalidade lucrativa. Sua cpia o para nalidades educacionais e pessoais, total ou parcial, totalmente permitida pelos autores. e

Na data de publicao deste manual, disponibilizado em (Altera, 2010f) uma verso j com o pacote de ca e a a atualizaes SP2. co

Prefcio da Verso 2.1 a a


As dvidas levantadas pelos alunos da disciplina de EA773 Laboratrio de Circuitos u o Lgicos, ao longo do primeiro semestre de 2010, nos motivaram a inserir uma seo sobre a o ca visualizao grca do resultado sintetizado pelo aplicativo Quartus II, fazer uma brev ca a ssima introduo aos dispositivos FPGAs e revisar a seo sobre os tempos gerados pelo seu ca ca analisador temporal clssico. a Agradecemos a todos os nossos alunos que contribu ram, direta e indiretamente, ` melhoa ria do contedo deste breve tutorial e esperamos que ele facilite os novos usurios de Quartus u a II a explorar toda a sua potencialidade. Continuamos abertos a todas as cr ticas construtivas para aprimorar este material. Bom proveito!

Prof. Dra. Wu Shin - Ting ting AT dca DOT fee DOT unicamp DOT br 30 de julho de 2010

Prefcio da Verso 2.0 a a


O in deste texto deu-se a partir da Verso Beta 1.0 a qual foi desenvolvida no segundo cio a semestre de 2009 pelo monitor da disciplina Lucas Martins Guido. Assim sendo, esse texto foi inicialmente pensado para ser a Verso 1.1. Contudo, devido ao grande nmero de correes, a u co sugestes e adequaes para a verso 9.1 do Quartus II, achamos melhor classicar essa o co a nova verso do tutorial como 2.0. a A princ pio, partimos da organizao do texto apresentado anteriormente na Verso ca a Beta 1.0. Entretanto, pensamos em suplantar algumas partes do texto, explorar melhor alguns exemplos apresentados anteriormente e, alm disso, apresentar as referncias principais para e e aqueles que utilizaro esse ambiente de desenvolvimento pela primeira vez. Como consequncia, a e a estruturao inicial do texto, proposta anteriormente, teve que ser alterada para adequar-se ca `s modicaes realizadas. a co Esse breve tutorial foi pensado para os alunos da disciplina EA773 Laboratrio de o Circuitos Lgicos os quais utilizaro, ao longo do curso, a placa de desenvolvimento da Terasic o a Technologies, a Development and Education Board DE1. Gostar amos de ressaltar que existe um excelente manual na pgina do fabricante (Altera e Terasic, 2010) o qual sugerimos fortea mente que seja utilizado como fonte principal de informaes sobre a placa DE1, onde todos co os mdulos funcionais da placa so apresentados em grande detalhe. o a A seo das principais perguntas apresentadas pelos alunos em semestres anteriores foi ca mantida a menos de modicaes no texto para melhor compreenso. Provavelmente no nal co a do semestre, novas informaes venham a ser inseridas. co Aos mais experientes, ca a sugesto para aprofundar-se a partir do estudo da pgina do a a fabricante do Quartus II, onde poss encontrar muita informao, muito mais detalhadas e vel ca do que apresentado aqui. e Agradecemos a todos os nossos alunos que contribu ram com suas perguntas, observaes, co e solues criativas ao longo dos cursos que lecionamos. Estamos sempre abertos para cr co ticas construtivas a m de melhorar o material apresentado. E, por m, esperamos que este breve tutorial te ajude a entrar ao fantstico mundo de a Projetos Digitais. Prof. Dra. Wu Shin - Ting ting AT dca DOT fee DOT unicamp DOT br Filipe Ieda Fazanaro lipe DOT fazanaro AT gmail DOT com 11 de maio de 2010

Prefcio da Verso 1.0 a a


Esse tutorial foi criado para nalidades educacionais, inicialmente com o objetivo de auxiliar os alunos de EA773-Laboratrio de Circuitos Lgicos, na UNICAMP. O software Quartus II que o o utilizei para a obteno das imagens contidas neste tutorial a verso Web Edition que no ca e a a requer licena. c Escrevi na forma de um passo-a-passo, que comea desde o download do software e abrange a c prototipagem do sistema digital, simulao em software e dicas rpidas. No me preocupei em ca a a usar uma linguagem rebuscada e procurei durante o texto todo colocar a informao de uma ca forma agradvel. a No nal desse tutorial voc encontrar um FAQ com as perguntas mais frequentes durante as e monitorias. Possivelmente suas dvidas futuras podem aparecer l. u a Meu objetivo transmitir aos colegas um pouco da experincia que adquiri em alguns semestres e e lidando com essa placa e software. Dicas para melhorar esse material so muito bem-vindas. a Agradeo a todos que colaboraram para a criao deste tutorial, contribuindo com dvidas, c ca u incentivo e apoio. Espero que ajude. Abraos, c

Lucas Martins Guido 06 de setembro de 2009

Sumrio a
1 Introduo ca 2 Comeando com Alguns Conceitos c 2.1 2.2 2.3 2.4 2.5 Projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Metodologia de Projeto Hierrquico . . . . . . . . . . . . . . . . . . . . . . . . . a N de Abstrao de um Sistema Digital . . . . . . . . . . . . . . . . . . . . . vel ca FPGAs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . VHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . II 7 7 7 8 9 10 11 12 15 15 16 17 19 20 21 21 23 24 25 27 29 31 33

3 Instalando o Quartus

4 Modelando Um Projeto 4.1 4.2 Modelo Comportamental . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modelo Estrutural . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . II

5 Criando um Projeto no Quartus 6 Criando Arquivos de Projeto 7 Capturando o Esquemtico a 7.1 7.2 7.3 7.4

Insero de Componentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ca Ligao entre Componentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ca Nomeao dos Pinos de Entrada e de Sa . . . . . . . . . . . . . . . . . . . . . ca da Nomeao das Linhas das Ligaes . . . . . . . . . . . . . . . . . . . . . . . . . ca co

8 Descrevendo em VHDL 9 Encapsulando os Componentes 10 Compilando 11 Visualizando os Resultados da Compilao ca 12 Analisando as Restries de Tempos do Projeto co 5

13 Simulando 14 Carregando o Projeto 15 FAQs 15.1 Por que a onda de sa est deslocada para a direita em relao `s entradas . . da a ca a 15.2 O que so esses picos que ocorrem, `s vezes, nas transies? . . . . . . . . . . . a a co 15.3 Como aumento o tempo mximo nas simulaes? . . . . . . . . . . . . . . . . . a co 15.4 No compila e aparece que o problema a hierarquia. . . . . . . . . . . . . . . . a e 15.5 O nome do meu projeto Projeto da Moada e no compila. Por qu? . . . . . e a c a e 15.6 Tenho 200 entradas que cam em 1 sempre, mais 200 que sempre cam em 0. Quando coloco no Waveform ca uma baguna. J que eu no tenho que c a a mud-las sempre, tem algo mais prtico a ser feito? . . . . . . . . . . . . . . . . a a 15.7 Fui no TTL HandBook e justamente a pgina que eu queria no estava l. O a a a que fao? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . c 15.8 Sumiram as ferramentas do Waveform. . . . . . . . . . . . . . . . . . . . . . . . 15.9 No simulador, os pinos no aparecem. . . . . . . . . . . . . . . . . . . . . . . . . a 15.10Simulei anteriormente, inseri e tirei alguns pinos, quero simular novamente. Compilo e quando abro o simulador s tenho pinos antigos. Que fazer? . . . . . . . . o 15.11Sumiram as ferramentas da rea de trabalho. . . . . . . . . . . . . . . . . . . . . a 15.12Estou na tela de associao de pinos com endereos, para gravao. O problema ca c ca que minha tela no mostra, na parte de baixo, os pinos do meu projeto. . . . . e a

34 39 41 41 42 42 42 42

43

43 43 43

43 43

44

15.13Estou na tela de associao de pinos com endereos, para gravao. O problema ca c ca que minha tela no mostra, ao lado dos pinos do meu projeto, a coluna Location. 44 e a 15.14Estou na tela de gravao mas no consigo gravar. . . . . . . . . . . . . . . . . . ca a 15.15Usei o clock da placa e todos os meus LEDs cam acesos. . . . . . . . . . . . . 15.16Por que ao renomear um pino de entrada com o nome CLOCK 27, o sistema no a o associa ao pino do relgio de 27 MHz do kit? . . . . . . . . . . . . . . . . . . . o 44 44

44

Introduo ca

Esse tutorial foi elaborado com o objetivo de auxiliar os alunos do curso EA773 Laboratrio de Circuitos Lgicos da Faculdade de Engenharia Eltrica e de Computao (FEEC), o o e ca UNICAMP, os quais, pelo menos em sua maioria, tero contato pela primeira vez com o ama biente Quartus II, da Altera (Altera, 2010a) bem como com a placa de desenvolvimento DE1 (Altera e Terasic, 2010) a qual disponibilizada aos alunos durante o curso. Para aqueles e que j tiveram a oportunidade de utilizar tanto o software quanto a placa (ou que j trabalham a a com outros dispositivos lgicos programveis da Altera) e queiram se aprofundar sobre as suas o a possibilidades, sugere-se que as referncias (Altera, 2010a; Altera, 2010f) sejam utilizadas como e fonte de informao. ca Durante o 2o semestre de 2010, o curso tem como base os roteiros experimentais propostos no seguinte endereo eletrnico: c o http://www.dca.fee.unicamp.br/courses/EA773/2s2010/index.html Em primeiro lugar, apresentamos alguns conceitos uteis relacionados com o ambiente de desenvolvimento Quartus II. Em seguida, sero apresentados os principais passos que a um aluno pode seguir para criar um projeto nesse ambiente de desenvolvimento, desde a sua instalao, passando pelos procedimentos de congurao, criao de um ambiente de projeto, ca ca ca criao dos arquivos de projeto, utilizando tanto esquemtico quanto linguagens de descrio ca a ca de hardware, tais como VHDL, compilao, simulao, e anlise do desempenho temporal. E, ca ca a nalmente, so dados os passos necessrios para programar um chip FPGA dispon no kit a a vel DE1. Todos esses passos so exemplicados a partir de um projeto de mquina de 4 estados. a a

Comeando com Alguns Conceitos c

Nesta seo apresentada uma breve introduo aos termos relacionados com o desenca e ca volvimento de um projeto digital.

2.1

Projeto

Tanto no Quartus II como em diversos aplicativos de desenvolvimento de circuitos digitais congurveis, todos os dados referentes ao circuito devem estar contidos em um projeto. a Um projeto uma espcie de ambiente em que poss desenhar um circuito lgico digital, e e e vel o executar compilaes, simulaes, analisar sinais em tempo de execuo (Altera, 2010c) etc. co co ca Um projeto inclui o nome do projeto, a pasta, o nome da entidade no topo do n hierrquico vel a corrente e o dispositivo onde o projeto ser carregado. Arquivos que no estejam relacionados a a ao projeto no sero levados em conta na compilao e muito menos durante a simulao. a a ca ca 7

Muitos erros ocorrem devido ao descaso com os arquivos do projeto, que devem estar juntos em uma mesma pasta. Com isso em mente e para evitar problemas, vale o seguinte lema: UM projeto, UMA pasta. O primeiro passo para comear um projeto no Quartus II consiste em criar uma c pasta para colocar os respectivos arquivos. Faa isso como de costume, escolha um local (que c pode ser um pendrive, mesmo no sendo aconselhvel) no computador e crie uma pasta vazia. a a Um detalhe bastante importante consiste no fato de que o nome da pasta no pode conter a espaos. Por essa razo, Projeto 01 no um nome vlido e, ao invs disso, deve-se optar, c a a e a e por exemplo, por Projeto.01 ou por Projeto_01.

2.2

Metodologia de Projeto Hierrquico a

Metodologia de projeto hierrquico consiste essencialmente em dividir projetos em uma a estrutura hierrquica de entidades de projeto. Cada uma das entidades possui uma funo a ca espec ca e uma interface de iterao com outras entidades. Assim, um projeto pode ser ca visto atravs de diferentes n e veis de hierarquia, desde os blocos lgicos elementares at a viso o e a geral no topo da hierarquia. Quando o uxo de desenvolvimento de um projeto parte dos blocos elementares e, ento, integr-los em entidades de n mais alto, dito que se trata da a a vel e metodologia bottom-up. E quando o uxo de projeto ocorre no sentido inverso, saindo de um n de concepo geral e vai se detalhando at chegar a um n realizvel com a tecnologia vel ca e vel a dispon vel, a metodologia conhecida como top-down. e No ambiente Quartus II poss adotar a metodologia bottom-up, top-down, ou e vel a combinao das duas para desenvolver um projeto. Neste curso ser usada a metodologia ca a bottom-up que impe a seguinte estrutura: diversas entidades auxiliares que devem ser agregadas o para constituir uma entidade de projeto principal. Essas entidades so colocadas em uma espcie a e de rvore, o que forma uma hierarquia. No respeitar essa hierarquia de entidades resulta em a a erros durante a compilao do projeto, pois a compilao executada de forma ascendente, ou ca ca e seja, a entidade no topo ser o ultimo lido no processo de compilao. Pode-se ilustrar estes a ca conceitos com um exemplo. Imagine que se tenha como objetivo criar um relgio digital com despertador, isto , o e quando o horrio for igual ao horrio selecionado o relgio despertar. Supe-se ainda que exista a a o a o uma lista de componentes e ferramentas que podero ser utilizadas, entre as quais guram um a relgio digital e um comparador. Pode-se ento construir a partir do relgio e do comparador o a o um despertador, conforme mostra a Figura 1. A entidade Relgio COM Despertador o topo o e da hierarquia de projeto. Diversas vantagens podem ser destacadas quando se emprega a metodologia hierrquica a no desenvolvimento de um projeto. Uma delas que o desenvolvimento do projeto pode ser e 8

Relgio COM o

COMPILACAO

despertador

Comparador

Relgio o

Figura 1: Hierarquia de entidades de projeto. realizado por partes, ou seja, cada entidade de projeto compilado, analisado, simulado e e testado separadamente. Assim, garante-se que o seu funcionamento esteja de acordo com as especicaes do projeto e, eventualmente, erros, modicaes e otimizaes tornam-se tarefas co co co mais simples de serem executadas. Adicionalmente, ao se analisar o projeto como um todo, ca mais simples procurar por eventuais erros que venham a ocorrer e, consequentemente, facilita o trabalho para a sua correo j que os mdulos foram testados previamente. Na Seo 9 so ca a o ca a discutidos os principais procedimentos para que uma ou mais entidades desenvolvidas em um projeto A sejam empregados em um outro projeto B e/ou C.

2.3

N vel de Abstrao de um Sistema Digital ca

Um projeto em circuitos digitais pode ser analisado a partir de diferentes n veis de abstrao, como ilustrado na Figura 2 (adaptado a partir de (der Spiegel, 2010)) facilitando, ca e assim, a descrio e o desenvolvimento do projeto, independentemente de sua complexidade. ca

S <= A + B
Comportamental
Algoritmico Fluxo de dados

Estrutural
Componentes Interconexes o

F sico
Implementao ca

Figura 2: N veis de abstrao de um projeto digital. ca O mais alto n de abstrao o comportamental onde se descreve o circuito em vel ca e 9

termos do que ele faz, o que ele implementa e como ele se comporta. Em outras palavras, a descrio comportamental mostra a relao entre os sinais de entrada e os de sa tal como ca ca da uma tabela-verdade, ou a relao entre os estados por meio de uma tabela de transies ou um ca co diagrama de estados. J no n estrutural tem-se a descrio do sistema em termos dos coma vel ca ponentes lgicos (tais como portas lgicas, registradores e ip-ops) interconectados, ou seja, as o o estruturas lgicas que realizam as funes especicadas nos requisitos do projeto. Finalmente, o co no n f vel sico ocupa-se com a tecnologia onde o projeto ser implementado. Esta tecnlogia a pode variar desde os componentes lgicos de funo xa, como os circuitos integrados da fam o ca lia lgica TTL ou CMOS, at os dispositivos lgicos programveis (PLDs Programmable Logic o e o a Devices) de alta densidade.

2.4

FPGAs

Diferentemente dos circuitos integrados da fam lgica TTL ou CMOS, que tem as lia o suas funes lgicas denidas no ato de fabricao, as matrizes de portas programveis em co o ca a campo, mais conhecidos como FPGAs Field Programmable Gate Arrays, caracterizam-se por apresentarem as suas funcionalidades conguradas exclusivamente pelos usurios. Esta a classe de dispositivos lgicos foi inventada por Ross Freeman, um dos fundadores de Xilinx Inc. o em 1984, e teve o seu lanamento no ano de 1985. c Distinguem-se num FPGA trs mdulos: blocos de entrada e sa e o da, blocos lgicos cono gurveis, e uma matriz de chaves de interconexo. Os blocos lgicos so dispostos de forma a a o a bidimensional, as chaves de interconexo so dispostas em formas de trilhas verticais e horia a zontais entre as linhas e as colunas dos blocos lgicos, e os blocos de entrada e de sa so o da a dispostos na borda do chip. Tipicamente, os blocos lgicos compreendem alguns ip-ops e o lgicas combinacionais, e as interconexes entre eles podem ser conguradas por meio de um o o arquivo binrio, conhecido genericamente como bitstream. Vale observar que para a maioria a dos FPGAs este arquivo precisa ser recarregado aps cada corte de energia. o Para facilitar a congurao de um dispositivo lgico programvel, existem aplicativos ca o a vendidos por terceiros capazes de converter as descries de um projeto em alto n numa co vel malha de blocos lgicos conectados, tambm conhecida como netlist, e transformar esta malha o e num layout incluindo blocos lgicos, blocos de entrada e de sa e caminhos de interconexes o da o existentes nesses dispositivos lgicos. Tais aplicativos so conhecidos como compiladores o a lgicos. o

10

2.5

VHDL

A Linguagem de Descrio de HardwareVHDL2 foi desenvolvida em meados da dcada ca e de 1980 pelo Departamento de Defesa dos Estados Unidos como uma forma concisa de documentar os projetos desenvolvidos sobre circuitos integrados de alta velocidade (VHSIC) e, posteriormente, padronizada pelo IEEE (IEEE-VHDL, 2009). Com o desenvolvimento de componentes eletrnicos recongurveis para construir circuitos digitais, tais como os FPGAs, o o a padro VHDL se transformou em uma das principais linguagens de descrio de hardware de a ca alto n para projetar e implementar circuitos digitais (Tocci, Widmer e Moss, 2008). vel O VHDL permite, ento, que o sistema digital seja descrito tanto em n estrutural a vel quanto em n comportamental, focando no percurso dos dados ao longo do uxo de dados vel e como eles so tratados (sequencialmente ou concorrentemente) (IEEE-VHDL, 2009; a Pedroni, 2008; Perry, 2002; der Spiegel, 2010; Tocci et al., 2008). Assim como qualquer linguagem de especicao, o VHDL obedece alguns padres de ca o estruturao. Deve-se atentar ao fato de que o VHDL, como o prprio nome diz, uma linguaca o e gem de descrio de hardware e, portanto, deve-se ter em mente que o cdigo ir descrever um ca o a circuito digital, o seu comportamento, a maneira pela qual sero tratados os sinais envolvidos. a No Cdigo 1 apresentado um exemplo da descrio de um semi somador de dois bits xi e yi o e ca em VHDL, cujo resultado de soma e de transporte , respectivamente e

p i = xi yi gi = x i y i q 0 (1)

Basicamente, um circuito descrito a partir do padro VHDL composto de trs partes. a e e Na primeira parte, no cabealho, denem-se as bibliotecas que sero empregadas no circuito c a do semi somador descrito pelo Cdigo 1. Na segunda parte dene-se a entidade (Entity) o que representa o circuito. Nesse ponto, so denidas todas as portas de entrada e de sa a da e, tambm, os tipos de sinais que sero empregados. Por exemplo, pode-se denir que uma e a determinada entrada da entidade receba bits de sinais. A sutileza ao denir, por exemplo, uma entrada como binria consiste no fato de que a varivel somente aceitar n a a a veis lgicos ALTO o (1) ou BAIXO (0). J ao se denir como sinal lgico (como explicitado no Cdigo 1), as a o o variveis podem receber, alm de 1 e 0, sinais indeterminados (dont care). a e Finalmente, na terceira parte do cdigo, dene-se a arquitetura do circuito, ou seja, o seu o funcionamento propriamente dito. As funes xor e and so denidas a partir das bibliotecas co a inclu das na primeira parte, logo no in do cdigo (IEEE-VHDL, 2009). cio o E importante salientar que no objetivo deste tutorial realizar estudos aprofundados a e
2 Abreviao do termo, em ingls, Very High Speed Integrated Circuit (VHSIC) Hardware Description ca e Language (HDL).

11

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity semi_somador is port ( xi : in std_logic; yi : in std_logic; pi : out std_logic; gi : out std_logic ); end semi_somador; architecture behavior of semi_somador is begin pi <= xi xor yi; gi <= xi and yi; end behavior; Cdigo 1: Descrio de um semi-somador em VHDL. o ca

quanto ao padro VHDL. Para isso, recomenda-se o estudo atento de livros especializados sobre a o assunto tais como o de Pedroni (2008) e o de Perry (2002), o material apresentado em (der Spiegel, 2010) e, principalmente, pela documentao referente ` padronizao disponibilizada ca a ca em (IEEE-VHDL, 2009).

Instalando o Quartus

II

A Altera disponibiliza uma verso gratuita do Quartus II, denominada de Web Edia tion em seu site, sem que haja a necessidade de aquisio de uma licena comercial3 . Basta ca c fazer o download e instalar no seu computador. Atualmente o endereo para o download : c e https://www.altera.com/support/software/download/altera_design/quartus_we/ dnl-quartus_we.jsp
Existem algumas diferenas entre a verso gratuita e a verso comercial. Basicamente, essa diferena conc a a c siste no tipo de licena a qual libera ou no determinadas funcionalidades do software. Para maiores informac a ces, deve-se analisar o seguinte endereo eletrnico: http://www.altera.com/products/software/products/ o c o quartus2web/features/sof-quarweb_features.html.
3

12

O arquivo de instalao da verso 9.1 do Quartus II possui um tamanho aproximado ca a 4 de 1.95 GB e j vem com os pacotes de atualizaes (quando existentes) embutidos5 . Cona co tudo, ao selecionar todos os pacotes dispon veis, aps nalizado o procedimento de instalao, o ca o Quartus II chega a ocupar mais de 4.1 GB. Existem alguns detalhes que podem economizar um espao no HD sem prejudicar as funcionalidades necessrias para o andamento do c a curso. Para isso, logo no in da instalao, deve-se escolher a opo Custom, como pode ser cio ca ca observado na Figura 3(a):

(a) Seleo do modo de instalao. ca ca

(b) Seleo dos pacotes a serem instalados. ca

Figura 3: Primeiras janelas do programa de instalao do Quartus ca

II.

Em seguida, tem-se a possibilidade de escolher quais pacotes podem ser instalados como mostra a Figura 3(b). No caso de omisso por parte do usurio, o software de instalao a a ca habilita os pacotes para todas as fam lias de FPGAs disponibilizados pela Altera. Como o FPGA do kit de desenvolvimento dispon aos alunos do curso EA773 um Dispositivo Lgico vel e o Programvel (Programmable Logic Device - PLD) da fam Cyclone II (Altera, 2010b), no a lia a e
Esse o arquivo de instalao para o Windows. Existe uma verso beta para Linux mas o procedimento e ca a de instalao diferente e no ser tratado neste tutorial. Um novo tutorial est em fase de desenvolvimento o ca e a a a qual abranger os principais pontos para sistemas operacionais Linux. a 5 Na data deste tutorial, a verso para download vem incorporado o pacote de atualizaes SP2. a co
4

13

necessrio instalar todos os pacotes e, dessa maneira, alguns podem ser desabilitados sem perda a de funcionalidade do Quartus II. As seguintes opes devem ser levadas em considerao co ca ao longo da instalao6 : ca Quartus II (obrigatrio): o software de desenvolvimento propriamente dito; o SOPC Builder support (obrigatrio): essa uma ferramenta obrigatria no desenvolo e o vimento do softcore NIOS II, no explorado ao longo do curso (Altera, 2010e); a IP Library (obrigatrio): contm toda a propriedade intelectual que implementa deo e terminadas funcionalidades, tais como controladores de memria, perifricos de interfaces o e (Ethernet, PCI, PCIx), dentre outras possibilidades (Altera, 2010d); Cyclone II support (obrigatrio): suporte ` fam de FPGA que usada no kit de o a lia e desenvolvimento DE1; Third-party EDA tool interfaces (opcional): ferramentas auxiliares de desenvolvimento implementadas por empresas parceiras da Altera; Tutorial files (opcional): arquivos auxiliares de tutoriais disponibilizados no diretrio o de instalao (arquivos em formato .pdf) e bastante uteis. Recomenda-se que sejam ca instalados (e estudados). Existem dois estilos para o ambiente de desenvolvimento: Quartus II e MAX+PLUS II, sendo esse ultimo layout a base para esse tutorial. A opo pelo estilo do ambiente de ca desenvolvimento aparece logo aps que a instalao do Quartus II tenha sido nalizada, o ca assim como apresentado na Figura 4(a). Caso o usurio queira alterar para o padro Quartus e a a II, basta ir em Tools > Customize Aparecer ento a janela apresentada na Figura 4(b) e, assim, pode-se selecionar a opo a a ca Quartus II. O software de desenvolvimento deve obrigatoriamente ser reiniciado para que as alteraes sejam efetivadas. co Na primeira vez que o kit de desenvolvimento conectado ao computador, assim como e qualquer dispositivo (por exemplo, pendrive, cartes de memria, cmeras fotogrcas, tocadoo o a a res de MP3), necessrio que seja instalado o driver USB-Blaster, responsvel pela comue a a nicao do kit com o computador. Em outras palavras, esse driver permite que a congurao ca ca do chip FPGA (ou em qualquer outro chip que utilize esse tipo de controlador) seja carregada nele a m de que este execute um conjunto de funes espec co co. Este driver instalado no e diretrio o
A t tulo de observao, opes relativas `s fam ca co a lias de FGPA Stratix, Cyclone, Cyclone III, Cyclone IV, MAX e outros podem ser desconsiderados. Eventualmente, opes relacionadas a outras funcico onalidades (tais como tutoriais e arquivos de ajuda) podem ser, caso seja de interesse do usurio, adicionadas a durante a instalao. ca
6

14

(a)

(b)

Figura 4: Congurao do ambiente de desenvolvimento: (a) na inicializao do software e (b) ca ca aps a inicializao, em qualquer momento que seja de interesse do usurio. o ca a <diretrio de instalao de Quartus II>/drivers/usb-blaster o ca Maiores informaes e detalhes sobre como proceder so encontradas a partir de http: co a //www.altera.com/support/software/drivers/usb-blaster/dri-usb-blaster-xp.html? GSA_pos=4&WT.oss_r=1&WT.oss=usb-blaster.

Modelando Um Projeto

Antes de criar um projeto no ambiente Quartus II, necessrio modelar o problema e a em uma linguagem processvel pelos circuitos digitais. Nesta seo so mostrados os passos de a ca a a modelagem de um problema. Um exemplo prtico de projeto a ser empregado ao longo deste tutorial consiste de um a circuito lgico digital que implementa uma mquina de estados de Moore, cuja sa depende o a da de uma varivel de entrada x (x = 1 ou x = 0). Esta mquina denominada Detector de a a e Sequncia Zero. Basicamente, ela ser capaz de detectar uma sequncia consecutiva de 3 e a e zeros. Sempre que a sequncia detectada, sinaliza-se com um n lgico ALTO representado e e vel o pela varivel de sa z. Maiores informaes podem ser adquiridas em (Wu, 2001). a da co

4.1

Modelo Comportamental

Uma forma para representar o comportamento do circuito em questo o diagrama de a e estados, conforme ilustra Figura 5. A tabela de estados e sa das, apresentada na Tabela 1, e uma representao alternativa para Figura 5. ca

15

0 zero 0 0 0 3 zeros 1 0 1 1 zero 0 1

2 zeros 0

Figura 5: Diagrama de estados do detector de sequncia de zeros. e x Estado S1 (0 zero) S2 (1 zero) S3 (2 zeros) S4 (3 zeros) 0 1 z S0 S1 0 S0 S2 0 S0 S3 0 S0 S1 1 Prximo estado o

Tabela 1: Tabela de transies de estados e sa co das para o diagrama da Figura 5.

4.2

Modelo Estrutural

Para poder implementar o diagrama de estados da Figura 5 com blocos lgicos elementao res, como portas lgicas, latches e ip-ops, necessrio reduzi-lo em funes lgicas denidas o e a co o sobre variveis binrias. O primeiro passo consiste, ento, em denir quais sero as variveis a a a a a de estado. Nesse exemplo, tomando como base o que apresentado na Tabela 1, so utilizados e a quatro estados. Consequentemente, dois bits, q1 q0 , so sucientes para represent-los. a a No segundo passo, deve-se construir a tabela de transies e de sa co das para o sistema. Nesse projeto, sero atribu a dos (arbitrariamente) os valores 00, 01, 10 e 11 que q1 q0 podem assumir relativos aos estados S0 , S1 , S2 e S3 , respectivamente. Dessa maneira tem-se Tabela 2. q1 q0 00 01 10 11 x 0 1 z 00 01 0 00 11 0 00 10 0 00 01 1 q1 q0

Tabela 2: Tabela 1 em cdigos binrios. o a No terceiro passo, denem-se os ip-ops a serem utilizados e suas respectivas tabelas de excitaes. Para esse projeto, sero empregados 2 ip-ops tipo D para armazenar os dois co a bits de estado q1 q0 . Assim sendo, tem-se a Tabela 3 e a Tabela 4. 16

x q1 q0 00 01 10 11 0 1 0 0 0 1 0 1 0 0 q1 q0 00 01 10 11

x 0 1 0 1 0 1 0 0 0 1

Tabela 3: Tabela de excitao do ipca op d1 correspondente ao bit q1 .

Tabela 4: Tabela de excitao do ipca op d0 correspondente ao bit q0 .

No quarto passo, so derivadas as equaes de excitao de cada um dos ips-ops a a co ca partir das Tabelas 3 e 4:

d1 = x q0 d0 = x q 1 + x q 0 No quinto passo, deriva-se a equao de sa ca da: (2)

z = q1 q 0 .

(3)

E, assim, sintetizado o comportamento descrito na Figura 5, ou alternativamente na e Tabela 1, em relaes lgicas entre os sinais binrios de entrada e de estados. Tais funes so co o a co a facilmente mapeveis em componentes lgicos e conexes entre as sa a o o das e as entradas destes componentes. Parte-se, ento, para criao de um novo projeto no ambiente Quartus II. a ca

Criando um Projeto no Quartus

II

Para dar in a um projeto no ambiente Quartus II, o primeiro passo a ser considecio rado consiste em criar o arquivo principal de projeto (tambm denominado top-level ) j que e a e a partir dele que a compilao do projeto ser feita. Para isso, e tomando como base o FPGA ca a Cyclone II EP2C20F484C7 presente no kit de desenvolvimento DE1, faa o seguinte: c File > New Project Wizard e, assim, a janela apresentada na Figura 6(a) ser aberta. a Em seguida, basta repetir os passos apresentados nas Figuras 6(b) a 6(f), tomando o cuidado de escolher o part number do dispositivo FPGA corretamente. A t tulo de curiosidade, 17

(a)

(b)

(c)

(d)

(e)

(f)

Figura 6: Project Wizard consiste de uma ferramenta de aux para a criao de um projeto lio ca com uma entidade na ra (top-level ): (a) diretrizes de como o projeto ser estruturado; (b) z a denio da pasta na qual o projeto ser armazenado, bem como o nome do projeto em si e ca a o nome da entidade ra (c) insero de arquivos desenvolvidos em projetos anteriores; (d) z; ca escolha do dispositivo FPGA onde o projeto ser programado; (e) escolha de ferramentas de a s ntese e simulao espec ca cas (de empresas parceiras da Altera); (f) nalizao com um resumo ca das conguraes e caracter co sticas do projeto.

18

vale observar que mesmo desabilitando a instalao de vrias fam ca a lias de FPGA, no passo correspondente ` escolha do dispositivo, todos os modelos de PLDs produzidos pela Altera a esto dispon a veis ao usurio. E poss escolher outro modelo de FPGA no instalado contudo, a vel a deve-se ater ao fato de que quando o projeto for compilado, vrios erros sero apresentados a a devido a falta de suporte para o mesmo.

Figura 7: Boto em destaque habilita a hierarquia de projeto. A rvore que representa todos a a os mdulos que compem o projeto tambm est destacado. o o e a Finalizado o Project Wizard, o Quartus II volta para a sua janela inicial. Caso queira acompanhar ou analisar a hierarquia das entidades que compem o projeto, clique no o boto destacado na Figura 7 e aparecer uma nova janela mostrando a rvore de hierarquia das a a a entidades do projeto.

Criando Arquivos de Projeto

O prximo passo consiste na criao de arquivos de projeto para descrever os circuitos o ca presentes nele. No ambiente Quartus II so disponibilizados dois editores para descrev-los: a e Editor (Grco) de Bloco e Editor de Texto. Isso porque neste ambiente a construo do a e ca circuito pode ser feito em n de abstrao comportamental via uma linguagem de descrio vel ca ca de hardware (Hardware Description Language - HDL) tais como Verilog, AHDL e VHDL (Pedroni, 2008; Perry, 2002), ou em n de abstrao estrutural via captura de esquemticos. vel ca a Tendo isso em mente, o seguinte procedimento deve ser executado para abrir uma janela apresentada na Figura 8 a m de criar um arquivo de esquemtico: a File > Block Diagram/Schematic File

19

Figura 8: Janela para criao de um arquivo do projeto. ca Vale observar que qualquer outro tipo de arquivo de projeto que venha a ser criado e inserido ao projeto, seja outro arquivo de esquemtico, seja um arquivo em VHDL ou Verilog, a ou at mesmo um arquivo para simulao temporal, pode ser escolhido a partir dessa janela. e ca Antes de iniciar a edio do arquivo, convm salvar o arquivo com um nome apropriado. ca e Para isso, ative File > Save As e escolha um nome. De preferncia, um nome que resuma o que est sendo projetado. Deve-se e a prestar ateno ao fato de que abaixo do nome e do tipo do arquivo temos uma opo que deve ca ca ser selecionada. Esta opo faz com que o novo arquivo de projeto seja inserido no projeto ca criado na Seo 5. Lembre-se, tambm, que em cada pasta deve existir apenas um projeto, mas ca e podem existir inmeros arquivos de projeto que realizam funes espec u co cas.

Capturando o Esquemtico a

Ao longo dessa seo, so apresentados os principais procedimentos a serem empregados ca a para a construo do diagrama eletro-lgico, ou esquemtico, dos circuitos eletrnicos digitais ca o a o com uso do editor grco no ambiente Quartus II. O circuito da mquina de estados aprea a sentado na Seo 4 ser utilizado como base para os procedimentos apresentados. O arquivo de ca a projeto que foi aberto para constru ser salvo como detectorSequencia.bdf (Figura 9). -lo a

20

Figura 9: Salvando o arquivo recm criado. e

7.1

Insero de Componentes ca

A construo de um esquemtico pode ser feita a partir da utilizao de componentes ca a ca primitivos (tais como portas lgicas e ip-ops), de blocos que realizam as funcionalidades o de circuitos integrados comerciais (7485, 7404, 74162) e, at mesmo, blocos desenvolvidos em e linguagem de descrio de hardware. ca Para inserir um componente existente, deve-se clicar duas vezes na rea de trabalho do a editor grco (ou fazer Edit > Insert Symbol ). Em seguida, no campo Name, deve-se digitar a o part number do componente ou o seu nome (por exemplo, 7408 ou and2). O resultado para essa ao exemplicado na Figura 10. Vale observar que, caso a opo Repeat-insert mode ca e ca seja selecionada, o usurio pode adicionar quantos componentes se queira e, quando o nmero a u desejado tenha sido alcanado, basta clicar com o boto direito do mouse e optar por cancelar c a a ao. ca Vale comentar aqui que no ambiente Quartus II dispe-se de uma funcionalidade que o facilita a insero dos pinos de entrada e de sa ca da. Basta selecionar cada componente que tem pinos de entrada e sa (clicar o boto esquerdo do mouse em cima dele), apertar o boto da a a direito do mouse e selecionar o item Generate Pins for Symbol Ports no pop-up menu que vai surgir.

7.2

Ligao entre Componentes ca

Inseridos os componentes necessrios ao projeto, deve-se fazer as ligaes. Essa uma a co e tarefa bastante simples de ser realizada. Existem duas ligaes bsicas que podem ser realico a

21

Figura 10: Insero de um componente 7408. ca zadas e duas maneiras distintas de se fazer isso. O primeiro modo de se fazer uma ligao ca entre componentes consiste em aproximar o cursor na porta que se deseja conectar. O cursor automaticamente muda o seu formato para o de uma cruz e, assim, o modo de ligao entre ca os componentes torna-se ativo. Uma segunda maneira consiste em selecionar um dos botes o destacados na Figura 11.

Figura 11: Edio de ligaes. ca co Dentre os tipos mais comuns de ligaes que podem ser realizados no Quartus II so co a as ligaes simples e os barramentos. As ligaes simples transportam apenas um sinal (ou co co bit) de dados por vez enquanto que os barramentos transportam n sinais (ou bits) de uma vez. Estes sinais podem transportar dados, endereos ou sinais de controle (Tocci et al., 2008). c Na Figura 11 a ligao simples representada gracamente pela linha mais na (podendo ca e ser criada ao ativar o boto superior em destaque) e o barramento pela linha mais grossa (no a destaque, ativado pelo boto central). Vale observar ainda que a conveno adotada para a ca 22

indicar o tamanho n do barramento LEDR LEDR[n 1..0]. e

7.3

Nomeao dos Pinos de Entrada e de Sa ca da

Um ponto que vale ser ressaltado consiste na denominao dos pinos de entrada e de ca sa da, que devem ser conectados aos pinos dos perifricos. No kit de desenvolvimento DE1, e os pinos dos perifricos dispon e veis j se encontram conectados a alguns pinos do chip FPGA. a Portanto, para utilizar tais perifricos nos testes de campo, necessrio associar, ou mapear, e e a apropriadamente os pinos de entrada e de sa do circuito aos pinos do chip FPGA. No jargo da a de laboratrio, este procedimento conhecido como assignment dos pinos. Isso pode ser feito o e manualmente, abrindo uma janela atravs de e Assignments > Pins. Uma outra alternativa, muito mais simples e altamente recomendada, consiste em utilizar os nomes adotados no manual da placa de desenvolvimento DE1 e importar o arquivo DE1_pin_assignments.csv onde se encontram denidas todas as associaes. Este arquivo co e 7 disponibilizado em (Altera e Terasic, 2010) . Aconselha-se que o arquivo DE1_pin_assignments.csv seja copiado para o diretrio de projeto. Para importar o assignment, deve-se abrir a caixa de o dilogo da Figura 12 via a Assignments > Import Assignments Em seguida, deve-se inserir no campo File Name o nome do arquivo e conrmar a ao. Esse ca procedimento deve ser realizado somente uma vez, antes da primeira compilao do projeto. ca Todas as modicaes e compilaes futuras no necessitam que o procedimento de importao co co a ca seja realizada novamente.

Figura 12: Janela para importao do arquivo com os assignments dos pinos para a placa DE1. ca A (re)nomeao dos pinos de entrada (input) e de sa (output) feita simplesmente ca da e clicando-se duas vezes nos respectivos pinos. No projeto em questo, usamos os nomes SW[0], a KEY[0] e LEDG[0]. Na Figura 13 tem-se o circuito lgico nalizado da mquina de estados, o a com os pinos devidamente associados aos pinos dos perifricos. e
7

O arquivo est tambm dispon na pgina do curso de EA773 a partir do 1o semestre de 2010. a e vel a

23

Figura 13: Esquemtico da mquina de estados com pinos mapeados nos perifricos. a a e

7.4

Nomeao das Linhas das Ligaes ca co

O Quartus II possui uma funcionalidade bastante interessante e extremamente util que consiste na nomeao das ligaes entre os diversos componentes e pinos de entrada/sa ca co da que compem um projeto. Uma forma de fazer isso clicar em cima da linha de ligao que o e ca se queira nomear e apertar o boto esquerdo do mouse sobre a linha selecionada. Em seguida, a escolha o item Properties do menu que surgir e escreva no campo Name o nome da linha. a Essa caracter stica funcional do Quartus II permite ao projetista realizar ligaes co virtuais, ou seja, permite que a sa de um determinado componente seja conectada a uma da entrada de um outro sem a necessidade da ligao f ca sica, somente nomeando-se as ligaes. Na co Figura 14 tem-se uma aproximao do esquemtico que descreve a mquina de estados apreca a a sentada na Figura 13. Esse um exemplo de como a ligao virtual pode ser implementada. e ca

Figura 14: Ligao virtual. ca Uma outra possibilidade para essa ferramenta est relacionada ` anlise das formas de a a a ondas e resposta temporal do circuito sendo que os procedimentos necessrios para gerar uma a simulao temporal sero apresentados na Seo 13. Assim sendo, a t ca a ca tulo de observao, a ca nomeao de ligaes permite que determinados sinais internos do circuito (por exemplo, um ca co sinal de controle que ative um latch) sejam mapeados em pinos de sa e, com isso, possam da 24

ser analisados no arquivo de simulao, com o aux dos diagramas temporais. Na Figura 15 ca lio e destacado o circuito de deteco de sequncia zero onde as sa ca e das dos ip-ops esto mapeados a em pinos de sa possibilitando a anlise da resposta temporal durante a simulao do circuito. da, a ca

Figura 15: Ligao virtual entre os sinais intermedirios q[1] e q[0] e os pinos de sa ca a da.

Descrevendo em VHDL

Descrever um circuito digital atravs de uma linguagem grca como esquemticos e a a tornou-se, hoje em dia, bem menos popular que utilizar ferramentas baseadas em linguagens textuais. Usualmente fazer uma descrio textual menos trabalhoso e menos complexo que elaca e borar um esquemtico. O ambiente Quartus II dispe de compiladores lgicos que convertem a o o essas descries textuais em arquivos binrios transfer co a veis ao dispositivo lgico programvel o a via a conexo serial do PC (Seo 10). a ca Para a descrio de circuitos em VHDL dentro do Quartus II (ou, tambm, empreca e gando Verilog ou AHDL), necessrio criar um arquivo espec e a co acessando a opo VHDL ca File na janela apresentada na Figura 8. Um editor de texto ser ativado e o arquivo aberto ser a a salvo com a extenso vhd. Quanto ao nome do arquivo, recomenda-se que seja algo que lembre a da funcionalidade do circuito. Este nome deve ser o mesmo nome da seo ENTITY ca do componente de VHDL. No caso, o arquivo ser salvo como detector_funcional.vhd. a O Cdigo 2 o contedo do arquivo, que corresponde ` descrio funcional, em VHDL do o e u a ca detector de sequncia zero apresentada na Seo 4.1. e ca E poss implementar o modelo estrutural de um projeto em VHDL. Neste caso, a vel descrio consiste da declarao dos componentes lgicos utilizados e das ligaes entre as portas ca ca o co de entrada e sa destes componentes. E uma verso textual do esquemtico, como ilustra o da a a Cdigo 3 salvo como detector_estrutural.vhd. o Vale observar que qualquer editor de texto pode ser usado para construir/modicar um cdigo de descrio de hardware desde que os cuidados quanto ao nome e extenso do arquivo o ca a 25

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60

library ieee; use ieee.std_logic_1164.all; entity detector_funcional is port( clk : in x : in z : out ); end entity;

std_logic; std_logic; std_logic

architecture comportamento of detector_funcional is type estados is (s0, s1, s2, s3); signal state : estados; begin process (clk) begin if(rising_edge(clk)) then case state is when s0=> if x = 1 then state <= else state <= end if; when s1=> if x = 1 then state <= else state <= end if; when s2=> if x = 1 then state <= else state <= end if; when s3 => if x = 1 then state <= else state <= end if; end case; end if; end process; process (state) begin case state is when s0 => z <= 0; when s1 => z <= 0; when s2 => z <= 0; when s3 => z <= 1; end case; end process; end comportamento;

s1; s0;

s2; s0;

s3; s0;

s1; s0;

Cdigo 2: Implementao do modelo funcional do detector em VHDL. o ca sejam tomados. A vantagem de utilizar o editor de texto do ambiente Quartus II que e ele dispe de um conjunto de modelos de programao para uma grande variedade de circuitos o ca combinacionais e sequenciais. O ambiente Quartus II dispe de visualizadores grcos do resultado da s o a ntese (Seco 11). Recomenda-se esta prtica porque o procedimento de compilao nem sempre gera os a a ca

26

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45

library ieee; use ieee.std_logic_1164.all; entity detector_estrutural port( clk : x : z : ); end; is in in out std_logic; std_logic; std_logic

architecture comportamento of detector_estrutural is signal d1, d0, q0, q1, t1, t0: std_logic; component dff port(D: in std_logic; CLK: in std_logic; Q: out std_logic); end component; component and2 port(IN1: in std_logic; IN2: in std_logic; \OUT\: out std_logic); end component; component or2 port(IN1: in std_logic; IN2: in std_logic; \OUT\: out std_logic); end component; begin DFF0: DFF port map (d0, clk, q0); DFF1: DFF port map (d1, clk, q1); U0: AND2 port map (x, not q1, t0); U1: AND2 port map (x, not q0, t1); U2: OR2 port map (t0, t1, d0); U3: AND2 port map (x, q0, d1); U4: AND2 port map (not q0, q1, z); end comportamento;

Cdigo 3: Implementao do modelo estrutural do detector em VHDL. o ca melhores resultados. Modices podem ser necessrias para direcionar melhor o algoritmo cao a de compilao no processo de s ca ntese.

Encapsulando os Componentes

Foi apresentado na Seo 2.2 que no ambiente de desenvolvimento de projeto Quartus ca II os arquivos de projeto so organizados hierarquicamente. E conveniente que as entidades a neles descritas sejam encapsuladas em componentes de forma que somente a sua funo e a sua ca interface de entrada e sa sejam vistas pelas entidades de n mais alto ou at mesmo em da vel e 8 outros projetos . S mbolos de componentes podem ser criados de forma muito simples no ambiente de
Esse procedimento anlogo ` criao de funes, seja, por exemplo, usando linguagem C ou scripts do e a a ca co MATLAB.
8

27

desenvolvimento Quartus II a partir de cdigos em VHDL ou a partir de arquivos de o esquemticos. Primeiramente, deve-se tomar o cuidado de tornar o arquivo de projeto na a entidade de maior hierarquia (Top-Level Entity) e de tornar a janela de edio o foco. Em ca seguida, deve-se selecionar File > Create/Update > Create Symbols File from Current File e, logo em seguida, aberta uma janela para salvar o arquivo/s e mbolo correspondente (extenso a .bsf). No caso do projeto da mquina detectora, foi criado um arquivo de s a mbolo para o circuito da Figura 15, sendo salvo como detectorSequencia.bsf.

Figura 16: Insero de um componente criado em um arquivo de projeto. ca Para inserir o componente criado em um esquemtico, basta escolher o nome do compoa nente nos diretrios aps clicar o boto ao lado do campo Name na Figura 10. Na Figura 16 o o a tem-se a ilustrao de um esquemtico com o componente detectorSequencia.bsf. Ressaltaca a se que o nome atribu a cada pino de entrada e de sa no arquivo de projeto preservado do da e no s mbolo criado. Se as portas de sa q[1] e q[0] forem agrupadas em um vetor q[1..0], da tem-se um circuito como o apresentado na Figura 17, a partir do qual criado um s e mbolo com uma porta q[1..0], ao invs de 2 portas (q[1] e q[0]), como mostra o circuito da Figura 18. e Dessa maneira, sugere-se que o usurio empregue nomes que resumam a funcionalidade do a sinal. Vale comentar que os cuidados quanto a espaos nos nomes devem ser adotados aqui c (por exemplo, uma entrada do tipo entrada 01 deve ser evitada; prera entrada01 ou algo do gnero). e

Figura 17: Agrupamento de mais de uma linha em uma porta de sa da. Para inserir um componente em um arquivo de projeto em VHDL, basta declarar a interface do componente. Esta interface pode ser gerada no ambiente Quartus II aps setar o 28

Figura 18: Uso de barramento na porta com mais de uma linha. o componente como o de n mais alto e criar o cdigo de declarao do componente por meio vel o ca de File > Create/Update > Create VHDL Component Declaration Files for Current File O Cdigo 3 exemplica a declarao de trs componentes: dff, and2 e or2. o ca e Pensando em projetos de grande porte, mais ecaz que os componentes sejam testados e e simulados separadamente, pois garante-se que cada um esteja funcionando corretamente. Assim, se ocorrer problemas na integrao, a depurao do circuito ca mais simples j que ca ca a os blocos foram testados previamente. Outra vantagem de compilar e testar os componentes individualmente a possibilidade de utilizao destes componentes em outros projetos. Os e ca procedimentos de compilao e simulao so detalhados, respectivamente, na Seo 10 e na ca ca a ca Seo 13. ca

10

Compilando

A compilao um processo necessrio visto que vai analisar se existe algum erro relacica e a onado ao projeto, tal como curto-circuitos e sinais duplicados, alm de otimiz-lo e sintetiz-lo e a a em elementos lgicos dispon o veis no FPGA selecionado. Por exemplo, uma das otimizaes co realizadas consiste em que a rea ocupada pelo circuito seja menor, sem comprometer a veloa cidade de operao do circuito. Nesta etapa so tambm pr-avaliados os requisitos do projeto ca a e e para vericar se o circuito sintetizado ir atend-los. Um outro ponto que deve ser levado em a e considerao consiste no fato de que ao nal dessa etapa que sero gerados os arquivos binca e a a rios necessrios tanto para a simulao do todo o, ou parte do, projeto (Seo 13) quanto para a ca ca a congurao do FPGA do kit de desenvolvimento (Seo 14). ca ca Inicialmente, deve-se lembrar que o Quartus II trabalha com o conceito de hierarquia, como discutido na Seo 2.2. Assim sendo, fundamental que o arquivo de projeto, tanto em ca e VHDL quanto em esquemtico, que se pretende compilar seja o de maior hierarquia. Para a garantir que o arquivo de projeto aberto seja o de maior n vel hierrquico na compilao, a ca recomenda-se que se coloque o editor do arquivo em foco e selecione Project > Set as Top-Level Entity 29

ou simplesmente use a tecla de atalho Ctrl+Shift+J. No exemplo, o arquivo detectorSequencia.bdf deve ser setado como o topo da rvore. Na Figura 19 destacada a mensagem a e de que a operao foi executada com sucesso. ca

Figura 19: Mensagem da atual subarvore com detectorSequencia.bdf no topo. Agora que o arquivo detectorSequencia.bdf est habilitado como o top-level, deve-se a evocar MAX+Plus II > Compiler (ou tecla de atalho Ctrl+L) para compil-lo. A Figura 20 apresenta a janela que mostra o a progresso da compilao. ca Observa-se que as quatro etapas do uxo completo de compilaao so mostradas na c a janela: Analysis & Synthesis, Fitter, Assembler e Classic Timing Analysis. Ao concluir este uxo, pode-se analisar o relatrio sobre o processo clicando o boto Report. E poss selecio a vel onar o tpico do relatrio escolhendo um dos itens na coluna esquerda da janela que surgir. o o a Por exemplo, para o circuito de detector de sequncia zero, ao selecionar e Flow Summary a janela cou como a apresentada na Figura 21. Ela mostra que o circuito foi sintetizado, com sucesso, para o dispositivo EP2C20F484C7 da fam Cyclone II com uso de 3 dos 18.752 lia elementos lgicos. o E ao selecionar 30

Figura 20: Janela de compilao. ca

Figura 21: Resumo do uxo de compilao. ca Timing Analyzer > Summary obtm-se o resumo de desempenho temporal apresentado na Figura 22. e

11

Visualizando os Resultados da Compilao ca

Para facilitar a anlise e a depurao de um projeto, o Quartus II dispe de alguns a ca o visualizadores grcos de netlist sintetizado: RTL Viewer, State Machine Viewer e a Technology Map Viewer. O primeiro mostra o resultado da s ntese a n de registros de vel 31

Figura 22: Sumrio sobre o desempenho temporal do projeto. a transferncias (Register Transfer Level RTL), que consiste basicamente em uma representao e ca por registradores interligados por lgica combinacional, e o segundo, os estados e as transies o co entre os estados do projeto. O ultimo visualizador, por sua vez, apresenta a hierarquia de unidades atmicas (clulas e portas de entrada/sa o e da) utilizadas na s ntese do projeto. Figura 23 ilustra as trs formas de visualizao da s e ca ntese do Cdigo 2, correspondente ` especicao do o a ca projeto de detector de sequncia zero (seo 4). e ca

(a)

(b)

(c) Figura 23: Distintas formas de visualizao grca de netlist: (a) State Machine Viewer, ca a (b) RTL Viewer, e (c) Technology Map Viewer. A sequncia de comandos utilizados para habilitar estes visualizadores : e e Tools > Netlist Viewers

32

12

Analisando as Restries de Tempos do Projeto co

No ambiente Quartus II encontram-se dois analisadores de tempos estticos: Classic a Timing Analyzer e TimeQuest Timing Analyzer. Embora a Altera recomende o uso do segundo analisador, o primeiro analisador suciente para o propsito da disciplina EA773. Para e o utilizar o primeiro analisador, necessrio congurar o ambiente para tal. Abre-se a caixa de e a dilogo de congurao atravs de a ca e Assignments > Settings e seleciona-se Timing Analysis Settings na lista Category para ativar Use Classic Timing Analyzer during compilation. Nesta mesma caixa de dilogo poss especicar as restries tempoa e vel co rais do seu projeto que so utilizadas como referncia no cmputo dos tempos. Os tempos com a e o valores positivos indicam margens positivas em relao ` restrio imposta (restrio satisfeita) ca a ca ca e os valores negativos correspondem `s margens negativas (restrio no atendida). a ca a O analisador classica, em primeiro lugar, todos os poss veis caminhos de sinais em: os do sinal de relgio (CLOCK ), os de dados, e os de sinais de controle ass o ncronos como os PRN e CLRN nos ip-ops. Em seguida, so estimados os seguintes tempos de percurso dos sinais entre a os pinos de entrada e sa do circuito e os registradores internos: da tSU : corresponde ao intervalo de tempo que o sinal de dado deve chegar e estabilizar antes da ocorrncia de uma transio do sinal de relgio; e ca o tH : corresponde ao intervalo de tempo que o sinal de dado precisa se manter estvel aps a o a ocorrncia de uma transio do sinal de relgio. e ca o tCO : corresponde ao (m nimo e mximo) intervalo de tempo necessrio para obter uma a a sa vlida aps a ocorrncia de uma transio do sinal de relgio. da a o e ca o Os tempos de propagao dos sinais atravs da parte combinacional do circuito tambm ca e e so determinados: a tP D : corresponde ao (m nimo e mximo) intervalo de tempo para um sinal propagar de a um pino de entrada do circuito at um pino de sa via os elementos combinacionais. e da A frequncia mxima de operao do sinal de relgio (Registered Performance), sem que e a ca o as restries temporais de todos os sinais do circuito sejam violadas, tambm computada. co e e Vale ainda comentar que o analisador de tempos gera advertncias quando ocorre o e fenmeno clock skew, que consiste na diferena entre os instantes que um mesmo sinal de o c clock chega em dois registradores distintos. Isso nem sempre implica em violaes das restries co co 33

temporais do projeto j que `s vezes necessrio introduzir propositalmente os atrasos para a a e a compatibiliz-los com os atrasos dos sinais de dados ao longo do seu percurso. a Para acessar todos os dados temporais gerados durante a compilao, deve-se selecionar ca MAX+PLUS II > Timing Analyzer e, assim, aparecer uma pasta com 6 abas, como ilustrado na Figura 24. Caso seja de interesse a e ter o conhecimento dos detalhes de um dos tempos listados anteriormente, basta clicar na aba correspondente.

Figura 24: Interface do Analisador de Tempo Clssico. a

13

Simulando

O prximo passo consiste em realizar simulaes que representem o comportamento dos o co perifricos, o mais prximo da realidade poss e o vel. As simulaes so utilizadas tambm para co a e vericar o funcionamento do circuito de maior hierarquia pela anlise das formas de onda, vea ricando a integridade dos sinais e, assim, comprovando o correto funcionamento do sistema antes de carreg-lo no dispositivo FPGA do kit DE1. Tendo isso em mente, para realizar a a simulao, preciso criar um arquivo espec ca e co, denominado Vector Waveform File, simplesmente fazendo File > New e selecionando a opo correspondente, como ilustrado na ca e Figura 25. Outra forma alternativa seria MAX+Plus II > Waveform Editor Feito isso, o ambiente de trabalho assumir uma forma semelhante ` apresentada na a a Figura 26. 34

Figura 25: Criando o vetor de anlise de formas de ondas. a

Figura 26: Arquivo de formas de ondas criado. Criado o arquivo de forma de onda, necessrio acrescentar todos os sinais que sero e a a analisados. Para isso, deve-se fazer Edit > Insert > Insert Node or Bus e a janela ilustrada na Figura 27 deve aparecer. Em seguida deve-se clicar em Node Finder e uma nova janela, como mostrado na Figura 28, ir aparecer. Nesse ponto, deve-se prestar a ateno se o arquivo detectorSequencia.bdf est selecionado em Look in e se o ltro est ca a a selecionado como Pins:all (nessa opo, todos os pinos de entrada e de sa sero apresentados ca da a 35

e podero ser inseridos no arquivo de forma de ondas). Feito isso, seleciona-se os pinos desejados a e clica-se no boto em destaque da Figura 28. Opcionalmente, podemos clicar no segundo boto a a para selecionar todos os sinais simultaneamente.

Figura 27: Caixa de dilogo para insero de sinais. a ca

Figura 28: Caixa de seleo de sinais acess ca veis. E necessrio observar que a verso do circuito empregada ao longo desta seo aquele a a ca e mostrado na Figura 19. Portanto, a janela apresentada anteriormente na Figura 26 conter os a pinos SW[0], KEY[0] e LEDG[0], assim como apresentado na Figura 29. Edita-se as formas de e onda da maneira que for conveniente ao projeto, ou seja, editar as formas de onda de modo que todas as poss veis situaes (ou pelo menos, a maioria) de funcionamento do circuito sejam conco templadas e que, alm disso, a relao temporal entre os sinais obedea as restries temporais e ca c co consideradas nas especicaes do projeto. Para editar as formas de onda, necessrio utilizar co e a os botes destacados na Figura 29 tal como o boto que est sinalizado. Esse boto permite o a a a a criao de sinais peridicos (sinais de relgio/sinais de clock). Por exemplo, o pino KEY[0] ca o o 36

foi selecionado, o boto em destaque foi pressionado e editou-se o sinal de clock de modo que a o per odo do sinal fosse igual a 50 ns. Informaes mais detalhadas podem ser encontradas no co documento Quartus II Classic Timing Analyzer 9 .

Figura 29: Elementos para edio da forma de onda de cada sinal. ca Para a mquina de estados em questo, os sinais devem ser editados de forma que a a a sequncia de 3 zeros seja detectada (LEDG[0] = 1), comprovando o correto funcionamento do e circuito. Aps feitas todas as conguraes nos sinais, deve-se salvar o arquivo. Por denio, o co ca o Quartus II salva o arquivo com as formas de onda com a extenso .vwf e com o mesmo a nome do top-level em estudo (no caso, detectorSequencia). Para executar a simulao propriamente dita, deve-se fazer ca MAX+PLUS II > Simulator. Ser aberta uma nova janela, onde necessrio indicar no campo Simulation input qual a e a o arquivo de formas de onda ser analisado (Figura 30). Isso porque em projetos maiores, cada a arquivo de projeto pode ser constru e simulado separadamente com uma grande variedade do de formas de onda. Especicamente para o exemplo do detector de sequncia, o arquivo dee tectorSequencia.vwf deve ser adicionado clicando-se no boto destacado na Figura 30. Uma a outra opo que deve ser marcada aquela destacada em uma caixa. Essa opo permite que ca e ca as formas de onda sejam atualizadas sempre que novas simulaes forem geradas. Feito isso, co basta ento selecionar a opo Timing no campo Simulation mode, e executar a simulao a ca ca propriamente dita. Para a mquina de estados em estudo, um comportamento poss o a vel e apresentado na Figura 31. No ambiente Quartus II poss escolher o formato em que e vel os valores dos sinais so apresentados. Para isso, selecione a linha do sinal no editor de formas a de onda, aperte o boto direito do mouse, selecione o item Properties do pop-up menu que a aparecer, e nalmente selecione o formato desejado no campo Radix. a
9

Dispon em http://www.altera.com/support/software/timing/sof-qts-timing.html. vel

37

Figura 30: Congurao dos parmetros para simulao. ca a ca A t tulo de observao, para a execuo do outro modo de simulao, a Functional, prica ca ca meiramente deve-se clicar em Generate Functional Simulation Netlist antes de executar a simulao. Esse opo de simulao ignora os atrasos na resposta de cada componente. Em ca ca ca outras palavras, esse modelo de simulao intenciona a vericao da funcionalidade lgica do ca ca o circuito. Contudo, durante procedimentos de depurao, o modo Timing o mais recomenca e dada j que leva em considerao as caracter a ca sticas de temporizao (e atrasos) do circuito ca (Nicolato, 2002).

Figura 31: Formas de onda dos sinais que se resultaram de uma simulao. ca Uma ultima observao vale ser realizada. Diante das ferramentas de anlise e de simu ca a lao disponibilizadas pelo Quartus II, pode-se levar em considerao que uma boa tcnica ca ca e para projetos consiste em, primeiramente, realizar uma simulao funcional para determinar o ca correto funcionamento do circuito, seguida de sua vericaao temporal e, nalmente, vericar c a sua funcionalidade completa testando-o no sistema f sico (no caso, a placa DE1), junto com 38

outros dispositivos f sicos (por exemplo, motores de corrente cont nua a serem controlados pela placa DE1) e as exigncias ambientais de aplicao (Nicolato, 2002). e ca De posse das respostas obtidas e apresentadas na Figura 31, pode-se comprovar que o circuito est funcionando como o esperado. Os ip-ops tipo D so atualizado a cada borda a a de subida do sinal de relgio (representado pelo pino de entrada KEY[0]), desde que o sinal o x (representado pelo pino SW[0]) permanea em n lgico ALTO. Conclui-se ento que o c vel o a circuito est pronto para ser carregado no FPGA do kit DE1. a

14

Carregando o Projeto

A fase nal do projeto fazer os testes de campo, carregando o projeto no dispositivo e FPGA selecionado e testando-o com os dispositivos f sicos reais. Ao longo do curso EA773 utilizado o kit de desenvolvimento DE1 (Altera e Terasic, 2010). Essa placa possui diversos e perifricos, tais como LEDs, chaves, botes, pinos de propsito geral e outros componentes e o o mais complexos tais como memrias, interfaces de udio e de v o a deo bem como comunicao ca serial (RS232), conforme ilustrado na Figura 32. e

Figura 32: Placa de desenvolvimento DE1. Como foge ao escopo deste texto, sugere-se uma leitura bastante atenta do seu manual, disponibilizado em (Altera e Terasic, 2010) e tambm na pgina do curso EA773. Deve-se e a prestar especial ateno, principalmente, como alguns perifricos so acionados. Por exemplo, ca e a os LEDs so ativados quando n lgico alto colocado no pino correspondente do FPGA a vel o e 39

ao qual esto ligados. J os botes so ativo baixo. a a o a A transferncia do arquivo binrio gerado pelo compilador lgico para o FPGA uma e a o e tarefa bastante simples mas que, como todas os outros procedimentos realizados at aqui, e demanda de alguns cuidados. Primeiramente, o arquivo binrio que ser carregado no FPGA a a o projeto_novo.sof. Esse arquivo criado a partir do arquivo de maior hierarquia de um e e projeto, sendo denido em um dos primeiros passos do Project Wizard apresentado na Seo 2. ca Dessa maneira, deve-se abrir o arquivo projeto_novo.bdf, set-lo como o de maior hierarquia, a e inserir o componente criado na Seo 9, bem como pinos de entrada e de sa necessrios, ca da a renome-los respeitando a padronizao de nomenclatura apresentada na Seo 7.3, importar a ca ca o assignment dos pinos e compilar o projeto. Nesse ponto, deve-se ter um circuito semelhante ao ilustrado na Figura 33.

Figura 33: Circuito pronto para ser carregado no FPGA. Em seguida, deve-se fazer MAX+PLUS II > Programmer. A janela que est ilustrada na Figura 34(a) aparecer. Deve-se tomar o cuidado de que a a a opo USB-Blaster esteja habilitada, como na Figura 34(c). Caso no esteja, basta clicar ca a em Hardware Setup e seguir os procedimentos ilustrados na Figura 34(b). Finalmente, basta acionar a gravao e, caso tenha sido bem sucedida, uma mensagem ir aparecer assim como ca a e ilustrada na Figura 34(d). Em seguida, basta mudar a chave SW[0] para ALTO e pressionar o boto KEY[0] repetidas vezes. Quando a contagem for igual a 3, ou seja, quando a sequncia a e de zeros for detectada, o LEDG[0] acender, indicando o sucesso e comprovando, na prtica, o a a correto funcionamento da mquina de estados. a

40

(a)

(b)

(c)

(d)

Figura 34: Procedimentos para gravao do circuito no FPGA: (a) tela inicial para a gravao ca ca do binrio na placa; (b) janela para habilitar o USB-Blaster; (c) janela de gravao com o a ca USB-Blaster habilitado; (d) caixa de mensagem da concluso de gravao bem sucedida. a ca

15

FAQs

Esta seo contm as perguntas mais frequentes realizadas pelos alunos durante o curso ca e quando a verso beta deste manual foi apresentado. Tais questes foram transcritas para essa a o nova verso e sero atualizadas conforme o andamento do curso neste e nos prximos semestres. a a o

15.1

Por que a onda de sa est deslocada para a direita em relao da a ca `s entradas a

Perceba que a sa z modicada um pouco depois da mudana das entradas. Penda e c sando de forma ideal essa mudana na sa deveria ocorrer no mesmo instante em que as c da entradas fosse modicadas. Deve-se atentar para o fato de que toda porta-lgico possui um o tempo de propagao, um atraso. Essa caracter ca stica representa o tempo necessrio para que a o sinal de entrada seja interpretado pelo circuito lgico e obtenha-se a resposta na sa o da. Os motivos pelos quais isso ocorre fogem do interesse desse tutorial, mas podem ser entendidos estudando-se a eletrnica interna de cada porta lgica, principalmente em relao a tecnologia o o ca dos transistores envolvidos. Alm disso, os datasheets dos componentes usualmente trazem e grcos que representam esses tempos e os procedimentos que devem ser adotados para evitar a maiores problemas.

41

15.2

O que so esses picos que ocorrem, `s vezes, nas transies? a a co

Tome o cuidado de ampliar o pico (zoom in). Repare no eixo do tempo para calcular a sua largura. Ele mede um pouco menos de 0.280 ns, ou seja, 280 ps (pico segundos). Isso ocorre, como explicado anteriormente, devido ` eletrnica interna das portas. Esse tipo de a o fenmeno sempre ocorre nas transies. Isso mais um motivo para evitar trabalhar com o o co e circuito muito prximo do tempo de atraso. Quanto maior o tempo que o dado ca na sa o da, menos signicativo o ru e menor a chance dele ser lido como um dado. e do

15.3

Como aumento o tempo mximo nas simulaes? a co

Vrias vezes foi citado que o tempo mximo no pode ser extrapolado, porm muitas a a a e vezes ele pouco para as nossas necessidades. Surge ento a necessidade de aument-lo. Para e a a isso, abra o arquivo correspondente com as formas de onda a serem analisadas e faa Edit > c End Time e escolha o tempo mximo da simulao o qual seja mais conveniente para o circuito a ca em anlise. a

15.4

No compila e aparece que o problema a hierarquia. a e

Primeiro tome o cuidado de que no existem dois projetos na mesma pasta. Em seguida, a mude o arquivo principal na hierarquia, selecionando outra folha como folha principal. Um procedimento bastante eciente aquele discutido anteriormente na Seo 10, onde explicado e ca e o procedimento para a compilao: abra na janela o arquivo que ser usado como principal (no ca a exemplo o Relgio COM Despertador) e, em seguida, faa Project > Set as Top-Level Entity. o c

15.5

O nome do meu projeto Projeto da Moada e no compila. e a c a Por qu? e

Evite espaos e caracteres latinos (tais como e ) tanto no nome das pastas onde os c c a projetos sero gravados quanto no nome dos arquivos e pinos de entrada e de sa a da. Existem programas que aceitam, outros no. A t a tulo de observao, o Quartus II aceita letras ca maisculas. u

42

15.6

Tenho 200 entradas que cam em 1 sempre, mais 200 que sempre cam em 0. Quando coloco no Waveform ca uma baguna. J que eu no tenho que mud-las sempre, tem algo c a a a mais prtico a ser feito? a

Abra a janela de seleo de componentes (duplo clique na rea de trabalho), digite Vcc ca a ou Gnd. No primeiro caso, o bloco correspondente representa n lgico ALTO e, no segundo, vel o n lgico BAIXO. Esses blocos so interessantes de serem usados quando um determinado vel o a sinal de algum bloco deve ser desabilitado permanentemente. Por exemplo, um sinal CLRN representa uma porta de Clear que acionada em n BAIXO. Lig-la ao Vcc garante que e vel a ela nunca ser acionada. a

15.7

Fui no TTL HandBook e justamente a pgina que eu queria a no estava l. O que fao? a a c

Acesse o site http://www.alldatasheet.com/ e procure pelo datasheet do componente que voc quer estudar. Evite imprimir. Salve em um pendrive e leve com voc para o laborae e trio. Copie no computador e use quando for necessrio. o a

15.8

Sumiram as ferramentas do Waveform.


Faa Tools > Customize Waveform Editor. c

15.9

No simulador, os pinos no aparecem. a

Compile o arquivo e, em seguida, insira os pinos. Use o procedimento apresentado na Seo 13. ca

15.10

Simulei anteriormente, inseri e tirei alguns pinos, quero simular novamente. Compilo e quando abro o simulador s tenho o pinos antigos. Que fazer?

Apague os pinos que voc apagou no esquemtico e insira os novos. Analise o procedie a mento apresentado Seo 13. ca

15.11

Sumiram as ferramentas da rea de trabalho. a

Faa Tools > Customize Block Editor. c 43

15.12

Estou na tela de associao de pinos com endereos, para ca c gravao. O problema que minha tela no mostra, na parte ca e a de baixo, os pinos do meu projeto.

Compile o projeto e abra a tela de associao novamente. Caso o local onde os pinos ca deveriam aparecer simplesmente no est l, ainda nessa tela siga o caminho: View > All Pins a a a List. Como dito na Seo 7 muito mais simples se a padronizao de nomenclatura dos pinos ca e ca apresentada no manual da placa seja mantida. Assim, pode-se importar o assignment dos pinos.

15.13

Estou na tela de associao de pinos com endereos, para ca c gravao. O problema que minha tela no mostra, ao lado ca e a dos pinos do meu projeto, a coluna Location.

Clique com o boto direito nessa tabela e v para a opo Customize Columns. Insira a a ca Location na sua tabela. Novamente, como dito na Seo 7 muito mais simples se a padronizaca e co de nomenclatura dos pinos apresentada no manual da placa seja mantida. Assim, pode-se a importar o assignment dos pinos.

15.14

Estou na tela de gravao mas no consigo gravar. ca a

Releia a Seo 14 e analise com ateno a Figura34. ca ca

15.15

Usei o clock da placa e todos os meus LEDs cam acesos.

As frequncias dos osciladores existentes na placa DE1 e dispon e veis aos usurios so a a de 50 MHz e 27 MHz. O olho humano no identica oscilaes maiores do que 20 ou 30 Hz. a co O ideal dividir a frequncia dos osciladores utilizando o componente da biblioteca padro do e e a Quartus II denominado freqdiv. Em algumas situaes, pode-se construir um divisor de co frequncia com ip-ops tipo T ou contadores binrios. e a Aconselha-se que a simulao temporal (anlise das formas de onda) sempre sejam geca a radas. Um divisor de frequncia mal projetado pode invalidar o correto funcionamento do e circuito.

15.16

Por que ao renomear um pino de entrada com o nome CLOCK 27, o sistema no o associa ao pino do relgio de 27 MHz do kit? a o

O kit DE1 possui dois relgios de 27 MHz. Eles so referenciados pelos nomes CLOCK 27[0] o a e CLOCK 27[1]. 44

Referncias e
Altera (2010a), Altera Corporation, Pgina principal: http://www.altera.com. a Altera (2010b), Altera Corporation - Cyclone II FPGAs at Cost That Rivals ASICs, Pgina a principal de documentao: http://www.altera.com/products/devices/cyclone2/ ca cy2-index.jsp. Altera (2010c), Altera Corporation - Debugging with the SignalTap II Logic Analyzer, Pa gina de documentao: http://www.altera.com/literature/hb/qts/qts_qii53009. ca pdf?GSA_pos=6&WT.oss_r=1&WT.oss=SignalTap%20II. Altera (2010d), Altera Corporation - Intellectual Property & Reference Designs, Pgina central a de documentao: http://www.altera.com/products/ip/ipm-index.html. ca Altera (2010e), Altera Corporation - Nios II Embedded Design Suite Support, Pgina a central de documentao: http://www.altera.com/support/ip/processors/nios2/ ca ips-nios2_support.html. Altera (2010f), Altera Corporation - Quartus II Design Software, Pgina de documentao: a ca http://www.altera.com/support/software/sof-quartus.html. Altera e Terasic (2010), Altera Corporation and Terasic Technologies, Pgina principal de a documentao para o kit DE1: http://www.terasic.com.tw/cgi-bin/page/archive. ca pl?Language=English&CategoryNo=53&No=83&PartNo=4. der Spiegel, J. V. (2010), VHDL Tutorial, Pgina eletrnica: http://www.seas.upenn.edu/ a o ~ese201/vhdl/vhdl_primer.html. Department of Electrical and Systems Engineering, University of Pennsylvania. IEEE-VHDL (2009), IEEE Standard VHDL Language Reference Manual, IEEE Std 1076-2008 (Revision of IEEE Std 1076-2002) pp. c1 626. Nicolato, F. (2002), Arquitetura de Hardware para a Extrao em Tempo Real de Caracter ca sticas de Mltiplos Objetos em Imagens de V u deo: Classicao de Cores e Localizao de ca ca Centrides, Dissertao de Mestrado, FEEC - UNICAMP. o ca Pedroni, V. A. (2008), Digital Electronics and Design with VHDL, Elsevier - Morgan Kaufmann Publishers. Perry, D. (2002), VHDL: Programming by Example, 4a. edio, McGraw-Hill Professional. ca Tocci, R. J., Widmer, N. S. e Moss, G. L. (2008), Sistemas Digitais: Princ pios e Aplicaes, co Person - Prentice Hall.

45

Wu, S.-T. (2001), Notas de aula do curco EA772 - Circuitos Lgicos. Dispon em http: o vel //www.dca.fee.unicamp.br/courses/EA772/2s2001/., Relatrio Tcnico, Faculdade de o e engenharia Eltrica e de Computao - UNICAMP. e ca

46