lista
11 pág.

lista


DisciplinaProjeto de Circuitos Integrados Digitais26 materiais53 seguidores
Pré-visualização2 páginas
ENGG56 - Lista de Exercícios 1 
 
1. Cite 3 características favoráveis e 3 características não favoráveis à implementação de um 
sistema digital em ASIC. 
2. Qual a diferença básica no modelo de negócios entre uma foundry e uma IDM? 
3. Como funciona o modelo de negócios de uma fabless? 
4. Quais são as características que diferem os 3 estilos de implementação em Verilog? 
5. Sobre Verilog, coloque Verdadeiro ou Falso: 
( ) A linguagem Verilog fornece uma camada de abstração para o backend. 
( ) Valores somente podem ser atribuídos a um dado do tipo reg dentro de um bloco 
procedural. 
( ) Dados da classe NET representam conexões físicas entre blocos. 
( ) Dados da classe REGISTER atuam como circuitos sequencias para armazenamento. 
( ) Atribuições não-bloqueantes são utilizadas em blocos combinacionais. 
( ) Parâmetros correspondem a restrições usadas pelo simulador ou pelas ferramentas de 
síntese. 
( ) Blocos always podem ser utilizados para representar lógica sequencial ou lógica 
combinacional. 
( ) Atribuições bloqueantes são utilizadas em blocos sequenciais. 
( ) Blocos procedurais initial são sintetizáveis. 
6. Assinale quais das seguintes afirmações são boas práticas de codificação em Verilog: 
( ) Identação do código. 
( ) Uso de parâmetros. 
( ) Escrita de atribuições default dentro de blocos always @ (*). 
( ) Uso de atribuições bloqueantes com não-bloqueantes num mesmo bloco procedural. 
( ) Implementação de lógica sequencial com reset assíncrono. 
7. Cite 3 construtores não sintetizáveis em Verilog. 
8. Usando um waveform, exemplifique porque deve-se ter cuidado com reset assíncrono. 
9. Assinale qual o equivalente em Verilog para funções/procedimentos encontrados em 
linguagens de software: 
( ) Blocos procedurais. 
( ) Lógica combinacional. 
( ) Lógica sequencial. 
( ) Módulos. 
( ) Lista de eventos. 
( ) Parâmetros. 
10. Cite ao menos 1 erro em cada um dos trechos de código a seguir. 
 
 
 
 
11. Sobre FSMs, assinale Verdadeiro ou Falso: 
( ) Uma FSM é uma combinação de circuitos sequenciais e combinacionais que modela um 
comportamento composto de um número finito de estados, transições entre estados e 
ações. 
( ) A tabela de estados e o diagrama de estados são auxiliares dispensáveis no projeto de 
uma FSM. 
( ) Máquinas de Mealy têm saídas que dependem unicamente do estado atual da máquina, 
enquanto máquinas de Moore têm saídas que dependem do estado atual da máquina e 
de suas entradas. 
( ) A codificação de estados é a alocação de códigos binários aos estados - exemplos de 
codificação incluem código binário, código gray e código one-hot. 
( ) Na codificação one-hot, o número de bits no código é igual ao número de estados. 
12. Escreva blocos always para os seguintes circuitos: 
a) b) 
 
 
 
c) d) 
 
 
 
 
 
13. Considerando o fluxo de projeto básico, diferencie implementação de verificação. 
14. O fluxo de implementação trabalha com diferentes representações de hardware: 
especificação; microarquitetura; RTL; portas sintetizadas; portas posicionadas (placed) e 
roteadas (routed); e GDSII (Graphic Data System). Quais são as características principais 
de cada uma dessas representações? 
15. Explique qual o objetivo principal de cada uma das etapas de projeto de um circuito 
integrado digital. 
 
 
 
16. Dada a tabela de estados abaixo, faça o diagrama de estados correspondente como uma 
FSM de Mealy. Considere A = 1 e B = 0 como estado inicial. 
Estado Atual Entradas Estado Saídas 
A B x y AF BF k m 
0 0 0 0 1 1 0 0 
0 0 0 1 0 0 0 0 
0 0 1 0 0 0 0 1 
0 0 1 1 0 0 0 1 
0 1 0 0 0 1 0 1 
0 1 0 1 0 0 0 0 
0 1 1 0 0 1 0 1 
0 1 1 1 0 1 0 0 
1 0 0 0 1 0 0 1 
1 0 0 1 1 0 1 0 
1 0 1 0 1 0 0 1 
1 0 1 1 0 1 0 0 
1 1 0 0 1 1 1 0 
1 1 0 1 1 0 1 0 
1 1 1 0 1 1 0 1 
1 1 1 1 1 1 0 1 
 
17. Dado o circuito seguinte, construa o diagrama de estados correspondente, através da 
análise de sua FSM. 
 
18. O código de Hamming é um código de detecção, isto é, permite não apenas detectar erro 
de um bit, mas também a localização do bit errado. Parte-se da observação de que, dados 
dois bits A e B, a operação ou exclusivo C = A \u2295 B calcula o bit paridade (no caso, par) dos 
bits dados. 
 Calculando o código de Hamming para correção de 1 bit em uma palavra de 8 bits: 
Considere uma palavra de 8 bits: m8m7m6m5m4m3m2m1 
A esse dado de 8 bits vamos acrescentar 4 bits adicionais, formando o código de Hamming 
de 12 bits, o qual é numerado da seguinte forma: 
x12 x11 x10 x9 x8 x7 x6 x5 x4 x3 x2 x1 
onde: 
x10 = m8 
x8 = m7 
x7 = m6 
x6 = m5 
x4 = m4 
x3 = m3 
x2 = m2 
x1 = m1 
 
e os 4 bits adicionais x12, x11, x9 e x5 são assim calculados: 
x12 = x10 \u2295 x8 \u2295 x6 \u2295 x4 \u2295 x2 
x11 = x10 \u2295 x7 \u2295 x6 \u2295 x3 \u2295 x2 
x9 = x8 \u2295 x7 \u2295 x6 \u2295 x1 
x5 = x4 \u2295 x3 \u2295 x2 \u2295 x1 
 
Agora suponha que esses 12 bits são lidos como sendo: 
y12 y11 y10 y9 y8 y7 y6 y5 y4 y3 y2 y1 
Se não houver erro, então cada yi é igual ao seu respectivo xi. 
Se houver erro em um bit apenas, é possível detectar tal erro e corrigi-lo. Para isso 
fazemos o seguinte cálculo de 4 bits, denominados k1, k2, k3 e k4: 
k1 = y12 \u2295 y10 \u2295 y8 \u2295 y6 \u2295 y4 \u2295 y2 
k2 = y11 \u2295 y10 \u2295 y7 \u2295 y6 \u2295 y3 \u2295 y2 
k3 = y9 \u2295 y8 \u2295 y7 \u2295 y6 \u2295 y1 
k4 = y5 \u2295 y4 \u2295 y3 \u2295 y2 \u2295 y1 
 
Se k1 = k2 = k3 = k4 = 0, então não há erro. Senão, o número binário codificado pelos 4 bits 
k4k3k2k1 
determinará a posição do bit errado. Isto é, se k4k3k2k1 = 0111, então o bit y7 está errado. 
Questão: Usando código Verilog, faça um circuito ECC (Error Correcting Code) de 
detecção simples, correção simples, usando código de Hamming, considerando palavras 
de memória de 8 bits. Uma das entradas do circuito deverá ser R/W: caso R/W = R, o 
circuito deverá detectar e corrigir um eventual erro na palavra de entrada, gerando a 
palavra correta na saída; caso R/W = W, o circuito deverá gerar na saída o código de 
Hamming da palavra de entrada. 
19. Considere a figura abaixo. A bomba d'água B1 leva água de um riacho até o tanque 
inferior, e a bomba B2 leva água do tanque inferior para o superior. A bomba B1 deve 
ligar com o objetivo de encher o tanque inferior, sendo desligada quando a água atingir o 
nível máximo (S2), e assim permanecendo (desligada) até que a água fique abaixo do nível 
de mínimo (S1). A bomba B2 funciona da mesma forma, baseada nos níveis S3 e S4, mas 
não poderá funcionar caso o nível do tanque inferior esteja abaixo de S1. Se qualquer 
combinação que os sensores enviarem for impossível de ocorrer na prática, as duas 
bombas devem ser imediatamente desligadas, independente de qualquer outra situação. 
Faça a síntese da FSM correspondente (em Verilog ou esquemático de circuito), fazendo 
as convenções necessárias. 
 
20. O circuito abaixo (GeradorExpressoesReduzidas) é capaz de gerar expressões booleanas 
otimizadas de duas variáveis, com base em mapas de Karnaugh. As entradas do circuito 
(lado esquerdo) correspondem às células do mapa de Karnaugh, enquanto as saídas (lado 
direito) indicam quais termos estão presentes na expressão booleana reduzida, a partir 
das células preenchidas do mapa. 
 
 
 
Convenções de entrada: 
1 = célula correspondente preenchida; 
0 = célula correspondente vazia. 
 
Convenções de saída: 
1 = termo correspondente presente na expressão booleana reduzida; 
0 = termo correspondente ausente na expressão booleana reduzida. 
 
Construa, em Verilog, o circuito combinacional GeradorExpressoesReduzidas, dando os 
nomes de suas entradas e saídas. 
 
 
... 
T
od
os
 o
s 
po
ss
ív
ei
s