Livro: VHDL Descricao e Sintese de Circuitos Digitais

Fonte: Página do Prof. Roberto d'Amore, Dispositivos e Sistemas Eletrônicos PG-EEC/D, Livro VHDL, LTC Editora

Ver Cotação: Comprar-Livro

capa_1ra


Esta página contém informações adicionais sobre o livro VHDL Descrição e Síntese de Circuitos Digitais de Roberto d'Amore, publicado pela editora LTC.

Sobre o livro

VHDL - Descrição e Síntese de Circuitos Digitais apresenta a linguagem de descrição de circuitos VHDL de maneira gradual, em uma seqüência de tópicos que evita a referência a conceitos ainda não abordados. Através da simulação de mais de 170 códigos propostos e com o auxílio mais de 220 figuras, o leitor experimentará um aprendizado da linguagem rápido e motivador.Devido à abrangência da obra, várias seqüências de leitura são propostas, de forma a atender leitores com diferentes necessidades. Assim, o estudo dos seis primeiros capítulos é ideal para o leitor com urgência em obter resultados práticos. Enquanto isso, um aprofundamento maior pode ser atingido com os capítulos subseqüentes - que tratam de estruturas hierárquicas, esquemas de geração, esquemas de iteração, subprogramas, padrões IEEE 1164 e 1076.3, síntese de memórias, operações com arquivos, configurações, funções de resolução e estratégias de teste. As distinções entre as versões VHDL-1987 e VHDL-1993 são mencionadas ao longo do texto.

VHDL - Descrição e Síntese de Circuitos Digitais dá ênfase a síntese de circuitos empregando a linguagem e procurando, sempre que possível, estabelecer um elo entre o tópico abordado e a sua aplicação. Nos 15 capítulos são discutidos mais de 60 casos de síntese através da análise dos circuitos gerados por ferramentas de síntese, além dos cuidados na descrição e formas preferenciais de código visando à síntese.

VHDL - Descrição e Síntese de Circuitos Digitais atende às necessidades de:
- Projetistas de circuitos digitais, com experiência no desenvolvimento de circuitos digitais através de captura esquemática, que necessitam migrar para esta nova técnica de projeto;
- Profissionais da área de informática que desejam aplicar a sua experiência em programação na síntese de circuitos;
- Estudantes de graduação e pós-graduação que tenham conhecimentos na área de circuitos digitais. É possível empregar a obra, também, como livro texto de cursos da linguagem pois conta com imagens de auxílio didático que podem ser solicitadas ao autor e mais de 140 exercícios propostos.

Arquivos disponíveis para simulação dos exemplos propostos no livro:
  1. Códigos do capítulo 1 (.vhd)
  2. Códigos do capítulo 2 (.vhd)
  3. Códigos do capítulo 3 (.vhd)
  4. Códigos do capítulo 4 (.vhd)
  5. Códigos do capítulo 5 (.vhd)
  6. Códigos do capítulo 6 (.vhd)
  7. Códigos do capítulo 7 (.vhd)
  8. Códigos do capítulo 8 (.vhd)
  9. Códigos do capítulo 9 (.vhd)
  10. Códigos do capítulo 10 (.vhd)
  11. Códigos do capítulo 11 (.vhd)
  12. Códigos do capítulo 12 (.vhd)
  13. Códigos do capítulo 13 (.vhd)
  14. Códigos do capítulo 14 (.vhd)
  15. Códigos do capítulo 15 (.vhd)

Exemplos de códigos extras

  1. Exemplo de um microprocessador ditático de 8 bits: CPU-1
  2. Exemplo de um microprocessador ditático de 8 bits com assembler: CPU-2
  3. Seleção periféricos segundo um mapa de endereços definido

Auxílio ao instrutor e ao aluno

Imagens para aulas: exemplo

O arquivo abaixo contém 63 imagens para auxílio didático. As imagens podem ser empregadas em um curso rápido da linguagem VHDL. Arquivo demostração (.pdf)

Imagens para aulas: curso completo

Imagens para aulas, de todos os capítulos, podem ser solicitadas diretamente com a editora: Imagens para aulas de todos capítulos 'slides'

Soluções de exercícios selecionados

  1. Capítulo 2
  2. Capítulo 3
  3. Capítulo 4
  4. Capítulo 5
  5. Capítulo 6
  6. Capítulo 7
  7. Capítulo 8
  8. Capítulo 9
  9. Capítulo 10
  10. Capítulo 11
  11. Capítulo 12
  12. Capítulo 13
  13. Capítulo 14
  14. Capítulo 15

Soluções comentadas de todos exercícios As soluções, de todos os capítulos, podem ser solicitadas diretamente com a editora: Soluções de todos exercícios

Sumário

Capítulo 1 Introdução

  • 1.1 Histórico
  • 1.2 Aspectos gerais da linguagem
  • 1.3 Síntese de circuitos
  • 1.4 Principais pontos abordados
  • 1.5 Exercícios

Capítulo 2 Primeiro contato com a linguagem

  • 2.1 Entidade de projeto
  • Declaração da entidade e corpo da arquitetura
  • 2.2 Classe de objetos: constante, variável e sinal
  • 2.3 Tipos
  • Tipos escalares
  • Tipos compostos
  • Nomes indexados, parte de vetores e agregado
  • Definição de novos tipos
  • 2.4 Operadores
  • 2.5 Exemplos de utilização
  • 2.6. Principais pontos abordados
  • 2.7 Exercícios

Capítulo 3 Comandos concorrentes básicos

  • 3.1 Atraso delta
  • 3.2 Atribuição de valor para um sinal
  • 3.3 Construção “ WHEN ELSE ”
  • 3.4 Construção “ WITH SELECT ”
  • 3.5 Comando “ BLOCK ”
  • 3.6 Comando “ PROCESS ”
  • 3.7 Palavra reservada “ UNAFFECTED ”
  • 3.8 Cuidados na descrição
  • Comparações entre as construções “WHEN ELSE” e “WITH SELECT”
  • Criação de latch com as construções “WHEN ELSE” e “WITH SELECT ”
  • 3.9 Principais pontos abordados
  • 3.10 Exercícios

Capítulo 4 Comandos seqüenciais básicos

  • 4.1 Lista de sensibilidade em processos
  • 4.2 Atribuição de valor para um sinal - região seqüencial
  • 4.3 Construção “ IF ELSE ”
  • 4.4 Construção “ CASE WHEN ”
  • 4.5 Comando “ WAIT ”
  • 4.6 Comando “ NULL ”
  • 4.7 Cuidados na descrição
  • Comparações entre “ WHEN ELSE ” e “ IF ELSE ”
  • Comparações entre “ WITH SELECT ” e “ CASE WHEN ”
  • Construções “IF ELSE” e “CASE WHEN” aninhadas
  • O emprego da construção “ IF ELSE ” e “ CASE WHEN ” Expressão de escolha das construções “ WITH SELECT ” e “ CASE WHEN ”
  • 4.8 Principais pontos abordados
  • 4.9 Exercícios

Capítulo 5 Atraso, variável e atributos

  • 5.1 Atraso
  • 5.2 Sinal e Variável
  • 5.3 Atributos
  • Atributos pré-definidos relativos a sinais que resultam em novos sinais
  • Atributos pré-definidos relativos a sinais que não resultam em novos sinais
  • Atributos pré-definidos relativos a vetores Atributos pré-definidos relativos a tipos
  • Atributos definidos pelo usuário
  • 5.4 Cuidados na descrição
  • Ordem na atribuição de valores
  • 5.5 Principais pontos abordados
    5.6 Exercícios

Capítulo 6 Estratégias de descrição de circuitos síncronos

  • 6.1 Conceitos iniciais
  • 6.2 Registrador sensível a nível
  • 6.3 Registrador sensível a borda - inicialização síncrona
  • 6.4 Registrador sensível a borda - inicialização assíncrona
  • 6.5 Registrador sensível a borda com sinal para habilitação do sinal de relógio
  • 6.6 Máquinas de estados
  • 6.7 Inferência de registrador empregando variável
  • 6.8 Contadores
  • 6.9 Alternativas para descrição de registradores
  • 6.10 Cuidados na descrição
  • Sinais na lista de sensibilidade
  • Ciclo de inicialização
  • Inserção desnecessária de elementos de memória
  • 6.11 Principais pontos abordados
  • 6.12 Exercícios

Capítulo 7 Componentes e esquemas de iteração

  • 7.1 Componentes
  • Declaração de componente
  • Solicitação de componente
  • Solicitação direta de componente
  • 7.2 Genéricos
  • Definição de genéricos
  • Mapa de genéricos na solicitação de componentes
  • 7.3 Comando “ GENERATE ”
    Esquema de geração “ FOR ”
  • Esquema de geração “ IF ”
  • 7.4 Comando “ LOOP ”
  • Esquema de iteração “ FOR ”
  • Esquema de iteração “ WHILE ”
  • Comandos “ NEXT ” e “ EXIT ”
  • Laços infinitos
  • 7.5 Principais pontos abordados
  • 7.6 Exercícios

Capítulo 8 Subprogramas

  • 8.1 Subprogramas
  • 8.2 Função
  • 8.3 Procedimento
  • 8.4 Sobrecarregamento de subprogramas e operadores
  • 8.5 Vetores sem especificação de limites em subprogramas
  • 8.6 Cuidados na descrição
  • Comportamento de variáveis declaradas em subprogramas
  • Chamada de procedimentos: regiões concorrentes
  • Variáveis compartilhadas
  • 8.7 Principais pontos abordados
  • 8.8 Exercícios

Capítulo 9 Bibliotecas e Pacotes

  • 9.1 Bibliotecas de projeto
  • 9.2 Pacotes
  • Ferramentas de síntese
  • 9.3 Ordem de análise
  • 9.4 Constantes deferidas
  • 9.5 Sinais globais
  • 9.6 Principais pontos abordados
  • 9.7 Exercícios

Capítulo 10 Padrão IEEE 1164

  • 10.1 Tipos definidos
  • 10.2 Funções e sub-tipos definidos no pacote “ std_logic_1164 ”
  • 10.3. Descrições empregando o pacote “ std_logic_1164 ”
  • Funções lógicas
  • Operação da função de resolução em caso de conflito
  • Operações com o valor não importa “ - ”
  • 10.4 Síntese empregando tipos do pacote “ std_logic_1164 ”
  • Saídas com estado em alta impedância
  • Resultado da codificação de valores no circuito gerado
  • Síntese com o valor “não importa” - comparação
  • Síntese com o valor “não importa” - minimização de tabelas
  • Detecção de bordas de subida ou descida
  • Comando “NULL”: construção “CASE WHEN” e valores “ std_logic ”
  • 10.5 Principais pontos abordados
  • 10.6 Exercícios

Capítulo 11 Padrão IEEE 1076.3

  • 11.1 Tipos definidos
  • 11.2 Operações definidas
  • 11.3. Exemplos de utilização do padrão IEEE 1076.3
  • Funções aritméticas
  • Funções lógicas
  • Saídas com estado em alta impedância
  • Operações relacionais com tipos “unsigned” e “signed”
  • 11.4. Exemplo de síntese com o padrão IEEE 1076
  • Valor “não importa” e a função “std_match”
  • Transbordo em operações de soma com tipos “unsigned” e “signed”
  • Circuitos síncronos
  • 11.5. Principais pontos abordados no capítulo
  • 11.6 Exercícios

Capítulo 12 Declaração de tipos e pseudônimos

  • 12.1 Tipos 12.2
  • Definição de tipos enumerados
  • 12.3 Definição de tipos físicos 12.4 Definição de sub-tipos 12.5 Definição de tipos vetor
  • Declarando um vetor
  • Definição um vetor com limites em aberto
  • Vetor composto de elementos do tipo vetor
  • Vetor multidimensional
  • 12.6 Definição de tipos registro
  • 12.7 Pseudônimos
  • 12.8 Síntese de memórias
  • Memórias ROM
  • Memórias RAM
  • 12.9 Principais pontos abordados
  • 12.10 Exercícios

Capítulo 13 Arquivos

  • 13.1. Emprego de arquivos
  • Declaração de um tipo arquivo
  • Declaração de objetos tipo arquivo - versão VHDL-1987
  • Operações implicitamente declaradas - versão VHDL-1987
  • Exemplos - versão VHDL-1987
  • Declaração de objetos tipo arquivo - versão VHDL-1993
  • Operações implicitamente declaradas - versão VHDL-1993
  • Exemplos - versão VHDL-1993
  • 13.2 Pacote TEXTIO
  • Versão VHDL-1987
  • Versão VHDL-1993
  • 13.3 Principais pontos abordados
  • 13.4 Exercícios

Capítulo 14 Tópicos Avançados

  • 14.1 Comando “ ASSERT ”
  • 14.2 Comando “ REPORT ”
  • 14.3 Tipo com função de resolução
  • 14.4 Configurações
  • Especificação de configuração
  • Declaração da configuração
  • Síntese contendo configuração
  • 14.5 Comandos concorrentes pospostos
  • 14.5 Principais pontos abordados
  • 14.6 Exercícios

Capítulo 15 Teste

  • 15.1 Introdução
  • 15.2 Geração de estímulos
  • Sinais aleatórios
  • Sinais periódicos
  • 15.3 Teste de uma descrição
  • Teste empregando constantes para geração dos estímulos
  • Teste empregando dados em arquivo para geração dos estímulos
  • Teste empregando técnica mista
  • 15.4 Principais pontos abordados
  • 15.5 Exercícios

Conteúdo dos capítulos

O capítulo 1 tem como objetivo apresentar um breve histórico da linguagem e os passos envolvidos na síntese de um circuito digital. As etapas de uma síntese são, normalmente, dependentes das ferramentas utilizadas. Procuramos apresentar uma visão que englobe de uma maneira mais ampla os possíveis passos envolvidos. Como neste capítulo são abordadas as etapas de um projeto, e devido a falta de elementos necessários para desenvolver uma descrição, as atividades podem ser complementadas com o aprendizado das ferramentas que serão utilizadas. Descrições completas são oferecidas, e todo o processo de compilação, simulação, síntese e programação de uma FPGA, pode ser visto.

No capítulo 2 são introduzidos os primeiros conceitos da linguagem, como tipos e operadores pré-definidos. Novamente, os exemplos e exercícios visam sedimentar o conhecimento das ferramentas utilizadas empregando os conceitos vistos. Uma breve explicação sobre a definição de tipo é apresentada. Ela é suficiente para os capítulos seguintes.

Os capítulos 3 e 4 apresentam alguns comandos concorrentes e seqüenciais que permitem elaborar descrições de complexidade mediana. Como a linguagem VHDL fornece diversas alternativas para descrever o comportamento de um mesmo circuito, muitas das construções abordadas têm a sua operação exemplificada através de um mesmo circuito. Isto evita a exposição de um novo circuito a cada novo comando e enfatiza as múltiplas opções para a descrição. Os exercícios propostos procuram confrontar estas opções, com o objetivo de evitar que uma determinada construção fique associada a um tipo de circuito.

No capítulo 5 são dados os conceitos de atraso, variável e atributos. Alguns tópicos podem ser omitidos ou resumidos, permitindo que este capítulo seja inserido em um outro capítulo. A descrição de todos os atributos é um pouco tediosa, e pode ser abordada rapidamente. Atributos como “ event ” e “ stable ” não devem ser omitidos, devido as suas aplicações na síntese de circuitos seqüenciais.

O capítulo 6 contém as principais estratégias para descrição de circuitos seqüenciais visando a síntese. Registradores, máquinas de estado e a inicialização destes elementos é discutida. No final deste capítulo é possível realizar a descrição de circuitos com complexidade média para alta, pois muitos dos tópicos importantes da linguagem já foram abordados.

No capítulo 7 as possibilidades de um projeto são estendidas: estruturas hierárquicas, e esquemas de iteração que permitem gerar circuitos regulares são apresentados. A hierarquia é constituída através de descrições que são referenciadas na forma de componentes. Os esquemas de geração e iteração por laço permitem, ainda, a proposta de descrições escaláveis, onde o tamanho do circuito pode ser programado no momento da síntese. Os exercícios propostos abordam estruturas regulares, como somadores e multiplicadores celulares, onde é necessária a interligação de diversos circuitos em um modo pré-estabelecido.

O capítulo 8 aborda os subprogramas função e procedimento. Ainda neste capítulo, é estabelecido um paralelo entre a criação de circuitos empregando componente, vista no capítulo anterior, e a criação de circuitos empregando subprogramas. São abordadas, também, outras operações de subprogramas, como funções de conversão e sobrecarregamento de funções pré-definidas.

O capítulo 9 fornece subsídios para os tópicos a serem abordados no capítulo que segue, discutindo bibliotecas e pacotes. Este capítulo tem a possibilidade de ser condensado, se necessário. Vários dos conceitos abordados podem ser apresentados nos capítulos 10 e 11, onde são discutidos dois pacotes padronizados pelo IEEE. Os exercícios propostos são interessantes, sendo viável adaptá-los, caso todos conceitos do capítulo não tenham sido abordados. O conjunto de exercícios leva a criação de um circuito que realiza uma operação de divisão.

Os capítulos 10 e 11 são imprescindíveis para a síntese de circuitos que envolvam barramentos e portas com saída em estado de alta impedância. Estes capítulos, podem ser apresentados logo após o capítulo 6 ou 7, conforme a necessidade. Naturalmente, uma breve menção dos conceitos de pacotes e bibliotecas é necessária caso o capítulo 9 venha a ser omitido.

No capítulo 12 é abordada a criação de novos tipos, ampliando os conceitos vistos no capítulo 2. Com relação a síntese, é apresentada a descrição de memórias RAM e ROM empregando os novos conceitos introduzidos.

O capítulo 13 continua a abordagem da definição de tipos com a apresentação do tipo arquivo. Este tipo permite a operação com arquivos no sistema hospedeiro. A discussão engloba arquivos no formato binário e no formato texto. Também são abordadas as diferenças entre as versões VHDL-1987 e VHDL-1993.

No capítulo 14 são apresentados comandos que permitem gerar mensagens na fase de simulação, condicionar a execução de um comando em função do término das iterações que ocorrem na simulação de comandos concorrentes, e configurar descrições estruturais. A criação de funções de resolução é, também, discutida.

O capítulo 15 contém uma série de técnicas para o teste de descrições empregando os conceitos abordados nos capítulos 13 e 14.Sugestões para leitura e proposta de cursoUma opção natural para a leitura do texto, bem como uma proposta de um curso sobre a linguagem, é a adoção da seqüência de capítulos apresentada no texto. Entretanto, nem sempre o leitor ou o instrutor dispõem de tempo suficiente, ou necessitam de todos os tópicos apresentados. Na figura que segue são sugeridas alternativas para o estudo, procurando selecionar itens de interesse específico, de modo a melhor atender uma determinada necessidade e reduzir o tempo necessário.

sequencia_gif


Site Relacionados

Agência Espacial Europeia - ESA

  1. Synthesizable IP-Cores ESA
  2. VHDL Modelling Issues

Dúvidas e informações gerais da linguagem

  1. Frequently Asked Questions And Answers

Fabricantes de FPGAs

  1. Actel
  2. Altera
  3. Atmel
  4. Lattice
  5. Quicklogic
  6. Xilinx
  7. Comparação: tecnologias

Ferramentas gratuítas

  1. Alliance
  2. Altera Max+Plus
  3. Altera Quartus II
  4. GHDL - simulador VHDL
  5. GCC
  6. FreeHDL Project
  7. Xilinx Free ISE WebPACK
  8. Xilinx ModelSim Edition-III

Ferramentas para simulação e / ou síntese

  1. Accolade
  2. Aldec
  3. Green Mountain
  4. Model
  5. Mentor Graphics
  6. Synopsys
  7. Synplicity
  8. Comparação: ferramentas de baixo custo

Modelos abertos

  1. Free Model Foundry
  2. Free Model Foundry II
  3. Opencores
  4. Rapid Prototyping of Application Specific Signal Processors (RASSP)

Outros

  1. Hamburg VHDL archive

Sociedades

  1. IEEE
  2. IEEE Computer Society
  3. Sociedade Brasileira de Computação
  4. Sociedade Brasileira de Microeletrônica

Onde Comprar o Livro