Altera_Forum
Honored Contributor
11 years agoMultiplication VHDL
Hi, i have problems with my vhdl code.
can you help me plz This is the code:library ieee;use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use ieee.std_logic_arith.all ;
entity correla is
port (
clk : in std_logic ;
rst : in std_logic ;
data: in std_logic_vector(11 downto 0) ;
code: in std_logic_vector(15 downto 0 ) ;
Q : out std_logic_vector(17 downto 0) ) ;
end entity ;
architecture arch of correla is
type RAM is array (0 to 3) of integer range -8 to 7 ;
signal CD : RAM;
signal temp :integer range 0 to 15;
signal i :integer range 0 to 3 ;
signal sum :integer range 0 to 16 ;
signal AB :integer range 0 to 17 ;
begin
CD(0)<=to_integer(code(15 downto 12));
CD(1)<=to_integer(code(11 downto 8)) ;
CD(2)<=to_integer(code(7 downto 4 )) ;
CD(3)<=to_integer(code(3 downto 0)) ;
étalement:process(clk,rst)
begin
if(rst='1') then
Q<=(others=>'0');
i<= 0 ;
temp<=0;
AB<=0;
else
if(clk'event and clk ='1') then
sum<=0;
temp<=to_integer(data(i)*code(i)) ;
i<=i+1 ;
sum<=sum(i) +(temp(i)+temp(i+1)) ;
end if ;
end if ;
AB<=sum ;
Q<=std_logic_vector(AB) ;
end process ;
end architecture ;