FPGA COM A PLACA EXSTO EP2C8Q208C8

Tamanho: px
Começar a partir da página:

Download "FPGA COM A PLACA EXSTO EP2C8Q208C8"

Transcrição

1 UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO UFES CENTRO UNIVERSITÁRIO DO NORTE DO ESPÍRITO SANTO CEUNES DEPARTAMENTO DE ENGENHARIA E COMPUTAÇÃO DECOM LABORATÓRIO DE CIRCUITOS ELÉTRICOS FPGA COM A PLACA EXSTO EP2C8Q208C8 Apostila desenvolvida por Arthur Carlos Calvi de Bone e Mariniel Souza Galvão São Mateus Março

2 Sumário 1. INTRODUÇÃO ARQUITETURA DESIGN DIGITAL APLICAÇÕES INTRODUÇÃO AO KIT DE DESENVOLVIMENTO A PLATAFORMA FPGA SWITCHES CHAVES DISPLAY DE SETE SEGMENTOS LEDs DISPLAY LCD COMUNICAÇÃO SERIAL RS MEMÓRIA FLASH PORTAS DE EXPANSÃO OSCILADOR RESET DESING DIGITAL LINGUAGEM DE DESCRIÇÃO DE HARDWARE Componentes de um projeto VHDL SINAIS Semântica da linguagem VHDL Elementos Léxicos Estruturas para descrição de comportamento Expressões e operadores Descrição de Comportamento (Process) Controle da Sequência Comando if then Comando if then else Comando Case COMANDO WHILE LOOP COMANDO FOR LOOP COMANDO NEXT E EXIT

3 3. TUTORIAL QUARTUS II INTRODUÇÃO INSTALAÇÃO DE HARDWARE INSTALAÇÃO DE SOFTWARE PROGRAMA TESTE COMPILANDO E QUEIMANDO O PROJETO PROJETOS CRIAÇÃO DO PROJETO DE UM CIRCUITO LÓGICO CRIAÇÃO DE BLOCOS LÓGICOS A PARTIR DE CÓDIGO VHDL SIMULAÇÃO DECLRAÇÃO DE COMPONENTES ARQUITETURAS MULTI-PROCESSO PROCESS SIMPLIFICADO DRIVERS E ATRIBUIÇÃO DE SINAL SINAIS COM MAIS DE UM DRIVER ESPECIFICAÇÃO DA ESTRUTURA DO SISTEMA INSTANCIAÇÃO DIRETA COMPONENTES E CONFIGURAÇÕES APLICAÇÕES E PRÁTICAS PRÁTICA BILIOGRAFIA

4 1. INTRODUÇÃO A grande maioria dos chips que encontramos em nosso dia-a-dia, circuitos que acompanham as televisões, celulares, etc., já vem todos pré-programados, isto é, com as suas funcionalidades todas definidas no ato de fabricação. Surgiu então uma categoria nova de hardware reconfigurável, o qual tem as suas funcionalidades definidas exclusivamente pelos usuários e não pelos fabricantes. Dentre uma grande gama de hardware reconfigurável podemos destacar o Arranjo de Portas Programável em Campo FPGA (Field Programmable Gate Array). Um FPGA é um dispositivo semicondutor que é largamente utilizado para o processamento de informações digitais. Foi criado pela Xilinx Inc., e teve o seu lançamento no ano de 1985 como um dispositivo que poderia ser programado de acordo com as aplicações do usuário (programador). O FPGA é composto basicamente por três tipos de componentes: blocos de entrada e saída (IOB), blocos lógicos configuráveis (CLB) e chaves de interconexão (Switch Matrix). Os blocos de entrada e saída (I/O) formam uma borda ao redor do dispositivo. Cada um desses blocos pode servir como entrada, saída ou acesso bi-direcional a outros pinos de I/O. Os blocos lógicos são dispostos de forma bidimensional, as chaves de interconexão são dispostas em formas de trilhas verticais e horizontais entre as linhas e as colunas dos blocos lógicos como é mostrado na figura. 4

5 CLB (Configuration Logical Blocks): Circuitos idênticos, construídos pela reunião de flip-flops (entre 2 e 4) e a utilização de lógica combinacional. Utilizando os CLBs, um usuário pode construir elementos funcionais lógicos. IOB (Input/Output Block): São circuitos responsáveis pelo interfaceamento das saídas provenientes das saídas das combinações de CLBs. São basicamente buffers, que funcionarão como um pino bidirecional entrada e saída do FPGA. Switch Matrix (chaves de interconexões): Trilhas utilizadas para conectar os CLBS e IOBS. O terceiro grupo é composto pelas interconexões. Os recursos de interconexões possuem trilhas para conectar as entradas e saídas dos CLBs e IOBs para as redes apropriadas. Geralmente, a configuração é estabelecida por programação interna das células de memória estática, que determinam funções lógicas e conexões internas implementadas no FPGA entre os CLBs e os IOBs. O processo de escolha das interconexões é chamado de roteamento. Programação de FPGAs: Tipicamente, a etapa inicial do projeto é seguida de uma simulação funcional. Este é o período onde um simulador é utilizado para a execução do projeto para confirmar as saídas com as diversas entradas de teste. A compilação somente se inicia quando já existe uma representação funcional correta do hardware. Esta compilação se divide em duas etapas. A primeira, chamada de síntese (synthesys), é onde o compilador tem uma idéia de como implementar o projeto e falta apenas posicionar e rotear as estruturas lógicas em macrocélulas, interconexões e pinos de entrada e saída, que é a segunda etapa. Feita a compilação, um bitstream é criado, ou seja, já sabemos quais são os dados binários que deverão ser carregados no FPGA para fazer com que o chip execute um projeto em particular. Geralmente, as empresas que desenvolvem dispositivos programáveis, fornecem também softwares capazes de carregar o bitstream no hardware utilizando linguagens de descrição de hardware (Hardware Description Language HDL). 5

6 1.1. ARQUITETURA A arquitetura de um FPGA é predominantemente lógica, na forma de elementos lógicos, dispostos em malhas ao longo do dispositivo. Os elementos lógicos possuem duas partes: Look-Up Tables (LUT), que podem implementar funções comuns de lógica, tais como portas E ou OU; e registros que podem implementar lógica síncrona, como flip-flop. Além dos elementos lógicos, outras estruturas de hardware dedicadas estão presentes para auxiliar na implementação de funções definidas pelo usuário e aumentar o desempenho. Estes recursos estão geralmente dispostos em colunas ao longo da FPGA. Um dos tipos de recursos dedicados são as memórias embutidas. Este recurso pode variar tanto na capacidade quanto na disposição (série ou paralelo), com a finalidade de obter memórias mais robustas. Multiplicadores embutidos eles podem ser cascateados de tal sorte a facilitar o processamento digital de sinais (PDS), auxiliando na implementação de funções avançadas de PDS. A maioria dos dispositivos contém Loops de Fase Fixa para implementar instruções de clock mais refinadas. As FPGAs contam com elementos de entrada e saída, cuja disposição e uso são definidos pela escolha do usuário. Estes elementos podem ser posicionados e configurados para comunicar o FPGA com outros dispositivos externos presentes no circuito impresso. Todos estes elementos estão conectados através de uma planta contendo rotas reconfiguráveis e registros de configuração. Estas rotas são extremamente flexíveis, assegurando que os requerimentos de hardware para um design em particular serão conectados corretamente e de tal forma que atinjam todas as metas de desenvolvimento DESIGN DIGITAL Design digital é o processo de criação de uma nova estrutura lógica utilizando dispositivos lógicos programáveis. O processo de design digital começa com a ideia. Seja ela em nível de sistema ou em nível de design específico para uma FPGA. Esta ideia é geralmente 6

7 documentada em um formulário para especificar as características do que a FPGA deveria fazer e a forma como ela deveria trabalhar. O próximo passo seria descrever esta ideia utilizando um formulário digital que possa ser entendido pelo programa de design de FPGAs e que possa ser traduzido para as estruturas físicas encontradas no dispositivo alvo. Esta descrição é normalmente feita em uma linguagem de alto nível para descrição de hardware. Verilog HDL e VHDL são as linguagens mais popularmente utilizadas na criação de designs para FPGAs. Agora utilizamos um programa de design de FPGAs para pegar este código e realizar um processo conhecido como compilação. A compilação, em design digital, é composta de dois passos principais Síntese e Place and Route (P&R): Síntese: Traduz o código de descrição nas estruturas de hardware disponíveis dentro do dispositivo. P&R: Escolhe a posição atual das estruturas físicas e as conecta usando a planta de rotas configuráveis. No processo de compilação 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 no desempenho especificado pelo usuário. O software gera um programa binário que contém todas as informações necessárias para programar uma FPGA com o design. Por último o usuário faz um download do programa no dispositivo. Dois itens são necessários para que esta etapa ocorra, o programa binário e as funcionalidades do depurador de design (este último faz parte do software de design). Este download é feito diretamente no hardware. A programação ocorre através de uma memória FLASH ou através de uma conexão direta entre um computador e uma FPGA. Se houver qualquer problema ou alteração no design basta voltar ao código de descrição ou às configurações do software de design realizar as mudanças, recompilar o design e reprogramar o novo binário na FPGA. Como podemos notar este processo torna fácil a correção de problemas e mudanças de design num curto período de tempo. 7

8 1.3. APLICAÇÕES Os FPGAs são aplicáveis em qualquer circuito que empregue lógica digital. As aplicações de FPGA podem ser descritas nas seguintes grandes áreas: Protótipos: Pela sua habilidade de reconfiguração, FPGAs são utilizados em prototipagens de sistemas. Aliado ao design digital é possível obter protótipos de circuitos lógicos simples ou até de processadores mais avançados. Design Digital: Criação de qualquer circuito lógico a partir de design digital. Várias áreas da engenharia são afins à utilização de circuitos lógicos. Ensino de Tecnologias e Conceitos: A FPGA pode ter um importante papel em várias disciplinas da engenharia. Este papel pode ser tanto didático, quanto no auxílio de implementações nestes tópicos. Dentre as disciplinas podemos citar: Eletrônica Digital, Robótica, Controle Digital, Eletrônica de Potência, Inteligência Artificial, Arquitetura e Organização de Computadores, Processamento Digital de Sinais. Núcleos Embutidos: Núcleos de processamento especializados em uma tarefa, capazes de realizar as operações em tempo real visto que as mesmas são efetuadas em hardware. Núcleos Embutidos utilizando FPGA são inclusive reconfiguráveis, tornando-os versáteis. Chips Híbridos: Combinam partes de lógica fixa e partes de lógica programável. Geralmente a parte de lógica fixa é dedicada à comunicação periférica ou a algumas 8

9 rotinas comuns. Por sua vez a parte programável possuirá a flexibilidade já conhecida da FPGA INTRODUÇÃO AO KIT DE DESENVOLVIMENTO O kit de FPGA é formado por periféricos que possibilitam sua interação com sinais de áudio, display gráfico e alfanumérico, comunicação serial e USB, codec de áudio, chaves para simulação e reset, leds para uso geral bem como barramento de acesso a quarenta pinos de entrada e saída do componente A PLATAFORMA FPGA O chip empregado no kit é o EP2C8Q208C8 fabricado pela Altera, sistema da família Cyclone II, com 8256 elementos lógicos, dois PLLs (Phase-Locked Loop), 36 blocos de 4Kbit de memória e com 18 elementos lógicos de multiplicação embarcados. Figura 1.1 Visão Geral da Placa Abaixo serão mostrados os componentes presentes na placa, contendo uma breve descrição dos mesmos, modelo esquemático e tabela de referência contendo as ligações equivalentes dos pinos de cada componente no FPGA. 9

10 SWITCHES Foram implementadas no Kit de FPGA um conjunto de Switches, totalizando 16, para simular acionamentos diversos. Os Switches forçam os níveis lógicos alto e baixo diretamente no pino onde estão conectadas, garantindo níveis estáveis para uma simulação eficaz durante o desenvolvimento e estudos realizados com o kit. Figura 1.2 Esquemático dos circuitos dos Switches Pino Componente Pino FPGA Descrição CH1 PIN_68 Switch SW [0] CH2 PIN_69 Switch SW [1] CH3 PIN_70 Switch SW [2] CH4 PIN_72 Switch SW [3] CH5 PIN_74 Switch SW [4] CH6 PIN_75 Switch SW [5] CH7 PIN_76 Switch SW [6] CH8 PIN_77 Switch SW [7] CH9 PIN_80 Switch SW [8] CH10 PIN_81 Switch SW [9] CH11 PIN_82 Switch SW [10] CH12 PIN_84 Switch SW [11] CH13 PIN_86 Switch SW [12] CH14 PIN_87 Switch SW [13] CH15 PIN_88 Switch SW [14] CH16 PIN_89 Switch SW [15] Tabela 1.1 Pinagem correspondentes aos Switches do FPGA 10

11 CHAVES Para a simulação de experiências que exijam teclas ou ações provenientes de transientes de nível, fora especificado um módulo de chaves que estão diretamente ligadas ao FPGA já com os devidos filtros anti-bouncing em cada dispositivo. Figura 1.3 Esquemático dos circuitos das Chaves Pino Componente Pino FPGA Descrição P0 PIN_90 Chave CH1 P1 PIN_92 Chave CH2 P2 PIN_94 Chave CH3 P3 PIN_95 Chave CH4 P4 PIN_96 Chave CH5 P5 PIN_97 Chave CH6 P6 PIN_99 Chave CH7 P7 PIN_101 Chave CH8 Tabela 1.2 Pinagem correspondentes as Chaves do FPGA 11

12 DISPLAY DE SETE SEGMENTOS Para este kit foram previstas operações lógicas básicas, dentre elas operações com Displays de Sete Segmentos. O módulo de display foi implementado para operar em modo multiplexado, nesse modo cada display é acessado pelo mesmo barramento, sendo necessário o acionamento do display no qual se deseja controlar. Para que se obtenha o acionamento de todos os displays, se faz necessária à escrita constante em cada um deles a uma taxa de atualização de 100 Hz, nessa frequência a multiplexação se torna transparente ao usuário. Cada segmento dos displays é aceso com nível lógico 0. Figura 1.4 Esquemático do circuito do Display de sete segmentos Figura 1 Posição dos segmentos do Display 12

13 Pino Componente Pino FPGA Descrição D0 PIN_102 Segmento a D1 PIN_103 Segmento b D2 PIN_104 Segmento c D3 PIN_105 Segmento d D4 PIN_106 Segmento e D5 PIN_107 Segmento f D6 PIN_110 Segmento g D7 PIN_112 Ponto DISPLAY_1 PIN_113 Ativa o Display DP1 DISPLAY_2 PIN_114 Ativa o Display DP2 DISPLAY_3 PIN_115 Ativa o Display DP3 DISPLAY_4 PIN_116 Ativa o Display DP4 Tabela 1.3 Pinagem correspondente ao Display de sete segmentos do FPGA LEDs Estão disponíveis 16 LEDs diretamente ligados aos pinos do FPGA para que possa servir de interface para usuário durante o desenvolvimento de projetos diversos, esses LEDs são acionados com nível lógico alto. Figura 1.5 Esquemático do circuito dos LEDs 13

14 Pino Componente Pino FPGA Descrição LD1 PIN_127 LED LD1 LD2 PIN_128 LED LD5 LD3 PIN_133 LED LD7 LD4 PIN_134 LED LD9 LD5 PIN_135 LED LD11 LD6 PIN_137 LED LD13 LD7 PIN_138 LED LD15 LD8 PIN_139 LED LD3 LD9 PIN_141 LED LD2 LD10 PIN_142 LED LD4 LD11 PIN_143 LED LD6 LD12 PIN_144 LED LD8 LD13 PIN_145 LED LD10 LD14 PIN_146 LED LD12 LD15 PIN_147 LED LD14 LD16 PIN_149 LED LD16 Tabela 1.4 Pinagem correspondente aos LEDs do FPGA DISPLAY LCD O Kit possui os conectores para controle e operação com displays alfanuméricos e gráficos, estabelecendo uma interface visual com o usuário. Para se ajustar o contraste do display, basta utilizar o trimpot contraste, que está identificado no kit, do lado direito. Este contraste é compartilhado tanto pelo display alfanumérico quando o gráfico por isso altera-se o nível de contraste de ambos os displays de cristal líquido. 14

15 Figura 1.6 Esquemático dos conectores para Display LCD Pino Componente Pino FPGA Descrição RD0 PIN_164 Palavra para o LCD [0] RD1 PIN_163 Palavra para o LCD [1] RD2 PIN_162 Palavra para o LCD [2] RD3 PIN_161 Palavra para o LCD [3] RD4 PIN_160 Palavra para o LCD [4] RD5 PIN_152 Palavra para o LCD [5] RD6 PIN_151 Palavra para o LCD [6] RD7 PIN_150 Palavra para o LCD [7] EN PIN_165 Habilita o LCD RS PIN_168 Seleciona Dado ou Comando, 0 = Comando, 1 = Dado RW PIN_169 Seleciona Leitura ou Escrita, 0 = Escrita, 1 = Leitura CS1 PIN_118 - CS2 PIN_117 - VOUT - Não possui ligação no FPGA RESET - Chave RESET presente na placa Tabela 1.5 Pinagem correspondente aos LEDs do FPGA COMUNICAÇÃO SERIAL RS-232 O kit possui um adaptador para comunicação serial padrão RS232, efetuando a comunicação direta do kit com qualquer dispositivo serial utilizando o mesmo padrão, incluindo computadores, usando o circuito MAX3232. A comunicação serial pode ser configurada para operar nas taxas de comunicação padrão para este tipo de dispositivo. 15

16 Figura 1.7 Esquemático do circuito MAX3232 Pino Componente Pino FPGA Descrição RTS PIN_207 - CTS PIN_208 - RX PIN_206 - TX PIN_205 - Tabela 1.6 Pinagem correspondente ao MAX MEMÓRIA FLASH A memória flash para expansão de memória de dados do FPGA tem o intuito de possibilitar gravações e leituras de dados com velocidade elevada, sendo utilizada para expansão da memória interna do FPGA e também possibilitando a gravação dos dados já processados. O dispositivo especificado foi o AT45DB081D, fabricado pela ATMEL, com capacidade de 8Mb, taxa de comunicação SPI de até 66MHz e modo programação de página inteligente. Figura 1.8 Esquemático do circuito da Memória Flash 16

17 Pino Componente Pino FPGA Descrição CS_FLASH PIN_203 - SCK_FLASH PIN_200 - DATAIN_FLASH PIN_199 Entrada de dados da memória flash DATAOUT_FLASH PIN_198 Saída de dados da memória flash RESET - Chave RESET presente na placa Tabela 1.7 Pinagem correspondente à Memória Flash PORTAS DE EXPANSÃO O kit possui 50 pinos de expansão divididos em: 41 pinos de Entrada/Saída de uso geral, 6 pinos para sinais de Clock externos, 1 pino que fornece 3.3V e 2 pinos de aterramento. Figura 1.9 Esquemático do circuito das Portas de Expansão 17

18 Pino Componente Pino FPGA Descrição IO0 PIN_170 Pino de Expansão IO0 IO1 PIN_171 Pino de Expansão IO1 IO2 PIN_173 Pino de Expansão IO2 IO3 PIN_175 Pino de Expansão IO3 IO4 PIN_176 Pino de Expansão IO4 IO5 PIN_179 Pino de Expansão IO5 IO6 PIN_180 Pino de Expansão IO6 IO7 PIN_181 Pino de Expansão IO7 IO8 PIN_182 Pino de Expansão IO8 IO9 PIN_185 Pino de Expansão IO9 IO10 PIN_187 Pino de Expansão IO10 IO11 PIN_188 Pino de Expansão IO11 IO12 PIN_189 Pino de Expansão IO12 IO13 PIN_191 Pino de Expansão IO13 IO14 PIN_193 Pino de Expansão IO14 IO15 PIN_3 Pino de Expansão IO15 IO16 PIN_4 Pino de Expansão IO16 IO17 PIN_5 Pino de Expansão IO17 IO18 PIN_6 Pino de Expansão IO18 IO19 PIN_8 Pino de Expansão IO19 IO20 PIN_10 Pino de Expansão IO20 IO21 PIN_11 Pino de Expansão IO21 IO22 PIN_12 Pino de Expansão IO22 IO23 PIN_13 Pino de Expansão IO23 IO24 PIN_14 Pino de Expansão IO24 IO25 PIN_15 Pino de Expansão IO25 IO26 PIN_30 Pino de Expansão IO26 IO27 PIN_31 Pino de Expansão IO27 IO28 PIN_33 Pino de Expansão IO28 IO29 PIN_34 Pino de Expansão IO29 IO30 PIN_35 Pino de Expansão IO30 IO31 PIN_37 Pino de Expansão IO31 IO32 PIN_39 Pino de Expansão IO32 IO33 PIN_40 Pino de Expansão IO33 IO34 PIN_41 Pino de Expansão IO34 IO35 PIN_43 Pino de Expansão IO35 IO36 PIN_44 Pino de Expansão IO36 IO37 PIN_45 Pino de Expansão IO37 IO38 PIN_46 Pino de Expansão IO38 IO39 PIN_47 Pino de Expansão IO39 IO40 PIN_48 Pino de Expansão IO40 CLK2 PIN_27 Pino para sinal de clock externo CLK2 CLK3 PIN_28 Pino para sinal de clock externo CLK3 CLK4 PIN_132 Pino para sinal de clock externo CLK4 CLK5 PIN_131 Pino para sinal de clock externo CLK5 CLK6 PIN_130 Pino para sinal de clock externo CLK6 CLK7 PIN_129 Pino para sinal de clock externo CLK7 Tabela 1.8 Pinagem correspondente as Portas de Expansão 18

19 OSCILADOR O kit possui um oscilador que produz um sinal de clock com frequência de 24 MHz já integrada a placa. Pino Componente Pino FPGA Descrição OSCILADOR PIN_23 Sinal de clock de 25 MHz Tabela 1.9 Pinagem correspondente ao sinal de Clock RESET A chave RESET presente na placa já está ligada ao módulo de Memória Flash e ao conector de Display Gráfico exercendo a função de suas respectivas entradas de RESET, mas ela também está disponível para ser usada em qualquer sistema implementado no FPGA. Pino Componente Pino FPGA Descrição RESET PIN_201 Chave RESET Tabela 1.10 Pinagem correspondente à chave Reset 19

20 2. DESING DIGITAL 2.1. LINGUAGEM DE DESCRIÇÃO DE HARDWARE Este tópico tem como objetivo introduzir conceitos básicos de VHDL (Linguagem de Descrição de Hardware com ênfase em Circuitos Integrados de Altíssima Velocidade). VHDL é uma forma de se descrever, através de um programa, o comportamento de um circuito ou componente digital. Uma linguagem de descrição de hardware descreve o que um sistema faz e como ele o faz. Esta descrição é 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 programável (FPGA - Field Program Gate Array), permitindo assim o uso em campo do seu sistema, tendo a grande vantagem da alteração do código a qualquer momento. Vantagens e Desvantagens de se utilizar VHDL A descrição de um sistema em VHDL apresenta inúmeras vantagens, tais como: Intercâmbio de projetos entre grupos de pesquisa sem a necessidade de alteração; Permite ao projetista considerar no seu projeto os delay's comuns aos circuitos digitais; A linguagem independe da tecnologia atual, ou seja, você pode desenvolver um sistema hoje e implementá-lo depois; Os projetos são fáceis de serem modificados; O custo de produção de um circuito dedicado é elevado, enquanto que usando VHDL e Dispositivos Programáveis, isto passa a ser muito menor; Reduz consideravelmente o tempo de projeto e implementação. Quanto as desvantagens, apenas uma é relevante: VHDL não gera um hardware otimizado. 20

21 Componentes de um projeto VHDL A estrutura de um programa VHDL, baseia-se em 4 blocos. PACKAGE (Pacote): são declaradas as constantes, tipos de dados, subprogramas; ENTITY (Entidade): declaração dos pinos de entrada e saída; ARCHITECTURE (Arquitetura): define as implementações do projeto; CONFIGURATION (Configuração): define as arquiteturas que serão utilizadas. Todo sistema necessita de uma interface com o mundo externo. Em VHDL esta interface é a entity, e é fundamental para todo e qualquer sistema. Para se atingir a funcionalidade desejada, os dados devem sofrer transformações dentro do sistema. Esta parte interna do sistema responsável pelas transformações dos dados é chamada de corpo ou architecture. Qualquer que seja o sistema, independente de sua complexidade, necessita de uma interface (entity) e de um corpo (architecture). Algumas vezes, alguns sistemas necessitam de funcionalidades adicionais, que são conhecidas como package. 21

22 Figura 2.1: Representação de uma descrição feita utilizando VHDL PACKAGE (Pacotes) Quando for necessário utilizar algo não definido nas bibliotecas do VHDL padrão, faz-se uso do package (similar aos includes da Linguagem C). A única restrição é que o package deve ser previamente definido, antes do inicio da entity. O uso do package é feito por meio de duas declarações: library e use. Dos vários packages existentes, o mais conhecido e usado é o STD_LOGIC_1164 da IEEE que contém a maioria dos comandos adicionais mais usados em VHDL. O uso deste package é dado por: library IEEE; use IEEE.std_logic_1164.all; Observação:.all significa que todos os elementos da bibliotecas devem ser utilizados, caso não seja acrescentado.all deve-se especificar os elementos que serão utilizados. 22

23 Pacotes normalmente usados podem ser vistos na figura 2.2. Figura 2.2: Pacotes mais usuais ENTITY (Entidade) A entity é a parte principal de qualquer projeto, pois descreve a interface do sistema. Tudo que é descrito na entity fica automaticamente visível a outras unidades associadas com a entity. O nome do sistema é o próprio nome da entity. Assim, devese sempre iniciar um projeto em VHDL pela entity. Como exemplo, considere a Figura 2.3, onde há 8 linhas de transmissão associadas ao sistema A, que é formado por três sub-sistemas; B, C e D. Somente as linhas TL1, TL2, TL3, TL7e TL8 serão descritas na entity do sistema A. As demais linhas não são necessárias, pois são internas ao sistema. Figura Sistema Genérico. A entity é composta de duas partes: parameters e connections. 23

24 Parameters refere-se aos parâmetros vistos do mundo externo, tais como largura de barramento e frequência de operação, e que são declarados como generics. Connections refere-se a onde e como ocorre a transferência de informações para dentro e fora do sistema, e são declarados por ports. Tipo de Portas: IN: Porta de Entrada; (Não pode receber atribuição de valor dentro do programa). OUT: Porta de Saída; (Não pode ser utilizada como entrada para o outro circuito). INOUT: Porta de entrada e saída; BUFFER: Porta de saída 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 figura 2.4: Figura 2.4: Entidade A variável <tipo> pode ser: bit, bit_vetor, std_logic, std_logic_vector, boolean, real; Como mostra a figura 2.5 Figura 2.5: Tipos de sinais 24

25 ARCHITECTURE (Arquitetura) A entity de um sistema é tão importante que a architecture é especificada na forma de architecture of entity. Um sistema pode ser descrito em termos de funcionalidade, isto é, o que o sistema faz, ou em termos de estrutura, isto é, como o sistema é composto. A descrição funcional especifica as respostas nas saídas em termos das excitações aplicadas nas entradas. Neste caso não há nenhuma informação de como o sistema deverá ser implementado. A descrição estrutural, por sua vez, especifica quais componentes devem ser usados e como devem ser ligados. Esta descrição é mais facilmente sintetizada, porém exige mais experiência do projetista. Desta forma, pode-se ter várias architectures capazes de implementar um mesmo circuito. Uma entity pode ser formada por mais de uma architecture! Arquitetura Simples: A arquitetura simples contém apenas um processo, ou seja, apenas um bloco (figura. 2.6). Figura 2.6: Arquitetura Simples Arquitetura Concorrente: A arquitetura concorrente é uma forma mais complexa de descrever um sistema, geralmente apresenta vários processos dentro de uma arquitetura. 25

26 CONFIGURATION (Configuração) Uma mesma entidade pode ter varias arquiteturas. Veja figura SINAIS Figura 2.7: Configuração Os sinais são de vital importância em virtualmente todos os sistemas eletrônicos, podendo transmitir dados internamente ou externamente ao sistema, assumindo assim um papel muito importante em VHDL. Os sinais externos são apresentados na entity e os sinais internos são apresentados na architecture. Os sinais podem ser uma linha (transmissão de um sinal por vez) ou um barramento, também chamado de vetor (transmissão de várias informações simultaneamente). Em VHDL estes sinais são chamados de bit e bit_vector, respectivamente. No caso de bit_vector, a ordem dos bits é de vital importância. Como exemplo, se o bit7 for o mais significativo e o bit0 o menos significativo, em VHDL isto seria representado por bit_vector(7downto0). Os sinais externos são apresentados na entity pelo comando port. Os ports funcionam como canais dinâmicos de comunicação entre a entity e o ambiente. Cada sinal deve ter nome e tipo únicos. A direção do sinal, que é de vital importância, também deve estar presente e pode ser de entrada (input), saída (output) ou bidirecional (in-out). A forma de uso do comando port é dada por: port ( nome_port : modo tipo_port ) 26

27 Tem-se o nome do port, seguido por dois pontos, o modo ou direção do sinal, o tipo do port, seguido opcionalmente por um valor inicial (precedido pelo símbolo := ) e também opcionalmente por algum comentário. A listagem a seguir ilustra um exemplo do comando port. Observe que neste caso há mais de um port, e estão separados por ponto-e-vírgula. port ( RESULT : inout bit_vector (0 to 7); z : in bit; EXTBUS : out bit_vector (4 downto 0)); Por outro lado, os sinais internos são apresentados na architecture, pelo comando signal. A listagem a seguir ilustra um exemplo do comando signal. signal x, y : bit Observe que não há a necessidade de se especificar o modo de um signal (in, out ou inout), pois é interno ao sistema. A visibilidade ou disponibilidade dos sinais depende do local onde foi declarado. Um sinal declarado em um package é visível em todos os projetos que usam este package. Um sinal declarado como port de uma entity é visível em todas architectures desta entity. Já um sinal declarado como parte de uma architecture só é visível internamente a esta architecture. Finalmente, se um sinal for declarado dentro de um bloco em uma architecture, só será visível dentro deste bloco Semântica da linguagem VHDL Elementos Léxicos O nome de uma entity, que é o seu identificador serve basicamente para documentação, e assim, deve-se preferencialmente usar nomes associados com a descrição do sistema. O nome pode ser composto por letras e números, sendo que deve iniciar por uma letra. Toda entity deve terminar com o comando end. Para se evitar erros, o comando end deve ser seguido do nome da entity. 27

28 Quando se escreve um programa em VHDL, devem-se tomar certos cuidados, com os identificadores, na figura 2.8 são apresentados alguns identificadores válidos e inválidos. Figura 2.8: Identificadores COMENTÁRIOS Todo projeto em VHDL deve apresentar uma boa documentação. Isto pode ser feito pela inclusão de comentários ao longo da descrição. Os comentários em VHDL são iniciados por dois traços -- e terminam ao final da linha. Uma boa prática também é a inclusão no início da listagem VHDL da descrição do projeto, indicação de bibliotecas, nomes dos autores e qualquer outra informação relevante. Os comentários são mais relevantes ao nível de sistema. A seguir é apresentada a descrição de uma ULA genérica, conforme ilustrada na Figura 2.9. Observe os comentários em cada linha. 28

29 Figura ULA Genérica. entity ULA is port ( In1 : in bit_vector (3 downto 0); -- operando 1 In2 : in bit_vector (3 downto 0); -- operando Sel : in bit_vector (3 downto 0); -- seleção de operação Ci : in bit; -- carry in Modo : in bit; -- modo (aritmético/lógico) Out : out bit_vector (3 downto 0); -- resultado da operação Co : out bit; -- carry out Igual : out bit; -- igualdade de In1 e In2 ); end entity ULA; COMANDO GENERIC O comando generic serve para descrever o valor de uma constante, que por sua vez, serve para estabelecer valores de temporizarão, largura de barramentos, número de bits em somadores e comparadores, etc. O comando generic é posicionado dentro da entity, normalmente antes dos ports. O comando generic consiste dos seguintes elementos: Nome da generic seguido por dois pontos, Tipo da generic, Opcionalmente, o valor da generic precedida por :=. A listagem a seguir ilustra o uso de generic: 29

30 generic ( BusWidth : integer := 8; MaxDelay : time :=20 us ); Estruturas para descrição de comportamento TYPE Um dos tipos de estruturas de dados em VHDL é o scalar type (tipo escalar) ou scalar. O scalar type não tem elemento ou estrutura interna, e todos seus valores são ordenados e estão em uma certa faixa, ou são explicitamente listados. O VHDL já tem previamente definido alguns scalar type, que são apresentados na Tabela 1. Tipo Exemplo Observação Boolean True, False Diferente de Bit Character 0, +, A, \ Letras, Números e Caracteres. Integer -12, 0, Números inteiros (de a ) Real 0.0, , -1.0E-5 Números em ponto flutuante (de 1.0E308 a 1.0E308) Bit 0, 1 Valores lógicos 0 e 1 Tabela Tipos Escalares em VHDL. O usuário também pode definir algum outro tipo escalar, chamado user defined type. Considere como exemplo a condição em que se deseja projetar uma máquina de estados, com 4 estados distintos; esperar, buscar, decodificar e executar. A declaração deste tipo seria: type MEstado is (Esperar, Buscar, Decodificar, Executar); Outros exemplos de definidos pelo usuário seriam: Type dedos is range1to10 Type dedinho is range10downto1 Type pos_neg is range-1to1 Outro tipo é o physical type que serve para especificar valores físicos. Entretanto, este tipo é previamente definido em VHDL somente para tempo. A listagem a seguir ilustra a descrição do tipo time. 30

31 type time is range to units fs; ps = 1000 fs; ns = 1000 ps; us = 1000 ns; ms = 1000 us; sec = 1000 ms; min = 60 sec; hour = 60 min; end units; PREDEFINED ARRAYS Estruturas regulares consistindo de elementos do mesmo tipo são chamadas de Arrays. Há dois tipos de arrays pré-definidos em VHDL: bit-vector (elementos do tipo bit) e string (elementos do tipo character). Um único elemento, em ambos os tipos de arrays é especificado por (apóstrofe), e dois ou mais elementos são especificados por (aspas). A listagem a seguir ilustra a declaração de um array e as duas maneiras de se especificar seus elementos. Signal BusDados : bit_vector (7 downto 0); BusDados = BusDados(7) = 0 BusDados(6) = 0 BusDados(5) = 1 BusDados(4) = 1 BusDados(3) = 0 BusDados(2) = 1 BusDados(1) = 0 BusDados(0) = 1 31

32 USER-DEFINED ARRAY Os arrays predefinidos são unidimensionais (também chamados de vetoriais), entretanto, às vezes se torna necessário definir um array de dimensões maiores. Considere como exemplo de aplicação uma memória. São necessárias duas dimensões para se especificar uma memória, isto é, número de posições e número de bits em cada posição. A descrição de uma memória de 2Kbytes de 8 bits seria: signal memoria2k8 : array (0 to 2047) of bit_vector (7 downto 0); Expressões e operadores Tipos de dados não lógicos Abaixo são listados alguns tipos de dados não lógicos: BIT: Assume valores 0 e 1 Boolean: Assume valores true ou false. Real: Representam valores reais. Exemplo: -3.2, 4.56, 6.0, -2.3E+2; Integer: Representam valores inteiros. Exemplo: 3, 546, -349; Physical: Representam uma medida física: voltagem, capacitância, tempo. Tipos pré-definidos: ps, ns, um, ms, séc, min, hr. Intervalos: Permite determinar um intervalo de utilização dentro de um determinado tipo. range <valor_menor> to <valor_maior> range <valor_maior> downto <valor_menor> Array: em VHDL um array é definido como uma coleção de elementos do mesmo tipo. 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 ) 32

33 (3 => s, 2 => e, 5 => e, others => t ) Record: semelhante a struct da Linguagem C, ou seja, é uma coleção de elementos de tipos diferentes. Figura 2.10: Record EXPRESSÕES E OPERADORES Operadores Lógicos Como os sinais em VHDL são tipicamente lógicos, os operadores lógicos são os mais usados. Os operadores and, or, nand, nor, xor e xnor exigem dois operandos e o operador not necessita de apenas um. Essas operações lógicas são definidas para os tipos bit, boolean e bit_vector, e exige-se que os operandos sejam do mesmo tipo. No caso de vetores, estas operações são efetuadas bit a bit. Operadores de Deslocamento As operações de deslocamento são restritas a arrays, cujos elementos devem ser bit ou boolean. Estas operações exigem dois operandos. Um sendo o array e o outro, do tipo integer, que determina o numero de posições a serem deslocadas. Se o valor do segundo operando for negativo, o sentido do deslocamento fica invertido. As operações de deslocamento, conforme indicadas na Figura 2.11 são: sll: shift left logical(deslocamento lógico a esquerda), srl: shift right logical(deslocamento lógico a direita), 33

34 sla: shift left arithmetic (deslocamento aritmético a esquerda), rla: shift right arithmetic (deslocamento aritmético a direita), rol: rotate left logical (rotacionamento lógico a esquerda), ror: rotate right logical (rotacionamento lógico a direita). Figura Operações de Deslocamento. Operadores Numéricos As operações de adição (+), subtração (-), multiplicação (*), divisão (/), modulo (mod), valor absoluto (abs), resto (rem) e potência (**) são aplicados aos tipos integer e real. Os operandos devem ser do mesmo tipo. O tipo time exige que os operandos sejam iguais nas operações de adição e subtração, mas um operando time pode ser multiplicado ou dividido por um operando integer ou real. 34

35 Comparações As comparações entre dois objetos podem ser igual (=), diferente (/=), menor (<), menor ou igual (<=), maior (>), e maior ou igual (>=). Os objetos comparados devem ser do mesmo tipo e podem ser boolean, bit, character, integer, real, time, string ou bit_vector, entretanto o resultado é sempre boolean (true ou false). Ao se comparar dois vetores de tamanhos diferentes, eles são primeiramente justificados no tamanho do menor. Concatenação Concatenação é uma forma conveniente de se unir dois ou mais vetores, criando um novo vetor, cujo tamanho é a soma dos vetores dos operandos. Os vetores devem ser do mesmo tipo e pode-se unir também um bit a um vetor. A listagem a seguir ilustra a situação em que se une parte de dois vetores e um bit para formar um novo vetor. NovoVetor <= ( Vetor1(0 to 3) & Vetor2(3 to 5) & Bit1); Atribuição de Sinais Eventualmente os resultados das operações em VHDL devem ser atribuídas às saídas. Isto é feito pelo símbolo <= em que o valor da expressão a direita é atribuído à expressão à esquerda. Para auxiliar na memorização desta operação, basta observar que a seta formada indica o fluxo da informação. A listagem a seguir ilustra alguns exemplos de atribuição. x <= y <= z; a <= b or c; k <= 1 ; m <= 0101 ; n <= m & k; Tendo em vista que nada é instantâneo no mundo real, em VHDL também é possível modelar estes atrasos naturais por meio da expressão after. A expressão after determina o tempo após o qual uma expressão se torna efetiva. A declaração a seguir ilustra o uso da atribuição de sinal com atraso empregando after. 35

36 luz <= chave after 3 s; Atraso Inercial Atraso inercial é tempo mínimo que um pulso deve durar para que seja aceito por um dado circuito. Esta característica de circuitos reais faz parte do modelo de atrasos em VHDL. Assim, para o caso anterior, observe na Figura 2.12.a o comportamento do circuito para um pulso de 2s, e na Figura 2.12.b a mesma análise para um pulso de 4s. (a) (b) Figura Efeito de Atraso Inercial para (a) um Pulso de 2s, e (b) um Pulso de 4s. Como na Figura 2.12.a o pulso de entrada tem uma duração de apenas 2s, não é o suficiente para vencer o atraso inercial e efetivamente acionar a saída luz. Já na Figura 2.12.b o pulso de entrada tem uma duração de 4s, o que é maior que o atraso inercial e consegue acionar a saída luz. 36

37 Outro problema do mundo real é o atraso que ocorre em linhas de transmissão. Neste caso não há uma duração mínima do pulso, mas sempre há um atraso no transporte do sinal. Isto é modelado em VHDL pela inclusão do termo transport antes da especificação de valor e atraso, conforme ilustrado a seguir. luz <= transport chave after 3 s; Para melhor ilustrar este conceito, considere o exemplo anterior, agora usando este conceito de atraso de transporte, conforme ilustrado na Figura Figura Comando Transport Aplicado em um Pulso de 2s. Constantes As constantes desempenham o mesmo papel que as generics. Ao contrário da generic que é declarada na entity, a constant é declarada na architecture. A declaração de uma constant consiste do comando constant seguido do nome da constante, dois pontos, tipo da constante e o símbolo :=, conforme ilustrado a seguir. constant N : integer := 123 A constant serve para atribuir valores locais, tornando o projeto mais simples, mais fácil de se ler e de efetuar manutenções/alterações. Como a constant é declarada na architecture, não pode ser usada para definir dimensões de vetores. Da mesma forma, a constant só pode ser usada dentro da architecture na qual foi declarada. Por outro lado, a generic que é declarada na entity é usada por todas as architectures. 37

38 2.4. Descrição de Comportamento (Process) O comportamento, ou funcionalidade, de um sistema corresponde a uma lista de operações a serem executadas para se obter um determinado resultado. Process é o modo formal de se fazer uma lista sequencial dessas operações, e tem um formato estruturado. Existem algumas regras para se fazer uma descrição process. Inicialmente, deve-se especificar que a listagem corresponde a um process, e isto é feito pelo comando process, que fica posicionado após o nome e os dois pontos. Da mesma forma este nome deve ser colocado após a declaração end of process. Para separar as operações sequenciais de comandos tais como variable ou constant, a declaração begin é usada para marcar o inicio da listagem das operações sequenciais. Ao contrário de linguagens de programação convencionais, processos descritos em VHDL não terminam. Após a execução do último comando, process é executado novamente desde o primeiro comando. Circuitos eletrônicos em geral operam em modo contínuo, aguardando ocorrência de certas condições de entrada, executando tarefas, suspendendo as atividades quando se completa o serviço, e novamente retomando o serviço na ocorrência de certas condições de entrada. Em VHDL suspende-se um processo pelo comando wait. Este comando pode suspender o processo incondicionalmente, ou apresentar uma lista de condições a serem satisfeitas para ser e tomar a operação normal. O comando wait pode aparecer em três formas distintas. Na primeira forma, ou wait for o processo é suspenso por um certo intervalo de tempo. Na segunda, ou wait until o processo é suspenso até que uma certa condição seja verdadeira devido a mudança dos sinais envolvidos nesta condição. Observe que se não houver mudança nos sinais, o processo continua suspenso. 38

39 Na terceira forma, ou wait on o processo é suspenso até que um evento da lista de sinais ocorra. Isto é, o processo continua quando ocorrer qualquer uma das condições de sua lista. Eventualmente pode ocorrer uma mistura destas formas. As duas listagens a seguir ilustram exemplos destes casos. wait for 10 ns; wait for periodoclk / 2; wait until CLK = 1 ; wait until CE and (not RST); wait until dado > 16; wait on CLK; wait on dado; wait on dado until CLK = 1 ; wait until CLK= 1 for 10 ns; Como já mencionado, os comandos de um process são executados constantemente e ciclicamente. Pode parecer, portanto, que não faz diferença de onde se coloca um wait. Na verdade, é de vital importância o seu posicionamento adequado. Se uma instrução wait for colocada no início de um process, nada ocorre até que as condições do wait sejam satisfeitas. Se este mesmo wait for colocado no final de um process, todos os comandos anteriores ao wait serão executados. A forma wait on é usado com mais frequência que as demais. Ao invés de se utilizar o wait on no final de um process, pode-se usar o conceito de sensitivity list, ou lista de sensitividade, que consiste simplesmente em colocar as condições do wait on ao lado do comando process (entre parênteses), e se obtém os mesmos resultados. Neste caso, o process não pode conter nenhum wait. A listagem a seguir ilustra o uso de process para se implementar um multiplexador 2x1. Observe que os sinais A, B e Sel foram colocados na sensitivity list. MUX2x1: process (A, B, Sel) constant High : Bit := 1 ; begin y <=A; if (Sel = 1 ) then Y <= B; end if; end process MUX2x1; Deve-se ressaltar que neste caso, os comandos do process são executados uma vez, e o processo fica suspenso. Ao haver mudança em qualquer uma das 39

40 variáveis do wait on (listados no final do process) ou variáveis listadas ao lado do comando process (sensitivity list), o process é executado mais uma vez. A descrição de comportamento em VHDL é empregada para descrever a reação das saídas às entradas. Entretanto, qualquer novo valor atribuído a uma variável só passa a valer efetivamente quando o processo é suspenso. Adicionalmente, somente a última atribuição a uma variável é válida. Como entradas e saídas são sinais, qualquer variação de saída é tido como variação de sinal e novamente o processo é executado. Para entender melhor este conceito, considere o exemplo listado a seguir. process (sinal1, sinal2) begin sinal2 <= sinal1 + 5; end process; Uma vez iniciado o processo, pode-se ver que o Sinal2 recebe o valor de Sinal1 acrescido de 5. Como houve uma variação em Sinal2, o processo é executado novamente. Desta vez, como não há variação em nenhuma variável (Sinal2 continua com o valor de Sinal1 acrescido de 5), o process é suspenso. Neste momento Sinal2 efetivamente recebe o novo valor. Infelizmente há sérias limitações no process. Não se pode declarar sinais dentro do process. Outra grave limitação é que somente o último valor atribuído à um sinal se torna efetivo, e ainda assim, somente quando o processo é suspenso. Considere, como exemplo, a descrição 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? process (C, D) begin A <= 2; B <= A + C; A <= D + 1; E <= A * 2; end process; Os valores finais das variáveis são: A = 3; B = 2; C = 1; D = 2; E = 2; 40

41 Esta limitação do process é eliminada com o uso de variables, que podem ser declaradas dentro do process. O valor atribuído a uma variable é válido imediatamente após a sua atribuição, e pode receber várias atribuições no mesmo process. A listagem a seguir ilustra como se declara e utiliza as variables. process (C, D) variable At, Bt, Et: integer := 0; begin At := 2; Bt := At + C; At := D + 1; Et <= A * 2; A <= At; B <= Bt; E <= Et; end process; Considere os mesmos valores iniciais do exemplo anterior. Observe que a atribuição de valores de uma variável é feita utilizando-se :=. Compare os resultados deste exemplo, apresentados a seguir os do exemplo anterior. Os valores finais das variáveis são: A = 3; B = 3; C = 1; D = 2; E = 6; Para um melhor entendimento, a Tabela 2 apresenta uma comparação entre signal e variable, observe a tabela a seguir que ilustra suas semelhanças e diferenças. Signal Variable Declaração Em architecture ou como port na entity. Dentro de process. Atribuição Recebe valor atribuído na suspensão do process. Somente a última atribuição é válida. Ex: A<= B + C Recebe valor atribuído imediatamente. Toda atribuição é válida. Ex: A:= B + C Atraso Inercial e Transporte Não há Tabela Comparação entre Variables e Signals Controle da Sequência Como os processes representam sistemas reais estão sujeitos a constantes mudanças externas e assim, normalmente não executam todas as instruções. Estas mudanças externas podem ser modeladas em VHDL pelos comandos condicionais. 41

42 Comando if then Algumas operações são executadas somente se certas condições forem satisfeitas, e são chamadas de operações condicionais. Se a condição for verdadeira, então a lista de operações é executada. As operações desta lista devem estar separadas por ponto-e-vírgula. Ao término destas operações deve ser colocado o end if. Considere como exemplo o process de um flip-flop D ativo por rampa de subida mostrado na figura Figura 2.14: Comando if-else Comando if then else O comando if then po de ser modificado para se obter maior flexibilidade através do comando if then else. Se a condição for verdadeira, a primeira operação é executada, caso contrario, a segunda operação é executada. Na verdade, cada condição podem ser varias operações separadas por ponto-e-vírgula. Para uma maior flexibilidade ainda, este comando pode incluir novos testes através do elsif. A listagem da figura 2.15 ilustra como exemplo o process de um flipflop tipo D ativo por rampa de subida, com linha de reset ativa por 1. 42

43 Figura 2.15: Comando If-Then-Else Comando Case O uso do comando if then else com outros if aninhados serve para selecionar uma ramificação, mas pode ficar complicado se o número de opções se tornar maior que três. Para esta situação utiliza-se o comando case. Ao invés de se avaliar uma expressão booleana, o comando case verifica as condições de uma expressão discreta ou um array. Cada alternativa é composta por: when alternativa => operação Considere como exemplo a listagem a seguir. O circuito apresenta três entradas de seleção (Modo), duas entradas de dados (In1e In2) e uma saída Out. Dependendo dos valores presentes nas entradas de seleção, diferentes operações são executadas nos dados. Pode-se observar o recurso de se utilizar a opção when others para situações não previstas pelas demais opções. 43

44 Figura 2.16: Comando Case COMANDO WHILE LOOP O comando while loop condicional funciona deforma similar ao comando if then. Ele inicia com uma condição lógica, porém tem na última linha um jump para o início do loop. O loop é executado enquanto a condição presente no seu inicio for válida. A condição é verificada e ser for satisfeita, os comandos presentes no loop são executados, caso contrário, o loop é considerado completo e o comando passa para a instrução seguinte ao loop. Na listagem seguinte faz-se a contagem das transições positivas do sinal de clock desde que o sinal Nivel esteja em 1. Observe que como não há sensitivity list, o process continua sendo executado continuamente. process variable conta : integer := 0; begin wait until Clk = 1 ; while Nivel = 1 loop conta := conta + 1; wait until Clk = 0 ; end loop; end process; 44

45 COMANDO FOR LOOP O comando for loop se repete por um número especifico de vezes. Este comando usa um contador, e desde que o valor do contador esteja em uma certa faixa, o loop é executado. Ao término de cada execução do loop, o contador é atualizado. O contador não precisa ser declarado e é tratado como uma constante, e só existe dentro do loop. A listagem da figura 2.17 ilustra um exemplo de uso deste comando. Figura 2.17: Comando For-Loop COMANDO NEXT E EXIT Algumas vezes se torna necessário pular alguns comandos do loop e ir diretamente para a próxima interação. Esta situação pode ser obtida pelo comando next. As formas deste comando são apresentadas a seguir: next; next nome_loop ; next when expressão ; next nome_loop when expressão ; Considere como exemplo deste comando, a descrição dada a seguir. 45

Figura 01 Visão Geral da Placa

Figura 01 Visão Geral da Placa 1. Hardware O kit de FPGA é formado por periféricos que possibilitam sua interação com sinais de áudio, display gráfico e alfanumérico, comunicação serial e USB, codec de áudio, chaves para simulação e

Leia mais

Gustavo G. Parma. Objetivos: O aluno deverá ser capaz de compreender os conceitos básicos de VHDL.

Gustavo G. Parma. Objetivos: O aluno deverá ser capaz de compreender os conceitos básicos de VHDL. Introdução à VHDL Gustavo G. Parma Assunto: Introdução à VHDL. Objetivos: O aluno deverá ser capaz de compreender os conceitos básicos de VHDL. 1 Introdução Teórica VHDL, VHSIC (Very High Speed Integrated

Leia mais

Livro texto: VHDL- Descrição e Síntese de Circuitos Digitais Roberto D Amore Editora LTC

Livro texto: VHDL- Descrição e Síntese de Circuitos Digitais Roberto D Amore Editora LTC Livro texto: VHDL- Descrição e Síntese de Circuitos Digitais Roberto D Amore Editora LTC Linguagem para descrever o funcionamento de um sistema (o que e como o sistema faz). O sistema descrito em HDL

Leia mais

FPGA & VHDL. Tutorial

FPGA & VHDL. Tutorial FPGA & VHDL Tutorial 2009-2 FPGA FieldProgrammableGateArray Dispositivo lógico contendo uma matriz de: Células lógicas genéricas Configuráveis ( programadas ) para desempenhar uma função simples Chaves

Leia mais

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I. Introdução ao VHDL. César A. M. Marcon

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I. Introdução ao VHDL. César A. M. Marcon ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I Introdução ao VHDL César A. M. Marcon VHDL Uma Linguagem de Descrição de Hardware 2 Originou como linguagem para descrever hardware, no contexto do programa

Leia mais

UNIVERSIDADE FEDERAL DE ITAJUBÁ. Grupo de Microeletrônica TUTORIAL VHDL

UNIVERSIDADE FEDERAL DE ITAJUBÁ. Grupo de Microeletrônica TUTORIAL VHDL UNIVERSIDADE FEDERAL DE ITAJUBÁ Grupo de Microeletrônica TUTORIAL VHDL TUTORIAL VHDL I INTRODUÇÃO Não é possível projetar sistemas digitais sem entender alguns blocos básicos, tais como portas lógicas

Leia mais

FPGA & VHDL. Tutorial Aula 1. Computação Digital

FPGA & VHDL. Tutorial Aula 1. Computação Digital FPGA & VHDL Tutorial Aula 1 Computação Digital FPGA Field Programmable Gate Array Dispositivo lógico contendo uma matriz de: Células lógicas genéricas Configuráveis ( programáveis ) para desempenhar uma

Leia mais

Aula 2 Semântica de VHDL

Aula 2 Semântica de VHDL VHDL - VHSIC Hardware Description Language Aula 2 Semântica de VHDL Leonardo Augusto Casillo Ivan Saraiva Silva 2003-2 Identificadores Usados como referência a todos os objetos declarados no código. Regras:

Leia mais

VHDL. Descrição e Projeto de Circuitos Utilizando VHDL

VHDL. Descrição e Projeto de Circuitos Utilizando VHDL VHDL Descrição e Projeto de Circuitos Utilizando VHDL O projeto de circuitos digitais de forma automatizada se tornou prática industrial comum. As principais vantagens são : Portabilidade de tecnologia

Leia mais

Introdução à Linguagem VHDL

Introdução à Linguagem VHDL Fundamentos de Sistemas Digitais Introdução à Linguagem VHDL prof. Dr. Alexandre M. Amory Referências Sugiro estudarem nesta ordem de preferência: Vahid, Cap 9 Ignorar verilog e SystemC Bem didático! um

Leia mais

Introdução ao VHDL. Circuitos Lógicos. DCC-IM/UFRJ Prof. Gabriel P. Silva. Original por Ayman Wahba

Introdução ao VHDL. Circuitos Lógicos. DCC-IM/UFRJ Prof. Gabriel P. Silva. Original por Ayman Wahba Introdução ao VHDL Circuitos Lógicos DCC-IM/UFRJ Prof. Gabriel P. Silva Original por Ayman Wahba VHDL É uma linguaguem de descrição de hardware, ou seja, uma forma estruturada para a descrição de circuitos

Leia mais

DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP. 10/03/2017 Prof. Alexandre - ELP1DLP1 / DEE

DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP. 10/03/2017 Prof. Alexandre - ELP1DLP1 / DEE DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP 1 Objetivos da Aula: Linguagem VHDL Bibliotecas e Tipos de Dados STD STD_LOGIC_1164 Constantes, Variáveis, Sinais, Arrays, Range Expressões (Operadores) Exemplos

Leia mais

Projetos de Circuitos Digitais em VHDL e FPGA

Projetos de Circuitos Digitais em VHDL e FPGA Projetos de Circuitos Digitais em VHDL e FPGA Cap. 2 - Introdução ao VHDL Prof. Erivelton Geraldo Nepomuceno Engenharia Elétrica UFSJ - Universidade Federal de São João del-rei 13 de março de 2019 Objetivo

Leia mais

VHDL Circuitos Combinacionais

VHDL Circuitos Combinacionais VHDL Circuitos Combinacionais Neste módulo será feita uma revisão de circuitos combinacionais introduzindose alternativas representações em VHDL Uma descrição VHDL, de forma geral, pode seguir uma das

Leia mais

Prof. Leonardo Augusto Casillo

Prof. Leonardo Augusto Casillo UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO Aula 3 Introdução ao VHDL Prof. Leonardo Augusto Casillo O que significa VHDL? Very High Speed Integrated Circuit Hardware Description

Leia mais

Lógica Reconfigurável

Lógica Reconfigurável UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ DEPARTAMENTO ACADÊMICO DE ELETROTÉCNICA CURSO DE ENGENHARIA INDUSTRIAL ELÉTRICA MESTRADO EM SISTEMAS DE ENERGIA Lógica Reconfigurável - amauriassef@utfpr.edu.br

Leia mais

Dispositivos de Lógica Programável

Dispositivos de Lógica Programável Dispositivos de Lógica Programável Evolução Válvula no início de 1940 Transistor em 1947 Não aquece como as válvulas Fisicamente menor 1961 primeiro integrado TTL 74LSXX Década de 1970 surge SPLD Simple

Leia mais

Eletrônica Digital para Instrumentação. Herman Lima Jr.

Eletrônica Digital para Instrumentação. Herman Lima Jr. G03 Eletrônica Digital para Instrumentação Prof: hlima@cbpf.br Centro Brasileiro de Pesquisas Físicas Ministério da Ciência, Tecnologia e Inovação (MCTI) Parâmetros de circuitos integrados lógicos Dispositivos

Leia mais

PCS3225. Sistemas Digitais II. Biestáveis em VHDL. Biestáveis em VHDL. Marcos A. Simplicio Jr.

PCS3225. Sistemas Digitais II. Biestáveis em VHDL. Biestáveis em VHDL. Marcos A. Simplicio Jr. PCS3225 Sistemas Digitais II Biestáveis em VHDL Marcos A. Simplicio Jr. Slides baseados em material de Edson Midorikawa e Bruno Albertini PCS3225-2015 1 Tópicos VHDL: recapitulação Circuitos sequenciais

Leia mais

Projeto com Dispositivos Programáveis

Projeto com Dispositivos Programáveis Projeto com Dispositivos Programáveis E.T.M./2011 (revisão) RESUMO Nesta experiência será apresentada uma metodologia para projeto de sistemas digitais utilizando FPGAs (dispositivos programáveis) e HDLs

Leia mais

Revisão: Projeto de Processadores em VHDL

Revisão: Projeto de Processadores em VHDL Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Revisão: Projeto de Processadores em VHDL DCA0119 Sistemas Digitais Heitor Medeiros Florencio 1 Sumário

Leia mais

DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP. 18/04/2016 Prof. Alexandre - ELP1DLP1 / DEE

DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP. 18/04/2016 Prof. Alexandre - ELP1DLP1 / DEE DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP 1 Objetivos da Aula: Introdução à Linguagem VHDL Plano de Ensino Conteúdo Programático 3. Ferramentas de Desenvolvimento 3.4. Editor de texto (programação VHDL ou

Leia mais

Introdução à Linguagem VHDL

Introdução à Linguagem VHDL Sistemas Digitais EEL 480 Introdução à Linguagem VHDL Luís Henrique M. K. Costa luish@gta.ufrj.br UFRJ DEL/Poli e PEE/COPPE P.O. Box 68504 - CEP 21941-972 - Rio de Janeiro - RJ Brasil - http://www.gta.ufrj.br

Leia mais

Dispositivo Lógico Programável(PLD)

Dispositivo Lógico Programável(PLD) Dispositivo Lógico Programável(PLD) Para reduzir o número de CI's(Circuitos Integrados) a serem usados num projeto digital, é necessário colocar mais funções em um mesmo chip. Isso tem sido feito com evolução

Leia mais

Primeiro Trabalho de Sistemas Digitais

Primeiro Trabalho de Sistemas Digitais Primeiro Trabalho de Sistemas Digitais 1 Introdução O objetivo deste trabalho é criar um divisor de frequência simples em linguagem VHDL comportamental e simular o projeto no software ISE. 2 Planejamento

Leia mais

Módulo 4 Introdução ao VHDL

Módulo 4 Introdução ao VHDL 1 Módulo 4 Introdução ao VHDL Conceitos básicos do VHDL Modelação, Simulação e Síntese de Sistemas Digitais entity declara o interface de um componente; architecture descreve a realização de um componente;

Leia mais

Introdução. VHDL: VHSIC Hardware Description Language. Origem: VHSIC: Very High Speed Integrated Circuits. Departamento de Defesa EUA

Introdução. VHDL: VHSIC Hardware Description Language. Origem: VHSIC: Very High Speed Integrated Circuits. Departamento de Defesa EUA Introdução VHDL: VHSIC Hardware Description Language VHSIC: Very High Speed Integrated Circuits Origem: Departamento de Defesa EUA desenvolvida entre anos 70 e 80 descrever e modelar circuitos complexos

Leia mais

Aula 11. Dispositivos Lógicos Programáveis. SEL Sistemas Digitais. Prof. Dr. Marcelo Andrade da Costa Vieira

Aula 11. Dispositivos Lógicos Programáveis. SEL Sistemas Digitais. Prof. Dr. Marcelo Andrade da Costa Vieira Aula 11 Dispositivos Lógicos Programáveis SEL 0414 - Sistemas Digitais Prof. Dr. Marcelo Andrade da Costa Vieira 1. Características Gerais l PLD Programmable Logical Device; l Agrupa um grande número de

Leia mais

DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP. 10/03/2017 Prof. Alexandre - ELP1DLP1 / DEE

DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP. 10/03/2017 Prof. Alexandre - ELP1DLP1 / DEE DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP 1 Objetivos da Aula: Introdução à Linguagem VHDL Plano de Ensino Conteúdo Programático 3. Ferramentas de Desenvolvimento 3.4. Editor de texto (programação VHDL ou

Leia mais

low): Descreve o que o sistema deve fazer utilizando expressões lógicas.

low): Descreve o que o sistema deve fazer utilizando expressões lógicas. Descrição por fluxo de dados (Data Data-Flow low): Descreve o que o sistema deve fazer utilizando expressões lógicas. Descrição estrutural: Descreve como é o hardware em termos de interconexão de componentes.

Leia mais

EPUSP PCS 2355 Laboratório Digital. Contadores em VHDL

EPUSP PCS 2355 Laboratório Digital. Contadores em VHDL Contadores em VHDL Versão 2012 RESUMO Esta experiência consiste no projeto e implementação de circuitos contadores com o uso da linguagem de descrição de hardware VHDL. São apresentados aspectos básicos

Leia mais

Demonstração de imagens de auxílio didático. VHDL - Descrição e Síntese de Circuitos Digitais Roberto d Amore

Demonstração de imagens de auxílio didático. VHDL - Descrição e Síntese de Circuitos Digitais Roberto d Amore Demonstração de imagens de auxílio didático VHDL - Descrição e Síntese de Circuitos Digitais Roberto d Amore ISBN 85-216-1452-7 Editora LTC www.ltceditora.com.br Para imagens de um curso completo consulte:

Leia mais

Projeto com Linguagens de Descrição de Hardware

Projeto com Linguagens de Descrição de Hardware Projeto com Linguagens de Descrição de Hardware Versão 2012 RESUMO Esta experiência consiste no projeto e implementação de um circuito digital simples com o uso de uma linguagem de descrição de hardware.

Leia mais

12/11/13. Obje%vos do laboratório. SST20707 Síntese de Sistemas de Telecomunicações. Síntese de máquinas de estado (FSM) Finite State Machine (FSM)

12/11/13. Obje%vos do laboratório. SST20707 Síntese de Sistemas de Telecomunicações. Síntese de máquinas de estado (FSM) Finite State Machine (FSM) Instituto Federal de Santa Catarina Área de Telecomunicações SST20707 Síntese de Sistemas de Telecomunicações Prof. Roberto de Matos Aviso de direitos Autorais: Transparências baseadas no trabalho do Prof.

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Universidade Federal de Campina Grande Departamento de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de Computadores I Linguagem de Descrição de Hardware

Leia mais

DISPOSITIVOS LÓGICOS PROGRAMÁVEIS. SEL Sistemas Digitais Prof. Homero Schiabel

DISPOSITIVOS LÓGICOS PROGRAMÁVEIS. SEL Sistemas Digitais Prof. Homero Schiabel DISPOSITIVOS LÓGICOS PROGRAMÁVEIS SEL 414 - Sistemas Digitais Prof. Homero Schiabel 1. Introdução Operação do circuito lógico pode ser descrita por: Tabela da Verdade Expressão booleana Dispositivo de

Leia mais

Introdução à Computação

Introdução à Computação Universidade Federal de Campina Grande Departamento de Sistemas e Computação Introdução à Computação Conceitos Básicos de Eletrônica Digital (Parte IV) Prof. a Joseana Macêdo Fechine Régis de Araújo joseana@computacao.ufcg.edu.br

Leia mais

Escola Politécnica da Universidade de São Paulo Departamento de Engenharia de Sistemas Eletrônicos - PSI

Escola Politécnica da Universidade de São Paulo Departamento de Engenharia de Sistemas Eletrônicos - PSI Escola Politécnica da Universidade de São Paulo Departamento de Engenharia de Sistemas Eletrônicos - PSI PSI-3451- Projeto de Circuitos Lógicos Integrados Pequeno Manual da Família Cyclone II (2017) Conteúdo:

Leia mais

ELD - Eletrônica Digital Aula 11 Introdução à Lógica Programável. Prof. Antonio Heronaldo de Sousa

ELD - Eletrônica Digital Aula 11 Introdução à Lógica Programável. Prof. Antonio Heronaldo de Sousa ELD - Eletrônica Digital Aula 11 Introdução à Lógica Programável Prof. Antonio Heronaldo de Sousa Agenda - Introdução - Lógica Programável - Dispositivos de Lógica Programável - Arranjos Lógicos Programáveis

Leia mais

Sistemas Digitais. Linguagem Verilog. Monitoria SD Daniel Alexandro/Reniê Delgado/Vanessa Ogg. Editado por (DARA)

Sistemas Digitais. Linguagem Verilog. Monitoria SD Daniel Alexandro/Reniê Delgado/Vanessa Ogg. Editado por (DARA) Sistemas Digitais Linguagem Verilog Monitoria SD 2011.2 Daniel Alexandro/Reniê Delgado/Vanessa Ogg Editado por (DARA) Introdução Verilog é uma linguagem, como VHDL, largamente usada para descrever sistemas

Leia mais

Hardware Reconfigurável

Hardware Reconfigurável Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Hardware Reconfigurável DCA0119 Sistemas Digitais Heitor Medeiros Florencio Tópicos Alternativas de projeto

Leia mais

Descrição por fluxo de dados (Data-Flow): Descreve o que o sistema deve fazer utilizando expressões lógicas.

Descrição por fluxo de dados (Data-Flow): Descreve o que o sistema deve fazer utilizando expressões lógicas. Descrição por fluxo de dados (Data-Flow): Descreve o que o sistema deve fazer utilizando expressões lógicas. Descrição estrutural: Descreve como é o hardware em termos de interconexão de componentes. Descrição

Leia mais

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador;

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador; 1 Microprocessador Um microprocessador é um circuito eletrônico capaz de realizar diversas tarefas conforme os comandos específicos. Para isso ele deve ler esses comandos da memória de programa (ROM) e

Leia mais

Tipos enumerados definem uma lista de valores, e são especialmente úteis na

Tipos enumerados definem uma lista de valores, e são especialmente úteis na Usando a palavra reservada TYPE é possível definir tipos personalizados. Por exemplo, pode-se definir tipos enumerados (Enumerated) e tipos compostos (Array). Tipos enumerados definem uma lista de valores,

Leia mais

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

EPUSP PCS 3335/3635 Laboratório Digital. Circuito em VHDL Circuito em VHDL Versão 2017 RESUMO Esta experiência tem como objetivo um contato inicial com o desenvolvimento do projeto de um circuito digital simples em VHDL e sintetizado para uma placa de desenvolvimento

Leia mais

Suporte de funcionamento e interacção com o teclado

Suporte de funcionamento e interacção com o teclado Suporte de funcionamento e interacção com o teclado Autor: André Amaral Costa (nº 7578) Curso: Universidade de Aveiro Data: 6 de Dezembro de 006 Disciplina: Docente: Valery Sklyarov Introdução Neste trabalho

Leia mais

Exercícios de Laboratório 3

Exercícios de Laboratório 3 Tradução do Laboratory Exercise 3 disponível em Exercícios de Laboratório 3 Latches, Flip-Flops e Registradores Este exercício

Leia mais

ISE com VHDL estrutural

ISE com VHDL estrutural UFRJ - DEL EEL480-2014 Laboratório - Turmas EL1, EL2 ISE com VHDL estrutural Texto para as aulas de laboratório, a ser complementado pelo Tutorial dos Alunos e manuais da Xilinx UG331, UG334 e UG695. Mário

Leia mais

Eletrônica Digital para Instrumentação. Prof: Herman Lima Jr

Eletrônica Digital para Instrumentação. Prof: Herman Lima Jr G03 Eletrônica Digital para Instrumentação Prof: hlima@cbpf.br Centro Brasileiro de Pesquisas Físicas Ministério da Ciência, Tecnologia e Inovação (MCTI) PACOTES (package) Entidades e Arquiteturas são

Leia mais

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

Introdução ao Projeto de Sistemas Digitais com Dispositivos Programáveis Introdução ao Projeto de Sistemas Digitais com Dispositivos Programáveis E.T.M./2011 (adaptação) RESUMO Nesta experiência será apresentada uma metodologia estruturada para projeto de sistemas digitais

Leia mais

Introdução à Linguagem VHDL

Introdução à Linguagem VHDL Fundamentos de Sistemas Digitais 23/abril/2019 Introdução à Linguagem VHDL profs. Alexandre M. Amory e Fernando G. Moraes 1 Referências Sugiro estudarem nesta ordem de preferência: Vahid, Cap 9 Ignorar

Leia mais

Revisão: Projeto e síntese de Circuitos Digitais em FPGA

Revisão: Projeto e síntese de Circuitos Digitais em FPGA Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Revisão: Projeto e síntese de Circuitos Digitais em FPGA DCA0119 Sistemas Digitais Heitor Medeiros Florencio

Leia mais

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

Introdução ao Projeto de Sistemas Digitais com Dispositivos Programáveis Introdução ao Projeto de Sistemas Digitais com Dispositivos Programáveis Versão 2013 RESUMO Nesta experiência será desenvolvido um projeto de sistema digital em um dispositivo programável (FPGA) com a

Leia mais

Registradores. Circuitos Lógicos. DCC-IM/UFRJ Prof. Gabriel P. Silva

Registradores. Circuitos Lógicos. DCC-IM/UFRJ Prof. Gabriel P. Silva Registradores Circuitos Lógicos DCC-IM/UFRJ Prof. Gabriel P. Silva 2 Registradores Conjunto de elementos de memória (flip-flops ou latches) utilizados para armazenar n bits. Utilizam um único sinal de

Leia mais

INTRODUÇÃO À ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES. Função e Estrutura. Introdução Organização e Arquitetura. Organização e Arquitetura

INTRODUÇÃO À ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES. Função e Estrutura. Introdução Organização e Arquitetura. Organização e Arquitetura Introdução Organização e Arquitetura INTRODUÇÃO À ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES Eduardo Max Amaro Amaral Arquitetura são os atributos visíveis ao programador. Conjunto de instruções, número

Leia mais

Calculadora Simples em VHDL

Calculadora Simples em VHDL Calculadora Simples em VHDL Versão 2014 RESUMO Esta experiência consiste no projeto e implementação de um circuito digital simples com o uso de uma linguagem de descrição de hardware. São apresentados

Leia mais

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

Introdução ao Projeto de Sistemas Digitais com Dispositivos Programáveis Introdução ao Projeto de Sistemas Digitais com Dispositivos Programáveis Versão 2012 RESUMO Nesta experiência será apresentada uma metodologia estruturada para projeto de sistemas digitais utilizando FPGAs

Leia mais

Tópicos Especiais 2 Capítulo 3 Introdução ao VHDL, sintaxe básica, tipo de dados e atribuições

Tópicos Especiais 2 Capítulo 3 Introdução ao VHDL, sintaxe básica, tipo de dados e atribuições Tópicos Especiais 2 Capítulo 3 Introdução ao VHDL, sintaxe básica, tipo de dados e atribuições Prof. Alan Petrônio Pinheiro - 2011 Introdução VHDL é uma linguagem de descrição de hardware Hardware Description

Leia mais

Arquitetura de Computadores

Arquitetura de Computadores VHDL - VHSIC Hardware Description Language Arquitetura de Computadores Leonardo Augusto Casillo Referências bibliográficas PELLERIN, David. TAYLOR, Douglas. VHDL Made Easy. Prentice-Hall PTR. 1997. SKANHILL,

Leia mais

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

Fundamentos de Sistemas Digitais. Lógica Sequencial. Prof. Dr. Alexandre M. Amory Prof. Dr Edson I. Moreno Fundamentos de Sistemas Digitais Lógica Sequencial Prof. Dr. Alexandre M. Amory Prof. Dr Edson I. Moreno 2 Referências Sugiro estudarem nesta ordem de preferência: Floyd, Cap 7 até 7.4, 9, 10. Não tem

Leia mais

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

Universidade Federal de Santa Catarina Centro Tecnológico Departamento de Informática e Estatística Curso de Graduação em Ciências da Computação Universidade Federal de Santa Catarina Centro Tecnológico Departamento de Informática e Estatística Curso de Graduação em Ciências da Computação Aula 3-P Descrição de somadores em VHDL, síntese com o Quartus

Leia mais

Lógica Reconfigurável

Lógica Reconfigurável UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ DEPARTAMENTO ACADÊMICO DE ELETROTÉCNICA CURSO DE ENGENHARIA INDUSTRIAL ELÉTRICA MESTRADO EM SISTEMAS DE ENERGIA Lógica Reconfigurável - amauriassef@utfpr.edu.br

Leia mais

Conteúdo. Estrutura do código VHDL; Objetos; Tipos; Universidade Federal do Ceará Engenharia da Computação 2

Conteúdo. Estrutura do código VHDL; Objetos; Tipos; Universidade Federal do Ceará Engenharia da Computação 2 Conteúdo Estrutura do código VHDL; Objetos; Tipos; Engenharia da Computação 2 Engenharia da Computação 3 Armazenamento de código compilado; As bibliotecas são compostas por pacotes; A declaração de um

Leia mais

Projeto de Circuito Combinacional

Projeto de Circuito Combinacional ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I Projeto de Circuito Combinacional Unidade Lógica e Aritmética (ULA) prof. Dr. César Augusto M. Marcon prof. Dr. Edson Ifarraguirre Moreno 2 / 12 ULA Unidade

Leia mais

1. Objetivos: Familiarizar o aluno com o uso do ambiente de desenvolvimento da Linguagem Verilog. Familiarizar o aluno com a linguagem Verilog.

1. Objetivos: Familiarizar o aluno com o uso do ambiente de desenvolvimento da Linguagem Verilog. Familiarizar o aluno com a linguagem Verilog. 1. Objetivos: Familiarizar o aluno com o uso do ambiente de desenvolvimento da Linguagem Verilog. Familiarizar o aluno com a linguagem Verilog. 2. Material utilizado: Ambiente Eclipse 3. Introdução: 3.1

Leia mais

SISTEMAS DIGITAIS (SD)

SISTEMAS DIGITAIS (SD) SISTEMAS DIGITAIS (SD) MEEC Acetatos das Aulas Teóricas Versão 4.0 - Português Aula N o 25: Título: Sumário: Lógica Programável Lógica programável (ROM, PLA, PAL e FPGA); Linguagens de descrição de hardware

Leia mais

Sistemas Digitais (SD) Lógica Programável

Sistemas Digitais (SD) Lógica Programável Sistemas Digitais (SD) Lógica Programável Aula Anterior Na aula anterior: Circuitos de controlo, transferência e processamento de dados Exemplo de uma arquitectura simples de um processador Prof. Nuno

Leia mais

ULA. Combina uma variedade de operações lógicas e matemáticas dentro de uma única unidade.

ULA. Combina uma variedade de operações lógicas e matemáticas dentro de uma única unidade. PROCESSADOR ULA Combina uma variedade de operações lógicas e matemáticas dentro de uma única unidade. ULA Uma ULA típica pode realizar as operações artiméticas: - adição; - subtração; E lógicas: - comparação

Leia mais

Sistemas Digitais (SD) Lógica Programável

Sistemas Digitais (SD) Lógica Programável Sistemas Digitais (SD) Lógica Programável Aula Anterior n Na aula anterior: u Circuitos de controlo, transferência e processamento de dados u Exemplo de uma arquitectura simples de um processador 2 Planeamento

Leia mais

Programação Introdução

Programação Introdução PROGRAMAÇÃO Programação Introdução Prof. Dr. Adriano Mauro Cansian 1 Introdução Para armazenar um algoritmo na memória de um computador e para que ele possa, em seguida, comandar as operações a serem executadas,

Leia mais

Descreva em VHDL, simule no simulador logico e sintetize usando uma ferramenta de CAD para FPGA :

Descreva em VHDL, simule no simulador logico e sintetize usando uma ferramenta de CAD para FPGA : UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMATICA LISTA DE EXERCÍCIOS DE SISTEMAS DIGITAIS Prof. Fernanda Gusmão de Lima Kastensmidt E Marcelo Porto (aluno mestrado PPGC) Descreva em VHDL,

Leia mais

DADOS DO COMPONENTE CURRICULAR

DADOS DO COMPONENTE CURRICULAR PLANO DE ENSINO DADOS DO COMPONENTE CURRICULAR Nome do Componente Curricular: Sistemas Digitais Curso: Técnico Integrado de Nível Médio em Informática Série/Período: 1º ano Carga Horária: 2 a/s - 80 h/a

Leia mais

Descrição e Projeto de Circuitos Utilizando VHDL

Descrição e Projeto de Circuitos Utilizando VHDL Descrição e Projeto de Circuitos Utilizando VHDL O projeto de circuitos digitais de forma automatizada se tornou prática industrial comum. As principais vantagens são : Portabilidade de tecnologia Melhor

Leia mais

EXPERIÊNCIA 4: IMPLEMENTAÇÃO DE UM CRONÔMETRO

EXPERIÊNCIA 4: IMPLEMENTAÇÃO DE UM CRONÔMETRO EXPERIÊNCIA 4: IMPLEMENTAÇÃO DE UM CRONÔMETRO Autores: Prof. Dr. André Riyuiti Hirakawa, Prof. Dr. Carlos Eduardo Cugnasca e Prof. Dr. Paulo Sérgio Cugnasca Versão 1.0-05/2005 1. OBJETIVO Esta experiência

Leia mais

APRESENTAÇÃO DO KIT CPLD_EE01

APRESENTAÇÃO DO KIT CPLD_EE01 APRESENTAÇÃO DO KIT CPLD_EE01 O kit CPLD_EE01 foi desenvolvido para alunos de cursos técnicos, engenharia e desenvolvedores na área de circuitos digitais, o mesmo conta com alguns módulos que podem ser

Leia mais

I1, I2 e In são instruções simples ou estruturadas da linguagem Pascal.

I1, I2 e In são instruções simples ou estruturadas da linguagem Pascal. Capítulo 4 TESTES, ESCOLHAS E MALHAS DE REPETIÇÃO 1. INTRODUÇÃO Em muitos exemplos e exercícios realizados nos capítulos anteriores, não foram raras as vezes em que fizemos uso de elementos disponíveis

Leia mais

SSC510 Arquitetura de Computadores 1ª AULA

SSC510 Arquitetura de Computadores 1ª AULA SSC510 Arquitetura de Computadores 1ª AULA REVISÃO DE ORGANIZAÇÃO DE COMPUTADORES Arquitetura X Organização Arquitetura - Atributos de um Sistema Computacional como visto pelo programador, isto é a estrutura

Leia mais

Introdução a Sistemas Digitais

Introdução a Sistemas Digitais Introdução a Sistemas Digitais Definição Sistemas Digitais Projeto Revisão: Circuitos Combinacionais Circuitos Sequênciais Máquinas de Estados Sistemas Digitais Definição Um sistema digital é um sistema

Leia mais

Profa. Luiza Maria Romeiro Codá Profa. Dra Maria Stela Veludo de Paiva

Profa. Luiza Maria Romeiro Codá Profa. Dra Maria Stela Veludo de Paiva Profa. Luiza Maria Romeiro Codá Profa. Dra Maria Stela Veludo de Paiva são circuitos integrados programáveis pelo usuário, Não apresentam uma função lógica definida, até que sejam configurados. pssuem

Leia mais

LABORATÓRIO DE ARQUITETURA DE COMPUTADORES PREPARAÇÃO 02: DISPLAY DE 7 SEGMENTOS MICROCONTROLADO

LABORATÓRIO DE ARQUITETURA DE COMPUTADORES PREPARAÇÃO 02: DISPLAY DE 7 SEGMENTOS MICROCONTROLADO AEVSF Autarquia Educacional do Vale do São Francisco FACAPE Faculdade de Ciências Aplicadas e Sociais de Petrolina Curso de Ciência da Computação LABORATÓRIO DE ARQUITETURA DE COMPUTADORES Prof. Sérgio

Leia mais

Profa. Luiza Maria Romeiro Codá 2

Profa. Luiza Maria Romeiro Codá 2 Profa. Luiza Maria Romeiro Codá 2 Descrição por Fluxo de Dados (Data Data-Flow low): Descreve o que o sistema deve fazer utilizando expressões lógicas e comandos concorrentes. Descrição Estrutural: Descreve

Leia mais

Exercícios Referentes à Prova P1

Exercícios Referentes à Prova P1 ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I Referentes à Prova P1 prof. Dr. César Augusto M. Marcon prof. Dr. Edson Ifarraguirre Moreno 2 / 11 1. Assinale com V se a sentença estiver correta, caso contrário

Leia mais

2. A influência do tamanho da palavra

2. A influência do tamanho da palavra 1. Introdução O processador é o componente vital do sistema de computação, responsável pela realização das operações de processamento (os cálculos matemáticos etc.) e de controle, durante a execução de

Leia mais

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

Universidade Federal de Santa Catarina Centro Tecnológico Departamento de Informática e Estatística Curso de Graduação em Ciências da Computação Universidade Federal de Santa Catarina Centro Tecnológico Departamento de Informática e Estatística Curso de Graduação em Ciências da Computação Aula 5-P Processos em VHDL. Comandos de atribuição em VHDL:

Leia mais

Barramento. Prof. Leonardo Barreto Campos 1

Barramento. Prof. Leonardo Barreto Campos 1 Barramento Prof. Leonardo Barreto Campos 1 Sumário Introdução; Componentes do Computador; Funções dos Computadores; Estrutura de Interconexão; Interconexão de Barramentos Elementos de projeto de barramento;

Leia mais

Organização de Computadores Sistema de Interconexão. Professor: Francisco Ary

Organização de Computadores Sistema de Interconexão. Professor: Francisco Ary Organização de Computadores Sistema de Interconexão Professor: Francisco Ary Como já sabemos, um computador é constituído basicamente por: processador; memória; e dispositivo de entrada e de saída. O comportamento

Leia mais

Organização de Sistemas Computacionais Processadores: Organização da CPU

Organização de Sistemas Computacionais Processadores: Organização da CPU Universidade Paulista UNIP Curso: Ciências da Computação Turma: CCP30 Turno: Noturno Disciplina: Arquitetura de Computadores Professor: Ricardo Loiola Alunos: Thiago Gomes dos Santos Matrícula: C63873-0

Leia mais

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 03: FUNCIONAMENTO DE UM COMPUTADOR Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação O QUE É UM COMPUTADOR?

Leia mais

Aula 16: UCP: Conceitos Básicos e Componentes

Aula 16: UCP: Conceitos Básicos e Componentes Aula 16: UCP: Conceitos Básicos e Componentes Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) UCP: Conceitos Básicos e Componentes FAC 1 / 34

Leia mais

Sistemas Digitais Transferências entre Registradores

Sistemas Digitais Transferências entre Registradores Sistemas Digitais Transferências entre Registradores Referência Bibliográfica: Logic and Computer Design Fundamentals Mano & Kime Adaptações: josé artur quilici-gonzalez Sumário Transferências entre Registradores

Leia mais

Plano de Aula 26/8/13. VHDL - Visão Geral. Obje%vos: VHDL - Visão Geral. Descrição de circuito digital em VHDL

Plano de Aula 26/8/13. VHDL - Visão Geral. Obje%vos: VHDL - Visão Geral. Descrição de circuito digital em VHDL Instituto Federal de Santa Catarina Área de Telecomunicações SST20707 Síntese de Sistemas de Telecomunicações Prof. Roberto de Matos viso de direitos utorais: Transparências baseadas no trabalho do Prof.

Leia mais

ESPECIFICAÇÃO DO PROJETO (Segunda Unidade)

ESPECIFICAÇÃO DO PROJETO (Segunda Unidade) ESPECIFICAÇÃO DO PROJETO (Segunda Unidade) Projeto da CPU com Teclado O projeto da CPU precisa ser acoplado a um teclado com comunicação PS2 bem como a um decodificador para display de sete segmentos que

Leia mais

Capítulo13 Arquiteturas de Dispositivos Lógicos Programáveis Pearson. Todos os direitos reservados.

Capítulo13 Arquiteturas de Dispositivos Lógicos Programáveis Pearson. Todos os direitos reservados. Capítulo13 Arquiteturas de Dispositivos Lógicos Programáveis slide 1 Temas abordados nesse capítulo: - Descrever as diferentes categorias de dispositivos de sistemas digitais. - Descrever os diferentes

Leia mais

Laboratório sobre Implementação de Sistemas Digitais com HDLs Ferramentas de Captura e Validação

Laboratório sobre Implementação de Sistemas Digitais com HDLs Ferramentas de Captura e Validação Laboratório sobre Implementação de Sistemas Digitais com HDLs Ferramentas de Captura e Validação 1 Laboratório sobre Implementação de Sistemas Digitais com HDLs Ferramentas de Captura e Validação Prática:

Leia mais

DSP Builder - Altera. MO801 - Tópicos em Arquitetura e Hardware. Michele Tamberlini 05/2006

DSP Builder - Altera. MO801 - Tópicos em Arquitetura e Hardware. Michele Tamberlini 05/2006 DSP Builder - Altera MO801 - Tópicos em Arquitetura e Hardware Michele Tamberlini 05/2006 DSP Builder Roteiro Introdução Funcionalidades MegaCore MATLAB / SIMULINK SOPC Builder Bibliotecas Introdução Algoritmos

Leia mais

TIPO INTEGER. Profa. Luiza Maria Romeiro Codá 2

TIPO INTEGER. Profa. Luiza Maria Romeiro Codá 2 TIPO INTEGER 2 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY FF3_tipoD_nivel IS PORT(CLK, RST, SET : IN STD_LOGIC; D : IN STD_LOGIC_VECTOR(2 DOWNTO 0); Q : OUT STD_LOGIC_VECTOR(2 DOWNTO 0)); END FF3_tipoD_nivel;

Leia mais

Curso Superior de Sistemas de Telecomunicações Unidade São José. Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase

Curso Superior de Sistemas de Telecomunicações Unidade São José. Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase Curso Superior de Sistemas de Telecomunicações Unidade São José Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase Bases tecnológicas Dispositivos Lógicos Programáveis. Introdução à Tecnologia

Leia mais