Prévia do material em texto
RESUMO Circuito combinacional: as saídas dependem apenas das entradas atuais. Circuito sequencial: as saídas dependem das entradas atuais, mas também das sequências de entradas passadas. É impossível descrever o comportamento de um circuito sequencial através de uma tabela que relaciona entradas com saídas. Para saber o estado seguinte, é preciso saber o estado atual. Também são chamados de máquinas de estado finito. A mudança de estado ocorre no instante especificado por um sinal de clock. - Estado - circ. sequencial: é uma coleção de variáveis de estado cujos valores contém toda informação sobre o passado necessária para saber o comportamento futuro do circuito. Linguagem VHDL - suporta diversos níveis de hierarquia - diversos níveis de abstração são suportados Entidade do projeto Pode ser: - um porta lógica - um sistema lógico completo Composto: - Declaração de entidade: define as portas de entrada e saída descrição ● Regras de declaração ○ ENTITY : inicia a declaração - lista de entrada e saídas ○ PORT: define modo e tipos de portas ■ IN ■ OUT ■ BUFFER: saída ( pode ser referenciada internamente) ■ INOUT: bidirecional ○ END: termina a declaração - Arquitetura: descreve as relações entre portas lógicas ● ARCHITECTURE: inicia a declaração da arquitetura e as linhas que seguem. ○ Declaração de sinais e constantes; ○ Declaração de componentes referenciados; ○ Descrição de subprogramas locais; ○ Definição de novos tipos. ● BEGIN: inicia a descrição ● END: termina a descrição Tipos: Tipos de Escalares Ordenados e representam um valor único - INTEGER: representa um número inteiro quando é necessário um linha de 32 bits Tipos Compostos - BIT_VECTOR: vetor contendo elementos tipo BIT - STRING: vetor contendo elementos tipo caracteres - Declaração de tipos compostos: limites definidos por TO e DOWNTO. Operadores Definem a precedência dos operadores Comandos Concorrentes Os comandos concorrentes presentes em um determinado código são executados conjuntamente e por isso a sequência como são apresentados é irrelevante. A ordem dos comandos não deve interferir no resultado final da simulação. - Circuito Seleção Comandos - WHEN ELSE ● Usada com o objetivo de transferência condicional de um sinal ● Contém uma lista de condições e expressões, sendo que a condição verdadeira define a expressão transferida. - WITH SELECT ● Usada quando há transferência condicional de um sinal. ● Não há prioridade ○ TO e DOWNTO delimitam as faixas de opção - BLOCK ● O comando BLOCK tem a finalidade de dividir o código em regiões para facilitar o entendimento da descrição. Sinais podem ser declarados no interior de um bloco, e a visibilidade destes é restrita ao interior do bloco. - PROCESS ● permite definir uma área contendo comandos sequenciais. Comandos Sequenciais Comandos sequenciais ficam contidos em regiões específicas de código, como processos e subprogramas. Uma vez iniciada a execução de comandos em região de código sequencial, os comandos são avaliados na sequência em que são apresentados no código, independentemente da troca de valor nos sinais ou variáveis aos quais o comando é sensível. Comandos - IF ELSE ● permite a execução condicional de um ou mais comandos seqüenciais ● A condição de teste pode ser uma expressão que retorne um valor do tipo BOOLEAN. ● O comando IF inicia a lista de condições e pode ser seguido por cláusulas ELSIF contendo, também, condições a serem verificadas. Se nenhuma condição for verdadeira e não existir uma cláusula ELSE na construção, nenhum comando é executado. - CASE WHEN ● similar à construção WITH SELECT ● permite a execução condicional de um ou mais comandos sequenciais, conforme o valor de uma expressão. Cada condição define um conjunto de comandos sequenciais a se executar. ● As condições devem ser mutuamente exclusivas, significando que não é permitido mais de uma condição verdadeira na relação de valores que a expressão pode assumir, Comparações - WHEN ELSE x IF ELSE WHEN ELSE: ● código concorrente ● a operação executada é a simples transferência de valor para um sinal IF ELSE: ● código sequencial ● mais flexível, pois permite a execução de vários comandos sequenciais - WITH SELECT x CASE WHEN Possuem similaridade no fato de que todas as opções devem estar presentes na lista de escolha WITH SELECT: ● pode ser empregada apenas em regiões de código concorrente ● executa apenas a atribuição de um sinal a casa de escolha CASE WHEN: ● possibilita que cada condição de escolha inicie a execução de vários comandos sequenciais. Atraso É aplicado na geração de formas de onda para teste de descrições ou na modelagem do comportamento dinâmico de um circuito. Sinal e Variável São objetos que contêm um valor armazenado e este pode ser alterado na execução do código. - Objeto: é um elemento que armazena um valor. Um sinal é um objeto e pode ser empregado tanto em regiões de código sequencial como em regiões de código concorrente. - Variável: é um objeto empregado em regiões de código sequencial e sua declaração é feita nessas regiões. A transferência de uma variável para uma região de código concorrente emprega um sinal. Diferentemente dos sinais, os valores das variáveis são assumidos imediatamente após a avaliação do comando. Atributos São informações adicionais associadas a tipos, objetos, subprogramas e unidades de projeto. Registrador sensível a borda (Inicialização Síncrona) As operações de set e reset são síncronas (dependem do relógio). Emprega duas construções do tipo IF ELSE: a primeira detecta a condição do sinal de controle, e a segunda testa sucessivamente as condições para realizar operações de set, reset ou armazenamento. Registrador sensível a borda (Inicialização Assíncrona) Um registrador com inicialização assíncrona apresenta as operações set e reset independentes do sinal de relógio ck. Máquinas de Estados Máquina de estados é um circuito sequencial que transita numa sequência pré definida de estados. A transição entre os estados é comandada por um sinal de controle. O estado atual é definido por um elemento de memória e o estado futuro é determinado com base no estado atual e na condição das entradas. - Máquina de Mealy, o valor de saída é função do estado atual e da condição das entradas. - Máquina de Moore, o valor da saída depende exclusivamente do estado atual. PERGUNTAS 1. O que é FPGA? Field programmable gate away - Arranjo de portas programáveis em campo, é um conjunto integrado projetado para ser programável pelo operador. Ou seja, é uma placa com portas lógicas e elementos de memória organizados em formato de matriz. É um arranjo de portas lógicas NAND programáveis. 2. O que é VHDL?* É a linguagem de programação utilizada para programar o FPGA. Ele permite descrever em um software o comportamento e a estrutura do hardware. 3. Diferença dos códigos VHDL E ASIC.* VHDL é uma linguagem usada para descrever o comportamento e a arquitetura de circuitos digitais, permitindo a simulação e o teste de projetos antes de sua implementação física. ASIC é um tipo de circuito integrado projetado para uma *função específica*, que pode ser descrito usando VHDL em uma fase inicial do desenvolvimento, *mas uma vez fabricado, não pode ser alterado.* 4. Qual a arquitetura e entidade? Entidade - relação direta com com o meio físico da fpga, ligações físicas, pinos físicos Arquitetura - variável temporária, pode ser usada como entrada ou saída. 5. Como é a estrutura do código VDHL? Declarações Objetos que serão usados em comandos concorrentes ou seqüenciais Declarados antes da cláusula begin em arquiteturas, blocos, processos, procedimentos e funções Comandos concorrentes: comandos que serão executados em paralelo, independentemente um dos outros block e process Comandos sequenciais: comandos que serão executados de forma sequencial, obedecendo o fluxo de controle comandos após a cláusula begin em processos 6. Quais são os tipos de variáveis VHDL? Bit Bit vector Inter Caractere 7.Quais são as aplicações do FPGA? O uso do FPGA é muito versátil, podendo ser usado em diversas áreas. Alguns exemplos da suas aplicações é para fluxo de dados banda larga, equipamentos para processamento de imagem 8. Quando o FPGA não pode ser usado? Processamento mais leve, taxa baixa, uso raspberry 9. Como se declara vetor em vhdl Bit vector (condições que ele tem to ou downto) 10. Quais são os comandos e a qual eles pertencem? Concorrentes: WHEN ELSE, WITH SELECT, BLOCK e Sequenciais: IF ELSE, CASE WHEN, WAIT e NULL 11. If else, pode ser usado em qual codigo? No código sequencial. 12. Comando concorrente x sequenciais Os comandos concorrentes são executados simultaneamente e comandos sequenciais são avaliados um de cada vez, na ordem em que aparecem 13. O que é uma máquina de estado? um circuito sequencial que transita numa sequência pré definida de estados. A transição entre os estados é comandada por um sinal de controle. O estado atual é definido por um elemento de memória e o estado futuro é determinado com base no estado atual e na condição das entradas. 14. Thunderbird 15. Semáforo 16. Display de 7 segmentos DEMAIS PERGUNTAS • Declare entidade • Se colocarmos um vetor X qual será a saída? • Desenvolvimento do código