Você está na página 1de 3

Sistemas Digitais Reconfiguráveis e Aplicações

Avaliação final
16 de outubro de 2018

1 Exercícios
Implementar em VHDL os seguintes exercícios:
a. Escreva a função maior_primo que recebe um número inteiro maior ou
igual a 2 como parâmetro e devolve o maior número primo menor ou igual
ao número passado à função (vide apêndice A).
b. Implementar a fórmula geral para encontrar as quantidades de combina-
ções simples de um conjunto dada pela Equação 1:

r!
C(r,p) = (1)
p! · (r − p)!
onde r é o número de elementos do conjunto e p é a quantidade de ele-
mentos da combinação (vide apêndice B).

2 Orientações para desenvolvimento do projeto


Seguir as seguintes especificações:
a. Todas as implementações devem ser feitas em vhd (sem usar diagrama
esquemático).
b. O project navigator->Files só deve conter arquivos *.vhd na mesma pasta
raiz.
c. O resultado da síntese do projeto não deve conter latch(es) ou warning(s)
de implementação.
d. Gerar o test bench do projeto e verificar o correto funcionamento para
vários números (Obrigatório).
e. Fazer o relatório (formato IEEE) contendo : a descrição sucinta do traba-
lho, resultados da simulação (imagens) e diagrama estrutural (RTL).
f. Para a avaliação, zipar o projeto e o relatório numa pasta nomeada com
seu código de estudante.

1
Apêndice A: função maior_primo
1 d e f maior_primo ( ) :
2 x= i n t ( i n p u t ( " D i g i t e o v a l o r de n : " ) )
3 i=busca ( x )
4 p r i n t ( " Primo : " , i )
5
6 d e f busca ( numero ) :
7 a=2
8 k=2
9 d=0
10 w h i l e ( a<=numero ) :
11 i=primo ( a , k , d )
12 i f i ==0:
13 p=a
14 a=a+1
15 return p
16
17 d e f primo ( numero , k , d ) :
18
19 i f k==numero :
20 return d
21 else :
22 i f numero%k==0 and numero !=k :
23 d=d+1
24 r e t u r n primo ( numero , k+1 ,d )
25
26 maior_primo ( )
Python 1: Código para calcular o maior número primo

Apêndice B: combinação simples


Por exemplo, utilizando a combinação simples e considerando o conjunto J =
{A, B, C, D} encontre quantos combinações é possível formar tomando os ele-
mentos de dois em dois.

a. Conjunto: J = {A, B, C, D}, r = 4 e p = 2


4!
b. C(4,2) = 2!·(4−2)!

24 24
c. C(4,2) = 2·2 = 4 =6

Seguir as seguintes especificações:

a. Para calcular o fatorial n!, 0 ≤ n ≤ 10.


b. Na equação 1, é obrigatório usar circuitos separados para calcular r! ou
p! ou (r − p)!, p! · (r − p)!, r − p e a divisão.

c. O projeto deve obrigatoriamente usar memórias RAM, seguir como su-


gestão a Figura 1.

2
comb simples

RAM 1
0 r0 p0 0 res0 Saı́da
Entradas
1 r1 p1 Divi/Mult
Fatorial RAM 2

start
Figura 1: Base do projeto

d. A quantidade de números armazenados na memória RAM 1 deve ser 16,


ou seja, r = {r0 , r1 , r2 , ...r15 } e p = {p0 , p1 , p2 , ...p15 }.
e. Na memória 1, o dado de cada posição de endereço dever ser uma conca-
tenação de r e p.
f. O sinal de start deve dar inicio ao processo de calcular o número de
combinações.
g. O sinal de ready deve deve indicar o fim do processo do calculo do número
de combinações.
h. O resultado de cada combinação deve ser armazenado numa memória
RAM.
i. Nome do arquivo Top level deve ser comb_simples (vide Figura 2).

comb_simp
input clk ready output
input reset q[21..0] output

input start

input we1

input we2

input address1[3..0]

input address2[3..0]

input r[3..0]

input p[3..0]

Figura 2: Entidade do projeto comb_simples

Você também pode gostar