Apresentação da disciplina: docentes, horários das aulas, funcionamento das aulas teórico-práticas, inscrição nos turnos, metodologia de trabalho, sistema de avaliação adoptado, documentação e programa das aulas teóricas e teórico-práticas.
Não houve aula devido à realização do SDDI.
Introdução aos sistemas digitais: comparação entre sistemas digitais e analógicos, connceito da abstracção digital, comparação entre sistemas síncronos e assíncronos, portas lógicas e flip-flops, ferramentas de CAD, circuitos integrados, PLDs e níveis de abstracção no projecto de sistemas digitais.
Álgebra de Boole: introdução, sinais binários, comparação entre sistemas combinacionais e sequenciais, portas lógicas elementares e álgebra da comutação (axiomas e alguns teoremas).
Álgebra de Boole: álgebra da comutação (alguns teoremas), princípio da dualidade, representação normalizada de funções lógicas (tabelas e expressões algébricas tipo SOP ou POS).
Álgebra de Boole: exemplos.
Conceitos sobre sistemas combinacionais: minimização de funções (métricas
usadas para orientar a minimização, essência da minimização e exemplos
ilustrativos).
Conceitos sobre sistemas combinacionais: Mapas de Karnaugh. Mapas para 2, 3, 4, 5 e 6 variáveis. Correspondência entre uma tabela de verdade e um mapa de Karnaugh. Essência da simplificação: adjacência entre células equivale ao teorema T10 (T10'). Regras para combinação/simplificação de células a 1 (0). Algumas definições: soma mínima, soma completa, implicante maior e implicante essencial.
Conceitos sobre sistemas combinacionais: Algoritmo de simplificação com mapas de Karnaugh. Mapas de Karnaugh e hazards. Definição de célula-a-1 distinguida e de implicante essencial e reformulação do algoritmo de simplificação com mapas de Karnaugh quando se usam don’t cares. Definição de glitch e de hazard estático/dinâmico e aplicação dos mapas de Karnaugh para detectar e eliminar hazards estáticos.
Linguagem VHDL: o fluxo de projecto, entidades e arquitecturas. Principais características da linguagem, ferramentas de síntese, definição de entidade e arquitectura, hierarquia, sinais e variáveis.
Linguagem VHDL: tipos de dados pré-definidos (incluindo arrays), operadores pré-definidos, semântica e sintaxe da função e do procedimento, definição de biblioteca e de package e tipo de informação neles guardada. Projecto estrutural (instruções concorrentes e declaração/instanciação de componentes, aplicação da instrução for...generate na criação de estruturas repetitivas, utilização de constantes genéricas na definição de entidades parametrizadas).
Linguagem VHDL: Projecto fluxo de dados (atribuição concorrente a um sinal, atribuição concorrente e condicional e atribuição selectiva). Projecto comportamental (semântica e sintaxe do processo, utilização de sinais/variáveis em processos, lista de sensibilidade dum processo, forma de execução dum processo e instruções sequenciais if, case, loop, for e while).
Linguagem VHDL: Modelação da dimensão temporal dum circuito utilizando after ou wait, processo de simulação - lista com eventos e matriz com a lista de sensibilidade, definição dum ciclo de simulação, conceito de delta delay e ilustração dum testbench) e síntese (algumas regras de codificação que permitem obter código sintetizável).
Questões práticas de sistemas combinacionais: PLDs (estrutura dos dispositivos de lógica programável do tipo PLA e PAL) e descodificadores (definição, descodificador binário 2 para 4 e 3 para 8, hierarquia de descodificadores).
Não houve aula devido à realização das JOIN'06.
Questões práticas de sistemas combinacionais: descodificador descrito em VHDL (estrutural, fluxo de dados e comportamental), descodificadores de 7-segmentos, codificadores (definição, codificadores binários 8:3, codificador de pedidos, codificador de prioridade), buffers tri-state (conceito de alta impedância, definição e utilidade em barramentos).
Férias da Páscoa.
Questões práticas de sistemas combinacionais: multiplexadores (definição, multiplexador 8:1, multiplexador 2:1 de 4-bits, desmultiplexador, descrição em VHDL), portas XOR e circuitos detectores de paridade (vários tipos de porta OR e NOR exclusivo, detector de paridade impar/par, detectores com estrutura daisy-chain/árvore, detector de paridade em VHDL), comparadores (definição, comparador de 4-bits com portas OR e XOR).
Questões práticas de sistemas combinacionais: comparadores (comparador com estrutura "iterativa", comparador de 4-bits 74x85 e aplicação do CI 74x85 num comparador de 12-bits), somadores, subtractores e ALUs (semi-somador de 1 bit, somador completo de 1 bit, somador de ripple, subtractor completo de 1 bit, subtractor de ripple).
Questões práticas de sistemas combinacionais: somadores, subtractores e ALUs (ALU de 4-bits 74x181), multiplicadores (algoritmo/implementação tradicional dos multiplicadores, descrição em VHDL).
Conceitos sobre sistemas sequenciais: circuitos combinacionais vs sequenciais, conceito de estado (variáveis de estado, máquinas de estados finitas, sinal de relógio).
Conceitos sobre sistemas sequenciais: elementos bi-estáveis (circuito bi-estável mais simples, análise do bi-estável segundo uma perspectiva analógica), latches (latch S-R, latch /S-/R, latch S-R com enable, latch D), flip-flops (flip-flop D sensível à transição positiva/negativa, flip-flop D com entradas assíncronas e/ou enable).
Conceitos sobre sistemas sequenciais: flip-flops (flip-flop J-K com estrutura mestre/escravo, flip-flop J-K sensível à transição, flip-flop T sem/com enable). Projecto de máquinas de estados - FSMs (definição formal de FSM, máquinas do tipo Moore e Mealy, estrutura duma FSM, passos envolvidos no projecto duma FSM). Exemplo de projecto duma máquina de estados (descrição textual da FSM, construção da tabela de estados e saídas, diagrama de estados).
Conceitos sobre sistemas sequenciais: Exemplo de projecto duma máquina de estados (atribuição de códigos aos estados - atribuição mais simples, decomposta, do tipo one-hot, do tipo quase one-hot, abordagens risco/custo mínimo para lidar com os códigos de estados não usados, obtenção da tabela de excitação, tabela de excitação, tabela de verdade, tratamento dos estados não usados, obtenção da expressão das saídas combinacionais usando simplificação com mapas de Karnaugh e diagrama lógico da máquina de estados).
Conceitos sobre sistemas sequenciais: Segundo exemplo de projecto duma máquina de estados - sistema de controlo das luzes dum carro (diagrama de estados, alteração do diagrama de estados para eliminar ambiguidades e tabela de estados). Descrição de máquinas de estados em VHDL (suporte da linguagem para descrever máquinas de estados - atributo event, tipos de dados enumerados e construtor CASE, utilização do atributo event para modelar um flip-flop D, abordagens alternativas para descrever máquinas de estados em VHDL, formas que se podem usar para atribuir códigos aos estados, descrição em VHDL do sistema de controlo das luzes dum carro).
Questões Práticas de Sistemas Sequenciais: introdução e contadores (definição, modulus, contador módulo-m, contador binário, contador de ripple, contadores de ripple / série / paralelo síncronos).
Não houve aula devido ao Enterro da Gata.
Não houve aula devido ao Enterro da Gata.
Questões Práticas de Sistemas Sequenciais: contadores (um exemplo e descrição em VHDL), PLDs sequenciais (PAL combinacional vs sequencial, a PAL sequencial 16R8).
Preenchimento dos inquéritos.
PLDs complexas (CPLDs): estrutura base duma CPLD, expandir uma PLD simples para chegar à CPLD, a família de CPLDs 9500 da Xilinx (a sua arquitectura, o bloco funcional, a macrocélula do bloco funcional, o alocador de termos de produto).
PLDs complexas (CPLDs): a família de CPLDs 9500 da Xilinx (a matriz de comutação e o bloco de entrada/saída).
Memória ROM: introdução aos tipos de memória, memória só de leitura (ROM), a ROM vista como um circuito combinacional, a estrutura interna duma ROM, métodos de programação de ROMs (mask ROM, PROM, EPROM e EEPROM), ROM com saídas em tri-state, circuitos com várias ROMs, vantagens e desvantagens em usar ROMs no projecto de circuitos.
Memória RAM: memória de leitura/escrita, memória de acesso aleatório, RAM estática (SRAM), memória volátil e não-volátil, entradas e saídas (incluindo sinais de controlo) duma SRAM, operações de leitura e escrita duma SRAM, organização interna duma SRAM (célula de memória), SRAM síncrona, RAM dinâmica (DRAM), refrescamento da informação guardada numa DRAM e organização interna duma DRAM.
Módulo 1: Representação de sistemas digitais com texto, tabelas, expressões algébricas normalizadas e diagrama lógico. Simplificação de funções aplicando os teoremas da álgebra de boole, de modo exaustivo. Implementar um pequeno sistema digital (controlador de passadeira eléctrica) com circuitos integrados TTL da família 74LSXXX, tendo deste modo contacto com as características físicas e funcionais deste tipo de circuitos.
Módulo 3: mapas de Karnaugh. Resumo dos conceitos associados ao método de simplificação de funções com mapas de Karnaugh (definição de implicante maior e essencial, cobertura, 1's distinguidos e algoritmo de simplificação). Exercícios de aplicação dos mapas de Karnaugh no processo de minimização de funções lógicas com 3, 4 e 5 variáveis e com don't cares.
Módulo 4: introdução ao VHDL. Conceitos básicos do VHDL (entidade e arquitectura, construtores condicionais, ciclos, operadores da linguagem, processos, atribuições, atrasos com after). Exercícios com VHDL: (i) descrever um semi-somador, (ii) descrever um somador de 1 bit em VHDL fluxo de dados e comportamental, (iii) descrever um multiplexador 4:1 em VHDL fluxo de dados e comportamental (com IF e com CASE).
Módulo 4: introdução ao VHDL. Descrever e simular em VHDL uma ALU de 1 bit. Descrever a arquitectura da ALU com instanciação de componentes já descritos em VHDL. Concepção dum ficheiro de teste em VHDL (testbench) para a ALU. Simular para confirmar o correcto funcionamento da ALU descrita.
Módulo 6: Projectar, descrever/simular em VHDL e implementar com CPLD a máquina de
estados dum controlador de portão de garagem. Síntese manual da máquina de estado:
analisar o problema, desenhar o diagrama de blocos, obter o diagrama de estados,
construir a tabela de estados e saídas e codificar os estados.
Projecto: com base na análise do enunciado, construir o diagrama de blocos.
Não houve aula devido à realização das JOIN'06.
Não houve aula (férias de Páscoa).
Módulo 6: Projectar, descrever/simular em VHDL e implementar com CPLD a máquina de
estados dum controlador de portão de garagem. Síntese manual da máquina de estado:
construir a tabela de excitação e de verdade para as saídas combinatórias e
simplificar a expressão das saídas combinatórias utilizando mapas de Karnaugh.
Descrição, em VHDL estilo comportamental, o diagrama de estados do controlador.
Projecto: refinamento do diagrama de blocos de modo a obter um esquemático
mais detalhado para o sistema.
Módulo 6: Projectar, descrever/simular em VHDL e implementar com CPLD a máquina de estados
dum controlador de portão de garagem. Escrita em VHDL dum testbench para testar
o controlador, partindo duma tabela com 19 cenários para as entradas e simulação usando
este testbench.
Projecto: construir o esquemático detalhado do sistema.
Aula 10
TP1 (09/Mai), TP2 (09/Mai), TP3 (04/Mai), TP4 (04/Mai), TP5 (04/Mai), TP6 (05/Mai)
Módulo 6: Projectar, descrever/simular em VHDL e implementar com CPLD a máquina de estados
dum controlador de portão de garagem. Síntese do controlador a partir da descrição VHDL
comportamental, Obtenção duma implementação tendo em vista a CPLD do periférico PG04 v2,
programação da CPLD e inspecção do correcto funcionamento do controlador.
Projecto: concluir o esquemático detalhado do sistema.
Aula 11
TP1 (23/Mai), TP2 (23/Mai), TP3 (11/Mai), TP4 (11/Mai), TP5 (11/Mai), TP6 (12/Mai)
Projecto: avaliação do esquemático detalhado do sistema.
Aula 12
TP1 (30/Mai), TP2 (30/Mai), TP3 (25/Mai), TP4 (25/Mai), TP5 (25/Mai), TP6 (26/Mai)
Projecto: avaliação do bloco conversor de binário para 8 segmentos e do diagrama de estados para a unidade de controlo do sistema. Preenchimento dos inquéritos.
Aula 13
TP1 (06/Jun), TP2 (06/Jun), TP3 (01/Jun), TP4 (01/Jun), TP5 (01/Jun), TP6 (02/Jun)
Projecto: avaliação da implementação em VHDL do projecto da calculadora (ALU, unidade controlo, registos, pilha, conversor).