Thursday, July 23, 2015

MAC UNIT DESIGN


MAC UNIT DESIGN
MAC birimi, iki sayının çarpılıp, bu çarpımın öncekilerle toplanması(accumulation) işlemini yapar. Tüm DSP işlemleri buna ihtiyaç duyar. Bir FIR Dijital filtre uygulamasında çarpım operand'ları giriş dizisi ve coefficient dizisi olabilir. FFT işleminde yine MAC blokları kullanılır.

Sum = Sum + (input1 * input2)
Sum = Sum + (input * coefficient)  




 LIBRARY ieee;  
 USE ieee.std_logic_1164.all;  
 USE ieee.numeric_std.all;  
   
 ENTITY mac_unit IS  
 PORT (  
 a: IN SIGNED(7 DOWNTO 0);  
 b: IN SIGNED (7 DOWNTO 0);  
 clk: IN STD_LOGIC;  
 reset: IN STD_LOGIC;  
 accum: OUT SIGNED (15 DOWNTO 0)  
 ) ;  
 END mac_unit;  
   
 ARCHITECTURE rtl OF mac_unit IS  
   
 SIGNAL adder: SIGNED (15 DOWNTO 0);  
   
 BEGIN  
 PROCESS (clk, reset)  
 BEGIN  
 IF (reset = '1') then  
      adder <= (others => '0');  
 ELSIF (clk'event and clk = '1') THEN  
      adder <= adder + (a*b);  
 END IF;  
 END process;  
   
 accum <= adder;  
 END rtl;  

Günümüz işlemcilerinde MAC işlemi single instruction cycle'da yapılabilmektedir. Örneğin ARM işlemcilerde 16x16 single cycle MAC vb. özellikler bulunur. 
FMA(Fused) : MAC işlemi Floating Point sayılarla yapılırken 1 round işlemi ile yapılırsa bu adı alır. 
SIMD(Single Instruction Multiple Data) : 1 cycle'da paralel işlem(hesaplama,data taşıma) yapılır. Aynı instruction farklı data'lar üzerinde çalıştırılarak paralelleme yapılır. Birbirleriyle bağımsız işlemlerde farklı datalar üzerinde kullanılır.

No comments:

Post a Comment