1.15k likes | 1.54k Views
P U C R S Faculdade de Engenharia. DISPOSITIVO LÓGICO PROGRAMÁVEL ( FPGA ) LINGUAGEM DE DESCRIÇÃO DE HARDWARE ( VHDL ). Prof. Anderson Royes Terroso Abril, 2000. FPGA & VHDL. Tópicos. 1 - Dispositivos Programáveis (FPGA) 1.1 Introdução 1.2 Estrutura da FPGA 1.3 Tipos de FPGA
E N D
P U C R SFaculdade de Engenharia DISPOSITIVO LÓGICO PROGRAMÁVEL(FPGA)LINGUAGEM DE DESCRIÇÃO DE HARDWARE (VHDL) Prof. Anderson Royes Terroso Abril, 2000.
FPGA & VHDL Tópicos 1 - Dispositivos Programáveis (FPGA) • 1.1 Introdução • 1.2 Estrutura da FPGA • 1.3 Tipos de FPGA • 1.4 Técnicas de programação 2 - Linguagem de Descrição de Hardware (VHDL) • 2.1 Introdução • 2.1.1 O que é VHDL terroso@ee.pucrs.br http://www.ee.pucrs.br/~terroso sisc-l@ee.pucrs.br http://www.ee.pucrs.br/~sisc
2.1.2 O que significa VHDL • 2.1.3 O que significa uma Linguagem de Descrição de Hardware • 2.1.4 Breve Histórico • 2.1.5 Vantagens e Desvantagens de se utilizar VHDL • 2.2 Componentes de um projeto VHDL • 2.2.1 Package • 2.2.2 Entity • 2.2.3 Architecture • 2.2.4 Configuration • 2.3 Semântica da Linguagem • 2.3.1 Elementos Léxicos • Comentários, Identificadores, tipos de dados não lógicos, expressões e operadores
2.4 Comandos Seqüênciais • 2.4.1 Atribuição de Variáveis • 2.4.2 Atribuição de Sinais • 2.4.3 Comando Wait • 2.4.4 Comando If - Then - Else • 2.4.5 Comando Loop For - While • 2.4.6 Comando Case • 2.5 Especificando a Estrutura de um Sistema • 2.6 Exemplos de Circuitos Digitais utilizando a ferramenta MAX PLUS II • 2.7 Placa University Program ALTERA • Exemplos práticos • 2.8 Bibliografia
OBJETIVO CKT ESQUEMÁTICO E/OU VHDL PROTOTIPAGEM EM FPGA
FPGA & VHDL 1 - Dispositivos Programáveis (FPGA) 1.1 - Introdução • FPGA (Field Programmable Gate Array) são circuitos programáveis compostos por um conjunto de células lógicas ou blocos lógicos alocados em forma de uma matriz. Em geral, a funcionalidade destes blocos assim como o seu roteamento, são configuráveis por software. • Surgiram em 1985 com Xilinx • XC 2000 • Outras companhias: • Actel, Altera, Plessey, Plus, AMD, QuickLogic
FPGA & VHDL 1.2 - Estrutura da FPGA • Três elementos básicos: • CLB’s (Configurable Logic Block): Blocos Lógicos Configuráveis; • IOB’s (In/Out Block): Blocos de entrada e saída; • SB’s (Switch Box): Caixa de conexão;
FPGA & VHDL • CLB’s • Unidade lógica do FPGA; • Família XC 4000 Xilinx tem 100 CLB’s • 3 Geradores de Função Combinacional; • 2 Flip-Flop tipo D; • Lógica de Controle; • Lógica Aritmética Dedicada; Cada Bloco pode ser configurado como um Somador de 2 bits
FPGA & VHDL continuação • Representação de um CLB da família XC3000
FPGA & VHDL continuação • IOB’s • Interface entre uma FPGA e o resto do sistema; • O FPGA XC 4003 Xilinx tem 80 IOB’s • Localizam na periferia do chip;
FPGA & VHDL • SB’s - Switch Box • Finalidade: Permite a interconexão entre os CLB’s através dos canais de roteamento; 2 1 SB SB 3 8 CLB 4 7 5 6 SB SB Switch Box
FPGA & VHDL • Roteamento A interconexão entre os blocos é feita através de uma rede de duas camadas de metal. As conexões físicas entre os fios são feitas ora com transistores de passagem controlados por bits de memória (PIP) ora com chaves de interconexão (Switch Matrix). • Conexões Globais • Conexões Diretas • Linhas Longas • Matrizes de Conexão (Switch Matrix)
FPGA & VHDL 1.3 Tipos de FPGA - ALTERA
FPGA & VHDL 1.4 Técnicas de programação • Esquemático • VHDL • AHDL • Handel C
MAX+PLUS II - SOFTWARE QUE PERMITE O PROJETO AO NÍVEL DE ESQUEMÁTICO E VHDL.
AO NÍVEL DE ESQUEMÁTICO, EXISTEM INÚMEROSCOMPONENTES, ALÉM DE MESCLAR COMPONENTES DIGITAIS + VHDL
EXEMPLO: SCH + VHDL DUPLO CLIQUE
PROGRAMA EM VHDL if(clkin'event and clkin='1') then if(cont1 < 5) then clk <= '1'; cont1 := cont1 + 1; cont2 := 0; else if(cont2 < 4) then clk <= '0'; cont2 := cont2 + 1; else cont1 := 0; end if; end if; end if; end process clk8; end arq_scl; library IEEE; use IEEE.std_logic_1164.all; entity gera_clk is port( clkin : in std_logic; clk : out std_logic ); end gera_clk; architecture arq_scl of gera_clk is begin clk8: process(clkin) variable cont1 : integer range 0 to 5 := 0; variable cont2 : integer range 0 to 5 := 0; begin
EM ASSIGN => DEVICE, PERMITE ESCOLHER O COMPONENTE EM QUE SERÁ GRAVADO O CKT PROJETADO.
ESCOLHE-SE UMA FAMÍLIA E POSTERIORMENTE UM DISPOSITIVO, ONDE SERÁ GRAVADO O CKT
FEITA A ESCOLHA, COMPILA-SE (MAX+PLUS II => COMPILER) O CKT E VERIFICA A ÁREA OCUPADA POR ESTE CKT.
FPGA & VHDL O arquivo RPT (Report) apresenta a capacidade da FPGA utilizada, bem como a distribuição dos pinos na FPGA (próxima tela). ** DEVICE SUMMARY ** Chip/ Input Output Bidir Shareable POF Device Pins Pins Pins LCs Expanders % Utilized core_iic EPM7128SLC84-15 2 3 1 104 60 81 % User Pins: 2 3 1 Project Information c:\z80_vhdl\core_iic.rpt
FPGA & VHDL 2 - Linguagem de Descrição de Hardware (VHDL) 2.1 - Introdução • 2.1.1 O que é VHDL • VHDL é uma forma de se descrever, através de um programa, o comportamento de um circuito ou componente digital. • 2.1.2 O que significa VHDL Very Hight Speed Integrated Circuit Hardware Description Linguage • Linguagem de Descrição de Hardware com ênfase em Circuitos Integrados de altíssima velocidade.
FPGA & VHDL • 2.1.3 O que significa uma Linguagem de Descrição de Hardware Uma linguagem de descrição de hardware descreve o que um sistema faz e como • 2.1.4 Breve Histórico - final de 1960: primeiras Linguagem de hardware; - 1973: projeto CONLAN (CONsensus LANguage); - 1983: relatório final do CONLAN e a Linguagem ADA; - 1986: a Intermetrics desenvolve compilador e simulador, criado um grupo de padronização da IEEE para VHDL; - 1988: primeiros softwares são comercializados; - 1991: recomeçou-se um novo processo de padronização; - 1992: modificações propostas foram avaliadas e votadas; - 1993: um novo padrão é publicado, chamado VHDL-93; - 1997: publicado o manual de referência da linguagem.
FPGA & VHDL • Desvantagens • Hardware gerado é menos otimizado; • Vantagens • Projeto independente da tecnologia; • Facilidade na atualiza-ção dos projetos; • Reduz tempo de projeto; • Elimina erros de baixo nível; • 2.1.5 Vantagens e Desvantagens de se utilizar VHDL
FPGA & VHDL 2.2 - Componentes de um projeto VHDL • 2.2.1Pacote: constantes, bibliotecas; • 2.2.2 Entidade: pinos de entrada e saída; • 2.2.3 Arquitetura: implementações do projeto; • 2.2.4 Configuração: define as arquiteturas que serão utilizadas.
FPGA & VHDL ARCHITECTURE (ARQUITETURA) PROCESSOS N ENTITY (ENTIDADE) PINOS DE I/O
FPGA & VHDL • 2.2.1 Package • Os pacotes (biblioteca) contém uma coleção de elementos incluindo descrição do tipos de dados (relacione com os includes da Linguagem C). • LIBRARY <nome_da_biblioteca> e/ou • USE <nome_da_biblioteca>.all
FPGA & VHDL • 2.2.2 Entity • Descrição da interface de I/O do sistema com a placa. <tipo> : bit, bit_vector, std_logic_vector. real, inteiro, etc.
FPGA & VHDL • 2.2.3 Architecture • Arquitetura pode ser definida como sendo a(s) implementação(ões) do projeto.
FPGA & VHDL • Arquitetura Simples
FPGA & VHDL • Arquitetura Concorrente • A arquitetura concorrente é uma forma mais complexa de descrever um sistema, geralmente apresenta várias processos dentro de uma arquitetura.
2.3.1 Elementos Léxicos Comentários -- isto é um comentário em VHDL C <= A + B; -- soma de A + B Identificadores FPGA & VHDL 2.3 - Semântica da Linguagem Válidos Inválidos uso de underline (input_1_x) uso de palavras reservadas uso do caracter @ underline no fim de um identificador uso de dois caracteres underlines
FPGA & VHDL • Tipos de dados não lógicos • BIT: assume valores ‘0’ e ‘1’, bit_vector é um conjunto de bits. Ex.: “010001” • Boolean: assume valores true ou false • Real: sempre com ponto decimal. Ex.: -3.2, 4.56, 6.0, -2.3E+2 • Inteiros: não é possível realizar conversão sobre inteiros. Ex.: 3, 546, -349 • Physical: representam uma medida física: voltagem, capacitância, tempo • Tipos pré-definidos: fs, ps, ns, um, ms, sec, 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 todos • do mesmo tipo.
FPGA & VHDL • Expressões e operadores • operadores lógicos:and, or, nand, nor, xor, xnor e not • operadores numéricos:soma (+), subtração (-), divisão (/), • multiplicação (*), módulo (mod), remanescente • (rem - ex.: 6 rem 4 = 2), expoente (**), valorabsoluto (abs) • operadores relacionais:igual (=), diferente (/=), menor • do que (<), menor ou igual (<=), maior do que (>), maior • ou igual (>=)
FPGA & VHDL • operadores de deslocamento:sll (shift left logical), srl (shift right logical), sla (shift left arithmetic), sra (shift right arithmetic), rol (rotate left logical), ror (rotate right logical) • operador de concatenação: esta operação consiste em criar um novo vetor a partir de dois vetores já existentes, por exemplo: dado1 : bit_vector(0 to 7); [01011011] dado2 : bit_vector(0 to 7); [11010010] novo_dado : bit_vector(0 to 7); novo_dado <= (dado1(0 to 1) & dado2(2 to 5) & dado1(6 to 7)); [01010011]
FPGA & VHDL • 2.4.1 Atribuição de Variáveis 2.4 - Comandos Seqüênciais
FPGA & VHDL • 2.4.2 Atribuição de Sinais
FPGA & VHDL Diferença entre atribuições sinal (signal) / variável (variable) • Quando utiliza-se sinal, a atribuição ocorre no final do processo, enquanto que a atribuição a variável ocorre simultaneamente. • Nas próximas duas telas, está mostrado a diferença entre estas atribuições. <= (atribuição de signal) := (atribuição de variável)
Siga as setas pretas. A seta em vermelho mostra a execução passo-a-passo do programa
A diferença entre os valores deve-se a forma de atribuição