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 862.000+ trabalhos acadêmicosPor: thaycardoso • 24/11/2014 • 2.071 Palavras (9 Páginas) • 470 Visualizações
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:
...