TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Aplicação De Operações Matemáticas Em Uma Placa Utilizando VHDL

Ensaios: Aplicação De Operações Matemáticas Em Uma Placa Utilizando VHDL. Pesquise 860.000+ trabalhos acadêmicos

Por:   •  24/11/2014  •  2.071 Palavras (9 Páginas)  •  429 Visualizações

Página 1 de 9

1 - Discussão teórica

Operações aritméticas são tarefas fundamentais para a maioria dos computadores e calculadoras. Essas operações são realizadas na Unidade Lógica e Aritmética, em que portas lógicas e flip-flop são combinados para que possam somar,subtrair,multiplicar e dividir números binários.

O Multiplicador Binário é responsável pela realização de uma multiplicação de dois números binários, ele é considerado uma das operações mais custosas em um computador digital. Basicamente, O algoritmo tradicional de multiplicação de dois números binários sem sinal é composto por sucessivos deslocamentos do multiplicando à esquerda (que constituem as parcelas do cálculo dos produtos parciais) e uma soma.

Projeto do Full-Adder

Um circuito adicionador completo realiza a soma de bits (Ai,Bi),considerando um transporte (Ci) de posições anteriores e produzindo um transporte a ser considerado na posição seguinte (Ci+1).

Multiplicadores

Existem diversas soluções para a construção de circuitos multiplicadores, nomeadamente no que se refere ao tipo de lógica utilizada, combinacional ou seqüencial. Apenas se analisa um circuito multiplicador que tem por base circuitos adicionadores e alguma lógica combinacional.

O produto de duas palavras de dois bits resulta em um produto com 4 bits.

Na imagem abaixo, temos o diagrama lógico com 16 portas ANDs que fazem a multiplicação do primeiro operando com o segundo operando. Já os full-adders fazem a soma da multiplicação das parcelas.

Ex: 1101

x 1011

_________

1101

1101

0000

1101

___________

10001111

[1]

2 - O código em VHDL

Abaixo temos o código em VHDL do multiplicador

Entity HA1 is

port(a1,a0,b1,b0:in bit;

s,c: out bit);

end HA1;

Architecture soma of HA1 is

begin

s<=(a1 and b0) xor (a0 and b1);

c<=(a1 and b0) and (a0 and b1);

end soma;

Entity HA2 is

port(a1,a0,b: in bit;

s,c: out bit);

end HA2;

Architecture soma of HA2 is

begin

s<=(a1 and a0) xor b;

c<=(a1 and a0) and b;

end soma;

Entity FA1 is

port(a1,a0,b1,b0,cin: in bit;

s,c: out bit);

end FA1;

Architecture soma of FA1 is

begin

s<=(a1 and b0) xor (a0 and b1) xor cin;

c<=(((a1 and b0) and (a0 and b1)) or ((a1 and b0) and cin) or ((a0 and b1) and cin));

end soma;

Entity FA2 is

port(a1,a0,b,cin:in bit;

s,c: out bit);

end FA2;

Architecture soma of FA2 is

begin

s<=(a1 and a0) xor b xor cin;

c<=(((a1 and a0) and b) or ((a1 and a0) and cin) or (b and cin));

end soma;

Entity mult is

port(x,y:in bit_vector(3 downto 0);

p: out bit_vector(11 downto 0));

end mult;

Architecture multiplicar of mult is

Component HA1 is

port(a1,a0,b1,b0:in bit;

s,c: out bit);

end component;

Component HA2 is

port(a1,a0,b: in bit;

s,c: out bit);

end component;

Component FA1 is

port(a1,a0,b1,b0,cin: in bit;

s,c: out bit);

end component;

Component FA2 is

port(a1,a0,b,cin:in bit;

s,c: out bit);

end component;

Component conv is

port(t: in bit_vector(7 downto 0);

z: out bit_vector(11 downto 0));

end component;

Signal c00,c01,s01,c11,c12,c02,s02,s12,c22,c03,s03,c13,s13,c23,c04,s04,c14,s14,c24,c15,s15,c25: bit;

begin

p(0)<=x(0) and y(0);

FA01: HA1 port map(x(2),x(1),y(1),y(0),p(1),c01);

FA02: FA1 port map(x(3),x(2),y(1),y(0),c01,s02,c02);

HA03:

...

Baixar como (para membros premium)  txt (11.8 Kb)  
Continuar por mais 8 páginas »
Disponível apenas no TrabalhosGratuitos.com