Mudancas Recentes - Buscar:

Principal

 Objetivos  
 Ementa  
 Livros 

OAC

LOAC

Professores:

  JOSEANA
  ELMAR

CONTATO

CRÉDITOS

editar



Informações preliminares sobre conceitos básicos de matematica

É possível fazer divisão usando caneta e papel, sem usar calculadora nem computador ?

Veja neste video o caso de uma divisão que termina.
Só precisa assisitir o primeiro exercício.

Assiste este vídeo para ver uma divisão que nunca termina.
A apresentação é um pouco confusa, com continhas espalhadas pelo papel todinho, mas acho que dá para entender alguma coisa.

E aqui um vídeo sobre divisão em binário.

Circuito digital para divisão

Definimos, como exemplo de exercício, uma divisão com dividendo constante igual a 4:
Porquê constante ? Porquê 4 ? - Não queira saber, pelo menos não agora.

u = 4/a, u ∈ ℝ, a ∈ ℕ

Empregando um fator de escala t ∈ ℕ para poder usar números inteiros para o resultado, podemos substituir:

v = u*t, v ∈ ℕ0
m = 4*t, m ∈ ℕ

e obtemos a expressão:

v = m/a

A técnica de fator de escala é usada em todas as aplicações profissionais de computação para fazer cálculos de forma eficiente.

Para este exercício queremos usar representação hexadecimal (veja no final do guia do exercício de display de 7 segmentos), para poder trabalhar com mais dígitos do que seria possível usando os oito LED.

Trabalhando com dígitos hexadecimais fracionários, t assume potências de 16, ou seja, t pode ser igual a 10hex para 1 dígito hexadecimal fracionário, 100hex para 2 dígitos hexadecimais fracionários, 1000hex para 3 dígitos hexadecimais fracionários, 10000hex para 4 dígitos hexadecimais fracionários,... , ou seja, 16, 162, 163, 164,... , ou seja, 24, 28, 212, 216,....

t e m são parâmetros constantes.
v e a são variáveis.

Divisão e subtração

Definimos a variável v2 para calcular a diferença de um par de quocientes:
Para qué fazer diferença ? Para quê somar 2 à variável a ? - Não queira saber, pelo menos não agora.

v2 = m/a - m/(a+2), a ∈ ℕ

Divisão, subtração e soma

Definimos a variável v4 para calcular a soma de duas diferenças de um par de quocientes cada:
Para qué fazer esta soma ? - Não queira saber, pelo menos não agora !

v4 = m/a - m/(a+2) + m/(a+4) - m/(a+6), a ∈ ℕ

Definimos a variável vn:

vn = m/a - m/(a+2) + m/(a+4) - m/(a+6) +... , a ∈ ℕ, n ∈ { 2, 4, 6,... };

Prepare os arquivos

  • Renomeie a pasta TOP do seu /home, se houver
  • Copie a pasta /labarc/TOP para seu /home.
  • Renomeie a nova pasta TOP, por exemplo dê a ela o nome "divisa"

Entradas, saídas, variáveis, e constantes

A entrada SWI deve ser atribuída à variável a e a variável v deve aparecer na segunda linha do display LCD (output lcd_b).

Nas definições de variáveis e parâmetros não podem aparecer valores mágicos. Tem que existir um parâmetro que representa a quantidade de dígitos hexadecimais fracionários. Demais parâmetros que dependem da quantidade de dígitos hexadecimais fracionários devem ser derivados desse parâmetro.

Nosso simulador precisa de uma forcinha para usar mais do que 32 bits para a um parâmetro. No lugar de
parameter P = 1<<40;
é preciso escrever
parameter P = 64'd1<<40;
resultadocentavos
v com 2 dígitos hexadecimais fracionários20
v com 12 dígitos hexadecimais fracionários+15
v2 com 12 dígitos hexadecimais fracionários+15
v4 com 15 dígitos hexadecimais fracionários+15
vn com 'n'' de tal valor que mais do que 20% dos recursos lógicos são aproveitados+15
vn com 'n'' de tal valor que mais do que 80% dos recursos lógicos são aproveitados+15

Para saber se o valor calculado pela FPGA está correto, abre um terminal X e dê o seguinte comando:

  pi.py  
>>> pi_comb( <quantidade_de_dígitos>, <quantidade_de_elementos>, <a> )

Por exemplo, para calcular 8 quocientes (v8) com 12 dígitos hexadecimais a partir de a=9:

  >>> pi_comb(12,8,9)

Em casa, pode fazer download de pi.py e dar os comandos cd ~/Download; chmod +x pi.py; ./pi.py

Para poder usar um parâmetro para a quantidade de quocientes, é necessário lançar mão de uma construção com laço for(int i=0; i<NDIV; i=i+1). Recomendo usar um parâmetro chamado NDIV como sendo a quantidade de quocientes. Pode espiar o código python como dica, mas cuidado para não dar nó.

© 2008 Profs. Elmar Melcher e Joseana Fechine. Monitores: Sergio Espinola e Fabricio Lelis - DSC/UFCG
Modificada em August 13, 2021, at 04:00 PM