Paste: two input generic synchronized adder
Author: | bpadalino |
Mode: | vhdl |
Date: | Sat, 21 Feb 2009 17:03:18 |
Plain Text |
library ieee ;
use ieee.std_logic_1164.all ;
use ieee.numeric_std.all ;
entity synchronized_adder is
generic (
A_DELAY : positive := 10 ;
B_DELAY : positive := 3
) ;
port (
clock : in std_logic ;
a : in signed(15 downto 0) ;
b : in signed(15 downto 0) ;
c : out signed(15 downto 0)
) ;
end entity ;
architecture arch of synchronized_adder is
type delay_t is array(N downto 1) of signed(a'range) ;
signal delay : delay_t := (others =>(others =>'0')) ;
signal delay_in : signed(15 downto 0) ;
begin
delay_in <= a when A_DELAY < B_DELAY else b ;
perform_delay : process( clock )
begin
if( rising_edge( clock ) ) then
delay <= delay(N-1 downto 2) & delay_in ;
end if ;
end process ;
perform_addition : process( clock )
begin
if( rising_edge( clock ) ) then
if( A_DELAY < B_DELAY ) then
c <= delay(N) + b ;
else
c <= delay(N) + a ;
end if ;
end if ;
end process ;
end architecture ;
New Annotation