Mudanças entre as edições de "Circuito Somador e Subtrator - Pedroni"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
(Criou página com '__NOTOC__ ==Estrutura== * * ==Código VHDL== <syntaxhighlight lang=vhdl> --Book: Pedroni/491 --8 bits library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity add_sub is ...')
 
Linha 1: Linha 1:
 
__NOTOC__
 
__NOTOC__
 
==Estrutura==
 
==Estrutura==
*
+
*Realiza a soma e subtração através de operadores lógicos.
*
+
*Primeiro converte para sinal, realiza a soma e subtração e depois converte para std_logic_vector.
  
 
==Código VHDL==
 
==Código VHDL==
Linha 26: Linha 26:
  
 
begin
 
begin
--Convert to signed and add_sub
 
 
sum_sig <= signed(a) + signed(b);
 
sum_sig <= signed(a) + signed(b);
 
sub_sig <= signed(a) - signed(b);
 
sub_sig <= signed(a) - signed(b);
--Return to std_logic_vector
+
 
 
sum <= std_logic_vector (sum_sig);
 
sum <= std_logic_vector (sum_sig);
 
sub <= std_logic_vector (sub_sig);
 
sub <= std_logic_vector (sub_sig);
Linha 47: Linha 46:
 
! colspan="1" style="background: #efefef;" | Potência (mW)
 
! colspan="1" style="background: #efefef;" | Potência (mW)
 
|-
 
|-
| x || x || x || x
+
| 8 || 16 || x || 133.13
 
|-
 
|-
| x || x || x || x
+
| 16 || 32 || x || 156.04
 
|-
 
|-
| x || x || x || x
+
| 32 || 64 || x || 162.81
 
|-
 
|-
| x || x || x || x
+
| 128 || 256 || x || 280.09
 
|-
 
|-
 
|}
 
|}

Edição das 14h37min de 7 de dezembro de 2015

Estrutura

  • Realiza a soma e subtração através de operadores lógicos.
  • Primeiro converte para sinal, realiza a soma e subtração e depois converte para std_logic_vector.

Código VHDL

--Book: Pedroni/491
--8 bits
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity add_sub is
	
	generic (
		n: natural := 8);
	
	port(
		a,b: in std_logic_vector (n-1 downto 0);
		sum, sub: out std_logic_vector (n-1 downto 0));
end entity;

architecture add_sub of add_sub is
	signal sum_sig, sub_sig : signed (n-1 downto 0);

	begin
		sum_sig <= signed(a) + signed(b);
		sub_sig <= signed(a) - signed(b);

		sum <= std_logic_vector (sum_sig);
		sub <= std_logic_vector (sub_sig);

end architecture;

Testbench

  • Código
  • Resultado (print)

Simulações

Nº Bits ALMs Delay Potência (mW)
8 16 x 133.13
16 32 x 156.04
32 64 x 162.81
128 256 x 280.09