Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade Federal de Campina Grande Departamento de Engenharia Elétrica Circuitos Lógicos: Dispositivos Lógicos Programáveis ‐ PLDsp g g 1 Introduçãoç A realização de um projeto de um sistema digitalç p j g consiste em: • Determinar a função lógica que o sistema a ser projetado deve apresentar como resposta aos estímulos recebidos; • Construir o circuito lógico que execute essa função a partir de circuitos lógicos simples (portas OR, AND, XOR Fli fl d i d )XOR, Flip‐flops, contadores, registradores, etc). 2 Introduçãoç Devido a complexidade dos sistemas atuais, esse tipo de projeto está se tornando inviável devido a váriosde projeto está se tornando inviável devido a vários problemas, tais como: • Alto número de CI’s contendo os circuitos lógicos necessários; • Alto atraso global do sistema devido a contribuição individual dos atrasos de cada porta lógica;individual dos atrasos de cada porta lógica; • Necessidade de um grande layout físico para acomodar• Necessidade de um grande layout físico para acomodar todos os componentes; 3 Introduçãoç • Alto consumo do sistema;• Alto consumo do sistema; P í i d ã /• Possíveis erros de conexão e/ou mau contatos; • Possíveis indisponibilidades dos circuitos necessários no mercado; • Necessidade de protótipos para testes que• Necessidade de protótipos para testes, que acarreta em mais gastos. 4 Introduçãoç • Pesquisas foram implementadas a fim de se• Pesquisas foram implementadas a fim de se obter uma forma alternativa mais viável de se efetuar os projetos em dispositivos queefetuar os projetos em dispositivos que contivessem milhares de portas lógicas internamente;internamente; • Com a lógica programável surgiram vários novos dispositivos passíveis de seremp p programados pelo projetista. 5 Introduçãoç • A que despontou como a mais promissora é a• A que despontou como a mais promissora é a “descrição de hardware”. O projetista, com o íli d t d d h dauxílio do computador, descreve o hardware a ser projetado utilizando uma HDL (Hardware d ãDescription Language – Linguagem de Descrição de Hardware). • Uma HDL é muito parecida com uma linguagem de• Uma HDL é muito parecida com uma linguagem de programação de alto nível, como C ou Pascal. 6 Introduçãoç • Após a descrição ser feita existem várias ferramentas deApós a descrição ser feita, existem várias ferramentas de simulação para testar a funcionalidade do projeto antes de sua implementação. E isto é importante porque reduzp ç p p q drasticamente o tempo de testes; • Ao término da etapa de teste é então escolhido o dispositivo que mais se adapte ao projeto e então utiliza‐ se um software de síntese lógica, para converter a escrição em HDL para um arquivo que contenha os dados necessários para a programação do dispositivonecessários para a programação do dispositivo. 7 Introduçãoç • Deve se ressaltar que existem dispositivos• Deve‐se ressaltar que existem dispositivos programáveis que só podem ser programados úuma única vez, e os que podem ser reprogramados de acordo com a necessidade. 8 LÓGICA PROGRAMÁVEL • Os componentes da lógica programável são dispositivos que possuem em sua lógica interna t ( ilh ) d t ló i fli flcentenas (ou milhares) de portas lógicas, flip‐flops e registradores; que são interligados internamente; • Essas interconexões são os pontos programáveis da lógica. Pode‐se então programar essas conexões para permanecerem fechadas ou abertas, de acordo com a necessidade do projeto. • Essas interconexões podem ser entendidas como fusíveis, que de acordo com a necessidade do projetofusíveis, que de acordo com a necessidade do projeto podem ou não ser queimados (desfazendo ou não a conexão entre portas lógicas). 9 LÓGICA PROGRAMÁVEL Existem vários tipos de dispositivos lógicos programável (PLD Programmable Logic Devices):programável (PLD – Programmable Logic Devices): PLA• PLA • PAL i i i ó i á i l ( )• Dispositivos Lógicos Programáveis Complexos (CPLD) • Arranjo de Portas Programáveis em Campo (FPGA) Pode‐se também considerar as memórias PROM como ó á fdispositivos de lógica programáveis se elas forem utilizadas para implementar funções lógicas. 10 Dispositivos Lógicos Programáveis (PLD)Dispositivos Lógicos Programáveis (PLD) • Os dispositivos lógicos programáveis (PLD –p g p g Programmable Logic Device) são circuitos integrados programáveis pelo usuário queintegrados programáveis pelo usuário, que possui um grande número de portas lógicas (AND OR NOT) flip flops e registradores(AND, OR, NOT), flip‐flops e registradores que estão interligados em um mesmo CI. 11 Dispositivos Lógicos Programáveis (PLD)Dispositivos Lógicos Programáveis (PLD) 12 Arranjos Lógicos ProgramáveisArranjos Lógicos Programáveis • Um arranjo lógico programável consiste de um circuito que possui uma estrutura interna baseada em um conjunto de portas AND‐ORbaseada em um conjunto de portas AND OR (o conjunto de portas AND e OR são chamados de arranjos)chamados de arranjos). 13 Arranjos Lógicos ProgramáveisArranjos Lógicos Programáveis • As entradas desse circuito são ligadas às t d d t AND íd dentradas das portas AND e as saídas das portas AND são ligadas às entradas das portas OR íd íd dOR e suas saídas representam as saídas do circuito . 14 Memória PROM (Programmable ROM)Memória PROM (Programmable ROM) • A memória ROM programável (PROM) é uma memória apenas de leitura que pode ser gravada uma vez pelo usuário através da queima dos fusíveis internos. • Na memória PROM o arranjo AND é pré• Na memória PROM o arranjo AND é pré‐ definido em fábrica (arranjo fixo) e somente o arranjo OR é programávelo arranjo OR é programável. 15 Memória PROM (Programmable ROM) 16 PAL - Programmable Array Logic X – ligações fixas • O PAL tem as a portas AND programáveis, ou seja, enquanto Arranjos OR fixos - ligações programáveis as portas OR são pré‐conectadas em fábrica, então todas as portas AND podem ser programadas.AND podem ser programadas. Arranjos AND programáveis 17 PLA - Programmable Logic Arrays X – ligações programáveis - ligações programáveis • Um PLA possui tanto a matriz de portas AND quanto a matriz de g ç p g portas AND quanto a matriz de portas OR programáveis combinando as características d PROM d PALde uma PROM e de um PAL. Arranjos AND programáveis 18 Arranjos de Portas Programáveis • Os arranjos de portas programáveis são i é i á iestruturas mais genéricas e versáteis que as baseadas na estrutura tradicional AND‐OR dos arranjos lógicos programáveis. 19 Arranjos de Portas Programáveis A i i l t é ibilid d d• A principal vantagem é a possibilidade de reprogramação do comportamento de um circuito quantas vezes for necessária, ao contrário dos arranjos lógicos programáveisj g p g que só podem ser programados uma vez, ou seja definida sua função lógica ela nãoou seja, definida sua função lógica ela não poderá ser mudada. 20 CPLD Complex PLDCPLD - Complex PLD • Os CPLDs podem ser vistos como dispositivos que utilizam em sua estruturadispositivos que utilizam em sua estrutura vários PLD´s (PLA ou PAL). Cada PLA ou PAL formam células que são interligadas atravésformam células que são interligadas através de conexões programáveis. 21 CPLD - Complex PLD 22 FPGA- Field Programmable Gate Arrayg y • É um dispositivo lógico programável que possui• É um dispositivo lógico programável que possui uma arquitetura baseada em blocos lógicos f á ( fconfiguráveis, chamados de CLB (Configuration Logical Blocks) que são formados por portas lógicas e flip‐flops que implementam funções lógicas.lógicas. 23 FPGA- Field Programmable Gate Arrayg y • O FPGA também é formado por estruturas• O FPGA também é formado por estruturas chamadas de blocos de entrada e saída (IOB – / ) áIn/Out Blocks), os quais são responsáveis pelo interfaceamento entre as saídas provenientes das combinações de CLBs. 24 FPGA- Field Programmable Gate Array Bl Ló i Blocos de Entrada e Saída Linhas de Roteamento Bl Ló i Blocos de Entradae Saída Linhas de Roteamento Bl Ló i Blocos de Entrada e Saída Linhas de Roteamento Blocos Lógicos Configuráveis Matriz de Roteamento Blocos Lógicos Configuráveis Matriz de Roteamento Blocos Lógicos Configuráveis Matriz de Roteamento 25 FPGA- Field Programmable Gate Array A típica estrutura interna de um bloco lógico configurável de um FPGA, consiste em flip-flops, um determinado número de multiplexadores e uma estrutura de função combinatória para implementar as funções lógicas. 26 Considerações Finais • Para efetuarmos um projeto utilizando os dispositivos explicados, necessitamos de uma nova técnica de projeto e de um software que permita realizar a programação (software de síntese lógica). • Para o caso da programação, cada dispositivo possui o seu próprio software (de síntese lógica) que é fornecidoseu próprio software (de síntese lógica) que é fornecido pelo fabricante. Resta, então, aprender uma nova técnica de projeto. • Devemos salientar também que, para o usuário final, FPGA e CPLD podem ser vistas como o mesmo tipo deFPGA e CPLD podem ser vistas como o mesmo tipo de estrutura. A única diferença está na sua estrutura interna, mas o seu resultado final é o mesmo. 27 Circuitos Lógicos: Linguagem de Descrição deLinguagem de Descrição de Hardware - HDLHardware HDL 27/12/2011 28 Circuitos Lógicos Linguagem HDL Linguagem de alto nível, para a descrição de circuitos digitais, compatível com a linguagem de programaçãog , p g g p g ç de vários dispositivos; Li HDL ã d tLinguagens HDL são capazes de representar processos concorrentes encontrados nos elementos de hardware;elementos de hardware; Com a descrição em HDLs a verificação funcional doç ç projeto pode ser feita facilmente durante as etapas do projeto. 27/12/2011 29 Circuitos Lógicos Projetos com HDLs g As HDLs descrevem um sistema digital em váriosg níveis: Ní l t t l dNível comportamental – descreve as funcionalidades do projeto sem detalhar a implementação (Muito Abstrato)implementação (Muito Abstrato). Nível de layout- roteamento de componentes e fiosy p em um chip (Muito detalhado). 27/12/2011 30 Circuitos Lógicos Projetos com HDLs 27/12/2011 31 Circuitos Lógicos Linguagem HDL Capacidade de representar: Sistemas concorrentes – São aqueles que as tarefas são executadas de forma paralela; Sistemas sequenciais – São aqueles que as tarefas são executadas de forma sequencial;são executadas de forma sequencial; Hierarquia – Podemos descrever o sistema comoq pequenos blocos e trata-los individualmente. 27/12/2011 32 Circuitos Lógicos Projeto em Verilog HDL – padrão IEEE 1364 No Verilog cada bloco é chamado de módulo, que é equivalente a um símbolo em um projeto baseado em esquema elétrico. Ao se desenvolver um módulo deve-se dar um nome único ao mesmo; Em seguida defini-se as interfaces do módulo, identificando: entradas,Em seguida defini se as interfaces do módulo, identificando: entradas, saídas ou portas bidirecionais; Pode ser necessário incluir módulos de construção mais simples paraPode ser necessário incluir módulos de construção mais simples para se obter um módulo mais complexo; A forma como esses blocos são interconectados é denominadoA forma como esses blocos são interconectados é denominado hierarquia. 27/12/2011 33 Circuitos Lógicos Estrutura de um Módulo 27/12/2011 34 Circuitos Lógicos Estrutura de um Módulo Um modulo é declarado pela keyword module e seu término com a keyword endmodule. Todo módulo deve conter: Um identificador para o módulo ( ) d l(seu nome), o module_name; Uma descrição das entradas e saídas do módulo osaídas do módulo, o module_terminal_list; A definição de quem éA definição de quem é entrada/saída e; A descrição de sua funcionalidade 27/12/2011 35 A descrição de sua funcionalidade, o module_internals. Circuitos Lógicos Exemplo de Módulo Código Verilog meio somador. module HALF_ADD(A, B, SUM, CARRY); output SUM, CARRY; input A, B; assign SUM=A^B; i CARRY A&Bassing CARRY=A&B; endmodule 27/12/2011 36 Circuitos Lógicos Projeto Hierárquico As vantagens obtidas ao fazer uso da hierarquia são: Divisão em partes menores torna mais fácil encontrar e depurar erros; Pedaços da lógica (sub-blocos) podem ser identificados e reusados em outras partes do projeto apenas instanciando o sub-bloco; Um projeto em blocos pode ser distribuído entre vários projetistas. 27/12/2011 37 Circuitos Lógicos Instância Ao usar um módulo, o Verilog cria um objeto único a partir do modelo. Cada objeto tem seu próprio nome, variáveis, parâmetros e interfaces de E/S. O processo de criar um objeto a partir de um móduloO processo de criar um objeto a partir de um módulo modelo é chamado instanciação – objetos são chamados de instâncias;de instâncias; 27/12/2011 38 Circuitos Lógicos Portas Li t d P tLista de Portas A definição de um módulo contém uma lista opcional de portas. Se o módulo não troca sinais com o ambiente, não há portas na lista. Todas as portas na lista de portas devem ser declaradas no módulo.p p As portas podem ser declaradas como: input (porta de entrada); output (porta de saída) ou;output (porta de saída) ou; Inout (porta bidirecional). 27/12/2011 39 Circuitos Lógicos Portas Todas as declarações de portas são implicitamente declaradas como wire no Verilog. Se uma porta deve ser declarada como wire, é suficiente declará-la como output, input ou inout.p p Portas input e inout são normalmente declaradas como wire. Se a porta output deve armazenar algum valor, ela deve ser declarada como reg. Portas input e inout não podem ser declaradas como reg, porque as variáveis reg armazenam valores e esses tipos de portas apenas 27/12/2011 40 g p p p refletem as mudanças dos sinais externos a que são conectadas. Verilog Tipos de Operadores Tipo de Operador Símbolo do Operação Realizada Número deTipo de Operador Símbolo do Operador Operação Realizada Número de Operandos Aritmético * + Multiplicação Adição Dois Dois - Subtração Dois Lógico ! && NOT lógico AND lógico Um Dois | | OR lógico Dois Relacional > < Maior que Menor que M i i l Dois Dois D i> = < = Maior ou igual que Menor ou igual que Dois Dois Bitwise ~ & NOT AND Um Dois& | ^ ^ ~ ou ~ ^ AND OR XOR XNOR Dois Dois Dois Dois 27/12/2011 41 Verilog Tipos de Operadores Tipo de Operador Símbolo do Operador Operação Realizada Número de Operandos Igualdade = = ! = Igualdade Desigualdade Dois Dois! = Desigualdade Dois Redução & ~ & | AND redutor NAND redutor OR redutor Um Um Um| ~ | ^ ^ ~ ou ~ ^ OR redutor NOR redutor XOR redutor XNOR redutor Um Um Um Um Deslocamento > > < < Deslocamento a direita Deslocamento a esquerda Dois Dois esquerda Concatenação { } Concatenação Qualquer número Replicação {{ }} Replicação Qualquer número 27/12/2011 42 Condicional ? : Condicional três Verilog Estruturas if-else Sintaxe: if (<condição>) beginbegin <linhas de código caso a expressão seja verdadeira> endend else beginbegin <linhas de código caso a expressão seja falsa> end 27/12/2011 43 Verilog Estruturas if-else Exemplos: if (!lock) buffer = data f ( )if (control == 0) y = x + z; else if (control == 1) y = x – z; else if (control == 2) y = x * z; if(regA = regB) beginbegin regC = regA + regC; regB = regC; endend else regC = regA; 27/12/2011 44 Verilog Estruturas case Evita estruturas if-else aninhadas Sintaxe exemplificada ( )case (control) 0 : y = x + z; 1: y = x – z; 2 *2: y = x * z; default: y = 0; endcase 27/12/2011 45 Verilog Controle de Eventos Podemos controlar a ocorrência de eventos – Mudança de estado ou subida/descida de nível. Utiliza-se o operador @ @ (variável) sempre que a variável mudar de nível@ (variável) sempre que a variável mudar de nível. @ (posedge variável) só quando a variável mudar seu nível de 0 para 1 (borda de subida).para 1 (borda de subida). @ (negedge variável) só quando a variável mudar seu nível de 1 para 0 (borda de descida).p ( ) 27/12/201146 Verilog Controle de Eventos Exemplos: always @ (d) X = X +1 // Sempre que d mudar de nível X é incrementado always @ (negedge d) X = Y // Sempre que d for a zero X recebe o valor de Y always @ (posedge d) begin // Sempre que d subir para 1, as operações X = X + 1; // entre o begin e o end são efetuadasX = X + 1; // entre o begin e o end são efetuadas Y = 2 * X; end 27/12/2011 47 Verilog Lógica Combinacional Construções always – Utilizada em conjunto com um controle de eventos, pode ser usado para implementar lógica combinacional. Propriedades a serem respeitadas: O controle de eventos para a construção always para implementação d ló i bi i l ã d í l à d d í l dde lógica combinacional não pode ser sensível à mudanças de nível do clock do sistema (se existir um clock); O controle de eventos para a construção é sensível a todas asO controle de eventos para a construção é sensível a todas as possíveis mudanças na saída dessa construção; A construção always provê uma saída para cada mudança ouA construção always provê uma saída para cada mudança ou combinação de mudanças das variáveis que estão sendo monitoradas pelo controle de eventos. 27/12/2011 48 Verilog Lógica Combinacional Construções always Módulo proc Conta número de 1’s de um dado de 3 bitsMódulo proc – Conta número de 1 s de um dado de 3 bits module proc(d, q) input [2:0] d;input [2:0] d; output [1:0] q; integer num_bits; always @ (d) begin integer i;integer i; num_bits = 0; for (i = 0; i < 3; i = i + 1) if (d[i] == 1) num_bits = num_bits + 1; end assign q = num_bits; 27/12/2011 49 endmodule Verilog Lógica Combinacional Atribuições contínuas Operador assign variável do tipo net (wire). Exemplo: module exemplo(a, b, c, d); input a, b, e; t t doutput c, d; assign c = a & b; assign d = e;assign d = e; endmodule 27/12/2011 50 Placas FPGA Antiga Placa de DesenvolvimentoAntiga Placa de Desenvolvimento 52 Vista superior da placa Antiga Placa de DesenvolvimentoAntiga Placa de Desenvolvimento 53 Vista inferior da placa DE2 – Development Education Board Vista geral 54 DE2 – Development Education BoardDE2 – Development Education Board disposição dos dispositivos 55 Utilizando o Quartus II tela inicialUtilizando o Quartus II‐ tela inicial 56Abrir Arquivo
Compartilhar