Conceção de Sistemas Digitais

Objetivos

A disciplina pretende dotar os estudantes com conhecimentos básicos de conceção de sistemas digitais, dando ênfase às componentes de especificação comportamental (incluindo diagramas de estado, estadogramas e redes de Petri) e de descrição através da linguagem VHDL que lhes permitam implementar e testar sistemas digitais privilegiando plataformas de implementação baseadas em FPGAs.

Objetivos:

Saber

Capacidade de modelar sistemas digitais com máquinas de estado, com estadogramas e com redes de Petri

Conhecimento das características principais da linguagem VHDL

Conhecimento de técnicas e modelos para simulação e teste de circuitos digitais

 

Fazer

Construir um modelo comportamental de um sistema digital

Codificar em VHDL o modelo comportamental expresso nos formalismos acima mencionados

Elaborar a especificação de teste

Verificação experimental num sistema didático baseado em FPGA

 

Competências Não-técnicas

Capacidade de gestão do tempo e cumprimento de prazos

Capacidade de trabalhar em equipa e de colaborar numa equipa

Atitude de exigência e qualidade

Caracterização geral

Código

10918

Créditos

6.0

Professor responsável

Luís Filipe Santos Gomes

Horas

Semanais - 4

Totais - 56

Idioma de ensino

Português

Pré-requisitos

Recomendado conhecimentos de sistemas digitais ao nível introdutório (nomeadamente frequência e aprovação na unidade curricular Sistemas Lógicos, no mínimo)

Bibliografia

"Introduction to Programmable Logic"; K. Parnell and N. Mehta; Xilinx 2004
"Hardware-level Design Languages", L. Gomes, A.Costa; "The Industrial Information Technology Handbook"; R. Zurawski (Editor-in-Chief), section VI – Real time embedded systems; chapter 84; CRC; ISBN 0849319854; 2005; pp. 84-1, 84-18
"Checking experiments in sequential machines", pp. 147-150; A. Bhattacharyya; John Wiley & Sons, 1989
"VHDL for Designers",  S. Sjoholm, Lennart Lindh; Prentice Hall, 1997, ISBN 0-13-473414-9
"Statecharts: a visual formalism for complex systems", vol. 8, pp. 231-274; D. Harel; Science of Computer Programming 1987
"Petri Nets and Industrial Applications: A Tutorial", Richard Zurawski and MengChu Zhou; IEEE Transactions on Industrial Electronics, Vol.41, no. 6, December 1994, pp. 567-583
"Digital Logic Circuit Analysis and Design", sec. 2.7.4 & c. 12; V. Nelson, H. Troy Nagle, B. Carroll, J. David Irwin; Prentice Hall 1995; ISBN 0-13-463894-8

Método de ensino

Aulas de exposição com duas horas semanais onde, sempre que possível, se fomenta a discussão de temas permitindo dar ênfase diferenciada em aspetos conceptuais, nomeadamente em formalismos de especificação de sistemas (máquinas de estado, estadogramas e redes de Petri), bem como em aspetos de implementação e de tecnologia de sistemas digitais, nomeadamente as linguagens de descrição de hardware (VHDL) e plataformas utilizando dispositivos reconfiguráveis tipo FPGAs.

As aulas práticas são aulas de laboratório com a duração de duas horas semanais, onde os alunos realizam mini-projetos “da especificação à implementação”, com crescente grau de autonomia, utilizando ferramentas computacionais de nível profissional.

Cada grupo de trabalho recebe uma placa de experimentação (com uma FPGA) permitindo a experimentação fora do laboratório.

Método de avaliação

Componente teórica:

A componente teórica da disciplina pode ser realizada através de 3 momentos de avaliação (1º teste, com peso de 22%, 2º teste 22%, 3º teste 16%) ou exame (todos presenciais, se possivel); Necessário ter média de testes ou nota de exame superior a 9,5 valores.

Componente prática:

A componente prática será constituída por 2 trabalhos, sendo 20% da nota final associada a cada um dos trabalhos. Necessário ter média dos trabalhos superior a 9,5 valores.

Um trabalho adicional facultativo poderá introduzir uma bonificação de até 1 valor na nota pratica (com limite em 20 valores)

Todas as notas serão representadas com duas casas decimais.

Componente teórica efectuada nos dois anos anteriores é equivalente a exame.

Componente prática efectuada nos dois anos anteriores é equivalente a componente prática.

Conteúdo

(1ª parte - 1º teste)
Especificação de Sistemas Digitais: formalismos gráficos versus textuais. Diagramas de Estado: máquinas de Moore e Meally, especificações válidas, técnicas de codificação de estados. Síntese de Sistemas Digitais: implementações síncronas e assíncronas, utilização de dispositivos de lógica programável (PALs, CPLDs, FPGAs).

Linguagens de descrição de hardware, VHDL.

(2ª parte - 2º teste)
Estadogramas (Statecharts): características, profundidade, ortogonalidade, comunicação, história, tradução em máquinas de estado; questões de implementação.

Redes de Petri: características, classes RdP de baixo-nível (ordinárias e generalizadas) e de alto-nível (coloridas), extensões não-autónomas (tempo, eventos e acções), questões de implementação; análise de RdPs, verificação de propriedades, construção do espaço de estados.

(3ª parte - 3º teste)
Modelação e Teste de Sistemas Digitais: modelos, simulação coerente, micro-passos. Teste de Sistemas Digitais: teste de lógica combinatória, observabilidade e controlabilidade, modelos de falhas, teste de circuitos sequenciais, técnicas de varrimento, conceito “projectar para testar”, teste funcional, geração de vectores de teste, técnicas de compressão de respostas, auto-teste embutido (BIST-“built-in self-test”).